关于硬件的tips

查看Linux系统内核信息

Linux xiaoming-virtual-machine 4.15.0-136-generic #140~16.04.1-Ubuntu SMP Wed Feb 3 18:51:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Linux内核是4.15.9-135-generic,发行版号是Ubuntu16.04,架构是X86_54

查看系统架构 arch

x86_64

查看Linux系统版本详细信息 cat /proc/version

Linux version 4.15.0-136-generic (buildd@lcy01-amd64-014) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)) #140~16.04.1-Ubuntu SMP Wed Feb 3 18:51:03 UTC 2021

最前面的是当前系统的内核版本号2,接下来是编译者信息,编译gcc 版本的平台和系统版本,系统时间。像是交叉编译,就会采用对应的交叉工具编译器进行编译

如何确定硬件平台cpu信息(如核心数) cat /proc/cpuinfolscpu

processor	: 0
model name	: ARMv7 Processor rev 0 (v7l)
BogoMIPS	: 666.66
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

processor	: 1
model name	: ARMv7 Processor rev 0 (v7l)
BogoMIPS	: 666.66
Features	: half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x3
CPU part	: 0xc09
CPU revision	: 0

Hardware	: Xilinx Zynq Platform
Revision	: 0003
Serial		: 0000000000000000

查看arm具体型号dmesg |grep arm

查看系统的位数getconf LONG_BIT

64位cpu可能运行者32位系统。

Arm指令集

在这里插入图片描述
Arm分为三个系列Cortex-A系列,Cortex-M系列和Cortex-R.

以前用过的A8,A9之类的都属于Cortex-A系列;A是Application的缩写,表示高性能应用处理器
STM32单片机都属于Cortex-M系列。M是Micro的缩写,表示微控制器
Cortex-R系列我没用过,不知道有什么典型的CPU代表。R是RealTime的缩写,表示实时处理器。

A8/A9/A12/A15和STM32其实都是基于ARMv7架构的,只不过A8/A9/A12/A15是基于基于ARMv7-A 架构的;STM32是基于使用ARMv7-m架构的,用的cm3.

现在市面上大家的叫法很乱,容易把人叫晕菜了。所以我整理了一下常见的晕菜问题:

1.ARMv7 和ARM7是两个东西。

ARMv7是内核,现在STM32和A8/A9/A12/A15之类依然在用ARMv7的内核。现在市面大多数常用的ARM的片子都是基于ARMv7内核的。直到ARM推出了Cortex-A53和Cortex-A57这两款属于Cortex-A50系列的CPU,首次采用了64位的ARMv8架构。

ARM7是老得掉牙的片子了,最早推出是在1994年的时候,包括ARM7TDMI-S(基于ARMv4T架构)和ARM7EJ-S(基于ARMv5TEJ架构等等)。现在连嵌入式领域都已经不用了。

2.ARM9 和ARM A9 也是两个东西。

ARM A9通常指的是ARM Cortex-A系列的A9芯片。它的内核是ARMv7系列的,用的ARMv7-A架构。
ARM9 是基于ARMv5架构的,ARM11 是基于ARMv6架构的 ARM9和ARM11已经是很老的片子了,用得很少。现在学ARM基本都是从Cortex-A8/A9 上手。

所以ARM系列按照时间顺序依次应该是这样的:

ARM7(ARMv4/ARMv5内核,冯诺依曼结构)–>ARM9(ARMv5内核,哈佛结构)–>ARM11(ARMv6内核,哈佛结构)->Cortex-A5/A7/A8/A9/A12/A15(32位的ARMv7-A内核,哈佛结构)–>Cortex-A57/A53(64位的ARMv8架构,哈佛结构)

STM32系列与ARM的A系列之间的区别:主要是主频/RAM/ROM/时钟/硬件管脚的区别。另外还有一个区别,STM32是不带MMU(内存管理单元的),所以STM32不适合跑大的linux系统,最多跑跑ucos和freertos之流。当然,其实大多数时候,用STM32都是小型项目,很多都是在裸奔的。而A系列的CPU跑各种版本的linux都表示无压力。

最后整理一下STM32现在用得比较多的几个CPU的参数:

F103 主频72M ; RAM 20k ; Flash 64/128k; I/O数量 80 ; 通信接口数量 9 ; timer数目 7
F405 主频168M ; RAM 192K ; Flash 1M ; I/O数量 140 ; 通信接口数量 15 ; timer数目 17
F427 主频180M ; RAM 256K ; Flash 2M ; I/O数量 168 ; 通信接口数量 21 ; timer数目 17

当前有的指令集有:https://www.cnblogs.com/yilang/p/10974327.html

交叉编译工具命名规则

命名规则

对应分别是 :

arch [-vendor] [-os] [-(gnu)eabi]

规则 描述
arch 体系架构, 如ARM, MIPS
vendor 工具链提供商
os 目标操作系统
eabi 嵌入式应用二进制接口(Embedded Application Binary Interface)

[1] https://www.cnblogs.com/stay-foolish1984/p/8928403.html

猜你喜欢

转载自blog.csdn.net/weixin_39258979/article/details/114260274
今日推荐