AM335x(TQ335x)學習筆記——掛載Ramdisk
(1)制作根文件系統(tǒng)
本文引用地址:http://m.butianyuan.cn/article/201611/322819.htm使用busybox構(gòu)建根文件系統(tǒng)的步驟可以參考本博客的另外一篇文章,該文章鏈接如下:
S5PV210(TQ210)學習筆記——內(nèi)核移植與文件系統(tǒng)構(gòu)建
需要補充的是,文章"S5PV210(TQ210)學習筆記——內(nèi)核移植與文件系統(tǒng)構(gòu)建"中記錄rootfs文件系統(tǒng)構(gòu)建時漏掉了一步,沒有在etc/sysconfig/目錄下創(chuàng)建HOSTNAME文件,可以手動添加HOSTNAME文件,其內(nèi)容為主機名稱,本文使用了tq335x。在rootfs目錄可以通過如下指令創(chuàng)建:
- echotq335x>etc/sysconfig/HOSTNAME
(2)制作ramdisk
制作ramdisk的方式很多,最方便的是使用指令genext2fs。ubuntu操作系統(tǒng)上可以通過apt-get工具直接安裝genext2fs工具:
- sudoapt-getinstallgenext2fs
- genext2fs-b4096-drootfs/ramdisk
- gzip-9-framdisk
由于u-boot啟動內(nèi)核使用的ramdisk需要有u-boot的image頭,故需要使用編譯u-boot時生成的工具mkimage將ramdisk.gz制作為ramdisk.img。其中,工具mkimage位于u-boot的tools目錄下,制作ramdisk.img的指令如下:
- u-boot-2014.10/tools/mkimage-Aarm-Olinux-Tramdisk-Cnone-a0x88080000-n"ramdisk"-dramdisk.gzramdisk.img
這樣,就完成了u-boot可以使用的ramdisk制作,然后將ramdisk.img拷貝到SD卡的boot目錄下即可。
(3)掛載ramdisk
老式的ATAGS方式啟動內(nèi)核時使用ATAG傳遞bootargs給內(nèi)核,由于本文使用的dtb方式啟動內(nèi)核,故采取dtb的chosen方式傳遞bootargs給內(nèi)核。
Step1: 修改內(nèi)核配置
- makeARCH=armmenuconfig
- Bootoptions--->
- []UseappendeddevicetreeblobtozImage(EXPERIMENTAL)
按ESC保存配置后退出menuconfig畫面,重新編譯內(nèi)核:
- makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8
切換到內(nèi)核目錄arch/arm/boot/dts/,拷貝am335x-evm.dts為tq335x.dts:
- cpam335x-evm.dtstq335x.dts
- memory{
- device_type="memory";
- reg=<0x800000000x10000000>;/*256MB*/
- };
- chosen{
- bootargs="console=ttyO0,115200n8root=/dev/ram0";
- };
- ...
接下來重新編譯dtb:
- makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-tq335x.dtb
Step3:使用新制作的ramdisk.img和tq335x.dtb啟動內(nèi)核
將SD插到開發(fā)板上,給開發(fā)板上電(開發(fā)板切換到SD卡啟動模式),可以通過按任意鍵打斷內(nèi)核啟動進入u-boot命令模式(由于之前沒有配置u-boot的bootcmd環(huán)境變量,而默認的u-boot環(huán)境無法啟動內(nèi)核,故,開發(fā)板上電后不按鍵的話也會進入u-boot的命令行模式)。
首先是加載內(nèi)核到DRAM:
- loadmmc0${loadaddr}/boot/zImage
然后是加載dtb到DRAM:
- loadmmc0${fdtaddr}/boot/tq335x.dtb
評論