问题: 客户在 之前的核心板上 可以烧写自己的镜像,但是在最新的核心板上却烧写不上,新旧核心板 只是变了emmc , 由 江波龙 ------->星火。
分析: 客户的镜像的分区是经过自己的定制的,所以有可能 是 由于代码 操作不对导致的。在硬件上,并没有更新什么驱动。
客户的分区信息:
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00020000@0x00006000(boot),0x01cd4000@0x00026000(rootfs)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
我这边需要做的就是 , 我自己 按照这个进行分区,并且 编译烧写镜像进行测试。
我准备 使用Ubuntu20 的镜像。
首先 我不重新编译源码, 我从网盘上下载一个 ubuntu 镜像,然后解包, 替换掉 客户的parameter.txt 文件,然后 , 在cfg 文件中,更改到 跟 parameter.txt 文件一样的状态。
经测试,这种方法是不行的。
然后 我就开始 编译源码, 然后生成一个 update.img 的镜像,进行烧写测试。
1、首先是 parameter.txt 的修改
文件:device/rockchip/rk356x/parameter.txt
内容如下:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00020000@0x00008000(boot),0x015d4000@0x00028000(rootfs)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
3 然后是 rockdev 目录下的parameter.txt 的修改。
可以看到是个 连接文件。
对于 parameter-buildroot-fit.txt 的修改。
文件路径: rk356x_linux/device/rockchip/rk356x
修改内容:
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00020000@0x00008000(boot),0x015d4000@0x00028000(rootfs)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
2 、 然后是打包文件 rk356x-package-file 的修改。
文件位置: tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file
这面我已经注释掉了 不需要的分区。
内容如下:
# NAME Relative path
#
#HWDEF HWDEF
package-file package-file
bootloader Image/MiniLoaderAll.bin
parameter Image/parameter.txt
#trust Image/trust.img
uboot Image/uboot.img
#topeet misc Image/misc.img
#resource Image/resource.img
#kernel Image/kernel.img
boot Image/boot.img
#topeet recovery Image/recovery.img
rootfs Image/rootfs.img
#topeet oem Image/oem.img
#topeet userdata Image/userdata.img
# ҪдÈëbackup·ÖÇøµÄÎļþ¾ÍÊÇ×ÔÉí£¨update.img£©
# SELF Êǹؼü×Ö£¬±íʾÉý¼¶Îļþ£¨update.img£©×ÔÉí
# ÔÚÉú³ÉÉý¼¶Îļþʱ£¬²»¼ÓÈëSELFÎļþµÄÄÚÈÝ£¬µ«ÔÚÍ·²¿ÐÅÏ¢ÖÐÓмǼ
# ÔÚ½â°üÉý¼¶Îļþʱ£¬²»½â°üSELFÎļþµÄÄÚÈÝ¡£
#topeet backup RESERVED
#update-script update-script
#recover-script recover-script
3、 然后是源码的编译。
按照手册迅为编译手册进行编译。
4 、烧写整个update.img 文件。
在烧写之前 清除一下板卡的镜像。
5 、 系统启动信息如下:
Ubuntu 在启动过程中,会有一个 报错。
这个的解决: 应该在 文件系统的 fstab 的 关于 oem , usrdata的分区那里。
这个 报错我先不去管。
---------------------------------------------------------------------------------------------------------------------------------
来看看网上的资料:
来看看 我自己的修改。
我觉得,
device/rockchip/rk356x/parameter.txt 这个文件是没有作用的。
device/rockchip/rk356x/parameter-buildroot-fit.txt 这个文件才是真正的分区文件。
tools/linux/Linux_Pack_Firmware/rockdev/rk356x-package-file 这个文件是打包文件。
疑问: 为什么 我直接 拷贝 parameter.txt 然后改 cfg 这种方式不行的, 为什么非得去编译一下源码呢? 不是很理解。