唐山做网站,wordpress自动添加内链,晋城北京网站建设,脑叶公司手机版下载ARM
首先先介绍一下ARM公司。
ARM成立于1990年11月#xff0c;前身为Acorn计算机公司
主要设计ARM系列RISC处理器内核
授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片
提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…ARM
首先先介绍一下ARM公司。
ARM成立于1990年11月前身为Acorn计算机公司
主要设计ARM系列RISC处理器内核
授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片
提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中央处理器
首先在芯片中中央处理器CPU 是一台计算机的运算核心和控制核心。 CPU、内部存储器和输入/输出设备是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据。 CPU细分的话可以分为Kernel也称为ARM内核 和外设。
ARM内核
在ARM内核中主要包括
ALU算数逻辑单元
RO~R12通用寄存器不可被寻址
PC程序寄存器
LR连接寄存器
SP栈指针寄存器
Cache高速缓存
MMU内存管理单元因为处理器的编码是一串数字比较难记因此开发出了助记符号来降低开发难度提高效率所以产生了汇编语言由于汇编语言的结构不是很清晰因此人们采用了汇编语言来产生较高层次的语言如语言。 编译是从源代码通常为高级语言到能直接被计算机或虚拟机执行的目标代码通常为低级语言或机器语言的翻译过程。 所以编译流程分为四个步骤 编译流程分为四个步骤:
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(LinkingARM三级存储系统
三级存储系统 速度 容量 价格
Cache 快 小 贵
主存储器RAM 中 中 小贵
辅助存储器ROM 慢 大 便宜在高速缓冲存储器Cache中CPU可以直接访问用来存放当前正在执行的程序中的活跃部分以便快速地向CPU提供指令和数据。 在主存储器中可由CPU直接访问用来存放当前正在执行的程序和数据。 在辅助存储器中设置在主机外部CPU不能直接访问用来存放暂时不参与运行的程序和数据需要时再传送到主存。
RAM分类
1sram(static ram) 用晶体管存储0、1。速度快成本高存储密度低。 2dram(dynamic ram) 动态存储用电容充放电存储01。功耗大需要外接刷新电路读写速度低于sram。成本低存储密度大。 3sdram(synchronous dram) 增加了同步电路提高dram的数据读写速度。 4ddr ram (全称ddr sdram即double data rate sdram)为sdram的下一代。目前已发展到ddr5。 5iram (internal ram)注意iram并非是真正意义上的某种ram通常iram就是sram它通常存在于Soc内部所以被称为iram。
ROM分类
1rom 非易失性存储器最早的rom在出场时写入数据之后无法更改。 2prom (programmable rom)可编程rom。出场后能够让用户写入一次数据例如cdrom。 3eprom (erasable prom)可擦写prom出场后可以擦除数据再次写入但需要特殊的设备。如紫外光等。 4eeprom (electically eprom)电可擦写可编程rom无需专用设备就可以擦写编程。 5flash 闪存新一代非易失性存储器。 flash存储器可以分为 ①nor(或非) flash 可以被寻址但是价格贵 ②nand(与非) flash
以上就是背景
ARM的工作模式
ARM有7个基本工作模式 1User:非特权模式大部分任务执行在这种模式 2FIQ:当一个高优先级(fast)中断产生时将会进入这种模式 3IRQ:当一个低优先级(normal)中断产生时将会进入这种模式 4Supervisor:当复位或软中断指令执行时将会进入这种模式 5Abort:当存取异常时将会进入这种模式 6Undef:当执行未定义指令时会进入这种模式 7System:使用和User模式相同寄存器集的特权模式 Cortex-A特有模式 Monitor:是为了安全而扩展出的用于执行安全监控代码的模式也是一种特权模式
ARM9的通用寄存器
这个内容上面已经介绍过
ARM 寄存器
ARM 有37个32-Bits长的寄存器.
1个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器Cortex体系结构下有40个32-Bits长的寄存器
Cortex-A多出3个寄存器Monitor 模式 r13_mon , r14_mon, spsr_mon
当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取
相应的r0-r12子集
相应的 r13 (the stack pointer, sp) and r14 (the link register, lr)
相应的 r15 ( the program counter, pc)
相应的CPSR(current program status register, cpsr)
特权模式 (除system模式) 还可以存取
相应的 spsr (saved program status register)异常向量表中irq的异常向量是多少 cpsr中的哪几位是用来设置工作模式的 M[4:0]用来设置工作模式 User 模式下不能操作 bit[4:0]即不能切换处理器模式 更常见的情况是处理器因异常事件而自动改变模式。 处理器模式 ARM有9个基本工作模式 1UserUSR:10000 2FIQ:10001 3IRQ:10010 4SupervisorSVC:10011 5MonitorMON10110 6AbortABT:10111 7HypHYP11010 8UndefUND:11011 9SystemSYS:11111
T Bit T 0;J0; 处理器处于 ARM 状态 T 1;J0 处理器处于 Thumb 状态 T 1;J1 处理器处于 ThumbEE 状态
中断禁止位 I 1: 禁止 IRQ. F 1: 禁止 FIQ
A位 A1 禁止不精确的数据异常
E位 大小端控制位
IT[7:2] IF….THEN….指令执行状态位
GE[3:0] 大于或等于(当执行SIMD指令时有效)
DNM位 Do Not Modify
J 位 仅ARM v5TE-J架构支持 T0;J 1 处理器处于Jazelle状态 也可以和其他位组合
Q 位 仅ARM v5TE-J架构支持 指示饱和状态
条件位 N Negative result from ALU Z Zero result from ALU C ALU operation Carried out or borrow V ALU operation oVerflowed
r13,r14,15别名是什么有什么作用
R13SP(栈指针寄存器) 每一种异常模式都有其自己独立的R13它通常指向异常模式所专用的堆栈也就是说五种异常模式、非异常模式用户模式和系统模式都有各自独立的堆栈用不同的堆栈指针来索引。这样当ARM进入异常模式的时候程序就可以把一般通用寄存器压入堆栈返回时再出栈保证了各种模式下程序的状态的完整性。
R14LR连接寄存器 它有两个特殊功能。 1保存子程序返回地址。使用BL或BLX时跳转指令自动把返回地址放入r14中子程序通过把r14复制到PC来实现返回。 2当异常发生时异常模式的r14用来保存异常返回地址将r14如栈可以处理嵌套中断。
R15PC(程序寄存器) PC是有读写限制的。当没有超过读取限制的时候读取的值是指令的地址加上8个字节由于ARM指令总是以字对齐的故bit[1:0]总是00。当用str或stm存储PC的时候偏移量有可能是8或12等其它值。在V3及以下版本中写入bit[1:0]的值将被忽略而在V4及以上版本写入r15的bit[1:0]必须为00否则后果不可预测。