在Bank Switch基礎(chǔ)上 實(shí)現(xiàn)大程序和數(shù)掘空間
發(fā)布時(shí)間:2008/5/27 0:00:00 訪問次數(shù):590
    
    
    作者:李超 郝婕
    
    mcs51系列單片機(jī)是目前應(yīng)用非常廣泛的8位mcu。mcs5l系列單片機(jī)的地址總線為16位,不作擴(kuò)展的情況下其最大的程序和數(shù)據(jù)地址空間為64 kb。但是隨著控制領(lǐng)域的不斷智能化、復(fù)雜化,程序代碼或數(shù)據(jù)空間的大小可能遠(yuǎn)遠(yuǎn)大于64 kb。結(jié)合相應(yīng)的硬件地址擴(kuò)展,使用keilc5l的blank switch技術(shù)可生成代碼長度和數(shù)據(jù)空間大于64 kb的目標(biāo)程序。
    keil c5l的blank switch技術(shù)突破了51系列單片機(jī)在地址空間方面的不足,在很多領(lǐng)域中拓展了它的使用。筆者就曾使用blank switch開發(fā)了程序空間為512 kb,數(shù)據(jù)空間為256 kb的一個(gè)較復(fù)雜的程控交換機(jī)控制程序。
    本文以該程控交換機(jī)主控制部分的實(shí)現(xiàn)過程為例,介紹keilc5l的blank switch技術(shù)的具體應(yīng)用。
    
    
    1 blank switch技術(shù)介紹
    具體實(shí)現(xiàn)blank switch技術(shù)的是keilc5l中的分組連接定位器bl5l。keil c5l語言源程序經(jīng)過c5l編譯器編譯后,生成浮動(dòng)地址的目標(biāo)代碼文件。這種浮動(dòng)地址的目標(biāo)代碼必須經(jīng)過連接定位器bl5l的連接和定位,生成具有絕對(duì)地址的目標(biāo)代碼,才能寫入程序存儲(chǔ)器正常運(yùn)行。
    bl51支持分組連接定位,允許生成代碼大于64 kb的目標(biāo)程序,可以在具有適當(dāng)硬件擴(kuò)展邏輯的系統(tǒng)中進(jìn)行代碼組之間的切換,以達(dá)到正常運(yùn)行的目的。
    v5.03版本的bl5l可以管理最多64個(gè)代碼組,每個(gè)代碼組最大為64 kb。bl51連接定位器生成的0mf5l格式的絕對(duì)目標(biāo)文件,可裝入dscope51或intel兼容的仿真器進(jìn)行調(diào)試,也可通過符號(hào)轉(zhuǎn)換器oh51轉(zhuǎn)換成intelhex文件以便于eprom編程。
    在keil c5l開發(fā)工具的快速更新過程中,lx51成為功能更為完善的連接定位器,使用它替代bl51能夠增加更多的連接定位功能。筆者使用lx5l可以更加方便程序的開發(fā)。
    
    2 系統(tǒng)硬件的設(shè)計(jì)
    在采用bl5l對(duì)目標(biāo)程序進(jìn)行分組連接定位時(shí),要求系統(tǒng)具有相應(yīng)的硬件分組擴(kuò)展邏輯。bl5l默認(rèn)的分組方式是采用mcu的p1端口作硬件擴(kuò)展地址線.采用l條pl引腳時(shí),分組數(shù)為2,采用6條p1引腳時(shí),最多可分為64個(gè)代碼組,剩余的pl口線也可做其他用途。
    硬件分組還可采用外部數(shù)據(jù)存儲(chǔ)器xdata空間地址單元來進(jìn)行,與采用805l的pl端口作為分組地址線不同的是,對(duì)于一個(gè)指定用于分組地址的xdata端口字節(jié)中的剩余位,不能再用于其他目的。
    在系統(tǒng)中,以pl端口作硬件擴(kuò)展地址線,使用了4條pl引腳(p1.4~p1.7)。主控部分硬件基本原理圖如圖1所示。在這里,去除了外圍控制接口(如串口)與其他cpu的互聯(lián)等電路,主要突出如何實(shí)現(xiàn)使用pl端口作硬件擴(kuò)展來增加程序空間和數(shù)據(jù)空間.筆者使用flash29c040作為程序存儲(chǔ)器,通過pl擴(kuò)展引腳與該芯片的高4位地址線相連,使用32 kb空間的62256作為外部數(shù)據(jù)存儲(chǔ)器。由于程控交換機(jī)中有很多參數(shù)和設(shè)置數(shù)據(jù)需要斷電保存,所以使用了另一flash29co4o作為擴(kuò)展的外部數(shù)據(jù)存儲(chǔ)器。
    
    在這里需要注意的是,cpu地址線的最高位(p2.7)并不是直接與對(duì)應(yīng)的程序flash 29c040和數(shù)據(jù)flash29c040地址線相連。在和程序存儲(chǔ)器的連接中,p2.7和pl端口通過與的關(guān)系連接到flash 29c040的地址線高4位。公共代碼區(qū)域程序始終都是從flash 29c040的低32 kb中讀取,而不需要在每個(gè)分組前存放32 kb的公共代碼區(qū)域程序,從而節(jié)約了存儲(chǔ)空間。
    在和數(shù)據(jù)存儲(chǔ)器的連接中,增加了p1.o和p2.7組合對(duì)數(shù)據(jù)flash 29c040的片選,主要是考慮可以增加主控芯片對(duì)外圍器件的控制。例如,當(dāng)設(shè)置p1.0為0,地址為高32kb時(shí),可以擴(kuò)展增加訪問串口或其他器件。在本文就不再對(duì)該部分內(nèi)容詳細(xì)描述了。同時(shí),需要注意安排好變量的存儲(chǔ)地址,這一點(diǎn)將在下文中詳細(xì)描述。
    在程序設(shè)計(jì)過程中,p1擴(kuò)展地址線對(duì)程序員而言是不可見的。由bl5l產(chǎn)生的代碼來控制硬件的擴(kuò)展引腳和代碼組的切換,這使程序員只需要將精力花費(fèi)在代碼編寫和代碼組的安排上,大大提高了程序設(shè)計(jì)效率和穩(wěn)定性。
    
    3 keilc51的環(huán)境設(shè)置
    除需要正確設(shè)計(jì)硬件電路,同時(shí)還要對(duì)keil c5l提供的文件和環(huán)境進(jìn)行正確設(shè)置才能真正實(shí)現(xiàn)地址的擴(kuò)展。下面是需要進(jìn)行相關(guān)配置的幾項(xiàng)。
    在菜單project選擇中
    
    
    作者:李超 郝婕
    
    mcs51系列單片機(jī)是目前應(yīng)用非常廣泛的8位mcu。mcs5l系列單片機(jī)的地址總線為16位,不作擴(kuò)展的情況下其最大的程序和數(shù)據(jù)地址空間為64 kb。但是隨著控制領(lǐng)域的不斷智能化、復(fù)雜化,程序代碼或數(shù)據(jù)空間的大小可能遠(yuǎn)遠(yuǎn)大于64 kb。結(jié)合相應(yīng)的硬件地址擴(kuò)展,使用keilc5l的blank switch技術(shù)可生成代碼長度和數(shù)據(jù)空間大于64 kb的目標(biāo)程序。
    keil c5l的blank switch技術(shù)突破了51系列單片機(jī)在地址空間方面的不足,在很多領(lǐng)域中拓展了它的使用。筆者就曾使用blank switch開發(fā)了程序空間為512 kb,數(shù)據(jù)空間為256 kb的一個(gè)較復(fù)雜的程控交換機(jī)控制程序。
    本文以該程控交換機(jī)主控制部分的實(shí)現(xiàn)過程為例,介紹keilc5l的blank switch技術(shù)的具體應(yīng)用。
    
    
    1 blank switch技術(shù)介紹
    具體實(shí)現(xiàn)blank switch技術(shù)的是keilc5l中的分組連接定位器bl5l。keil c5l語言源程序經(jīng)過c5l編譯器編譯后,生成浮動(dòng)地址的目標(biāo)代碼文件。這種浮動(dòng)地址的目標(biāo)代碼必須經(jīng)過連接定位器bl5l的連接和定位,生成具有絕對(duì)地址的目標(biāo)代碼,才能寫入程序存儲(chǔ)器正常運(yùn)行。
    bl51支持分組連接定位,允許生成代碼大于64 kb的目標(biāo)程序,可以在具有適當(dāng)硬件擴(kuò)展邏輯的系統(tǒng)中進(jìn)行代碼組之間的切換,以達(dá)到正常運(yùn)行的目的。
    v5.03版本的bl5l可以管理最多64個(gè)代碼組,每個(gè)代碼組最大為64 kb。bl51連接定位器生成的0mf5l格式的絕對(duì)目標(biāo)文件,可裝入dscope51或intel兼容的仿真器進(jìn)行調(diào)試,也可通過符號(hào)轉(zhuǎn)換器oh51轉(zhuǎn)換成intelhex文件以便于eprom編程。
    在keil c5l開發(fā)工具的快速更新過程中,lx51成為功能更為完善的連接定位器,使用它替代bl51能夠增加更多的連接定位功能。筆者使用lx5l可以更加方便程序的開發(fā)。
    
    2 系統(tǒng)硬件的設(shè)計(jì)
    在采用bl5l對(duì)目標(biāo)程序進(jìn)行分組連接定位時(shí),要求系統(tǒng)具有相應(yīng)的硬件分組擴(kuò)展邏輯。bl5l默認(rèn)的分組方式是采用mcu的p1端口作硬件擴(kuò)展地址線.采用l條pl引腳時(shí),分組數(shù)為2,采用6條p1引腳時(shí),最多可分為64個(gè)代碼組,剩余的pl口線也可做其他用途。
    硬件分組還可采用外部數(shù)據(jù)存儲(chǔ)器xdata空間地址單元來進(jìn)行,與采用805l的pl端口作為分組地址線不同的是,對(duì)于一個(gè)指定用于分組地址的xdata端口字節(jié)中的剩余位,不能再用于其他目的。
    在系統(tǒng)中,以pl端口作硬件擴(kuò)展地址線,使用了4條pl引腳(p1.4~p1.7)。主控部分硬件基本原理圖如圖1所示。在這里,去除了外圍控制接口(如串口)與其他cpu的互聯(lián)等電路,主要突出如何實(shí)現(xiàn)使用pl端口作硬件擴(kuò)展來增加程序空間和數(shù)據(jù)空間.筆者使用flash29c040作為程序存儲(chǔ)器,通過pl擴(kuò)展引腳與該芯片的高4位地址線相連,使用32 kb空間的62256作為外部數(shù)據(jù)存儲(chǔ)器。由于程控交換機(jī)中有很多參數(shù)和設(shè)置數(shù)據(jù)需要斷電保存,所以使用了另一flash29co4o作為擴(kuò)展的外部數(shù)據(jù)存儲(chǔ)器。
    
    在這里需要注意的是,cpu地址線的最高位(p2.7)并不是直接與對(duì)應(yīng)的程序flash 29c040和數(shù)據(jù)flash29c040地址線相連。在和程序存儲(chǔ)器的連接中,p2.7和pl端口通過與的關(guān)系連接到flash 29c040的地址線高4位。公共代碼區(qū)域程序始終都是從flash 29c040的低32 kb中讀取,而不需要在每個(gè)分組前存放32 kb的公共代碼區(qū)域程序,從而節(jié)約了存儲(chǔ)空間。
    在和數(shù)據(jù)存儲(chǔ)器的連接中,增加了p1.o和p2.7組合對(duì)數(shù)據(jù)flash 29c040的片選,主要是考慮可以增加主控芯片對(duì)外圍器件的控制。例如,當(dāng)設(shè)置p1.0為0,地址為高32kb時(shí),可以擴(kuò)展增加訪問串口或其他器件。在本文就不再對(duì)該部分內(nèi)容詳細(xì)描述了。同時(shí),需要注意安排好變量的存儲(chǔ)地址,這一點(diǎn)將在下文中詳細(xì)描述。
    在程序設(shè)計(jì)過程中,p1擴(kuò)展地址線對(duì)程序員而言是不可見的。由bl5l產(chǎn)生的代碼來控制硬件的擴(kuò)展引腳和代碼組的切換,這使程序員只需要將精力花費(fèi)在代碼編寫和代碼組的安排上,大大提高了程序設(shè)計(jì)效率和穩(wěn)定性。
    
    3 keilc51的環(huán)境設(shè)置
    除需要正確設(shè)計(jì)硬件電路,同時(shí)還要對(duì)keil c5l提供的文件和環(huán)境進(jìn)行正確設(shè)置才能真正實(shí)現(xiàn)地址的擴(kuò)展。下面是需要進(jìn)行相關(guān)配置的幾項(xiàng)。
    在菜單project選擇中
熱門點(diǎn)擊
- 單片機(jī)多字節(jié)BCD碼加法減法
- 單片機(jī)C51串口中斷接收和發(fā)送測(cè)試
- 用單片機(jī)制作通用型電視遙控器
- P89C51RD2的Boot ROM與ISP
- 單片機(jī)系統(tǒng)低功耗設(shè)計(jì)策略
- DVB-C信道解調(diào)解碼芯片GX1001的設(shè)計(jì)
- C51絕對(duì)地址訪問
- 用MCS-51單片機(jī)串行口對(duì)MAX7219及
- 測(cè)試PIC單片機(jī)如何省電
- 指針類型和存儲(chǔ)區(qū)的關(guān)系詳解
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究