0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_EksNQtU6 来源:CSDN-an520_ 2023-11-21 10:10 次阅读

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

一、时间片轮询法

介于前后台顺序执行法和操作系统之间的一种程序架构设计方案。

该设计方案需能帮助嵌入式软件开发者更上一层楼,在嵌入式软件开发过程中,若遇到以下几点,那么该设计方案可以说是最优选择,适用于程序较复杂的嵌入式系统

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

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

实时性有一定的要求。

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

ae5fd5a4-8809-11ee-939d-92fbcf53809c.png

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

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

ae8f6292-8809-11ee-939d-92fbcf53809c.pngaec00992-8809-11ee-939d-92fbcf53809c.pngaec00992-8809-11ee-939d-92fbcf53809c.pngaf1dd158-8809-11ee-939d-92fbcf53809c.png

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

af4f9120-8809-11ee-939d-92fbcf53809c.pngafa34b9e-8809-11ee-939d-92fbcf53809c.pngafddc9ae-8809-11ee-939d-92fbcf53809c.pngb013adc6-8809-11ee-939d-92fbcf53809c.png

二、操作系统

嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。

对于单片机来说,比较常用的有UCOSFreeRTOSRT-Thread Nano和RTX 等多种抢占式操作系统(其他如Linux等操作系统不适用于单片机)

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

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

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

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

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

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

借网上一张对比图:

b0461720-8809-11ee-939d-92fbcf53809c.png

三、前后台顺序执行法

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

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

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

b0b380bc-8809-11ee-939d-92fbcf53809c.pngb0d41840-8809-11ee-939d-92fbcf53809c.pngb0f4d616-8809-11ee-939d-92fbcf53809c.pngb12106b4-8809-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620825
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79541
  • 嵌入式软件
    +关注

    关注

    4

    文章

    227

    浏览量

    26383
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66766

原文标题:嵌入式软件常用的几种代码架构

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式软件开发应该掌握哪些知识?

    嵌入式软件开发应该掌握哪些知识? 一、 什么是嵌入式软件嵌入式软件通常是指
    发表于 02-19 11:23

    嵌入式软件开发需要些什么知识?

    的知识点就这些。一,要求精通C语言编程,最好有些汇编知识. 二,要求英语功底要好,因为一些芯片手册都是英语写的. ,要有数字电路和模拟电路的知识.因为在嵌入式软件开发后期测试的时候,都是依靠一些硬件设备
    发表于 10-14 09:19

    嵌入式软件开发中的程序架构

    单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构。在嵌入式软件开发中,程序架构
    发表于 02-02 06:58

    嵌入式软件开发与非嵌入式软件开发的区别?

    嵌入式软件开发与非嵌入式软件开发区别?设备驱动开发与裸机驱动开发区别?
    发表于 04-02 06:29

    软件架构存在的意义

    嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构嵌入式软件开发中,程
    发表于 10-27 09:34

    不容错过的嵌入式软件开发经验分享

    该内容是工作一年来通过上网或其他方式不断搜索、实践、总结出来的嵌入式软件开发经验(本文仅适用于单片机的裸机开发),希望能帮到正在学习这方面的朋友,如有不好的地方,请多多见谅;在嵌入式
    发表于 10-28 09:55

    嵌入式系统软件开发环境

    嵌入式系统的概念嵌入式系统的基本架构嵌入式操作系统的基本组成和分类嵌入式数据库管理嵌入式网络
    发表于 11-08 08:37

    三种常用嵌入式操作系统是什么

    三种常用嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同
    发表于 12-22 07:36

    VxWorks嵌入式软件开发常用软件工具有哪些呢

    VxWorks嵌入式软件开发常用软件工具有哪些呢?
    发表于 12-24 07:06

    常见嵌入式开发程序架构是什么

    单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序
    发表于 02-14 06:37

    嵌入式开发常用软件架构

    或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序
    的头像 发表于 01-01 10:16 5182次阅读
    <b class='flag-5'>嵌入式开发</b>中<b class='flag-5'>常用</b>的<b class='flag-5'>软件</b><b class='flag-5'>架构</b>

    嵌入式软件开发三种程序架构

    嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构。在嵌入式软件开发
    的头像 发表于 02-11 10:19 2100次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>中<b class='flag-5'>三种</b>程序<b class='flag-5'>架构</b>

    嵌入式软件开发三种程序架构详解

    或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序
    的头像 发表于 09-05 09:53 3217次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b><b class='flag-5'>三种</b>程序<b class='flag-5'>架构</b>详解

    嵌入式软件开发之程序架构(一)

    该内容是工作一年来通过上网或其他方式不断搜索、实践、总结出来的嵌入式软件开发经验(本文仅适用于单片机的裸机开发),希望能帮到正在学习这方面的朋友,如有不好的地方,请多多见谅;在嵌入式
    发表于 10-20 20:36 9次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>之程序<b class='flag-5'>架构</b>(一)

    三种常见嵌入式开发程序架构

    或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序
    发表于 12-08 20:36 14次下载
    <b class='flag-5'>三种</b>常见<b class='flag-5'>嵌入式开发</b>程序<b class='flag-5'>架构</b>