每组GPIO端口都有两类控制寄存器,分别工作在正常模式和掉电模式。S5PV210处理器工作在正常模式下时,正常寄存器工作;进入掉电模式时,所有配置和上拉/下拉控制由掉电寄存器控制。用于控制GPIO的引脚功能,向该寄存器写入数据来设置相应引脚是输入/输出,还是其他功能。GPIO数据寄存器GPxnDAT。GPIO上拉/下拉寄存器GPxnPUD,用于控制每个端口上拉/下拉电阻的使能/禁止。......
2023-11-19
Cortex-A8处理器有40个32位寄存器,分为33个通用寄存器和7个程序状态寄存器。7个程序状态寄存器包括1个当前程序状态寄存器(CPSR)和6个备份程序状态寄存器(SPSR)。ARM正常状态下有16个数据寄存器和1~2个状态寄存器可随时被访问,可被访问的寄存器依赖于处理器当前的工作模式。每种工作模式下处理器可访问的寄存器名称见表2.4。
1.通用寄存器组
表2.4中,R0~R15是通用寄存器。其中R0~R7是不分组的通用寄存器,R8~R15是分组的通用寄存器。这些寄存器用来保存数据或表示地址。
(1)不分组的通用寄存器R0~R7。在所有处理器模式下对于每一个不分组寄存器来说,指的都是同一个物理寄存器。
(2)分组的通用寄存器R8~R15。
①R8~R12:对应两个不同的物理寄存器,由表2.4可知,它们分别为快速中断模式下的相应寄存器及除快速模式外的其他7中模式下的相应寄存器。快速中断下的R8_fig~R12_fig,当FIQ中断到达时,不用保存这些通用寄存器,即程序可以不执行保存和恢复现场的指令,从而可以使中断处理过程非常迅速。
表2.4 ARM状态下Cortex-A8寄存器组
②R13是堆栈指针寄存器(Stack Pointer,SP),用于指向堆栈区的栈顶。每种工作模式具有各自私有的堆栈区和堆栈指针寄存器。
③R14是链接寄存器(Link Register,LR),用于存储子程序返回主程序的链接地址。当处理器执行一条调用指令(BL或BLX)时,R14用于存储主程序的断点地址,供子程序返回主程序;其他时间,R14可以作为一个通用寄存器使用。每种工作模式具有各自私有的链接寄存器。
④R15(PC)5是程序计数器,用于存放下一条指令所在存储单元的地址。由于ARM指令集中的一条指令代码为4字节,因此在取指时指令代码的存储地址应满足字对齐。
2.状态寄存器组
由表2.4可知,Cortex-A8处理器的程序状态寄存器包含1个当前程序状态寄存器CPSR和6个备份程序状态寄存器SPSR。
程序状态寄存器(CPSR和SPSR)的主要用途:保存所执行的最后一条逻辑或算术运算指令运行结果的相关信息,控制开启/禁用中断,设置处理器工作模式。程序状态寄存器位格式见表2.5。
表2.5 程序状态寄存器位格式
(1)条件代码标志位
N、Z、C和V位都是条件代码标志。通过算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置。各标志位的含义如表2.6所示。
表2.6 各标志位的含义
(www.chuimin.cn)
(2)状态控制位
IT[1:0]、IT[7:2]、J、E、A被称为状态控制位,各位具体含义如表2.7所示。
表2.7 状态控制位含义
(3)控制位
I、F、T、M[4:0]是控制位,其含义如表2.8所示。
表2.8 控制位含义
表2.9 工作模式与M[4:0]的内容对应关系
(4)使用MSR指令修改CPSR寄存器
在ARMv6以前架构版本中,MSR指令可在所有模式下修改标志位字节,即CPSR[31~24]。但CPSR中其他三个字节内容只有在特权模式下可以修改。
ARMv6的改进之处有以下几个方面。
①CPSR寄存器中指定标志位在任何模式下可自由修改,通过MSR指令或借助其他指令执行结果,来改写或直接修改整个CPSR寄存器内容或其中指定标志位内容。这些位包含N、Z、C、V、Q、GE[3:0]、E。
②J和T位的内容不可以使用MSR指令,仅能依据其他指令执行结果来修改。如果使用MSR指令并尝试修改这些位内容,结果不可预知。
③I、F和M[4:0]等位的内容在用户模式下受到保护,仅可在特权模式下改写。用户模式下可以通过执行指令进入处理器的异常模式,在异常模式下来改写这些位的内容。
④只有在安全特权模式下,才可以通过直接写CPSR模式标志位来进入监视模式。如果内核目前处于安全用户模式、非安全用户模式或非安全特权模式,此时设置进入监视模式的修改将被忽略。内核不可以将SPSR寄存器中在非安全模式下发生变化的模式标志位内容复制到CPSR。
⑤DNM(CPSR[23~20])为保留位。当改变CPSR标志或控制位时,确保不改变这些保留标志位的内容以便和未来高版本处理器兼容。
有关ARM嵌入式系统原理与应用的文章
每组GPIO端口都有两类控制寄存器,分别工作在正常模式和掉电模式。S5PV210处理器工作在正常模式下时,正常寄存器工作;进入掉电模式时,所有配置和上拉/下拉控制由掉电寄存器控制。用于控制GPIO的引脚功能,向该寄存器写入数据来设置相应引脚是输入/输出,还是其他功能。GPIO数据寄存器GPxnDAT。GPIO上拉/下拉寄存器GPxnPUD,用于控制每个端口上拉/下拉电阻的使能/禁止。......
2023-11-19
图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
ARM微处理器已经遍及工业控制、消费类电子通信系统、网络系统、无线系统各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器80%以上的市场份额。ARM嵌入式技术在联网方面的优势,为弧焊电源实现网络化控制奠定了基础。ARM9可以达到180~200MHz的工作速率,它能驱动的周边装置比ARM7多,应用范围也比较广。ATMEL公司的AT91AM9200是基于ARM9的,具有丰富的接口功能。ARM芯片通信接口能力强,一般用于焊接过程及设备人机界面系统的核心芯片。......
2023-06-26
Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。图11.2W eb服务器工作原理图我们以浏览器作为客户端,完成Web服务的工作流程讲述。Web服务器是以短连接为主,并且获取的数据到达浏览器的那一刻一定是静态的不变的。......
2023-11-19
编译完成程序后,在工程可执行程序所在文件夹下双击hello程序出现Qt版Hello World程序界面,整个Qt应用程序窗体都被一个按钮覆盖,这是程序第13行设置窗体主控件的结果。用户单击按钮后没有任何反映,这是由于没有添加QPushButton的处理函数,系统默认不做任何处理。文本界面风格的Hello World程序修改后的Hello World程序上述程序实例展示了QLabel组件的功能。Qt支持字符串使用HTML语法格式描述,Qt会解释HTML语法的含义并且显示正确的结果。......
2023-11-19
嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
Bootloader是具有引导功能的程序,在嵌入式系统中,Bootloader是系统加电后运行的第一段代码。Bootloader运行在内核之前,其作用是进行基本的初始化工作。图6.13Linux系统的典型分区结构BootLoader是严重地依赖于硬件而实现的,其任务可以划分为两个阶段:第一阶段●基本硬件设备初始化;●为第二阶段准备RAM空间;●复制Bootloader的第二阶段代码到RAM;●设置堆栈;●跳转到第二阶段的C程序入口点。......
2023-11-19
在PDA类的设备中,系统在全速运行的时候远比空闲的时候少,所以可以通过设置,使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒CPU,恢复到正常工作模式,处理响应的事件,然后再进入空闲模式。CPU空闲时,降低时钟频率;处于工作状态时,提高时钟频率以全速运行处理事务。......
2023-11-08
相关推荐