您的位置 首页 ADAS

AM335x(TQ335x)学习笔记——挂载Ramdisk

上篇文章中我们已经能够通过u-boot启动内核了,但是没有能够启动成功,从内核的log中可以看出,内核启动失败的原因是没有挂载到root文件系

上篇文章中咱们现已能够经过u-boot发动内核了,可是没有能够发动成功,从内核的log中能够看出,内核发动失利的原因是没有挂载到root文件体系,本文将运用busybox制造根文件体系并打包成ramdisk供u-boot发动内核运用。

(1)制造根文件体系

运用busybox构建根文件体系的过程能够参阅本博客的别的一篇文章,该文章链接如下:

S5PV210(TQ210)学习笔记——内核移植与文件体系构建

需求弥补的是,文章”S5PV210(TQ210)学习笔记——内核移植与文件体系构建”中记载rootfs文件体系构建时漏掉了一步,没有在etc/sysconfig/目录下创立HOSTNAME文件,能够手动增加HOSTNAME文件,其内容为主机称号,本文运用了tq335x。在rootfs目录能够经过如下指令创立:

  1. echotq335x>etc/sysconfig/HOSTNAME

本文在已制造好的rootfs基础上,制造ramdisk。

(2)制造ramdisk

制造ramdisk的方法许多,最便利的是运用指令genext2fs。ubuntu操作体系上能够经过apt-get东西直接装置genext2fs东西:

  1. sudoapt-getinstallgenext2fs

其它操作体系也有相似的管理东西,这儿就不一一列举了,下面运用genext2fs打包rootfs目录。指令如下:

  1. genext2fs-b4096-drootfs/ramdisk

然后运用gzip指令紧缩ramdisk:

  1. gzip-9-framdisk

履行完结该指令后能够得到文件ramdisk.gz。

因为u-boot发动内核运用的ramdisk需求有u-boot的image头,故需求运用编译u-boot时生成的东西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前的途径依据自己实践履行的途径指定即可。

这样,就完结了u-boot能够运用的ramdisk制造,然后将ramdisk.img复制到SD卡的boot目录下即可。

(3)挂载ramdisk

旧式的ATAGS方法发动内核时运用ATAG传递bootargs给内核,因为本文运用的dtb方法发动内核,故采纳dtb的chosen方法传递bootargs给内核。

Step1: 修正内核装备

  1. makeARCH=armmenuconfig

进入装备项:

  1. Bootoptions—>

按N键撤销装备项:

  1. []UseappendeddevicetreeblobtozImage(EXPERIMENTAL)

官方内核默许启用了该项装备。启用该项装备后内核兼容旧式的ATAGS方法内核发动,封闭后则运用新式的dtb方法发动,故此处禁用了此项装备。

按ESC保存装备后退出menuconfig画面,从头编译内核:

  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

翻开tq335x.dts,在memory项后经过chosen方法增加bootargs,增加内容如下:

  1. memory{
  2. device_type=”memory”;
  3. reg=<0x800000000x10000000>;/*256MB*/
  4. };
  5. chosen{
  6. bootargs=”console=ttyO0,115200n8root=/dev/ram0″;
  7. };

其间chosen节点是新增加的,memory节点是原有的。

接下来从头编译dtb:

  1. makeARCH=armCROSS_COMPILE=arm-linux-gnueabi-tq335x.dtb

将新编译得到的tq335x.dtb复制到SD的boot目录下。至此,准备工作就完结了,下面咱们运用新制造的ramdisk.img和tq335x.dtb发动内核。

Step3:运用新制造的ramdisk.img和tq335x.dtb发动内核

将SD插到开发板上,给开发板上电(开发板切换到SD卡发动形式),能够经过按任意键打断内核发动进入u-boot指令形式(因为之前没有装备u-boot的bootcmd环境变量,而默许的u-boot环境无法发动内核,故,开发板上电后不按键的话也会进入u-boot的指令行形式)。

首先是加载内核到DRAM:

  1. loadmmc0${loadaddr}/boot/zImage

其间,${loadaddr}在u-boot的环境变量中默许指定为0x82000000,这儿能够直接打数字。

然后是加载dtb到DRAM:

  1. loadmmc0${fdtaddr}/boot/tq335x.dtb

${fdtaddr}的默许值是0x88000000。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/256211.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部