HPM SDK 1.6.0 FreeRTOS LTS更改及适配指南

2024-07-05
浏览量:
188


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中取消了vTaskEnterCriticalvTaskExitCritical接口,取而代之的是portENTER_CRITICALportEXIT_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),其他地方不需要修改。


-END-


“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,总部位于上海,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市浦东软件园区,并在天津、苏州、深圳和杭州均设立分公司。核心团队来自世界知名半导体公司管理团队,具有15年以上,超过20个SoC的丰富的研发及管理经验。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产的高性能通用MCU产品包含HPM6700/6400、HPM6300、HPM6200、HPM5300、HPM6800及HPM6E00系列,性能领先国际同类产品并通过AEC-Q100认证。公司已完成ISO9001质量管理认证和ISO 26262/IEC61508功能安全管理体系双认证,全力服务中国乃至全球的工业、汽车和能源市场。更多信息,敬请访问 https://hpmicro.com/