數(shù)字多媒體處理器TMS320DM355啟動(dòng)分析
摘 要: 分析了TI公司的TMS320DM355的啟動(dòng)方式和NAND啟動(dòng)流程,使開(kāi)發(fā)者能夠根據(jù)實(shí)際需求改動(dòng)DVSDK中的UBL與編譯U-Boot,并排除開(kāi)發(fā)過(guò)程中出現(xiàn)的錯(cuò)誤。使開(kāi)發(fā)者通過(guò)各種方式下載操作系統(tǒng)內(nèi)核映像至DM355的Flsah,并建立NFS文件系統(tǒng),從而建立一個(gè)完整的開(kāi)發(fā)環(huán)境。
關(guān)鍵詞: DM355;啟動(dòng)方式;NAND Flash;視頻監(jiān)控
TMS320DM355(以下簡(jiǎn)稱DM355)處理器是TI公司推出的面向便攜高清視頻應(yīng)用的基于ARM9+協(xié)處理器架構(gòu)的新型低成本DaVinci平臺(tái)[1-2],主要應(yīng)用于媒體播放器、數(shù)碼相機(jī)、數(shù)碼相框、IP網(wǎng)絡(luò)攝像機(jī)、視頻嬰兒監(jiān)視器等[3]。該處理器具有獨(dú)特的啟動(dòng)方式,其啟動(dòng)方式的選擇和硬件設(shè)置是開(kāi)發(fā)的關(guān)鍵問(wèn)題之一[4]。本文基于DM355的嵌入式目標(biāo)板和TI公司的DVSDK,介紹了DM355的啟動(dòng)方式設(shè)置、啟動(dòng)并引導(dǎo)U-Boot的過(guò)程。
1 總體啟動(dòng)流程
1.1 啟動(dòng)方式設(shè)置
DM355的ARM可以從異步外部存儲(chǔ)器接口(AEMIF)上的OneNAND或者從ARM的內(nèi)部ROM啟動(dòng),這是由管腳BTSEL[1:0]的配置決定的[5]。BTSEL[1:0]也可以進(jìn)一步設(shè)置ROM啟動(dòng)方式,即在芯片重置之后,除了當(dāng)BTSEL[1:0]=01表明AEMIF已啟動(dòng)外,ARM一定從內(nèi)部ROM的0x00008000處開(kāi)始啟動(dòng),ARM內(nèi)部ROM中的這部分程序稱作ROM Boot Loader(簡(jiǎn)稱RBL)。因是TI公司嵌在DM355的內(nèi)部ROM里面的,用戶不能更改。
BTSEL[1:0]共有如下4種設(shè)置[6]:
(1)BTSEL[1:0]=01時(shí),為AEMIF啟動(dòng)方式,這種模式由硬件控制,啟動(dòng)不包含ARM內(nèi)部ROM(即RBL不運(yùn)行)。在由OneNAND啟動(dòng)的情況下,用戶必須自己在OneNAND的啟動(dòng)頁(yè)中放入必要的啟動(dòng)代碼,這些代碼必須為OneNAND設(shè)備設(shè)置AEMIF模塊。在AEMIF被設(shè)置之后,啟動(dòng)會(huì)緊跟OneNAND啟動(dòng)頁(yè)中的AEMIF管理頁(yè)而繼續(xù)。
(2)BTSEL[1:0]=00時(shí),RBL運(yùn)行,NAND啟動(dòng)。
(3)BTSEL[1:0]=10時(shí),RBL運(yùn)行,MMC/SD啟動(dòng)。
(4)BTSEL[1:0]=11時(shí),RBL運(yùn)行,UART啟動(dòng)。
由此可見(jiàn),不經(jīng)由RBL的啟動(dòng)方式只有BTSEL[1:0]=01一種,而經(jīng)由RBL的啟動(dòng)方式有3種(此時(shí)BTSEL[1:0]≠01)。
當(dāng)芯片被設(shè)置成NAND啟動(dòng)模式時(shí),如果啟動(dòng)失敗,則DM355會(huì)嘗試MMC/SD 啟動(dòng);如果MMC/SD 啟動(dòng)失敗,則DM355會(huì)再次嘗試這種啟動(dòng)方式;如果UART啟動(dòng)失敗,DM355會(huì)再次嘗試這種啟動(dòng)方式。
DM355的總體啟動(dòng)流程如圖1所示。
NAND啟動(dòng)與OneNAND啟動(dòng)適用于系統(tǒng)參數(shù)和功能固定的應(yīng)用場(chǎng)合,二者在價(jià)格和讀寫速度上的差異也使得設(shè)計(jì)者可以根據(jù)需求做出權(quán)衡。而MMC/SD啟動(dòng)適用于系統(tǒng)參數(shù)和功能經(jīng)常需要改變的場(chǎng)合。UART啟動(dòng)一般應(yīng)用于調(diào)試階段而非實(shí)際應(yīng)用。
在設(shè)計(jì)系統(tǒng)選擇啟動(dòng)方式時(shí),可以根據(jù)各種方式的特點(diǎn),選擇合適的方式啟動(dòng)系統(tǒng)。
1.2 啟動(dòng)中的狀態(tài)標(biāo)志
DM355的RBL會(huì)用GIO61來(lái)指示啟動(dòng)狀態(tài)(可以用來(lái)驅(qū)動(dòng)LED),這可以幫助開(kāi)發(fā)者更直觀地觀察系統(tǒng)的狀態(tài)。重啟之后,GIO61被初始化為低電平。
(1)如系統(tǒng)上電時(shí)通過(guò)NAND啟動(dòng),未成功后會(huì)嘗試通過(guò)MMC/SD啟動(dòng),在此期間GIO61以4 Hz的頻率切換高低電平。
(2)如系統(tǒng)被上電時(shí)通過(guò)MMC/SD啟動(dòng),在嘗試啟動(dòng)期間GIO61以4 Hz的頻率切換高低電平。
(3)如系統(tǒng)上電時(shí)通過(guò)UART啟動(dòng),在嘗試啟動(dòng)期間GIO61以2 Hz的頻率切換高低電平。
當(dāng)啟動(dòng)成功之后,在程序被移交給UBL之前,GIO61被設(shè)置為高電平。其過(guò)程如圖2所示。