RT-Thread / rt-thread

RT-Thread is an open source IoT Real-Time Operating System (RTOS).
https://www.rt-thread.io
Apache License 2.0
10.6k stars 5.03k forks source link

duo: little core does not work #8978

Closed unicornx closed 4 months ago

unicornx commented 6 months ago

最新主线上的 duo 的小核无法工作,回退到 5.1.0 正常

unicornx commented 6 months ago

[bsp/cvitek]update gpio driver (#8946) 这笔 patch 会导致小核 crash,gpio 部分的代码似乎有问题。具体原因可能是中断源设置问题。

adrain-yu commented 6 months ago

RT_HW_HEAP_BEGIN:83f74300 RT_HW_HEAP_END:84000000 size: 572672

\ | /

unicornx commented 6 months ago

fixed with https://github.com/RT-Thread/rt-thread/pull/8980

unicornx commented 4 months ago

貌似主线上的这个问题并没有解决,看到的现象和 @adrain-yu 的一样。reopen

unicornx commented 4 months ago

这个问题和 #8889 有关

该 pr 在 libcpu/risc-v/common/trap_common.c 中定义了一个 weak 的函数 handle_trap, 这个函数和 libcpu/risc-v/rv64/trap.c 中的 handle_trap 同名,这导致对于 CPU ='rv64' 的产品的 64 bit handle_trap 会被同名的空函数覆盖掉。

估计这个问题会影响所有 CPU ='rv64' 的产品,搜了一下,这包括:

unicornx commented 4 months ago

99c4640d96c35679c36c91fb2985b59

flyingcys commented 4 months ago

如果bsp里面实现了trap_entry,libcpu里面也有,应该报错重复定义才对,编译不过。 是不是把trap_entry加上weak就可以了

unicornx commented 4 months ago

如果bsp里面实现了trap_entry,libcpu里面也有,应该报错重复定义才对,编译不过。 是不是把trap_entry加上weak就可以了

8889 那笔修改对 trap_entry 是加了 weak 的,trap_entry 上加了 weak 后就不会有问题,问题是出在 handle_trap 上,他加的那个 common 里的 handle_trap 和 rv64 里那个 同名,而且都是 weak,所以对 duo,gcc 编译时选择了 common 里的,导致了问题

unicornx commented 4 months ago

fixed in #9189