




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、TMS320C600系列二次 Bootloader 的設計與實現(xiàn),DSP,二次Bootloader,Flash 存儲器 , 中斷向引言隨著DSP數(shù)字信號處理器)系統(tǒng)的廣泛應用,其程序規(guī)模也隨之不斷擴 大,使用芯片本身自帶的Boot-loader通過Flash存儲器來引導DSP程序,往 往受到程序大小和結(jié)構(gòu)的制約,比如程序很大超過廠商固化 boot 的范圍,再如 中斷向量表的不同位置對程序 boot 跳轉(zhuǎn)的影響,等等,因此越來越需要更加靈 活的引導方式。系統(tǒng)上電后,由引導程序?qū)SP的應用程序從該存儲器引導到DSP應用板上的高速存儲器(如內(nèi)部SRAM SDRA等)中。由于Flash存儲器具 有
2、引言 隨著DSP數(shù)字信號處理器)系統(tǒng)的廣泛應用,其程序規(guī)模也隨之不斷擴大,使 用芯片本身自帶的Boot-loader通過Flash存儲器來引導DSP程序,往往受到 程序大小和結(jié)構(gòu)的制約,比如程序很大超過廠商固化 boot 的范圍,再如中斷向 量表的不同位置對程序 boot 跳轉(zhuǎn)的影響,等等,因此越來越需要更加靈活的引 導方式。系統(tǒng)上電后,由引導程序?qū)?DSP的應用程序從該存儲器引導到 DSP應用板上的 高速存儲器(如內(nèi)部SRAM SDRAI等)中。由于Flash存儲器具有電信號刪除功 能,且刪除速度快,集成度高,因此已成為此種存儲器的首選。由于 Flash 存 儲器的存取速度較慢,寫入Flas
3、h存儲器的程序?qū)⒃谙到y(tǒng)上電時被 DSP裝載到 快速的存儲器中運行,這個過程稱為 Boot loader。不同的DSP有不同的引導 方式。以TI公司TMS320C600系列芯片為例,自舉方式有3種:無自舉(No Boot),CPI直接開始執(zhí)行地址0處的指令;主機自舉(Host Boot),系統(tǒng)復位 后主機通過CPU的HPI(主程序設計接口)初始化DSP的存儲空間;ROMI舉(ROM Boot),DMA控制器從CEl空間復制固定長度程序的地址 0處,然后從地址0處 開始執(zhí)行。對于620x/670x DMA復制64 kB數(shù)據(jù)從CEl到地址0;而對于 621x/671x EDMA復制1 kB數(shù)據(jù)從CE
4、l地址開始到地址0。關于TI公司的C6000芯片二次Bootloader在許多文獻都介紹過,包括二次 Bootloader的PLL、EMIF的設置和搬移表的設置和 Flash存儲器的燒寫過程, 但是對于有中斷向量表的二次 Bootloader 實現(xiàn)的文獻很少。本文以 TI 公司高 性能DSP的代表作TMS320C600系列芯片為例,介紹了一種帶中斷向量表的二 次Bootloader的新途徑,從而為TMS320C600系列DSP的開發(fā)提供了一種新的 思路。該方法在實際中得到具體應用,系統(tǒng)運行穩(wěn)定可靠。1二次Bootload的過程TMS320C671是 TI公司推出的TMS320C67X系列浮點D
5、SP中最新的一種芯片。TMS320C671每周期可以執(zhí)行8條32位指令;支持32/64位數(shù)據(jù);具有最高 225MHZ勺運行速度和1800 MIPs(百萬次運算每秒)或1350 MFLOPS百萬次浮點 運算每秒)的處理能力;同時是有強大的外設支持能力;EMIP(外部存儲器接口)可以很方便地與SDRAMSBSRA、Flash存儲器、SRAM等同步和異步存儲器相 連,16位EHPI接口可以與各種處理器接口;另外,還有優(yōu)化的多通道緩存串 口和多通道音頻串口,這些外部接口使設計人員可以很容易實現(xiàn)自己的應用系 統(tǒng)。在選擇ROMBoo方式時,RESETS低變高后,C6713的CPU內(nèi)核處于復位狀態(tài), 而C6
6、713的其他部分則開始工作,此時 EMIF的CEl空間根據(jù)ROM Boot的方式 自動地配置為8/16/32位異步存儲器接口,并且CEl空間讀/寫時序自動地 配置為最大,隨后將 CEl空間的前1 kB復制到0x0000 0000地址處。通過這1 kB的數(shù)據(jù)實現(xiàn)對其他程序的引導。對于中斷向量表設在0x0000 00000x00000400處的程序來說,1 kB數(shù)據(jù)中處包含EMIF設置代碼和搬移程序外,必然也 包含中斷向量表。本文重點敘述帶中斷向量表的Bootloader的過程,中斷向量表起始地址為0x00000000。如果程序長度小于1 kB,那么就不需要二次 bootloader,但是往往程序
7、長度都會大于 1 kB,所以二次bootloader是必然 的過程。二次Bootloader的實現(xiàn)需要引入EMIF設置和搬移的程序,即編寫boot c671x 2.s62、c6713 emif.s62,Ink2.cmd 和 boot.cmd3 個文件。本文以 實現(xiàn)多通道緩沖串口的程序進行說明,實現(xiàn)二次Bootload的過程框圖如圖1所7示0首先調(diào)入調(diào)試好的用戶程序工程文件MeBSP_test.pjt工程作為例程,然后在此工程文件中引入3個文件。程序編寫好后,要引入3個很重要的文件;EMIF的值定義文件(c6713_emif.s62);關于EMIF的設置和數(shù)據(jù)搬移的程序(boot_c67lx_2
8、.s62) cmd配置文件(Ink2.cmd)。同時,其原來的 mcbsp.cmd文件要去掉。圖2做了 一個對比。圖2(a)為原程序,圖2(b)為生成要燒寫的數(shù)據(jù)的程序,圖2(b)中 加入了 3個文件,原有的 mcbsp.cmd去掉了。其中boot_c67lx_2.s62 是通用 的,c6713_emif.s62要根據(jù)具體實際的芯片配置 EMIF的參數(shù)。其中boot_c671x_2.s62包含了 .boot_load 的函數(shù),這個函數(shù)包含幾個過程, 如圖3所示。c6713_emif.s62文件包括EMIF的幾個參數(shù)配置。Ink2.cmd文件 位COFF的配置。其次,就是把生成的*.out文件首
9、先使用CCS開發(fā)環(huán)境自帶的工具Hex6x.exe 把工程生成的*.out文件轉(zhuǎn)化成hex格式,在DOS環(huán)境下指令為 >Hex6x.exeboot.cmd。最后根據(jù)Flash存儲器芯片的要求把hex文件燒寫到Flash存儲器中指定的地 址即可。本例采用的AM29LV800BB-70ecFlash存儲器芯片,采用3.3 V供電, 完全兼容JEDEC標準,并支持在系統(tǒng)編程,用戶只需向其內(nèi)部的命令寄存器寫 入命令序列即可實現(xiàn)部分擦除、全部擦除、數(shù)據(jù)寫人等功能;同時可提供硬件 和軟件方法來檢查Flash存儲器的操作執(zhí)行情況。首先需要對芯片進行擦除全 部變?yōu)镺xFFFF然后再進行燒寫。由于Flash
10、存儲器是以16位進行訪問的, 所以對Flash存儲器而言其物理地址以16位為單位進行編址,而程序中使用的 邏輯地址是以字節(jié)為單位進行編址的,二者之間的關系如下:邏輯地址=物理地址&t ;<1,所以程序中有地址偏移。下面給出燒寫的程序。2帶有中斷向量表的二次Bootloader的實現(xiàn) 第1節(jié)介紹了一般的二次Bootload過程,但當需要boot帶中斷向量表的程序 時,需要仔細考慮3個重要文件的編程,否則將會遇到意想不到的后果。2.1配置文件Ink2.cmdInk2.cmd有了細微差別,此時有中斷向量表,所以在分配時要考慮vectors的分配空間。在配置文件中差異主要在 Memory
11、中,section的部分如下:0SECTIONSMEMOR的差別具體如下:a)沒有考慮中斷向量表配置的部分程序:0"b)考慮中斷向量表配置的部分程序:.vectors 為中斷向量表,其有 0x200的長度的數(shù)據(jù),必須放在 0x90000000的 地址處,.boot_load緊接著放置。2.2中斷向量表文件vec.asm 還有一個很重要的一點是圖2中vec.asm文件的變化。在調(diào)試程序時,中斷向 量表開始會直接跳到c_int00處,但是待燒寫的前1 kB數(shù)據(jù),首先要進行 EMIF設置和搬移過程,所以其指向要發(fā)生變化。vecter.asm部分程序如下: a)原程序的vecter.asm
12、部分程序: b)產(chǎn)生Bootload數(shù)據(jù)的程序的vecter.asm部分程序: 以上程序中,程序a)開始是指向c_intoo,程序b)為指向_boot,即.boot_load()的人口。這是因為在1 kB的程序復制完成后,程序即開始執(zhí) 行。首先應執(zhí)行二次boot程序,即入口點_boot,完成二次boot后,再執(zhí)行正 常的初始化C語言環(huán)境代碼,進而跳轉(zhuǎn)到用戶main函數(shù)。此時生成的.out的文件,通過hex6x.exe轉(zhuǎn)化成可燒寫的數(shù)據(jù)。2.3轉(zhuǎn)換數(shù)據(jù)的配置文件boot.cmd 通過hex6x.exe可以把boot.out文件轉(zhuǎn)化成boot.hex形式,方便燒寫到Flash存儲器中。此時Boot
13、.cmd的也要做相應的變化,把中斷向量表的程序 同.boot_load程序,程序段,數(shù)據(jù)段一樣轉(zhuǎn)化過來。boot.cmd配置程序如下: a)沒有考慮中斷向量表的boot.cmd配置: b)考慮中斷向量表boot.cmd配置:以上程序中l(wèi)en可以根據(jù)實際程序的長度進行修改,如果用hex6x.exeboot.cmd進行轉(zhuǎn)化,程序長度過短時,會產(chǎn)生警告提示。此時可以查看map文件,看看程序和數(shù)據(jù)占用的空間來定len的大小,只要len大于實際的程序長 度即可。Romwidth根據(jù)所用的Flash存儲器的位數(shù)來定,如果是8位的就寫 8,如果是16位的就換成16。以上程序中,程序b)與程序a)不同的是加入了 .vectors,使得生成的boot.hex 文件中0x0000 0000地址就為vectors的程 序。此時生成的*.hex的文件可以燒寫到Flash中。3結(jié)束語本文以TI公司高性能DSP TMS320C600系列芯片為例,介紹了從Flash存儲器 進行引導,帶中斷向量表的二次 Bootloader的新途徑,其中對Bootloader的 程序需要改寫的部分詳細敘述了具體的差別,從而為TMS320C600系
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論