• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

呆头鹅丶鹅

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

工程架构学习记

1、软件框架参考:
a9987bed4811c3569a599171aa05ebea
对于上图框架设计,Drvp 硬件驱动层 直接与硬件打交道,最底层,与芯片相关;Drv 驱动适配层 ,对硬件驱动层的进一步包装 就是包装Drvp层。bsp层,统一由framework.h负责管理,并传递操作方式,包含结构可以如下所示:
153480fd8271763b452b0447d1f03b64
2、什么是 framework:
在嵌入式软件架构里,Framework(框架层) 不是一个简单的 “函数库”,而是一套统一的、规范的运行环境与交互规则。它定义了 “上层业务该怎么调用底层资源”,而不是让业务代码直接裸奔操作寄存器或驱动。
它把底层的复杂细节(比如驱动差异、OS API、硬件适配)全部封装起来,给上层提供一套稳定、统一的接口。上图里的 bsp_framework,就是基于 BSP 的硬件适配 + 系统框架层,是整个工程的 “地基”。
61dbca0321f06bda1476fc1dcc2b1a34
总之,BSP 是功能集合(所有底层支持的总和),framework 是组织方式(把这些功能分层、封装、对外提供统一接口的架构)。
3、用 STM32 HAL 库时,drvp 层可以直接去掉,drv 层直接调用 HAL 库就行。因为 HAL 库本身,就已经把 drvp(硬件寄存器操作)干了,HAL 库 = 官方帮你写好的 drvp。drv 层只做一件事:
封装 HAL 库,给上层提供统一接口,比如://drv_gpio.c 直接调用 HAL 库,不需要 drvp
void drv_gpio_set(...) {
HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_SET);
}

posted on 2026-05-11 15:04  呆头鹅丶鹅  阅读(10)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3