问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

常见的嵌入式软件体系结构

创作时间:
作者:
@小白创作中心

常见的嵌入式软件体系结构

引用
CSDN
1.
https://blog.csdn.net/propor/article/details/140297058

嵌入式系统是现代电子设备的核心,其软件体系结构直接影响系统的性能和可靠性。本文将介绍两种常见的嵌入式软件体系结构:无操作系统和有操作系统,并对其优缺点进行分析。

在嵌入式开发过程中,尤其是MCU为主控的项目开发中,实时性是需要考虑的重要因素。本文将介绍两种常见的嵌入式软件体系结构,并对其优缺点作简要分析,另外,还对它们的软件层次结构做了简要介绍。

1.无操作系统

无操作系统形式包含轮询系统和前后台系统。

1)轮询系统

将系统功能分解成若干个不同的任务,将其放置在一个无限循环中,按顺序循环执行。其伪代码如下。

int main(void)
{
    Hardware_Init();
    Task_Init();
    
    while (1)
    {
        Task1();
        Task2();
        Task3();
    }
    
    return 0;
}  

优点:

  • 结构简单。

缺点:

  • 实时性差。任务需延迟一个轮询周期才被执行,若其他任务耗时比较长,则任务无法及时处理某些事件。

开发建议:

可配合状态机和消息队列提高系统实时性。

2)前后台系统

在轮询系统基础上增加了中断。其中前台为中断服务程序,后台为无限循环中的任务。为了避免中断占用过多时间而影响到其他中断(不复杂的也可以直接在中断中处理),一般在中断服务程序中置位相应标志位,而在无限循环任务中查询标志位再进行处理。其伪代码如下。

int main(void)
{
    Hardware_Init();
    Task_Init();
    
    while (1)
    {
        Task1();
        Task2();
        Task3();
    }
    
    return 0;
}
void Timer1_ISR(void)
{
      
}  

优点:

  • 相比轮询系统改善了实时性。任务通过检查是否具备执行条件(标志位),避免轮询系统反复查询耗时,对实时性要求比较高的操作也可以直接在中断中执行。

缺点:

  • 实时性较差。任务执行仍需延迟一个轮询周期才被执行(检查),若其他任务耗时比较长,则任务无法及时处理某些事件。

开发建议:

可配合状态机和消息队列提高系统实时性

无操作系统软件层次结构可参考下图。

  1. 应用层即无限循环中的任务。
  2. 组件层是对驱动层的再封装。如读写EEPROM会用到GPIO,I2C总线这些驱动层的东西,将EEPROM器件放在组件层,它是对驱动层的再封装。
  3. 有时为了提高实时性,允许应用层直接操作驱动层。封装会增加函数调用,从而增加系统开销。

2.有操作系统

应用程序不再直接面向硬件开发,而在操作系统的基础上编写。

优点:

  1. 具有高实时性。
  2. 提高了开发效率,缩短了开发周期。
  3. 利于扩展和移植。

开发建议:

可充分利用中断,操作系统事件集,消息队列,信号量,任务优先级等提高系统实时性。

有操作系统软件层次结构可参考下图。

各层严格遵循上层调用下层的结构。

总结,本文介绍了常见的嵌入式软件体系结构。

本文原文来自CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号