嵌入式系统开发中的数据共享、资源利用与全局变量问题解析
在嵌入式系统开发中,数据共享、硬件资源利用以及全局变量的使用是三个关键且相互关联的方面。这些方面处理不当可能会导致各种问题,影响系统的稳定性、可维护性和开发成本。下面将详细探讨这些问题及其解决方案。
数据共享风险
数据共享问题通常在一个任务可以抢占另一个任务时出现,包括任务切换和中断服务程序(ISR)。以下是几种常见的数据共享风险:
- 读取中数据更新 :当一个多字节数据在读取过程中被其他任务修改时,就会出现问题。例如,一个程序读取日期时间值,而该值正被硬件定时器ISR更新。假设日期时间字段包括16位的天、8位的小时、8位的分钟和8位的秒。如果ISR在读取过程中触发,可能会导致日期时间值出现错误。如在8位处理器上,当前日期时间为Day = 255; Hour = 23; Minute = 59; Second = 59,正常情况下ISR将时间加一秒后为Day = 256; Hour = 00; Minute = 00; Second = 00。但如果ISR在读取 GetDateTime 函数过程中触发,可能会得到以下结果:
- 如果ISR在读取Day的高低字节之间触发,结果可能是Day = 00; Hour = 00; Minute = 00; Second = 00,这是最糟糕的情况,答案在8位CPU上会相差256天。
- 如果ISR在读取Day和Hour之间触发,结果可能是Day = 255; Hour = 00; Minute = 00; Second = 00。
- 如果ISR在读取Hour和Minute之间触发,结果可能是Day
超级会员免费看
订阅专栏 解锁全文
835

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



