新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 面向嵌入式視頻處理平臺(tái)的Linux移植

面向嵌入式視頻處理平臺(tái)的Linux移植

作者: 時(shí)間:2010-01-07 來(lái)源:網(wǎng)絡(luò) 收藏

  3BootLoader的設(shè)計(jì)

  BootLoader即引導(dǎo)加載程序,是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段程序。它建立起操作系統(tǒng)運(yùn)行的環(huán)境,包括初始化硬件、建立存儲(chǔ)空間映射和傳遞給操作系統(tǒng)一些基本的配置參數(shù)等。因此,Bootloader是非常重要的組成部分,它獨(dú)立于操作系統(tǒng),必須由用戶自己設(shè)計(jì),而且其實(shí)現(xiàn)高度依賴于硬件。在系統(tǒng)存儲(chǔ)的空間分配結(jié)構(gòu)中BootLoader、內(nèi)核啟動(dòng)參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的關(guān)系如圖4所示。


  BootLoader的作用是正確地調(diào)用內(nèi)核來(lái)執(zhí)行。系統(tǒng)開(kāi)機(jī)后,執(zhí)行的第1條指令是從Flash的0x00地址開(kāi)始的,BootLoader 程序就是放在此。由于它是直接操作硬件且依據(jù)硬件環(huán)境不同而代碼不同,所以適合用匯編語(yǔ)言寫(xiě),以達(dá)到短小精悍執(zhí)行效率高的目的;內(nèi)核從Flash復(fù)制到 SDRAM時(shí),采用C語(yǔ)言實(shí)現(xiàn),能實(shí)現(xiàn)較復(fù)雜的功能,因此BootLoader的設(shè)計(jì)分為兩個(gè)階段。用匯編語(yǔ)言實(shí)現(xiàn)的放在第1階段,主要完成硬件初始化,設(shè)置SDRAM,然后把Boot-Loader從Flash復(fù)制到SDRAM的起始地址,即2M處,最后內(nèi)存重映射,F(xiàn)lash地址從0x00- 0xlff映射成0x1000000-0x11fff,SDRAM地址0x200000-0xllfff映射成0x00-0xfff,至此控制權(quán)交給了用 C語(yǔ)言實(shí)現(xiàn)的loaderkernel()函數(shù),就進(jìn)入了第2階段。第2階段是用C語(yǔ)言實(shí)現(xiàn)的,它主要完成內(nèi)核從Flash到SDRAM的復(fù)制,然后控制權(quán)交給Kernel,流程如圖5所示。這樣設(shè)計(jì)代碼會(huì)具有很好的可讀性和可性。


  本系統(tǒng)BootLoader的第1階段設(shè)計(jì)包括:

  a)關(guān)閉看門(mén)狗程序,屏蔽所有中斷;

  b)設(shè)置器時(shí)鐘和工作頻率,TMS320-DM*6中ARM9的工作頻率為300 MHz;

  c)初始化外部寄存器;

  d)初始化堆棧指針;

  e)復(fù)制BootLoader的第2階段到RAM空間中,使用一條跳轉(zhuǎn)語(yǔ)句跳轉(zhuǎn)到第2階段的C程序如入口處。

  第2階段用C語(yǔ)言編寫(xiě),具體步驟如下:

  a)設(shè)置通用I/O口參數(shù);

  b)初始化內(nèi)存映射和內(nèi)存管理單元;

  c)初始化mtd設(shè)備;

  d)復(fù)制Flash中的Kernel映像和根文件系統(tǒng)映像到RAM空間中;

  e)跳轉(zhuǎn)到內(nèi)核的第1條指令處,跳轉(zhuǎn)時(shí)需要滿足這些條件:R0=0,R1=機(jī)器類(lèi)型ID,R2=啟動(dòng)參數(shù),同時(shí)禁止中斷(IRQ和FIQ),CPU設(shè)置為保護(hù)模式,關(guān)閉MMU和數(shù)據(jù)Cache。

linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