深入介绍嵌入式开发中三种不同的程序架构

发布者:JoyfulSunflower最新更新时间:2024-06-19 来源: elecfans关键字:嵌入式开发  程序架构  软件架构 手机看文章 扫描二维码
随时随地手机看文章

前言

嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。


软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。

我相信在嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序架构主要分为三种,本篇文章将对这三种程序架构做出详解。

软件架构存在的意义

可以说一个好的程序架构,是一个有经验的工程师和一个初学者的分水岭。软件架构对于开发人员是友好的,你希望先执行什么任务后执行什么任务,或者这一个时间点执行什么任务下一个执行什么任务,又或者什么事件会同步到某个任务等等,在不同的软件架构下,解决上述问题的具体方法都是有所区别的。

软件架构对开发者最大的帮助是:帮助开发者掌控整个工程的框架,当你熟练使用其中某一个程序架构后,对于系统中出现的bug你一定能够快速的定位并解决。当然,我建议要根据需要选择合适的软件架构进行开发,具体原因在文章后面会进行介绍。

深入介绍三种不同的程序架构

三种常用的软件架构有:顺序执行的前后台系统、时间片轮询系统和多任务操作系统:STM32单片机开发中的RTOS。为了让大家有一个更为清晰的认识,我分别用三种软件架构对一个实例进行介绍说明。这个实例如下:它有4个任务,这4个任务为按键扫描、声光报警、显示屏刷新和超声波测距。这个实例的具体功能是通过按键设置测量距离的阈值,当测距距离低于设置的阈值时,触发声光报警并且将测量距离实时显示在显示屏上(这个应用是汽车倒车雷达的具体体现)。

1 顺序执行的前后台系统

在顺序执行的前后台系统中,我会把键盘扫描用查询的方式放在while(1)中,而显示屏刷新和超声波测距使用中断,在中断服务函数中获取测量距离后进行显示,在主函数的循环中进行按键的检测,声光处理也放在主循环中。这样整个程序就以变量标志的同步方式在主循环和后台中断中执行,对应的程序代码如图所示:

3e999498-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

上面代码是顺序执行前后台系统的主函数。

3eb734da-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

如上代码,顺序执行前后台系统的中断服务函数。

这种架构的优点是使用简单易于理解,而缺点是每个任务所占的CPU时间过长的话,会导致程序的实时性能差,就比如按键的检测等。

2 时间片轮询系统和多任务操作系统

时间片轮询法实际上通常出现在操作系统中,也就是说他属于操作系统,但在这里所说的是基于前后台系统的时间片轮询。

时间片轮询法的实质其实就是选出一个定时器,每进一次定时中断对计数值进行自加,在主循环中根据这个计数值执行任务,这个计数值也就是任务轮询的时间片。

在这个实例中,如果采用时间片轮询系统的话,首先选用主控芯片的任一定时器,定时器定时时间周期由我们决定,为了保证实时性和运行效率,这个值通常取10ms、30ms、50ms等,我会将按键扫描轮值值设置为20ms,因为按键抖动的时长一般为20ms,这样处理既达到了消抖的目的,又不会漏掉按键的检测。

而显示屏的刷新设置为30ms,如果你觉得刷新反应慢了也可以修改这一轮询值得到改善;而超声波测距的轮询值设置为100ms,即每隔100模式触发测距一次,这个测距频率已经能够满足大多数的情况了。

程序代码如下:

3eceb5c4-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

如上代码,时间片轮询系统的主函数。

3ef774b4-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

如上代码,时间片轮询系统的定时器中断函数。

可以看出时间片轮询法相比顺序执行还是有很大优势的,既有顺序执行法的优点,也有操作系统的部分优点。

3 多任务操作系统

操作系统的本身是一个比较复杂的东西,任务的管理和调度实现的底层是很复杂和困难的。

但是,我们一般都是把操作系统本身作为一个工具一个平台,我们的目的是使用它的功能而不是开发一个操作系统。

我使用过ucos和freertos小型的实时操作系统,也使用过Linux大型的操作系统,有了操作系统,不管是对于程序的稳定性和开发的效率都会好很多。

我们在使用操作系统的时候更多的需要去学习和理解它的一些调度和通信的方式。

实际上真正能使用操作系统的人并不多,反而是跑裸机的占大多数,这也和产品的具体要求有关,很多简单的系统只需要裸机即可满足。

在这里本我不过多的介绍操作系统本身,因为操作系统确实挺复杂的,下面图例中的代码是在freertos中创建按键控制LED亮灭的程序结构,大家可以对比一下:

3f1cde0c-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

如上,freertos多任务系统中主函数。

3f3ae94c-da78-11ec-ba43-dac502259ad0.jpg?imageView2/2/w/1000

