嵌入式系统开发中的关键问题与解决方案
1. 编码风格与并发问题
1.1 编码风格的重要性与陷阱
在编码过程中,拥有明确的编码风格至关重要。缺乏定义好的编码风格是最大的错误,不同开发组的风格可能不同,但在特定项目或组内应尽可能保持一致。同时,不要花费过多时间争论使用哪种风格,若开发者无法达成一致,可通过妥协来推进,比如抛硬币或轮流制定规则。一致性是关键,也可以借鉴他人的风格指南并进行修改。
所谓的自文档化代码常被用来为无注释、无设计和无架构描述的代码辩护。虽然有些代码确实无需注释,但大多数人并非编程界的诗人或文学大师,因此不能以此为借口跳过注释和忽视设计的其他部分。
1.2 数据访问并发问题
两个任务在任何时间点都能同时活跃则为并发。嵌入式系统软件在运行时通常会不断执行控制算法,因此大多数嵌入式系统都存在一定程度的并发问题。当任务间共享数据或内存位置时,就可能出现问题。并发问题通常发生在一个任务访问数据结构并错误地假设其不会被其他任务更改时。
常见的并发问题症状包括:
- 偶尔出现看似随机的错误,在特定系统操作模式下可能更频繁。
- ISR 更新变量或内存位置,非 ISR 例程在使用这些位置时未禁用中断。
- 全局变量被多个任务访问,但没有互斥锁或其他锁定机制保护。
- 硬件资源被多个任务共享,但没有互斥锁或其他锁定机制保护。
- 变量可能被其他任务或硬件更改,但软件在可能发生更改时未强制重新加载值。
- 存在使用静态、全局或其他非可重入数据结构的共享代码段。
并发管理不当的风险包括:
- 间歇性错误,难以重现,可能在系统交付
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



