嵌入式软件分层的思想

一、分层的目的

  “高内聚,低耦合的思想”,表示在设计和开发软件系统时,应该使模块之间的关系更加紧密,同时避免模块之间的依赖性过于紧密,以便更好地实现系统的可维护性,可扩展性和可重用性

二、分层逻辑图

在这里插入图片描述

三、分层的架构图

在这里插入图片描述

四、分层的优缺点

  • 优点
    • 易维护性:各层之间耦合度低,方便进行独立维护和修改。如果某一层发生故障,只需对该层进行修改,而不会影响到其他层。
    • 复用性:各层功能明确,可以独立地应用于不同的系统。例如,某一层的技术或算法经过验证后,可以在其他嵌入式系统中直接使用,无需从头开始开发。
    • 开放性:分层架构有利于标准化的实现。各层之间可以方便地进行替换和升级,提高了系统的可扩展性和可升级性。
    • 可移植性:由于各层相对独立,嵌入式系统可以方便地从一种硬件平台移植到另一种硬件平台,只需对相应层进行修改即可。
  • 缺点
    • 开发成本高:需要开发更多的代码,增加了开发时间和成本。
    • 性能开销大:分层架构需要处理更多的层级和接口,可能导致性能开销增大。
    • 通信开销大:各层之间需要进行数据传输和通信,可能导致较大的通信开销。
    • 跨层调用复杂:在分层架构中,跨层调用需要经过多个层级,可能导致复杂的逻辑和额外的性能开销。

因此,在选择是否采用嵌入式分层架构时,需要根据具体的应用场景和需求进行权衡。如果系统规模较大、复杂度高、需要高可维护性和可扩展性,分层架构是一个不错的选择;但如果系统规模较小、复杂度低、对性能要求较高,可能会更适合采用非分层架

五、举例

我需要获取一个ds18B20的数据然后上传到阿里云,使用的是STM32

  • 硬件层
    STM32的底层库函数
  • HAL库
    就是使用STM32的底层库函数疯转一个方便上层调用的函数,比如GPIO的翻转,拉高,拉低等等。
  • 驱动层
    使用HAL库写DS18B20的驱动
    4G的驱动
  • 中间层
    这里面没有用到中间层,如果上了FreeRTOS实时操作系统的话,中间层就有FreeRTOS
  • 逻辑层
    刚刚不是已经写好了传感器的驱动,限制逻辑层里面需要获取驱动的数据来操作。比如滤波,
  • 应用层
    这边拿到的是最终的数据,就要通过4G上传到阿里云了。肯定要有定时器了,定时器到了,就可以上传数,那么就有上传失败成功的情况,
    这边的应用层就做两个事:一是拿到最终数据,二是定时器。定时器到了,把标志位传给逻辑层区处理。

六、 优化

如果需要响应度很快的话,那么最少有三层。HAL层,驱动层,应用层。这样的话,系统的开销就小了。


文章是自己总结而记录,有些知识点没说明白的,请各位看官多多提意见,多多交流,欢迎大家留言
如果技术交流可以加以下群,方便沟通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^Lim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值