μC/OS-II不可重入函数中断破坏分析与移植注意事项
不可重入函数的中断问题,确实挺容易被忽略,尤其在做μC/OS-II 移植时。你一不小心在中断里调了个不安全的函数,结果整个系统就不稳定了,调起来还贼麻烦。这篇文章就挺有意思,讲得比较通透,顺着讲清了不可重入是怎么被打断的,配合几个资源,能把整个μC/OS-II 的移植流程搞明白。
μC/OS-II 的不可重入函数问题,核心在于中断打断了某些“没准备好被打断”的函数。像是malloc
、printf
这些常用函数,多其实都不是线程安全的,用在中断里风险就比较高。
OS_CPU_A.ASM 的写法也挺关键,像上下文切换、堆栈初始化,都是靠它实现的。文里提到的《OS_CPU_AASM 编写》这篇文章,讲得挺细,尤其是汇编部分,适合熟悉下移植底层结构。
同步与通信的示例也值得看一下,《μC/OS-II 程序设计示例》里就用信号量、邮箱这些同步手段配合实际例子来讲,清楚直观,适合你上手改代码的时候参照着用。
如果你刚入门实时操作系统,建议顺带看下《μC/OS-II 第 2 版》,书和文章配合着学,理解会更扎实一些。源码部分也别错过,《内核源码解析》里有不少注释讲得蛮到位。
移植μC/OS-II 说难不难,说简单也容易出坑。多看几篇例子,多试几种中断方式,你就知道哪种场景下该避开什么操作了。如果你正好在搞 STM32、51 这类平台,那这些资源真的挺实用的。
1.22MB
文件大小:
评论区