1 SD系统启动卡说明
SD卡启动是开发板系统启动方式的一种。SD系统启动卡共有boot分区、rootfs分区和rootfs-backup分区三个分区,其中boot分区为FAT32格式、rootfs分区和rootfs-backup分区为EXT4格式。FAT32格式分区在Windows系统下可见,EXT4格式分区在Windows系统下不可见,三个分区在Linux系统下均可见。boot分区存放U-Boot、内核、设备树等;rootfs分区存放文件系统;rootfs-backup分区用于备份文件系统,系统固化时将其拷贝并固化到eMMC。
开发板出厂时已经提供一个正常使用的Linux SD系统启动卡。以下步骤是Linux SD系统启动卡的制作过程。
l 操作环境:
Ubntu 14.04.3 64bit
l 制作文件说明
制作文件为光盘“ShellLinux-4.4.19-mksdboot.tar.gz”压缩包,基于Linux-4.4.19内核,适用于TL5728-EasyEVM、TL5728-IDK。
根据制作文件制作的SD卡默认支持TL5728-EasyEVM开发板,若要支持其它型号开发板,需要设置系统启动的U-Boot环境变量。
2 SD系统启动卡制作步骤
2.1 拷贝启动卡制作文件到Ubuntu
打开Ubuntu,执行如下命令创建“/home/tronlong/AM57xx/Linux-4.4.19-mksdboot”目录,将光盘“ShellLinux-4.4.19-mksdboot.tar.gz”压缩包复制到该目录下,进入制卡压缩包所在路径执行如下指令将其解压到当前目录:
Host# mkdir -p /home/tronlong/AM57xx/Linux-4.4.19-mksdboot
Host# cd /home/tronlong/AM57xx/Linux-4.4.19-mksdboot
Host# tar -xvf Linux-4.4.19-mksdboot.tar.gz -C .
解压后的Linux-4.4.19-mksdboot文件夹内容结构大致如下图:
boot目录:
该目录下的MLO、u-boot.img和uEnv.txt文件会复制到SD卡的boot分区,该目录下的zImage文件和dtb目录下的全部文件会复制到SD卡rootfs分区的boot目录下。
Ø MLO:U-Boot一级启动镜像;
Ø u-boot.img:U-Boot二级启动镜像;
Ø zImage:Linux内核镜像;
Ø dtb目录:存放.dtb设备树文件,由内核编译步骤产生。
filesystem目录:
该目录存放了将要复制到SD卡rootfs分区的文件系统。
Ø modules目录:内核驱动压缩包,和内核版本对应;
Ø product-test目录:生产测试压缩包,会解压到rootfs分区的opt目录下;
Ø rootfs目录:存放根文件系统压缩包;
Ø tools目录:tools目录里存放着部分shell脚本,会被复制到SD启动卡的boot分区;
Ø mksdboot.sh:Linux SD系统启动卡制作脚本。
以上文件如需替换,务必保证命名、格式与原文件保持一致。
2.2 识别SD卡
将Micro SD卡通过读卡器连接到计算机,虚拟机Ubuntu系统识别后会自动识别SD卡分区,如下图所示:
如果没有自动识别,请右击右下角的USB大容量存储设备图标,再点击“Connect (Disconnect from Host)”。
如果没有以上图标或者连接不成功,请尝试如下方法:
l 请将Micro SD卡通过读卡器插到USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不支持USB 3.0。
l 请将Micro SD卡插在PC上,然后重启Ubuntu,在Ubuntu重启过程中不要拨出来,开机后图标会重新出现。
2.3 确认SD卡设备节点名
执行如下命令,确认SD卡设备节点名:
Host# sudo fdisk -l
可以看到SD卡设备节点是sdb,其中有1个分区,分区名字是sdb1。SD卡设备节点名字是可变的,一般插拔多次或者不同的卡插拔后,可能会显示sdc或者sdd甚至sde。
2.4 运行SD系统启动卡制作脚本
系统启动卡制作脚本mksdboot.sh主要有如下作用:
l 将SD卡格式化为boot分区、rootfs分区和rootfs-backup分区。
l 将rootfs文件夹中的文件系统压缩包解压安装到rootfs分区,同时还将文件系统压缩包解压备份到rootfs-backup分区。
l 将boot目录下的U-Boot镜像文件MLO、u-boot.img拷贝到boot分区。SD卡模式启动时,系统会使用boot分区U-Boot镜像文件。
l 将“boot/dtb”目录下的所有dtb设备树文件,拷贝到rootfs分区“/boot”目录。在U-Boot命令行下,通过修改环境变量board_name的参数值,系统会根据修改加载rootfs分区“/boot”目录下不同型号开发板对应的设备树文件。
l 将boot目录下的内核镜像文件zImage拷贝到rootfs分区“/boot”目录。SD卡模式启动时,系统会使用rootfs分区“/boot”目录下的内核镜像文件。
使用SD系统启动卡启动系统时,如需替换U-Boot镜像、设备树、内核镜像、文件系统,有如下方法:
(1)使用新的U-Boot镜像文件,保持文件名与原文件一致,替换SD系统启动卡boot分区下的对应文件;使用新的设备树文件,替换SD系统启动卡rootfs分区“/boot”目录下的对应文件;使用新的内核镜像文件,保持文件名与原文件一致,替换SD系统启动卡rootfs分区“/boot”目录下的对应文件,同时还需替换与新内核版本对应的内核驱动压缩包;先删除SD系统启动卡rootfs分区所有内容,再使用新的文件系统压缩包,将其解压到SD系统启动卡rootfs分区,并将设备树文件、内核镜像文件拷贝到SD系统启动卡rootfs分区“/boot”目录。
(2)使用新的U-Boot镜像文件、设备树文件、内核镜像文件、文件系统压缩包,保持文件名与原文件一致,替换SD系统启动卡制作文件目录下的对应文件,然后重新制作SD系统启动卡。
进入Linux-4.4.19-mksdboot目录下的mksdboot文件夹,执行如下命令,运行SD系统启动卡制作脚本。
Host# cd /home/tronlong/AM57xx/Linux-4.4.19-mksdboot/mksdboot/
Host# sudo ./mksdboot.sh --device /dev/sdb
“/dev/sdb”为SD卡设备节点。请再次确认SD卡设备节点一致,如错误输入其他存储介质设备节点,将会造成存储介质数据损坏。
按回车键,进行SD系统启动卡制作,耗时约30 min,制卡耗时跟SD卡容量和接口性能有关。SD系统启动卡制作完成,如下图所示:
2.5 从SD系统启动卡启动Linux系统
根据以上步骤制作的SD系统启动卡默认支持TL5728-EasyEVM开发板。开发板断电,将开发板的拨码开关拨为01000(1~5),这个档位是Micro SD卡(MMC1)启动模式。
使用Micro USB线连接PC和开发板的USB转串口调试口,然后将开发板上电,串口终端会打印以下启动信息,并可以成功登陆系统,说明SD系统启动卡制作成功,如下图所示: