STM32的cube和HAL生态
1.单片机软件开发的时代变化
1.单片机的演进过程
- 4004,8008,zilog年代(大约在1980年代之前)
- 51,PIC8/16,AVR(8位)年代(大约在2005年之前)
- 51,PIC32,cortex-M0,M1,M3年代
- 51,STM8/MSP430,PIC,cortex-M4,M7,低功耗系列
2.单片机开发的演进过程
- 不讨论,没意义
- 汇编和c都有,一般没有库或最多使用标准c库
- 出现单片机厂商提供的外设库,典型如stm32的标准库
- 库是标配和发展方向,库考虑更多硬件兼容性,库集成更多组件,库面向网络功能
- 库面向云端对接,库面向上层语言如python的接口,提供辅助工具如STM32cubeMX
3.演进的内在动力和原因
- 单片机片上资源越来越多,越来越复杂,单片机编程的工程体量越来越大,复杂度和细节越来越多。因此必须要外设库来简化和加速开发。
- 单片机型号越来越多,外设分布越来越散,引脚复用越来越多,需要专用配置工具协助工程师来设计引脚复用和基本功能配置,简化开发,快速评估。
- 联网,USB,文件系统,加密算法,RTOS等第三方组件越来越重要。
- 物联网云管端模型,促进了单片机对联网对接的需求。
- 半导体厂商同质化竞争越来越激烈,不得不在开发生态上下功夫提升竞争力。
4.演进的技术方向
- 单片机开发在走PC,手机等以CPU为核心的产品的老路:底层和细节越来越成熟,ARM提供CPU的库,单片机厂商提供外设库,单片机软件工程师直接基于库来构建自己的应用。
- 提供GUI式的辅助开发工具(cubeMX),加速并简化产品开发。
- 提供一整套开发生态而不只是一个SDK包(软件开发工具包)。
- 提供HAL抽象层驱动来加速产品移植和选型,增加客户粘度。
2.STM32软件开发的各种模式
1.寄存器开发
2.标准库开发(标准外设库)
3.HAL/LL库+STM32cubeMX工具开发
- HAL(Hardware Abstraction Layer),LL(Low Layer)
- HAL库的优势是便于在不同型号的STM32芯片之间移植,劣势是代码效率低。
- LL库几乎等同于直接操作寄存器。
- CubeMX工具是ST的一站式开发包,层次高于SDK包,包含了STM32芯片开发的所有官方资源,提供了友好的使用方法;cubeMX是一个windows上的图形化软件;cubeMX是一个工具包加芯片容器,各系列芯片资料以插件补丁形式安装。
- HAL/LL库和cubeMX本质上是独立的东西。
- CubeMX和keil MDK是不同作用的东西。