如何将单独编译的opensbi u-boot kernel rootfs 烧录制作成可以启动的sdcard.img镜像?



  • 目前通过使用全志提供的sdk内工具链可以单独编译 opensbi uboot kernel busybox最小系统,除了kernel 和busybox部分可以通过分区挂载替换的方式进行更新刷写,但是opensbi uboot这部分如何在不借助全志工具的情况下单独更新呢?
    efb5c47d-b6d9-46c6-9557-6493e0adb669-image.png
    之前有看到社区内liangdi 大佬做的debian系统 启动后查看分区信息时可以看到如下。
    11179902-f019-4154-b720-0d81d920788a-image.png
    通过分区工具查看
    2f10f4fe-e83f-4395-827e-79c7a6537de0-image.png
    后来单独询问发现这三个分区是通过下面这个工具单独生成的,并非全志sdk构建出来的那个版本。
    0cdea135-1044-4963-95ea-08f73e6f89d5-image.png
    通过分析scripts/pack_img.sh 脚本以及单独执行pack打包命令验证,发现最开始的三个分区,对应的文件分别是boot-resource.fex env.fex ,后面将其使用wind32diskimage工具直接烧录至SD卡 并未能看到分区信息。
    cb743784-82b6-4e30-86e1-c44f27dedf49-image.png
    之后我找到boot-resource.fex 来分析制作过程并查看文件 ,发现 boot-resource.fex 文件大小确只有 80k 仅仅opensbi部分编译出来都将近80k 那么u-boot部分会保存在哪里呢?
    608c204b-79e0-4392-b2df-3eb2b7a39fbf-image.png
    希望有了解的大佬指点一下,想搞明白具体的启动流程和分区信息等。



  • @王哥 感谢大佬指点 由于我是第一次接触到全志的板子 对其头部校验这些不是很明白 ,大佬方便详细讲解一下么? 我想使用 dd if命令来单独创建生成。



  • uboot部分在最前面的20MB,分区工具显示的未分配空间里面;
    两个方法可以分析:
    1、将20MB拷贝成一个镜像出来,用16进制去看里面内容;
    2、将镜像拷贝到SD卡里面,插入D1板子,查看uboot启动log


Log in to reply