TMS320VC5402 DSP的并行I/O引導裝載方法研究
TMS320VC5402(以下簡(jiǎn)稱(chēng)C5402)是德州儀器公司(TI)1999年10月推出的性?xún)r(jià)比極高(目標價(jià)格僅為5美元)的定點(diǎn)數字信號處理器(DSP)。C5402主要特點(diǎn)如下[1]:
?操作速率達100MIPS;
?具有先進(jìn)的多總線(xiàn)結構,三條16位數據存儲器總線(xiàn)和一條程序存儲器總線(xiàn);
?40位算術(shù)邏輯單元(ALU),包括一個(gè)40位桶形移位器和兩個(gè)40位累加器;
?一個(gè)17×17乘法器和一個(gè)40位專(zhuān)用加法器,允許16位帶/不帶符號的乘法;
?整合維特比加速器,用于提高維特比編譯碼的速度;
?單周期正規化及指數譯碼;
?8個(gè)輔助寄存器及一個(gè)軟件棧,允許使用業(yè)界最先進(jìn)的定點(diǎn)DSP C語(yǔ)言編譯器;
?數據/程序尋址空間1M×16bit,內置4K×16bit ROM和16K×16bit RAM;
?內置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)時(shí)鐘產(chǎn)生器、兩個(gè)多通道緩沖串行口、一個(gè)8位并行與外部處理器通信的HPI口、2個(gè)16位定時(shí)器以及6通道DMA控制器;
?低功耗,工作電源有3V和1.8V(內核),特別適合電池供電設備。
由此可見(jiàn),與TMS32054X系列的其它芯片相比,C5402以其獨有的高性能、低功耗和低價(jià)格特性,使得一推出就受到業(yè)內用戶(hù)的歡迎。但它的內部結構和片內掩模的引導裝載(Bootloader)程序與C54X系列的其它DSP處理器[2]有較大的差異,而它的應用對象又大多是要求能脫機運行,如機頂盒(STB)、個(gè)人數字助理(PDA)和數字無(wú)線(xiàn)通信等內嵌式系統。為此,本文立足我們的實(shí)踐經(jīng)驗,簡(jiǎn)單介紹C5402 Bootloader程序分析和實(shí)現方法,并較為詳細地介紹并行I/O Bootloader方法。
1 幾種引導裝載方法
C5402片內掩模的Bootloader用于在上電復位時(shí)把用戶(hù)程序從外部引導到高速RAM中,以保證其全速運行。C5402提供了如下四種Bootloader方法:8位或16位并行EPROM方法、8位或16位并行I/O方法、8位或16位串行口方法和處理器通信口(主端口)HPI方法。
上電復位后,C5402檢測其MP/MC引腳,如果MP/MC=“0”則進(jìn)入Bootloader程序。進(jìn)入Bootloader后,如有INT2請求中斷,則進(jìn)入HPI引導方式,否則則讀入端口地址為0FFFFH的I/O端的引導方式選擇字(Boot Routine Selection、 BRS)。當BRS=XXXX00時(shí),進(jìn)入I/O或串行口引導方式;如BRS=XXXX1000時(shí),進(jìn)入8位I/O引導方式;BRS=XXXX1100時(shí),進(jìn)入16位I/O引導方式,否則則進(jìn)入串行口引導方式。當BRS=XXXX01時(shí),進(jìn)入8位EPROM引導方式,BRS=XXXX10時(shí),進(jìn)入16位EPROM引導方式。
2 C5402片內ROM結構及并行I/O引導裝載程序分析
C5402提供了4K×16bit 的掩模ROM,其具體內容見(jiàn)表1。C5402上電復位后,如果MP/MC=“0”則從F800h地址開(kāi)始運行Bootloader程序。在進(jìn)入8位并行I/O引導程序以前,C5402與外部I/O要進(jìn)行一系列的通信聯(lián)絡(luò ),其程序框圖如圖1所示。
以下是8位并行I/O引導程序片段下:
行號 源程序 注 解
(標號)
END ;讀入用戶(hù)代碼結束并轉執行用戶(hù)程序
1 CALL (21) ;調用讀數據子程序
2 STL B、61h ;B的內容→61H單元
3 CALL (21) ;調用讀數據子程序
4 STL B、 62h ;B的內容→62H單元
5 CALL (21) ;調用讀數據子程序
6 BC (END)、 BEQ ;B=0時(shí)結束
7 SUB #01h、0、B、B ;B-1→B
8 STLM B、BRC ;B→BRC
9 CALL (21) ;調用讀數據子程序
10 STL B、 68h ;B的內容→68H單元
11 CALL (21) ;調用讀數據子程序
12 ADD 68h、16、B、B ;68H移位后加B→B
13 LD B、0、A ;B→A
14 RPTD (20)-1 ;循環(huán)15-19
15 CALL (21) ;調用讀數據子程序
16 SSBX XF ;XF=1
17 BC (17)、BIO ;BIO=0則等待
18 WRITA B ;把B的內容寫(xiě)到*A
19 ADD #01h、0、A、A ;A+1→A
20 B (5) ;跳轉到標號為5
?
?
?
21 SSBX XF ;XF=1
22 BC (22)、BIO ;BIO=0則等待
23 RXBX XF ;XF=0
24 BC (24)、NBIO ;BIO=1則等待
25 PORTR 0000h、 B ;讀0地址端口→B
26 SFTL B、8、B ;B左移8位→B
27 SSBX XF ;XF=1
28 BC (28)、 BIO ;BIO=0則等待
29 RXBX XF ;XF=0
30 BC (30)、 NBIO ;BIO=1則等待
31 PORTR 0000h、68h ;讀0地址端口→68
32 ANDM 000ffh、68h ;邏輯與
33 OR 68h、 B ;邏輯或后→B
34 RET ;返回
評論