嵌入式软件架构设计-程序分层

嵌入式软件架构设计-程序分层

1 前言

在嵌入式MCU软件开发过程中,程序分层设计也是重中之重,关系到整个软件开发过程中的协同开发,降低系统软件的复杂度(复杂问题分解)和依赖关系、同时有利于标准化,便于管理各层的程序,提高各层逻辑的复用等。


2 分层介绍

2.1 硬件抽象层(HAL)

嵌入式开发的核心就是芯片,它提供固定的片内资源(常用的有I/O,ISR,TIMER等,稍微好点的还有ADC,SPI等硬件资源,不需要芯片外围ADC采集芯片或模拟SPI)共开发者使用。而且它具有一个很重要的特点就是,不随项目的新增需求变动而变动。所以应将其作为最底层,为上层提供基础支持。

大部分情况下该层都会有芯片厂商提供相应的库函数包或者配置工具生成对应API函数,基本只要知道如何配置和使用就行,当然,也有可能存在芯片厂商提供的库函数包或配置工具配置/使用自由度不高,需要自己查看芯片寄存器手册增加自己需要的API函数。

2.2 硬件驱动层(HDL)

嵌入式开发通常都会使用片外资源,用来弥补硬件抽象层实现不了的功能或者需要扩展的功能。

如AT24C02,W25Q128等常见的外围EEPROM芯片,需要SPI通信(硬件SPI或I/O模拟的SPI)发送相应指令驱动该芯片,实现该芯片能正常工作。因此驱动这部分的API函数实现程序即为硬件驱动层。即使换了MCU,也只需将调用过硬件抽象层的API函数替换即可。

2.3 功能模块层(FML)

硬件抽象层和驱动层主要就是为功能模块层提供的,是实现该项目需要的基本功能。而这一层又为上层提供最基本的功能,各功能模块之前没有太多联系。

比如KEY、LED和EEPROM等功能,其中LEY、LED基本调用硬件抽象层的API函数(更复杂的可能通过片外芯片获取/控制等,因此可能也需要使用硬件驱动层),EEPROM调用硬件驱动层的API函数,即使EEPROM芯片更换(AT24C02或W25Q128等),也不影响EEPROM之前编写含的功能代码程序(前提是AT24C02,W25Q128提供的API函数提供的是统一标准)。

2.4 应用程序层(APL)

应用程序层主要负责的就是功能模块的使用和之间的逻辑关系处理等等,比如用户交互界面应用程序可能需要按键(KEY)、指示灯(LED)、显示屏(LCD)等,实现一系列的人机交互功能,通常应用程序层相对于功能模块层而言独立性较低。

一般情况下也可细分出应用业务层,但是对于单片机产品来说,这一层的必要性反而不高,分层太多,反而显得臃肿。


3 总结

3.1 硬件抽象层和硬件驱动层的主要区别

硬件抽象层使用的芯片内本身的资源(芯片手册都有介绍),而硬件驱动层使用的是芯片本身不存在的资源,而且需要编写相应代码才能实现的资源。

比如正点原子STM32中CAN使用的TJA1050芯片,CAN属于STM32的片内资源,TJA1050属于片外资源,但由于TJA1050不需要额外的代码就能通过STM32中CAN本身提供API函数正常 工作;因此可以认为TJA1050不属于硬件驱动层,而若使用TJA1041,则需要编写额外代码才能使正常工作才能使STM32中CAN本身提供API函数正常工作,因此可以将TJA1041归为硬件驱动层。

3.2 功能模块层和硬件抽象层、硬件驱动层的主要区别

功能模块层是按照项目需求提取出来的功能,需要硬件抽象层和硬件驱动层的硬件支持才能实现,功能模块层根据项目的功能需求改变而改变,而硬件抽象层和硬件驱动层则是项目需求书中的功耗等硬件相关的需求变动而改变,当然,若子功能的增加而硬件不支持,则也需更换硬件驱动。

比如项目中的数据储存功能,硬件支持有AT24C02、W25Q128和芯片本身的FLASH,都可以支持数据储存功能,即使后期因为功耗或节约成本等问题,硬件的更换也不影响数据储存功能的实现(前提规划好标准规范的API函数定义)且避免了重写该功能代码所带来的各种问题,保证了该功能的稳定性。


4 分层结构示意图

如果本文对你有帮助,别忘记给我个3连问 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

作者:大橙子疯

原文链接:https://www.cnblogs.com/const-zpc/p/16364443.html

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月26日 21:08
下一篇 2022年6月26日 21:08

相关推荐

  • 30个无加盟费的项目(茶颜悦色奶茶店加盟费多少)

    茶颜悦色又爆了,8月18日,茶颜悦色南京门店正式开业,开张不到半小时,门店就人满为患,消费者的购买热情十分高涨,而由于人流量过大造成拥堵,茶颜悦色也不得不暂停营业。 当然,这里面排…

    2022年11月27日
  • 推荐48个微商引流推广的方法(微商引流推广的方法有哪些)

    微商引流技能01——同行互推 资源共享,大家才会共赢。加入你是做穴位贴的,你的朋友是做化妆品的,这是两个没有交集的行业,你们可以友情互推,这样每个月的资源就都扩大了一倍,而且这些资…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 净利润率越高越好吗(净利润率多少合适)

    一、持续增收不增利,平均净利润率首次跌入个位数 2021年,增收不增利依旧是行业主流。具体来看,大部分企业营业收入呈增长态势,E50企业平均同比增速达到17.3%,但是利润增速则明…

    2022年11月26日
  • 全民K歌升级新版本7.0之后,有哪些隐藏功能?

    作者:高百烈来源:知乎 这个功能,旧版并没有,要升级到全新的全民K歌7.0版本才能发现。 作为朋友圈当代K歌之王,我费了不少功夫才抢到内测版本。有一说一,全民K歌的路子真的很野,新…

    2022年11月25日
  • 世界杯海外直播在哪看(中国女篮世界杯直播)

    最近一段时间最火爆的话题就是世界杯了,大家都想第一时间观看直播比赛,一些海外小伙伴在问世界杯海外直播在哪看?2022年世界杯海外直播免费观看平台有哪些?下面小编为大家带来世界杯海外…

    2022年11月25日
  • 规范透明促PPP高质量发展——16万亿元大市场迎来新规

    近日,财政部印发《关于进一步推动政府和社会资本合作(PPP)规范发展、阳光运行的通知》,从做好项目前期论证、推动项目规范运作、严防隐性债务风险、保障项目阳光运行四个方面进一步规范P…

    2022年11月25日
  • 上手Reno8 Pro体验跨屏互联 实在太方便!

    11月已经来到了月底,在手机品牌又要推出新一年度的新品手机之前,我们来点评一下今年令人惊喜的产品。如OPPO的Reno8 Pro系列,该系列搭载双芯影像配置获得了很多消费者的认可。…

    2022年11月25日
  • 推荐3种白手起家的赚钱项目(白手起家赚钱项目有哪些)

    如今社会压力非常的大,家有老少要养活,这些都加速了穷人想要创业的欲望,但是创业路总是那么的艰难,资金就是创业的重头戏,所以选择一个低成本又赚钱的项目是大多数人最期望的了,那么有哪些…

    2022年11月25日
  • 中兴Axon40 Ultra航天版将于11月29日正式发布

    据中兴手机官微爆料,中兴Axon40 Ultra航天版将于11月29日正式发布,新机不仅会采用骁龙处理器,还将为大家带来一枚独立安全芯片,获得国密认证,拥有安全专利布局,不仅可以大…

    2022年11月24日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息