您尚未登录。

楼主 # 2023-09-14 09:22:56

genius
会员
注册时间: 2023-08-08
已发帖子: 11
积分: 111

xfel 直接启动 D1 / D1-H Linux内核

xfel 可以启动内核,晕哥的xfel 在D1上通过直接加载可以启动SPL 和 opensbi;同样的,根据道理,我把需要的文件按照地址全部加载到对应的位置,那不是可以直接启动内核,按照这个思路,我就一步一步加载;
(1)首先,根据理解,SPL用于初始化时钟,DDR和搬运数据,但是XFEL已经实现了,所以,我直接用xfel加载opensbi后的代码:
        .\xfel.exe write 0x41fc0000 fw_jump.bin
        .\xfel.exe write 0x42000000 u-boot.fex
        .\xfel.exe write 0x45000000 boot.img 
        结果会卡在start kernel,后面五打印,因此我在内核启动前加了一段汇编的电灯代码,结果发现内核确实运行了,灯点亮了。因此我怀疑后面的解析出错,我往后翻了以下,出错的地方只可能是设备树解析,因此我怀疑设备树有问题,但是bootm中的设备树确实传参正确。
(2)后面我翻了SPL的代码,又找到了一段设备树的读取加载,所以更新了以下命令】
        .\xfel.exe write 0x41fc0000 fw_jump.bin
        .\xfel.exe write 0x42000000 u-boot.fex
        .\xfel.exe write 0x45000000 boot.img 
        .\xfel.exe write 0x20000 boot0_nand_sun20iw1p1.bin
         .\xfel.exe write 0x42200000 sunxi.dtb
最终实现的效果,正常启动内核;
         Starting kernel ...

[    0.000000] Linux version 5.4.61 (ubuntu@ubuntu1804) (riscv64-unknown-linux-gnu-gcc (C-SKY RISCV Tools V1.8.4 B20200702) 8.1.0, GNU ld (GNU Binutils) 2.32) #1 PREEMPT Mon Sep 11 09:21:39 UTC 2023
[    0.000000] cma: Reserved 16 MiB at 0x000000005f000000
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000040000000-0x000000005fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x000000005fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000005fffffff]
[    0.000000] elf_hwcap is 0x20112d
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129280
[    0.000000] Kernel command l

离线

楼主 #2 2023-09-14 10:00:07

genius
会员
注册时间: 2023-08-08
已发帖子: 11
积分: 111

Re: xfel 直接启动 D1 / D1-H Linux内核

Fw bin是Opensbi 的二进制文件,boot0是spl 的二进制文件,
上述的启动流程还差了一步,就是加载dsp ,但是dsp的加载地址和内核的地址重复了,

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn