当前位置: 欣欣网 > 码农

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

2024-07-12码农

来源:

https://blog.csdn.net/an520_/article/details/124877026

对于单片机程序来说,大家都不陌生,但是真正使用架构,考虑架构的恐怕并不多,随着程序开发的不断增多,架构是非常必要的。

一、时间片轮询法

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

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

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

实时性有一定的要求。

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

以下介绍两种不同的实现方案,分别针对无函数指针概念的朋友和想进一步学习的朋友。

1、无函数指针的设计方式

2、含函数指针的设计方式

二、操作系统

嵌入式操作系统 EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域,而对于单片机来说,比较常用的有UCOS、FreeRTOS、 RT-Thread Nano和RTX 等多种抢占式操作系统(其他如Linux等操作系统不适用于单片机)

操作系统和「时间片轮询法」,在任务执行方面来说,操作系统对每个任务的耗时没有过多的要求,需要通过设置每个任务的优先级,在高优先级的任务就绪时,会抢占低优先级的任务;操作系统相对复杂,因此这里没有详细介绍了。ChatGPT中文网站:https://aigc.cxyquan.com

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

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

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

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

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

  • 借网上一张对比图:

    三、前后台顺序执行法

    这是初学者们常用的程序框架设计方案,不用考虑太多东西,代码简单,或者对系统的整体实时性和并发性要求不高;初始化后通过while(1){}或for(;;){}`循环不断调用自己编写完成的函数,也基本不考虑每个函数执行所需要的时间,大部分情况下函数中或多或少都存在毫秒级别的延时等待。

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

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

    <END>

    点这里👇关注我,记得标星呀~

    往期精选:

    GPT中文网站

    一次性买了200多个官方Plus会员放在一个系统的池子里,共享给大家使用 。每月只需要90元,比官方便宜了一半不止,就可以直接使用官方GPT 4.0 ,而且国内网络就可以直接登录 ,不需要额外的上网工具 。

    跟购买官方独立账号是完全一样的:支持GPTs、语音实时聊天功能、联网功能、上传文件、数据分析、AI画图、图片识别、消息隔离功能等,而且不限次数使用 。


    扫码可以加我微信,备注:90元GPT

    我会立马通过微信好友请求 

    感谢你的分享,点赞,在看三