如上,freertos多任务操作系统中的任务回调函数。

如何选择合适的软件架构

我使用过多种不同MCU做项目开发,例如:STM32、STC15、新唐等,也接触过复杂的设计需求,例如:车载智能系统和智能家居,跑过操作系统ucos、freertos和Linux等等,在回到裸机开发时,就会不然而然的去思考完整系统的软件架构的设计问题,相信在读者中开发裸机的也占大多数。

我认为没有最好的软件架构(程序架构),而是只有最合适的。因为在不同的应用场景中适合采用不同的程序设计,而单纯的去比较哪种程序架构是最好的没有什么实际的意义。

那接下来我们来对具体的应用场景进行分析:

在一些逻辑清晰功能单一的系统中就很适合选择顺序执行的前后台架构,这个软件架构往往能够满足我们大部分的需求,比如电饭煲、电磁炉和声控灯泡等;

在一些资源缺乏的单片机并且对系统可靠性要求较高的情况下非常适合,因为这种方法的系统耗费比较小,只是牺牲了一个定时器而已,但是选择此种程序架构需要我们对时间片进行深思熟虑的划分;

最后,在一些功能复杂,逻辑控制较为困难的系统中就适合选择多任务操作系统,比如视频监控系统、无人机等等应用场景。

作为嵌入式软件工程师,掌握这三种软件架构是非常有必要的,它们可以让我们在设计程序时拥有更多的选择和思考,而每一种不同的程序架构都具备它自己的优势与不足,这需要我们去用心实践方可体会到它的奥妙。


关键字:嵌入式开发  程序架构  软件架构 引用地址:深入介绍嵌入式开发中三种不同的程序架构

上一篇:单片机中常见GPIO的八种工作模式详解
下一篇:为什么晶振不集成到芯片内部去?

推荐阅读最新更新时间:2026-03-23 11:29

