48、嵌入式系统开发中的数据共享、资源使用与全局变量问题

嵌入式系统开发中的数据共享、资源使用与全局变量问题

在嵌入式系统开发中,数据共享、资源使用以及全局变量的运用是至关重要的方面,它们直接影响着系统的稳定性、可维护性和开发成本。下面将详细探讨这些问题。

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 是一个由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值