<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è) > 嵌入式系統 > 設計應用 > AM335x(TQ335x)學(xué)習筆記——掛載Ramdisk

AM335x(TQ335x)學(xué)習筆記——掛載Ramdisk

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
上篇文章中我們已經(jīng)能夠通過(guò)u-boot啟動(dòng)內核了,但是沒(méi)有能夠啟動(dòng)成功,從內核的log中可以看出,內核啟動(dòng)失敗的原因是沒(méi)有掛載到root文件系統,本文將使用busybox制作根文件系統并打包成ramdisk供u-boot啟動(dòng)內核使用。

(1)制作根文件系統

本文引用地址:http://dyxdggzs.com/article/201611/322819.htm

使用busybox構建根文件系統的步驟可以參考本博客的另外一篇文章,該文章鏈接如下:

S5PV210(TQ210)學(xué)習筆記——內核移植與文件系統構建

需要補充的是,文章"S5PV210(TQ210)學(xué)習筆記——內核移植與文件系統構建"中記錄rootfs文件系統構建時(shí)漏掉了一步,沒(méi)有在etc/sysconfig/目錄下創(chuàng )建HOSTNAME文件,可以手動(dòng)添加HOSTNAME文件,其內容為主機名稱(chēng),本文使用了tq335x。在rootfs目錄可以通過(guò)如下指令創(chuàng )建:

  1. echotq335x>etc/sysconfig/HOSTNAME
本文在已制作好的rootfs基礎上,制作ramdisk。

(2)制作ramdisk

制作ramdisk的方式很多,最方便的是使用指令genext2fs。ubuntu操作系統上可以通過(guò)apt-get工具直接安裝genext2fs工具:

  1. sudoapt-getinstallgenext2fs
其它操作系統也有類(lèi)似的管理工具,這里就不一一列舉了,下面使用genext2fs打包rootfs目錄。命令如下:
  1. genext2fs-b4096-drootfs/ramdisk
然后使用gzip命令壓縮ramdisk:
  1. gzip-9-framdisk
執行完成該命令后可以得到文件ramdisk.gz。

由于u-boot啟動(dòng)內核使用的ramdisk需要有u-boot的image頭,故需要使用編譯u-boot時(shí)生成的工具mkimage將ramdisk.gz制作為ramdisk.img。其中,工具mkimage位于u-boot的tools目錄下,制作ramdisk.img的指令如下:

  1. u-boot-2014.10/tools/mkimage-Aarm-Olinux-Tramdisk-Cnone-a0x88080000-n"ramdisk"-dramdisk.gzramdisk.img
命令中mkimage前的路徑根據自己實(shí)際執行的路徑指定即可。

這樣,就完成了u-boot可以使用的ramdisk制作,然后將ramdisk.img拷貝到SD卡的boot目錄下即可。

(3)掛載ramdisk

老式的ATAGS方式啟動(dòng)內核時(shí)使用ATAG傳遞bootargs給內核,由于本文使用的dtb方式啟動(dòng)內核,故采取dtb的chosen方式傳遞bootargs給內核。

Step1: 修改內核配置

  1. makeARCH=armmenuconfig
進(jìn)入配置項:
  1. Bootoptions--->
按N鍵取消配置項:
  1. []UseappendeddevicetreeblobtozImage(EXPERIMENTAL)
官方內核默認啟用了該項配置。啟用該項配置后內核兼容老式的ATAGS方式內核啟動(dòng),關(guān)閉后則使用新式的dtb方式啟動(dòng),故此處禁用了此項配置。

按ESC保存配置后退出menuconfig畫(huà)面,重新編譯內核:

  1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8
Step2:添加bootargs到dtb

切換到內核目錄arch/arm/boot/dts/,拷貝am335x-evm.dts為tq335x.dts:

  1. cpam335x-evm.dtstq335x.dts
打開(kāi)tq335x.dts,在memory項后通過(guò)chosen方式添加bootargs,添加內容如下:
  1. memory{
  2. device_type="memory";
  3. reg=<0x800000000x10000000>;/*256MB*/
  4. };
  5. chosen{
  6. bootargs="console=ttyO0,115200n8root=/dev/ram0";
  7. };
  8. ...
其中chosen節點(diǎn)是新添加的,memory節點(diǎn)是原有的。

接下來(lái)重新編譯dtb:

  1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-tq335x.dtb
將新編譯得到的tq335x.dtb拷貝到SD的boot目錄下。至此,準備工作就完成了,下面我們使用新制作的ramdisk.img和tq335x.dtb啟動(dòng)內核。

Step3:使用新制作的ramdisk.img和tq335x.dtb啟動(dòng)內核

將SD插到開(kāi)發(fā)板上,給開(kāi)發(fā)板上電(開(kāi)發(fā)板切換到SD卡啟動(dòng)模式),可以通過(guò)按任意鍵打斷內核啟動(dòng)進(jìn)入u-boot命令模式(由于之前沒(méi)有配置u-boot的bootcmd環(huán)境變量,而默認的u-boot環(huán)境無(wú)法啟動(dòng)內核,故,開(kāi)發(fā)板上電后不按鍵的話(huà)也會(huì )進(jìn)入u-boot的命令行模式)。

首先是加載內核到DRAM:

  1. loadmmc0${loadaddr}/boot/zImage
其中,${loadaddr}在u-boot的環(huán)境變量中默認指定為0x82000000,這里可以直接打數字。

然后是加載dtb到DRAM:

  1. loadmmc0${fdtaddr}/boot/tq335x.dtb
${fdtaddr}的默認值是0x88000000。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: AM335xTQ335x掛載Ramdis

評論


技術(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>