版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发嵌入式系统体系结构与开发嵌入式处理器2014级级 研究生研究生嵌入式系统体系结构与开发嵌入式系统体系结构与开发ARM 指令系统p ARMARM体系的结构版本体系的结构版本20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM体系的结构版本nARM体系结构共有6个版本,版本号1-6n指令集功能不断扩大n特定功能:nT T支持支持ThumbThumb指令集指令集nM M支持长乘法指令支持长乘法指令nE E支持增强型支持增强型DSPDSP指令指令nJ Jjavajava加速器加速器nS
2、IMDSIMDARMARM媒体功能扩展媒体功能扩展20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM微处理器工作模式与寄存器nARM微处理器指令集nARMARMnTHUMBTHUMBnARM微处理器工作模式n用户模式用户模式n特权模式(系统模式与异常模式)特权模式(系统模式与异常模式)n模式切换模式切换n寄存器组织n寄存器定义寄存器定义n模式与寄存器模式与寄存器20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM与THUMBn从编程的角度看,ARM微处理器有两种指令集,可在两种指令集之间切换:nARMARM指令集,处理器
3、执行指令集,处理器执行3232位的字对齐的位的字对齐的ARMARM指令;指令;nThumbThumb指令集,处理器执行指令集,处理器执行1616位的、半字对齐位的、半字对齐ThumbThumb指令。指令。nTHUMBTHUMB指令是指令是ARMARM指令的子集指令的子集n可以相互调用,只要遵循一定的调用规则可以相互调用,只要遵循一定的调用规则nThumb指令与ARM指令的时间效率和空间效率关系为:n存储空间约为存储空间约为ARMARM代码的代码的60607070n指令数比指令数比ARMARM代码多约代码多约30304040n存储器为存储器为3232位时,位时,ARMARM代码比代码比Thumb
4、Thumb代码快约代码快约4040n存储器为存储器为1616位时,位时,ThumbThumb比比ARMARM代码快约代码快约40405050n使用使用ThumbThumb代码,存储器的代码,存储器的功耗功耗会降低约会降低约303020142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM与THUMB指令n指令切换方法nARMARM指令集和指令集和ThumbThumb指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,n在开始执行代码时,应该处于在开始执行代码时,应该处于ARMARM指令集指令集n指令集切换分状态位设置和异常处理两种指令集切换分状态位设置
5、和异常处理两种n进入Thumb指令n当当操作数寄存器的状态位(位操作数寄存器的状态位(位0 0)为)为1 1时时,采用执行,采用执行BXBX指令的方法,使微处理指令的方法,使微处理器从器从ARMARM指令集切换到指令集切换到ThumbThumb指令集指令集n当处理器处于当处理器处于ThumbThumb指令时,发生异常(如指令时,发生异常(如IRQIRQ、FIQFIQ、UndefUndef、AbortAbort、SWISWI等),则异常处理返回时,自动切换到等),则异常处理返回时,自动切换到ThumbThumb指令指令。n切换到ARM指令n当当操作数寄存器的状态位(位操作数寄存器的状态位(位0
6、0)为)为0 0时时,执行,执行BXBX指令时可以使微处理器从指令时可以使微处理器从ThumbThumb切换到切换到ARMARMn在处理器进行异常处理时,把在处理器进行异常处理时,把PCPC指针放入异常模式链接寄存器中,并从异常指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到向量地址开始执行程序,也可以使处理器切换到ARMARM。20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM微处理器运行模式User模式模式用户程序不能访问有些受保护的资源用户程序不能访问有些受保护的资源只能通过异常的形式来改变只能通过异常的形式来改变CP
7、UCPU的当前运行模式的当前运行模式特权模式特权模式可以存取可以存取系统中的系统中的任何资源任何资源System模式模式系统模式系统模式与与UserUser模式的运行环境一样模式的运行环境一样但是它可以不受任何限制的访问任何资源但是它可以不受任何限制的访问任何资源该模式主要用于运行系统中的一些特权任务该模式主要用于运行系统中的一些特权任务FIQ模式模式IRQ模式模式Supervisor模式模式Abort模式模式Undefined模式模式异常模式异常模式:主要是在外部中断或者程序:主要是在外部中断或者程序执行非法操作时会触发执行非法操作时会触发用户模式用户模式20142014级级 研究生嵌入式系
8、统体系结构与开发研究生嵌入式系统体系结构与开发处理器模式n用户模式。nusrusr:ARMARM处理器正常的程序执行状态处理器正常的程序执行状态n特权模式(异常模式)nfiqfiq:用于高速数据传输或通道处理:用于高速数据传输或通道处理nirqirq:用于通用的中断处理:用于通用的中断处理nsvcsvc:操作系统使用的保护模式:操作系统使用的保护模式nabtabt:用于虚拟存储及存储保护:用于虚拟存储及存储保护nundund:当出现未定义指令终止时进入该模式:当出现未定义指令终止时进入该模式nsyssys:运行具有特权的操作系统任务:运行具有特权的操作系统任务ARM微处理器运行模式nARM处理
9、器运行模式图20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM微处理器的指令系统 nARM微处理器的指令集是加载/存储型的n指令集仅能处理寄存器中的数据,指令集仅能处理寄存器中的数据,n处理结果都要放回寄存器中处理结果都要放回寄存器中n对系统存储器的访问则需要通过专门的加载对系统存储器的访问则需要通过专门的加载/ /存储指令来完成。存储指令来完成。nARM微处理器的指令集可以分为六大类 n跳转指令跳转指令n数据处理指令数据处理指令n程序状态寄存器(程序状态寄存器(PSRPSR)处理指令)处理指令n加载加载/ /存储指令存储指令n协处理器指令和异常产生指令协
10、处理器指令和异常产生指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发nOpCode指令助记符nCond:Cond:执行条件执行条件nS:S:是否影响状态寄存器是否影响状态寄存器nRd:Rd:目标寄存器目标寄存器nRn:Rn:第第1 1个操作数寄存器个操作数寄存器nOperand2:Operand2:第第2 2个个操作数操作数nARM指令基本语法格式S,S,n例子nLDR LDR R0R0,R1R1 ; ;无条件执行无条件执行nB BEQEQ LOOPLOOP;等于条件;等于条件nADDADDS S R2 R2,R2,#1R2,#1;影响状态位,;影响状态位
11、,R2-R2+1R2-R2+1指令编码格式20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令编码结构条件域20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令编码的条件域n当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。n每一条ARM指令包含4位的条件码,位于指令的最高4位31:28。n条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀E
12、Q变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令编码的条件域n条件编码条件码条件码后缀后缀标标 志志含含 义义0000EQZ置位置位相等相等0001NEZ清零清零不相等不相等0010CSC置位置位无符号数大于或等于无符号数大于或等于0011CCC清零清零无符号数小于无符号数小于0100MIN置位置位负数负数0101PLN清零清零正数或零正数或零0110VSV置位置位溢出溢出0111VCV清零清零未溢出未溢出20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结
13、构与开发ARM指令编码的条件域n条件编码条件码条件码后缀后缀标标 志志含含 义义1001LSC清零清零Z置位置位无符号数小于或等于无符号数小于或等于1010GEN等于等于V带符号数大于或等于带符号数大于或等于1011LTN不等于不等于V带符号数小于带符号数小于1100GTZ清零且(清零且(N等于等于V)带符号数大于带符号数大于1101LEZ置位或(置位或(N不等不等于于V)带符号数小于或等于带符号数小于或等于1110AL忽略忽略无条件执行无条件执行20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARMARM微处理器指令表微处理器指令表-1-1助记符助记符指令功
14、能描述指令功能描述ADC带进位加法指令带进位加法指令ADD加法指令加法指令AND逻辑与指令逻辑与指令B跳转指令跳转指令BIC位清零指令位清零指令BL带返回的跳转指令带返回的跳转指令BLX带返回和状态切换的跳转指令带返回和状态切换的跳转指令BX带状态切换的跳转指令带状态切换的跳转指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARMARM微处理器指令表微处理器指令表-2-2助记符助记符指令功能描述指令功能描述CDP协处理器数据操作指令协处理器数据操作指令CMN比较反值指令比较反值指令CMP比较指令比较指令EOR异或指令异或指令LDC存储器到协处理器的数据传输
15、指令存储器到协处理器的数据传输指令LDM加载多个寄存器指令加载多个寄存器指令LDR存储器到寄存器的数据传输指令存储器到寄存器的数据传输指令MCRARM寄存器到协处理器寄存器数据传输寄存器到协处理器寄存器数据传输20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARMARM微处理器指令表微处理器指令表-3-3助记符助记符指令功能描述指令功能描述MLA乘加运算指令乘加运算指令MOV数据传送指令数据传送指令MRC协处理器寄存器到协处理器寄存器到ARM寄存器数据传输寄存器数据传输MRS传送传送CPSR或或SPSR的内容到通用寄存器的内容到通用寄存器MSR传送通用寄存器到
16、传送通用寄存器到CPSR或或SPSR的指令的指令MUL32位乘法指令位乘法指令MLA32位乘加指令位乘加指令MVN数据取反传送指令数据取反传送指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARMARM微处理器指令表微处理器指令表-4-4助记符助记符指令功能描述指令功能描述ORR逻辑或指令逻辑或指令RSB逆向减法指令逆向减法指令RSC带借位的逆向减法指令带借位的逆向减法指令SBC带借位减法指令带借位减法指令STC协处理器寄存器写入存储器指令协处理器寄存器写入存储器指令STM批量内存字写入指令批量内存字写入指令STR寄存器到存储器的数据传输指令寄存器到存储器
17、的数据传输指令SUB减法指令减法指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARMARM微处理器指令表微处理器指令表-5-5助记符助记符指令功能描述指令功能描述SWI软件中断指令软件中断指令SWP交换指令交换指令TEQ相等测试指令相等测试指令TST位测试指令位测试指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM寻址方式nARM寻址方式n立即寻址立即寻址 n寄存器寻址寄存器寻址 n寄存器间接寻址寄存器间接寻址 n基址变址寻址基址变址寻址 n多寄存器寻址多寄存器寻址 n相对寻址相对寻址 n堆栈寻址堆栈寻址2014
18、2014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式nARM指令系统支持如下几种常见的寻址方式:n立即寻址立即寻址 n寄存器寻址寄存器寻址 n寄存器间接寻址寄存器间接寻址 n基址变址寻址基址变址寻址 n多寄存器寻址多寄存器寻址 n相对寻址相对寻址 n堆栈寻址堆栈寻址 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-立即寻址 n立即寻址n 操作数本身就在指令中给出,只要取出指令也就取到了操作数。操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数。这个操作数被称为立即数。n
19、 例如以下指令:例如以下指令: ADD R0ADD R0,R0R0,1 1/ /* *R0R0R0R01 1* */ / ADD R0 ADD R0,R0R0,0 x3f0 x3f/ /* *R0R0R0R00 x3f0 x3f* */ /n立即操作数n 在以上两条指令中,在以上两条指令中,第二个源操作数即为立即数第二个源操作数即为立即数,要求以,要求以“”为前缀,对于以十六进制表示的立即数,还要求在为前缀,对于以十六进制表示的立即数,还要求在“”后加上后加上“0 x0 x”。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-寄存器寻址
20、n寄存器寻址n 利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:指令: ADDR0,R1,R2/*R0R1R2*/n 该指令的执行效果是将寄存器该指令的执行效果是将寄存器R1R1和和R2R2的内容相加,其结果存放在的内容相加,其结果存放在寄存器寄存器R0R0中。中。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-寄存器间接寻址 n寄存器间接寻址n 以寄存器中
21、的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ADD R0,R1,R2/*R0R1R2*/ LDRR0,R1/*R0R1*/ STRR0,R1/*R1R0*/n 第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中;n 第二条指令将以R1的值为地址的存储器中的数据传送到R0中。n 第三条指令将R0的值传送到以R1的值为地址的存储器中。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-基址变址寻址 n基址变址寻址n将基址寄存器的内容与指令中给出的地址偏移量相加,从而得
22、到一将基址寄存器的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:LDR R0,R1,4;R0R14LDR R0,R1,4!;R0R14、R1R14LDR R0,R1 ,4;R0R1、R1R14LDR R0,R1,R2;R0R1R2n在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。n在第二条指令中,将寄存器R1的内容加上
23、4形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。n在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。n在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-多寄存器寻址 n多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:LDMIA R0,R1,R2,R3,R
24、4 ;R1R0;R2R04;R3R08;R4R012n该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。 STMIA R0!,R1-R4 ;R0R1 ;R0+4R2 ;R08 R3 ;R012 R420142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-相对寻址 n与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:BL NEXT;跳转到子
25、程序NEXT处执行NEXTMOVPC,LR ;从子程序返回 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方式-堆栈寻址 n堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。n当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM指令的寻址方
26、式-堆栈寻址n堆栈的生成方式:n递增堆栈(递增堆栈(Ascending StackAscending Stack)当堆栈由低地址向高地址生成时,)当堆栈由低地址向高地址生成时,称为递增堆栈;称为递增堆栈;n递减堆栈(递减堆栈(Decending StackDecending Stack),当堆栈由高地址向低地址生成),当堆栈由高地址向低地址生成时,称为递减堆栈时,称为递减堆栈。n四种类型的堆栈工作方式 :n满递增堆栈满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地:堆栈指针指向最后压入的数据,且由低地址向高地址生成。址生成。n满递减堆栈满递减堆栈:堆栈指针指向最后压入的数据,且由高地址
27、向低地:堆栈指针指向最后压入的数据,且由高地址向低地址生成。址生成。n空递增堆栈空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。低地址向高地址生成。n空递减堆栈空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成高地址向低地址生成 20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM伪指令nARM伪指令n数据定义伪指令数据定义伪指令n控制伪指令控制伪指令n地址加载伪指令地址加载伪指令n声明引用声明引用n段域伪指令段域伪
28、指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM的伪指令n定义数据伪指令nDCBDCB分配连续的分配连续的字节存储单元字节存储单元,并设置初值,并设置初值nDCW/DCWUDCW/DCWU分配连续的分配连续的半字存储单元半字存储单元,并设置初值,并设置初值nDCDDCD/DCDU/DCDU分配连续的分配连续的字存储单元字存储单元,并设置初值,并设置初值nDCQ/DCQUDCQ/DCQU分配分配8 8字节为块字节为块存储单元,并设置初值存储单元,并设置初值nDCFS/DCFSUDCFS/DCFSU为为单精度浮点数单精度浮点数分配连续存储单元,并设置初值
29、分配连续存储单元,并设置初值nDCFD/DCFDUDCFD/DCFDU为为双精度浮点数双精度浮点数分配连续的字存储单元,并设置初值分配连续的字存储单元,并设置初值nSPACESPACE分配一块连续的存储单元分配一块连续的存储单元nFIELDFIELD分配一块连续的存储单元分配一块连续的存储单元nMAPMAP定义一个结构化的内存表的首地址定义一个结构化的内存表的首地址20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM的伪指令n控制伪指令nIF IF 指令序列指令序列 ELSE ELSE 指令序列指令序列 ENDIF ENDIF 条件编译指令条件编译指令nWH
30、ILE WENDWHILE WEND 条件循环执行指令条件循环执行指令n地址加载伪指令nADRADR 小范围的地址读取小范围的地址读取nADRLADRL 中范围的地址读取中范围的地址读取nLDR LDR 大范围的地址读取大范围的地址读取nNOPNOP20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM的伪指令n声明引用nEQUEQU定义字符名称定义字符名称nEXPORTEXPORT声明全局标号声明全局标号nIMPORTIMPORT在其他源文件中定义标号在其他源文件中定义标号nEXTERNEXTERN在其他源文件中定义标号在其他源文件中定义标号nGET(GET
31、(或或Include)Include)包含源文件指令包含源文件指令nINCBININCBIN包含目标文件和数据文件包指令包含目标文件和数据文件包指令nRNRN定义寄存器别名定义寄存器别名nROUTROUT定义局部变量的作用范围定义局部变量的作用范围20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM的伪指令n段域伪指令nFILEDFILED和和MAP MAP 结构化内存表中的数据域指令结构化内存表中的数据域指令nAREAAREA定义代码段和数据段指令定义代码段和数据段指令nCODECODE:代码段:代码段nDATADATA:数据段:数据段nREADONLYR
32、EADONLYnREADWRITEREADWRITEnALIGNALIGNnCOMMON:COMMON:通用段通用段nALIGNALIGN对齐指令对齐指令nCODE16CODE16和和CODE32CODE32指示指令序列类型指令指示指令序列类型指令nENTRYENTRY指定入口点指令指定入口点指令nENDEND应用程序结尾指令应用程序结尾指令20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发程序举例ENTRYENTRYstartMOV R0,#0 xFFMOV R0,#0 xFFMOV R1,#0 xEF000000MOV R1,#0 xEF000000MOV
33、R2,#0 x2F000000MOV R2,#0 x2F000000MOV R3,#0 xFFMOV R3,#0 xFFADD R4,R2,R1ADD R4,R2,R1;不改变状态位;不改变状态位,R4=0X1E000000,R4=0X1E000000ADDADDS S R R5,R2,R15,R2,R1;改变状态位改变状态位 CPSR=0 x2000003d,CPSR=0 x2000003d,结果不变结果不变ADCADCS S R R6,R2,R16,R2,R1; ; 结果结果R4=0X1E000001,R4=0X1E000001,SUB R4,R2,R1SUB R4,R2,R1;不改变状态
34、位;不改变状态位, R4=0X40000000, R4=0X40000000SUBSUBS S R R4,R2,R14,R2,R1; ; 改变状态位改变状态位 CPSR=0 x0000003dCPSR=0 x0000003dRSB R5,R2,R1RSB R5,R2,R1; R5=0XC0000000; R5=0XC0000000RSBRSBS S R5,R2,R1 R5,R2,R1; ;改变状态位改变状态位 CPSR=0 xA000003dCPSR=0 xA000003dSBC R6,R1,R2SBC R6,R1,R2; R6=0XC0000000; R6=0XC0000000RSC R7,
35、R1,R2RSC R7,R1,R2;R7=0 x40000000,;R7=0 x40000000,不改变状态位不改变状态位 stop B stopENDEND2014级级 研究生研究生嵌入式系统体系结构与开发嵌入式系统体系结构与开发2 GPIOI/O定义nARMARM中的中的I/OI/O接口定义接口定义n24102410硬件上的引线硬件上的引线n系统上的可编程寄存器系统上的可编程寄存器n程序上的应用程序上的应用n各类接口的定义各类接口的定义n接口的主要功能接口的主要功能n硬件上信号线硬件上信号线n可编程硬件寄存器可编程硬件寄存器n应用程序的设计应用程序的设计n各类接口的程序组织各类接口的程序组
36、织n系统部分系统部分n公共部分公共部分n个性部分个性部分20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发ARM中的I/O接口定义nARMARM中的中的I/OI/O接口定义接口定义n24102410硬件上的引线硬件上的引线n系统上的可编程寄存器系统上的可编程寄存器n程序上的应用程序上的应用20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发2410硬件上的引线n有有117117个通用的个通用的IOIO接口接口nPROT A(23)nPROT B(11)nPROT C(16)nPROT D(16)nPROT E(16)nPROT F(
37、8)nPROT G(16)nPROT H(11)nARMARM公司将每个公司将每个IOIO接口作成复用信号线接口作成复用信号线n见图见图Mini2410 P1-3Mini2410 P1-3n每个应用可以根据实际情况选用每个应用可以根据实际情况选用20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port A组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port B组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port C组的引脚功能20142014级级 研究生嵌入式系
38、统体系结构与开发研究生嵌入式系统体系结构与开发Port D组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port E组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port F组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port G组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发Port H组的引脚功能20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发系统上的可编程寄存器n可
39、编程的几种寄存器可编程的几种寄存器n 接口配置寄存器接口配置寄存器PORT CONFIGURATION REGISTER (GPACON-GPHCON)n 接口数据寄存器接口数据寄存器PORT DATA REGISTER (GPADAT-GPHDAT)n 接口上拉寄存器接口上拉寄存器PORT PULL-UP REGISTER (GPBUP-GPHUP)n 杂项寄存器杂项寄存器MISCELLANEOUS CONTROL REGISTERn 外部中断控制寄存器外部中断控制寄存器EXTERNAL INTERRUPT CONTROL REGISTER (EXTINTN)n 电源关闭模式和电源关闭模式和
40、I/OI/O接口接口POWER_OFF MODE AND I/O PORTSn 通用状态寄存器通用状态寄存器GENERAL STATUS REGISTER (GSTATUSn)20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发系统上的可编程寄存器n可编程的几种寄存器地址可编程的几种寄存器地址GPXn每组有四个可编程寄存器每组有四个可编程寄存器:CON,DAT,UP,RESERVED:CON,DAT,UP,RESERVEDn地址连续地址连续:00,04,08,0C:00,04,08,0Cn分组寄存器编址分组寄存器编址nPort A 0X5600 0000-0X56
41、00 000CnPort B 0X5600 0010-0X5600 001CnPort C 0X5600 0020-0X5600 002CnPort D 0X5600 0030-0X5600 003CnPort E 0X5600 0040-0X5600 004CnPort F 0X5600 0050-0X5600 005CnPort G 0X5600 0060-0X5600 006CnPort H 0X5600 0070-0X5600 007C20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口配置寄存器 (GPACON)0X56000000(GPACON)0
42、X56000000只有输出地址线20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口配置寄存器 (GP(GPB-HB-HCON)0X56000010CON)0X56000010输入输出专用信号线保留20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口数据寄存器接口数据寄存器(GPADAT-GPHDAT) 0X560000(GPADAT-GPHDAT) 0X560000X X4 4n接口数据寄存器定义接口数据寄存器定义n引脚被定义为输出时引脚被定义为输出时, ,数据寄存器作为数据寄存器作为输出锁存输出锁存n引脚被定义为输入时引脚
43、被定义为输入时, ,数据寄存器作为数据寄存器作为输入锁存输入锁存n引脚被定义为专用功能时引脚被定义为专用功能时, ,数据寄存器根据功能线定义数据寄存器根据功能线定义n注意注意: :n输出数据是写入的输出数据是写入的控制命令或数据控制命令或数据n输入数据是读入的输入数据是读入的状态或数据状态或数据20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口上拉寄存器接口上拉寄存器 (GPBUP-GPHUP) (GPBUP-GPHUP) X560000X560000X X8 8n上拉寄存器上拉寄存器n当相应的位为当相应的位为=0=0时时, ,表示该位上拉信号使能表示该位上
44、拉信号使能n当相应的位为当相应的位为=1=1时时, ,表示该位上拉信号无效表示该位上拉信号无效n注意注意n上拉是为引脚提供电流上拉是为引脚提供电流n如果不使用上拉如果不使用上拉, ,需要外接上拉电压来提供电流需要外接上拉电压来提供电流20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口杂项寄存器接口杂项寄存器 (MISCELLANEOUS) (MISCELLANEOUS) X560000X560000808020142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发程序上的定义n定义寄存器名和端口地址定义定义寄存器名和端口地址定义n24
45、10addr.h2410addr.hn初始化寄存器端口初值初始化寄存器端口初值n2410lib.C2410lib.Cnvoid port_init(void)void port_init(void)n正常调用关系正常调用关系1.1.Main()Main()2.2.SysInit()SysInit()nport_init()port_init()3.3.APP_TEST()APP_TEST()20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发系统初始化void sys_init()void sys_init() change_clock_divider(1,1);
46、change_clock_divider(1,1);/ 1:2:4/ 1:2:4change_value_MPLL(M_MDIV, M_PDIV, M_SDIV);change_value_MPLL(M_MDIV, M_PDIV, M_SDIV); / Fin=12MHz FCLK=202.8MHz/ Fin=12MHz FCLK=202.8MHzdelay(0);delay(0);/ adjust the delay count/ adjust the delay countport_init();port_init();interrupts_init();interrupts_init()
47、;uart_init(PCLK, 115200, UART0);uart_init(PCLK, 115200, UART0);uart_init(PCLK, 115200, UART1);uart_init(PCLK, 115200, UART1);uart_init(PCLK, 115200, UART2);uart_init(PCLK, 115200, UART2);#ifdef CLK124_200M#ifdef CLK124_200Mchange_value_MPLL(88,1,1);change_value_MPLL(88,1,1);/ Fin=12MHz FCLK=192MHz/
48、Fin=12MHz FCLK=192MHzuart_init(192000000/4, 115200, UART0);uart_init(192000000/4, 115200, UART0);uart_init(192000000/4, 115200, UART1);uart_init(192000000/4, 115200, UART1);#endif#endifuart_select(UART1);uart_select(UART1);print_infor();print_infor();delay(500);delay(500); 20142014级级 研究生嵌入式系统体系结构与开发
49、研究生嵌入式系统体系结构与开发port_init(void)void port_init(void)void port_init(void) /CAUTION:Follow the configuration order for setting the ports. /CAUTION:Follow the configuration order for setting the ports. / 1) setting control register (GPnCON) / 1) setting control register (GPnCON) / / * * (bitn) - means th
50、is pin not use on circuit, and set as default function (bitn) - means this pin not use on circuit, and set as default function / 2) configure pull-up resistor (GPnUP) / 2) configure pull-up resistor (GPnUP) / 3) setting value (GPnDAT) / 3) setting value (GPnDAT) /= PORT A GROUP /= PORT A GROUPrGPACO
51、N = 0 x5fbfff;rGPACON = 0 x5fbfff; /= /=* * PORT B GROUP PORT B GROUP /Ports : GPB10 GPB9 GPB8 GPB7 GPB6 GPB5 GPB4 GPB3 GPB2 /Ports : GPB10 GPB9 GPB8 GPB7 GPB6 GPB5 GPB4 GPB3 GPB2 GPB1 GPB0GPB1 GPB0 /Signal : GPB10 GPB9 GPB8 GPB7 GPB6 DIS_OFF L3CLOCK L3DATA /Signal : GPB10 GPB9 GPB8 GPB7 GPB6 DIS_OF
52、F L3CLOCK L3DATA L3MODE PWM2 PWM1L3MODE PWM2 PWM1 /Setting: Output Output Output Output Output Output Output Output /Setting: Output Output Output Output Output Output Output Output Output TOUT1 TOUT0 Output TOUT1 TOUT0 /Binary : 01, 01 /Binary : 01, 01 * *01, 01, * *01 01 * *01, 01 01, 01 01, 01, 0
53、1 01, 01 01, 10 1010 10 rGPBCON = 0 x155559;rGPBCON = 0 x155559;20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发各类接口的定义n各类接口的定义各类接口的定义n接口的主要功能接口的主要功能n硬件上信号线硬件上信号线n可编程硬件寄存器可编程硬件寄存器n应用程序的设计应用程序的设计20142014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发接口功能n接口功能接口功能n系统板上信号指示灯系统板上信号指示灯n三个指示灯接在锁存器的三个指示灯接在锁存器的D2-D0D2-D0上上20142
54、014级级 研究生嵌入式系统体系结构与开发研究生嵌入式系统体系结构与开发电路引脚n电路关系电路关系CPLD-138-CPLD-138-或门或门-8D-8D输出锁存器输出锁存器nCPLDCPLD选通信号线选通信号线EXCS:A25-A21(01000)EXCS:A25-A21(01000)n3-83-8译码器片选使能接译码器片选使能接EXCS,EXCS,n3-83-8译码器译码信号译码器译码信号ABC:A20-A18(110),Y6ABC:A20-A18(110),Y6输出输出n输出锁存器的数据接输出锁存器的数据接LEDLED负端负端, ,正端接上拉电阻正端接上拉电阻nY6Y6和和WEWE信号或作用输出锁存器信号或作用输出锁存器nLEDLED属于无条件输出属于无条件输出, ,输出地址输出地址nA25-A18=01 0001 1000 0000 0000 0000 0000n0X21180000201420
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石河子大学《应用人工智能》2021-2022学年期末试卷
- 石河子大学《数字电路》2022-2023学年期末试卷
- 石河子大学《口腔颌面外科学二》2021-2022学年第一学期期末试卷
- 石河子大学《编译原理》2022-2023学年第一学期期末试卷
- 沈阳理工大学《数学建模与应用》2023-2024学年第一学期期末试卷
- 沈阳理工大学《口译理论与实践》2022-2023学年第一学期期末试卷
- 沈阳理工大学《移动终端应用程序开发》2022-2023学年期末试卷
- 沈阳理工大学《电器学》2023-2024学年期末试卷
- 沈阳理工大学《Python程序设计》2021-2022学年期末试卷
- 国际贸易综合技能实训中对合同订立报告
- 《托育服务政策法规与职业伦理》全套教学课件
- 期末模拟练习(试题)(含答案)2024-2025学年二年级上册数学苏教版
- 教学计划(教学计划)-2024-2025学年大象版三年级科学上册
- 2024年房产中介佣金提成协议书范本
- 某港口码头工程施工组织设计
- 职业技术学校老年保健与管理专业(三年制)人才培养方案
- 2024年秋季人教版新教材七年级上册语文全册教案(名师教学设计简案)
- 有子女民政局常用协议离婚书格式2024年
- 中国介入医学白皮书(2021 版)
- 2024中华人民共和国农村集体经济组织法详细解读课件
- 代运营合作服务协议
评论
0/150
提交评论