基于ARM开发板的SD卡挂载及后台程序自启动
时间:2018-03-14作者:华清远见
1.SD卡驱动的移植 【实验步骤】 ①修改设备树文件 $ vim arch/arm/boot/dts/exynos4412-fs4412.dts
修改
为:
②配置内核 ③编译内核和设备树 $ make uImage $ make dtbs ④测试: 拷贝内核和设备树文件到/tftpboot目录下 $ cp arch/arm/boot/uImage /tftpboot $ cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpboot/ 启动开发板会有如下内容显示: [ 1.620000] mmc0: new high speed SDHC card at address cd6d [ 1.625000] mmcblk1: mmc0:cd6d SE08G 7.28 GiB [ 1.630000] mmcblk1: p1(mmcblk1 为设备名 p1 为分区名) 挂载,注意不要挂在EMMC的分区 $ mount /dev/mmcblk1p1 /mnt 查看/mnt/目录即可看到sd卡中内容 2.拷贝我们的应用程序及所需库的到SD卡
3.在/source/rootfs下添加start.sh脚本文件,首先配置我们QT的移植的相关参数配置,再mount /dev/mmcblk1p1 /mnt,然后加载我们QT程序所需要的LCD驱动和gt818的触摸屏的驱动,然后执行我们所需要执行的程序
4.在/source/rootfs/etc/profile下添加source start.sh让我们的start.sh生效
3. ramdisk.img的制作 ①制作一个大小为8M的镜像文件(du -sh 查看文件系统的大小) $ cd ~ $ dd if=/dev/zero of=ramdisk bs=1k count=8192 (ramdsik为8M) ②格式化这个镜像文件为ext2 $ mkfs.ext2 -F ramdisk ③在mount下面创建initrd目录作为挂载点 $ sudo mkdir /mnt/initrd ④将这个磁盘镜像文件挂载到/mnt/initrd下 注意这里的ramdisk不能存放在rootfs目录中 $ sudo mount -t ext2 ramdisk /mnt/initrd ⑤将测试好的文件系统里的内容全部拷贝到 /mnt/initrd目录下面 $ sudo cp /source/rootfs/* /mnt/initrd –a cp /* /mnt/initrd –a ⑥卸载/mnt/initrd $ sudo umount /mnt/initrd ⑦压缩ramdisk为ramdisk.gz $ gzip --best -c ramdisk > ramdisk.gz ⑧格式化为uboot识别的格式并拷贝到/tftpboot下 $ mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img $ cp ramdisk.img /tftpboot ⑨配置内核支持RAMDISK
制作完 initrd.img.gz后,需要配置内核支持RAMDISK作为启动文件系统 重新编译内核,复制到/tftpboot ⑩在U-BOOT命令行重新设置启动参数: # setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000 # saveenv 重新启动开发板查看能否正常启动 相关资讯
发表评论
|