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
重新啟動開發板查看能否正常啟動