1、HPM_SDK FreeRTOS LTS特性总览
HPM SDK V1.6.0中FreeRTOS升级前后特性支持对比:
特性 | V10.4.4 | LTS 202210.01 |
中断抢占 | √ | √ |
RISCV浮点扩展支持 | √ | √ |
RISCV中断向量模式支持 | × | √ |
Tickless mode支持 | × | √ |
DSP扩展支持 | × | √ |
二、FreeRTOS新特性适配
2.1 支持tickless模式
HPM_SDK1.6.0中使能了FreeRTOS的tickless模式,根据SOC进入低功耗模式的级别不同,分为wait模式和stop模式。
使能wait模式:在CMakeLists.txt中增加set(CONFIG_FREERTOS_TICKLESS 1),参考例程:samples\rtos\freertos\freertos_tickless_wait_mode
set(CONFIG_FREERTOS 1)
set(CONFIG_FREERTOS_TICKLESS 1)
使能stop模式:在CMakeLists.txt中增加set(CONFIG_FREERTOS_TICKLESS 1)以及set(CONFIG_FREERTOS_TICKLESS_USE_STOP_MODE 1)参考例程:samples\rtos\freertos\freertos_tickless_stop_mode。
Set(CONFIG FREERTOS 1)
Set(CONFIG FREERTOS TICKLESS 1)
Set(CONFIG FREERTOS TICKLESS USE STOP MODE 1)
两种模式区别:
1. Wait模式下,只有CPU会进入低功耗模式,CPU核心时钟会被关闭。但在收到中断时 CPU 能够立即唤醒进行处理。不会影响外设和SOC其他模块的工作状态。理论上会影响中断响应的实时性,除此外不会有其他影响。
2. Stop模式下,CPU会进入低功耗模式,并且会触发SOC的低功耗状态,允许关闭更多的资源,且提供灵活的配置选项。除了会影响中断响应的实时性外,一些外设的功能可能会受影响。
关于低功耗两种模式差异的详细解释,开发者可以查看UM手册的低功耗管理章节。
2.2 riscv中断向量模式
在CMakeLists.txt中将
sdk_compile_definitions(-DUSE_NONVECTOR_MODE=1)
改为sdk_compile_definitions(-DUSE_NONVECTOR_MODE=0)或者将其注释掉或删除即可。
向量模式支持gcc、segger、IAR。
2.3 临界段接口更改
FreeRTOS LTS202210.01 在RSIC-V中取消了vTaskEnterCritical和vTaskExitCritical接口,取而代之的是portENTER_CRITICAL和portEXIT_CRITICAL。用户需要将用户层代码进行修改以适配FreeRTOS的升级。
2.4 增加了对DSP上下文的保存和恢复
在HPM_SDK V1.6.0中,可以在FreeRTOS中正常使用dsp扩展了。参考samples/dsp中CMakeLists中的配置。
2.5 portCRITICAL_NESTING_IN_TCB宏的值从1改为0
此改动是FreeRTOS的riscv port部分的改动,它会使任务TCB中原有的变量uxCriticalNesting被删除。如果用户的代码中使用了此变量,或者有手动解析TCB内容的代码,那么需要进行代码修改工作,使用全局变量xCriticalNesting可以替代TCB中的uxCriticalNesting;反之不需要进行修改。
三、在HPM_SDK1.6.0中使用之前版本的FreeRTOS
在HPM_SDK V1.6.0中使用之前版本的FreeRTOS,有两种方式:
方式一
直接将middleware/FreeRTOS目录替换成老版本的middleware/FreeRTOS目录。
方式二
在middleware目录下增加老版本的源码,此时SDK中同时存在两个版本的Free RTOS,依靠工程CMakeLists.txt中的配置进行选择。
1. 将老版本的middleware/FreeRTOS文件夹重命名为middleware/FreeRTOS_old,并复制到V1.6.0目录下。
2. 修改middleware/CMakeLists.txt,在文档末尾增加add_subdirectory_ifdef(CONFIG_FREERTOS_OLD FreeRTOS_old)
3. 修改工程目录下的CMakeLists.txt,将set(CONFIG_FREERTOS 1)修改为set(CONFIG_FREERTOS_OLD 1),其他地方不需要修改。
全部0条评论
快来发表一下你的评论吧 !