RISC-V:开放计算架构软件定义汽车
2025年,人工智能与汽车产业的融合正进入深水区。 AI模型规模的急剧扩张与软件定义汽车(SDV)理念的普及,推动芯片架构、系统设计与供应链协作方式开放式指令集架构RISC-V正从学术实验走向产业主流,成为超越传统x86与Arm体系的关键技术选择。 从英飞凌到Quintauris,从开源社区到汽车制造商,产业链各方正在加速构建基于RISC-V的生态体系。 Part 1 市场转折: 开放架构回应AI与汽车 人工智能正在推动计算架构进入一个高密度、低功耗、多样化的新时代。 无论是用于训练超大规模模型的数据中心,还是运行实时推理任务的边缘设备,对芯片的计算效率与灵活性要求都前所未有地严苛。 传统
[汽车电子]
ARM架构芯片硬件与软件构成深度解析
在现代电子设备的核心中,ARM架构芯片以其高效能、低功耗的特点占据了举足轻重的地位。从智能手机到平板电脑,从汽车娱乐系统到工业控制设备,ARM架构芯片无处不在。本文将深入探讨一颗ARM架构芯片的硬件和软件构成,以期为读者提供一个全面的理解。 一、ARM架构芯片硬件构成 ARM架构芯片的硬件构成复杂而精密,主要包括内核、外设、总线、存储部件等多个部分。这些部分协同工作,共同支撑起芯片的强大功能。 1.1 内核 ARM架构芯片的内核是芯片的核心部分,主要由寄存器、指令集、总线、存储器映射规则、中断逻辑和主调试组件构成。ARM公司设计并授权这些内核给芯片厂商,而芯片厂商则根据这些内核设计并生产具体的芯片产品。 ARM内核按照性能和应
[单片机]
软件定义汽车》 —— 电子电气架构(EEA)的演进
汽车的电子电气架构持续经历着演进与迭代,其中博世提出的电子电气架构的未来发展趋势尤为引人注目。电子电气架构的演进并非一蹴而就,根据目前的趋势观察,最终将实现整车电子电气架构完全由软件定义。 我们已经知道,目前传统汽车的电子控制是按功能分隔开的,除了像VCU等少数ECU以外,很多ECU只负责像升降车窗、开关车门这样的单一功能,例如前文所说的BMS、ABS、ESP或者发动机控制模块(ECM)和变速箱控制模块(TransmissionControlModule,TCM)。通过图2-1中的逻辑示意可知,每个ECU都有自己的电源、输入输出部件和通信电路,每项新的控制和监测功能的引入都会增加ECU硬件和布线。 目前传统汽车的ECU 有几
[汽车电子]
IAR平台全面升级,提升瑞萨MCU架构的嵌入式软件开发效率
瑞典乌普萨拉,2025年6月24日 — 全球嵌入式系统软件解决方案领导者IAR正式发布适用于瑞萨RX和RL78系列微控制器的新版本开发工具链:Renesas RX v5.20和RL78 v5.20。 此次更新进一步巩固了IAR在嵌入式开发平台领域的领先地位,并全面增强了对瑞萨自研架构的支持。新版本引入了多项现代化开发特性,包括CI/CD集成和跨平台开发支持,为工业、汽车和消费电子等领域的开发者带来了更高效、灵活的开发体验。 IAR自上世纪80年代以来一直与瑞萨合作,作为瑞萨的长期战略合作伙伴,IAR已支持超过4000款瑞萨芯片,覆盖RA、RX、RL78、RZ、RH850和RISC-V等多个产品系列,广泛应用于对功耗和安全性有严
[嵌入式]
IAR平台全面升级,提升瑞萨MCU<font color='red'>架构</font>的嵌入式<font color='red'>软件</font>开发效率
深入解析汽车MCU的软件架构
电动汽车(EV)正在成为首选的交通方式,为传统内燃机汽车提供了一种可持续发展的环保型替代方案。在电动汽车复杂的生态系统中,众多电子控制单元(ECU)在确保其高效运行方面发挥着至关重要的作用。电机控制单元(MCU)就是这样一个 ECU,它是电机性能背后的大脑。在这篇综合文章中,我们将探索电机控制单元的世界,研究它们的功能、组件以及影响汽车 MCU 领域的最新趋势。 了解电动汽车使用的电机 在深入研究电动汽车电机控制单元的复杂性之前,有必要了解电动汽车常用的各种电机类型。最常见的两种类型是无刷直流(BLDC)电机和永磁同步(PMS)电机。 无刷直流电机又称电子换向电机,无需电刷和换向器,从而提高了效率,减少了维护。从本质上讲,它的
[嵌入式]
深入解析汽车MCU的<font color='red'>软件</font><font color='red'>架构</font>
软件定义汽车背景下 基于安全芯片可信架构 紫光同芯赋能智慧出行
伴随车联网的发展,智能汽车正不断强化车辆与内外部环境的交互,实现车与车、车与路、车与云、车与人等全方位的连接,而这也使得车载信息与数据安全面临着全新的挑战——公开数据显示,截至2023年8月底,智能汽车安全漏洞已经超过3700个,涉及车型1000多个,业内“流行”的漏洞重复率达到了70%。 面对层出不穷的车辆安全问题,越来越多的政府和行业组织明确提出“智能车的安全需要构建在安全芯片基础上”,例如CC认证、GP SIP 认证、EVITA、GSMA关于汽车安全的要求,SE(Secure Element)和HSM(Hardware Security Module,硬件安全模块)已成为智能车的安全基础,成为行业默认的标准。 202
[嵌入式]
<font color='red'>软件</font>定义汽车背景下 基于安全芯片可信<font color='red'>架构</font> 紫光同芯赋能智慧出行
实现灵活的软件定义汽车架构
随着各种用户功能的需求不断增加,以及实现这些功能的更强大硬件的出现,汽车的电子电气 (E/E) 架构正在持续演进。过去,经典的汽车 E/E 架构将功能分配到多达 100 个电子控制单元 (ECU) 中。然而,增加汽车 ECU 数量正在变得更为困难。所有 ECU 都需要占据空间和消耗电力,还会增加汽车重量,不仅数量庞大,而且连接设备所需的电线总长超过了四公里。随着 ECU 数量增多,加之对新功能的需求不断上升,如何对 ECU 上运行的软件进行更新也成为一大难题。如果采用集中式 E/E 架构,可通过单一通道(中央 ECU)部署软件更新,这与分布式 E/E 架构相比,大幅简化了更新流程。 为了进行整合(例如在单个系统上运行多种功能)
[嵌入式]
实现灵活的<font color='red'>软件</font>定义汽车<font color='red'>架构</font>
Rivian的自主设计:硬件架构软件生态
我们曾经写过一篇关于Rivian的EE架构,随着Rivian在召开投资者大会,披露了更多的信息。大众汽车集团计划向美国电动车新势力Rivian投资10亿美元,并计划追加投资高达40亿美元,总交易规模预计达到50亿美元。 Rivian的电子电气架构与软件是其关键竞争力,目前的Rivian在ECU和软件层面进行了深度的开发,车辆中约80%的软件由内部开发,拥有从需求到量产的全套能力。Rivian的架构包括硬件层、硬件适应层、特殊功能层和可拓展功能层,支持大规模和可拓展的软件定义汽车能力。 我们先从整体来看Rivian的研发能力。 Part 1 Rivian的软件情况 在终端应用体验方面,Rivian的系统依
[汽车电子]
Rivian的自主设计:硬件<font color='red'>架构</font>和<font color='red'>软件</font>生态
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved