1. 概念
SOC全称System on Chip,意为片上系统(或称为芯片级系统)
1.1CPU和SOC的区别
1.2 版本号之分
CPU核架构(ARM公司设计) | CPU核版本号(ARM公司定义) | SOC版本号(SOC厂商定义) |
ARMv7 | Cortex-A | S5pv210(三星的) |
ARMv7 | Cortex-A | IMX6dl(恩智浦的) |
Cortex-A | A的意思是application应用级处理器,就是手机、平板、电脑的CPU | |
Cortex-M | M的意思是microcontroller微控制器,就是单片机,比如最近火的stm32 | |
Cortex-R | R的意思是realtime实时控制器,响应速度快,主要用于工业、航空领域 |
2. 寄存器
寄存器存在于SOC内部,众所周知,我们编写程序控制硬件是通过寄存器来编程操控的,寄存器就好像是硬件提供的API供编程人员使用。
SOC中有两类寄存器:通用寄存器和特殊功能寄存器SFR(special function register)
通用寄存器(arm中有37个)是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持与参与。
SFR不在CPU中,而存在于CPU的外设中,程序员通过访问外设的SFR来编程操控这个外设。
汇编可以用到通用寄存器,例如向特殊功能寄存器(地址为0x30008000,这里的地址是随便写的,方便理解)写入16,用汇编写是:
-
ldr r0, =
16
-
ldr r1, =
0x30008000
-
str r0, [r1}
用C语言写是:
-
int *p = (
int *)
0x30008000;
-
*p =
16;
相比可知,用汇编写用到了通用寄存器r0,r1, 而C语言写却没有,其实是C语言屏蔽了这个过程(这个过程依然存在,只是编译器在生成.s文件时帮程序员做了,不懂的可以看我的另一篇博客《编译原理》)
后续补充·····
(这是另一篇博客)
•程序员用汇编指令编程 --经汇编器汇编成二进制可执行程序文件-->二进制文件被CPU读取进去-->CPU内部电路对二进制文件解码-->解码通过则CPU执行指令、完成指令动作。
•如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,再进行上面的后续部分。