TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)_第1頁(yè)
TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)_第2頁(yè)
TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)_第3頁(yè)
TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)_第4頁(yè)
TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、TMS320C62x HPI引導(dǎo)過(guò)程的實(shí)現(xiàn)                摘要:TMS320C62x和TMS320C67x DSPs提供了幾種不同的啟動(dòng)模式,不同的啟動(dòng)模式?jīng)Q定了DSP復(fù)位后的初始化以及代碼裝載方式。本文就TMS320C62x DSP的HPI啟動(dòng)模式進(jìn)行詳細(xì)的說(shuō)明。        關(guān)鍵詞:TMS320C62x    DSP

2、     HPI   啟動(dòng)模式        1 緒言        在TMS320C62x系列DSP中,主機(jī)口HPI是一個(gè)16位寬度的并行端口。主機(jī)(也稱上位機(jī))掌管該接口的主控權(quán),通過(guò)它可以直接訪問(wèn)CPU的存儲(chǔ)器空間。另外,主機(jī)還可以直接訪問(wèn)TMS320C62x片內(nèi)的存儲(chǔ)映射的外圍設(shè)備。        HPI與CPU存儲(chǔ)空間

3、的互連是通過(guò)DMA控制器實(shí)現(xiàn)的。借助專門的地址和數(shù)據(jù)寄存器,通過(guò)DMA輔助通道,完成HPI對(duì)存儲(chǔ)空間的訪問(wèn)。主機(jī)和CPU都可以對(duì)HPI控制寄存器HPIC進(jìn)行訪問(wèn),主機(jī)一方還可以訪問(wèn)HPI地址寄存器HPIA和HPI數(shù)據(jù)寄存器HPID。        2 TMS320C62x引導(dǎo)模式        TMS320C62x系列DSP提供了三種引導(dǎo)方式:        (1) 沒(méi)有自舉過(guò)

4、程:CPU直接從地址0開(kāi)始執(zhí)行代碼;        (2) ROM自舉:由DMA/EDMA控制器從外部CE1空間中的ROM中拷貝固定數(shù)量的一段代碼到地址0,拷貝結(jié)束后,CPU從地址0開(kāi)始運(yùn)行;        (3) HPI自舉:由外部主機(jī)通過(guò)HPI對(duì)芯片的存儲(chǔ)器空間進(jìn)行初始化,初始化結(jié)束后,外部主機(jī)通過(guò)HPI中斷喚醒CPU,CPU開(kāi)始從地址0運(yùn)行。        所有

5、這些設(shè)置項(xiàng)都是在芯片復(fù)位的時(shí)候才進(jìn)行檢查。一旦復(fù)位信號(hào)有效(reset0),所有的三態(tài)輸出管腳恢復(fù)為默認(rèn)狀態(tài),然后在reset信號(hào)的上升沿處檢查設(shè)置管腳BOOTMODE4:0的狀態(tài),自舉邏輯開(kāi)始生效。其中C6201/C6701有專門的管腳作為BOOTMODE4:0,C6211/C6711則是利用主機(jī)口的HD4:0,C6202/C6203利用擴(kuò)展總線的XD4:0作為BOOTMODE4:0信號(hào)。        對(duì)于TMS320C62x的HPI自舉模式過(guò)程如下:首先需要設(shè)置Boot模式,Boot模式設(shè)置如表1所示。當(dāng)DSP被復(fù)位時(shí)

6、,如果選擇了HPI boot模式,那么只有DSP的內(nèi)核進(jìn)入復(fù)位狀態(tài),DSP其余模塊均保持激活狀態(tài)。這樣,主機(jī)就可以通過(guò)HPI接口訪問(wèn)DSP的整個(gè)存儲(chǔ)空間,包括片內(nèi)、片外存儲(chǔ)器和片內(nèi)的外設(shè)寄存器,對(duì)它們進(jìn)行初始化。主機(jī)對(duì)DSP做完了有關(guān)設(shè)置后,向HPIC寄存器的DSPINT位寫1,將DSP從復(fù)位狀態(tài)喚醒,接下來(lái)CPU就從地址0開(kāi)始執(zhí)行程序。主機(jī)對(duì)DSP可以進(jìn)行的操作包括:初始化CPU和EMIF,向DSP加載程序以及數(shù)據(jù)等。    表1 TMS320C62x HPI boot配置      

