• 【STM32】STM32的Cube和HAL生态


    1.单片机软件开发的时代变化

    1.单片机的演进过程

    (1)第1代:4004、8008、Zilog那个年代(大约1980年代之前)
    (2)第2代:51、PIC8/16、AVR那个年代(大约2005年前)
    (3)第3代:51、PIC32、Cortex-M0、M1、M3年代(大约2005年到现在)
    (4)第4代:51、STM8/MSP430、PIC、Cortex-M4、M7、低功耗系列(现在到将来5-10年)

    2.单片机开发的演进过程

    (1)第1代:不讨论,没意义
    (2)第2代:汇编和C都有,一般没有库或最多用标准C库
    (3)第3代:出现单片机厂商提供的外设库,典型的如STM32的标准库
    (4)第4代:库是标配和发展方向,库考虑更多硬件兼容性,库集成更多组件,库面向网络功能
    (5)第5代:库面向云端对接、库面向上层语言如python的接口、提供辅助工具如STM32CubeMX

    3.演进的内在动力和原因,方向

    (1)单片机片上资源越来越多,越来越复杂,单片机编程的工程体量越来越大、复杂度和细节越来越多。因此必须要外设库来简化和加速开发。
    (2)单片机型号越来越多,外设分布越来越散,引脚复用越来越多,需要专用配置工具协助工程师来设计引脚复用和基本功能配置,简化开发、快速评估。
    (3)联网、USB、文件系统、加密算法、RTOS等第三方组件越来越重要
    (4)物联网云管端模型,促进了单片机对联网对接的需求
    (5)半导体厂商同质化竞争越来越激烈,不得不在开发生态上下功夫提升竞争力

    4.演进的技术方向

    (1)单片机开发在走PC、手机等以CPU为核心的产品的老路:底层和细节越来越成熟,ARM提供CPU的库、单片机厂商提供外设库,单片机软件工程师直接基于这些库来构建自己的应用。
    (2)提供GUI式的辅助开发工具,加速并简化产品开发
    (3)提供一整套开发生态而不只是一个SDK包
    (4)提供HAL抽象层驱动来加速产品移植和选型,增加客户粘度。

    2.STM32软件开发的各种模式

    1、第1代:寄存器开发
    2、第2代:标准库开发
    3、第3代:HAL/LL库 + STM32CubeMX工具开发

    (1)HAL(hardware abstract layer)、LL(lowerlevel layer)
    (2)HAL库的优势是便于在不同型号的STM32芯片之间移植,劣势是代码效率低
    (3)LL库几乎等同于直接操作寄存器
    (4)CubeMX工具是ST的一站式开发包,层级高于SDK包,包含了STM32芯片开发的所有官方资源,提供了友好的使用方法;CubeMX是一个windows上的IDE软件;CubeMX是一个工具包加芯片容器,各系列芯片资料以插件补丁形式安装;
    (4)HAL/LL库和CubeMX本质上是独立的东西,只是使用上纠缠在一起了而已。
    (5)CubeMX和Keil MDK是不同作用的东西,要搞清楚。

    4、我们应该如何学习

    (1)拥抱变化,站在时代前沿。固守成规是最愚蠢的。
    (2)换汤不换药,本质从未变过,变得只是表面。后面课程中会看到
    (3)我推崇的态度:积极学习并使用新东西,好好利用新工具,但不要丢掉老知识和技能。
    (4)原来就学了会了标准库的寄存器开发的,继续拓展学习HAL库和新工具就行了,你会发现体力活变少了,核心技能要求还是一样越来越高。
    (5)新手入坑本来没底子的,可以直接学习新开发模式,然后逐步向底层靠拢,你会发现内部有不少秘密,这些深挖的东西其实就是前代的那一套······
    (6)ARM、单片机厂商、MDK/IAR等IDE厂商、freeRTOS/LiteOS/rt-thread/AliOS/uCOS等厂商、华为云/阿里云/机智云/亚马逊/IBM等云厂商,大家都在布局,都在做体系,要注意去体会各家的不同资源和立场、不同玩法,找到最适合自己的东西来用。

    3.STM32CubeMX工具入门

    1、STM32CubeMX软件下载和安装

    意法半导体-STMicroelectronics

    (1)在http://www.stmicroelectronics.com.cn/ 首页搜索STM32CubeMX即可找到下载页
    (2)分STM8版本和STM32版本
    (3)尽量安装最新版,可以打开旧版本创建的工程;反之不可以。

    2、MCU系列的firmware补丁包下载安装

    (1)安装包搜STM32Cube也能搜到
    (2)可以在CubeMX工具中在线下载安装,但是实际感觉不好用
    (3)推荐到STM32官网下载离线包,然后本地导入

    查看已经安装哪些依赖

    注意导入离线包的版本与软件安装选择要对应得上

    3、软件的大体浏览和基本介绍

    查看开发板上的芯片信息

    4.MDK5的全面介绍

    STM32项目工程的搭建-CSDN博客

    1、MDK5和之前的版本问题

    1)MDK的前身是Keil,主页:www.keil.com。以前主要做51的IDE,后面被ARM收购增加了MDK

    2)Keil开发51的是Keil C51 Keil 开发的是ARM的是Keil MDK

    3)MDK主要用来开发Cortex-M系列的,ARM9,ARM11不太适合用MDK开发

    4)MDK早期开发常用版本3.5 4.x,期间差异不大,到MDK5开始有了很大变化

    2、MDK5的下载和安装

    MDK5最新版本软件下载:http://www2.keil.com/mdk5
    MDK的pack下载路径:https://www.keil.com/pack

    keil C51

    keil ARM

    3、MDK5使用的一些细节

    (1)工程建立和输出文件夹设计,MDK5已经默认设置了
    (2)C/C++栏下的预定义宏


    (3)C/C++栏下的头文件包含设计


    (4)use microlib

    (5)选择合适芯片

    (6)选择正确的调试器型号:STLink

    (7)Flash load下载算法设置

    4、其他几种STM32开发的IDE

    (1)IAR EWARM
    (2)RVDS/ADS1.2
    (3)gcc
    (4)TrueStudio
    (5)MDK4

    5.STM32的FW补丁结构分析

    1、整体情况

    (1)每个系列(如L4、F1)是一个整体的补丁包
    (2)每个系列都有不同的版本号,而且会不断升级
    (3)可以在STM32CubeMX工具中在线升级安装,也可以到官网下载然后本地import
    (4)所谓安装其实就是解压开放到了一个位置中

    2.文件层级

    Drivers

    CMSIS

    统一,方便移植

    6.课程中用到的开发板介绍

    1、首选NB476开发板(STM32L476)

    因为开发比较晚,所以只能使用HAL库进行开发

    F:主功能系列--》性能一般

    L:专注与低功耗,不在乎性能

    H:性能高

    2、兼容讲HC6800 ARM3.0开发板

    既可以使用标准库开发也可以使用HAL库开发

    3、其他开发板怎么办

    (1)HAL库设计的初衷就是解决代码在STM32各MCU系列间移植
    (2)建议学习本课程用NB476开发板,学会了其实遇到哪个都能用起来
    (3)除原有项目维护外,建议新项目一律切入HAL库不要再用标准库
    (4)RTOS方面建议重点学第四季先掌握一个rtos,使用时尽量用liteos、rtt、alios等国产货

    7.生态系统真的很重要

    1、从小米的物联网生态说起

    (1)商业上小米是比较早构建生态的,事实证明很成功
    (2)生态系统的本质是资源的更合理、更低成本、更快速配置--小米的手机可以控制小米的家电
    (3)信息化让商业生态重要性更高

    2、软件开发行业也是生态为王

    (1)Wintel时代围绕微软Windows和Office的PC软件生态帝国
    (2)iOS的内聚生态成就了苹果的优秀和成功==软件+硬件
    (3)android的开放生态主宰了当前的移动互联网时代,并将继续主宰

    3、单片机开发领域生态竞争鏖战正酣

    (1)物联网时代的来临使单片机站到了风口,列强环伺都盯上这块了
    (2)ARM在CPU内核方面是目前霸主,但是也有RISC-V等在挑战
    (3)开发环境方面MDK、IAR、gcc、DS等都有人用
    (4)芯片方面STM32前几年积累的优势很大(尤其国内),STM32的开发生态也做的很好;但是TI、freescale、瑞萨、Atmel等其他厂商也有各自一定优势
    (5)RTOS方面ucos、freertos、liteos(华为)、rtthread、alios(阿里云)等涌现出很多
    (6)云方面国内阿里云、华为云、机智云等,国外amazon、google等也有很多
    (7)无线通信领域WIFI、BT、nbiot、Lora、4G等多种方式都在快速发展演化
    (8)下游应用厂商一大批也都在努力,各种新的开发模式和商业模式每天都在涌现

    4、朱老师的看法

    (1)开发生态的本质是让开发更快速、更简单、更直达目标、更低成本。
    (2)开发者的个人价值和发展和开发生态的价值和发展并不完全重合,甚至有时候还矛盾冲突
    (3)建议1:回归本质,打好根基、练好内功,以不变应万变
    (4)建议2:积极拥抱变化,学习新技术、新开发方式、新语言、努力跟上时代
    (5)单片机开发的未来在于:低功耗、联网连云、RTOS、安全和加密等方向点

  • 相关阅读:
    互联网基石:TCP/IP 四层模型,由浅入深直击原理!
    贪婪算法(Huffman编码)
    OpenShift 4 - 用 Percona XtraDB Cluster 在 OpenShift 部署运行 MySQL 多副本集群
    使用dom4j解析XML
    find、findindex、indexof的区别
    android 11及以上保存图片视频到相册
    Python归并排序
    juc详解
    网络的下一次迭代:AVS 将为 Web2 带去 Web3 的信任机制
    Flutter快学快用10 路由设计:Flutter 中是如何实现 Scheme 跳转的
  • 原文地址:https://blog.csdn.net/m0_63077733/article/details/134277641