嵌入式数据共享问题

skd2278 skd2278 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
void task1(void)
{
vcounterrors(9);
}
void task2(void)
{
vcounterrors(11);
}
static int cerrors;
void vcounterrors(int cnewerrors)
{
cerrors += cnewerrors;
}
这是陈向群翻译的国外那本嵌入式系统软件教程中的一段代码,这里是任务之间互相调用的问题。
cerrors += cnewerrors;汇编代码如下:
MOVE R1, (cerrors)
ADD R1, (cnewerrors)
MOVE R1 (cerrors), R1
RETURN
下面是任务切换:
任务task1调用vcunterrors(9)
MOVE R1, (cerrors)
ADD R1, (cnewerrors)
ROST切换到task2
任务task2调用vcounterrors(11)
MOVE R1, (cerrors)
ADD R1,(cnewerrors)
MOVE (cerrors), R1
ROST切换到任务task1
MOVE R1 (cerrors), R1
书上说,最后cerrors的值为25(初始值5,加11,加9),并且说它应该为14;
也就是说25是出现数据共享问题后的错值,而14才是正确的。可是我看那段代码最后怎么看都是14啊,并且我感觉这例子中间代码切换不会出现问题,虽然他们共享cerrors可是,在计算过程中两者不会冲突啊,从任务task1切换到任务task2,R1的值是保存在栈中,返回时从栈中取出并不会出错啊,我真不明白为什么。本人刚开始学这个,很多都不懂,这段代码虽然简单,可是,我老是感觉用在数据共享这个例子中有很多不恰当,所以,请大家帮帮我。这是机械工业出版社《嵌入式系统软件教程》(美)David E.Simon著 陈向群等译,中文版95页,英文版149页。
PS:急求,想了一晚上没想通。老师也没说明白,说是翻译错了。
...全文

相关推荐

202201027.基于微信小程序的琴房管理系统的设计与实现.zip

这个基于Java的Spring Boot框架开发的小程序项目是一个具有很多优点的创新应用。该项目通过结合Spring Boot框架的强大功能和小程序的便捷性,为用户提供了高效、稳定和优质的使用体验。 首先,该项目采用了Spring Boot框架作为服务端的开发框架,这使得项目具有高度的可扩展性和灵活性。Spring Boot框架提供了丰富的功能和组件,使得开发人员可以快速构建和部署应用程序,并且可以根据实际需求轻松进行模块化和定制化开发。 其次,该项目是一个小程序项目,小程序具有跨平台的特性,用户可以在手机端无需安装App的情况下直接使用。这为用户提供了极大的便利性和节约了设备存储空间。同时,小程序的开发成本相对较低,快速上线和推广,能够更快地满足用户的需求和反馈。 在功能方面,该项目为用户提供了丰富而实用的功能模块。可以根据实际业务需要,实现用户管理、权限控制、数据统计分析、文件上传下载、在线支付等功能。这些功能使得该小程序项目能够满足不同行业和领域的应用需求,为用户提供全面的解决方案。 此外,该项目还注重用户体验和界面设计。小程序平台具有简洁、直观的界面风格,可根据用户的操作习惯进行定制化,提升用户的操作便捷性和视觉舒适度。同时,为了保证系统的稳定性和安全性,开发团队还对项目进行了全面的测试和漏洞修复,以确保用户数据的安全与隐私保护。 总之,这个基于Java的Spring Boot框架开发的小程序项目具有高度的灵活性、跨平台使用、丰富的功能模块和良好的用户体验。它将帮助用户轻松实现业务目标,提高工作效率,并为企业和用户带来真正的便利和价值。

Java码库

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

本文深入探讨了嵌入式系统开发中的三个关键问题:数据共享、硬件资源利用和全局变量的使用。详细分析了数据共享过程中可能遇到的风险,如多任务抢占导致的数据不一致、寄存器优化问题以及多个写入者的并发冲突,并提出了使用volatile关键字、互斥锁等解决方案。同时,讨论了硬件资源接近满载带来的开发挑战和成本影响,强调合理预留资源的重要性。此外,文章还揭示了全局变量带来的隐式耦合、并发错误等问题,并提供了多种降低风险的实践方法,如使用静态局部变量、封装访问接口等。最后总结了在嵌入式开发中如何综合运用这些策略,提升系统稳

mqtt6iot

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

本文深入探讨了嵌入式系统开发中的关键问题,包括数据共享危害、资源使用问题以及全局变量的影响。文章分析了多字节数据在ISR触发时可能引发的读取错误,寄存器优化问题的解决方法,以及多个写入者导致的并发问题解决方案。资源使用方面讨论了硬件资源接近满负荷带来的挑战和应对策略。同时,文章详细阐述了全局变量的潜在风险以及降低风险的方法,并提出了可重入代码的设计原则。通过合理的数据保护策略和开发实践,可以有效提升嵌入式系统的稳定性、可维护性和开发效率。

rust6ferris

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

本文详细解析了嵌入式系统开发中的关键问题,包括数据共享危害、硬件资源接近满负荷的成本与风险,以及全局变量带来的隐式耦合问题。针对这些问题,文章提供了具体的解决方案,例如使用互斥锁、`volatile` 关键字以及合理控制全局变量的作用域。此外,还讨论了资源管理的重要性,并提供了开发中的综合建议,以提升系统的可靠性与可维护性。

game4

基于SSM的琴房管理系统的微信小程序设计与实现.zip

基于SSM琴房管理系统的微信小程序设计与实现 钢琴培训、琴房、学生、预约、微信小程序 开发语言:Java 框架:ssm JDK本:JDK。8 数据库:MySQL5.7 开发软件:eclipse/myeclipse/idea小程序框架:uniapp小程序开发软件:HB u i里的人X小程序运行软件:微信开发者 安卓框架:uniapp安卓开发软件:HB u i里的人X开发模式:混合开发 琴房预约管理系统的用户是系统最根本使用者,按需要分析系统包括用户:学生、管理员。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括学生信息管理和文章公告管理。琴房公告管理,添加琴房公告信息,给学生发布一些学校的公告内容,为学习提前做准备,管理员管理后点击退出,注销登录信息。 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、在线交流、信息公告等,学生用户通过账户账号登录,登录后查看琴房、预约琴房。

码上行舟
评论 4
收藏 已收藏
分享
返回顶部
skd2278
汇编语言 21,500 成员 41,619 内容