ARM嵌入式系统结构与编程异常:处理器需要终止指令正常执行的任何情形并转向相应的处理,包括ARM内核产生的复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。流水线:流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是提高数据吞吐率(提高处理速度)。伪指令:用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。将相对于程序或相对于寄存器的地址载入寄存器中。与ADR指令相似。ADRL所加载的地址比ADR所加载的地址更宽,因为它可生成两个数据处理指令。JTAG(JointTestActionGroup,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(TestAccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。嵌入式操作系统:以应用为中心以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式实时操作系统:是指在限定的时间内对输入进行快速处理并作出响应的嵌入式操作系统。拓扑结构:网络中各个站点相互连接的形式,主要的拓扑结构有总线型拓扑,星型拓扑,环形拓扑,以及他们的混合型。ARM异常:处理器需要中止指令正常执行的任何情形并转向相应处理,包括ARM内核产生复位,取指或存储访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。计算机系统的三大领域:服务器、桌面、嵌入式。嵌入式系统的发展趋势:1.随着信息化与数字化的发展,嵌入式设备进行网络互联是未来发展趋势。2.优化嵌入式系统软硬件内核,提高系统运行速度,降低功耗和硬件成本。3.指令级的并行计算技术将引领嵌入式微处理器。4.嵌入式微处理器将会向多技术发展。5.嵌入式技术将引领信息时代。ARM7和ARM9的区别:1.ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺伊曼结构;ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。2.arm7没有mmu,arm720T是MMU的;arm9是有mmu的,arm940T只有Memoryprotectionunit.不是一个完整的MMU。3.ARM7TDMI提供了非常好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。4.ARM9与ARM7的比较及优化冯诺依曼结构:单总线结构。采用一种总线来以程序和数据进行存取,不可能同时对程序存储器和数据存储器进行访问。ARM7系列微处理器基于冯诺依曼结构,为低功耗的32为RISC处理器,适用于对价位和功耗要求较高的消费类应用。ARM7系列微处理器具有如下特点:1.具有嵌入式ICE-RT逻辑,调试开发方便。2.更够提供0.9MIPS/MHz的三级流水线结构。3.代码密度高并兼容16位的Thumb指令集。4.对操作系统的支持广泛,包括WindowsCE\Linux\PalmOS等。5.主频最高可达130MIPS.高速的运算处理能力能胜任绝大多数的复杂应用。ARM9系列微处理器基于哈佛结构:成本高,在高性能和低功耗特性方面提供最佳的性能。具有以下特点:1.5级流水线,指令执行效率更高2.提供1.1MIPS/MHz处理速度。3.具有独立的数据Cache和指令Cache,具有更高的指令和数据处理能力。4.支持32位ARM指令集和16位Thumb指令集。5.支持32位的高速AMBA总线接口。6.全性能的MMU,支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统。哈佛结构:哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个。双总线结构:访问程序存储器和访问数据存储器采用两套相互独立的总线结构哦,即程序访问总线和数据访问总线。ARM10系列微处理器具有高性能、低功耗的特点。ARM10系列微处理器的主要特点如下1.6级指令流水线,指令执行效率更高。2.支持32位的高速AMBA总线接口。3.主频最高可达400MIPS,内嵌并行读写操作系统部件。4.支持32位ARM指令集和16位Thumb指令集。5.支持数据Cache和指令Cache,具有更高的指令和数据处理能力。、支持VFP10浮点处理协处理器。七种模式:1.用户模式(usr)ARM处理器正常的程序执行状态。2.FIQ模式(快速中断模式)用于高速数据传输或通道处理。3.IRQ模式(普通中断模式)用于通用的中断处理。4.SVC模式(管理模式)开机首先进入管理模式。5.终止模式(abt)用于虚拟存储及存储保护。6.未定义指令异常模式(und)当出现未定义指令终止时进入该模式。7.系统模式(sys)运行具有特权的操作系统任务。除了用户模式外其余的都是特权模式。常见的几种寻址方式及其功能:1.立即数寻址:MOVAX,10H2.寄存器直接寻址:MOVAX,【2000H】3.寄存器移位寻址:MOVR0,R2,LSL#34.寄存器间接寻址:MOVAX,【BX】5.基址变址寻址:MOVAX,【BX】【DI】MOVAX,【BX+DI】6.多寄存器寻址:LDMIAR0,{R1,R2,R3,R4}7.相对寻址:MOVAX,MASK【BX】【SI】MOVAX,MASK【BX+SI】MOVAX,【MASK+BX+SI】8.堆栈寻址:LDMFDSP!,{R1-R7,LR}STMFDSP!,{R1-R7,LR}过程调用标准ATPCS规定子程序调用过程中寄存器的使用规则,数据栈的使用规则及参考数的传递规则,这些规则为嵌入式C语言和会变程序之间相互调用提供了数据。R0-R7未分组寄存器,R8-R14分组寄存器,R15程序寄存器PCCPSR:中断禁止位:当I=1时禁止IRQ中断,当F=1时禁止FIQ中断。T控制位:T控制位用于控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。对于ARMV4以更高版本的T系列ARM处理器,T控制位含义如下:T=0表示执行ARM指令T=1表示执行Thumb指令对于ARMV5以及更高版本的非T系列处理器,T控制位的含义如下T=0表示执行ARM指令T=1表示强制下一条执行的指令产生未定指令中断ob10000用户模式0b10001FIQ模式0b10010IRQ模式0b10011管理模式0b10111终止模式0b11011未定义指令异常模式0b111111系统模式两种状态:ARM状态:此时处理器执行32位的字对齐的ARM指令。Thumb状态:此时处理器执行16位的半字对其的Thumb指令。存储器管理单元MMV两个主要功能:A:将虚拟地址转换成物理地址。B:对存储器的访问权限的控制。编程:内存数据区定义如下:Src:.long1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10.long1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10Src_Num:.long32Dst:.long0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.long0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0请用ARM指令编写程序,实现将数据从源数据区Src拷贝到目标数据区Dst,要求以6个字为单位进行块拷贝,如果不足6个字时,则以字为单位进行拷贝(其中数据区Src_Num处存放源数据的个数)。答:解:程序设计思路:每进行6个字的批量拷贝前,先判断SRC_NUM是否大于6,是则进行6字的批量拷贝并将SRC_NUM减去6,否则则进行单字的拷贝,在使用寄存器组时还要注意保存现场。在ARM集成开发环境下编程:/*----------------------------------------------------------------------------------------********寄存器使用说明***************************R0:源数据区指针***R1:目标数据区指针***R2:单字拷贝字数***R3:块拷贝字数***R5~~R10:批量拷贝使用的寄存器组***SP:栈指针*---------------------------------------------------------------------------------------------*/SRC_NUMEQU32;设置要拷贝的字数AREACopy_Data,CODE,READONLY声明代码段Copy_DataENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR0,=Src;R0=源数据区指针LDRR1,=Dst;R1=目标数据区指针MOVR2,#SRC_NUM;R2=单字拷贝字数MOVSP,#0x9000CMPR2,#6BLSCopy_Words;R2=6,则拷贝单字STMFDSP!,{R5-R10};保存将要使用的寄存器组R5-R10;进行块拷贝,每次拷贝6个字Copy_6WordLDMIAR0!,{R5-R10}STMIAR1!,{R5-R10}SUBSR2,R2,#6BHICopy_6Word;R26LDMFDSP!,{R5-R10};恢复寄存器组R5-R10;将剩余的数据区以字为单位拷贝Copy_Words;拷贝剩余字节LDRR3,[R0],#4STRR3,[R1],#4SUBSR2,R2,#1BNECopy_WordStopBStopLTORGSrcDCD1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10DCD1,2,3,4,5,6,7,8,9,0xA,0xB,0xC,0xD,0xE,0xF,0x10DstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0END将一个存放在【R1:R0】中的64位数据(其中R1中存放高32位)的高位和低位对称换位,如第0位与第63位调换,第1位与第62位调换,第2位与第61位调换,…,第31位与第32位调换。答:解:程序设计思路:对于单个32位寄存器的对称换位操作,我们可以采用移位操作的方法,通过依次从低位取出目标寄存器的各个位,再将其放置到目标寄存器的最低位,然后通过移位操作,送入相应位。对于【R1:R0】到【R3:R2】的64位对称换位操作,我们可以采用R1-》R2和R0-》R3的两个32位的换位操作来完成。在ARM集成开发环境下编程:/*----------------------------------------------------------------------------------------********寄存器使用说明***************************R1,R0:源数据***R3,R2:目标数据***R4:计数器,初值为32,递减至0*---------------------------------------------------------------------------------------------*/AREABit_Exch,CODE,READONLY;声明代码段Bit_ExchENTRY;标识程序入口CODE32;声明32位ARM指令STARTLDRR0,=0x55555555;输入源数据MOVR3,#0;目标数据MOVR5,#0;数据临时缓冲区MOVR4,#32;计数器Bitex_H32ANDR5,R0,#1;取出源数据的最低位送R5ORRR3,R5,R3,LSL#1;将目标数据左移一位,并将取出的数据;送入