lihui710884923
认证:VIP会员
所在专题目录 查看专题
图解STM32的4输入 + 2 输出 + 2 复用输出8模式
开源之太阳能智能充电管理系统
嵌入式软件底层开发的框架
嵌入式串口通讯处理机制(附FIFO源码)
STM32 嵌入式平台上的语音识别系统
STM32F767ZI 之人工智能(AI) 应用
作者动态 更多
单片机RTC的中断剖析
03-09 15:28
串口通讯的来龙去脉
02-14 17:32
stm32单片机的USB烧录程序
2023-09-08 22:48
基于CUBEMX的HID双向通讯
2023-08-24 20:46
单片机的增量编码器正交解码
2023-08-24 20:17

嵌入式软件底层开发的框架

      在底层代码编写中,初始的框架设计总会面临选择,针对实际的硬件使用环境,大家对于使用的软件框架有很多选择,今天我简单描述一些比较常用的架构,让大家能够理解并选择合适的架构。

1. 简单的顺序执行程序:这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接按照执行顺序编写应用程序即可。

2.前后台执行程序:在顺序执行的情况上增添中断前台处理机制,配置顺序执行的后台大循环程序,组合成可以实时响应的程序。

3. 时间片轮循法:在前后台的执行架构上,通过计数器进一步规划程序,定时执行特定的片段。

4. 实时操作系统:实时操作系统又叫RTOS,实时性,RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其  他任务,这个是内核的多任务管理能力。多任务 管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。除了实时性,还有可剥夺内核,顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

                                             1.简单的顺序执行程序

                                               2.前后台执行程序

 这种程序特点是,后台大循环中一直执行默认的程序,中断服务程序(ISR)产生相应中断标记,主程序运行与中断标记相关联的任务程序。一般实现有如下思路:

    通过设置标志变量,然后在前台响应中断的时候进行对标志变量的置位或者复位,实现事件的信号获取,再在后台主循环进行中断所对应事物或者数据的处理,将程序流程转移到主程序。

                                                     3.时间片轮循架构

时间片轮循法,大家看到它的时候,一般会将它与操作系统进行比较。不是说操作系统包含这种方法,而是在前后台程序中配合时间管理形成时间片轮循架构。

这种架构已经最大限度接近RTOS,时间管理,中断管理,任务管理,已经都有了,只不过RTOS会对内核进行更深入的修改,有针对delay延时的线程切换,抢占式任务切换这些更为复杂一些的功能等。

                                                        时间片轮循程序

时间片管理主要是通过对定时多处复用,在定时器计数,定时进行标志位的变化,继而主程序对标志真假的判断,实现不同时间不同任务状态执行。

因为此架构代码比较好,我适当进行详细描述。

1:初始化相应的定时器:注意设置定时器的间隔频率,可以按照芯片的性能设置。例如,设置定时中断为1ms,也可以设置为10ms,轮循架构中的定时器部分与操作系统的定时器部分具有一样的功能,中断过于频繁,影响主程的序执行效率;中断间隔过长,实时响应效果差。

2:针对定时器运行的任务设置一个函数结构体标志,用来在定时程序进行时间计数以及标志操作。

4:定时中断服务函数,按照我们需要的时间以及标志操作进行计时。

 5:主函数进行任务函数执行。

                                               4.操作系统RTOS

      嵌入式操作系统是更加优化的执行框架,针对多任务,功能复杂,扩展性要求强项目的代码有非常好的使用。RTOS是针对不同处理器优化设计的高效率实时多任务内核,RTOS可以面对几十个系列的嵌入式处理器MPU、MCU、DSP、SOC等提供类同的API接口,这是RTOS基于设备独立的应用程序开发基础。因此,基于RTOS的C语言程序具有极大的可移植性。目前针对微嵌入式或者单片机的操作系统有VxWorks、UCOS、Free RTOS、国产的RTT,这些操作系统大同小异,基本的功能都类似:任务管理、任务间同步和通信、内存管理、实时时钟服务、中断管理服务。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 11
收藏 13
关注 192
成为作者 赚取收益
全部留言
0/200
  • 小董 2021-03-03 15:44
    佩服楼主
    回复
  • dy-blNlwnWV 2021-02-21 21:37
    围观学习
    回复
  • 星球居民-YBPLIKJ1 2020-12-19 09:18
    底层深入了解
    回复
  • 喂,你好 2020-12-16 12:22
    感谢分享
    回复
  • heiha88 2020-12-03 22:45
    学习底层框架
    回复
  • liuxiaofei126 2020-12-02 07:12
    底层总结的可以
    回复
  • 程序小白 2020-12-01 12:15
    文章不错,赞一个!
    回复 1条回复