1.SD卡驱动的移植
【实验步骤】
①修改设备树文件
$ vim arch/arm/boot/dts/exynos4412-fs4412.dts
修改
sdhci@12530000 {
bus-width = <4>;
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
pinctrl-names = "default";
vmmc-supply = <&mmc_reg>;
status = "okay";
};
为:
sdhci@12530000 {
bus-width = <4>;
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
cd-gpios = <&gpx0 7 0>;
cd-inverted = <0>;
pinctrl-names = "default";
/*vmmc-supply = <&mmc_reg>;*/
status = "okay";
};
②配置内核
$ 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生效
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作为启动文件系统
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
重新启动开发板查看能否正常启动