達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動過程
關(guān)于達(dá)芬奇DMSoC的復(fù)位類型、觸發(fā)源及對應(yīng)的復(fù)位對象請參考表2。
表2 DMSoC的復(fù)位類型。
達(dá)芬奇DMSoC初始化流程
> 達(dá)芬奇DMSoC復(fù)位狀態(tài)
DM644x 上電復(fù)位后,芯片的絕大部分模塊都處于不工作狀態(tài)。鎖相環(huán)PLL處于旁路(Bypass)模式;DSP子系統(tǒng)的狀態(tài)取決于DSP_BT引腳;UART1和 UART2也處于不工作狀態(tài),UART0的狀態(tài)取決于BTSEL引腳(如果BTSEL=11,UART0工作);EMIFA處于工作狀態(tài),其數(shù)據(jù)總線寬度由EM_WIDTH決定,地址總線寬度由AEAW決定;芯片的大部分引腳都被配置為GPIO引腳。引腳復(fù)用通過寄存器PINMUX0和PINMUX1控制。
> 達(dá)芬奇DMSoC初始化順序
(1)DMSoC復(fù)位。芯片的配置由PSC決定,取決于BTSEL[0-3]、EM_WIDTH、AEWA和DSP_BT的狀態(tài)。
(2)ROM boot loader(如果被選)。NAND或者UART0的初始化。
(3)引導(dǎo)加載(Boot-loading)。以U-boot為例,①使能電源域:DDR2和DSP;②設(shè)置時鐘頻率(ARM、DSP和DDR2時鐘的乘除系數(shù));③設(shè)置引腳復(fù)用控制器;④設(shè)置ARM引導(dǎo)啟動操作系統(tǒng)。
(4)操作系統(tǒng)啟動。以Linux為例,①初始化ARM;②初始化硬件系統(tǒng);③初始化Linux環(huán)境。
> U-boot初始化順序
通常情況下,ARM Linux要求boot loader中有少許的初始化。目前TI的DVEVM使用的是U-boot-1.1.3。U-boot代碼中首先運行的是u- boot/cpu/arm926ejs/start.S,芯片和一些DVEVM板的硬件配置主要在u- boot/board/davinci/platform.S和davinci.c中完成。其中u- boot/board/davinci/platform.S設(shè)置最基本的系統(tǒng)硬件環(huán)境,包括系統(tǒng)PLL及DDR2的初始化、PSC的配置及使能 UART0、AEMIF等硬件模塊。有些工程師設(shè)計的達(dá)芬奇板可能用到了和DVEVM不同的Flash,那么就要根據(jù)用到的Flash參數(shù)修改u- boot/board/davinci/flash.c。另外,關(guān)于DM644x支持的NAND Flash ID,請參考TMS320DM644x DMSoC的相關(guān)文檔。
以NOR Flash boot為例,DVEVM u-boot初始化下列的達(dá)芬奇DMSoC內(nèi)容:
(1)關(guān)中斷和MMU。
(2)使能DSP電源域(PTCMD),把DSP置為復(fù)位狀態(tài)。
(3)初始化PLL,使能DDR2,軟復(fù)位DDR2并且重新使能DDR2,使其脫離復(fù)位狀態(tài)。
(4)初始化系統(tǒng)PLL。
(5)配置AEMIF引腳為NOR Flash接口。
(6)VTP校準(zhǔn)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論