《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于TMS320C6455的大尺寸非連續(xù)代碼加載方法
基于TMS320C6455的大尺寸非連續(xù)代碼加載方法
來(lái)源:電子技術(shù)應(yīng)用2012年第11期
邵 龍1,劉金山2
1.中國(guó)電子科技集團(tuán)公司第十研究所,四川 成都610036; 2.中國(guó)人民解放軍95899部隊(duì),北京100085
摘要: 在分析傳統(tǒng)加載方法加載大尺寸非連續(xù)代碼存在的缺陷的基礎(chǔ)上,提出了三級(jí)加載方法,并詳細(xì)介紹了該方法在TMS320C6455平臺(tái)上的設(shè)計(jì)與實(shí)現(xiàn)。三級(jí)加載方法很好地解決了大尺寸非連續(xù)的代碼加載中Flash存儲(chǔ)空間利用率低、代碼通用性差的問(wèn)題,已在重大工程項(xiàng)目中得到應(yīng)用。
中圖分類(lèi)號(hào): TP399
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2012)11-0026-02
The loader method for large-size non-continuous code based on TMS320C6455
Shao Long1,Liu Jinshan2
1.The 10th Institute of China Electronic Technology Group Corporation, Chengdu 610036,China; 2.The Chinese PLA No95899 Troops,Beijing 100085,China
Abstract: Based on the analysis of the drawbacks of the conventional boot loader to load large-size non-continuous code, the paper creatively advances the tertiary boot loader, and describes in detail the design and implementation of this boot loader method in the TMS320C6455 platform. In the case of large-size non-contiguous code is loaded, the tertiary boot loader is a very good method to improve the low utilization of the Flash storage space and bad universalization of the boot loader code, and has been applied in major projects.
Key words : TMS320C6455;Flash;large-size non-continuous code;tertiary boot loader

    TMS320C6455(以下簡(jiǎn)寫(xiě)為C6455)是德州儀器(TI)公司的高性能數(shù)字信號(hào)處理芯片(DSP),在我國(guó)很多行業(yè)都得到了大規(guī)模的應(yīng)用。在絕大多數(shù)應(yīng)用中,都需要將C6455應(yīng)用程序燒寫(xiě)到Flash中以實(shí)現(xiàn)系統(tǒng)自啟動(dòng)。系統(tǒng)上電后,C6455會(huì)自動(dòng)將Flash起始位置的1 KB的代碼加載到內(nèi)部RAM[1],而對(duì)于C6455這種高性能的DSP,應(yīng)用程序代碼會(huì)遠(yuǎn)遠(yuǎn)大于1 KB,為此,TI公司提供了二級(jí)加載的解決方案。二級(jí)加載就是在前1 KB空間中存儲(chǔ)EMIF配置和程序拷貝代碼,用于將應(yīng)用程序從片外Flash搬移到片內(nèi)RAM或片外RAM。搬完后,再跳轉(zhuǎn)到應(yīng)用程序的起始地址,執(zhí)行應(yīng)用程序[2]。二級(jí)加載解決大尺寸應(yīng)用程序代碼的加載問(wèn)題,主要應(yīng)用于程序代碼在RAM中的地址連續(xù)或者接近連續(xù)的情況。

1 新問(wèn)題
    在實(shí)際的典型應(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公司提供的二級(jí)加載,理論上可以有兩種實(shí)現(xiàn)方案:
    (1)方案1:直接移植TI的 BootLoader的示例程序。TI公司的BootLoader示例程序采用匯編代碼編寫(xiě),主要分為EMIF初始化、代碼搬移和程序跳轉(zhuǎn)三部分。代碼搬移是從Flash搬移到片內(nèi)RAM,而本應(yīng)用還需要搬移一部分代碼到DDR,需要增加PLL和DDR初始化代碼。其程序流程如圖2所示。

    (2)方案2:重寫(xiě)B(tài)ootLoader代碼。重寫(xiě)B(tài)ootLoader程序代碼,依據(jù)存儲(chǔ)器分段情況進(jìn)行分段加載。首先初始化PLL、EMIF和DDR;然后將應(yīng)用程序代碼搬入內(nèi)部RAM、把協(xié)議棧和用戶(hù)數(shù)據(jù)搬入DDR;最后跳轉(zhuǎn)到C代碼的入口地址開(kāi)始執(zhí)行。其程序流程如圖3所示。
    方案1實(shí)現(xiàn)起來(lái)軟件更改較少,實(shí)現(xiàn)較容易,但需要的Flash存儲(chǔ)器的資源比較多,按照?qǐng)D1所示的分配,0xE4000000-0x810000=0xE37F0000,需要3.8 GB的Flash來(lái)存儲(chǔ)代碼,顯然是不合理的;方案2需要大于60 MB的Flash資源,存儲(chǔ)器資源開(kāi)銷(xiāo)可以接受,但是由于限制在1 KB的程序空間,受在1 KB程序空間內(nèi)要實(shí)現(xiàn)PLL初始化、EMIF初始化、DDR2初始化以及分段拷貝功能空間的限制,代碼優(yōu)化難度巨大。
    由此可見(jiàn),方案1除了對(duì)硬件資源非常浪費(fèi)外,由于加載的無(wú)效代碼量大,加載速度很慢;方案2雖然對(duì)Flash資源的消耗大大降低,啟動(dòng)速度也會(huì)相應(yīng)加快,但是代碼本身的開(kāi)發(fā)難度比較大,而且沒(méi)有可擴(kuò)展性。因此,本文提出三級(jí)加載的方法。
2 三級(jí)加載方案
    三級(jí)加載Flash空間分配如圖4所示,總共需要用到的Flash空間資源為20 MB多。DSP代碼分為三級(jí)結(jié)構(gòu):第一級(jí)是TI公司提供的二次加載BootLoader解決方案;第二級(jí)是3次加載的管理程序manager;第三級(jí)為應(yīng)用程序代碼app。

    (1)第一級(jí)加載
    系統(tǒng)上電后,6455自動(dòng)加載1 KB的BootLoader代碼到0x00800000~0x00800400內(nèi)部RAM中,開(kāi)始執(zhí)行BootLoader代碼。
    (2)第二級(jí)加載
    BootLoader配置EMIF,將manager代碼加載到0x00800400~0x00810000內(nèi)部RAM中,開(kāi)始執(zhí)行manager代碼。BootLoader程序流程如圖5所示。
    (3)第三級(jí)加載
    Manager代碼初始化PLL、EMIF和DDR,接著將應(yīng)用程序代碼搬入內(nèi)部RAM,再把協(xié)議棧和用戶(hù)數(shù)據(jù)搬入DDR,最后跳轉(zhuǎn)到應(yīng)用程序的入口開(kāi)始執(zhí)行,如圖6所示。

 

 

    介紹了一種基于TMS320C6455的大尺寸非連續(xù)的代碼加載方法,較傳統(tǒng)的二級(jí)加載方式有更大的靈活性和更高的Flash利用率。連續(xù)加載只是分段加載的特殊情況(即分段數(shù)為1),該加載方法對(duì)于連續(xù)代碼加載同樣適用。雖然該加載方法是基于C6455設(shè)計(jì)實(shí)現(xiàn)的,但是對(duì)于TI公司的其他型號(hào)DSP也有很好的借鑒作用。這種三級(jí)加載方法已在航空電子系統(tǒng)上得到應(yīng)用,實(shí)踐證明該方法是一種使用可靠的加載方法。
參考文獻(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。