ARM CPU架构
内核版本
Linux-6.1.5
ARM64
boot
内核启动引导相关操作。
编译输出Image Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo Image.zst
dts
ARM64在boot阶段,上来就是设备树。已经包含主板厂商33家,令人惊讶的是intel、amd也在列,actions 、apm也是主板厂商。
allwinner amazon amlogic apple bitmain cavium freescale intel marvell microchip nvidia realtek rockchip sprd tesla toshiba
actions altera amd apm arm broadcom exynos hisilicon lg mediatek nuvoton qcom renesas socionext synaptics ti xilinx
actions
s700 s900
allwinner
sun50i系列
a64 a100 h5 h6 h616
altera
socfpga
amazon
alpine
amd
overdrive b0 b1
amlogic
meson系列
a1 axg g12 g12a g12b gx gxbb gxl gxm khadas s4 sm1
apm
merlin mustang
apple
t8103系列
j274 j293 j313 j456 j457
arm
corstone1000 foundation-v8 fvp juno rtsm vexpress
bitmain
bm1880
broadcom
bcm2711 bcm2837
cavium
thunder thunder2
crypto
aes chacha crct10dif ghash nh nhpoly1305 poly1305 sha1 sha3 sha256 sha512 sm3 sm4
加密算法种类与X86比较要少。
ARM
面上来看,AARCH32架构接入和获得授权的厂商要远多于ARRCH64,AARCH32有66个厂商。
mach-actions
mach-airoha
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91
mach-axxia
mach-bcm
mach-berlin
mach-clps711x
mach-cns3xxx
mach-davinci
mach-digicolor
mach-dove
mach-ep93xx
mach-exynos
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-hpe
mach-imx
mach-iop32x
mach-ixp4xx
mach-keystone
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-milbeaut
mach-mmp
mach-moxart
mach-mstar
mach-mv78xx0
mach-mvebu
mach-mxs
mach-nomadik
mach-npcm
mach-nspire
mach-omap1
mach-omap2
mach-orion5x
mach-oxnas
mach-pxa
mach-qcom
mach-rda
mach-realtek
mach-rockchip
mach-rpc
mach-s3c
mach-s5pv210
mach-sa1100
mach-shmobile
mach-socfpga
mach-spear
mach-sti
mach-stm32
mach-sunplus
mach-sunxi
mach-tegra
mach-uniphier
mach-ux500
mach-versatile
mach-vt8500
mach-zynq
boot
编译输出:Image zImage xipImage bootpImage uImage
bootp
系统引导。
compressed
Linux压缩内核运行自解压。
dts
是个大杂烩,所有厂商混放在一起。
crypto
aes blake2b blake2s chacha crc32 crct10dif curve25519 ghash nh nhpoly1305 poly1305 sha1 sha2 sha256 sha512
加密算法,AARCH32与AARCH64对比,AARCH64淘汰了部分算法,也引入了一些新的算法。
架构演进
ARMv1:这是最早的ARM架构版本,于1985年发布。它采用了32位指令集,设计初衷是用于低功耗嵌入式系统。
ARMv2:于1986年发布,对ARMv1进行了一些改进和扩展。
ARMv3:于1991年发布,引入了Thumb指令集,该指令集可以提供更高的代码密度,适用于内存有限的设备。
ARMv4:于1994年发布,增加了一些新指令和功能,并进一步优化了性能。
ARMv5:于1997年发布,引入了一些重要的更新,包括Jazelle技术(用于Java加速)和TrustZone安全扩展。
ARMv6:于2002年发布,重点是针对低成本、低功耗设备的优化。其中,ARMv6-M是专为嵌入式微控制器设计的版本,而ARMv6T2则引入了Thumb-2指令集。
ARMv7:于2005年发布,是一个重要的里程碑,具备了多核处理、虚拟化和大型内存等特性。其中,ARMv7-A用于应用程序处理器,ARMv7-R用于实时处理器,ARMv7-M用于微控制器。
ARMv8:于2011年发布,引入了64位指令集(AArch64),同时兼容32位指令集(AArch32)。ARMv8-A适用于应用程序处理器,ARMv8-R用于实时处理器,ARMv8-M则用于微控制器。
ARMv9:这是最新发布的ARM架构版本(截至2023年3月1日)。详细信息尚不可用。
AMBA总线
ARM AMBA(Advanced Microcontroller Bus Architecture)是一种开放的总线架构,由英国ARM公司推出,旨在为SoC(System-on-Chip)设计提供一种高效、灵活和可扩展的通信接口标准。AMBA总线架构定义了不同组件之间的连接和通信方式,包括处理器核、外设、存储器和其他硬件模块。
AMBA总线架构主要包含以下三个重要的总线协议:
1. AMBA Advanced High-performance Bus (AHB):AHB是AMBA总线架构中最常用的总线协议之一,用于连接高性能的处理器与其他系统组件,如DMA控制器、缓存等。它支持多主机和多从机的配置,并且具有高带宽、低延迟的特点。
2. AMBA Advanced Peripheral Bus (APB):APB是一种低功耗、低复杂性的总线协议,用于连接辅助外设,如GPIO(通用输入输出)、定时器等。相比于AHB,APB的传输速度较慢,适用于对实时性要求较低的外设。
3. AMBA AXI (Advanced eXtensible Interface):AXI是AMBA总线架构中引入的最新总线协议,用于连接高性能、高带宽的外设。它支持多主机和多从机的配置,具有高度可扩展性和灵活性。AXI总线协议采用了流水线架构,可以同时传输地址、数据和控制信息,以提高系统性能。
通过使用AMBA总线架构,SoC设计人员可以将不同的系统组件连接起来,实现高效的通信和协作。AMBA总线架构的灵活性和可扩展性使得它在嵌入式系统领域广泛应用,为SoC设计带来了便利和效率。
ARM CPU应用领域
ARMv6是经典ARM架构向cortex转变的过渡期,在ARMv7正式完成转变,针对嵌入式领域划分Cortex-M、Cortex-R,应用领域划分Cortex-A。
ARM处理器与架构关系
比较惹人注意的是ARMv6到ARMv7,从经典ARM系列到Cortex系列。ARMv7到ARMv8,从AARCH32(ARM32)到AARCH64(ARM64),指令集大版本迭代,断崖式,基本属于两个不同架构。
设备树
DTS DTSI DTB
关键字:dts dtsi dtb
DTS(Device Tree Source)是一种用于描述硬件设备的数据结构和源文件格式。它被广泛应用于嵌入式系统中,特别是在Linux内核中,用于描述硬件设备的配置和属性信息。
DTSI(Device Tree Source Include)是DTS源文件的包含文件,它主要用于定义通用的设备节点,可以在多个DTS文件中共享使用。通过使用DTSI文件,可以实现设备树的模块化和复用。
DTB(Device Tree Blob)是经过编译和压缩后的二进制设备树文件。在Linux启动过程中,Bootloader会加载DTB文件并将其传递给内核,以便内核能够获取硬件设备的配置信息。DTB文件包含了设备树的层次结构、设备节点的属性和寄存器信息等。
总结起来,DTS是一种源文件格式,用于描述硬件设备的配置和属性信息;DTSI是DTS源文件的包含文件,用于定义通用的设备节点;DTB是经过编译和压缩的二进制设备树文件,用于在Linux内核中传递硬件设备的配置信息。这些文件在嵌入式系统中起着关键的作用,帮助操作系统正确地识别和配置硬件设备。
应用范围
从软件上来说u-boot、linux都在支持设备树机制。主要应用在精简指令集范畴,在所有芯片架构当中,复杂指令集只在X86系列或X86体系的衍生物,IA64是X86的衍生物,其它都是精简指令集。
精简指令集
下属罗列的CPU架构总共20种,少量可能不属于精简指令集。
alpha |
arc |
arm |
arm64 |
csky |
hexagon |
loongarch |
m68k |
microblaze |
mips |
nios2 |
openrisc |
parisc |
powerpc |
riscv |
s390 |
sh |
sparc |
um |
xtensa |
复杂指令集
ia64 |
x86 |
应用架构
查看Linux内核中CPU架构对DTS的支持情况。
据统计支持DTS的CPU架构包含14个,覆盖绝大部分采用精简指令集的CPU架构:
arc |
arm |
arm64 |
xtensa |
x86 |
sh |
riscv |
powerpc |
openrisc |
nios2 |
mips |
microblaze |
loongarch |
csky |
x86架构也支持DTS,x86主要通过PCI/PCI-E控制,但特性很弱,约等于没有。
Cortex
Cortex-M3/M4
Cortex系列经典M3/M4总线架构。
Cortex-A9
Cortex-A9是ARMv7。
Cortex-A53
Cortex-A53是ARMv8。