7、0;              BOOTMODE4:0        Memory Map        Memory at Address 0        Boot    &#

8、160;       00110        MAP 0        External; default values        HPI            0

9、0111        MAP 1        Internal        HPI        3 TMS320C62x HPI引導(dǎo)模式的實(shí)現(xiàn)        3.1 創(chuàng)建啟動(dòng)代碼   

10、;     實(shí)現(xiàn)TMS320C62x HPI引導(dǎo)模式的第一步是生成HPI引導(dǎo)的DSP代碼,并把它與主處理器應(yīng)用程序合并在一起,使DSP應(yīng)用程序可以和主處理器應(yīng)用程序一起遠(yuǎn)程下載。為了簡(jiǎn)化,采用下列方案:把DSP應(yīng)用程序轉(zhuǎn)換成頭文件中的數(shù)組,并和主處理器應(yīng)用程序一起編譯連接。        具體實(shí)現(xiàn)分為兩步:1)利用轉(zhuǎn)換工具HEX6x把COFF文件轉(zhuǎn)換成ASCII-Hex格式十六進(jìn)制文件;2)利用自編工具h(yuǎn)ex2aray.exe將ASCII-Hex格式的文件轉(zhuǎn)換成包含數(shù)組的頭文件。

11、60;       (1)利用轉(zhuǎn)換工具HEX6x把COFF文件轉(zhuǎn)換成ASCII-Hex格式十六進(jìn)制文件        利用轉(zhuǎn)換工具HEX6x把COFF文件轉(zhuǎn)換成十六進(jìn)制文件,使用轉(zhuǎn)換工具HEX6x需要一個(gè).cmd文件說(shuō)明具體的轉(zhuǎn)換格式,如下面文件hexcom.cmd所示:HEX6x把COFF文件test.out轉(zhuǎn)換成兩個(gè)ASCII-Hex格式的文件:一個(gè)是代碼段,包含在文件test.a00中;另一個(gè)是初始化的數(shù)據(jù)段,包含在文件test.a10中。在DOS命令行中執(zhí)行

12、hex6x hexcom.cmd將產(chǎn)生test.a00和test.a10兩個(gè)文件。文件hexcom.cmd:.objecttest.out-a-byte-image-memwidth 16-romwidth 16-order M    ROMS/* Size of the internal pgm memory */PGM: org = 0x00000000, length = 0x10000/* Size of the internal data memory */DATA: org = 0x80000000, length = 0x10000

13、0;       (2)利用工具h(yuǎn)ex2aray.exe生成頭文件        然后利用hex2aray.exe將兩個(gè)ASCII-Hex格式的文件:test.a00和test.a10分別轉(zhuǎn)換成兩個(gè)個(gè)包含數(shù)組的頭文件:code.h和init.h。工具h(yuǎn)ex2aray.exe為自編工具。在DOS命令行中分別執(zhí)行hex2aray i test.a00 o code.h和hex2aray i test.a10 o init.h兩條命令將產(chǎn)生兩個(gè)頭文件code.h和init

14、.h。在文件hexcom.cmd中的選項(xiàng):- a,指示HEX6x按ASCII-Hex格式轉(zhuǎn)換文件,ASCII-Hex文件格式如下所示:    B $AXXXX,XX XX XX XX XX XX XX XX XX XX. . .C        文件開(kāi)始是ASCII STX 字符 (ctrl-B, 02h),結(jié)束是ASCII ETX 字符 (ctrl-C, 03h);$AXXXX,代表地址;其余為代碼。轉(zhuǎn)換后的頭文件格式如下:    const

15、char code=0x12,0x18,0x01,0x00,0x28,0x00,0x00,0x00,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

16、0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

17、0x00,0x00,0x00,;        3.2 主機(jī)對(duì)HPI接口的操作        TMS320C62x提供了三個(gè)16位寄存器:HPIC、HPIA、HPID和16位數(shù)據(jù)線與主處理器通信。主處理器通過(guò)HPIC、HPIA、HPID和16位數(shù)據(jù)線來(lái)與TMS320C62x進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)交換的過(guò)程如下:        1)首先初始化HPIC;    2)

18、然后把地址寫到HPIA;    3)最后通過(guò)HPID讀或?qū)憯?shù)據(jù)。        假設(shè)主機(jī)CPU也是TMS320C62x,那么主機(jī)與目標(biāo)機(jī)之間的連接如圖1所示:            如圖1所示,假如Target 6201的/HCS連接到主機(jī)6201的CE1上。Target 6201的HPI寄存器映射到Host 6201DSP內(nèi)存中,HCNTRL1:0和HHWIL連接到主機(jī)CPU的地址線上

19、,那么HPIC、HPIA、HPID寄存器的地址分配如表2所示。,那么在C語(yǔ)言中,可以通過(guò)指針訪問(wèn)HPIC、HPIA、HPID,例如:    #define C6201_HPI 0x01400000  /* Host address on which C6x HPI is mapped */int *hpi_ptr;      /* define and initialize pointer*/hpi_ptr = (int *)C6201_HPI;    /

20、* Write dest_address to HPIA, with HOB=1 */ptr_hpi2 = (int)(dest_address & 0x0ffff);ptr_hpi3 = (int)(dest_address>>16)&0x0ffff);    表2  HPIC、HPIA、HPID各寄存器的地址分配                 

21、    映射到主機(jī)的地址        HPI控制線        HPI寄存器訪問(wèn)            HCNTL1:0        HHWIL    &

22、#160;       HPI Base address + 0x00        00        0        HPIC 1st  halfword          

23、  HPI Base address + 0x04        00        1        HPIC 2st  halfword            HPI Base address + 0x08

24、        01        0        HPIA 1st  halfword            HPI Base address + 0x0C      

25、;  01        1        HPIA 2st  halfword            HPI Base address + 0x10        10   &#

26、160;    0        HPID 1st  halfword    HPIA 自增            HPI Base address + 0x14        10    

27、    1        HPID 2st  halfword    HPIA自增            HPI Base address + 0x18        11     

28、;   0        HPID 1st  halfword    HPIA不自增            HPI Base address + 0x1C        11     

29、60;  1        HPID 2st  halfword    HPIA不自增        3.3 主機(jī)通過(guò)HPI下載代碼和數(shù)據(jù)段到目標(biāo)DSP        一個(gè)程序由初始化區(qū)和非初始化區(qū)兩部分組成,主機(jī)處理器必須根據(jù).cmd命令文件把這兩個(gè)區(qū)裝載到DSP正確的地址。下面這段代碼就是將代碼段和數(shù)據(jù)段

30、兩部分分別下載到指定地址(即程序RAM和數(shù)據(jù)RAM)。它主要是從*source中讀出32位長(zhǎng)的數(shù)據(jù),然后通過(guò)HPI將此數(shù)據(jù)寫到DSP的dest_add地址(即程序RAM和數(shù)據(jù)RAM)中。*source中的數(shù)據(jù)就是DSP的啟動(dòng)代碼段和數(shù)據(jù)段中的數(shù)據(jù)。void C6x_write_section(int *ptr_hpi, short *source, int dest_add, int length)int i;/* Write HPIC with HWOB=1,1st halfword transferred is least significant */* HCNTRL1 HCNTRL0 HHWIL */ptr_hpi0 = 0x0001; /* 1st halfword 0 0 0 */ptr_hpi1 = 0x0001; /* 2nd halfword 0 0 1 */* Write destination address to HPIA, 1st halfword is least significant */* HCNTRL1 HCNTRL0 HHWIL */ptr_hpi2 = (int)(dest_add & 0x0ffff); /* 0 1 0 */ptr_hpi3 = (int)(dest

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論