前言
開發(fā)嵌入式DSP程序的時候,最終生成的可執(zhí)行程序格式為.out 靶壮, .out是TI CCS中一種二進制可執(zhí)行程序的格式维费。在調(diào)試階段,只需要DSP開發(fā)板通過JTAG仿真器連接到PC上促王, 在PC端通過CCS直接將.out下載到DSP芯片的RAM中犀盟,點擊Run即可執(zhí)行。
但是蝇狼,一旦DSP要脫離PC,仿真器阅畴, 就不能采用上面下載.out的方式,因為RAM的性質(zhì)的掉電丟失的迅耘。 這時候贱枣,就需要將生成的程序保存在FLASH芯片中,F(xiàn)lash芯片的掉電不丟失的颤专。下面將完整介紹DSP程序固化的流程纽哥。
RAM與ROM,F(xiàn)LASH區(qū)別
RAM與ROM區(qū)別
ROM和RAM指的都是半導(dǎo)體存儲器栖秕,ROM是Read Only Memory的縮寫春塌,RAM是Random Access Memory的縮寫。ROM在系統(tǒng)停止供電的時候仍然可以保持?jǐn)?shù)據(jù)簇捍,而RAM通常都是在掉電之后就丟失數(shù)據(jù)只壳,典型的RAM就是計算機的內(nèi)存。
RAM的類型
RAM 有兩大類暑塑,一種稱為靜態(tài)RAM(Static RAM/SRAM)吼句,SRAM速度非常快事格,是目前讀寫最快的存儲設(shè)備了惕艳,但是它也非常昂貴搞隐,所以只在要求很苛刻的地方使用,譬如CPU的一級緩沖尔艇,二級緩沖尔许。另一種稱為動態(tài)RAM(Dynamic RAM/DRAM),DRAM保留數(shù)據(jù)的時間很短终娃,速度也比SRAM慢味廊,不過它還是比任何的ROM都要快,但從價格上來說DRAM相比SRAM要便宜很多棠耕,計算機內(nèi)存就是DRAM的余佛。
ROM的類型
ROM也有很多種,PROM是可編程的ROM窍荧,PROM和EPROM (可擦除可編程ROM)兩者區(qū)別是辉巡,PROM是一次性的,也就是軟件灌入后蕊退,就無法修改了郊楣,這種是早期的產(chǎn)品,現(xiàn)在已經(jīng)不可能使用了瓤荔,而EPROM是通過紫外光的照射擦出原先的程序净蚤,是一種通用的存儲器。另外一種EEPROM是通過電子擦除输硝,價格很高今瀑,寫入時間很長,寫入很慢点把。
舉個例子橘荠,手機軟件一般放在EEPROM中,我們打電話郎逃,有些最后撥打的號碼哥童,暫時是存在SRAM中的,不是馬上寫入通過記錄(通話記錄保存在EEPROM中)衣厘,因為當(dāng)時有很重要工作(通話)要做如蚜,如果寫入,漫長的等待是讓用戶忍無可忍的影暴。
FLASH芯片
FLASH 存儲器又稱閃存错邦,它結(jié)合了ROM和RAM的長處,不僅具備電子可擦除可編程(EEPROM)的性能型宙,還不會斷電丟失數(shù)據(jù)同時可以快速讀取數(shù)據(jù)(NVRAM 的優(yōu)勢)撬呢,U盤和MP3里用的就是這種存儲器。在過去的20年里妆兑,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲設(shè)備魂拦,然而近年來Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位毛仪,用作存儲Bootloader以及操作系統(tǒng)或者程序代碼或者直接當(dāng)硬盤使用(U盤)。
FLASH的分類
目前Flash主要有兩種NOR Flash和NADN Flash
NOR Flash的讀取和我們常見的SDRAM的讀取是一樣芯勘,用戶可以直接運行裝載在NOR FLASH里面的代碼箱靴,這樣可以減少SRAM的容量從而節(jié)約了成本。
NAND Flash沒有采取內(nèi)存的隨機讀取技術(shù)荷愕,它的讀取是以一次讀取一塊的形式來進行的衡怀,通常是一次讀取512個字節(jié),采用這種技術(shù)的Flash比較廉價安疗。用戶不能直接運行NAND Flash上的代碼抛杨,因此好多使用NAND Flash的開發(fā)板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來運行啟動代碼荐类。(本次固化就是在Nand Flash芯片中)
開發(fā)環(huán)境/工具
- EVM 6657評估板
- TI XDS200 USB 仿真器
- Flash燒寫工具
- CCS v8
- windows 10
DSP程序啟動
DSP啟動流程
上電之后怖现,程序指針會自動指向ROM中一個稱為Bootloader的小程序, 這段程序使得DSP在上電之后進行一些初始化操作玉罐,然后根據(jù)期間配置的不同選擇從外部存儲器或者主器件中搬移代碼屈嗤。C66x系統(tǒng)DSP片內(nèi)Bootloader的起始地址固定為0x20B00000
DSP啟動方式
為了適應(yīng)不同系統(tǒng)的需求,TI公司的C66x系列支持的自啟動模式包括:
- SPI
- I2C
- EMAC
- SRIO
- PCIE
- EMIF16
- Nor Flash
- Nand Flash
具體采用哪種啟動方式由BOOTMODE[12:0] 引腳決定吊输,DSP在上電脫離復(fù)位以后會讀取這些引腳的狀態(tài)恢共,Bootloader根據(jù)引腳的值來選擇相應(yīng)的啟動方式。
基于Nand Flash的程序啟動
實驗
step1. 準(zhǔn)備好燒寫軟件
- CCS v8
- 待燒寫的.out
- 燒寫工具
首先璧亚,在TI官網(wǎng)論壇下載一個Boot example,包含Nand boot。 EVM板子撥碼開關(guān)撥到No boot模式脂信。
step2: 轉(zhuǎn)換生成的.out
在轉(zhuǎn)換之前癣蟋,需要進行一些配置。
- 設(shè)置mcsdk多核開發(fā)套件的路徑
- rmd文件配置
length需要根據(jù).out的大小調(diào)整 狰闪,其他不用變
配置好之后疯搅,運行.bat文件,自動生成一些文件埋泵。nand Flash燒寫需要用到 .dat文件幔欧。
step3:將轉(zhuǎn)換之后的.out(.dat)燒寫到Flash芯片中
-
首先,打開一個工程丽声,進入到Debug模式
image.png
-
然后加載燒寫工具 nandwriter.out
image.png
-
將.dat加載到SL2內(nèi)存中礁蔗,load memory,加載到指定的地址。
image.png
這里內(nèi)存內(nèi)容將寫入的Flash芯片中雁社。
-
點擊run, 將遍歷加載到Expressions窗口
image.png
將dataSizeUint32設(shè)置為.dat 的大小 (10進制)浴井, 然后程序繼續(xù)自動運行。 程序自動將 0x0c000000起始的內(nèi)容霉撵,某個size的大小搬移到Flash芯片磺浙。
這樣Flash芯片就燒寫成功洪囤。
step4:重新上電
- 板子撥碼開關(guān)撥到Nand Boot模式
- 上電之后,復(fù)位
這樣撕氧,程序就自動啟動成功瘤缩。