查看Linux系统内核信息 uname -a
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_64
查看具体的发行版
cat /etc/os-release
查看系统架构 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/cpuinfo
或lscpu
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