文獻(xiàn)標(biāo)識碼: B
文章編號: 0258-7998(2012)11-0026-02
TMS320C6455(以下簡寫為C6455)是德州儀器(TI)公司的高性能數(shù)字信號處理芯片(DSP),在我國很多行業(yè)都得到了大規(guī)模的應(yīng)用,。在絕大多數(shù)應(yīng)用中,,都需要將C6455應(yīng)用程序燒寫到Flash中以實現(xiàn)系統(tǒng)自啟動。系統(tǒng)上電后,,C6455會自動將Flash起始位置的1 KB的代碼加載到內(nèi)部RAM[1],而對于C6455這種高性能的DSP,,應(yīng)用程序代碼會遠(yuǎn)遠(yuǎn)大于1 KB,,為此,TI公司提供了二級加載的解決方案,。二級加載就是在前1 KB空間中存儲EMIF配置和程序拷貝代碼,,用于將應(yīng)用程序從片外Flash搬移到片內(nèi)RAM或片外RAM。搬完后,,再跳轉(zhuǎn)到應(yīng)用程序的起始地址,,執(zhí)行應(yīng)用程序[2],。二級加載解決大尺寸應(yīng)用程序代碼的加載問題,主要應(yīng)用于程序代碼在RAM中的地址連續(xù)或者接近連續(xù)的情況,。
1 新問題
在實際的典型應(yīng)用中,,C6455將外接64 MB的DDR,其基地址為0xE0000000,。應(yīng)用程序一部分置于內(nèi)部RAM中,,還有一部分(如通信協(xié)議)則置于DDR中,如圖1所示,。
應(yīng)用程序代碼存放在0x00810000~0x009FFFFF的片內(nèi)RAM中,,協(xié)議棧的堆(HEAP)空間則放在0xE0000000~0xE27FFFFF的DDR中,協(xié)議棧代碼空間被分配在0XE2800000~0XE3FFFFFF的DDR內(nèi),。按照TI公司提供的二級加載,,理論上可以有兩種實現(xiàn)方案:
(1)方案1:直接移植TI的 BootLoader的示例程序。TI公司的BootLoader示例程序采用匯編代碼編寫,,主要分為EMIF初始化,、代碼搬移和程序跳轉(zhuǎn)三部分。代碼搬移是從Flash搬移到片內(nèi)RAM,,而本應(yīng)用還需要搬移一部分代碼到DDR,,需要增加PLL和DDR初始化代碼。其程序流程如圖2所示,。
(2)方案2:重寫B(tài)ootLoader代碼,。重寫B(tài)ootLoader程序代碼,依據(jù)存儲器分段情況進(jìn)行分段加載,。首先初始化PLL,、EMIF和DDR;然后將應(yīng)用程序代碼搬入內(nèi)部RAM,、把協(xié)議棧和用戶數(shù)據(jù)搬入DDR,;最后跳轉(zhuǎn)到C代碼的入口地址開始執(zhí)行。其程序流程如圖3所示,。
方案1實現(xiàn)起來軟件更改較少,,實現(xiàn)較容易,但需要的Flash存儲器的資源比較多,,按照圖1所示的分配,,0xE4000000-0x810000=0xE37F0000,需要3.8 GB的Flash來存儲代碼,,顯然是不合理的,;方案2需要大于60 MB的Flash資源,存儲器資源開銷可以接受,,但是由于限制在1 KB的程序空間,,受在1 KB程序空間內(nèi)要實現(xiàn)PLL初始化,、EMIF初始化、DDR2初始化以及分段拷貝功能空間的限制,,代碼優(yōu)化難度巨大,。
由此可見,方案1除了對硬件資源非常浪費外,,由于加載的無效代碼量大,,加載速度很慢;方案2雖然對Flash資源的消耗大大降低,,啟動速度也會相應(yīng)加快,,但是代碼本身的開發(fā)難度比較大,而且沒有可擴(kuò)展性,。因此,,本文提出三級加載的方法。
2 三級加載方案
三級加載Flash空間分配如圖4所示,,總共需要用到的Flash空間資源為20 MB多,。DSP代碼分為三級結(jié)構(gòu):第一級是TI公司提供的二次加載BootLoader解決方案;第二級是3次加載的管理程序manager,;第三級為應(yīng)用程序代碼app,。
(1)第一級加載
系統(tǒng)上電后,6455自動加載1 KB的BootLoader代碼到0x00800000~0x00800400內(nèi)部RAM中,,開始執(zhí)行BootLoader代碼,。
(2)第二級加載
BootLoader配置EMIF,將manager代碼加載到0x00800400~0x00810000內(nèi)部RAM中,,開始執(zhí)行manager代碼,。BootLoader程序流程如圖5所示。
(3)第三級加載
Manager代碼初始化PLL,、EMIF和DDR,,接著將應(yīng)用程序代碼搬入內(nèi)部RAM,再把協(xié)議棧和用戶數(shù)據(jù)搬入DDR,,最后跳轉(zhuǎn)到應(yīng)用程序的入口開始執(zhí)行,,如圖6所示。
介紹了一種基于TMS320C6455的大尺寸非連續(xù)的代碼加載方法,,較傳統(tǒng)的二級加載方式有更大的靈活性和更高的Flash利用率,。連續(xù)加載只是分段加載的特殊情況(即分段數(shù)為1),該加載方法對于連續(xù)代碼加載同樣適用,。雖然該加載方法是基于C6455設(shè)計實現(xiàn)的,但是對于TI公司的其他型號DSP也有很好的借鑒作用,。這種三級加載方法已在航空電子系統(tǒng)上得到應(yīng)用,,實踐證明該方法是一種使用可靠的加載方法,。
參考文獻(xiàn)
[1] TMS320C6455 fixed-point digital signal processor[S].Literature Number:SPRS276C,March,,2006.
[2] Texas Instruments.Using the TMS320C6452 bootloader[S]. Literature Number:SPRAAW2A,,June,2009.