一、嵌入式与STM32
1.嵌入式
除了桌面PC之外,所有的控制类设备,都称之嵌入式。
1 ARM概述
1.1 历史
1978年,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn公司。1985年,Roger Wilson和Steve Furber设计了他们自己的第一代32位、6MHz的处理器,用它做出了一台RISC指令集的计算机,简称ARM(Acorn RISC Machine)。这就是ARM这个名字的由来。
- 经典指令集
- CISC
复杂指令集计算机(Complex Instruction Set Computer)
在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的指令却不经常使用,在程序设计中只占20%,目前,桌面计算机流行的x86体系结构即使用CISC。 - RISC
精简指令集计算机(reduced instruction set computer)
支持的指令比较简单,所以功耗小、价格便宜,特别适合移动设备。早期使用ARM芯片的典型设备,就是苹果公司的牛顿PDA。
- CISC
特点区别各方面如下:
-
指令系统
CISC:计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
RISC:设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。 -
存储器操作
CISC:机器的存储器操作指令多,操作直接。
RISC:对存储器操作有限制,使控制简单化。 -
程序
CISC:汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。
RISC:汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计。 -
中断
CISC:机器是在一条指令执行结束后响应中断。
RISC:机器在一条指令执行的适当地方可以响应中断。 -
CPU
CISC:CPU包含有丰富的电路单元,因而功能强、面积大、功耗大。
RISC:CPU包含有较少的单元电路,因而面积小、功耗低。 -
设计周期
CISC:微处理器结构复杂,设计周期长。
RISC:微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术。 -
用户使用
CISC:微处理器结构复杂,功能强大,实现特殊功能容易。
RISC:微处理器结构简单,指令规整,性能容易把握,易学易用。 -
应用范围
CISC:机器则更适合于通用机。
RISC:由于RISC指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机。
1.2 ARM的应用
20世纪90年代开始,ARM 32位嵌入式RISC处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。
搭载ARM芯片架构的设备数量是英特尔的25倍。全世界99%的智能手机和平板电脑都采用ARM架构。约有43亿人每天都会触摸一台搭载ARM芯片的设备,占全球总人口的60%。
2 ARM处理器
2.1 ARM的处理器类型
目前ARM架构常见类型:
- Cortex-A:针对高性能计算。如我们目前手机SoC中常出现的Cortex-A76等。
- Cortex-R:针对实时操作处理。主要是面向嵌入式实时处理器。在汽车的电子制动系统,工业控制领域等领域比较常见。
- Cortex-M:专为低功耗、低成本系统设计。目前火热的IoT领域常常见到采用Cortex-M架构的处理器。
ARM:经典系列、Cortex-M系列、Cortex-R系列、Cortex-A系列。
经典系列(ARM7、ARM9、ARM11)
Cortex-A系列
Application Processors(应用处理器)–面向移动计算、智能手机、服务器等市场的的高端处理器。这类处理器运行在很高的时钟频率(超过1GHz),支持像Linux,Android,MS Windows和移动操作系统等完整操作系统需要的内存管理单元(MMU)。
如果规划开发的产品需要运行上述其中的一个操作系统,你需要选择ARM应用处理器(Cortex-A53、Cortex-A73、Cortex-A76、Cortex-A77)。
Cortex-R系列
Real-time Processors(实时处理器)–面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。
多数实时处理器不支持MMU,不过通常具有MPU、Cache和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如200MHz 到 >1GHz ),响应延迟非常低。
然实时处理器不能运行完整版本的Linux和Windows操作系统,但是支持大量的实时操作系统(RTOS)。
其相比Cortex-A系列,少了对页表的支持,也就是说软件看到的地址都是物理地址,相对来说软件运行时间和中断响应速度都更加快速稳定,容易预测。
Cortex-M系列
Microcontroller Processors(微控制器处理器)–微控制器处理器通常设计成面积很小和能效比很高。
通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在200Mhz之上)。 并且,新的Cortex-M处理器家族设计的非常容易使用。因此,ARM微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。
其相比Cortex-R就更加精简了,更短的流水线,更简单的指令集,更少的运算单元,调试单元,总线性能要求不高,以低功耗为主。
2.2 ARM RISC的特点
ARM处理器则是ARM架构下的RISC(精简指令集)处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等,主要特点如下:
- 指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定;
- 流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行;
- 寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器;
- Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率;
- 寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。
「课堂练习1」
ARM(Advanced RISC Machine)是一种广泛应用于嵌入式系统和移动设备的低功耗处理器架构。 它以其高效的能耗管理和出色的性能闻名,并成为了智能手机、平板电脑和物联网设备等市场的主导力量。 ARM架构可以分为三个主要的分类:ARMv6、ARMv7和ARMv8。
2.3 ARM指令架构
Thumb是16位指令;Thumb-2是16和32位混合指令集。ARM指令集则起始32位,在ARMv8开始,支持64位。
指令架构 | 特性 | 说明 |
---|---|---|
Thumb | 16位 | 最早的指令集 |
Thumb-2 | 16位和32位混合 | 在Cortex系列中引入 |
A32 | ARM 32 位指令集 | 即以前称之为ARM的指令集 |
A64 | ARM 64 位指令集 | 在ARMv8-A中引入的,支持64位 |
Thumb与Thumb-2
ARM32指令集:代码全部是 32位的,每条指令能承载更多的信息,因此使用最少的指令完成功能, 所以在相同频率下运行速度也是最快的, 但也因为每条指令是32位的而占用了最多的程序空间。
Thumb指令集:代码全部是16位的,每条指令所能承载的信息少,因此它需要使用更多的指令才能完成功能, 因此运行速度慢, 但它也占用了最少的程序空间
Thumb-2指令集:在前面两者之间取了一个平衡,兼有二者的优势,当一个操作可以使用一条32位指令完成时就使用32位的指令,加快运行速度,而当一次操作只需要一条16位指令完成时就使用位的指令,节约存储空间。
MCU使用什么指令集主要由内核决定的,比如Cortex-M4使用的是Thumb-2指令集。
「课堂练习2」
简述ARM、Thumb、Thumb-2指令集。
ARM指令集: 编代码全部是 32bits 的,每条指令能承载更多的信息,因此使用最少的指令完成功能, 所以在相同频率下运行速度也是最快的, 但也因为每条指令是32bits 的而占用了最多的程序空间。
Thumb指令集: 编代码全部是 16bits 的,每条指令所能承载的信息少,因此它需要使用更多的指令才能完成功能, 因此运行速度慢, 但它也占用了最少的程序空间
Thumb-2指令集: 在前面两者之间取了一个平衡, 兼有二者的优势, 当一个 操作可以使用一条 32bits指令完成时就使用 32bits 的指令, 加快运行速度, 而当一次操作只需要一条16bits 指令完成时就使用16bits 的指令,节约存储空间。
2.4 ARM CPU 的架构
架构版本 | 说明 | chipsets |
---|---|---|
ARMv1 | 原型 | 原型 |
ARMv2 | 原型,增强v1,添加乘法指令和协处理器 | 原型 |
ARMv3 | 添加了MMU、Cache、WriteCache | 第一个处理器 |
ARMv4 | 32位,3级整数流水线; 商业化大量的Arm7处理器 | ARM7TDMI、ARM720T、ARM9TDMI、ARM940T、ARM920T |
ARMv5 | 32位,5-6级整数流水线。包括ARMv5TE、ARMv5EJ;[E:增强型DSP指令集。包括全部算法和16位乘法操作。J:支持新的Java] | ARM9E-S、ARM966E-S、ARM1020E、ARM 1022E以及XScale是ARMv5TE的。ARM9EJ-S、ARM926EJ-S、ARM7EJ-S、ARM1026EJ-S是基于ARMv5EJ的。 |
ARMv6 | 32位 ARMv6 包括了( SIMD、Thumb、Jazelle、DBX、(VFP)、MMU), ARMv6T2包括了(SIMD、Thumb-2、(VFP)、MPU), ARMv6KZ包括了(ARMv6基础上增加MMU、TrustZone),ARMv6K包括了(1-4 核SMP、MMU) | ARM1176JZ、ARM1136EJ |
ARMv7-A/R | 32位,Cortex-A系列芯片的指令集。其加入的特性都引入到v8-A | Cortex-A5,A7,A8,A9,A15,A17 |
ARMv8-A | 引入64位支持 | Cortex-A32,A35,A53,A55,A57;A73,A75,A76,A76AE |
新的ARMv7,ARMv8指令集
截止目前ARM处理器的最新系列
Cortex-M 选型
Cortex-M家族兄弟众多,且性能各异,满足了不同客户的需求,使得ARM公司拥有 40 个以上的 合作伙伴,包括 NXP Semiconductors、STMicroelectronics、Texas Instruments 和 Toshiba 等领先供应商。
-
选择Cortex –M0
能耗最低的最小ARM处理器,在不到 12 K 门的面积内能耗仅有 85 µW/MHz(0.085 毫瓦),同时保留与功能丰富的 Cortex-M3 处理器的工具和二进制向上兼容性。
M0指令只有 56 个,这样便可以快速掌握整个 Cortex-M0 指令集(如果需要);M0优化的连接性,设计为支持低能耗连接,如 Bluetooth Low Energy (BLE)、IEEE 802.15 和 Z-wave。 -
选择Cortex-M3
在 90nmG基础上为12.5DMIPS/mW。将集成的睡眠模式与可选的状态保留功能相结合,全功能性让M3处理器执行Thumb®-2 指令集以获得最佳性能和代码大小,包括硬件除法、单周期乘法和位字段操作。Cortex-M3 NVIC 在设计时是高度可配置的,最多可提供240 个具有单独优先级、动态重设优先级功能和集成系统时钟的系统中断。 -
选择Cortex-M4
在M3的基础上强化了运算能力,新加了浮点、DSP、并行计算等,用以满足需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。满足面向电动机控制、汽车、电源管理、嵌入式音频和工业自动化市场的新兴类别的灵活解决方案。
主流的Cortex-M3与Cortex-M4差异
- 架构
- 性能
以上是M4与M3的性能对比,官方提供的测试数据如图。
对于图表,Y轴代表执行给出的计算用的相对的周期数。 因此,循环数越小,性能越好。以Cortex-M3作为参考,Cortex-M4的性能计算,性能比大概为其周期计数的倒数。举例说明,PID功能,Cortex-M4的周期数是与Cortex-M3的约0.7倍,因此相对性能是1/0.7,即1.4倍。
Cortex-M4体系结构
- Cortex-M4架构
ARM Cortex采用的是哈佛架构,为系统提供了三套总线。
- ICode总线
- DCode总线
- System总线
(1) Cortex-M4的工作状态
-
ARM指令集
-
Thumb指令集
(2) Cortex-M4工作模式
- Thread Mode:线程模式即正常模式
- Hander Mode:处理模式即异常(中断)模式
- Cortex-M4寄存器
寄存器:在cpu内部暂存数据内容的,但是所有的指令的运算数,最终需要放到寄存器中才能运算。
寄存器分为:通用寄存器和专用寄存器:
- 通用寄存器: R0~R7 thumb-2所有的指令都可以访问它,R8 ~ R12 只有少量的thumb指令可以访问,thumb - 2都可以访问它。
- 专用寄存器 :R13、R14、R15、xPSR
R13(SP):Stack Pointer 堆栈指针,保存堆栈的栈顶地址的一个寄存器
R14(LR):Linked Register 链接寄存器。在执行指令的过程的时候,需要保存该指令的下一条指令的地址(返回地址)
R15(PC):Program Counter 程序计数器。PC保存的是下一条指令的地址
xPSR:Program Status Register 程序状态寄存器。保存程序运行过程中的一些状态标记,这些要保存的状态分为:
应用状态寄存器:APSR N Z C V Q
中断状态寄存器:IPSR Interrupt
执行状态寄存器:EPSR Excute
2.STM32
ST,就是一间公司,意法半导体。 M,微电子/微控制器 32,单片机是32位
产品系列
为智能驾驶和物联网提供半导体解决方案
今天,意法半导体的产品无处不在,致力于与客户共同努力实现智能驾驶、智能工厂、智能城市和智能家居,以及下一代移动和物联网产品。
智能驾驶:更安全、更环保、联网能力更强
据业内估计,当今80%的汽车工业创新应用都是由电子技术直接或间接实现的,这意味整车半导体占比在逐年稳定增长。通过整合多项技术,意法半导体的智能驾驶产品和解决方案让汽车变得更安全、更环保、联网能力更强。
从视觉、雷达、影像、传感器、GNSS卫星定位技术,到随动转向照明系统和用户显示技术,我们的先进驾驶辅助系统(ADAS)产品技术让汽车驾驶变得更安全;我们的能源管理处理器(EMU, ECU),被所有汽车子系统用作核心部件的功率管理芯片、电动汽车宽能带隙技术(SiC和GaN)、传感器等等,让汽车驾驶变得更环保;我们的车间通信和车路通信(V2X)解决方案、信息娱乐系统和车载信息服务处理器、收音机调谐器、功率放大器、传感器,让汽车联网通信能力更强。
物联网: 智能个人设备、智能家居、智能城市和智能工厂
由于物联网市场高度分散,我们的目标市场横跨整个客户群,从最大的客户,到超过十万家同样重要的中小客户,我们通过经销商网络和大众市场营销计划为客户提供服务。
意法半导体通过提供工业自动化和机器人技术,让制造业和其它工业领域提高能效、灵活性和安全性。我们称这些技术为智能工业技术,其在工业领域引发的变化经常被人称为第四次工业革命。工业智能综合应用各种产品,包括微控制器、传感器、致动器、电机控制、信号调理、工业通信解决方案、电源、保护器件、无线模块、显示器和LED控制器,使工业系统变更加智能。
ST通过其核心:能源消耗和管理系统来解决智能家居、建筑和城市的问题。这些解决方案解决了一些关键功能:智能电表内部的安全、多功能芯片,帮助消费者和公用事业公司跟踪和平衡电力、水和天然气的消耗和计费;更智能的街道照明,感知周围环境,调暗或关闭,以适应照明条件和市政需求;测量交通流量的传感器,可以在障碍物周围改变车辆和行人的路线;以及允许这些环境连接到物联网(IoT)的连接性解决方案。
我们个人日常生活受益于我们每天携带的经常使用的“智能产品”。意法半导体是一家全球领先的半导体厂商,拥有下一代消费设备所需的全部关键技术:低功耗和超低功耗微控制器、安全解决方案、传感器和制动器、连通性、调节和保护、电机控制、功率和电源管理。
意法半导体用一系列可兼容性的开发生态环境,使开发原型便捷而实惠,包括硬件和软件开发工具,评估组件和为垂直应用和云兼容性配备的带有预嵌入软件的模块,并有ST伙伴计划提供机会去扩展可信的设计和工程公司,帮助客户加快产品上市时间。意法半导体通过提供能源管理的核心技术产品,满足高速发展的智能家居和智能城市系统的市场需求。从双片智能表计解决方案,到智能水平更高的路灯系统,意法半导体解决方案瞄准智能城市的关键功能。智能表计帮助消费者和公用事业记录水电燃气的使用情况和费用;智能路灯可以监测环境,根据环境光线条件和市政需求开关灯或调节亮度,监测交通流量,提供潜在拥堵路况信息。
3.STM32应用领域
工业与控制、低功耗领域
可穿戴设备:智能手环、智能手表
智能家居:智能指纹锁、智能灯泡、智能电饭锅…
玩具:四轴飞行器、二轴平行车…
三、如何学习
1.开发硬件,M4的开发板
2.熟悉阅读原理图。
3.熟悉开发工具Keil 5
4.熟悉库函数,使用标准库函数,当做就是一个Linux系统编程。
- ST公司有三种库版本:标准库、HAL库、LL库
-
标准库:成熟稳定的版本,现在很多企业一直沿用该版本。
-
HAL库:尽可能屏蔽硬件底层,目标实现跨平台,可以通过界面来进行编程,但产生效率不高,可阅读性较弱。
https://www.cnblogs.com/Cmoadne/p/6709473.html
https://bbs.21ic.com/icview-1722022-1-1.html?ordertype=1&_dsign=33bcaf16
- LL库:更加接近底层的库,常结合HAL库一起使用,弥补HAL库性能不足。
阅读函数的描述、参数传递、返回值。
推荐一个帮助文档,提高编程人员开发效率,就等同于Linux man命令。
该文档有各种硬件的使用库函数的例程,详细如下:
#注意
外面企业开发不一定全使用STM32的芯片,例如GD32、海思、飞思卡尔、恩智浦(NXP)、Amtel、德州仪器(TI)、台湾新唐公司的。
(二)关于内部硬件的控制,按照以下步骤进行库函数的使用
- 打开硬件电源时钟
- 配置硬件
- 使能硬件工作
(三)使用C语言编程,标准C
四、产品案例分析
1.智能手环
2.智能指纹锁
https://item.mi.com/product/10025.html?cfrom=search&selected=1192400006&pClass=c
3.四轴飞行器
https://detail.tmall.com/item.htm?spm=a230r.1.14.1.1bbc66e76IbD8Y&id=592317986510&ns=1&abbucket=19
目前无人机图传主流的技术
OFDM技术
在技术上,目前无人机上使用最广的传输技术是为OFDM,是多载波调制的一种,该技术更适合于高速数据的传输,OFDM有很多优势,比如:在窄带带宽下也能够发出大量的数据、能够对抗频率选择性衰落或窄带干扰等等。但是,OFDM也有缺点:(1)载波频率偏移;(2)对相位噪声和载波频偏十分敏感;(3)峰均比比较高。所以把这三个缺陷瓶颈解决掉才是完美的技术。
WIFI技术
WiFi传输是具有高性价比的无人机图传使用最广泛的技术,但是因为WiFi在技术上有很多限定,且不可修改的,并且很多厂家都是拿来方案直接搭建,所以其缺点也十分突出:比如芯片设计成什么格式就是什么格式的,无法修改,技术比较固化;干扰管理策略实时性不强;信道利用率比较低等等。
COFDM技术
COFDM即编码的OFDM,在进行OFDM调制之前增加一些信道编码(主要是增加纠错和交织),来提高系统的可靠性。COFDM与OFDM的区别就是:在做正交调制前增加纠错编码和保护间隔,使信号更有效的传输。OFDM主要应用在LTE(4G)、WIFI等应用系统上。
Lightbridge高清远距离数字图传技术
Lightbridge技术使用单向图像数据传输,类似位于高处的电视广播塔的数据传输形式。而 Wi-Fi图传的数据传输需要发送端与接收端首先建立起通讯握手机制,再传输每个大小为512字节的数据包。确认完整接收一个数据包之后,才开始传输下一个数据包,而这正是导致图传延时的根本原因。
模拟图传技术
一些不带云台相机的无人机,速度可高达80公里/小时以上,使用模拟信号传输技术。模拟图传几乎没有延时,而且模拟图传的另外一个特点是,当达到极限距离时,不会突然出现卡屏或者完全丢失整个画面的情况。模拟图传也是单向信号传播技术,有点类似于在数字电视信号还没出现前的模拟电视广播信号的传输,当信号变弱时,会出现雪花屏,警示飞手应该调整飞行方向或者往回飞,离返航点近一些。
可以说,OFDM技术和WIFI技术这两种图传方式,是目前无人机图传的主流,更高级的是COFDM技术。其实总体来说,无人机远距离传输其实就是距离和功耗之间的平衡,其中还涉及了很多调制技术,如用扩频来提高抗干扰能力、信道信源技术的优化等等。
4.智能水杯、防丢器…
五、创新
别人吐槽的地方就是你创新的地方,解决痛点!
每个大小为512字节的数据包。确认完整接收一个数据包之后,才开始传输下一个数据包,而这正是导致图传延时的根本原因。
模拟图传技术
一些不带云台相机的无人机,速度可高达80公里/小时以上,使用模拟信号传输技术。模拟图传几乎没有延时,而且模拟图传的另外一个特点是,当达到极限距离时,不会突然出现卡屏或者完全丢失整个画面的情况。模拟图传也是单向信号传播技术,有点类似于在数字电视信号还没出现前的模拟电视广播信号的传输,当信号变弱时,会出现雪花屏,警示飞手应该调整飞行方向或者往回飞,离返航点近一些。
可以说,OFDM技术和WIFI技术这两种图传方式,是目前无人机图传的主流,更高级的是COFDM技术。其实总体来说,无人机远距离传输其实就是距离和功耗之间的平衡,其中还涉及了很多调制技术,如用扩频来提高抗干扰能力、信道信源技术的优化等等。
4.智能水杯、防丢器…
五、创新
别人吐槽的地方就是你创新的地方,解决痛点!
淘宝众筹:https://izhongchou.taobao.com/index.htm