大容量無(wú)線(xiàn)傳輸技術(shù)中DSP的啟動(dòng)方法
2.2 編寫(xiě)Secondary bootloader 代碼
對于C6416,外部存儲器接口(EMIF)需要正確配置以后才可以訪(fǎng)問(wèn)外部存儲器件。在這 項工作完成后,二級bootloader 應該將所 有的初始化段從它們的load 地址拷貝到run 地址, 之后再跳轉到_c_int00,也即是程序入口點(diǎn)。Secondary Bootloader 用匯編語(yǔ)言編寫(xiě),因 為此時(shí)C 環(huán)境尚未建立。
二級bootloader 必須知道所有初始化段的大小,在Flash 中存儲的位置以及應該被加 載到何處才能進(jìn)行正確的拷貝。事實(shí)上,二級bootloader 通過(guò)讀取段拷貝表獲得上述信息。 本文第三部分詳細說(shuō)明了有關(guān)段拷貝表的內容。完成二級bootloader 代碼的編寫(xiě)后,應將它添加入工程,與工程的其他代碼一同編譯鏈接生成.out 文件。
2.3 轉換目標文件的格式
編譯鏈接生成的是.out 格式文件,然而Flash 一般接收的是ASCII 格式的文件。CCS 附帶的工具hex conversion utility 可將.out 文件轉換為ASCII 格式的.hex 文件,Hex6x 以命令行文件的形式執行。Hex 命令行文件中,首先指明輸入文件(.out),輸出文件的格式和ROM 的大小及類(lèi)型,以及哪些段需要被放在ROM 中。一個(gè)Hex 命令行文件的例子如下所示(注釋內容用“/*”和“*/”括起):


2.4 將程序燒寫(xiě)進(jìn)Flash
將2.3 節生成的ASCII 文件燒寫(xiě)進(jìn)Flash 可以使用CCS 自帶的FlashBurn 工具。 FlashBurn 是一個(gè)帶圖形界面的軟件,它首先將一個(gè)稱(chēng)作FlashBurn Target Component (FBTC) 的程序下載到DSP 內存中,通過(guò)與FBTC 的實(shí)時(shí)數據交換完成對Flash 的擦除編程等操作。 針對不同的硬件(DSP,Flash 型號)修改FBTC 是該方法的關(guān)鍵。所需修改處包括Flash 的基地址,大小,及讀寫(xiě)命令字等。
3 段拷貝表
二級bootloader 使用一個(gè)段拷貝表(section copy table)進(jìn)行段的拷貝。段拷貝表包 含每個(gè)需要拷貝的段的必要信息,如段的load 地址,段的run 地址,段的大小。段拷貝表被插入在secondary bootloader 的末尾。
生成段拷貝表的方法有兩種:
1) 使用 hex conversion utility 的-boot 選項 在2.3 節中我們討論了程序文件格式的轉換和hex 命令行文件,事實(shí)上Code Composer Studio 自帶的工具hex conversion utility 提供了一種更為方便的生成段拷貝表的方法, 只要在hex 命令行文件中使用一些特殊的選項即可。特殊的選項有–boot, ?bootorg 和 –bootsection,這三個(gè)選項的含義分別如下:
-boot 使用該選項時(shí)hex conversion utility 將自動(dòng)轉換所有初始化段的格式
-bootorg 指明段拷貝表的地址
-bootsection 指明二級bootloader 所在的段的名稱(chēng)
2) 使用 linker 選項(LOAD_START,RUN_START,SIZE)
涉及段拷貝表的生成的有三個(gè)選項:LOAD_START,RUN_START 和SIZE,可分別獲得一個(gè)段的駐留地址,運行地址和大小。例如下列代碼可獲得text 段的駐留地址(存于_text_ld_start 中),運行地址(_text_rn_start)和段的大?。ù嬗赺text_size)
.text : load = FLASH_REST, run = IRAM
LOAD_START(_text_ld_start),
RUN_START(_text_rn_start),
SIZE(_text_size)
4 結束語(yǔ)
本文針對在極低譜密度,高頻譜利用率的大容量無(wú)線(xiàn)傳輸技術(shù)研究中C6000 系列DSP 的應用程序大于1K 字節的情況,提出了一種使用二級bootloader 從Flash 啟動(dòng)DSP 的方法。 該方法可應用于采用了C6000 系列DSP 的嵌入式系統中,不需要額外的Flash 編程器,具有 廣泛的適用性。
本文作者創(chuàng )新點(diǎn):在二級bootloader 中引入段拷貝表用以控制程序加載過(guò)程,并利用 CCS 自身的編譯功能獲取段拷貝表的內容,該方法可提高效率且準確性高。本文引用地址:http://dyxdggzs.com/article/148522.htm
評論