1.2.ARM裸机第二部分-ARM体系结构与汇编指令

本文深入探讨了ARM体系结构,包括可编程器件的编程原理、RISC与CISC的区别、内存映射、CPU与外部存储器的接口。详细讲解了ARM的工作模式、寄存器、异常处理机制以及ARM汇编指令集,包括数据处理、访存、分支指令等,并介绍了伪指令的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.2.1.可编程器件的编程原理

电子器件的发展方向

模拟器件 -> 数字器件

ASIC -> 可编程器件

可编程器件的特点

CPU在固定频率的时钟控制下节奏运行。

CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行。

这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集。

整个编程及运行过程

程序员用汇编指令编程 --经汇编器汇编成二进制可执行程序文件-->二进制文件被CPU读取进去-->CPU内部电路对二进制文件解码-->解码通过则CPU执行指令、完成指令动作。

如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,再进行上面的后续部分。

从源代码到CPU执行过程


1.2.2.指令集对CPU的意义


1.2.3.RISC和CISC的区别


1.2.4.统一编址&独立编址&哈佛结构&冯诺依曼结构


1.2.5.软件编程控制硬件的关键-寄存器

寄存器的演示

两类寄存器

1、SoC中有2类寄存器:通用寄存器和SFR

2、通用寄存器(ARM中有37个)是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持和参与。

3、SFR(special function register,特殊功能寄存器)不在CPU中,而存在于CPU的外设中,我们通过访问外设的SFR来编程操控这个外设,这就是硬件编程控制的方法。

编程访问寄存器的方法

汇编
ldr r1, =0xE0200280    #把0xE0200280放到r1这个寄存器中
str r0, [r1]	       #把r0中的数放到以r1这个数为地址的内存中去
mov r0, #0	       #把0这个数字放到r0这个寄存器中

C语言
int *p = (int *)0x30008000;
*p = 16;

1.2.6.ARM体系结构要点总结


1.2.7.S5PV210的内存映射详解

什么是内存映射

1、S5PV210属于ARM Cortex-A8架构,32位CPU,CPU设计时就有32根地址线&32根数据线。

2、32根地址线决定了CPU的地址空间为4G,那么这4G空间如何分配使用?这个问题就是内存映射问题(好像准确点应该叫地址映射吧,我懒的改标题了,大家注意这个小坑)。

S5PV210 datasheet中内存映射位置


一些专业术语

ROM:read only memory 只读存储器

RAM:ramdom access memory 随机访问存储器

IROM:internal rom 内部ROM,指的是集成到SoC内部的ROM

IRAM:internal ram 内部RAM,指的是集成到SoC内部的RAM

DRAM:dynamic ram 动态RAM

SRAM:static ram 静态RAM

SROM:static rom? sram and rom?

ONENAND/NAND: 

SFR:special function register

1.2.8.CPU和外部存储器的接口

内存 内部存储器 用来运行程序的 RAM 举例(DRAM SRAM DDR)
外存 外部存储器 用来存储东西的 ROM 举例(硬盘 Flash(Nand iNand···· U盘、SSD) 光盘)

CPU连接内存和外存的连接方式不同。内存需要直接地址访问,所以是通过地址总线&数据总线的总线式访问方式连接的(好处是直接访问,随机访问;坏处是占用CPU的地址空间,大小受限);外存是通过CPU的外存接口来连接的(好处是不占用CPU的地址空间,坏处是访问速度没有总线式快,访问时序较复杂)

SoC常用外存:
NorFlash 总线式访问,接到SROM bank,优点是可以直接总线访问,一般用来启动。

NandFlash: 分为SLC和MLC
eMMC/iNand/moviNand eMMC(embeded MMC)iNand是SanDisk公司出产的eMMC,moviNand是三星公司出产的eMMC
oneNAND oneNand是三星公司出的一种Nand
SD卡/TF卡/MMC卡
eSSD

SATA硬盘(机械式访问、磁存储原理、SATA是接口)

外部总线接口(EBI)被用作S5PV210外围。它依赖于内存控制器释放  外部请求外部总线空闲内存控制器时,因为它没有当内存的知识  访问将开始或完成。它使一个SROM控制器、一个OneNAND控制器和一个快闪记忆体  控制器、分享外部内存总线、内存端口0。

S5PV210支持的外部存储器

见datasheet Section2.6 booting sequence

见datasheet Section5全部,memory

见datasheet Section8.7 SD/MMC部分

X210开发板支持的外部存储器

X210有2个版本,Nand版和iNand版,分别使用Nandflash和iNand为外部存储器。我们使用的是iNand版本,板载4GB iNand

S5PV210共支持4个SD/MMC通道,其中 通道0和2依次用作启动。X210开发板中 SD/MMC0通道用于连接板载MMC,因此外部启动时只能使用SD/MMC2通道(注意 通道3不能启动)。见《S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf》中P6

1.2.9.S5PV210的启动过程详解1

内存:
	SRAM	静态内存	特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
	DRAM	动态内存	特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。
单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质
PC机:	  内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM

外存:
	NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
	NandFlash(跟硬盘一样):特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。

所以一般PC机都是:很小容量的BIOS(NorFlash)+ 很大容量的硬盘(类似于NandFlash)+ 大容量的DRAM
一般的单片机:	  很小容量的NorFlash + 很小容量的SRAM
嵌入式系统:因为NorFlash很贵,随意现在很多嵌入式系统倾向于不用NorFlash,
			直接用:外接的大容量Nand + 外接大容量DRAM + SoC内置SRAM

			
S5PV210使用的启动方式是:外接的大容量Nand + 外接大容量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值