ARM32开发——库与包

🎬 秋野酱:《个人主页》

🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

嵌入式软件通用架构

库

标准外设库(Standard Peripheral Library)和HAL库(Hardware Abstraction Layer Library)是两种不同的库,它们在嵌入式系统开发中发挥不同的作用。它们通常用于不同的层次,但也有关联的部分。

SPL库

标准外设库,Standard Peripheral Library。简称SPL。标准外设库是一种用于嵌入式系统开发的软件库,由各种芯片厂家提供,旨在简化和抽象硬件访问。SPL的目标是帮助开发者更轻松地与微控制器(MCU)的外设进行交互,而无需深入了解底层硬件细节。

SPL通常包含了用于初始化、配置和控制各种外设(例如GPIO、UART、SPI、I2C、定时器等)的函数和驱动代码。这使得开发者可以使用相对简单的API来操作这些外设,而不必直接操作硬件寄存器。SPL还可以提供示例代码、文档和工具,以帮助开发者更好地理解和使用外设功能。

SPL通常是针对特定芯片系列或家族设计的,因此它的功能和支持可能会因厂家和型号而异。开发者可以根据自己的芯片型号选择相应的SPL版本,然后使用其中的函数和驱动代码来开发应用程序。

通常SPL库我们也称之为 固件库Firmware。

HAL库

HAL库,Hardware Abstraction Layer Library。HAL库是特定厂家的硬件抽象层库,用于对特定系列或型号的微控制器进行底层硬件操作和抽象。HAL库提供了与硬件无关的API接口,使得开发者可以编写与硬件平台无关的代码。HAL库封装了与硬件相关的底层寄存器操作,使得开发者可以通过函数调用来控制外设、配置时钟、中断等,而无需直接操作寄存器。

HAL库通常建立在标准库之上。HAL库在提供对硬件的抽象时,可能会使用标准库提供的一些基本函数,如内存操作函数(memcpy、memset等)。此外,HAL库还可能在某些情况下使用标准库的输入输出函数(printf、scanf等)来简化开发者与外设的交互。

对于一些大型的HAL库,可能会包含自己的标准库实现,以满足特定需求或兼容性要求。这种情况下,HAL库可能提供自己的标准库函数,以便开发者在不同的编译环境中使用。

需要强调的是,虽然标准库和HAL库在嵌入式系统开发中常常共同使用,但它们是两个独立的概念,各自在软件开发的不同层次发挥作用。标准库是通用的软件库,可用于各种平台和应用,而HAL库是特定硬件的抽象层库,用于简化对硬件的操作。

SPL和HAL的关系

"标准外设库"(SPL)和"硬件抽象层"(HAL)都是用于嵌入式系统开发的软件库,旨在简化和抽象硬件访问。它们之间的关系如下:

  1. 演进关系: HAL可以被视为SPL的进化版本。在某些嵌入式系统开发环境中,SPL被逐渐取代或演变为HAL。HAL提供了更高级别的抽象和更一致的API,使开发者能够更容易地跨不同的芯片系列进行开发。
  2. 抽象程度: HAL提供了更高层次的抽象,更接近通用的API风格,而SPL可能会更接近底层硬件寄存器的编程接口。这使得使用HAL更加方便,尤其是对于初学者或跨平台开发。
  3. 芯片厂家支持: HAL通常由芯片厂家、开源社区或第三方组织提供,以提供更广泛的支持。SPL通常由芯片厂家提供,且可能只针对特定的芯片系列。
  4. 功能覆盖: HAL通常提供一致的API,支持跨不同的芯片系列,从而促进了跨平台开发。SPL可能更专注于特定的芯片系列,提供更特定的功能和配置选项。
  5. 代码大小和效率: 由于HAL提供了更高层次的抽象,可能会引入更多的代码,导致代码大小增加。SPL通常更接近底层硬件,可能更紧凑且更高效。
    目前的现状,企业开发偏SPL开发,新的技术环境偏HAL开发。HAL开发也需要厂商的支持,需要提供稳定的API,也需要长期验证。
    包
    BSP
    BSP,全称Board Support Package,是指嵌入式系统中与硬件平台相关的软件层次。它提供了与具体硬件平台相关的底层驱动程序、初始化代码、操作系统适配层等。BSP负责将底层硬件与高层应用程序隔离开来,使应用程序能够更方便地在不同硬件平台上运行。BSP还可以包括与外设交互的接口、时钟配置、中断处理等。
    可以简单的理解为,将开发板中的传感器、电机、按键等,进行封装,方便外部调用。

MSP

MSP,全称Microcontroller Support Package,是更专注于微控制器的支持包,它针对特定的微控制器或微处理器提供了更详细的支持。MSP包括对芯片外设的低级驱动,例如ADC(模数转换器)、PWM(脉宽调制)、定时器等。它通常提供了对特定芯片的寄存器级别的访问,使开发人员能够直接配置和控制硬件功能。MSP的目标是为特定微控制器提供高效的编程支持,充分利用其硬件功能,从而实现更精细的控制。

可以简单的理解为,将外设进行细致的逻辑封装,方便调用。

相关推荐
zhangrelay3 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
comyccccc4 小时前
STM32F103C8T6最小系统板设计全解析学习笔记
单片机·1024程序员节
Industio_触觉智能4 小时前
把NPU检测直接嵌进采集终端|RK3576 AI采集终端全链路拆解教程-下
嵌入式硬件·ai·硬件架构·npu·ai视觉·rk3576·采集终端
en.en..5 小时前
STM32 GPIO ODR 与 BSRR 寄存器完整对比详解
单片机·嵌入式硬件
HQB20268 小时前
EG1182|屹晶微电子 60V 内置高压管异步降压 DC‑DC
嵌入式硬件·硬件工程
LCG米9 小时前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
深圳老胡10 小时前
STM32C5A3ZG 网络调试总结:从启动失败到连续 Ping 稳定
笔记·stm32·单片机·代码规范
硅基造物主10 小时前
STM32 从 0 到 1 做智能家居(八):PWM 控制风扇、加热片与 SG90 窗帘
stm32·嵌入式硬件·智能家居·hal库·pwm
简单电磁炮10 小时前
关于adc采集
stm32·单片机
HQB202611 小时前
EG1163 (S)|屹晶微电子 600V 高压同步降压半桥控制器
嵌入式硬件·硬件工程