想要搭建一套嵌入式系统,首先得确认想要采用的指令集架构(Instruction Set Architectures, ISA),各家的指令集架构各有其优缺点与拥护者,本文将为您大致介绍嵌入式系统的概念与范围,以及指令集架构选择时需要考虑的方面。
为了满足客户在应用上的不同需求,DigiKey的应用与技术网页提供了各式各样的应用相关资源,以便协助工程师更快的进行设计。从应用面来看,DigiKey针对汽车、自动化与控制、物联网解决方案、能量收集等场景提供了多种不同的解决支持方案。
更进一步,该网页还列出了不同嵌入式系统与微控制器技术涵盖的各种指令集架构、评估板、开发板、模块上系统、扩充板、实时操作系统、嵌入外设组件、微处理器、数字信号处理器、单板机、微控制器、现场可编程门阵列等细分模块,以供研发人员和电子爱好者根据自己需要进行进一步查阅。
以下我们将陆续为您介绍嵌入式系统网页内相关的各种应用与技术,如评估板与实时操作系统(RTOS)、微处理器(MPU)与各种控制器(DSP、SBC、MCU、FPGA),以及各类外设(内存、时钟、通信、I/O、电源)等。让我们先来看看嵌入式系统与微控制器的相关技术与应用。
嵌入式系统和指令集架构的选择
嵌入式系统(Embedded System)是一种特定用途的计算机系统,通常被嵌入到其他设备或系统中,以执行特定的任务或功能。这些系统通常是专为为特定应用或产品而设计的,并且由相对较小、专门的硬件和软件所组成。想要搭建一套嵌入式系统,首先得确认想要采用的指令集架构(Instruction Set Architectures, ISA),各家的指令集架构都各有其优缺点与拥护者,下面将为您大致介绍嵌入式系统的概念与范围以及指令集架构选择时需要考虑的方面。
嵌入式系统应用领域相当广泛
嵌入式系统的应用领域相当广泛,通常被设计用来执行各种特定的功能或任务,从日常生活中的家电产品到汽车电子系统、医疗设备、工业自动化等各个领域都有存在,它们在提高产品智能化、效能和功能性方面发挥了关键作用。此外,许多嵌入式系统需要对命令进行实时处理和响应,这意味着它们必须在特定的时间限制内完成任务,这在需要实时控制和反馈的应用中尤其重要。 另一方面,由于嵌入式系统通常配置在资源有限的设计中,因此它们的硬件资源(如处理器、内存)和功率都有相应的限制。
因此,软件必须被精心设计以充分匹配这些有限资源,加上嵌入式系统的硬件配置通常是固定的,并且无法或难以进行硬件升级,这使得软件的效能优化至关重要。 当前多数嵌入式系统都需要与其他设备或系统进行通信,以执行协同任务或传送数据,这使其必须支持多种通信协议,可能包括有线或无线通信,例如蓝牙、Wi-Fi、CAN(Controller Area Network)等。 嵌入式系统也必须搭配嵌入式软件,才能执行其特定功能,嵌入式系统的软件通常是专门为其硬件平台设计的,这可能包括实时操作系统(RTOS)或特定应用的软件栈。
选择指令集架构是开发嵌入式系统的第一步
嵌入式系统通常是接收、解释和发送信号的电子系统的协调部分,其功能来自于硬件和软件的结合,对于刚接触嵌入式系统的人来说,C语言编程可以作为软件开发的理想起点。想要进行软件开发,就必须从选择整体结构(如指令集架构)开始,到一些较大的主控类别(如微控制器)结束。
指令集架构(ISA)也称指令集或者指令集体系,是计算机体系结构中与程序设计有关的部分,包含基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部IO。通常ISA不会交叉兼容,因此为一种ISA设计的系统一般无法在另一种ISA上运行。例如,x86系统和软件无法在采用ARM的芯片上运行,因为两者处理程序代码指令和数据集的方式不同。
当然,市面上有几种不同的解决方法可以解决兼容性问题,包括仿真不同ISA操作条件的软件,或者将不同ISA组合到单一软件工具包中。例如ARM创建了一种名为ARM big.LITTLE的混合架构,这是一种异质多处理架构,通过将高功率和低功率处理内核组合到一个系统中,可以对高功率进程进行优先排序,并与低功率和低优先级请求分开处理,以实现更大的系统灵活性和更精确的电源管理。
指令集架构主要可以分成精简指令集(RISC)和复杂指令集(CISC)架构两种。RISC的概念可以追溯到20世纪80年代,旨在使用简单的指令集在计算过程中执行单步骤操作,主要的想法是通过减少用于加载、评估和存储数据的简单指令的数量来使硬件更简单。一般来说,可以视为每个程序代码指令只为计算机系统执行一个动作,更简单的操作可以实现更快的完成速度并降低功耗,这使得它们在便携式装置或其他以电源效率为驱动因素的应用中受到欢迎。
相较之下,CISC则允许在计算过程的每个步骤中发生多个指令和程序代码操作,通常包括加载和存储步骤的复杂指令。一般来说,CISC可以被认为是除了RISC之外的所有指令集架构,因为这个术语是为了响应采用RISC的芯片和系统的发展而开发的。虽然CISC没有官方的定义,但它们通常可以被认为具有更复杂的设计系统,因此通常需要更多的功率来运行。
RISC与CISC这两种架构其目的其实都是想要使CPU的执行速度更快:RISC是通过减少每个指令的周期,以减少每个应用程序的指令总数为代价,从而达到更快的CPU执行速度;而CISC则是通过最小化每个程序的指令数,以更复杂的硬件为代价,达到相同的目的。
选择指令集架构时,有多种因素需要考虑,这些因素通常会涉及到硬件、软件和系统集成等方面,包括应用所需的性能、功耗、成本、软件生态系统、兼容性、扩展性、安全性等。总体来说,选择指令集架构是一个复杂的决策过程,需要综合考虑多个因素,并根据具体的应用场景和需求做出适当的选择。
各种指令集架构满足不同应用需求
目前主流的指令集架构有许多种类,每种都有其各自的特点和应用领域,常见的一些主要指令集架构包括RISC-V、x86、ARM、MIPS和Power等,以下将针对最常见的RISC-V、x86和ARM进行介绍。
RISC-V
RISC-V是一种基于RISC架构的开放标准ISA,与其他芯片设计不同,RISC-V完全开源并具有开放架构,具有可扩展性和自由授权的特点,这意味着任何人、在任何地方都可以制造RISC-V芯片,且无需支付任何授权费用,这使RISC-V吸引了广泛的关注,成为了开源社群中的热门选择。然而,虽然RISC-V的内核是开源,但可能还有其他一些不被视为公共区间的附加组件和外围扩展。RISC-V在嵌入式系统、物联网设备和一些新兴市场中取得了一些成绩,并在某些特定领域中快速崛起。目前市面上已经有一些RISC-V开发板问世,包括SparkfunRED-V与Digilent RVfpga,可以大幅加快采用RISC-V指令集来开发嵌入式系统的研发进度。
Digilent的 RVfpga 开发板 更多产品型号:
114993026 | LOFIVE-R1, | 110991164 |
102110647 | 102991184 | 110991188 |
110991190 | 114992445 | 102110425 |
102991310 | 113991054 | DEV-22925 |
ESP32-C3-DEVKIT-LIPO | ||
MPFS-ICICLE-KIT-ES | MAX78002EVKIT# | |
ESP32-C3-DEVKIT-LIPO | P0082 |
x86
CISC处理器最古老的指令集架构系列之一,其中的x86处理器系列始于1970年代末,作为Intel 8位微处理器的扩展,经过不断调整和改进,成为当今最常见的计算机处理器类型之一。x86拥有丰富的指令集和通用缓存,它最初是为桌面计算机和服务器应用而设计的,x86芯片通常用于笔记本计算机、桌面计算机、服务器、工作站和超级计算机,以及部分嵌入式系统,专为最佳效能而设计。目前用于开发x86架构的开发板包括LattePandax86板与Udoox86板等。
更多产品型号:
DFR0470-ENT | DFR0419 | DFR0981 |
DFR0418 | DFR0545 | DFR0982 |
DFR0444 | DFR0543 | VL-EPM-16F |
SB02-3740-0000-C1-V | ||
SB02-4940-0000-C1-V |
ARM
ARM最初称为“Advanced RISC Machines”(高级 RISC 机器),但现在则简称为“ARM”,是由Arm LTD开发和授权的RISC处理器系列。ARM采用的是一种RISC架构,注重简洁和节能。由于ARM的功耗较低且发热量低,因此ARM芯片被广泛采用于移动设备和便携式设备、嵌入式系统和有低功耗需求的应用中,例如智能手机、平板、嵌入式系统、物联网装置,以及某些笔记本计算机和其他低功耗设备。常见的ARM开发板包括STMicroelectronicsNUCLEO与 STMicroelectronicsIOT 等。
更多产品型号:
102110420 | SC0915 | SC0195(9) |
SC0919 | DEV-16771 | DEV-16997 |
MAKER-PI-RP2040 | SC0193(9) | SC0695 |
SC0194(9) | SC0692 | SC0917 |
102010428 | EK-TM4C123GXL | NUCLEO-F103RB |
STM32F407G-DISC1 | NUCLEO-F446RE | NUCLEO-L476RG |
NUCLEO-H743ZI2 | DEV-16771 | B-U585I-IOT02A |
NUCLEO-F401RE | NUCLEO-L053R8 | DEV-20359 |
DEV-21438 | SC1146 | NUCLEO-F411RE |
STM32F429I-DISC1 | NUCLEO-F746ZG | NUCLEO-G431KB |
A000062 | ABX00012 | NUCLEO-G431RB |
102110646 | OM13058UL | NUCLEO-L152RE |
NUCLEO-F303K8 | STM32H735G-DK | NUCLEO-F303RE |
STM32F769I-DISCO | NUCLEO-L432KC | DEV-16402 |
STM32F072B-DISCO | BBB01-SC-505 | ABX00087 |
ST25R3911B-DISCO, | FRDM-KE06Z | CY8CKIT-043 |
STM32MP157F-DK2 | NUCLEO-U575ZI-Q | 102010328 |
指令集架构 | 比较/总结 |
RISC-V | 精简指令集架构,开源与开放架构,且免授权费,是最具发展潜力的指令集架构。 |
x86 | 具有悠久历史的复杂指令集架构,广泛用于个人计算机领域,是追求个人计算机兼容性的首选。 |
ARM | 广泛使用于智能手机的精简指令集架构,消耗功率低、发热量低,但需要授权费,开发成本较高。 |
RISC-V是当前最具发展潜力的指令集架构
CPU设计开发是一个漫长且成本高昂的过程,由于ARM等供应商会对使用其设计的开发者收取专利费,以支付开发成本,因此开放、免授权费的RISC-V架构成为当前最具发展潜力的指令集架构。
RISC-V与其他指令集架构(ISA)的区别在于该标准是开源的,并且免费供个人、学术和商业用途。此外,它还定义了CPU中处理最重要功能的基础内核,它本身就是可以实现简化功能的通用型计算机。这个基础内核可以通过使用延伸指令来扩充,这些延伸指令被指定为与基础内核一起工作,并且彼此之间不会发生冲突。例如,您可以实现具有64位基本整数指令集的CPU,并包含一个支持单精度浮点指令的延伸,以及另一个用于整数乘法和除法的延伸。
目前已经有一些制造商实现了RISC-V ISA,您也可以从使用此类CPU的各种开发板中进行选择。其中之一是LoFive R1,它是RISC-V生态系统简易且经济的开始,它具有您期望从开发板(如Arduino)获得的所有功能,而且价格低廉。
SparkFunRED-V则是另一款低成本入门级开发板,其外形与成熟的Arduino Uno R3相同,这使得它成为想要在现有设计中替换Arduino的最佳选择。SeeedStudio GAPUino 则是另一款与流行的ArduinoUno R3引脚完全兼容的开发板。然而,与前两个评估板相比,它的价格则不太实惠。
结语
嵌入式系统与微控制器是当前最热门的话题,选择ISA则是嵌入式系统开发的第一步,DigiKey提供了多种ISA开发板供客户选择,并提供相对应的支持,设计师也可以到应用与技术网页参考更详细的应用与技术介绍,以加快系统的开发速度,若有更多需求,也可与DigiKey联系以获得更多详细信息。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !