基于ARM开发板的SD卡挂载及后台程序自启动

1.SD卡驱动的移植

【实验步骤】

①修改设备树文件

②配置内核

$ make menuconfig

Device Drivers  --->

       <*> MMC/SD/SDIO card support  --->

              <*>   Secure Digital Host Controller Interface support

              <*>   SDHCI support on Samsung S3C SoC

File systems  --->

       DOS/FAT/NT Filesystems  --->

              <*> MSDOS fs support

              <*> VFAT (Windows-95) fs support

              (437) Default codepage for FAT

              (iso8859-1) Default iocharset for FAT

       -*- Native language support  --->

              <*>   Codepage 437 (United States, Canada)

              <*>   Simplified Chinese charset (CP936, GB2312)

              <*>   ASCII (United States)

              <*>   NLS ISO 8859-1  (Latin 1; Western European Languages)

                     <*>   NLS UTF-8

③编译内核和设备树

$ 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生效

5. 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作为启动文件系统

make menuconfig

File systems  --->

       <*> Second extended fs support

Device Drivers

       SCSI device support  --->

              <*> SCSI disk support

       Block devices  --->

              <*>RAM  block  device  support  

              (16)Default number of RAM disks 

              (8192) Default RAM disk size (kbytes)   (修改为8M)

General setup  --->

              [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support重新编译内核,复制到/tftpboot

⑩在U-BOOT命令行重新设置启动参数:

# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;tftp 43000000 ramdisk.img\;bootm 41000000 43000000 42000000

# saveenv

重新启动开发板查看能否正常启动

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值