瑞芯微平台的CPU,都可以通过SD卡烧写镜像,具有操作简便、快速部署、灵活性强等优势。只需将镜像文件写入SD卡,然后插入开发板即可完成烧写,步骤简单且工具易得;烧写速度快,支持批量操作,适合设备的快速部署和更新。
默认的瑞芯微TF卡制作软件只适用于4G以下大小镜像的制作,如果需要升级Ubuntu和Debian镜像则需要特殊处理,步骤如下。
1. 先找到一个sdupdate.img升级包(我从firefly官网下了一个buildroot的rk3588固件)。
2. 准备好升级工具SDDiskTool_v1.78.zip,链接:瑞芯微创建升级磁盘工具
3. 准备一个ubuntu虚拟机,用来重置卡和重新拷贝升级包用。
4. 准备好自己要真正升级的sdupdate.img升级包。
首先使用TF卡磁盘升级工具创建一个普通的buildroot固件升级镜像,升级完成之后将TF卡转到ubuntu虚拟机,TF卡默认格式为FAT32格式,由于FAT32格式的TF卡只能存放4G以下容量的文件,所以这里要将TF卡重新格式化成EXT4格式,然后重新拷贝上述文件(瑞芯微sd卡工具制作步骤不能缺少,因为需要进入recovery进行系统升级)。为了方便在ubuntu里操作,直接使用以下脚本即可(需要先确定TF卡的设备号,比如/dev/sdc1等,可通过dmesg命令查看):
#!/bin/bash
# 检查参数数量
if [ "$#" -ne 2 ]; then
echo -e "\033[31m用法: $0 <磁盘设备> <挂载点>\033[0m"
echo -e "\033[33m例如: $0 /dev/sdc1 /mnt\033[0m"
exit 1
fi
DISK=$1
MNT=$2
# Step 1: 创建临时目录并制作空的 rksdfw.tag
echo -e "\033[32m步骤 1: 创建临时目录并制作空的 rksdfw.tag...\033[0m"
touch rksdfw.tag
echo -e "\033[32mrksdfw.tag 文件已创建。\033[0m"
# Step 2: 制作升级的配置文件 sd_boot_config.config
echo -e "\033[32m步骤 2: 创建 sd_boot_config.config 文件...\033[0m"
cat <<EOL > sd_boot_config.config
#rockchip sdcard boot config file for factory
loader_update = 0
display_led = 1
display_lcd = 1
pcba_test = 0
fw_update = 1
demo_copy = 0
EOL
echo -e "\033[32msd_boot_config.config 文件已创建。\033[0m"
# Step 3: 检查固件文件是否存在
if [ ! -f sdupdate.img ]; then
echo -e "\033[31m错误: 当前目录中未找到 sdupdate.img 文件。\033[0m"
echo -e "\033[33m请将要升级的固件文件拷贝到当前目录,并重命名为 sdupdate.img。\033[0m"
exit 1
else
echo -e "\033[32msdupdate.img 文件已找到。\033[0m"
fi
# Step 4: 格式化磁盘并拷贝文件
echo -e "\033[32m步骤 4: 格式化磁盘并拷贝文件...\033[0m"
sudo umount $DISK
if [ $? -ne 0 ]; then
echo -e "\033[31m卸载 $DISK 失败,请确认设备未被占用。\033[0m"
exit 1
fi
sudo mkfs.ext4 -F $DISK
if [ $? -ne 0 ]; then
echo -e "\033[31m格式化 $DISK 失败。\033[0m"
exit 1
fi
sudo mount $DISK $MNT
if [ $? -ne 0 ]; then
echo -e "\033[31m挂载 $DISK 到 $MNT 失败。\033[0m"
exit 1
fi
sudo cp rksdfw.tag sd_boot_config.config sdupdate.img $MNT
if [ $? -ne 0 ]; then
echo -e "\033[31m拷贝文件到 $MNT 失败。\033[0m"
sudo umount $MNT
exit 1
fi
sudo umount $MNT
if [ $? -ne 0 ]; then
echo -e "\033[31m卸载 $MNT 失败。\033[0m"
exit 1
fi
echo -e "\033[32m步骤 4 完成: 磁盘格式化并成功拷贝文件。\033[0m"
将上述bash脚本放到ubuntu虚拟机的某个目录下命名为mksd_boot.sh,然后将要烧写的镜像拷贝到当前目录,并重命名为sdupdate.img,最后使用以下命令拷贝制作必须的文件即可,其中第一个参数为TF卡的盘符,第二个为挂载目录,制作过程如下所示:
vmware:~/tools$ sudo ./mksd_boot.sh /dev/sdd1 /mnt/
步骤 1: 创建临时目录并制作空的 rksdfw.tag...
rksdfw.tag 文件已创建。
步骤 2: 创建 sd_boot_config.config 文件...
sd_boot_config.config 文件已创建。
sdupdate.img 文件已找到。
步骤 4: 格式化磁盘并拷贝文件...
mke2fs 1.45.5 (07-Jan-2020)
/dev/sdd1 contains a vfat file system
Creating filesystem with 1894144 4k blocks and 474208 inodes
Filesystem UUID: f4eb9b96-f128-4bd0-b2ca-1b7b08bcc964
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
步骤 4 完成: 磁盘格式化并成功拷贝文件。
vmware:~/tools$
vmware:~/tools$
vmware:~/tools$
TF卡制作完成后,可以插到板子上,再给板子上电,等待几分钟后(HDMI屏幕有显示,串口也有提示)提示升级完成,会有成功打印信息,拔掉TF卡重启就可以进入要烧写的系统了。