嵌入式系统是一种特殊的计算机系统,它具有嵌入性、专用性和计算机系统的基本特性。其设计目的是为了在特定的应用环境中高效地执行特定的任务。在嵌入式系统中,ARM处理器扮演着核心角色,如ARM7TDMI和ARM920T,两者分别采用了3级和5级流水线结构,以提高指令执行效率。
ARM7TDMI系列处理器具有对16位Thumb指令集的支持,同时具备在片可调试(D)、内嵌乘法器(M)和嵌入式ICE(I)功能,便于调试和开发。ARM920T同样基于哈佛架构,数据和地址空间分离,能提供更高的数据处理速度。
ARM处理器有37个寄存器,包括31个通用寄存器和6个状态寄存器。R13作为堆栈指针SP,R14作为子程序链接寄存器LR。程序状态寄存器CPSR中的N、Z、C、V分别对应负、零、进位和溢出标志,而I和F标志用于控制IRQ和FIQ中断,M[4:0]字段则决定了处理器的工作模式。
ARM处理器支持的四种堆栈类型和七种工作模式(包括用户模式、系统模式、中断模式、快速中断模式、管理模式、未定义指令异常模式和数据访问异常模式)为系统提供了灵活的处理能力。工作模式间的切换通过修改CPSR或SPSR(保存的程序状态寄存器)实现。
ARM处理器有两种指令集:ARM和Thumb,CPSR的T位标记处理器当前状态。在冯诺依曼和哈佛结构中,数据和指令的访问方式不同,前者共用接口,后者分开。
ARM9TDMI使用5级流水线技术,包括取指、译码、执行、访存和写回阶段。此外,AMBA总线架构如ASB、AHB和APB用于连接CPU、存储器和其他片上组件,实现高速和低速设备的通信。
在程序执行中,参数传递可以通过寄存器R0~R3或堆栈进行。LDR和STR指令用于数据的加载和存储,ADDS指令实现带符号的加法操作,LDMFD指令用于从堆栈中恢复寄存器值,BIC指令用于清除指定位,ADD指令用于加法操作,STMIA指令用于批量存储寄存器数据到内存并更新地址,MOV指令用于寄存器间数据复制,CMP和CMN指令比较并设置标志位,ORR指令用于按位或操作,MRS指令则用于读取SPSR到通用寄存器。
理解这些基本概念和技术对于掌握嵌入式系统的开发和调试至关重要,也是嵌入式系统工程师必备的知识。