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 操作环境:
 
Ubuntu 14.04.3 64bit
 
l 制作文件说明
 
制作文件为光盘“Shell\Linux-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”目录,将光盘“Shell\Linux-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 系统启动卡制作成功,如下图所示: