FreeRTOS

1、MPU 疑问

https://forums.freertos.org/t/questions-about-mpu-implement-on-armv8-m/17915

2、代码优化 a

ARM_CM23 目录下的 vRestoreContextOfFirstTask 有如下代码,其中 ldmia 更新 r2 后又手动恢复 r2.
ref : https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Instruction-Details/Alphabetical-list-of-instructions/LDM-LDMIA-LDMFD--Thumb-?lang=en

 ARM_CM33 目录下的 vRestoreContextOfFirstTask 使用如下方案:

Q :  ARM_CM33 使用单条指令完成了原来3条指令的功能,为什么 CM23 不使用这种指令方案?

A : CM23 只支持 ARMv8-M baseline 指令集,而 LDMDB 指令和 16个寄存器的搬移目标都是 Armv8-M Main Extension only 才有的功能,所以 CM23 无法使用 CM33 类似的指令;

但针对 CM23,也可以做这种优化:可以将两条指令改为 ldmia r2, {r0, r3-r6};通过删除感叹号,不更新 r2 即可。

3、略微提升内存分配时的拆分速度  => PR已合入

https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/738

https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/743

4、heap 属性疑问

heap_4 把 heap 数据定义为 privileged data,而动态创建的 unprivileged task 使用的 stack 是从 heap 申请的

unprivileged task 能正常使用 privileged heap 吗?(需搭环境测试下)

A:unprivileged task 动态创建时,只有 TCB 是动态申请的,stack 需要用户自己提供;使用者需要提供 unprivileged 的ram作为 stack。

5、eTaskGetState 为什么不支持 NULL ? => 被拒绝,理由是不值得,没必要。

https://forums.freertos.org/t/why-doesnt-etaskgetstate-support-null-parameter/17978

6、heap size 计算   => PR已合入

https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/748

https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/749

7、task 优先级设置与优先级继承的处理   => PR已合入

https://forums.freertos.org/t/question-about-vtaskpriorityset-with-mutex-enabled/17989

https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/760

 

posted on 2023-08-01 00:10  MoralHao  阅读(92)  评论(0)    收藏  举报