工程目录存放于GITHUB链接
WCH Qingke内核是基于RISC-V的内核。做了很多改进,包括硬件压栈和中断嵌套。在RTOS官方提供的RISC-V内核移植例程中,不能发挥出WCH Qingke内核的特性,效率降低。沁恒官方EVT中处理效率依旧一般,没有发挥出Qingke内核的优势。
移植主要点:
1. 中断向量表修改,默认中断向量表不同于RISC-V官方,在一部分异常发生时都是进入HardFault中断。所以依旧使用Qingke的中断向量表模式来进行中断管理。但是将用户编写的外部中断都统一使用汇编函数入口进行管理,所以不在需要使用__attribute__((interrupt("WCH-Interrupt-fast")))或者__attribute__((interrupt()))修饰。在汇编总入口中,第一级中断进入时,会打开中断嵌套,切换为中断栈。
2. 使能中断嵌套会导致每个中断执行会多约10个指令周期,中断嵌套使能通过工程右键 -> properties -> c/c++ Build -> settings -> tool settings -> GNU RISC-V Cross Assembler -> Preprocessor 右边输入框Defined symbols中的 ENABLE_INTERRUPT_NEST=0 修改为 ENABLE_INTERRUPT_NEST=1 即可。
3. 使用硬件压栈(不可关闭),保证运行速度。
移植目录
目前已经移植的目录
CH583/2/1
RTOS | 状态 |
---|---|
FreeRTOS | 已完成 |
RT-Thread | 已完成 |
liteos_m | 已完成 |
CH592/1
RTOS | 状态 |
---|---|
FreeRTOS | 已完成 |
RT-Thread | 已完成 |
liteos_m | 已完成 |
CH32V208
RTOS | 状态 |
---|---|
FreeRTOS | 已完成 |
RT-Thread | 已完成 |
liteos_m | 已完成 |
CH32V203
RTOS | 状态 |
---|---|
FreeRTOS | 进行中 |
RT-Thread | 进行中 |
liteos_m | 进行中 |
CH32V303/5/7
RTOS | 状态 |
---|---|
FreeRTOS | 进行中 |
RT-Thread | 进行中 |
liteos_m | 进行中 |
WCH芯片内核版本
WCH Qingke内核是基于RISC-V的内核。
芯片型号 | 内核版本 | 浮点 |
---|---|---|
CH32V103 | Qingke V3A | 不支持 |
CH583/2/1 | Qingke V4A | 不支持 |
CH32V203 | Qingke V4B | 不支持 |
CH592/1 | Qingke V4C | 不支持 |
CH32V208 | Qingke V4C | 不支持 |
CH32L103 | Qingke V4C | 不支持 |
CH32V303/5/7 | Qingke V4F | 支持 |