当前位置: 首页 > news >正文

嵌入式软件的分层架构

有空就填坑。

常规的分层架构

大致可分为以下4层:HAL层(硬件驱动层)、BSP层(板级支持包层)、中间件层(Middleware Layer)、APP层(应用层)

HAL层

最底层,负责直接和硬件打交道,也就是操作MCU的寄存器。

负责初始化外设和提供最基础的硬件读写函数。

原则:只做硬件操作,不掺杂任何业务细节。

BSP层

调用驱动层函数

中间件层(Middleware Layer)

提供通用的软件服务,如:RTOS、文件系统、通信协议栈、通信库、算法库(滤波算法、PID等)

APP层

决定设备做什么和怎么做。只负责调用下层提供的接口

禁止直接操作硬件寄存器和底层的HAL函数

调用关系

HAL驱动层,直接操作硬件。

BSP层,调用驱动层

中间件层,调用BSP层或者驱动层

APP层,调用中间件层、BSP层以及驱动层

实操演示

工程中创建Driver、BSP、Middleware、Application四个文件夹。

在BSP文件里再创建具体的模块文件夹。如:LED

模块文件夹里再创建模块的.c和.h文件。里面的.c和.h文件全部用英文小写,格式如下:bsp_led.c、bsp_led.h。(可由个人习惯进行修改)

http://www.dtcms.com/a/196673.html

相关文章:

  • Cookie、Session、Token
  • 关于此站点更改通知.top域名后期将统一更换为snowytime.cn访问,其余top访问进入过渡期
  • 使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
  • Elasticsearch 性能优化面试宝典
  • Redis设计与实现——分布式Redis
  • 【从设置到上传的全过程】本地多个hexo博客,怎么设置ssh才不会互相影响
  • RAID学习笔记
  • vue 模板二次开发准备
  • WebXR教学 09 项目7 使用python从0搭建一个简易个人博客
  • 【Linux网络】NAT和代理服务
  • Python训练打卡Day26
  • Unbuntu 命令
  • Visual Studio2022跨平台Avalonia开发搭建
  • JVM 双亲委派机制
  • windows编写和调试代码工具——IDE安装
  • MATLAB中进行深度学习网络训练的模型评估步骤
  • .NET Core 中 Swagger 配置详解:常用配置与实战技巧
  • 【gitee 初学者矿建仓库】
  • 使用Maven部署应用到TongWeb(东方通应用服务器)
  • 【论文阅读】针对BEV感知的攻击
  • React中startTransition的使用
  • 数值分析填空题速通
  • HMDB51数据集划分
  • 深入解析:java.sql.SQLException: No operations allowed after statement closed 报错
  • Halcon算子应用和技巧14
  • 物联网赋能7×24H无人值守共享自习室系统设计与实践!
  • Elasticsearch 查询与过滤(Query vs. Filter)面试题
  • 怎么在excel单元格1-5行中在原来内容前面加上固定一个字?
  • STM32 | 软件定时器
  • 告别“知识孤岛”:RAG赋能网络安全运营