FreeRTOS学习之前后台系统存在的问题

本文探讨了前后台系统在物联网项目中的局限,如何导致实时性降低和CPU效率不高。通过分析问题原因,提出改进方法,包括避免空转、优化中断处理和顺序执行策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近报了百问网7天物联网的训练营https://www.100ask.net/detail/term_6216e88bc00cf_3clJb1/25和在B站上学习的韦东山老师的freeRTOS做了下学习记录。

1 什么是前后台系统

 

这是一个典型的裸机程序,前台指的是中断服务程序,后台指的就是main函数while(1)里面的的执行的代码。前后台系统虽然在程序规模小的时候编写起来简单,但是一旦程序规模到了一定程度,则会出现各种问题。以下我么们具体分析。

2   实时性不能保证

 如图所示,这是一个典型的前后台系统,我们在检测flag2的分支中使用了delay2s延迟了2秒,这意味着我们的CPU在这里白白空转了2秒,这2秒的时间里我们的CPU啥都没做,如果后台代码有一些比较紧急的事件要处理则无法及时响应,这就无法保证系统的实时性。 

3 CPU利用率不高

 如图所示,这是一个和典型的前后台系统,我们在检测falg1的分支中调用了 dosomethingforIsr1();操作,在中断服务程序中进行这个操作检测计数值是否达到1秒,没达到一秒则无法跳出while循环,这就导致了CPU这执行这一段代码时一直在频繁的中断,这就导致了CPU利用率不高。

4 代码结构复杂

 如图所示,在使用前后台系统的时候,后台系统是顺序执行的,一旦系统复杂,很难保证实时性,为了保证实时性,需要建立一些列的标志位,强迫开发者按照顺序的思维进行编程。

5 问题的原因

 导致问题的原因很简单,就是一个CPU核心同一时刻只能处理一件事情,一旦系统比较复杂比如使用网络通信或者人机界面的话如果还是使用这种前后台系统的话会导致代码裸机复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值