DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第1頁(yè)
DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第2頁(yè)
DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第3頁(yè)
DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第4頁(yè)
DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

精品文檔-下載后可編輯DSP芯片TMS320C6712的外部?jī)?nèi)存自引導(dǎo)功能的實(shí)現(xiàn)-設(shè)計(jì)應(yīng)用TMS320C6000系列與TMS320C54系列的引導(dǎo)方式有很大差別。在開(kāi)發(fā)應(yīng)用TMS320C6000系列DSP時(shí),許多開(kāi)發(fā)者,尤其是初涉及者對(duì)DSPROM引導(dǎo)的實(shí)現(xiàn)有些困難,花費(fèi)許多時(shí)間和精力摸索。筆者結(jié)合開(kāi)發(fā)實(shí)例,介紹了實(shí)現(xiàn)外部存儲(chǔ)器引導(dǎo)的具體方法。

DSP的引導(dǎo)過(guò)程

DSP系統(tǒng)的引導(dǎo)(BOOT)是指系統(tǒng)加電或復(fù)位時(shí),DSP將一段存儲(chǔ)在外部的非易失性存儲(chǔ)器的程序代碼通過(guò)DMA方式拷貝到內(nèi)部的高速內(nèi)存中運(yùn)行。這樣既能擴(kuò)展DSP有限的存儲(chǔ)空間,又能充分發(fā)揮DSP內(nèi)部資源的效能。用戶的代碼也可以通過(guò)掩膜方式寫入到DSP內(nèi)部ROM中,但這樣受容量和價(jià)格的限制,且不便于擴(kuò)展和升級(jí)。

DSP的引導(dǎo)過(guò)程如下:

1)DSP復(fù)位后,通過(guò)DMA方式將外部CE1空間的數(shù)據(jù)讀入到內(nèi)部程序空間地址0處,讀入數(shù)據(jù)的多少因芯片而異(TMS320C6712只拷貝1KB)。

2)DSP推出復(fù)位狀態(tài),開(kāi)始執(zhí)行內(nèi)部程序空間地址0處的程序,這段程序先將外部主程序數(shù)據(jù)讀入到DSP內(nèi)部程序空間相應(yīng)地址,然后跳轉(zhuǎn)到主程序運(yùn)行。

步是由芯片自動(dòng)完成,關(guān)鍵是第二步:用戶需要編寫相應(yīng)的匯編程序,實(shí)現(xiàn)二次引導(dǎo),即用戶主程序的裝載。

引導(dǎo)失敗的原因分析

(1)鏈接命令文件(.cmd)文件

鏈接命令文件定義了鏈接的參數(shù),描述系統(tǒng)生成的可執(zhí)行代碼各段的段名及映射到目標(biāo)板的物理空間。當(dāng)這些段的起始地址或段的長(zhǎng)度編寫錯(cuò)誤時(shí),引導(dǎo)程序就可能發(fā)生錯(cuò)誤。

(2)可執(zhí)行代碼的二進(jìn)制文件格式

用戶的程序在CCS開(kāi)發(fā)環(huán)境下編譯生成COFF文件格式,仿真過(guò)程中可以直接加載COFF文件運(yùn)行。但當(dāng)調(diào)試仿真通過(guò)后,目標(biāo)板要脫離CCS環(huán)境獨(dú)立運(yùn)行時(shí),可執(zhí)行代碼就需要轉(zhuǎn)換為二進(jìn)制文件格式,保存在目標(biāo)板的外部存儲(chǔ)器上。轉(zhuǎn)換時(shí)需要使用正確的配置文件。

(3)目標(biāo)板的硬件電路(引導(dǎo)模式,系統(tǒng)時(shí)鐘)

目標(biāo)板的硬件電路也會(huì)影響引導(dǎo)程序的正常運(yùn)行,如設(shè)置的引導(dǎo)模式與實(shí)際的外部存儲(chǔ)器不符,系統(tǒng)時(shí)鐘電路不工作,復(fù)位信號(hào)恒有效等。

下面結(jié)合TMS320C6212的開(kāi)發(fā)實(shí)例,具體介紹外部存儲(chǔ)器引導(dǎo)的實(shí)現(xiàn)。

ROM引導(dǎo)實(shí)例

TMS320C6212是TMS320C6201的簡(jiǎn)化版芯片,內(nèi)部資源相對(duì)較少,工作頻率相對(duì)較低,但其價(jià)格低廉,具有很高的性能價(jià)格比。TMS320C6212的工作頻率可達(dá)150MHz,處理能力為900MIPS,很適合中小型系統(tǒng)開(kāi)發(fā)。

由于FLASH是一種高密度、非易失的電擦寫存儲(chǔ)器,系統(tǒng)采用FLASH作為外部存儲(chǔ)器。除了專用的硬件編程器可以把二進(jìn)制代碼寫入FLASH中,還可以利用DSP的調(diào)試系統(tǒng),通過(guò)軟件編程寫入。DSP與FLASH的接口連接如圖1所示。

