打印
[经验分享]

嵌入式开发常用的软件架构!

[复制链接]
4900|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2023-10-17 10:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、时间片轮训法

介于前后台顺序执行法和操作系统之间的一种程序架构设计方案。该设计方案需能帮助嵌入式软件开发者更上一层楼,在嵌入式软件开发过程中,若遇到以下几点,那么该设计方案可以说是最优选择,适用于程序较复杂的嵌入式系统;

目前的需求设计需要完全没有必要上操作系统。

任务函数无需时刻执行,存在间隔时间(比如按键,一般情况下,都需要软件防抖,初学者的做法通常是延时10ms左右再去判断,但10ms极大浪费了CPU的资源,在这段时间内CPU完全可以处理很多其他事情)

实时性有一定的要求。

该设计方案需要使用一个定时器,一般情况下定时1ms即可(定时时间可随意定,但中断过于频繁效率就低,中断太长,实时性差),因此需要考虑到每个任务函数的执行时间,建议不能超过1ms(能通过程序优化缩短执行时间则最好优化,如果不能优化的,则必须保证该任务的执行周期必须远大于任务所执行的耗时时间),同时要求主循环或任务函数中不能存在毫秒级别的延时。



使用特权

评论回复
沙发
LEDyyds|  楼主 | 2023-10-17 10:52 | 只看该作者
1、无函数指针的设计方式



使用特权

评论回复
板凳
LEDyyds|  楼主 | 2023-10-17 10:53 | 只看该作者
2、含函数指针的设计方式



使用特权

评论回复
地板
LEDyyds|  楼主 | 2023-10-17 10:54 | 只看该作者
二、操作系统
嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域,而对于单片机来说,比较常用的有UCOS、FreeRTOS、RT-Thread Nano和RTX 等多种抢占式操作系统(其他如Linux等操作系统不适用于单片机)

操作系统和“时间片轮询法”,在任务执行方面来说,操作系统对每个任务的耗时没有过多的要求,需要通过设置每个任务的优先级,在高优先级的任务就绪时,会抢占低优先级的任务;操作系统相对复杂,因此这里没有详细介绍了。

关于如何选择合适的操作系统(uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点:

uCOS:网上资料丰富,非常适合学习,但是在产品上使用则需要收费。

FreeRTOS:使用免费,因此很多产品都在用。

RT-Thread:国产物联网操作系统,有着十分丰富的组件,也免费,资料:RT-Thread文档中心。

RTX:为ARM和Cortex-M设备设计的免版税,确定性的实时操作系统。

借网上一张对比图:

使用特权

评论回复
5
LEDyyds|  楼主 | 2023-10-17 10:55 | 只看该作者
三、前后台顺序执行法
这是初学者们常用的程序框架设计方案,不用考虑太多东西,代码简单,或者对系统的整体实时性和并发性要求不高;初始化后通过while(1){}或for(;;){}`循环不断调用自己编写完成的函数,也基本不考虑每个函数执行所需要的时间,大部分情况下函数中或多或少都存在毫秒级别的延时等待。

优点:对于初学者来说,这是最容易也是最直观的程序架构,逻辑简单明了,适用于逻辑简单,复杂度比较低的软件开发。

缺点:实时性低,由于每个函数或多或少存在毫秒级别的延时,即使是1ms,也会造成其他函数间隔执行时间的不同,虽然可通过定时器中断的方式,但是前提是中断执行函数花的时间必须短。当程序逻辑复杂度提升时,会导致后来维护人员的大脑混乱,很难理清楚该程序的运行状态。



使用特权

评论回复
6
tpgf| | 2023-11-3 10:43 | 只看该作者
时间片轮询会不会占用很多资源呢

使用特权

评论回复
7
qcliu| | 2023-11-3 12:13 | 只看该作者
所谓的软件架构都是具体指哪方面的呢

使用特权

评论回复
8
drer| | 2023-11-3 13:23 | 只看该作者
软件架构描述的对象是直接构成系统的抽象组件

使用特权

评论回复
9
coshi| | 2023-11-3 14:11 | 只看该作者
分层架构是最常见的软件架构,也是事实上的标准架构

使用特权

评论回复
10
wiba| | 2023-11-3 14:42 | 只看该作者
微核架构的内核相对较小,主要功能和业务逻辑都通过插件实现。

使用特权

评论回复
11
kxsi| | 2023-11-3 21:00 | 只看该作者
事件驱动架构(event-driven architecture)就是通过事件进行通信的软件架构

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

784

帖子

1

粉丝