<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于XIP技術(shù)的ARM Linux系統的研究與移植

基于XIP技術(shù)的ARM Linux系統的研究與移植

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

  3.3 Bootloader 的修改

  Bootloader 分為兩個(gè)階段,第1 階段采用匯編語(yǔ)言實(shí)現。第2 階段采用C 語(yǔ)言實(shí)現。除了進(jìn)行普通Bootloader 所需的片級和板級初始化之外,針對內核XIP 執行方式所做的主要工作有以下2 個(gè):

  1:通過(guò)查看體系Makefile 得到XIP 方式的DATAADDR 和TEXTADDR。

  2:建立初始頁(yè)表時(shí),為.data 和.bss 段建立好3MB 連續空間以存放xipImage。

  4 基于XIP 的 Linux 內核移植

  本文采用的標準 Linux 內核2.6.12 版本不支持在XSBASE255 上直接運行,需要根據開(kāi)發(fā)板硬件體系結構進(jìn)行相關(guān)移植和訂制裁減工作。

  4.1 內核鏈接腳本

  生成內核映像的鏈接腳本是在 arch/arm/kernel/vmlinux.lds 中,而vmlinux.lds 是由同目錄下的vmlinux.lds.S 生成,查看腳本內容,可以獲知內核映像各節的虛擬地址取決于內核符號TEXTADDR和DATAADDR,以及各節的大小。對于xipImage,其.init,.text 和__ext_table都是在NOR Flash 上,只有.data 節.bss 節在主存上,因而根據配置過(guò)程中設置的CONFIG_XIP_PHYS_ADDR 值,設置TEXTADDR 為0xbf000000,而DATAADDR 則設置為0xC0008000,在內核的CPU 片級初始化過(guò)程中的頁(yè)表建立過(guò)程中,TEXTADDR 指向NORFlash,而DATAADDR 指向主存SDRAM 中,把.init 段鏈接到.data 段之前,拷貝到SDRAM中,執行完畢后,回收這部分主存,而內核的.text 段以Kernel XIP 方式運行[4][5]。

  4.2 移植源代碼

  下面闡述在 XSBase255 開(kāi)發(fā)板上以XIP 運行內核的移植過(guò)程[6]。

  4.2.1 添加機器平臺支持、目錄框架及內核配置的支持

  4.2.2 源代碼文件移植,為實(shí)現XIP,在arch/arm/mach-pxa/Makefile.boot 中定義內核映像text節的物理地址,即ZRELADDR 的地址值 zreladdr-y := 0xa0008000

  4.2.3 閃存分區的移植

  本文采用的是 NOR Flash,根據開(kāi)發(fā)板上閃存的起始地址和大小劃分為Bootloader,Kernel , Rootfs 等四個(gè)不同部分。其初始地址和大小分別分Persistant storage 0x01000000-0x02000000, Initial ramdisk image 0x00300000-0x01000000,Kernel Image0x00020000-0x00300000 ,Bootloader 0x00000000-0x00020000

  4.3 配置內核

  根據開(kāi)發(fā)板移植好特定代碼后,本節對內核進(jìn)行配置,主要通過(guò)make menuconfig 命令啟動(dòng)的圖形交互界面進(jìn)行。

  4.3.1 指定內核CPU 體系和交叉編譯器及選擇系統類(lèi)型

  4.3.2 啟動(dòng)X(jué)IP 支持

  在菜單 Boot options 中,選中Kernel Execute-In-Place from rom,并設置好XIP 內核的物理位置0x00380000。

  4.3.3 設置啟動(dòng)參數

  同樣在 Boot options 中,設置啟動(dòng)參數,如圖2 所示。

  4.3.4 選擇串口驅動(dòng)和控制臺驅動(dòng)

  4.3.5 啟動(dòng)MTD 和NOR Flash 分區至此內核配置完畢,使用 make xipImage,獲得XIP 內核映像。

  5 文件系統的制作

  為了支持 XIP,需要選擇Linear CRAMFS 作為根文件系統。系統使用過(guò)程中的其他需要,可以采用其他類(lèi)型的文件系統,如系統的臨時(shí)文件可以采用RAMFS/TMPFS,系統中可修改的配置數據可以采用JFFS2 文件系統掛載。最終定制的文件系統類(lèi)型如表1 所示:




  本文采用嵌入式系統常用的 Busybox 方法制作根文件系統映像[7]。先編譯生成系統應用程序,再建立完整的頂層目錄和必要的其他文件。然后使用的Linux2.6 自帶的mkfs.cramfs工具制作rootfs_cramfs.img 映像。至此根文件系統制作完畢。



關(guān)鍵詞: XIP技術(shù) ARM Linux系統

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>