eclipse-threadx / threadx

Eclipse ThreadX is an advanced real-time operating system (RTOS) designed specifically for deeply embedded applications.
https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/index.md
MIT License
2.87k stars 782 forks source link

RISCV GNU port support #213

Open lingjian0514 opened 1 year ago

lingjian0514 commented 1 year ago

HI: when will you add support for riscv gun port and gnu smp_port?

goldscott commented 1 year ago

We should have a RISC-V GNU port at the end of October/beginning of November!

goldscott commented 1 year ago

Hi @lingjian0514 - we are still working on the GNU port. We are targeting both 32-bit and 64-bit architectures, as well as the various options (e.g., none/single/double floating point), so testing is taking a bit longer.

carll00226 commented 1 year ago

Hi scott: We are about to port threadx to a riscv smp system, and we have simulation for a riscv platform. Do you have an experimental version of GNU SMP threadx which we can refer to , and we can also do some test for it?

goldscott commented 1 year ago

Hi @carll00226 - we do not have a RISC-V SMP port yet. I will let you know when one is available!

carll00226 commented 1 year ago

Hi,scott: I have finished a threadx port to a riscv smp system, but there are some bugs when testing.
I create 2 tasks, task A send a message queue and then call tx_thread_sleep(5) in a while loop, and task B just receive the message. after the tx_thread_sleep, both task A and task B will sleep, and call tx_thread_system_suspend->tx_thread_system_return to schedule loop, and will clear tx_thread_current_ptr to 0 in tx_thread_system_return. After 5 ticks, it will call tx_timer_interrupt->tx_timer_expiration_process->tx_thread_system_resume->tx_thread_system_return, and in tx_thread_system_return will get tx_thread_current_ptr and set sp to it , but now tx_thread_current_ptr is NULL. I only find the tx_thread_current_ptr will be set in tx_thread_schedule, and don't know what's wrong with my process. Would you please give me some advice. Thanks so much!

carll00226 commented 1 year ago

I have fixed the bug above.

goldscott commented 1 year ago

Hi @carll00226 - have you pushed your port anywhere? I'd love to take a look.

wanglehui commented 1 year ago

Hi scott: When will you release the RISC-V GNU port?

wanglehui commented 1 year ago

Why Threadx port for RISC-V part is so sloppy? (1) RV64 port is bad for __riscv_float_abi_single (2) Both rv32 and rv64 dot have normal trap handle function (what is the timer1_plic_IRQHandler or __minterrupt_000007???)

why not supply unified port for both RV32/RV64 and FPU-Single/Double/None ?

goldscott commented 1 year ago

@wanglehui - I am no longer on the Azure RTOS team, so I was not able to complete the 64-bit port. It seems it was released prematurely. There are still some bugs in the floating point that Microchip is helping us fix. The 64-bit port should also work with 32-bit architectures.