• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 消費電子 > 設計應用 > 面向嵌入式視頻處理平臺的Linux移植

    面向嵌入式視頻處理平臺的Linux移植

    作者: 時間:2010-01-07 來源:網絡 收藏

      3BootLoader的設計

      BootLoader即引導加載程序,是在操作系統內核運行之前運行的一段程序。它建立起操作系統運行的環境,包括初始化硬件、建立存儲空間映射和傳遞給操作系統一些基本的配置參數等。因此,Bootloader是非常重要的組成部分,它獨立于操作系統,必須由用戶自己設計,而且其實現高度依賴于硬件。在系統存儲的空間分配結構中BootLoader、內核啟動參數、內核映像和根文件系統映像的關系如圖4所示。


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


      本系統BootLoader的第1階段設計包括:

      a)關閉看門狗程序,屏蔽所有中斷;

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

      c)初始化外部寄存器;

      d)初始化堆棧指針;

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

      第2階段用C語言編寫,具體步驟如下:

      a)設置通用I/O口參數;

      b)初始化內存映射和內存管理單元;

      c)初始化mtd設備;

      d)復制Flash中的Kernel映像和根文件系統映像到RAM空間中;

      e)跳轉到內核的第1條指令處,跳轉時需要滿足這些條件:R0=0,R1=機器類型ID,R2=啟動參數,同時禁止中斷(IRQ和FIQ),CPU設置為保護模式,關閉MMU和數據Cache。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 翼城县| 玉环县| 靖远县| 土默特左旗| 莱阳市| 石嘴山市| 寻乌县| 衡水市| 湟源县| 白沙| 武宁县| 浮山县| 黄石市| 东平县| 鄯善县| 思茅市| 肇东市| 成武县| 墨玉县| 漳平市| 重庆市| 屯门区| 安康市| 金阳县| 交口县| 故城县| 石渠县| 宁城县| 扬中市| 垣曲县| 民县| 寿阳县| 凌海市| 泸州市| 河间市| 湾仔区| 彰武县| 石门县| 诸暨市| 彩票| 米易县|