ZedBoard学习手记(七)小插曲:如何让代码开机自动运行

原文地址:http://www.eefocus.com/nightseas/blog/12-11/288702_c1ebe.html#articletop

近日十分注意调养,因而胃病有所缓解了,于是继续更新博客。以后谁再叫我去吃饭都得三思了,唉~~~此之谓顾嘴不顾身啊。

在开始QT图形用户界面开发之前,先要说说如何让代码在ZedBoard上电时自动运行。对于带有Linaro 根文件系统的Linux系统来说,做到这一点并不困难,因为BOOT分区和rootfs分区分别存储于SD卡上,而ZedBoard自带的Linux十分精简,其根文件系统是一个镜像文件,通过加载到RAM中来执行(在DDR里开辟一块空间代替实际的SD卡分区),因此就不能像Linaro那样简单地修改根文件系统。

另一方面,如果想要让自己的驱动系统启动之后就自动加载完毕,应该如何操作呢?方法之一就是把这个驱动编译到内核里,当然这样做麻烦且费时。于是兔子就发挥懒人精神考虑如何折中。还好,方法是有的。不过需要声明这方法并非兔子原创,而是来自Zynq Geek的博客(必须代理才能访问,现在貌似在ZedBoard官网上做了个镜像,怪不得国内的技术发展一直这么闭塞 -_-!)。其方法如下:

第一步,备份ramdisk8M.image.gz!兔子就悲剧过,莫要重蹈覆辙。

第二步,加载rootfs镜像文件:

cd /

mkdir sdcard

ls

mount /dev/mmcblk0p1 /sdcard

cd sdcard/

cp /sdcard/ramdisk8M.image.gz /tmp/

gunzip /tmp/ramdisk8M.image.gz

mount -o loop /tmp/ramdisk8M.image /mnt/

 

完成以后rootfs镜像就被加载到/mnt目录下了,可以通过指令查看一下效果:

cd /mnt

ls

 

第三步,修改/etc/init.d/rcS文件,可以看到Demo板的各个外围设备开机配置(如FTP和HTTP服务器等)都是通过这个文件实现的,在文件末尾加入指令,让驱动模块自动加载,并运行我们的App测试程序。

mount /dev/sda2 /mnt

insmod /mnt/my_gpio.ko

/mnt/my_gpio_app

(注:修改rcS文件可以通过cat指令,先要复制rcS文件原有内容哦~~)

 

最后一步,重新打包根文件系统镜像,覆盖到SD卡中。

umount -l /mnt

gzip -9 /tmp/ramdisk8M.image

mv /tmp/ramdisk8M.image.gz /sdcard/

umount -l /sdcard/

 

重上电,驱动自动加载,软件自动运行。That’s it.

另外Geek还制作了一个脚本,只要两条指令就能完成上面加载和重打包的工作,脚本可以在这里下载:

https://github.com/zynqgeek/sdcard_ramdisk_mount_util.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值