D1 固件文件解构:
① boot0_sdcard.fex
② boot_package.fex
③ env.fex
④ env.fex
⑤ boot.vfat
⑥ rootfs
离线
boot_package.fex 包含文件:
① fw_jump.bin
② u-boot-sun20iw1p1.bin
③ board.dtb
boot_package.fex 使用这个命令生成:
./dragonsecboot -pack boot_package.cfg
boot_package.cfg 内容:
package]
;item=Item_TOC_name, Item_filename,
;item=scp, scp.fex
item=opensbi, fw_jump.bin
item=u-boot, u-boot-sun20iw1p1.bin
item=dtb, board.dtb
;item=logo, bootlogo.bmp.lzma
;item=shutdowncharge, bempty.bmp.lzma
;item=androidcharge, battery_charge.bmp.lzma
离线
boot.img:
mkbootimg --kernel Image --ramdisk ramdisk.img --board d1-nezha_min --base 0x40200000 --kernel_offset 0x0 --ramdisk_offset 0x01000000 -o boot.img
离线
要摒弃tina系统,这些都得深入研究,D1主线化不知猴年马月?很讨厌这种非标的实现。
离线
根据这个网页: https://blog.csdn.net/codeos/article/details/119747194
boot0 的偏移地址是 8K
boot_package.fex 的偏移地址是 16400K 和 12288K ,其中后面那个是备份的。
boot0跳转到u-boot之前会对 boot_package.fex前面的1K大小的结构头进行简单的校验
手动制作 boot_package.fex步骤
$ cp sunxi.dtb sunxi.fex // 重命名
$ fastdtb sunxi.fex // 会在sunxi.fex 文件尾部增加很大的一片内容$ cp u-boot-sun8iw11p1.bin u-boot.fex // 重命名
$ update_uboot_fdt u-boot.fex sunxi.fex u-boot.fex // 将u-boot.fex放在前面并且1K对齐,sunxi.fex放在后面并且最后补了很多0$ update_uboot u-boot.fex sys_config.bin // 先在u-boot.fex后面补0xFF一直补到0x80000,然后追加 sys_config.bin,然后再补0xff一直补到0x90000
$ dragonsecboot -pack boot_package.cfg // 在文件头部加一个 sbrom_toc1_item_info 结构头,1K对齐;然后追加u-boot.fex,然后尾部补0,一直补到0x94000
测试:
将boot0,烧写到tf卡 8K偏移处,然后将上面生成的 boot_package.fex烧写到tf卡16400K偏移处,用开发板从tf卡启动,可以正常从boot0跳转到u-boot
离线
@tigger
这个不错,根据上面这个网页信息,我去D1 SDK 里面测试了一下,
$ cd /opt/D1/tina_d1_open/out/d1-mangopi_mq_rgb800x480_gt9xx/image
然后dd到img文件:
$
$ dd if=boot0_sdcard.fex of=/mnt/hgfs/D/y.img bs=1K seek=8
64+0 records in
64+0 records out
65536 bytes (66 kB, 64 KiB) copied, 0.0143461 s, 4.6 MB/s
$
$ dd if=boot_package.fex of=/mnt/hgfs/D/y.img bs=1K seek=12288
944+0 records in
944+0 records out
966656 bytes (967 kB, 944 KiB) copied, 0.297141 s, 3.3 MB/s
$
$ dd if=boot_package.fex of=/mnt/hgfs/D/y.img bs=1K seek=16400
944+0 records in
944+0 records out
966656 bytes (967 kB, 944 KiB) copied, 0.217014 s, 4.5 MB/s
$
$
用 win32diskimager 烧录到 TF卡,可以正常启动到 uboot了。
离线
用buildroot自带的genimage把tina dragon的活干完,让dragon无活可干。
https://bbs.aw-ol.com/topic/1022/share/7
boot0:
image = "boot0_sdcard.fex"
uboot,opensbi等:
image = "boot_package.fex"
开机画面等:
image = "boot-resource.fex"
uboot的环境变量:
image = "env.fex"
uboot的环境变量备份:
image = "env.fex"
Linux kernel:
image = "boot.fex"
根文件系统:
image = "rootfs.fex"
这两个不知道干嘛的:
image = "dsp0.fex"
image = "recovery.fex"
离线
关注!
离线
fastdtb sunxi.fex
update_uboot_fdt u-boot.fex sunxi.fex u-boot.fex
update_uboot u-boot.fex
dragonsecboot -pack boot_package.cfg
这几条指令是什么意思?linux下也没有这几条指令或软件
离线