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

嵌入式项目代码架构与分层

代码架构与分层

  • BSP:板级支持驱动程

BSP: Board Support Package

MCU和板上外设器件(比如MPU6050)的通信与交互过程。

有时候分两种:

1.在裸机(有限状态机)情况下,写的驱动程序;

2.在操作系统下,写驱动程序。

  • Core:MCU驱动程序

面向MCU进行编程,初始化MCU内部的外设(时钟,IIC,SPI等外设)。包含main.c文件。

  • Drivers:厂商SDK程序

MCU厂商和MCU内的CPU厂商提供的,用来对CPU和偏上外设编程时用的驱动库,一般由厂家提供。

  • Middlewares:中间件

抽象程度很高,能在各个项目中安插通用的:LVGL\数学库\快速傅里叶变换库

  • OS:操作系统层

操作系统层。FreeRTOS

  • SYSTEM:系统配置层

对系统定义整体的宏;

对于全局系统有影响的参数,和文件(比如System.h),放在这个目录下;

  • 业务层:

结合业务实现具体地应用逻辑,这一层一般是一个个xxx_task.c/.h文件存放的位置;

在设计每层的代码时,一定避免跨层进行操作。原因如下:

  1. 跨层执行会影响代码分层解耦,修改其中一层代码,为了功能能实现必须跨层修改代码,会导致逻辑不清晰,

架构混乱,没有实现解耦。

  1. 下层某些操作可能在中断中执行,部分中断RTOS无法管理,会造成数据溢出、数据完整性缺失、影响其他硬件

工作、RTOS中的任务无法执行等问题。

  1. 可能会产生线程安全的问题,比如APP线程可能会向驱动线程传递阻塞的回调函数,造成驱动线程被阻塞,从而导致其他消费者线程的任务执行被Delay。

为什么需要在APP与BSP之间通过OS层传递数据


http://www.kler.cn/a/591418.html

相关文章:

  • Mac使用pycharm+基于Kaggle的社交媒体情绪分析数据集,用python做词云的可视化
  • NFC 碰一碰发视频源码搭建,支持OEM
  • Qt Widgets、Qt Quick
  • 大语言模型的压缩技术
  • 如何利用爬虫获取1688商品详情API接口:从入门到实战
  • 解决远程卡在下载vscode-server的问题,一键安装脚本
  • 基于PSO粒子群优化的XGBoost时间序列预测算法matlab仿真
  • 面试笔记6--文件包含漏洞
  • 3.4 二分查找专题:LeetCode 69. x 的平方根
  • 构建一个基于快速非奇异终端滑模控制(FNTSMC)的仿真模型,运用不同趋近律与设计的趋近律开展对比,进而探究系统收敛时间和抖振幅值
  • 有哪些开源的智慧园区项目?
  • 产品战略之科学定价策略与模型(104页PPT)(文末有下载方式)
  • 网页复印机:只需一个网址,一键克隆任何网站!(可根据需求生成/优化相关代码)
  • Socket 、WebSocket、Socket.IO详细对比
  • uniapp报错 Right-hand side of ‘instanceof‘ is not an object
  • 在线JSON格式校验工具站
  • 基于SpringBoot+Vue3实现的宠物领养管理平台功能一
  • 应用层之网络应用模型,HTTP/HTTPS协议
  • 深度解析manus:技术原理剖析、开源平替方案架构分析
  • 搜广推校招面经五十四