FreeRTOS
1、MPU 疑问
https://forums.freertos.org/t/questions-about-mpu-implement-on-armv8-m/17915
2、代码优化 a
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