移植openwrt到rk3328建行超脑魔盒iflyhome-i01,过程记录一下

电路板有ttl串口, 接上后, 115200,8n1,  抓取到启动信息, 从cmdline中可以获取到16G的emmc的分区信息,rk29xxnand是16进制扇区:
earlyprintk=uart8250-32bit,0xff120000 console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00004000@0x00004000(trust),0x00002000@0x00008000(misc),0x00000800@0x0000A000(baseparamer),0x00007800@0x0000A800(resource),0x00010000@0x00012000(kernel),0x00010000@0x00022000(boot),0x00010000@0x00032000(recovery),0x00020000@0x00042000(backup),0x00040000@0x00062000(cache),0x00008000@0x000A2000(metadata),0x00002000@0x000AA000(kpanic),0x00300000@0x000AC000(system),0x00004000@0x003AC000(oem),-@0x003B0000(userdata) storagemedia=emmc uboot_logo=0x02000000@0x7dc00000 loader.timestamp=2020-08-14_11:09:16 hdmi.vic=65536 tve.format=1 SecureBootCheckOk=0 androidboot.serialno=O2Q7EOI0

电路板背面有2个触点 tp2301, tp2300 短接上电, 然后usb2的口, 就切换成外设模式, 直连到电脑的usb口, 就可以lsusb看到:
Vid=0x2207 Pid=0x320c Mode=Maskrom
直接用rkdeveloptool工具(debian带了这个软件)读取完整rom,然后在resource分区,根据特征字提取到dtb信息, 
rkdeveloptool 需要一个loader , 在 git clone https://github.com/rockchip-linux/rkbin.git  获得,
find . -iname '*rk3328*' -o -iname '*3328*loader*'
找到后,要用这个命令,生成一下rk3328_loader_v1.22.250.bin :
./tools/boot_merger RKBOOT/RK3328MINIALL.ini  
然后把rk3328_loader_v1.22.250.bin 加载到盒子里, 才可以dump rom:
rkdeveloptool db ./rk3328_loader_v1.22.250.bin

然后就可以看rom信息: rkdeveloptool rci
 

liushiwei@fbak:~/rk3328/rkbin$ sudo rkdeveloptool rfi
sudo rkdeveloptool rci
Flash Info:
Manufacturer: SAMSUNG, value=00
Flash Size: 14910 MB
Flash Size: 30535680 Sectors
Block Size: 512 KB
Page Size: 2 KB
ECC Bits: 0
Access Time: 40
Flash CS: Flash<0> 
Chip Info:  48 32 32 33 FF FF 0 0 FF FF 0 0 FF FF 0 0

30535680个扇区*512 是15634268160 字节,全部读取备份:
rkdeveloptool rl 0 15634268160 iflyhome-i01-emmc-full.img

然后根据dtb的特征码和长度, 提取出dtb

反编译成dts
dtc -I dtb -O dts -o 3.10_i01.dts 3.10_i01.dtb
这个dts, 是linux-3.10的, 跟目前的linux-6不匹配, 但是可以参考,可以让chatgpt帮忙转成linux6的格式
附件999-arm64-dts-rockchip-add-iflyhome-i01.patch 就是最终结果,可以直接在openwrt的git进行引入am,
make download -j 4

make target/linux/prepare V=s -j1

生成build_dir/target-aarch64_generic_musl/linux-rockchip_armv8/linux-6.12.108/目录
然后到build_dir/target-aarch64_generic_musl/linux-rockchip_armv8/linux-6.12.108/ 去做dts配置文件,
修改target/linux/rockchip/image/armv8.mk, 增加型号, 编译还在进行, 未完待续

 

 

短接
附件大小
999-arm64-dts-rockchip-add-iflyhome-i01.patch openwrt补丁 直接在openwrt git am9.2 千字节
rk3328-iflyhome-i01.dts dts配置文件, 可以放到 linux源码的arch/arm64/boot/dts/rock....7.87 千字节
3.10_i01.dts 原机的dts文件138.73 千字节
i1.log 原机的启动过程串口输出217.39 千字节
微信图片_20260915201709_8_164.jpg168.5 千字节
iflyhome.jpg53.68 千字节
tp2301_2300.jpg94.49 千字节
pcb.jpg96.46 千字节