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

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

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

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)利于扩展和移植。

开发建议:

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

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

其中,

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

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值