一、CPU、MPU、MCU、SOC、SOPC、MCM的含义
在嵌入式开发中,我们经常会接触到一些专业术语,例如CPU、MCU、MPU、SOC和MCM等,这些缩写代表了不同类型的电子处理单元,它们在消费电子、计算机硬件、自动化和工业系统中扮演着重要角色。whaosoft的嵌入式合集
下面将介绍每个术语的基本含义和它们在实际使用中的区别:
1 CPU
CPU (Central Processing Unit) - 中央处理单元:由运算器、控制器和寄存器及相应的总线构成。它可以是一个独立的处理器芯片或一个内含多核处理器的大型集成电路。
众所周知的三级流水线:取址、译码、执行的对象就是CPU,CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,然后执行指令。所谓的计算机的可编程性其实就是指对CPU的编程。
2 MCU
MCU (Microcontroller Unit) - 微控制器单元: MCU是一个紧凑型处理器,随着大规模集成电路的出现及发展,把计算机的CPU、RAM、ROM、定时器和输入输出I/O引脚集成在一个芯片上。
比如51、STC、Cortex-M这些芯片,它们的内部除了CPU外还包含了RAM和ROM,可直接添加简单的器件(电阻,电容)等构成最小系统就可以运行代码了。
MCU常用于嵌入式系统,如家用电器、汽车电子设备和医疗设备中。与MPU相比,MCU更多的是自成一体的解决方案,可独立执行预定的任务。
3 MPU
MPU (Microprocessor Unit) - 微处理器单元:是一种更具体的CPU类型,微处理器通常代表功能强大的CPU(可理解为增强型的CPU),这种芯片往往是计算机和高端系统的核心CPU。
例如嵌入式开发者最熟悉的ARM的Cortex-A芯片,他们都属于MPU。
MPU主要在个人电脑、服务器和其他高性能计算设备中使用。微处理器单元的设计注重于高性能指令处理。
4 SOC/SOPC
SoC (System on Chip) - 片上系统:是一种集成电路,它将所有或大部分必要的电子电路和部件集成到单一芯片上。
包括CPU核心、内存、输入/输出控制器、外围设备和其他功能模块。SoC的设计目标是为了让它能够作为系统的主要计算引擎。
MCU只是芯片级的芯片,而SOC是系统级的芯片,它集成了MCU和MPU的优点,即拥有内置RAM和ROM的同时又像MPU那样强大,它可以存放并运行系统级别的代码,也就是说可以运行操作系统。
SoPC (System on a Programmable Chip) - 可编程片上系统:是指硬件逻辑可编程的片上系统,如FPGA(现场可编程门阵列)被用于创建系统级的设计。
与传统的SoC相比,SoPC提供了更多的灵活性,因为硬件逻辑可以在芯片制造后根据需求进行修改和配置。
举个例子说明便于理解,单片机的硬件配置是固化好了的,我们能够编程修改的是软件配置,本来是串口通信功能,通过修改代码变成AD采样功能,也就是说硬件配置是固定了的,只能通过修改软件来选择其中的一项或多项功能。
而SoPC可以修改硬件配置信息使其成为相应的芯片,可以是MCU,也可以是SOC。
5 MCM
MCM (Multi-Chip Module) - 多芯片模块:MCM是将多个独立的集成电路封装在一个单独的芯片上的技术。
与将所有功能集成到单个集成电路的SoC不同,MCM通常用于封装性能更强、功能专注的独立集成电路。它们可以提供类似系统总线的内部连接,使得性能更优于单芯片解决方案。
在嵌入式开发中,接触频率较多的一般是MCU和SOC,而现在STM32也几乎成为了MCU的代名词,SOC目前则以Cortex-A系列为主,开发难度也有所差异,对于嵌入式从业者来说,弄清楚这些专业概念是必备的。
二、常用电机控制算法汇总
最近看到一些朋友都在玩各种电机,对于电机重要的就是控制了,控制得稳、准、快是一名控制算法软件工程师的终极目标,首先可以玩一些比较成熟的控制算法来体验一下,所以这里收集这块内容分享给大家。
BLDC电机控制算法
无刷电机属于自换流型(自我方向转换),因此控制起来更加复杂。
BLDC电机控制要求了解电机进行整流转向的转子位置和机制。对于闭环速度控制,有两个附加要求,即对于转子速度/或电机电流以及PWM信号进行测量,以控制电机速度功率。
BLDC电机可以根据应用要求采用边排列或中心排列PWM信号。大多数应用仅要求速度变化操作,将采用6个独立的边排列PWM信号。这就提供了最高的分辨率。如果应用要求服务器定位、能耗制动或动力倒转,推荐使用补充的中心排列PWM信号。
为了感应转子位置,BLDC电机采用霍尔效应传感器来提供绝对定位感应。这就导致了更多线的使用和更高的成本。无传感器BLDC控制省去了对于霍尔传感器的需要,而是采用电机的反电动势(电动势)来预测转子位置。无传感器控制对于像风扇和泵这样的低成本变速应用至关重要。在采有BLDC电机时,冰箱和空调压缩机也需要无传感器控制。
空载时间的插入和补充
大多数BLDC电机不需要互补的PWM、空载时间插入或空载时间补偿。可能会要求这些特性的BLDC应用仅为高性能BLDC伺服电动机、正弦波激励式BLDC电机、无刷AC、或PC同步电机。
控制算法
许多不同的控制算法都被用以提供对于BLDC电机的控制。典型地,将功率晶体管用作线性稳压器来控制电机电压。当驱动高功率电机时,这种方法并不实用。高功率电机必须采用PWM控制,并要求一个微控制器来提供起动和控制功能。
控制算法必须提供下列三项功能:
- 用于控制电机速度的PWM电压
- 用于对电机进整流换向的机制
- 利用反电动势或霍尔传感器来预测转子位置的方法
脉冲宽度调制仅用于将可变电压应用到电机绕组。有效电压与PWM占空度成正比。当得到适当的整流换向时,BLDC的扭矩速度特性与一下直流电机相同。可以用可变电压来控制电机的速度和可变转矩。
功率晶体管的换向实现了定子中的适当绕组,可根据转子位置生成最佳的转矩。在一个BLDC电机中,MCU必须知道转子的位置并能够在恰当的时间进行整流换向。
BLDC电机的梯形整流换向
对于直流无刷电机的最简单的方法之一是采用所谓的梯形整流换向。
图1:用于BLDC电机的梯形控制器的简化框架
在这个原理图中,每一次要通过一对电机终端来控制电流,而第三个电机终端总是与电源电子性断开。
嵌入大电机中的三种霍尔器件用于提供数字信号,它们在60度的扇形区内测量转子位置,并在电机控制器上提供这些信息。由于每次两个绕组上的电流量相等,而第三个绕组上的电流为零,这种方法仅能产生具有六个方向共中之一的电流空间矢量。随着电机的转向,电机终端的电流在每转60度时,电开关一次(整流换向),因此电流空间矢量总是在90度相移的最接近30度的位置。
图2:梯形控制:驱动波形和整流处的转矩
因此每个绕组的电流波型为梯形,从零开始到正电流再到零然后再到负电流。
这就产生了电流空间矢量,当它随着转子的旋转在6个不同的方向上进行步升时,它将接近平衡旋转。
在像空调和冰霜这样的电机应用中,采用霍尔传感器并不是一个不变的选择。在非联绕组中感应的反电动势传感器可以用来取得相同的结果。
这种梯形驱动系统因其控制电路的简易性而非常普通,但是它们在整流过程中却要遭遇转矩纹波问题。
BDLC电机的正弦整流换向
梯形整流换向还不足以为提供平衡、精准的无刷直流电机控制。这主要是因为在一个三相无刷电机(带有一个正统波反电动势)中所产生的转矩由下列等式来定义:
转轴转矩= Kt [IRSin(o) + ISSin(o+120) +ITSin(o+240)] 如果相位电流是正弦的:IR = I0Sino; IS = I0Sin (+120o); IT = I0Sin (+240o) 转轴转矩= 1.5I0*Kt(一个独立于转轴角度的常数) |
正弦整流换向无刷电机控制器努力驱动三个电机绕组,其三路电流随着电机转动而平稳的进行正弦变化。选择这些电流的相关相位,这样它们将会产生平稳的转子电流空间矢量,方向是与转子正交的方向,并具有不变量。这就消除了与北形转向相关的转矩纹波和转向脉冲。
为了随着电机的旋转,生成电机电流的平稳的正弦波调制,就要求对于转子位置有一个精确有测量。霍尔器件仅提供了对于转子位置的粗略计算,还不足以达到目的要求。基于这个原因,就要求从编码器或相似器件发出角反馈。
图3:BLDC电机正弦波控制器的简化框图
由于绕组电流必须结合产生一个平稳的常量转子电流空间矢量,而且定子绕组的每个定位相距120度角,因此每个线组的电流必须是正弦的而且相移为120度。采用编码器中的位置信息来对两个正弦波进行合成,两个间的相移为120度。然后,将这些信号乘以转矩命令,因此正弦波的振幅与所需要的转矩成正比。结果,两个正弦波电流命令得到恰当的定相,从而在正交方向产生转动定子电流空间矢量。
正弦电流命令信号输出一对在两个适当的电机绕组中调制电流的P-I控制器。第三个转子绕组中的电流是受控绕组电流的负和,因此不能被分别控制。每个P-I控制器的输出被送到一个PWM调制器,然后送到输出桥和两个电机终端。应用到第三个电机终端的电压源于应用到前两个线组的信号的负数和,适当用于分别间隔120度的三个正弦电压。
结果,实际输出电流波型精确的跟踪正弦电流命令信号,所得电流空间矢量平稳转动,在量上得以稳定并以所需的方向定位。
一般通过梯形整流转向,不能达到稳定控制的正弦整流转向结果。然而,由于其在低电机速度下效率很高,在高电机速度下将会分开。这是由于速度提高,电流回流控制器必须跟踪一个增加频率的正弦信号。同时,它们必须克服随着速度提高在振幅和频率下增加的电机的反电动势。
由于P-I控制器具有有限增益和频率响应,对于电流控制回路的时间变量干扰将引起相位滞后和电机电流中的增益误差,速度越高,误差越大。这将干扰电流空间矢量相对于转子的方向,从而引起与正交方向产生位移。
当产生这种情况时,通过一定量的电流可以产生较小的转矩,因此需要更多的电流来保持转矩。效率降低。
随着速度的增加,这种降低将会延续。在某种程度上,电流的相位位移超过90度。当产生这种情况时,转矩减至为零。通过正弦的结合,上面这点的速度导致了负转矩,因此也就无法实现。
AC电机算法
标量控制
标量控制(或V/Hz控制)是一个控制指令电机速度的简单方法
指令电机的稳态模型主要用于获得技术,因此瞬态性能是不可能实现的。系统不具有电流回路。为了控制电机,三相电源只有在振幅和频率上变化。
矢量控制或磁场定向控制
在电动机中的转矩随着定子和转子磁场的功能而变化,并且当两个磁场互相正交时达到峰值。在基于标量的控制中,两个磁场间的角度显著变化。
矢量控制设法在AC电机中再次创造正交关系。为了控制转矩,各自从产生磁通量中生成电流,以实现DC机器的响应性。
一个AC指令电机的矢量控制与一个单独的励磁DC电机控制相似。在一个DC电机中,由励磁电流IF所产生的磁场能量Φ F与由电枢电流IA所产生的电枢磁通ΦA正交。这些磁场都经过去耦并且相互间很稳定。因此,当电枢电流受控以控制转矩时,磁场能量仍保持不受影响,并实现了更快的瞬态响应。
三相AC电机的磁场定向控制(FOC)包括模仿DC电机的操作。所有受控变量都通过数学变换,被转换到DC而非AC。其目标的独立的控制转矩和磁通。
磁场定向控制(FOC)有两种方法:
直接FOC: 转子磁场的方向(Rotor flux angle) 是通过磁通观测器直接计算得到的
间接FOC: 转子磁场的方向(Rotor flux angle) 是通过对转子速度和滑差(slip)的估算或测量而间接获得的。
矢量控制要求了解转子磁通的位置,并可以运用终端电流和电压(采用AC感应电机的动态模型)的知识,通过高级算法来计算。然而从实现的角度看,对于计算资源的需求是至关重要的。
可以采用不同的方式来实现矢量控制算法。前馈技术、模型估算和自适应控制技术都可用于增强响应和稳定性。
AC电机的矢量控制:深入了解
矢量控制算法的核心是两个重要的转换: Clark转换,Park转换和它们的逆运算。采用Clark和Park转换,带来可以控制到转子区域的转子电流。这种做充许一个转子控制系统决定应供应到转子的电压,以使动态变化负载下的转矩最大化。
Clark转换:Clark数学转换将一个三相系统修改成两个坐标系统:
其中Ia和Ib正交基准面的组成部分,Io是不重要的homoplanar部分
三相转子电流与转动参考系的关系
Park转换:Park数学转换将双向静态系统转换成转动系统矢量
两相α, β帧表示通过Clarke转换进行计算,然后输入到矢量转动模块,它在这里转动角θ,以符合附着于转子能量的d, q帧。根据上述公式,实现了角度θ的转换。
AC电机的磁场定向矢量控制的基本结构
Clarke变换采用三相电流IA, IB 以及 IC,来计算两相正交定子轴的电流Isd和 Isq。这两个在固定座标定子相中的电流被变换成Isd 和Isq,成为Park变换d, q中的元素。其通过电机通量模型来计算的电流Isd, Isq 以及瞬时流量角θ被用来计算交流感应电机的电动扭矩。
矢量控制交流电机的基本原理
这些导出值与参考值相互比较,并由PI控制器更新。
基于矢量的电机控制的一个固有优势是,可以采用同一原理,选择适合的数学模型去分别控制各种类型的AC, PM-AC 或者 BLDC电机。
BLDC电机的矢量控制
BLDC电机是磁场定向矢量控制的主要选择。采用了FOC的无刷电机可以获得更高的效率,最高效率可以达到95%,并且对电机在高速时也十分有效率。
步进电机控制算法
如下是步进电机控制示意图:
步进电机控制通常采用双向驱动电流,其电机步进由按顺序切换绕组来实现。通常这种步进电机有3个驱动顺序:
1、单相全步进驱动:
在这种模式中,其绕组按如下顺序加电,AB/CD/BA/DC (BA表示绕组AB的加电是反方向进行的)。这一顺序被称为单相全步进模式,或者波驱动模式。在任何一个时间,只有一相加电。
2、双相全步进驱动:
在这种模式中,双相一起加电,因此,转子总是在两个极之间。此模式被称为双相全步进,这一模式是两极电机的常态驱动顺序,可输出的扭矩最大。
3、半步进模式:
这种模式将单相步进和双相步进结合在一起加电:单相加电,然后双相加电,然后单相加电…,因此,电机以半步进增量运转。这一模式被称为半步进模式,其电机每个励磁的有效步距角减少了一半,其输出的扭矩也较低。
以上3种模式均可用于反方向转动(逆时针方向),如果顺序相反则不行。
通常,步进电机具有多极,以便减小步距角,但是,绕组的数量和驱动顺序是不变的。
通用DC控制算法
通用电机的速度控制,特别是采用2种电路的电机:
1、相角控制
2、PWM斩波控制
相角控制
相角控制是通用电机速度控制的最简单的方法。通过TRIAC的点弧角的变动来控制速度。相角控制是非常经济的解决方案,但是,效率不太高,易于电磁干扰(EMI)。
通用电机的相角控制
以上示图表明了相角控制的机理,是TRIAC速度控制的典型应用。TRIAC门脉冲的周相移动产生了有效率的电压,从而产生了不同的电机速度,并且采用了过零交叉检测电路,建立了时序参考,以延迟门脉冲。
PWM斩波控制
PWM控制是通用电机速度控制的,更先进的解决方案。在这一解决方案中,功率MOFSET,或者IGBT接通高频整流AC线电压,进而为电机产生随时间变化的电压。
通用电机的PWM斩波控制
其开关频率范围一般为10-20 KHz,以消除噪声。这一通用电机的控制方法可以获得更佳的电流控制和更佳的EMI性能,因此,效率更高。
三、MCU都有什么高级用法?
最近在知乎上,有这样一个问题非常火——“MCU都有什么高级用法?”
都说MCU本身不算什么高级东西,在MCU开发过程中,需要按照一定的标准化来执行,比如对变量,函数的定义,要确定他的生命周期,调用范围,访问条件等;常用的通信协议读写的协议往往应该抽象化,规定固定的输入输出,方便产品移植。
但实际上,很多时候,针对同一个需求其实有多种实现方案,但总有一个最优解。所以在这个过程中,总会有一些“脑洞大开”的操作,为人提供很多思路,今天就举几个例子给大家作为参考。
那些很惊艳的用法
当需要通过串口接收一串不定长数据时,可以使用串口空闲中断;这样就可以避免每接收到一个字符就需要进入中断进行处理,可以减少程序进入中断次数从而提高效率。
当需要测量一个波形的频率时,很多人会选择外部中断,其实通过定时器的外部时钟输入计数波形边沿,然后定时读取计数指计算频率的方式可以大大减少中断触发频率,提高程序执行效率。
在处理复杂的多任务场景时,可以利用实时操作系统(RTOS)来管理任务调度,提高系统的响应性和资源利用率。
对于需要低功耗运行的场景,可以采用动态电压频率调整(DVFS)技术,根据系统负载实时调整 MCU 的工作电压和频率,以降低功耗。
在进行数据存储时,采用闪存的磨损均衡算法,延长闪存的使用寿命。
利用硬件加密模块(如 AES 加密引擎)来保障数据的安全性和保密性,而不是通过软件实现加密,提高加密效率和安全性。
对于传感器数据的处理,采用数字滤波算法(如卡尔曼滤波),提高数据的准确性和稳定性。
当需要与多个设备进行通信时,采用总线仲裁机制和优先级设置,确保通信的高效和稳定。
在进行电源管理时,通过监测电源电压和电流,实现智能的电源管理策略,例如在低电量时进入低功耗模式。
对于实时性要求极高的控制任务,采用硬件直接触发中断,而不是通过软件轮询,减少响应延迟。
在单片机上跑的任何非线性系统的动态控制,都是高级用法。
用单片机去实现某种特殊的运动控制,赚很多钱,就是高级用法。
GPIO模拟一切
名为ShiinaKaze的网友,就非常“勇”,做了一个很折磨的事。
他用STM32F1利用GPIO模拟摄像头接口驱动OV2640摄像头模块。他表示,这是一个很折磨人的过程,我最多优化到了 1.5 FPSQ,所以选型一定要选好,不要折磨自己。设备采用STM32F103C8T6,OV2640,实现效果如下:
OV2640实际时序图:
这个项目难点在于:1.SCCB 模拟:SCCB 是12C-bus 的改版,主要是 OV2640 模块没有上拉电阻,无法进行通信,花了好长时间才发现这个问题;2.并行接口的模拟:如果使用 IO 模拟的话,只能达到1FPS,但是使用了 Timer 和 DMA,就可以达到 1.5~2 FPS。
关于 image sensor 的数据接收和处理的问题背景:现有 ov2640 image sensor,接口为 DCMI(并行接口)问题:现有 STM32H7 想获取 OV2640 的 mjpeg 流数据,并通过传输数据到 PC 软件1.采用 USART 还是 USB?2.接收数据选择哪种中断,Line interrupt 还是 Frame interrupt ?3.DCMI 通过 DMA 将数据转到 RAM 中的 Buffer,那么 Buffer 该如何设计,是设置一块大的连续 buffer?还是需要做一个 ring buffer,避免数据覆盖和数据顺乱?4.触发中断后,是否关闭 DCMI 和 DMA ?
嵌入式软件架构挺重要的,特别是大型项目。这是 STM32 的软件架构,不知道各位还有没有其他架构。
有网友吐槽,你要是在学校,我敬你是条汉子,你要是在工作岗位上干这鸟事,那你们的架构也太坏了。而他也表示——“我错了,再也不模拟了。”
关于MCU不一样的观点
虽然如此,很多人还是认为,MCU不高级,使用单片机也不高级。高级的内容都是可以发论文的,使用单片机发不了论文。但使用单片机解决指定的任务,这很高级。
尤其是上面所说的一些例子,确实是MCU外设的一些高端玩法。只不过,这些机制可能只是一种标准用法。名为lion187的网友就表示,毕竟许多硬件机制有实际需求后才添加进来的,比如接收不定长数据,最初没有超时中断的情况下只能软件实现,极大的浪费了CPU的效率,所以才设计了超时中断来减少软件工作量,进而形成了一种标准使用方法。
当然,这也是芯片设计和制造工艺的提升带来的红利,早期芯片设计和工艺无法满足复杂外设电路时,谁也不敢会去想用硬件来实现这么复杂的功能,任何产品的开发,都离不开具体业务需求,MCU也不例外,对产品来说,MCU外设的驱动只是完成开发的基本要素,更多的工作是围绕着业务逻辑展开的应用程序的开发。这时候数据结构与算法,各种控制算法和数值计算方法,设计模式,软件工程和设计理念成了高级的东西。
比如说,Linux 内核中的各驱动子系统的设计,设备对象和驱动对象这些沿用了 C++ 面向对象编程的思路,其实也可以沿用到 MCU的开发中,将设备与驱动分离,就可以使用同一套驱动算法来实现同类设备的不同驱动方法,比如:同一个 UART 驱动可以根据配置的不同来驱动 UARTO,也可以驱动 UART1,而且波特率也可以不同(只要为 UART 类创建不同的实例对象就可以了,用 C 语言就行),这就是 C++ 中方法与属性分离带来的好处。
同样在业务应用部分,单件模式、工厂模式等设计模式,状态机模型的使用也会给开发带来很多便利,使系统结构清晰,有效减少Bug数量,且易于维护和扩展。
当然,也有人认为,论高级还得是FPGA。就比如AMD(赛灵思)的ZYNQ,当你需要通过串口接收一串不定长数据时,可以直接用Programmable Logic部分写一个专用的,最终结果放到DRAM里,发个信号通知ARM处理器来读就好了;当你需要测量一个波形的频率时,可以直接用Programmable Logic部分写一个专用的,实时不间断测量。这就很高级。
所以,对此你有什么看法,你有什么很“高级”的用法想要分享?
四、氮化镓在高压应用中提供强大的解决方案
在电子工程领域,向更高工作电压发展的趋势是由各种应用中对提高效率和功率密度的需求所推动的。氮化镓(GaN)技术正作为一种强大的解决方案来满足这些需求。
在工业环境中,内部电压轨也在向上发展。这些更高的电压对于在电机驱动、压缩机和大型HVAC系统等应用中提供更高功率至关重要。
新兴经济体的消费者和工业部门快速增长,面临电网不稳定的挑战。电压波动和线路膨胀(经常由于老化基础设施而加剧)对电子系统构成了重大威胁。
硅器件在高压环境中的挑战
所有功率器件都有定义的操作限制。例如,725 V的硅MOSFET通常可以安全工作到650 V,并降额到725 V。长期暴露在高于725 V的电压下会导致雪崩击穿,导致局部加热和潜在的结构损坏。电压尖峰(如闪电袭击或电源接线错误)和电网不稳定导致的线路膨胀可以将这些器件推向极限,导致灾难性故障。
能量损失 – 氮化镓 vs. 硅
R = 导通损耗 - RDS(ON)C = 开关损耗 - COSS
PowiGaN技术在高压应用中的优势
相比之下,PowiGaN器件不表现出硅器件固有的雪崩击穿机制。它们的内部级联结构和高击穿电压(通常是额定电压的两倍以上)使它们能够承受高电压尖峰和长期的线路膨胀。这些器件在电压尖峰期间会暂时增加电阻,稍微降低效率,但能迅速恢复而不会对性能产生明显影响。即使在多个尖峰事件或长期膨胀下,PowiGaN器件仍能保持安全有效的操作而不会退化。
PowiGaN在未来高压应用中的作用
Power Integrations最近推出的1250 V PowiGaN器件标志着一个重要的进步。该器件允许1000 V的操作峰值并具有显著的降额,提供了对电网不稳定和电力干扰的强大保护。这些器件现在正在进入传统上由碳化硅(SiC)器件主导的领域,扩大了它们的应用范围。
总之,在当前市场中,PowiGaN技术在面对电网不稳定时具有显著优势。它确保在不断扩大的消费市场中提供高质量、可靠的产品。此外,PowiGaN的强大级联结构和更高电压应用的潜力使其成为未来电力电子领域的关键参与者。
五、CPU架构之争:X86、ARM、RISC-V谁将成为市场主流?
中央处理单元(CPU)的核心组件包括算术逻辑单元(ALU)、控制单元(CU)和寄存器。ALU 负责执行所有算术和逻辑运算;CU 管理和协调 CPU 内部以及外部的指令和数据流;而寄存器则提供一个快速存取的位置,用于暂时存储计算和指令执行过程中的数据,从而实现高效的数据处理速度。
CPU 架构涵盖了 CPU 的设计和功能结构,它涉及内部组件的配置、数据处理方法、支持的指令集,以及如何执行这些指令。架构的设计直接关系到 CPU 的性能指标、能源效率和系统兼容性。架构的选择对于实现特定的计算目标、成本效益和软件生态系统支持至关重要。随着技术的发展和计算需求的多样化,CPU 架构持续演进以适应市场的变化和需求。
复杂与精简,谁才是最佳选择?
从 CPU 发明至今,有非常多种架构,从我们熟悉的 X86、ARM,到不太熟悉的 MIPS、IA64,它们之间的差距都非常大。但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的 “复杂指令集” 与 “精简指令集” 系统,也就是经常看到的 “CISC” 与 “RISC”。
精简指令集计算(RISC)和复杂指令集计算(CISC)是两种主要的中央处理单元(CPU)架构理念。RISC 架构强调使用一组更小、更简单的指令来实现硬件的简化和提高指令的执行速度。这种方法通常能够提升性能并降低功耗,使其成为移动设备和嵌入式系统的理想选择。RISC 的主要特点 包括快速的指令执行、简化的硬件设计以及高能效比。ARM 架构是最著名的 RISC 架构之一。
相对于 RISC,CISC 架构着重于通过一套较为复杂的指令集直接支持高级计算操作,从而减少高级语言(包括 C 和 C++)与机器语言之间的转换需求。这一策略旨在简化软件和编译器的开发过程,尽管这可能会导致更复杂的硬件设计和较高的功耗。CISC 的特色在于其功能强大的指令集和编写程序上的便捷性,但这同时伴随着硬件的复杂性及增加的能耗。而 CISC 的典型代表是 X86 架构的处理器。
三大 CPU 架构的对比
X86 是 PC 市场的霸主,也是 CPU 架构的元老
X86 架构最初由多个制造商生产,但随着 “Wintel”(Windows 和 Intel 的结合)的崛起,市场逐渐被英特尔主导,仅剩下 AMD 和威盛等少数制造商。其以复杂指令集计算(CISC)著称,正如上一段所提及的 CISC 的优缺点分析,特色在于简化工程师的开发过程,且其指令集的功能较强大,在单核心性能方面往往优于 ARM 处理器,但会导致更复杂的硬件设计和较高的功耗。目前主要在桌面型和服务器市场表现突出,被广泛应用于台式电脑、笔记本电脑、服务器以及高性能计算机中。
由于 X86 会先用解码器将复杂指令变成类似于 RISC 的指令,再给核心执行,其仍存在整体执行工作效率较差、处理资料速度较慢的缺点。然而英特尔在 2023 年推出的精进版的纯 64 位 X86 架构,也就是 X86s,废除昔日 16 位和 32 位模式,从一开机初始化就进入 “纯 64 位模式”,不再从 16 位或 32 位切换至 64 位,并且对于执行现有的 32 位应用程序会以 64 位下的兼容模式去执行,因此在效率上已有所改进。
ARM 在移动设备上具有卓越的优势,并将进攻 PC 市场
ARM 架构由 ARM Holdings设计并授权给其他公司生产,苹果、高通、联发科等公司都设计了基于 ARM 架构的手机芯片,展现了 ARM 架构在省电和低功耗方面的优势。由于 ARM 架构属于精简指令集计算(RISC)系统,最大特点是高能效比和低功耗,这使得它非常适合于电池供电的移动设备,如手机和平板电脑。
与 CISC 架构如 X86 相比,ARM 的 RISC 架构由于不需要复杂的芯片设计,可以在相同条件下提供更快的执行速度,大约是 CISC 的 2 到 4 倍。此外,RISC 架构使得芯片可以更小、功耗更低、成本更低,同时提高效能。这一特点在当前进入先进制程的半导体产业中尤为重要,使 ARM 架构成为开发新一代 PC 处理器的有力候选。
开源架构 RISC-V 提供了定制指令的扩充空间,且获取成本较低
与前面两者不同,RISC-V 架构是由加州大学伯克利分校的研究人员发起,基于精简指令集计算(RISC)理念,同时突出了其开源、模块化和高度可扩展的特点。这种架构允许设计者根据特定应用的需求添加自定义指令,从而进行优化,并提供了与 ARM 架构相似的高能效比和低功耗特性。RISC-V 的指令集设计更为精简,这不仅降低了硬件的面积和功耗,而且提高了运算速度和效率。其一致的指令格式简化了电路设计,减少了数据处理时间,并提升了运算能力。
RISC-V 的开源性质使其在从微控制器到高性能计算等广泛领域得到应用,包括嵌入式系统、物联网(IoT)装置、汽车电子、服务器和专用加速器等。作为一个开源指令集,RISC-V 易于获取资源,不受特定公司知识产权的限制,因此降低了成本。它的弹性显著高于 X86 和 ARM 架构,因为它提供了定制指令的扩充空间,使得根据不同需求的特定设计成为可能,而这一点在 X86 和 ARM 处理器中较难实现。
受益于人工智能发展与手机市场复苏,ARM 架构渗透率有望进一步提升
ARM 公司整体营收可以划分为两个区块,分别是权利金(License)和版税(Royalty)。前者为客户在设计初期向 ARM 缴纳的 IP 架构使用费,一般授权约 3 年,占 2024 财年第三季度总体营收的 43%;后者则为客户产品正式销售后的分润费用,从 License 合约开始到贡献 Royalty 约需 4 年,占 2024 财年第三季度总体营收的 57%。相较于 License,Royalty 持续时间较长,也因此被视为 ARM 长期营收的主要推动因素。
License 的成长动能主要来自 ATA(ARM Total Access,全部 IP 订阅用户)、AFA(ARM Flexible Access,初期架构授权用户)客户的持续增长。2024 财年第三季度 ATA 客户增加 5 家至 27 家,AFA 客户则增加 6 家至 218 家,可见需求仍十分强劲。而版税(Royalty)营收的成长主要由手机需求复苏和数据中心相关营收带动。前面提到过,ARM 的主要应用是在移动设备上,2024 财年第三季度 15% 的版税营收由 ARMv9 架构贡献,目前主要搭载于主流高阶手机及 PC 应用,v9 架构授权金较 v8 提升一倍,考虑现阶段仍处于渗透初期,未来成长动能可期。
Nvidia 和 AMD 有望采用 ARM 架构,其市场版图将进一步扩大?
据消息指出,Nvidia 有望在 2025 年推出以 ARM 架构为设计基础的 CPU 产品,以搭载执行微软 Windows 系统的 PC,背后原因是微软帮助芯片商为 Windows PC 构建 ARM 架构处理器。自从为 Mac 电脑推出采用 ARM 架构的自研芯片 M 系列以来,苹果效能显著成长,带动 PC 市场占有率在过去三年攀升,这使得除 Nvidia 以外,原采用 X86 架构的 AMD 也计划使用 ARM 技术生产 CPU。若成功开发,在 Nvidia 与 AMD 的助力下,ARM 架构在市场上的应用比例将进一步提高,尤其是在 X86 统治的 PC 领域,ARM 的市场版图有望进一步扩大。
ARM 架构强势进攻,Intel 还撑得住吗?
ARM 架构在市场上的应用逐年增多,尤其近年在 AI PC 的强势推动下,开始进攻 PC 领域的版图,侵占 X86 赖以生存的传统领域,这会使得 X86 架构在市场上的地位逐渐流失,最后淡出吗?CMoney 研究团队认为,ARM 架构要危害到 X86 架构的市场地位,仍有很长一段路要走,其原因有二:第一,更改架构须解决兼容问题。X86 架构在 PC 市场已称霸多年,因此对于设计者而言,继续采用 X86 架构所能获得的资源也最多。若要进行更改,则设计难度将大幅提高,且因为采用非 X86 架构,设计者必须克服许多软件功能无法兼容的问题。
其二,X86 有其不易被替代的优势。低功耗本来就不是英特尔擅长的市场,且 X86 架构在电竞市场已建立稳定基础与地位,ARM 短期内恐难超越。此外,ARM 架构处理器主打简单、省电两大特色,这虽对于笔记本电脑市场是一大优势,但对于以台式电脑为主,且诉求强大图形运算功能的电竞市场来说,现阶段 X86 架构处理器仍将是主要选择。
RISC-V 架构在双雄夹击下,具备竞争力吗?
在分析 RISC-V 的竞争优势时,我们先来探讨它对比 X86 架构以及 ARM 架构的优缺点。其优点正如先前所提及的,RISC-V 因指令精简而更省电节能,而其开源的特性,也使得在科技竞争的背景下,各国开始将重心逐渐转移到诉求开源、开放的 RISC-V 架构上,因而成为 RISC-V 架构的重要市场。
然而,缺点的部分亦十分显著。由于 RISC-V 发展时间较晚,PC 跟行动装置市场基本已被其他两大架构独占,因此在软件兼容性方面较差。另外,由于运行在 CPU 的软件都是第三方用户进行开发,因此开发 CPU 软件的用户必须要与设计 CPU 硬件的用户进行合作,否则软件将无法运行在硬件上。如果有其他竞争者想切入 ARM 的市场开发自己的 CPU 指令集,竞争者必须先说服 CPU 用户学习使用 ARM 架构以外的进行软件的开发,也因此其一直难以扩大市场。
尽管 RISC-V 架构目前在市场上的应用仍不足以构成强大生态系,但在 AI 推动下成长动能仍旧可观。
目前 RISC-V 的应用领域有别于 ARM 架构与 X86 架构,更多运用在物联网与车用产业,然在其他市场亦逐渐推出相关产品,浮现在大众视野。举例来说,高通与 Google 展开合作开发 “RISC-V Snapdragon Wear” 芯片,是有史以来第一个宣布大众市场的 RISC-V Android 芯片。此外,Meta 的 AI 推理芯片 MTIA,处理核心便是采用晶心科的 RISC-V 架构来打造,可用于提升推荐系统(如广告、贴文、影片的排序)的运行效率。而 Google 则在自有 AI 处理器 TPU 旁加装美国 RISC-V 新创 SiFive 开发的处理器,以加速机器学习的运作。然而尽管在市场上已初露锋芒,对比 X86 与 ARM 的版图,RISC-V 的应用仍未能建立强大生态系。
不过在2023 年 AI蓬勃发展的势头下,RISC-V 架构再次成为大众关注的目标。可调整性高是 RISC-V 架构成为 AI 大规模的一大原因,AI 芯片运算需要定制指令才能提高运算效率,虽然 ARM 架构有授权给 IC 设计用户使用,但是所有指令和功能基本上都已经由 ARM 定义好,对使用者来说可更改的空间很小。相比之下,IC 设计用户可以在 RISC-V 架构下,根据自身需求进行定制化设计,同时业界也有像是晶心科、SiFive 等拥有自主 RISC-V IP 的公司,可配合客户做弹性调整,使得研发 AI 芯片的企业大幅提高导入 RISC-V 架构的意愿。
根据领先的贸易分析师和业务开发公司 SHD Group 发布 2024 年 RISC-V 市场研究报告,其中提及到 2030 年 RISC-V SoC(单芯片系统)出货量预计将激增至 162 亿颗,复合年增长率(CAGR)为 44%,而收入将达到 920 亿美元,复合年增长率(CAGR)为 47%。而 RISC-V IP 收入亦有望同步增长,预计到 2030 年复合年增长率为 39%。展望 AI 处于发展初期,RISC-V 的自由度或可成为胜过另两大巨头的一大利器。
长期看好 RISC-V 架构的应用版图,而在 AI PC 之争中 ARM 恐难胜出
综观目前 CPU 架构市场局势,要说三足鼎立的局面还不至于,目前大市场仍以 X86 与 ARM 为主,然而基于 RISC-V 对一般使用者来说,可塑性更强,因此对于一些尚不成熟、正在兴起的产业来说,像是 AI PC 与车用等等,反而是更方便应用与开发的。CMoney 研究团队认为,在中国市场积极开发与 AI 的双重加持下,RISC-V 长期具备良好的成长动能,且若能够在中国建立起稳健生态系,那么其未来发展性十分可观。
而 ARM 与 X86 的边缘 AI 架构战争,则主要是聚焦在 AI PC 的议题上。手机市场近两年未有突出表现,尤其 ARM 的大客户苹果目前正面临中国市场的销售危机,也因此 ARM 积极抢占 PC 领域的策略亦是十分合理。要进入该领域就必须挑战该领域的大佬,英特尔的 X86 架构在 PC 领域仍存在先行者优势,软件兼容性仍是 ARM 在 Windows 应用上难以跨过的坎,且 AI PC 涉及更强大的芯片运算能力,ARM 架构是否能与 X86 架构的效能匹敌亦是一大难题。基于以上,CMoney 研究团队认为,ARM 要在 AI PC 领域挑战 X86 恐难占上风。
六、嵌入式开发相关
Linux平台搭建与环境熟悉
了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。
1、Linux 简介;
2、Linux 系统的主要特点;
3、Linux 的组成;
4、主要的 Linux 版本;
5、嵌入式 Linux简介与发展
虚拟机安装和LINUX系统安装
1、虚拟机安装;
2、Linux系统的安装;
3、Linux系统的常用软件的安装;
4、Linux快速入门
5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的 Shell 应用
嵌入式LINUX环境搭建
1、 建立嵌入式 Linux开发环境
2、 熟悉嵌入式开发平台
3、 嵌入式 Linux开发工具
4、 Linux下的调试技巧
5、 MAKE工程管理器
6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置
U-Boot
U-Boot:了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。
1、 Bootloader介绍
2、 u-boot工程介绍
3、 u-boot的编译使用
4、 u-boot源码分析
5、 u-boot资源分配
6、 配置编译u-boot
7、 u-boot移植过程
8、 u-boot常用命令操作
9、 添加u-boot新命令
10、设置u-boot环境变量
11、 u-boot驱动添加如网卡:DM9000
LINUX内核
LINUX内核移植:熟悉内核的原码结构和kbuild Makefile语法;掌握和内核、驱动模块编译相关的原理及方法。
1、Linux内核介绍
2、Linux内核特点
3、Linux内核源代码结构
4、Linux内核选项解析
5、Linux内核编译链接
6、内核模块编译、使用方法
LINUX根文件系统
1、busybox 包移植、编译
2、Linux跟文件系统制作过程
3、根文件系统介绍
4. nfs文件服务器系统搭建
Linux驱动开发
驱动开发是嵌入式Linux开发难度最高的内容,也是目前嵌入式行业最紧缺的人才之一。本课程介绍嵌入式Linux驱动开发相关概念及开发流程,了解驱动开发的关键技术点,重点讲解嵌入式Linux下常用接口驱动的编写方法,包括:
1、字符型LED驱动开发(GPIO口驱动)
2、按键驱动开发(中断驱动,在驱动中中断程序的编写,消息队列的应用
3、ADC驱动开发
4、网卡驱动开发
5、串口驱动开发
6、液晶屏(TFT彩屏驱动开发
7、触摸屏驱动+tslib(中间插件移植与设置),
8、USB驱动开发+USB无线网卡移植
9、IIS驱动开发+maplay移植与应用(mp3播放)+mplayer移植与应用(视频播放Mp4/广告机等播放)
10、SD驱动开发
11、RTC驱动开发
12、电源管理方法
Linux应用学习
嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。主要目标是精通嵌入式Linux下的程序设计,熟练掌握嵌入式Linux的开发环境、系统编程以及网络编程,熟悉C++、QT编程并且深刻体会整个嵌入式Linux项目开发流程,强化学员对Linux应用开发的能力。
1、Linux系统中的进程的概念,在应用程序中线程与父子进程的创建与应用
2、线程之间、进程之间的通信
3、进程间通信基本概念
4、管道(PIPE)
5、信号(SIGNAL)
6、内存映射(MAPPED MEMORY)
7、消息队列(MESSAGE QUEUE)
8、信号量(SEMAPHORE)
9、共享内存(SHARE MEMORY)@
10、tcPip协议在应用程序中的编程开发(SOCKET套接字编程开发)
10.1. ISO/OSI七层协议模型与IP网络四层模式
10.2.TCP/IP协议簇
10.3. 基于嵌入式Linux的TCP/IP网络结构
10.4. 基于嵌入式Linux的SOCKET编程
10..5.UDP与TCP的区别
10.6. UDP SERVER-CLIENT关系程
11、文件读写与存储
QT移植与开发
了解嵌入式Linux下的几种常见GUI及其特点,重点能掌握QT的有关内容,具备QT程序设计能力。了解嵌入式数据库的配置与开发。
1 、嵌入式Linux GUI介绍
2、嵌入式QT开发包移植
3、QT介绍及其信号插槽机制
4、 QT图形界面编程技术
5、QT应用程序与Linux驱动的衔接
6、 QT在实际项目中具体应用
无线通讯应用
1、无线wifi模块应用
2、3G模块应用
嵌入式系统应用程序,驱动程序调试
1、Linux基本工具调试使用。GDB,insight调试等
2、Linux应用程序的编程
3、嵌入式产品程序打包与发布
嵌入式项目综合调试,产品发布
了解真实项目的开发流程,掌握如何将所学知识应用到项目开发中。将模拟真实项目的管理过程,培养学员项目团队协同开发能力,项目文档编写能力和新知识的学习能力,为下一步就业做好知识上和心理上的充分准备。
嵌入式学习步骤
第一学习阶段:主要打好基础,学好C编程,Linux系统编程。
1、C语言编程基础
2、嵌入式开发基础:Linux概述安装,shell命令,vim编辑器,GCC,GDB,Makefile,交叉开发环境构建
3、嵌入式Linux系统编程:shell编程,文件编程,串口编程,进程编程,线程编程,网络编程
4、嵌入式项目开发:数据采集控制系统,串口服务器
第二学习阶段:掌握ARM汇编程序设计,驱动程序设计。
1、ARM体系结构:ARM体系,ARM指令,Thumb指令,汇编程序设计,逻辑程序开发
2、Linux内核移植:bootloader,内核配置,文件系统
3、驱动程序开发:驱动架构模型,字符设备驱动,块设备驱动,网络驱动
4、嵌入式项目开发:智能家居系统,视频监控系统
第三学习阶段:掌握C++面向对象程序设计,Qt编程。
1、C++语言编程基础
2、QT编程开发:QT开发基础,QT布局与控件,QT绘图,QT事件,QT网络通信,QT数据库,QT移植
3、嵌入式项目开发:车载监控管理系统,工业能源管理系统
嵌入式开发硬件知识
简单地总结一下硬件开发的基本过程:
1、明确硬件总体需求情况,如CPU处理能力、存储容量及速度、I/O端口的分配、接口要求、电平要求、特殊电路要求等等。
2、根据需求分析制定硬件总体方案,寻求关键器件及相关技术资料、技术途径和技术支持,充分考虑技术可行性、可靠性和成本控制,并对开发调试工具提出明确要求。关键器件可试着去索取样品。
3、总体方案确定后,做硬件和软件的详细设计,包括绘制硬件原理图、软件功能框图、PCB设计、同时完成开发元器件清单。
4、做好PCB板后,对原理设计中的各个功能单元进行焊接调试,必要时修改原理图并作记录。
5、软硬件系统联调。一般情况下,经过调试后原理及PCB设计上有所调整,需要二次投板。
6、可靠性测试、稳定性测试,通过验收,项目完成!
硬件工程师应具备的基本技能:
1、由需求分析至总体方案、详细设计的规划创造能力;
2、熟练运用设计工具,设计原理图、PCB板的能力;
3、熟练运用单片机、DSP、PLD、FPGA等进行软硬件开发调试的能力;
4、熟练运用仿真工具、示波器、信号发生器、逻辑分析仪等调测硬件的能力;
5、掌握常用的标准电路的设计能力,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;
6、故障定位、解决问题的能力;
7、设计文档的组织编写技能。