[建议]开个帖子,做学习笔记用
1. ARM中一些常见英文缩写解释
MSB:最高有效位;
LSB:最低有效位;
AHB:先进的高性能总线;
VPB:连接片内外设功能的VLSI外设总线;
EMC:外部存储器控制器;
MAM:存储器加速模块;
VIC:向量中断控制器;
SPI:全双工串行接口;
CAN:控制器局域网,一种串行通讯协议;
PWM:脉宽调制器;
ETM:嵌入式跟踪宏;
CPSR:当前程序状态寄存器;
SPSR:程序保护状态寄存器;
2. MAM 使用注意事项:
答:当改变 MAM 定时值时,必须先通过向 MAMCR 写入 0 来关闭 MAM,然后将新值写入 MAMTIM。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。
对于低于 20MHz 的系统时钟,MAMTIM 设定为 001。对于 20MHz 到 40MHz 之间的系统时钟,建议将Flash访问时间设定为2cclk,而在高于40MHz的系统时钟下,建议使用3cclk。
3. VIC 使用注意事项
答:如果在片内RAM当中运行代码并且应用程序需要调用中断,那么必须将中断向量重新映射到Flash地址0x0。这样做是因为所有的异常向量都位于地址0x0及以上。通过将寄存器MEMMAP(位于系统控制模块当中)配置为用户RAM模式来实现这一点。用户代码被连接以便使中断向量表装载到0x4000 0000。
4. ARM启动代码设计
答:ARM启动代码直接面对处理器内核和硬件控制器进行编程,一般使用汇编语言。启动代码一般包括:
中断向量表
初始化存储器系统
初始化堆栈初始化有特殊要求的端口、设备
初始化用户程序执行环境
改变处理器模式
呼叫主应用程序
5. IRQ 和 FIQ 之间的区别
答:IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。
MSB:最高有效位;
LSB:最低有效位;
AHB:先进的高性能总线;
VPB:连接片内外设功能的VLSI外设总线;
EMC:外部存储器控制器;
MAM:存储器加速模块;
VIC:向量中断控制器;
SPI:全双工串行接口;
CAN:控制器局域网,一种串行通讯协议;
PWM:脉宽调制器;
ETM:嵌入式跟踪宏;
CPSR:当前程序状态寄存器;
SPSR:程序保护状态寄存器;
2. MAM 使用注意事项:
答:当改变 MAM 定时值时,必须先通过向 MAMCR 写入 0 来关闭 MAM,然后将新值写入 MAMTIM。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。
对于低于 20MHz 的系统时钟,MAMTIM 设定为 001。对于 20MHz 到 40MHz 之间的系统时钟,建议将Flash访问时间设定为2cclk,而在高于40MHz的系统时钟下,建议使用3cclk。
3. VIC 使用注意事项
答:如果在片内RAM当中运行代码并且应用程序需要调用中断,那么必须将中断向量重新映射到Flash地址0x0。这样做是因为所有的异常向量都位于地址0x0及以上。通过将寄存器MEMMAP(位于系统控制模块当中)配置为用户RAM模式来实现这一点。用户代码被连接以便使中断向量表装载到0x4000 0000。
4. ARM启动代码设计
答:ARM启动代码直接面对处理器内核和硬件控制器进行编程,一般使用汇编语言。启动代码一般包括:
中断向量表
初始化存储器系统
初始化堆栈初始化有特殊要求的端口、设备
初始化用户程序执行环境
改变处理器模式
呼叫主应用程序
5. IRQ 和 FIQ 之间的区别
答:IRQ和FIQ是ARM处理器的两种编程模式。IRQ是指中断模式,FIR是指快速中断模式。对于 FIQ 你必须尽快处理你的事情并离开这个模式。IRQ 可以被 FIQ 所中断,但 IRQ 不能中断 FIQ。为了使 FIQ 更快,所以这种模式有更多的影子寄存器。FIQ 不能调用 SWI(软件中断)。FIQ 还必须禁用中断。如果一个 FIQ 例程必须重新启用中断,则它太慢了,并应该是 IRQ 而不是 FIQ。
6. ARM处理器对异常中断的响应过程
答:ARM处理器对异常中断的响应过程如下所述:
? 保存处理器当前状态、中断屏蔽位以及各条件标志位;
? 设置当前程序状态寄存器CPSR中的相应位;
? 将寄存器lr_mode设置成返回地址;
? 将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
7. ARM指令与Thumb指令的区别
答:在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率很高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程序时,称处理器处于ARM状态;当处理器执行Thumb程序时,称处理器处于Thumb状态。Thumb指令集并没有改变ARM体系地层的程序设计模型,只是在该模型上加上了一些限制条件。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。
8. 什么是ATPCS?
答:为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。这些规则包括寄存器使用规则,数据栈的使用规则,参数的传递规则等。
9. ARM程序和Thumb程序混合使用的场合
答:通常,Thumb程序比ARM程序更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程序效率更高。但是,在下面一些场合下,程序必须运行在ARM状态,这时就需要混合使用ARM和Thumb程序。
? 强调速度的场合,应该使用ARM程序;
? 有些功能只能由ARM程序完成。如:使用或者禁止异常中断;
? 当处理器进入异常中断处理程序时,程序状态切换到ARM状态,即在异常中断处理程序入口的一些指令是ARM指令,然后根据需要程序可以切换到Thumb状态,在异常中断程序返回前,程序再切换到ARM状态。
? ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程序,必须为该Thumb程序添加一个ARM程序头,然后再切换到Thumb状态,执行Thumb程序。
10. ARM处理器运行模式
答:ARM微处理器支持7种运行模式,分别为:
? 用户模式(usr):ARM处理器正常的程序执行状态;
? 快速中断模式(fiq):用于高速数据传输或通道管理;
? 外部中断模式(irq):用于通用的中断处理;
? 管理模式(svc):操作系统使用的保护模式;
? 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护;
? 系统模式(sys):运行具有特权的操作系统任务;
? 未定义指令中止模式(und):当未定义指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
答:ARM处理器对异常中断的响应过程如下所述:
? 保存处理器当前状态、中断屏蔽位以及各条件标志位;
? 设置当前程序状态寄存器CPSR中的相应位;
? 将寄存器lr_mode设置成返回地址;
? 将程序计数器值PC,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
7. ARM指令与Thumb指令的区别
答:在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率很高。对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在处理器执行ARM程序时,称处理器处于ARM状态;当处理器执行Thumb程序时,称处理器处于Thumb状态。Thumb指令集并没有改变ARM体系地层的程序设计模型,只是在该模型上加上了一些限制条件。Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。
8. 什么是ATPCS?
答:为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则。ATPCS就是ARM程序和Thumb程序中子程序调用的基本规则。这些规则包括寄存器使用规则,数据栈的使用规则,参数的传递规则等。
9. ARM程序和Thumb程序混合使用的场合
答:通常,Thumb程序比ARM程序更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程序效率更高。但是,在下面一些场合下,程序必须运行在ARM状态,这时就需要混合使用ARM和Thumb程序。
? 强调速度的场合,应该使用ARM程序;
? 有些功能只能由ARM程序完成。如:使用或者禁止异常中断;
? 当处理器进入异常中断处理程序时,程序状态切换到ARM状态,即在异常中断处理程序入口的一些指令是ARM指令,然后根据需要程序可以切换到Thumb状态,在异常中断程序返回前,程序再切换到ARM状态。
? ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程序,必须为该Thumb程序添加一个ARM程序头,然后再切换到Thumb状态,执行Thumb程序。
10. ARM处理器运行模式
答:ARM微处理器支持7种运行模式,分别为:
? 用户模式(usr):ARM处理器正常的程序执行状态;
? 快速中断模式(fiq):用于高速数据传输或通道管理;
? 外部中断模式(irq):用于通用的中断处理;
? 管理模式(svc):操作系统使用的保护模式;
? 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护;
? 系统模式(sys):运行具有特权的操作系统任务;
? 未定义指令中止模式(und):当未定义指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
11. ARM体系结构所支持的异常类型
答:ARM体系结构所支持的异常和具体含义如下(圈里面的数字表示优先级):
? 复位①:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处执行(异常向量:0x0000,0000);
? 未定义指令⑥:当ARM处理器或协处理器遇到不能处理的指令时,产生为定义异常。可使用该异常机制进行软件仿真(异常向量:0x0000,0004);
? 软件中断⑥:有执行SWI指令产生,可用于用户模式下程序调用特权操作指令。可使用该异常机制实现系统功能调用(异常向量:0x0000,0008);
? 指令预取中止⑤:若处理器的预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,当预取指令被执行时,才会产生指令预取中止异常(异常向量:0x0000,000C);
? 数据中止②:若处理器数据访问的指令的地址不存在,或该地址不允许当前指令访问,产生数据中止异常(异常向量:0x0000,0010);
? IRQ④(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可以该异常请求中断服务(异常向量:0x0000,0018);
? FIQ③(快速中断请求):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常(异常向量:0x0000,001C)。
说明:其中异常向量0x0000,0014为保留的异常向量。
12. ARM体系结构的存储器格式
答:ARM体系结构的存储器格式有如下两种:
? 大端格式:字数据的高字节存储在低地址中,字数据的低字节存放在高地址中;
? 小端格式:与大端存储格式相反,高地址存放数据的高字节,低地址存放数据的低字节。
13. ARM寄存器总结:
? ARM有16个32位的寄存器(r0到r15)。
? r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。
? ARM有一个当前程序状态寄存器:CPSR。
? 一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq
? ARM的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。
14. 存储器重新映射的原因:
? 使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题;
? 用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少;
? 为超过单字转移指令范围的跳转提供空间来保存常量。
15. 存储异常向量表中程序跳转使用LDR指令,而不使用B指令的原因:
? LDR指令可以全地址范围跳转,而B指令只能在前后32MB范围内跳转;
? 芯片具有Remap功能。当向量表位于内部RAM或外部存储器中,用B指令不能跳转到正确的位置。
答:ARM体系结构所支持的异常和具体含义如下(圈里面的数字表示优先级):
? 复位①:当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处执行(异常向量:0x0000,0000);
? 未定义指令⑥:当ARM处理器或协处理器遇到不能处理的指令时,产生为定义异常。可使用该异常机制进行软件仿真(异常向量:0x0000,0004);
? 软件中断⑥:有执行SWI指令产生,可用于用户模式下程序调用特权操作指令。可使用该异常机制实现系统功能调用(异常向量:0x0000,0008);
? 指令预取中止⑤:若处理器的预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,当预取指令被执行时,才会产生指令预取中止异常(异常向量:0x0000,000C);
? 数据中止②:若处理器数据访问的指令的地址不存在,或该地址不允许当前指令访问,产生数据中止异常(异常向量:0x0000,0010);
? IRQ④(外部中断请求):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可以该异常请求中断服务(异常向量:0x0000,0018);
? FIQ③(快速中断请求):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常(异常向量:0x0000,001C)。
说明:其中异常向量0x0000,0014为保留的异常向量。
12. ARM体系结构的存储器格式
答:ARM体系结构的存储器格式有如下两种:
? 大端格式:字数据的高字节存储在低地址中,字数据的低字节存放在高地址中;
? 小端格式:与大端存储格式相反,高地址存放数据的高字节,低地址存放数据的低字节。
13. ARM寄存器总结:
? ARM有16个32位的寄存器(r0到r15)。
? r15充当程序寄存器PC,r14(link register)存储子程序的返回地址,r13存储的是堆栈地址。
? ARM有一个当前程序状态寄存器:CPSR。
? 一些寄存器(r13,r14)在异常发生时会产生新的instances,比如IRQ处理器模式,这时处理器使用r13_irq和r14_irq
? ARM的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。
14. 存储器重新映射的原因:
? 使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题;
? 用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少;
? 为超过单字转移指令范围的跳转提供空间来保存常量。
15. 存储异常向量表中程序跳转使用LDR指令,而不使用B指令的原因:
? LDR指令可以全地址范围跳转,而B指令只能在前后32MB范围内跳转;
? 芯片具有Remap功能。当向量表位于内部RAM或外部存储器中,用B指令不能跳转到正确的位置。
16. 锁相环(PLL)注意要点:
? PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定;
? PLL只能通过软件使能;
? PLL在激活后必须等待其锁定,然后才能连接;
? PLL如果设置不当将会导致芯片的错误操作。
17. ARM7与ARM9的区别:
? ARM7内核是0.9MIPS/MHz的三级流水线和冯?诺伊曼结构;ARM9内核是五级流水线,提供1.1MIPS/MHz的哈佛结构。
? ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只有Memory protection unit.不是一个完整的MMU。
? ARM7TDMI提供了非常好的性能——功耗比。它包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。
18. VIC的基本操作如下:
答:设置IRQ/FIQ中断,若是IRQ中断则可以设置为向量中断并分配中断优先级,否则为非向量IRQ。然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。当有中断后,若是IRQ中断,则可以读取向量地址寄存器,然后跳转到相应的代码。当要退出中断时,对向量地址寄存器写0,通知VIC中断结束。当发生中断时,处理器将会切换处理器模式,同时相关的寄存器也将会映射。
19. 使用外部中断注意
? 把某个引脚设置为外部中断功能后,该引脚为输入模式,由于没有内部上拉电阻,所以必须外接一个上拉电阻,确保引脚不被悬空;
? 除了引脚连接模块的设置,还需要设置VIC模块,才能产生外部中断,否则外部中断只能反映在EXTINT寄存器中;
? 要使器件进入掉电模式并通过外部中断唤醒,软件应该正确设置引脚的外部中断功能,再进入掉电模式。
20. UART0的基本操作方法
? 设置I/O连接到UART0;
? 设置串口波特率(U0DLM、U0DLL);
? 设置串口工作模式(U0LCR、U0FCR);
? 发送或接收数据(U0THR、U0RBR);
? 检查串口状态字或等待串口中断(U0LSR)。
? PLL在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢复PLL的设定;
? PLL只能通过软件使能;
? PLL在激活后必须等待其锁定,然后才能连接;
? PLL如果设置不当将会导致芯片的错误操作。
17. ARM7与ARM9的区别:
? ARM7内核是0.9MIPS/MHz的三级流水线和冯?诺伊曼结构;ARM9内核是五级流水线,提供1.1MIPS/MHz的哈佛结构。
? ARM7没有MMU,ARM720T是MMU的;ARM9是有MMU的,ARM940T只有Memory protection unit.不是一个完整的MMU。
? ARM7TDMI提供了非常好的性能——功耗比。它包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。
18. VIC的基本操作如下:
答:设置IRQ/FIQ中断,若是IRQ中断则可以设置为向量中断并分配中断优先级,否则为非向量IRQ。然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。当有中断后,若是IRQ中断,则可以读取向量地址寄存器,然后跳转到相应的代码。当要退出中断时,对向量地址寄存器写0,通知VIC中断结束。当发生中断时,处理器将会切换处理器模式,同时相关的寄存器也将会映射。
19. 使用外部中断注意
? 把某个引脚设置为外部中断功能后,该引脚为输入模式,由于没有内部上拉电阻,所以必须外接一个上拉电阻,确保引脚不被悬空;
? 除了引脚连接模块的设置,还需要设置VIC模块,才能产生外部中断,否则外部中断只能反映在EXTINT寄存器中;
? 要使器件进入掉电模式并通过外部中断唤醒,软件应该正确设置引脚的外部中断功能,再进入掉电模式。
20. UART0的基本操作方法
? 设置I/O连接到UART0;
? 设置串口波特率(U0DLM、U0DLL);
? 设置串口工作模式(U0LCR、U0FCR);
? 发送或接收数据(U0THR、U0RBR);
? 检查串口状态字或等待串口中断(U0LSR)。
21. I2C的基本操作方法
答:I2C主机基本操作方法:
? 设置I2C管脚连接;
? 设置I2C时钟速率(I2SCLH、I2SCLL);
? 设置为主机,并发送起始信号(I2CONSET的I2EN、STA位为1,AA位为0);
? 发送从机地址(I2DAT),控制I2CONSET发送;
? 判断总线状态(I2STAT),进行数据传输控制;
? 发送结束信号(I2CONSET)。
I2C从机基本操作方法:
? 设置I2C管脚连接;
? 设置自身的从机地址(I2ADR);
? 使能I2C(I2CONSET的I2EN、AA位为1);
? 判断SI位或等待I2C中断,等待主机操作;
? 判断总线状态I2STAT,进行数据传输控制。
22. PWM基本操作方法:
? 连接PWM功能管脚输出,即设置PINSEL0、PINSEL1;
? 设置PWM定时器的时钟分频值(PWMPR),得到所要的定时器时钟;
? 设置比较匹配控制(PWMMCR),并设置相应比较值(PWMMRx);
? 设置PWM输出方式并允许PWM输出(PWMPCR)及锁存使能控制(PWMLER);
? 设置PWMTCR,启动定时器,使能PWM;
? 运行过程中要更改比较值时,更改之后要设置锁存使能。
使用双边沿PWM输出时,建议使用PWM2、PWM4、PWM6;使用单边PWM输出时,在PWM周期开始时为高电平,匹配后为低电平,使用PWMMR0作为PWM周期控制,PWMMRx作为占空比控制。
答:I2C主机基本操作方法:
? 设置I2C管脚连接;
? 设置I2C时钟速率(I2SCLH、I2SCLL);
? 设置为主机,并发送起始信号(I2CONSET的I2EN、STA位为1,AA位为0);
? 发送从机地址(I2DAT),控制I2CONSET发送;
? 判断总线状态(I2STAT),进行数据传输控制;
? 发送结束信号(I2CONSET)。
I2C从机基本操作方法:
? 设置I2C管脚连接;
? 设置自身的从机地址(I2ADR);
? 使能I2C(I2CONSET的I2EN、AA位为1);
? 判断SI位或等待I2C中断,等待主机操作;
? 判断总线状态I2STAT,进行数据传输控制。
22. PWM基本操作方法:
? 连接PWM功能管脚输出,即设置PINSEL0、PINSEL1;
? 设置PWM定时器的时钟分频值(PWMPR),得到所要的定时器时钟;
? 设置比较匹配控制(PWMMCR),并设置相应比较值(PWMMRx);
? 设置PWM输出方式并允许PWM输出(PWMPCR)及锁存使能控制(PWMLER);
? 设置PWMTCR,启动定时器,使能PWM;
? 运行过程中要更改比较值时,更改之后要设置锁存使能。
使用双边沿PWM输出时,建议使用PWM2、PWM4、PWM6;使用单边PWM输出时,在PWM周期开始时为高电平,匹配后为低电平,使用PWMMR0作为PWM周期控制,PWMMRx作为占空比控制。
一、 ARM体系的变种
1、 Thumb指令集(T变种):16位指令
Thumb指令集版本1用于ARM体系版本4的T变种
Thumb指令集版本2用于ARM体系版本5的T变种
2、 长乘法指令(M变种):增加了两条用于长乘法操作的ARM指令。在ARM体系版本4及
其以后的版本中,M变种是系统中的标准部分。
3、 增强型DSP指令(E变种):首先在ARM体系版本5T中使用。
4、 Java加速器Jazelle(J变种)
5、 ARM媒体功能扩展(SIMD变种):为嵌入式系统提供了高性能的音频、视频处理技术。
二、 ARM处理器目前包括下面几个系列的处理器产品:
1、 ARM7系列
2、 ARM9系列
3、 ARM9E系列
4、 ARM10E系列
5、 SecurCore系列
6、 Intel的Xscale
7、 Intel的StrongARM
三、 ARM7系列
1、 低功耗的32位RISC处理器,主要用于对功耗和成本要求比较苛刻的消费类产品,其
最高主频可以达到130MIPS。
2、 ARM7系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T 4种类型
1、 Thumb指令集(T变种):16位指令
Thumb指令集版本1用于ARM体系版本4的T变种
Thumb指令集版本2用于ARM体系版本5的T变种
2、 长乘法指令(M变种):增加了两条用于长乘法操作的ARM指令。在ARM体系版本4及
其以后的版本中,M变种是系统中的标准部分。
3、 增强型DSP指令(E变种):首先在ARM体系版本5T中使用。
4、 Java加速器Jazelle(J变种)
5、 ARM媒体功能扩展(SIMD变种):为嵌入式系统提供了高性能的音频、视频处理技术。
二、 ARM处理器目前包括下面几个系列的处理器产品:
1、 ARM7系列
2、 ARM9系列
3、 ARM9E系列
4、 ARM10E系列
5、 SecurCore系列
6、 Intel的Xscale
7、 Intel的StrongARM
三、 ARM7系列
1、 低功耗的32位RISC处理器,主要用于对功耗和成本要求比较苛刻的消费类产品,其
最高主频可以达到130MIPS。
2、 ARM7系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T 4种类型
四、 ARM9系列
1、 包括ARM920T、ARM922T和ARM940T 3种类型。
五、 ARM9E系列
1、 使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案。
2、 包括ARM926EJ-S、ARM946E-S和ARM966E-S 3种类型。
六、 ARM10E系列
1、 包括ARM1020E、ARM1022E和ARM1026EJ-S 3种类型。
七、 SecurCore系列
1、 提供了安全解决方案的支持。
2、 包括SecurCore SC100、SecurCore SC110、SecurCore SC200、SecurCore SC210 4
种类型。
八、 ARM处理器模式
1、 用户模式(User,usr)
2、 快速中断模式(FIQ,fiq)
3、 外部中断模式(IRQ,irq)
4、 特权模式(Supervisor,sve)
5、 数据访问中止模式(Abort,abt)
6、 未定义指令中止模式(Undefined,und)
7、 系统模式(System,sys)
除了用户模式之外的其他6种处理器模式称为特权模式(Privileged Modes)。在这些模
式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除
系统模式外,其他5种特权模式又称为异常模式。
大多数的应用程序运行在用户模式下。这时,应用程序不能访问一些受操作系统保护的
系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换的
时候,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换。这种体
系结构可以使操作系统控制整个系统的资源。
当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一
组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式
下的寄存器(保存了程序运行状态)不被破坏。
系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统
模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主
要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍
然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当
异常中断发生时任务状态不被破坏。
1、 包括ARM920T、ARM922T和ARM940T 3种类型。
五、 ARM9E系列
1、 使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案。
2、 包括ARM926EJ-S、ARM946E-S和ARM966E-S 3种类型。
六、 ARM10E系列
1、 包括ARM1020E、ARM1022E和ARM1026EJ-S 3种类型。
七、 SecurCore系列
1、 提供了安全解决方案的支持。
2、 包括SecurCore SC100、SecurCore SC110、SecurCore SC200、SecurCore SC210 4
种类型。
八、 ARM处理器模式
1、 用户模式(User,usr)
2、 快速中断模式(FIQ,fiq)
3、 外部中断模式(IRQ,irq)
4、 特权模式(Supervisor,sve)
5、 数据访问中止模式(Abort,abt)
6、 未定义指令中止模式(Undefined,und)
7、 系统模式(System,sys)
除了用户模式之外的其他6种处理器模式称为特权模式(Privileged Modes)。在这些模
式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除
系统模式外,其他5种特权模式又称为异常模式。
大多数的应用程序运行在用户模式下。这时,应用程序不能访问一些受操作系统保护的
系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换的
时候,应用程序可以产生异常处理,在异常处理过程中进行处理器模式的切换。这种体
系结构可以使操作系统控制整个系统的资源。
当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一
组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式
下的寄存器(保存了程序运行状态)不被破坏。
系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统
模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主
要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍
然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当
异常中断发生时任务状态不被破坏。
九、 ARM寄存器介绍
1、 ARM处理器共有37个寄存器,其中包括:
i. 31个通用寄存器,包括程序计数器(PC)在内。都是32位寄存器
ii. 6个状态寄存器,都是32位寄存器,但目前只使用了其中12位
2、 ARM处理器有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组
。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0~
R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式
共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。
3、 通用寄存器可以分为3类:未备份寄存器(R0~R7)、备份寄存器(R8~R14)和程序
计数器PC(R15)。对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一
个物理寄存器。对应备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器,
这使得中断处理非常简单。例如,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行
保存和恢复中断现场的指令,从而使中断处理过程非常迅速。对于备份寄存器R13和R14
来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的
,另外的5个对应于其他5种处理器模式。
4、 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模
式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;
当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程
序不会破坏被其中断程序的运行现场。
5、 寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种
特殊的作用:
i. 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过BL或BLX指令
调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程
序计数器PC中时,子程序即返回。
ii. 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址
,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方
式与子程序返回方式基本相同。
6、 由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个
字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址,由于ARM
指令是字节对齐的,PC值得第0位和第1位总为0。
7、 对于ARM版本3以及更低的版本,写入R15的地址值的bits[1:0]被忽略,对于ARM版本
4以及更高的版本,程序必须保证写入R15寄存器的地址值的bits[1:0]为0b00;否则会产
生不可预知的结果。对于Thumb指令集来说,指令是半字对齐的。处理器将忽略bit[0]。
还有一些指令对于R15的用法有一些特殊的要求。比如,指令BX利用bit[0]来确定是ARM
指令,还是Thumb指令。
8、 指令mov pc, pc将程序跳转到当前指令下面第2条指令处执行。类似的指令还有
add pc, pc, #0
9、 每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄
存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。
在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。
10、 由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当在用户模式或
系统模式中 访问SPSR,将会产生不可预知的结果。
十、 ARM体系的异常中断
1、 在ARM体系中有三种方式控制程序的执行流程:正常执行、调转和异常中断。
2、 异常中断包括:复位、未定义的指令、软件中断、指令预取中止、数据访问中止、
外部中断请求和快速中断请求。
3、 复位异常中断处理不需要返回。在复位异常中断处理程序开始整个用户程序的执行
,因而它不需要返回。
十一、 ARM体系中的存储系统
1、 ARM体系使用单一的平板地址空间。
2、 ARM存储器格式分为big-endian和little-endian两种
1、 ARM处理器共有37个寄存器,其中包括:
i. 31个通用寄存器,包括程序计数器(PC)在内。都是32位寄存器
ii. 6个状态寄存器,都是32位寄存器,但目前只使用了其中12位
2、 ARM处理器有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组
。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0~
R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式
共用的同一个物理寄存器,有些是各模式自己拥有的独立的物理寄存器。
3、 通用寄存器可以分为3类:未备份寄存器(R0~R7)、备份寄存器(R8~R14)和程序
计数器PC(R15)。对于每一个未备份寄存器来说,在所有的处理器模式下指的都是同一
个物理寄存器。对应备份寄存器R8~R12来说,每个寄存器对应两个不同的物理寄存器,
这使得中断处理非常简单。例如,仅仅使用R8~R14寄存器时,FIQ处理程序可以不必执行
保存和恢复中断现场的指令,从而使中断处理过程非常迅速。对于备份寄存器R13和R14
来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式和系统模式共用的
,另外的5个对应于其他5种处理器模式。
4、 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模
式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;
当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程
序不会破坏被其中断程序的运行现场。
5、 寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种
特殊的作用:
i. 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过BL或BLX指令
调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到程
序计数器PC中时,子程序即返回。
ii. 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址
,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。具体的返回方
式与子程序返回方式基本相同。
6、 由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个
字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址,由于ARM
指令是字节对齐的,PC值得第0位和第1位总为0。
7、 对于ARM版本3以及更低的版本,写入R15的地址值的bits[1:0]被忽略,对于ARM版本
4以及更高的版本,程序必须保证写入R15寄存器的地址值的bits[1:0]为0b00;否则会产
生不可预知的结果。对于Thumb指令集来说,指令是半字对齐的。处理器将忽略bit[0]。
还有一些指令对于R15的用法有一些特殊的要求。比如,指令BX利用bit[0]来确定是ARM
指令,还是Thumb指令。
8、 指令mov pc, pc将程序跳转到当前指令下面第2条指令处执行。类似的指令还有
add pc, pc, #0
9、 每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄
存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。
在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。
10、 由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当在用户模式或
系统模式中 访问SPSR,将会产生不可预知的结果。
十、 ARM体系的异常中断
1、 在ARM体系中有三种方式控制程序的执行流程:正常执行、调转和异常中断。
2、 异常中断包括:复位、未定义的指令、软件中断、指令预取中止、数据访问中止、
外部中断请求和快速中断请求。
3、 复位异常中断处理不需要返回。在复位异常中断处理程序开始整个用户程序的执行
,因而它不需要返回。
十一、 ARM体系中的存储系统
1、 ARM体系使用单一的平板地址空间。
2、 ARM存储器格式分为big-endian和little-endian两种
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |