前言
開發(fā)嵌入式DSP程序的時(shí)候,最終生成的可執(zhí)行程序格式為.out , .out是TI CCS中一種二進(jìn)制可執(zhí)行程序的格式。在調(diào)試階段,只需要DSP開發(fā)板通過(guò)JTAG仿真器連接到PC上, 在PC端通過(guò)CCS直接將.out下載到DSP芯片的RAM中,點(diǎn)擊Run即可執(zhí)行。
但是,一旦DSP要脫離PC,仿真器, 就不能采用上面下載.out的方式,因?yàn)镽AM的性質(zhì)的掉電丟失的。 這時(shí)候,就需要將生成的程序保存在FLASH芯片中,F(xiàn)lash芯片的掉電不丟失的。下面將完整介紹DSP程序固化的流程。
RAM與ROM,F(xiàn)LASH區(qū)別
RAM與ROM區(qū)別
ROM和RAM指的都是半導(dǎo)體存儲(chǔ)器,ROM是Read Only Memory的縮寫,RAM是Random Access Memory的縮寫。ROM在系統(tǒng)停止供電的時(shí)候仍然可以保持?jǐn)?shù)據(jù),而RAM通常都是在掉電之后就丟失數(shù)據(jù),典型的RAM就是計(jì)算機(jī)的內(nèi)存。
RAM的類型
RAM 有兩大類,一種稱為靜態(tài)RAM(Static RAM/SRAM),SRAM速度非常快,是目前讀寫最快的存儲(chǔ)設(shè)備了,但是它也非常昂貴,所以只在要求很苛刻的地方使用,譬如CPU的一級(jí)緩沖,二級(jí)緩沖。另一種稱為動(dòng)態(tài)RAM(Dynamic RAM/DRAM),DRAM保留數(shù)據(jù)的時(shí)間很短,速度也比SRAM慢,不過(guò)它還是比任何的ROM都要快,但從價(jià)格上來(lái)說(shuō)DRAM相比SRAM要便宜很多,計(jì)算機(jī)內(nèi)存就是DRAM的。
ROM的類型
ROM也有很多種,PROM是可編程的ROM,PROM和EPROM (可擦除可編程ROM)兩者區(qū)別是,PROM是一次性的,也就是軟件灌入后,就無(wú)法修改了,這種是早期的產(chǎn)品,現(xiàn)在已經(jīng)不可能使用了,而EPROM是通過(guò)紫外光的照射擦出原先的程序,是一種通用的存儲(chǔ)器。另外一種EEPROM是通過(guò)電子擦除,價(jià)格很高,寫入時(shí)間很長(zhǎng),寫入很慢。
舉個(gè)例子,手機(jī)軟件一般放在EEPROM中,我們打電話,有些最后撥打的號(hào)碼,暫時(shí)是存在SRAM中的,不是馬上寫入通過(guò)記錄(通話記錄保存在EEPROM中),因?yàn)楫?dāng)時(shí)有很重要工作(通話)要做,如果寫入,漫長(zhǎng)的等待是讓用戶忍無(wú)可忍的。
FLASH芯片
FLASH 存儲(chǔ)器又稱閃存,它結(jié)合了ROM和RAM的長(zhǎng)處,不僅具備電子可擦除可編程(EEPROM)的性能,還不會(huì)斷電丟失數(shù)據(jù)同時(shí)可以快速讀取數(shù)據(jù)(NVRAM 的優(yōu)勢(shì)),U盤和MP3里用的就是這種存儲(chǔ)器。在過(guò)去的20年里,嵌入式系統(tǒng)一直使用ROM(EPROM)作為它們的存儲(chǔ)設(shè)備,然而近年來(lái)Flash全面代替了ROM(EPROM)在嵌入式系統(tǒng)中的地位,用作存儲(chǔ)Bootloader以及操作系統(tǒng)或者程序代碼或者直接當(dāng)硬盤使用(U盤)。
FLASH的分類
目前Flash主要有兩種NOR Flash和NADN Flash
NOR Flash的讀取和我們常見(jiàn)的SDRAM的讀取是一樣,用戶可以直接運(yùn)行裝載在NOR FLASH里面的代碼,這樣可以減少SRAM的容量從而節(jié)約了成本。
NAND Flash沒(méi)有采取內(nèi)存的隨機(jī)讀取技術(shù),它的讀取是以一次讀取一塊的形式來(lái)進(jìn)行的,通常是一次讀取512個(gè)字節(jié),采用這種技術(shù)的Flash比較廉價(jià)。用戶不能直接運(yùn)行NAND Flash上的代碼,因此好多使用NAND Flash的開發(fā)板除了使用NAND Flah以外,還作上了一塊小的NOR Flash來(lái)運(yùn)行啟動(dòng)代碼。(本次固化就是在Nand Flash芯片中)
開發(fā)環(huán)境/工具
- EVM 6657評(píng)估板
- TI XDS200 USB 仿真器
- Flash燒寫工具
- CCS v8
- windows 10
DSP程序啟動(dòng)
DSP啟動(dòng)流程
上電之后,程序指針會(huì)自動(dòng)指向ROM中一個(gè)稱為Bootloader的小程序, 這段程序使得DSP在上電之后進(jìn)行一些初始化操作,然后根據(jù)期間配置的不同選擇從外部存儲(chǔ)器或者主器件中搬移代碼。C66x系統(tǒng)DSP片內(nèi)Bootloader的起始地址固定為0x20B00000
DSP啟動(dòng)方式
為了適應(yīng)不同系統(tǒng)的需求,TI公司的C66x系列支持的自啟動(dòng)模式包括:
- SPI
- I2C
- EMAC
- SRIO
- PCIE
- EMIF16
- Nor Flash
- Nand Flash
具體采用哪種啟動(dòng)方式由BOOTMODE[12:0] 引腳決定,DSP在上電脫離復(fù)位以后會(huì)讀取這些引腳的狀態(tài),Bootloader根據(jù)引腳的值來(lái)選擇相應(yīng)的啟動(dòng)方式。


基于Nand Flash的程序啟動(dòng)

實(shí)驗(yàn)
step1. 準(zhǔn)備好燒寫軟件
- CCS v8
- 待燒寫的.out
- 燒寫工具
首先,在TI官網(wǎng)論壇下載一個(gè)Boot example,包含Nand boot。 EVM板子撥碼開關(guān)撥到No boot模式。


step2: 轉(zhuǎn)換生成的.out
在轉(zhuǎn)換之前,需要進(jìn)行一些配置。

- 設(shè)置mcsdk多核開發(fā)套件的路徑

- rmd文件配置
length需要根據(jù).out的大小調(diào)整 ,其他不用變


配置好之后,運(yùn)行.bat文件,自動(dòng)生成一些文件。nand Flash燒寫需要用到 .dat文件。

step3:將轉(zhuǎn)換之后的.out(.dat)燒寫到Flash芯片中
-
首先,打開一個(gè)工程,進(jìn)入到Debug模式
image.png

-
然后加載燒寫工具 nandwriter.out
image.png

-
將.dat加載到SL2內(nèi)存中,load memory,加載到指定的地址。
image.png



這里內(nèi)存內(nèi)容將寫入的Flash芯片中。
-
點(diǎn)擊run, 將遍歷加載到Expressions窗口
image.png

將dataSizeUint32設(shè)置為.dat 的大小 (10進(jìn)制), 然后程序繼續(xù)自動(dòng)運(yùn)行。 程序自動(dòng)將 0x0c000000起始的內(nèi)容,某個(gè)size的大小搬移到Flash芯片。

這樣Flash芯片就燒寫成功。
step4:重新上電
- 板子撥碼開關(guān)撥到Nand Boot模式
- 上電之后,復(fù)位
這樣,程序就自動(dòng)啟動(dòng)成功。



