MSP 单片机支援包(MCU Support Package):是单片机底层的代码,同款芯片可以共享。BSP可使用MSP的代码。我们要初始化和MCU无关的东西:例如串口协议,波特率,奇偶校验,停止位…,这些设置和使用什么样的MCU没有任何关系。所以就把串口抽像成为一个“串口”。有了抽像的串口,这个“串口”就要在MCU上进行承载,例如用STM32进行承载,PA9为发送,PA10为接收,MSP就是要初始化PA9和PA10,配置这两个引脚。所以HAL驱动方式的初始化流程就是:HAL_USART_Init() --> HAL_USART_MSP_Init() 先初始化协议,再初始化MCU的引脚。在STM32的HAL驱动中MSP_Init()是做为回调,包含在PPP_Init()中的。
CSP 芯片支援包(Chip Support Package:是芯片底层的代码,同款芯片可以共享。BSP可使用CSP的代码。像24C02,有IIC硬件接口相关是MSP代码;IIC协议代码;还有24C02本身按照IIC一些的操作芯片代码
BSP 板级支持包(Board Support Package:是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。在嵌入式系统软件的组成中,就有BSP。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。