陳發(fā)堂 肖冬冬 薛堯
【摘要】 軟件在DSP上開發(fā)成熟后,都需要脫離仿真器運行,實現(xiàn)自動加載功能。眾所周知,多核DSP的啟動與單核啟動區(qū)別很大,涉及到二級引導和核間中斷的問題,針 對于此,本文基于TMS320C6670 四核DSP,對多核程序加載進行了研究與實現(xiàn)。為了快速生成特定格式的多核鏡像,設計了一系列TI工具鏈用于添加SPI啟動參數(shù)表、DDR3啟動表、程序入口地址以及完成程序內容格式的轉換,最終實現(xiàn)了DSP的SPI Nor flash 多核啟動
【關鍵詞】 多核啟動 數(shù)字信號處理器 核間中斷 啟動表
一、引言
在DSP程序的調試階段,可執(zhí)行文件存放在主機的硬盤上,調試時,由JTAG仿真器將可執(zhí)行代碼加載到DSP的內存中調試。但是,當軟件成熟之后準備上市時,嵌入式設備要脫離調試用的PC獨立工作。這時,可以根據(jù)應用以及系統(tǒng)設計不同,選用不同的啟動(boot)模式,將可執(zhí)行代碼加載到DSP的內部RAM中運行[1]。
本文主要介紹了c66x系列DSP多核啟動的若干關鍵技術與基于Nor flash的SPI接口的加載原理,并設計了一系列工具來實現(xiàn)多核啟動。
最終提供一個方便易行的基于工具鏈使用的多核加載方案。該方案很好地解決了c66x 的多核加載,具有一定的參考意義。
二、多核啟動的若干關鍵技術
2.1啟動參數(shù)表
對于C66x系列DSP,固化在ROM上的BootLoader程序會初始化core0最后的0xD23F 個字節(jié),存儲啟動過程中的配置信息,即啟動參數(shù)表,決定啟動的流程[3]。
2.2 Boot magic 地址
每個核都有一個Boot magic地址,存放環(huán)境入口點_c_ int00()的地址。對于多核DSP,存在局部地址和全局地址之分,每個核的Boot magic地址為本地L2地址的最后一個字。當檢測到Boot magic 地址為0時,核處于空閑態(tài),直到地址值不為0時,相應核跳出空閑態(tài),轉到Boot magic 地址處執(zhí)行應用程序。
三、TMS320C6670多核啟動原理
多核啟動一般都需要進行二次啟動,在啟動設計過程之前,需要將啟動代碼寫入片外ROM的前1KB內存中,程序代碼寫入片外ROM的1KB之后的內存。由于只有核0具有執(zhí)行一級引導的權限,在啟動過程中,核0負責程序代碼加載,其它二級核都執(zhí)行空指令,處于等待中斷的狀態(tài)。
四、基于SPI NOR FLASH的多核啟動實現(xiàn)
4.1多核鏡像生成
在CCSv5 集成開發(fā)壞境下,多核DSP的每個
核經(jīng)過編譯鏈接后都會生成一個獨立的.out可執(zhí)行文件。該文件包含重定位、符號表等一系列輔助信息,格式解析復雜,一般不直接燒寫到Flash上,而是讓其經(jīng)過一系列工具鏈的轉換,刷選掉無用信息,保留有效信息。
多核鏡像由啟動參數(shù)表和啟動數(shù)據(jù)兩部分組成,其中,啟動參數(shù)表為Boot Loader提供了當前啟動需要知道的一些信息。通過工具鏈的使用,將啟動參數(shù)表放置于啟動數(shù)據(jù)的前面,從而構成一個完整的多核鏡像。C6670多核鏡像生成流程如圖1所示。
4.2 多核鏡像燒寫
對于多核鏡像的燒寫,我們使用TI提供的MCSDK下的Nor-Writer程序。Nor-Writer工程中有個nor_writer_input.txt文檔,當我們把多核鏡像.dat文件放到Nor-Writer工程目錄下后,我們只需將filen_name改成我們需要燒寫的鏡像名,start_addr改成DDR開始運行的地址,然后運行程序,便可實現(xiàn)多核鏡像的燒寫。
五、結論
本文基于TI的4核DSP TMS320C6670,對多核啟動原理進行了深入研究,并給出了一種基于工具鏈使用的SPI多核啟動設計與實現(xiàn)。該研究使得復雜的多核啟動過程清晰明了,工具鏈的使用也大大降低了開發(fā)難度,對多核啟動的開發(fā)可以提供一定的參考。
參 考 文 獻
[1] 牛金海.TMS320C66x KeyStone 架構多核DSP入門與實例精解[M]. 上海:上海交通大學出版社,2014.
[2] 陶永燕.基于TI C66 多核 DSP 技術的研究與應用[D].北京:北京郵電大學,2012.
[3] 蘇保禹.基于TI-C6678的多核DSP圖像處理系統(tǒng)研究[D].中國科學院研究生院(光電技術研究所), 2014.