由于rk3568 spl镜像特殊,故采取非常手段进行。
一、制作SD卡启动升级: 第一步:使用ubuntu系统(需要安装parted工具),准备容量8G/8G以上的TF卡。 第二步:使用rk3568_update_tools.sh制作SD启动系统并自动升级,具体如下指令: sudo ./rk3568_update_tools.sh /out/tmp /dev/sdb 或 sudo ./rk3568_update_tools.sh Sieyuan-Develop-20220123183354.tar.gz /dev/sdb ------------------------------------------------------------------------------------------------ 二、制作NOR FLASH的spl说明: 第一步:擦除NOR FLASH,命令: ./rkflash.sh erase; 第二步:烧录spl镜像到NOR FLAH上; 第三步:从SD卡启动,进入系统后; 第四步:通过hexdump获取spl的范围信息。 登陆secadm用户,将selinux关闭,然后再进去sysadm用户,获取NOR FLAH的spl的固件信息; hexdump -C /dev/mtdblock1 > spl.log 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 00010000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00028000 52 4b 4e 53 00 00 00 00 80 01 02 00 01 00 00 00 |RKNS............| 00028010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00028070 00 00 00 00 00 00 00 00 04 00 74 00 ff ff ff ff |..........t.....| * ----- 000ca7a0 63 72 6f 76 6f 6c 74 00 6c 69 6e 75 78 2c 63 6f |crovolt.linux,co| 000ca7b0 64 65 00 70 72 65 73 73 2d 74 68 72 65 73 68 6f |de.press-thresho| 000ca7c0 6c 64 2d 6d 69 63 72 6f 76 6f 6c 74 00 00 00 00 |ld-microvolt....| 000ca7d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000e0000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 02000000 通过上面的信息可以确定NOR FLASH spl的启始位置:00028000(16进制)=163840(10进制) 大小为:000ca7d0-00028000=A27D0(16进制)=665552(10进制) 如何确定是/dev/mtdblock1为NOR FLSAH节点: rk3568:~# fdisk -l ---NOR FLSAH为32Mb Disk /dev/mtdblock1: 32 MiB, 33554432 bytes, 65536 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 第五步:通过dd命令,从/dev/mtdblock1节点导出spl镜像。 dd if=/dev/mtdblock1 of=/nor-flash-spl.bin bs=1 skip=163840 count=665552 第六步:再通过hexdump导出spl镜像信息,是否与/dev/mtdblock1一致 hexdump -C /nor-flash-spl.bin > spl1.log 第七步:通过对比是一致的。导出NOR FLASH spl镜像的固件信息。 ----------------------------------------------------------------------------------------------- 三、制作EMMC的spl说明:步骤与NOR FLASH一样。 第一步:擦除EMMC,命令: ./rkflash.sh erase; 第二步:烧录spl镜像到emmc上; 第三步:从SD卡启动,进入系统后; 第四步:通过hexdump获取emmc spl的范围信息。 登陆secadm用户,将selinux关闭,然后再进去sysadm用户,获取emmc的spl的固件信息; hexdump -C /dev/mmcblk0 > spl.log 0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00008000 52 4b 4e 53 00 00 00 00 80 01 02 00 01 00 00 00 |RKNS............| 00008010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00008070 00 00 00 00 00 00 00 00 04 00 74 00 ff ff ff ff |..........t.....| --- 002527b0 64 65 00 70 72 65 73 73 2d 74 68 72 65 73 68 6f |de.press-thresho| 002527c0 6c 64 2d 6d 69 63 72 6f 76 6f 6c 74 00 00 00 00 |ld-microvolt....| 002527d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 1d2000000 通过上面的信息可以确定emmc spl的启始位置:00008000(16进制)=32768(10进制) 大小为:002527d0-00008000=24A7D0(16进制)=2402256(10进制) rk3568:~# fdisk -l ---EMMC Disk /dev/mmcblk0: 7.29 GiB, 7818182656 bytes, 15269888 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 第五步:通过dd命令,从/dev/mmcblk0节点导出spl镜像。 dd if=/dev/mmcblk0 of=/sd-emmc-spl.bin bs=1 skip=32768 count=2402256 第六步:再通过hexdump导出spl镜像信息,是否与/dev/mmcblk0一致 hexdump -C /sd-emmc-spl.bin > spl1.log 第七步:通过对比是一致的。导出emmc spl镜像的固件信息。