1.前言
通常了解一款芯片,我們最開始從它的電特性描述出發(fā),隨后看其外設(shè)、存儲、時鐘等系統(tǒng)基本框架。我相信大家拿到一款芯片之后第一件事就是去查閱其數(shù)據(jù)手冊,對芯片特性有個初步了解。
很多芯片開發(fā)者在了解芯片特性之后,會直接拷貝官方提供的例程進(jìn)行調(diào)試,之后慢慢熟悉芯片,變成開發(fā)者模式。在這過程中,很多開發(fā)者往往忽略了一個重要的步驟,那就是熟悉芯片啟動原理,所以我們今天將DSP28335這款芯片的啟動原理與大家分享。
2.上電復(fù)位
顛覆我們感性認(rèn)識的是,芯片上電過程不是一個瞬時過程,而是 爬坡過程 ,也就是說芯片上電也是需要時間的。
在了解芯片基本特性之后,我們清晰的知道一般芯片都有上電復(fù)位模塊(POR),也可以稱為上電延時復(fù)位,其作用是通過延時器件在上電電壓爬坡過程中把芯片鎖定在復(fù)位狀態(tài),保證芯片模擬模塊和數(shù)字模塊初始化至已知狀態(tài)再啟動芯片。
當(dāng)電壓逐漸增大,直到達(dá)到閾值電壓時,上電復(fù)位電路會釋放內(nèi)部復(fù)位信號。在其他必要條件充足的情況下,芯片開始啟動。
3.BOOT ROM
BOOT ROM是芯片內(nèi)部存儲器中固化好的一塊只讀存儲區(qū),用來存放引導(dǎo)程序。
BOOT ROM在芯片內(nèi)部存儲器中地址0x3FE000-x3FFFFF如上圖所示。
上圖是BOOT ROM中按功能分類的段地址存儲區(qū)。
CPU Vector Table,此功能區(qū)在VMAP = 1 ,ENPIE = 0的情況下使用。
再完成芯片引導(dǎo)程序后,此功能區(qū)其他部分被用來存放中斷向量表。
4.啟動過程
芯片上電完成后,開始運(yùn)行程序。首先PC指針指向CPU Vector Table中的RESET(地址:0xFFFC0)。
通過觀察CMD文件中的RESET地址,我們發(fā)現(xiàn)此地址存放著.reset,通過訪問存儲區(qū)中翻譯成匯編語言的代碼,這里存放著一條跳轉(zhuǎn)指令。芯片復(fù)位后第二步,跳轉(zhuǎn)到InitBoot函數(shù)入口地址,執(zhí)行InitBoot函數(shù)。
在InitBoot函數(shù)中,對器件模式、地址進(jìn)行選擇,還對某些功能進(jìn)行初始化。最關(guān)鍵的是調(diào)用了SelectBootMode這個函數(shù),這個函數(shù)通過BOOT引腳狀態(tài)來決定通過哪種方式引導(dǎo)程序,接下來我們一起走進(jìn)SelectBootMode。
DSP28335InitBoot中的SelectBootMode是通過讀取4個IO引腳的狀態(tài)決定程序引導(dǎo)方式。
如上圖所示定義16種狀態(tài)。
在引導(dǎo)方式上可以分為兩大類,一類是進(jìn)行ADC校準(zhǔn),一類是不進(jìn)行ADC校準(zhǔn)。
SelectBootMode首先依據(jù)讀取到的引腳狀態(tài)判斷是否是不進(jìn)行ADC校準(zhǔn),不校準(zhǔn)直接跳過后續(xù)程序,將讀取到的引導(dǎo)模式的引導(dǎo)函數(shù)入口地址返回。
若需要ADC校準(zhǔn),則往下執(zhí)行ADC校準(zhǔn)。
校準(zhǔn)后再判斷以哪種方式引導(dǎo),并將引導(dǎo)函數(shù)入口地址返回。
返回后在InitBoot中將引導(dǎo)函數(shù)入口地址存入ACC,再將ACC賦予PC退出InitBoot,開始運(yùn)行用戶程序。
一般我們將程序引導(dǎo)至FLASH(地址:0x33FFF6)。
通過工程下的CMD文件可發(fā)現(xiàn)0x33FFF6中存放著codestart函數(shù),所以緊接著運(yùn)行codestart函數(shù)。
codestart函數(shù)中禁止看門狗,再調(diào)用RTS中的c_int00函數(shù)。
c_int00函數(shù)中為C語言的運(yùn)行搭建運(yùn)行環(huán)境,然后跳轉(zhuǎn)至main函數(shù),來到C語言的世界。
5.總結(jié)
以上是DSP28335芯片上電到運(yùn)行至main函數(shù)的基本過程,其基本流程可查閱芯片技術(shù)參考手冊第二章,流程圖如下圖所示。
以上是本期全部內(nèi)容,那么現(xiàn)在芯片就可以正常運(yùn)行、萬事大吉了嗎?
當(dāng)然不是,芯片啟動后還需對芯片進(jìn)行一系列初始化配置,那么這又是怎樣一個過程呢?
-
芯片
+關(guān)注
關(guān)注
457文章
51291瀏覽量
427859 -
存儲器
+關(guān)注
關(guān)注
38文章
7531瀏覽量
164420 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63024 -
Boot
+關(guān)注
關(guān)注
0文章
150瀏覽量
35969 -
DSP28335
+關(guān)注
關(guān)注
22文章
59瀏覽量
40797
發(fā)布評論請先 登錄
相關(guān)推薦
dsp28335 SPI啟動方式不啟動
dsp28335如何入門:程序設(shè)計步驟
dsp28335開發(fā)板中文資料匯總(dsp28335最小系統(tǒng)_引腳圖_封裝_初始化程序)
![<b class='flag-5'>dsp28335</b>開發(fā)板中文資料匯總(<b class='flag-5'>dsp28335</b>最小系統(tǒng)_引腳圖_封裝_初始化程序)](https://file.elecfans.com/web1/M00/51/72/pIYBAFsGicKAK9UyAACKFy5XtpA011.jpg)
使用DSP28335控制電機(jī)的資料合集免費(fèi)下載
![使用<b class='flag-5'>DSP28335</b>控制電機(jī)的資料合集免費(fèi)下載](https://file.elecfans.com/web1/M00/BC/72/o4YBAF7CN5aADihWAACrPtAm9nQ846.png)
DSP28335學(xué)習(xí)——系統(tǒng)初始化
![<b class='flag-5'>DSP28335</b><b class='flag-5'>學(xué)習(xí)</b>——系統(tǒng)初始化](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DSP28335學(xué)習(xí)筆記(3):InitSysCtrl
![<b class='flag-5'>DSP28335</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(3):InitSysCtrl](https://file1.elecfans.com/web2/M00/8B/E0/wKgaomShK3aAKlGzAAFqxsPMq4I958.jpg)
DSP28335學(xué)習(xí)筆記(5):GPIO介紹及使用
![<b class='flag-5'>DSP28335</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(5):GPIO介紹及使用](https://file1.elecfans.com/web2/M00/8B/DF/wKgZomShLCiAF6aiAAKwCiQBfZw272.jpg)
研旭DSP28335實(shí)用版-硬件測評
![研旭<b class='flag-5'>DSP28335</b>實(shí)用版-硬件測評](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論