C8051F12X存儲(chǔ)大量常量代碼的編譯技巧
發(fā)布時(shí)間:2008/8/20 0:00:00 訪問次數(shù):862
silicon lahoratories公司的c8051f12x是與8051兼容,采用高速流水線工作方式,70%指令的執(zhí)行時(shí)間為1個(gè)或2個(gè)系統(tǒng)時(shí)鐘周期的高速集成混合信號(hào)soc微控制器。
片內(nèi)調(diào)試電路提供全速、非侵入式的在片/在系統(tǒng)調(diào)試,支持?jǐn)帱c(diǎn)、單步、觀察點(diǎn)、堆棧監(jiān)視器,可以觀察/修改存儲(chǔ)器和寄存器;使用內(nèi)部集成pll,時(shí)速度可達(dá)100mips或50mips;對于需要大量常量代碼而又不想外擴(kuò)rom的系統(tǒng)設(shè)計(jì),128kb的flash是個(gè)很好的選擇。
1 處理大量常量代碼面臨的困難
通常帶中文液晶顯示的系統(tǒng)采用的是不帶中文字庫的圖形液晶顯示模塊,需要給點(diǎn)陣字庫分配存儲(chǔ)空間。常用的是16×16點(diǎn)陣字庫,每個(gè)漢字占用32字節(jié)存儲(chǔ)空間,64kb空間可存儲(chǔ)2048個(gè)漢字。標(biāo)準(zhǔn)51mcu只能直接訪問64kb程序空間,采用bank技術(shù)可擴(kuò)展空間,但處理編譯復(fù)雜,且需要額外i/o口線作bank選擇控制。有的系統(tǒng)是將字庫單獨(dú)燒寫到外部flash中,而硬件接法上使用數(shù)據(jù)空間地址,但標(biāo)準(zhǔn)51 mcu數(shù)據(jù)空間也只有64kb,不進(jìn)行分頁外擴(kuò)同樣不能實(shí)現(xiàn)2048字以上的漢字存儲(chǔ)。此外,程序運(yùn)行也需要數(shù)據(jù)空間,實(shí)際字庫容量更小。c805lfl2x具有完善的片上外設(shè)資源,8kb的片上ram。特別是128kb的flash資源,不必外擴(kuò)存儲(chǔ)器即可實(shí)現(xiàn)帶較大容量的中文液晶顯示字庫的完整系統(tǒng)。
keil c5l是目前最流行的51系列mcu編譯器。
如果程序代碼與字庫常量代碼總和不超過64 kb,則可在keil uv2的集成開發(fā)環(huán)境下,通過安裝silicon laboratories公司的驅(qū)動(dòng)程序直接對c805lfl2x進(jìn)行編譯,并通過jtag調(diào)試仿真器實(shí)現(xiàn)不占用戶資源的實(shí)時(shí)/斷點(diǎn)調(diào)試。但當(dāng)程序代碼與字庫常量代碼總和超過64 kb時(shí),在keil uv2下,只能采用bank編譯技術(shù)。常量默認(rèn)設(shè)置是分配到低32 kb的common區(qū),而common區(qū)還要存放中斷處理等代碼,因此如果想將點(diǎn)陣字庫常量分配到指定的bank,還需要采取其他方法。
2 處理大量常量代碼的思路與實(shí)現(xiàn)
如果c8051f12x需要下載的程序代碼與字庫常量代碼總和超過64 kb,則可使用silicon laboratories公司的集成開發(fā)環(huán)境。在此ide中,c805lfl2x的flash編程是分4個(gè)bank進(jìn)行的,每個(gè)bank對應(yīng)一個(gè)hex格式的代碼文件。根據(jù)這樣的特點(diǎn),可以繞開keil c5l編譯器,直接把點(diǎn)陣字庫或其他常量表格處理為標(biāo)準(zhǔn)hex格式文件,從而實(shí)現(xiàn)常量代碼在任意bank的存放。
假設(shè)一個(gè)點(diǎn)陣字庫含3200個(gè)常用漢字,需要分配32×3200=102 400字節(jié)空間。設(shè)計(jì)上可以這樣分配空間:bankl及bank2全部使用,各32 768字節(jié),共可以存放2048個(gè)漢字的點(diǎn)陣。由于c805lfl2x最后1026字節(jié)為系統(tǒng)保留空間,所以bank3分配990個(gè)漢字的點(diǎn)陣,占990×32=3l680字節(jié),還剩162個(gè)漢字的點(diǎn)陣,需5184字節(jié),分配到common(banko)的最高端。bankl~bank3的起始地址都是由8000h開始的。對banko來說,162個(gè)漢字的點(diǎn)陣字庫從613coh開始存放,這也意味著留給程序的空間不能超過27584字節(jié)。如果程序較大,但不超過64kb,同時(shí)字庫不需要很大,則可分配63kb為字庫,64 kb為程序(若程序用不完64 kb,則多余空間也可分配給字庫,以擴(kuò)大字庫容量)。生成點(diǎn)陣字庫的hex文件,可采用asm的db定義方法、c51的數(shù)組定義方法或者自己編寫運(yùn)行于pc的程序的方法。前兩種方式還需要經(jīng)keil編譯,但可靈活選擇所需的漢字。從編譯方面看,asm的db定義方式不需要額外設(shè)置編譯參數(shù),比c51的數(shù)組定義方法要好。通常字模軟件都有asm格式和c51格式的選擇,可以利用其asm格式輸出,按上述空間分配原則,分別對每個(gè)bank做對應(yīng)的hex文件。下面舉例說明。假設(shè)使用4個(gè)asm文件,每個(gè)都是64字節(jié)。b0.a(chǎn)sm內(nèi)容是00h~3fh,存放于bank0從7fc0h開始的空間;b1.a(chǎn)sm內(nèi)容是40h~7fh,b2.a(chǎn)sm內(nèi)容是80h~cfh,b3.a(chǎn)sm內(nèi)容是doh~ffh,bankl~bank3均存放于各自bank從8000h開始的空間,物理上分別位于c8051f12x的8000h、10000h、18000h開始的區(qū)域。b0.a(chǎn)sm中的內(nèi)容為:
org 7fcoh
db 000h.001h,002h,003h+004h,005h,006h,007h
db 008h,009h,ooah,00bh,ooch,oodh,00eh,00fh
db 010h,011h,012h,013h,014h,015h,016h,017h
db 018h,019h,01ah,0lbh,01ch,01dh,01eh,0lfh
db 020h,021h,022h,023h,024h,025h,026h,027h
db 028h,029h,02ah,02bh,02ch,02dh,02eh,02fh
db 030h,03lh,032h,033h,034h,035h,036h,037h
db 038h,039h,03ah,03bh,03ch,03dh,03eh,03fh
end;
其他3個(gè)asm文件格式一樣,但org全部改為8000h,內(nèi)容也相應(yīng)替換。
3 生成hex文件方法
啟動(dòng)uv2集成開發(fā)環(huán)境,新建一項(xiàng)目,由于現(xiàn)在儀為4個(gè)asm的常量代碼表編譯hex文件,器件可選包含32 kb以上rom的任意一型號(hào)的51mcu?紤]到以后實(shí)際使用c8051f12x,可以直接選擇c8051f12x。不必配置code banking的選項(xiàng),在output選項(xiàng)卡的createhex file選項(xiàng)上配置.以創(chuàng)建hex文件
silicon lahoratories公司的c8051f12x是與8051兼容,采用高速流水線工作方式,70%指令的執(zhí)行時(shí)間為1個(gè)或2個(gè)系統(tǒng)時(shí)鐘周期的高速集成混合信號(hào)soc微控制器。
片內(nèi)調(diào)試電路提供全速、非侵入式的在片/在系統(tǒng)調(diào)試,支持?jǐn)帱c(diǎn)、單步、觀察點(diǎn)、堆棧監(jiān)視器,可以觀察/修改存儲(chǔ)器和寄存器;使用內(nèi)部集成pll,時(shí)速度可達(dá)100mips或50mips;對于需要大量常量代碼而又不想外擴(kuò)rom的系統(tǒng)設(shè)計(jì),128kb的flash是個(gè)很好的選擇。
1 處理大量常量代碼面臨的困難
通常帶中文液晶顯示的系統(tǒng)采用的是不帶中文字庫的圖形液晶顯示模塊,需要給點(diǎn)陣字庫分配存儲(chǔ)空間。常用的是16×16點(diǎn)陣字庫,每個(gè)漢字占用32字節(jié)存儲(chǔ)空間,64kb空間可存儲(chǔ)2048個(gè)漢字。標(biāo)準(zhǔn)51mcu只能直接訪問64kb程序空間,采用bank技術(shù)可擴(kuò)展空間,但處理編譯復(fù)雜,且需要額外i/o口線作bank選擇控制。有的系統(tǒng)是將字庫單獨(dú)燒寫到外部flash中,而硬件接法上使用數(shù)據(jù)空間地址,但標(biāo)準(zhǔn)51 mcu數(shù)據(jù)空間也只有64kb,不進(jìn)行分頁外擴(kuò)同樣不能實(shí)現(xiàn)2048字以上的漢字存儲(chǔ)。此外,程序運(yùn)行也需要數(shù)據(jù)空間,實(shí)際字庫容量更小。c805lfl2x具有完善的片上外設(shè)資源,8kb的片上ram。特別是128kb的flash資源,不必外擴(kuò)存儲(chǔ)器即可實(shí)現(xiàn)帶較大容量的中文液晶顯示字庫的完整系統(tǒng)。
keil c5l是目前最流行的51系列mcu編譯器。
如果程序代碼與字庫常量代碼總和不超過64 kb,則可在keil uv2的集成開發(fā)環(huán)境下,通過安裝silicon laboratories公司的驅(qū)動(dòng)程序直接對c805lfl2x進(jìn)行編譯,并通過jtag調(diào)試仿真器實(shí)現(xiàn)不占用戶資源的實(shí)時(shí)/斷點(diǎn)調(diào)試。但當(dāng)程序代碼與字庫常量代碼總和超過64 kb時(shí),在keil uv2下,只能采用bank編譯技術(shù)。常量默認(rèn)設(shè)置是分配到低32 kb的common區(qū),而common區(qū)還要存放中斷處理等代碼,因此如果想將點(diǎn)陣字庫常量分配到指定的bank,還需要采取其他方法。
2 處理大量常量代碼的思路與實(shí)現(xiàn)
如果c8051f12x需要下載的程序代碼與字庫常量代碼總和超過64 kb,則可使用silicon laboratories公司的集成開發(fā)環(huán)境。在此ide中,c805lfl2x的flash編程是分4個(gè)bank進(jìn)行的,每個(gè)bank對應(yīng)一個(gè)hex格式的代碼文件。根據(jù)這樣的特點(diǎn),可以繞開keil c5l編譯器,直接把點(diǎn)陣字庫或其他常量表格處理為標(biāo)準(zhǔn)hex格式文件,從而實(shí)現(xiàn)常量代碼在任意bank的存放。
假設(shè)一個(gè)點(diǎn)陣字庫含3200個(gè)常用漢字,需要分配32×3200=102 400字節(jié)空間。設(shè)計(jì)上可以這樣分配空間:bankl及bank2全部使用,各32 768字節(jié),共可以存放2048個(gè)漢字的點(diǎn)陣。由于c805lfl2x最后1026字節(jié)為系統(tǒng)保留空間,所以bank3分配990個(gè)漢字的點(diǎn)陣,占990×32=3l680字節(jié),還剩162個(gè)漢字的點(diǎn)陣,需5184字節(jié),分配到common(banko)的最高端。bankl~bank3的起始地址都是由8000h開始的。對banko來說,162個(gè)漢字的點(diǎn)陣字庫從613coh開始存放,這也意味著留給程序的空間不能超過27584字節(jié)。如果程序較大,但不超過64kb,同時(shí)字庫不需要很大,則可分配63kb為字庫,64 kb為程序(若程序用不完64 kb,則多余空間也可分配給字庫,以擴(kuò)大字庫容量)。生成點(diǎn)陣字庫的hex文件,可采用asm的db定義方法、c51的數(shù)組定義方法或者自己編寫運(yùn)行于pc的程序的方法。前兩種方式還需要經(jīng)keil編譯,但可靈活選擇所需的漢字。從編譯方面看,asm的db定義方式不需要額外設(shè)置編譯參數(shù),比c51的數(shù)組定義方法要好。通常字模軟件都有asm格式和c51格式的選擇,可以利用其asm格式輸出,按上述空間分配原則,分別對每個(gè)bank做對應(yīng)的hex文件。下面舉例說明。假設(shè)使用4個(gè)asm文件,每個(gè)都是64字節(jié)。b0.a(chǎn)sm內(nèi)容是00h~3fh,存放于bank0從7fc0h開始的空間;b1.a(chǎn)sm內(nèi)容是40h~7fh,b2.a(chǎn)sm內(nèi)容是80h~cfh,b3.a(chǎn)sm內(nèi)容是doh~ffh,bankl~bank3均存放于各自bank從8000h開始的空間,物理上分別位于c8051f12x的8000h、10000h、18000h開始的區(qū)域。b0.a(chǎn)sm中的內(nèi)容為:
org 7fcoh
db 000h.001h,002h,003h+004h,005h,006h,007h
db 008h,009h,ooah,00bh,ooch,oodh,00eh,00fh
db 010h,011h,012h,013h,014h,015h,016h,017h
db 018h,019h,01ah,0lbh,01ch,01dh,01eh,0lfh
db 020h,021h,022h,023h,024h,025h,026h,027h
db 028h,029h,02ah,02bh,02ch,02dh,02eh,02fh
db 030h,03lh,032h,033h,034h,035h,036h,037h
db 038h,039h,03ah,03bh,03ch,03dh,03eh,03fh
end;
其他3個(gè)asm文件格式一樣,但org全部改為8000h,內(nèi)容也相應(yīng)替換。
3 生成hex文件方法
啟動(dòng)uv2集成開發(fā)環(huán)境,新建一項(xiàng)目,由于現(xiàn)在儀為4個(gè)asm的常量代碼表編譯hex文件,器件可選包含32 kb以上rom的任意一型號(hào)的51mcu。考慮到以后實(shí)際使用c8051f12x,可以直接選擇c8051f12x。不必配置code banking的選項(xiàng),在output選項(xiàng)卡的createhex file選項(xiàng)上配置.以創(chuàng)建hex文件
熱門點(diǎn)擊
- 用于ATmega128的軟件UART范例程序
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
- 51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序
- PIC單片機(jī)CRC校驗(yàn)程序
- PIC單片機(jī)紅外遙控編碼與解碼的問題
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來制作的手動(dòng)計(jì)數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
推薦技術(shù)資料
- 硬盤式MP3播放器終級改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 扇出型面板級封裝(FOPLP)
- 全球首款無掩模光刻系統(tǒng)—DSP
- 紫光閃存E5200 PCIe 5.0 企業(yè)級
- NAND Flash 技術(shù)和系
- 高性能DIMM 內(nèi)存數(shù)據(jù)技術(shù)封
- PCIe Gen4 SSD主控
- 多媒體協(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)用研究