AM335x(TQ335x)学习笔记——挂载Ramdisk
(1)制作根文件系统
使用busybox构建根文件系统的步骤可以参考本博客的另外一篇文章,该文章链接如下:
S5PV210(TQ210)学习笔记——内核移植与文件系统构建
需要补充的是,文章"S5PV210(TQ210)学习笔记——内核移植与文件系统构建"中记录rootfs文件系统构建时漏掉了一步,没有在etc/sysconfig/目录下创建HOSTNAME文件,可以手动添加HOSTNAME文件,其内容为主机名称,本文使用了tq335x。在rootfs目录可以通过如下指令创建:
- echotq335x>etc/sysconfig/HOSTNAME
(2)制作ramdisk
制作ramdisk的方式很多,最方便的是使用指令genext2fs。ubuntu操作系统上可以通过apt-get工具直接安装genext2fs工具:
- sudoapt-getinstallgenext2fs
- genext2fs-b4096-drootfs/ramdisk
- gzip-9-framdisk
由于u-boot启动内核使用的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方式启动内核时使用ATAG传递bootargs给内核,由于本文使用的dtb方式启动内核,故采取dtb的chosen方式传递bootargs给内核。
Step1: 修改内核配置
- makeARCH=armmenuconfig
- Bootoptions--->
- []UseappendeddevicetreeblobtozImage(EXPERIMENTAL)
按ESC保存配置后退出menuconfig画面,重新编译内核:
- makeARCH=armCROSS_COMPILE=arm-linux-gnueabi--j8
切换到内核目录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启动内核
将SD插到开发板上,给开发板上电(开发板切换到SD卡启动模式),可以通过按任意键打断内核启动进入u-boot命令模式(由于之前没有配置u-boot的bootcmd环境变量,而默认的u-boot环境无法启动内核,故,开发板上电后不按键的话也会进入u-boot的命令行模式)。
首先是加载内核到DRAM:
- loadmmc0${loadaddr}/boot/zImage
然后是加载dtb到DRAM:
- loadmmc0${fdtaddr}/boot/tq335x.dtb
接下来加载ramdisk到DRAM:
- loadmmc0${rdaddr}/boot/ramdisk.img
最后就是将ramdisk和dtb的加载地址作为参数启动内核:
- bootz${loadaddr}${rdaddr}${fdtaddr}
启动Log如下:
- Hitanykeytostopautoboot:0
- U-Boot#loadmmc0${fdtaddr}/boot/tq335x.dtb
- 34781bytesreadin9ms(3.7MiB/s)
- U-Boot#loadmmc0${loadaddr}/boot/zImage
- 4377824bytesreadin242ms(17.3MiB/s)
- U-Boot#loadmmc0${rdaddr}/boot/ramdisk.img
- 1120934bytesreadin68ms(15.7MiB/s)
- U-Boot#bootz${loadaddr}${rdaddr}${fdtaddr}
- Kernelimage@0x82000000[0x000000-0x42cce0]
- ##Loa
AM335xTQ335x挂载Ramdis 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)