1.从源代码到CPU执行过程
.c等高级语言经过编译器编译后转换为.s汇编源代码经过汇编器转化为elf格式二进制可执行程序通过Objcopy工具转化成Bin格式烧录文件通过总线传送到CPU中进行解码在CPU内部进行控制指令使CPU开始运作。
2.汇编语言与C等高级语言的差异
(1)汇编难写,C好写
(2)可移植性,汇编<C<java
(3)效率,汇编>C>Java
(4)汇编不适合完成大型复杂的项目,更高级的语言适合。
3.汇编语言的本质
是机器指令的助记符(如MOV),是一款CPU的本质特征,是一种低级语言。ARM和Intel的编译器不同,因为它们是不同种类的CPU,它们汇编语言的指令集是不一样的,但都是对C语言进行编译。
4.编程语言的发展过程
纯机器码编程→汇编语言编程→C语言编程→C++语言编程→Java、C#等语言编程→脚本语言编程
5.CISC复杂指令集CPU
设计理念是用最少的指令来完成任务(如完成乘法只需要一条指令MUL)。因此CISC的CPU本身设计复杂、工艺复杂,但好处是编译器好设计。CISC出现较早,至今Intel还一直采用CISC设计。(51是Intel的)
6.RISC精简指令集CPU
设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集。因此RISC CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了,但是编译器的设计变难了。(如ARM)
7.内存的访问方式和IO的访问方式
(1)内存通过CPU的地址总线来寻址定位,然后通过数据总线来读取。地址总线是CPU设计时确定的(32/64位CPU),因此一款CPU的寻址范围是一定的,而内存是需要占用CPU寻址空间的,两者不一定相等。内存与CPU的总线连接方式是直连,优点是效率高访问快,缺点是资源有限,扩展性差。
(2)IO指的是与CPU连接的各种外设。CPU访问外设有两种方式:一是类似于访问内存的方式,把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设,叫IO与内存统一编址方式;另一种是使用专用的CPU指令来访问某种特定外设,叫IO与内存独立编址,优点是不占用CPU地址空间,缺点是CPU设计变复杂。
8.冯诺依曼结构和哈佛结构
(1)冯诺依曼结构:程序和数据不彼此分离地放在内存中,如电脑,因此缺点是安全和稳定性低,程序易被更改如中毒,优点是处理起来简单。
(2)哈佛结构:程序和数据分开独立放在不同的内存块中,如大部分单片机,程序放在ROM中,数据放在RAM中,因此优点是安全和稳定性高,缺点是软件处理复杂(需要统一规划链接地址)。
9.寄存器
寄存器属于CPU外设的硬件组成部分。CPU可以像访问内存一样访问寄存器。寄存器是CPU的硬件设计者制定的,目的是留作外设被编程控制的“活动开关”。寄存器是外设硬件的软件编程接口API,使用软件编程控制某一硬件,就是编程读写该硬件的寄存器。
SoC中有两类寄存器:通用寄存器和SFR(special function register)特殊功能寄存器。
(1)通用寄存器(ARM中有37个):是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持和参加。
(2)SFR特殊功能寄存器不在CPU中,而存在于CPU的外设中,我们通过访问外设的SFR来编程操控这个外设,这就是硬件编程控制的方法。
10.关于ARM的总结
(1)ARM是RISC架构
①常用ARM汇编指令只有二三十条。
②ARM是低功耗CPU。
③ARM架构非常适合单片机、嵌入式,尤其是物联网领域;而服务器等高性能领域目前主导还是Intel。
(2)ARM是统一编址的
①大部分ARM都是32位架构
②32位ARM的CPU支持的内存小于4G,通过CPU地址总线来访问
③SoC中的各种内部外设通过各自的SFR编程访问,这些SFR的访问方式类似于普通内存,这叫IO与内存统一编址。
(3)ARM是哈佛结构的
①哈佛结构保证了安全和稳定性,因此ARM适用于嵌入式领域
②哈佛结构也决定了ARM裸机程序(使用实地址即物理地址)的链接比较麻烦,必须使用复杂的链接脚本告知链接器如何组织程序;对于OS之上的应用(工作在虚拟地址中)则不需考虑这么多。
11.什么是地址映射(内存映射)?
S5PV210属于ARM的cortex-A8架构,32位CPU,CPU设计时就有32根地址线和32根数据线。32根地址线决定了地址空间为4G,4G空间如何分配使用就是地址映射问题。
12.ROM和RAM
ROM:只读存储器;RAM:随机访问存储器;
IROM:内部ROM(集成到SoC内部);IRAM:内部RAM;
DRAM:动态ROM;
SRAM:静态RAM
嵌入式linux-----ARM裸机(1)-----ARM体系结构与汇编指令
最新推荐文章于 2022-07-02 20:54:05 发布