系統(tǒng)工程在CCS開(kāi)發(fā)環(huán)境下使用C語(yǔ)言編程,這樣可以縮短開(kāi)發(fā)周期,提高工作效率,并具有移植性好的優(yōu)點(diǎn)。引導(dǎo)工程的文件流程如圖2所示。

(1)中斷向量表vectors.asm

中斷向量表缺省保存在DSP芯片內(nèi)部RAM的0地址開(kāi)始的0x200字節(jié)空間,上電或復(fù)位后,芯片自動(dòng)運(yùn)行復(fù)位中斷。因此,復(fù)位中斷向量設(shè)置為引導(dǎo)程序(_boot)的入口地址,引導(dǎo)程序的主體在boot.asm中定義。部分程序如下:

.ref_boot;調(diào)用引導(dǎo)程序

.sect“.vectors”;段聲明

RESET_RST:;復(fù)位中斷向量

mvkl.S2_boot,B0;裝載引導(dǎo)程序地址

mvkh.S2_boot,B0

B.S2B0;跳轉(zhuǎn)到引導(dǎo)程序執(zhí)行

NOP5

(2)自引導(dǎo)的匯編程序boot.asm

自引導(dǎo)匯編程序主要是配置基本的寄存器,并將保存在外部FLASH中的二進(jìn)制程序拷貝到DSP內(nèi)部的RAM中再執(zhí)行。由于TMS320C6712自動(dòng)拷貝1KB,因此起始地址是從0x400開(kāi)始,匯編程序如下:

.sect“.boot_load”;定義數(shù)據(jù)段

.ref_c_int00;聲明外部函數(shù)

.global_boot;定義全局函數(shù)

_boot:

;先設(shè)置控制寄存器,如EMIF_GCR等,(略)

;拷貝FLASH中的程序到DSP內(nèi)部RAM

mvkl0x00000400,A4;A4為RAM地址指針

||mvkl0x90000400,B4;B4為FLASH地址指針

mvkh0x00000400,A4

||mvkh0x90000400,B4

zeroA1;A1用作計(jì)數(shù)器

_boot_loop:;DSP開(kāi)始讀取FLASH中程序

ldb*B4++,B5

mvkl0x0000F200,B6;B6為需要拷貝的字節(jié)數(shù)

add1,A1,A1

||mvkh0x0000F200,B6

cmpltA1,B6,A0

nop

stbB5,*A4++

[B0]b_boot_loop

nop5

mvkl.S2_c_int00,B0;循環(huán)結(jié)束后,跳轉(zhuǎn)到主函數(shù)main執(zhí)行

mvkh.S2_c_int00,B0

B.S2B0

Nop5

(3)主程序main.c

主程序是DSP要實(shí)現(xiàn)具體功能的主體,其定義的主函數(shù)main()經(jīng)編譯后在函數(shù)_c_int00中調(diào)用,因此在上面的引導(dǎo)程序結(jié)束時(shí),將跳轉(zhuǎn)到函數(shù)_c_int00,即主函數(shù)main執(zhí)行。

(4)鏈接命令程序link.cmd

鏈接命令程序用于定義系統(tǒng)各存儲(chǔ)器的地址及大小,并分配編譯后各段到相應(yīng)的存儲(chǔ)空間,link.cmd內(nèi)容如下:

-c

-lrts6201.lib

MEMORY

{

vecs:o=00000000h=00000200h

BOOT_RAM:o=00000200hl=00000200h

IRAM:o=00000400hl=0000c400h

CE0:o=80000000hl=01000000h

CE1:o=90000000hl=00100000h

}

SECTI*

{

.vectors>vecsfill=0

.boot_load>BOOT_RAMfill=0

.text>IRAMfill=0

.stack>IRAMfill=0

.bss>IRAMfill=0

.cinit>IRAMfill=0

.far>IRAMfill=0

.sysmem>IRAMfill=0

.cio>IRAMfill=0

}

(5)轉(zhuǎn)換命令程序convert.cmd

上面的工程文件經(jīng)CCS系統(tǒng)編譯、匯編后生成可執(zhí)行COFF文件(.out),它需要轉(zhuǎn)換為二進(jìn)制文件,再寫入到FLASH中。CCS開(kāi)發(fā)系統(tǒng)帶有轉(zhuǎn)換程序:

hex6x.exe將可執(zhí)行COFF文件(.out)轉(zhuǎn)換為十六進(jìn)制文件(.hex)

hex2bin.exe將十六進(jìn)制文件(.hex)轉(zhuǎn)換為二進(jìn)制文件(.bin)

命令行的格式為:

hex6x.execonvert.cmd

hex2bin.exemboot

其中convert.cmd內(nèi)容如下:

mboot.out;輸入文件名.out格式

-x

-mapmboot.map;生成映射文件

-image

-memwidth8;內(nèi)存的位寬

-omboot.hex;輸出文件名.hex格式

溫馨提示

  • 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)論