《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于TMS320C6455的大尺寸非連續代碼加載方法
基于TMS320C6455的大尺寸非連續代碼加載方法
來源:電子技術應用2012年第11期
邵 龍1,劉金山2
1.中國電子科技集團公司第十研究所,四川 成都610036; 2.中國人民解放軍95899部隊,北京100085
摘要: 在分析傳統加載方法加載大尺寸非連續代碼存在的缺陷的基礎上,提出了三級加載方法,并詳細介紹了該方法在TMS320C6455平臺上的設計與實現。三級加載方法很好地解決了大尺寸非連續的代碼加載中Flash存儲空間利用率低、代碼通用性差的問題,已在重大工程項目中得到應用。
中圖分類號: TP399
文獻標識碼: B
文章編號: 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(以下簡寫為C6455)是德州儀器(TI)公司的高性能數字信號處理芯片(DSP),在我國很多行業都得到了大規模的應用。在絕大多數應用中,都需要將C6455應用程序燒寫到Flash中以實現系統自啟動。系統上電后,C6455會自動將Flash起始位置的1 KB的代碼加載到內部RAM[1],而對于C6455這種高性能的DSP,應用程序代碼會遠遠大于1 KB,為此,TI公司提供了二級加載的解決方案。二級加載就是在前1 KB空間中存儲EMIF配置和程序拷貝代碼,用于將應用程序從片外Flash搬移到片內RAM或片外RAM。搬完后,再跳轉到應用程序的起始地址,執行應用程序[2]。二級加載解決大尺寸應用程序代碼的加載問題,主要應用于程序代碼在RAM中的地址連續或者接近連續的情況。

1 新問題
    在實際的典型應用中,C6455將外接64 MB的DDR,其基地址為0xE0000000。應用程序一部分置于內部RAM中,還有一部分(如通信協議)則置于DDR中,如圖1所示。

    應用程序代碼存放在0x00810000~0x009FFFFF的片內RAM中,協議棧的堆(HEAP)空間則放在0xE0000000~0xE27FFFFF的DDR中,協議棧代碼空間被分配在0XE2800000~0XE3FFFFFF的DDR內。按照TI公司提供的二級加載,理論上可以有兩種實現方案:
    (1)方案1:直接移植TI的 BootLoader的示例程序。TI公司的BootLoader示例程序采用匯編代碼編寫,主要分為EMIF初始化、代碼搬移和程序跳轉三部分。代碼搬移是從Flash搬移到片內RAM,而本應用還需要搬移一部分代碼到DDR,需要增加PLL和DDR初始化代碼。其程序流程如圖2所示。

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

    (1)第一級加載
    系統上電后,6455自動加載1 KB的BootLoader代碼到0x00800000~0x00800400內部RAM中,開始執行BootLoader代碼。
    (2)第二級加載
    BootLoader配置EMIF,將manager代碼加載到0x00800400~0x00810000內部RAM中,開始執行manager代碼。BootLoader程序流程如圖5所示。
    (3)第三級加載
    Manager代碼初始化PLL、EMIF和DDR,接著將應用程序代碼搬入內部RAM,再把協議棧和用戶數據搬入DDR,最后跳轉到應用程序的入口開始執行,如圖6所示。

 

 

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产综合在线观看| 日韩欧美亚洲精品| 在线观看国产三级| 国精产品一二二区视在线| 在线视频欧美日韩| 成人毛片视频免费网站观看| 学校触犯×ofthedead| 国精品无码一区二区三区在线蜜臀| 国产成人免费高清激情明星| 和几个女同事的激情性事| 国产97在线观看| 免费毛片在线视频| 亚洲成aⅴ人片在线观| 国产福利第一页| 久久国产精品偷| 欧美高清色视频在线播放| 四虎成人精品免费影院| 四虎在线视频免费观看视频| 天天干天天拍天天操| 亚洲国产日韩女人aaaaaa毛片在线| 精品视频九九九| 国产成人福利在线| 97色在线观看| 成**人免费一级毛片| 亚洲欧洲无卡二区视頻| 美女张开腿让男人桶爽动漫视频| 国产猛男猛女超爽免费视频| 99在线视频免费| 少妇高潮喷水久久久久久久久久| 久久强奷乱码老熟女| 欧美国产日本高清不卡| 人人妻人人澡人人爽人人dvd| 美女黄18以下禁止观看| 国产情侣真实露脸在线| 三上悠亚电影全集免费| 日韩精品电影在线观看| 亚洲日韩精品无码专区网址| 白浆视频在线观看| 国产**毛片一级视频| 黑人边吃奶边扎下面激情视频 | 222www免费视频|