新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于閃爍存儲(chǔ)器的TMS320VC5409 DSP并行引導(dǎo)裝載方法

基于閃爍存儲(chǔ)器的TMS320VC5409 DSP并行引導(dǎo)裝載方法

作者: 時(shí)間:2009-10-29 來(lái)源:網(wǎng)絡(luò) 收藏

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

上電復(fù)位后,檢測(cè)其MP/MC引腳,如果MP/MC=0,從0xFF80h處開(kāi)始執(zhí)行片內(nèi)程序。進(jìn)入程序后,如有INT2請(qǐng)求中斷,則進(jìn)入HPI 方式;如有INT3請(qǐng)求中斷,則進(jìn)入EEPROM串行口引導(dǎo)方式;否則就進(jìn)入引導(dǎo)方式。其詳細(xì)引導(dǎo)過(guò)程如圖3所示。

片內(nèi)引導(dǎo)方式前半部件是I/O空間引導(dǎo)方式,我們不采用此方式,程序繼續(xù)運(yùn)行直到從數(shù)據(jù)空間0xFFFFh地址讀入一個(gè)地址數(shù)據(jù),此數(shù)據(jù)為用戶自舉表的入口地址。這時(shí)片內(nèi)引導(dǎo)程序就開(kāi)始執(zhí)行FLASH中的用戶自舉表,若自舉表的第一個(gè)字是0x10AA,則表示是16位并行引導(dǎo)模式。

4 FLASH中自舉表(Boottable)的存儲(chǔ)格式

為了實(shí)現(xiàn)加電自舉,F(xiàn)LASH的數(shù)據(jù)必須按照自舉表的格式“燒寫(xiě)”。自舉表的作用是:運(yùn)行此表時(shí),首先根據(jù)自舉表中前部分用戶起始地址把后面的用戶程序代碼加載到DSP片內(nèi)程序空間中相應(yīng)的用戶地址區(qū)域(由于FLASH與DSP時(shí)間不匹配,要設(shè)置好SWWR和BSCR寄存器),然后根據(jù)自舉表中的程序入口址,在程序空間相應(yīng)的地址開(kāi)始運(yùn)行程序。表2為16位并行自舉的代碼結(jié)構(gòu)(自舉表在空間允許的情況下可以放幾個(gè)程序代碼段,為便于說(shuō)明,在此只說(shuō)明一個(gè)程序代碼段的情況)。

表2 并行自舉表的代碼結(jié)構(gòu)

10AA(并行尋址格式)
SWWSR寄存器的初始值
BSCR寄存器的初始值
用戶程序入口的XPC
用戶程序入口的地址PC
用戶程序的長(zhǎng)度
用戶程序起始地址XPC
用戶程序起始地址PC
用戶程序代碼…
0000(表示自舉表結(jié)束)

下面結(jié)合一個(gè)實(shí)例,說(shuō)明利用hex500命令生成二進(jìn)制數(shù)據(jù)自舉表的。

(1)所編寫(xiě)的一個(gè)用戶程序名為myblink.C,在編譯鏈接成功后生成的輸出文件名為myblink.out;程序空間的開(kāi)始地址為0x1400h,程序執(zhí)行的入口地址為0x144Fh。利用hex500工具,生成文件名為myblink.hex的二進(jìn)制數(shù)據(jù),hex500命令后添加如下條件:

mybilink.out ;要轉(zhuǎn)換的.out文件

-a ;生成ASCII碼的形式

-e 0x144Fh ;程序空間中程序運(yùn)行的開(kāi)始

地址

-boot ;轉(zhuǎn)換成自舉表的形式

-bootorg PARALLEL ;并行格式

-byte ;按字節(jié)分配地址

-memwidth 16 ;系統(tǒng)字寬度為16位

-romwidth 16 ;ROM物理寬度為16位

-swwsr 0x7FFFh ;SWWSR設(shè)置軟件等待周期

-bscr 0xF800h ;BSCR設(shè)置段開(kāi)關(guān)控制寄存器值0xF800

-o myblink.hex ;輸出的二進(jìn)制數(shù)據(jù)文件名

(2)生成的進(jìn)制數(shù)據(jù)文件myblink.hex的數(shù)據(jù)為:

0x10AA 0x7FFF 0xF800 0x0000 0x144F 0x00D1 0x0000 0x1400 …(用戶程序代碼)… 0x0000;

前8個(gè)數(shù)據(jù)解釋分別為:

0x10AAh:16位并行尋址格式;

0x7FFFh:SWWSR初始值為0x7FFFh,因?yàn)镕LASH的運(yùn)行速度比DSP慢,等待7個(gè)周期;

0xF8000h:BSCR初始值為0xF800h;

0x0000h:自舉表程序入口的XPC=0;

0x144Fh:自舉表程序入口的地址=0x144Fh;

0x00D1h:自舉表程序的長(zhǎng)度=0xD1h;

0x0000h:自舉表起始地址XPC=0;

0x1400h:自舉表的起始地址=0x1400h。

(3)編寫(xiě)一個(gè)數(shù)據(jù)轉(zhuǎn)換程序,把二進(jìn)制數(shù)據(jù)文件myblink.hex轉(zhuǎn)換為數(shù)組頭文件myblink.h。在CCS環(huán)境下,F(xiàn)LASH的“燒寫(xiě)”主程序包含此頭文件,編譯鏈接后通過(guò)仿真器下載到DSP中,運(yùn)行DSP,用戶程序就被“燒入”FLASH中了。

實(shí)際應(yīng)用是:在數(shù)據(jù)空間地址0xFFFFh(也就是FLASH的空間0xFFFFh)中“燒寫(xiě)”數(shù)據(jù)0x9000h(FLASH中存放的自舉表起始地址),在FLASH的地址0x9000h開(kāi)始“燒入”用戶自舉表數(shù)據(jù)即myblink.h中的數(shù)組數(shù)據(jù)。

DSP 運(yùn)行情況是:依據(jù)第3節(jié)所述的引導(dǎo)過(guò)程,經(jīng)過(guò)一系列的設(shè)置,使DSP尋址到數(shù)據(jù)空間地址0xFFFFh,得到自舉表的起始地址0x9000h,PC指針指向0x9000h,執(zhí)行自舉表的數(shù)據(jù),根據(jù)自舉表寫(xiě)入信息,把后面的程序入程序空間起始地址0x1400h(XPC=0)(這時(shí)通過(guò)仿真器查看程序空間0x1400h開(kāi)始的數(shù)據(jù),與仿真器下載的myblink.out文件數(shù)據(jù)是一致的)。然后,DSP的PC指針指向程序入口地址0x144Fh (XPC=0)開(kāi)始執(zhí)行用戶程序,從而完成了DSP利用FLASH實(shí)現(xiàn)16位并行引導(dǎo)裝載的過(guò)程。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