Skip to content

[Feature] bsp/rockchip/rk3500怎么在3588上使用? #11150

Closed

Description

@ycy-111-666

Describe problem solved by the proposed feature

我对着编译流程执行过后通过SD卡装载到香橙派5B(rk3588s)上,采用之前的设备树文件,运行到start kernel就不动了,需要适配不同命令吗?另外Earlycon中的地址有所不同,需要自己配置吗?

Describe your preferred solution

No response

Describe possible alternatives

No response

Activity

  1. BernardXiong commented on Jan 27, 2026

    @BernardXiong
    Member

    好像不完全支持到3588?之前记得好像主要是rk3566和rk3568。

  2. GuEe-GUI commented on Feb 3, 2026

    @GuEe-GUI
    Contributor

    3500 在香橙派 3588 测试过的,是可以运行的,可以把具体的问题说详细些吗?

  3. ycy-111-666 commented on Feb 3, 2026

    @ycy-111-666
    Author

    3500 在香橙派 3588 测试过的,是可以运行的,可以把具体的问题说详细些吗?

    我手中的开发板是香橙派5B(rk3588s),项目拉下来之后编译出bin文件,我将SD卡中boot.cmd内容修改为
    fatload mmc 0:1 0x480000 rtthread.bin
    cp.b 0xeb9f9c08 0x8300000 0x20000
    fdt addr 0x8300000
    fdt resize 0x1000
    booti 0x480000 - 0x8300000并生成为boot.scr,上电启动就发现运行到start kernel...后就没有输出了。同时上周我参加了师资培训,看到一个文件中修改了0xfeb50000相关信息,但我的boot目录下没有对应的路径。我目前依靠的SD卡之前的系统是Ubuntu20.04。

  4. GuEe-GUI commented on Feb 3, 2026

    @GuEe-GUI
    Contributor

    流程看上去是正确的,应该是启动地址需要调整,晚些我再发给测试地址出来

  5. ycy-111-666 commented on Feb 3, 2026

    @ycy-111-666
    Author

    流程看上去是正确的,应该是启动地址需要调整,晚些我再发给测试地址出来

    十分感谢,我比较希望可以利用RTT在3588上实现复杂功能

  6. GuEe-GUI commented on Feb 3, 2026

    @GuEe-GUI
    Contributor

    看了一下,主线启动地址和之前测试是一样的,Earlycon 是怎么设置的呢,或者可以试试 booti 0x480000 - ${fdt_control},然后提前修改 boot.scr 里面的 bootargs

  7. ycy-111-666 commented on Feb 3, 2026

    @ycy-111-666
    Author

    看了一下,主线启动地址和之前测试是一样的,Earlycon 是怎么设置的呢,或者可以试试 booti 0x480000 - ${fdt_control},然后提前修改 boot.scr 里面的 bootargs

    我也疑惑Earlycon该在哪里配置,之前的cp.b是利用的原有设备树配置

  8. GuEe-GUI commented on Feb 3, 2026

    @GuEe-GUI
    Contributor

    earlycon是在boot分区的配置脚本配置的,可以在boot.scr/cmd 里面修改,就写在bootargs里面就可以

  9. ycy-111-666 commented on Feb 3, 2026

    @ycy-111-666
    Author

    earlycon是在boot分区的配置脚本配置的,可以在boot.scr/cmd 里面修改,就写在bootargs里面就可以

    学到了,明天我会试着学习配置一下

  10. ycy-111-666 commented on Feb 4, 2026

    @ycy-111-666
    Author

    earlycon是在boot分区的配置脚本配置的,可以在boot.scr/cmd 里面修改,就写在bootargs里面就可以

    1. 我今天尝试了将boot.cmd修改为

    setenv bootargs "earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000"

    fatload mmc 0:1 0x480000 rtthread.bin

    fatload mmc 0:1 0x8300000 opi5b.dtb

    fdt addr 0x8300000

    fdt resize 0x1000

    fdt set /chosen bootargs "${bootargs}"

    booti 0x480000 - 0x8300000

    目前输出:
    Starting kernel ...

    [I/rtdm.ofw] Booting RT-Thread on physical CPU 0x0
    [I/rtdm.ofw] Machine model: Orange Pi 5
    [I/rtdm.ofw] Earlycon: uart8250 at MMIO/PIO 0x00000000feb50000 (options '')
    [I/rtdm.ofw] Memory node(1) ranges: 0x0000000000200000 - 0x00000000f0000000
    [I/rtdm.ofw] Memory node(1) ranges: 0x0000000100000000 - 0x00000003fc000000
    [I/rtdm.ofw] Memory node(1) ranges: 0x00000003fc500000 - 0x00000003fff00000
    [I/rtdm.ofw] Memory node(1) ranges: 0x00000004f0000000 - 0x0000000500000000
    [E/rtdm.ofw] Allocating reserved memory in setup is not yet supported
    [I/mm.memblock] System memory:
    [I/mm.memblock] [0x0000000000200000, 0x00000000f0000000]
    [I/mm.memblock] [0x0000000100000000, 0x00000003fc000000]
    [I/mm.memblock] [0x00000003fc500000, 0x00000003fff00000]
    [I/mm.memblock] [0x00000004f0000000, 0x0000000500000000]
    [I/mm.memblock] Reserved memory:
    [I/mm.memblock] [0x0000000000110000, 0x00000000001f0000]
    [I/mm.memblock] [0x0000000000480000, 0x0000000000768000]
    [I/mm.memblock] [0x0000000000768000, 0x0000000004768000]
    [I/mm.memblock] [0x0000000004768000, 0x0000000004968000]
    [I/mm.memblock] [0x0000000004968000, 0x00000000049a6000]
    [I/mm.memblock] [0x0000000008300000, 0x000000000833e000]
    [I/mm.memblock] physical memory region [0x0000000000200000-0x0000000000480000] installed to system page
    [I/mm.memblock] physical memory region [0x00000000049a6000-0x0000000008300000] installed to system page
    [I/mm.memblock] physical memory region [0x000000000833e000-0x00000000f0000000] installed to system page
    [I/mm.memblock] physical memory region [0x0000000100000000-0x00000003fc000000] installed to system page
    [I/mm.memblock] physical memory region [0x00000003fc500000-0x00000003fff00000] installed to system page
    [I/mm.memblock] physical memory region [0x00000004f0000000-0x0000000500000000] installed to system page
    [I/mm.memblock] 17098 MB memory installed to system page
    [I/osi.psci] Using PSCI v1.1 Function IDs
    [W/rtdm.ofw] Console will probably fail to setup

    然后就停住了。
    这个opi5b.dtb是从 Linux 镜像里拿出来的,因为我用原本的cp.b会循环报错:
    please use: addr2line -e rtthread.elf -a -f
    0xffff00000053b30c 0xffff00000050d170 0xffff00000050d610 0xffff000000514dd8 0xffff0000005669f4 0xffff0000005669d8
    [I/rtdm.power] Shutdown
    [E/libcpu.trap] Kernel fault from interrupt/critical section
    exception info:
    esr.EC :0x25
    esr.IL :0x01
    esr.ISS:0x00000006
    epc :0x0xffff00000053b30c
    Data abort
    fault addr = 0x0000000000000030
    abort caused by read instruction
    Translation fault, second level
    Execption:
    X00:0x(nil) X01:0x0x00ffff000000773828 X02:0x0x0000000000000007b8 X03:0x0x00ffff000000769050
    X04:0x0x00602c63606e6aff73 X05:0x(nil) X06:0x0x00fefefefefefefeff X07:0x0x000000000000004200
    X08:0x0x00ffff00000064fc88 X09:0x0x000000010000000000 X10:0x0x0000000000ffffffd0 X11:0x0x000000000000000006
    X12:0x0x00000000000001869f X13:0x0x0000000000000002b4 X14:0x0x0000000000eb9f7a9c X15:0x0x0000000000ffffffff
    X16:0x0x000000000000000084 X17:0x0x000000000000000032 X18:0x0x0000000000eb9ffcd0 X19:0x0x00ffff0000005669dc
    X20:0x0x0000000000edd77b30 X21:0x0x000000000008300000 X22:0x(nil) X23:0x(nil)
    X24:0x(nil) X25:0x0x000000000000650000 X26:0x0x0000000000edc2e28c X27:0x(nil)
    X28:0x0x0000000000ebc4e990 X29:0x0x00ffff00000064feb0 X30:0x0x00ffff00000050d174
    SP_EL0:0x(nil)
    SPSR :0x0x0000000000600003c5
    EPC :0x0x00ffff00000053b30c
    [E/libcpu.trap] current thread: (null)
    thread cpu bind pri status sp stack size max used left tick error tcb addr usage

    另外您提到的 {fdt_control} 我这里应该没有
    opi# bdinfo
    arch_number = 0x00000000
    boot_params = 0x00000000
    DRAM bank = 0x00000000
    -> start = 0x00200000
    -> size = 0xEFE00000
    baudrate = 1500000 bps
    TLB addr = 0xEFFF0000
    relocaddr = 0xEDC2C000
    reloc off = 0xEDA2C000
    irq_sp = 0xEB9F9BF0
    sp start = 0xEB9F9BF0
    Early malloc usage: 3950 / 80000
    fdt_blob = 00000000eb9f9c08

    当下我的做法需要进行哪些修改呢?

  11. ycy-111-666 commented on Feb 4, 2026

    @ycy-111-666
    Author

    earlycon是在boot分区的配置脚本配置的,可以在boot.scr/cmd 里面修改,就写在bootargs里面就可以

    1. 我今天尝试了将boot.cmd修改为

    setenv bootargs "earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000"

    fatload mmc 0:1 0x480000 rtthread.bin

    fatload mmc 0:1 0x8300000 opi5b.dtb

    fdt addr 0x8300000

    fdt resize 0x1000

    fdt set /chosen bootargs "${bootargs}"

    booti 0x480000 - 0x8300000

    目前输出: Starting kernel ...

    [I/rtdm.ofw] Booting RT-Thread on physical CPU 0x0 [I/rtdm.ofw] Machine model: Orange Pi 5 [I/rtdm.ofw] Earlycon: uart8250 at MMIO/PIO 0x00000000feb50000 (options '') [I/rtdm.ofw] Memory node(1) ranges: 0x0000000000200000 - 0x00000000f0000000 [I/rtdm.ofw] Memory node(1) ranges: 0x0000000100000000 - 0x00000003fc000000 [I/rtdm.ofw] Memory node(1) ranges: 0x00000003fc500000 - 0x00000003fff00000 [I/rtdm.ofw] Memory node(1) ranges: 0x00000004f0000000 - 0x0000000500000000 [E/rtdm.ofw] Allocating reserved memory in setup is not yet supported [I/mm.memblock] System memory: [I/mm.memblock] [0x0000000000200000, 0x00000000f0000000] [I/mm.memblock] [0x0000000100000000, 0x00000003fc000000] [I/mm.memblock] [0x00000003fc500000, 0x00000003fff00000] [I/mm.memblock] [0x00000004f0000000, 0x0000000500000000] [I/mm.memblock] Reserved memory: [I/mm.memblock] [0x0000000000110000, 0x00000000001f0000] [I/mm.memblock] [0x0000000000480000, 0x0000000000768000] [I/mm.memblock] [0x0000000000768000, 0x0000000004768000] [I/mm.memblock] [0x0000000004768000, 0x0000000004968000] [I/mm.memblock] [0x0000000004968000, 0x00000000049a6000] [I/mm.memblock] [0x0000000008300000, 0x000000000833e000] [I/mm.memblock] physical memory region [0x0000000000200000-0x0000000000480000] installed to system page [I/mm.memblock] physical memory region [0x00000000049a6000-0x0000000008300000] installed to system page [I/mm.memblock] physical memory region [0x000000000833e000-0x00000000f0000000] installed to system page [I/mm.memblock] physical memory region [0x0000000100000000-0x00000003fc000000] installed to system page [I/mm.memblock] physical memory region [0x00000003fc500000-0x00000003fff00000] installed to system page [I/mm.memblock] physical memory region [0x00000004f0000000-0x0000000500000000] installed to system page [I/mm.memblock] 17098 MB memory installed to system page [I/osi.psci] Using PSCI v1.1 Function IDs [W/rtdm.ofw] Console will probably fail to setup

    然后就停住了。 这个opi5b.dtb是从 Linux 镜像里拿出来的,因为我用原本的cp.b会循环报错: please use: addr2line -e rtthread.elf -a -f 0xffff00000053b30c 0xffff00000050d170 0xffff00000050d610 0xffff000000514dd8 0xffff0000005669f4 0xffff0000005669d8 [I/rtdm.power] Shutdown [E/libcpu.trap] Kernel fault from interrupt/critical section exception info: esr.EC :0x25 esr.IL :0x01 esr.ISS:0x00000006 epc :0x0xffff00000053b30c Data abort fault addr = 0x0000000000000030 abort caused by read instruction Translation fault, second level Execption: X00:0x(nil) X01:0x0x00ffff000000773828 X02:0x0x0000000000000007b8 X03:0x0x00ffff000000769050 X04:0x0x00602c63606e6aff73 X05:0x(nil) X06:0x0x00fefefefefefefeff X07:0x0x000000000000004200 X08:0x0x00ffff00000064fc88 X09:0x0x000000010000000000 X10:0x0x0000000000ffffffd0 X11:0x0x000000000000000006 X12:0x0x00000000000001869f X13:0x0x0000000000000002b4 X14:0x0x0000000000eb9f7a9c X15:0x0x0000000000ffffffff X16:0x0x000000000000000084 X17:0x0x000000000000000032 X18:0x0x0000000000eb9ffcd0 X19:0x0x00ffff0000005669dc X20:0x0x0000000000edd77b30 X21:0x0x000000000008300000 X22:0x(nil) X23:0x(nil) X24:0x(nil) X25:0x0x000000000000650000 X26:0x0x0000000000edc2e28c X27:0x(nil) X28:0x0x0000000000ebc4e990 X29:0x0x00ffff00000064feb0 X30:0x0x00ffff00000050d174 SP_EL0:0x(nil) SPSR :0x0x0000000000600003c5 EPC :0x0x00ffff00000053b30c [E/libcpu.trap] current thread: (null) thread cpu bind pri status sp stack size max used left tick error tcb addr usage

    另外您提到的 {fdt_control} 我这里应该没有 opi# bdinfo arch_number = 0x00000000 boot_params = 0x00000000 DRAM bank = 0x00000000 -> start = 0x00200000 -> size = 0xEFE00000 baudrate = 1500000 bps TLB addr = 0xEFFF0000 relocaddr = 0xEDC2C000 reloc off = 0xEDA2C000 irq_sp = 0xEB9F9BF0 sp start = 0xEB9F9BF0 Early malloc usage: 3950 / 80000 fdt_blob = 00000000eb9f9c08

    当下我的做法需要进行哪些修改呢?

  12. ycy-111-666 commented on Feb 4, 2026

    @ycy-111-666
    Author

    我认为会是设备树的问题

  13. GuEe-GUI commented on Feb 4, 2026

    @GuEe-GUI
    Contributor

    [W/rtdm.ofw] Console will probably fail to setup

    这块可以考虑修改 bootargs 的 console 为 console=ttyFIQ0,1500000n8

    对于系统启动,最简单的办法:boot.scr/cmd 中原本加载的镜像默认是 linux 文件,你改成 rtthread 文件就可以

  14. ycy-111-666 commented on Feb 4, 2026

    @ycy-111-666
    Author

    @GuEe-GUI 目前尝试了自己写的cmd和修改原本的cmd,上电后都是卡在[W/rtdm.ofw] Console will probably fail to setup,给您看下我修改的部分,并且我会附上完整的文件。
    #setenv earlycon "off"
    setenv earlycon "on"

    #setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
    setenv bootargs "earlycon=uart8250,mmio32,0xfeb50000 root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"

    #load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
    #load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
    load ${devtype} ${devnum} 0x480000 ${prefix}rtthread.bin

    #load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
    load ${devtype} ${devnum} 0x8300000 ${prefix}dtb/${fdtfile}
    fdt addr 0x8300000
    fdt resize 65536

    #booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
    fdt set /chosen bootargs "${bootargs}"
    booti 0x480000 - 0x8300000

    同时我也尝试修改了console=ttyFIQ0,1500000n8,效果是一样的。

    boot_cmd.txt

  15. 10 remaining items

  16. GuEe-GUI commented on Feb 5, 2026

    @GuEe-GUI
    Contributor

    RT_DEBUGING_AUTO_INIT

  17. ycy-111-666 commented on Feb 5, 2026

    @ycy-111-666
    Author

    RT_DEBUGING_AUTO_INIT

    我给它加上了,输出了这些

    Image
  18. GuEe-GUI commented on Feb 5, 2026

    @GuEe-GUI
    Contributor

    看样子还是配置需要调整,晚上我这边再试试看

  19. GuEe-GUI commented on Feb 9, 2026

    @GuEe-GUI
    Contributor

    先用这份补丁顶一下吧:#11190

    目前在 ROCK 3A(rk3568)上正常运行

    Image
  20. ycy-111-666 commented on Feb 10, 2026

    @ycy-111-666
    Author

    先用这份补丁顶一下吧:#11190

    我尝试在orangepi 5B (rk3588s) 上运行出现两个问题

    Image Image
  21. GuEe-GUI commented on Feb 10, 2026

    @GuEe-GUI
    Contributor

    看上去是 DMA 内存申请失败了,bootargs 添加 “cma=4M coherent_pool=2M” 试试
    后面卡的问题应该和 DMA 内存无关,方便加点更详细的调试代码吗?(可能是驱动让板子下电了,在自动初始化上面加点for循环延迟一下看看卡哪一步了)因为我这边的香橙派不会

  22. ycy-111-666 commented on Feb 10, 2026

    @ycy-111-666
    Author

    cma=4M coherent_pool=2M

    添加参数后dma报错消失。我先找找在哪里添加延迟吧,之前我也怕电不行换了个瓦数高的。

  23. ycy-111-666 commented on Feb 10, 2026

    @ycy-111-666
    Author

    在自动初始化上面加点for循环延迟一下看看卡哪一步了)因为我这边的香橙派不会

    排查发现在rt_ofw_console_setup停住,我把cmd中console配置提前就通过了,目前显示出来logo

    Image

    中途报错

    Image

    以及

    Image

    最后貌似卡在了SD卡解析?

    Image
  24. GuEe-GUI commented on Feb 10, 2026

    @GuEe-GUI
    Contributor

    这里死等可能 bootargs里面linux默认加了rootwait,去掉就行,或者把root=改成你能挂载的sd设备,格式应该是sd0p1什么的

  25. GuEe-GUI commented on Feb 10, 2026

    @GuEe-GUI
    Contributor

    cmd 的 console 提前就行,整个 cmd 是什么样的啊?

  26. ycy-111-666 commented on Feb 10, 2026

    @ycy-111-666
    Author

    cmd 的 console 提前就行,整个 cmd 是什么样的啊?

    写到这里了,用原始的做了些修改,这方面属于初学者
    cmd.txt

  27. GuEe-GUI commented on Feb 10, 2026

    @GuEe-GUI
    Contributor

    你的 bootargs 加了 rootwait 的,就会等待设备出现挂载,暂时去掉这个参数就行,系统正常后加回来,然后把 boot.scr/cmd 里面的(文件最前面)rootdev 改成 rtt 对应 sdio 分区的设备名称,比如 sd0p1,rootfstype 改成对应的文件系统名称,比如 elm 就写 elm。

    部分 log 即便显示错误也是没关系的,可能是 feature 不支持或者从设备不存在等问题。

  28. ycy-111-666 commented on Feb 10, 2026

    @ycy-111-666
    Author

    @GuEe-GUI 万分感谢,卓越的工程师。
    我去掉rootwait,将rootdev指向uuid后进入了系统:

    Image
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions