《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲成a人片77777群色| 国产乱女乱子视频在线播放| 拨开内裤直接进入| 日本簧片在线观看| 无码人妻丰满熟妇区毛片| 无码色偷偷亚洲国内自拍| 日韩亚洲人成网站| 日本精品高清一区二区2021| 日韩精品无码一区二区三区四区| 日韩视频免费看| 最近中文字幕完整电影| 日韩国产成人精品视频| 曰批免费视频播放免费 | 一级做a爰片性色毛片黄书| 中文字幕电影在线| 久久精品国产亚洲AV无码麻豆| 久久久久香蕉视频| 一级爱爱片一级毛片-一毛| 69视频在线看| 色噜噜狠狠狠狠色综合久| 欧美美女黄色片| 无主之花2025韩语中字| 国产调教视频在线观看| 四虎精品影院在线观看视频| 亚洲国产一区在线观看| 久久91精品国产91| 无码精品久久久天天影视| 快点使劲舒服爽视频| 国产精品99久久久久久www| 北条麻妃中文字幕在线观看| 亚洲AV无码乱码麻豆精品国产| 一进一出抽搐呻吟| 日本人强jizzjizz| 福利在线小视频| 明星造梦一区二区| 国产美女精品人人做人人爽| 午夜精品一区二区三区在线观看 | 激情小说在线视频| 无码精品日韩中文字幕| 国产精品视频一区二区三区四 | 特级黄色毛片视频|