嵌入式系统开发中的数据共享、资源使用与全局变量问题
在嵌入式系统开发中,数据共享、资源使用以及全局变量的运用是至关重要的方面,它们直接影响着系统的稳定性、可维护性和开发成本。下面将详细探讨这些问题。
1. 数据共享危害
数据共享问题通常在系统中一个任务能够抢占另一个任务时出现,这不仅包括任务切换,还涉及中断服务程序(ISR)。由于ISR是更常见的问题,我们以它为例进行讨论。
1.1 读取中数据更新
这可能是数据共享问题中最常见的错误。当一个多字节大小的数据值被一个任务读取,而在读取过程中被另一个任务更改时,就会出现问题。经典的例子是程序读取时间值,而该值同时被硬件定时器ISR更新。
假设时间字段包含16位的日期(如2000年1月1日为第0天)、8位的小时、8位的分钟和8位的秒,这是一个5字节的日期/时间字段。有一个任务要记录带日期戳的事件日志,它会调用一个将当前时间和日期组合成数据结构的例程:
void GetDateTime (DateTimeType *DT)
{
DT->day = TimerVal.day; // copy current day to DT
DT->hour = TimerVal.hour; // copy time fields to DT
DT->minute = TimerVal.minute;
DT->second = TimerVal.second;
}
假设 TimerVal 是一个由
超级会员免费看
订阅专栏 解锁全文

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



