新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 采用PSD913F2 擴(kuò)展 8031程序空間(圖)

采用PSD913F2 擴(kuò)展 8031程序空間(圖)

——
作者:成都中曉龍電子有限公司 陳榮飄 張永慧 時間:2007-02-06 來源: 收藏

概述
  8031系列單片機(jī)是應(yīng)用非常廣泛的mcu,但是隨著控制領(lǐng)域的不斷智能化、復(fù)雜化,程序長度可能遠(yuǎn)遠(yuǎn)大于8031的64kb限制。可以采用psd913f2作為8031的外部存儲器,其程序空間最大可達(dá)256kb,用keilc51的blankswitch技術(shù)可使8位mcu運(yùn)行256kb的應(yīng)用程序。

  psd913f2內(nèi)置256kb閃存,分為8個頁面,每頁空間16kb,內(nèi)置可選的32kb啟動存儲器、2kb的sram、27個i/o端口、電源管理單元、40個可編程邏輯宏單元cpld,通過串口在線配置fpga所有代碼,適用于8031、mc68hc11、dallas、z80等20余種單片機(jī)。

本文引用地址:http://m.butianyuan.cn/article/22745.htm


8031與psd913f硬件設(shè)計
  在多數(shù)應(yīng)用中,mcu與外部存儲器之間連接時都必須用74ls373作為地址鎖存器。但psd913f2內(nèi)含地址鎖存器,因此psd913f2的引腳可直接與8031相連,如圖1所示。


8031與psd913f軟件設(shè)計
  keilc51語言源程序經(jīng)過c51編譯器編譯后,生成浮動地址的目標(biāo)代碼文件。這種浮動地址的目標(biāo)代碼是不能直接裝入8051運(yùn)行的,必須經(jīng)過連接定位器bl51的連接和定位,生成具有絕對地址的目標(biāo)代碼。同時bl51支持分組連接定位,允許生成代碼大于64kb的目標(biāo)程序,可以在具有適當(dāng)硬件擴(kuò)展邏輯的8051系統(tǒng)中進(jìn)行代碼組之間的切換,以達(dá)到正常運(yùn)行的目的。bl51可以管理最多32個代碼組,每個代碼組最大為64kb。bl51連接定位器生成的omf51格式的絕對目標(biāo)文件,可裝入dscope51或intel兼容的仿真器進(jìn)行調(diào)試,也可通過符號轉(zhuǎn)換器oh51轉(zhuǎn)換成intel hex文件以便于eprom編程。

  在采用bl51對目標(biāo)程序進(jìn)行分組連接定位時,要求8051系統(tǒng)具有相應(yīng)的硬件分組擴(kuò)展邏輯。默認(rèn)的分組方式是采用8051的p1端口作硬件擴(kuò)展地址線。采用1條p1口線時,分組數(shù)為2,采用5條p1口線時,最多可分為32個代碼組,剩余的p1口線也可用于其他用途。也可采用外部數(shù)據(jù)存儲器xdata空間地址單元來進(jìn)行分組,與采用8051的p1端口作為分組地址線不同的是,對于一個指定用于分組地址的xdata端口字節(jié)中的剩余位,不能再用于其他目的。采用的分組方式、組數(shù)和地址在l51_bank.a51中進(jìn)行配置。

  下面介紹一下應(yīng)用bankswitch的步驟。
  1.建一個keilc51的新工程如psdos,在菜單project選擇中選擇option for target “target 1”選擇項(xiàng),按圖2所示進(jìn)行項(xiàng)目配置。

  設(shè)置如下。
  ● 由于psd913f2中有兩塊flash,從flash為32kb。故在off-chip code memory-eprom設(shè)為0x0000~0x7fff。
  ● 在psd913f2的psdsoft express已配置2kb的sram,地址范圍為0x2000~0x27ff,故在off-chip xdata memory-ram設(shè)為0x2000,長度為0x0800。
  ● 在psd913f2的主flash為128kb,共分為8個物理頁,已在psdsoft express軟件中定義地址為0x8000~0xbfff,因此在keilc51中如圖2所示分為4個banks,地址范圍為0x8000~0xbfff。

  2.在keilc51的安裝目錄keilc51c51 examplesbank_ex1中,把l51_bank.a51文件的拷貝并加入到新工程。在l51_bank.a51文件中需改以下代碼。

  a?b_nbanks equ 4 //定義最大分組(0~32),可為2、4、8、16和32。
  ?b_mode equ 1 //0:通過8051單片機(jī)的i/o口進(jìn)行分組切換,1:通過xdata存儲器單元進(jìn)行分組切換。
  ?b_xdataport equ 01e0h //如果?b_mode被定義為1,就通過xdata口定義xdata口引腳地址/位來映射開關(guān)定義xdata口地址01e0h。

  3.新建主程序和各bank文件。

  4.設(shè)置文件的屬性。選擇主文件,選擇options for file,設(shè)置code bank為“common”,設(shè)置stop on exit為“not specified”,對init.c、psdoper.c也進(jìn)行同樣的設(shè)置。

  5.設(shè)置文件的屬性。如圖3所示右擊文件psd_bank.c,選擇options for file "psd_bank0.c",設(shè)置為bank #0。同樣對psd_bank1.c設(shè)置為bank #1、psd_bank2.c設(shè)置為bank #2、psd_bank3.c設(shè)置為bank #3。

  6.設(shè)置好后,進(jìn)行編譯。

  7.進(jìn)行編程。打開psdsoft express軟件,在merge mcu firmware with psd模塊中設(shè)置各個flash頁面的地址和文件名,如圖4所示。
  ● 主flash第0頁(fs0),地址:0x8000-0xbfff,文件名:psdos.hoo
  ● 主flash第1頁(fs1),地址:0x8000-0xbfff,文件名:psdos.ho1
  ● 主flash第2頁(fs2),地址:0x8000-0xbfff,文件名:psdos.ho2
  ● 主flash第3頁(fs3),地址:0x8000-0xbfff,文件名:psdos.ho3
  ● 次flash(csboost 0),地址:0x8000-0xbfff,文件名:psdos.hoo

  8.通過flashlink便可將文件下載到psd913f2中,實(shí)現(xiàn)bankswitch功能,使8031的程序空間大于64kb。
  用keil c51的bankswitch必須注意以下幾點(diǎn)。
  ● 下面的一些代碼必須放在公共區(qū)域內(nèi),復(fù)位和中斷向量、代碼常數(shù)、c51中斷函數(shù)、組切跳轉(zhuǎn)表、庫函數(shù)。
  ● 代碼組切換需要大約50個機(jī)器周期和2字節(jié)的堆??臻g。因此應(yīng)當(dāng)仔細(xì)安排程序結(jié)構(gòu)以盡量減少代碼之間的切換。


結(jié)束語
  采用bankswitch擴(kuò)展8031程序空間,在不對硬件作任何修改的情況下,8031便可實(shí)現(xiàn)運(yùn)行大于64kb的程序,充分發(fā)揮8031和keilc51的優(yōu)異功能。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