好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式系统讲义.docx

20页
  • 卖家[上传人]:ni****g
  • 文档编号:533583792
  • 上传时间:2023-08-28
  • 文档格式:DOCX
  • 文档大小:119.17KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第1章 嵌入式系统概述1. 嵌入式系统定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系 统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统2. 嵌入式处理器分类:嵌入式微处理器;嵌入式微控制器;嵌入式DSP处理器;嵌入式片上系统(SOC)3. 常见嵌入式操作系统嵌入式 Linux、Win CE、VxWorks、Nucleus> eCos、以 C/OS-II、uITRON、QNX4. 嵌入式实时操作系统的特性:切换时间和中断延迟时间确定优先级中断和调度抢占式调度同步第3章ARM7体系结构1. ARM处理器为32位RISC芯片RISC处理器的特点大的、统一的寄存器文件;装载/保存结构,数据处理操作只针对寄存器的内容,而不直接对存储器进行操作简单的寻址模式统一和固定长度的指令域,简化了指令的译码2. ARM7TDMI-S 含义T-支持高密度16位的Thumb指令集D-支持片上调试M-支持64位乘法I-支持EmbededICE观察硬件S-ARM7TDMI 的可综合(synthesizable)版本(软核)3. ARM7TDMI的流水线分3级,分别为:取指◊译码◊执行流水线上各指令的地址流水线工位描述ARM指令集Thumb指令集PCPC取指指令从存储器中取出PC-4PC-2译码对指令使用的寄存器进行译码PC-8PC-4执行从寄存器组中读出寄存器,执行移 位和ALU操作,寄存器被写回到寄 存器组中4. 计算机结构说明:“冯诺依曼”结构:把代码作为一种特殊的数据来操作,指令总线和数据总线及其存储区域 是统一的;“哈佛”结构:指令总线和数据总线及其存储区是分开、独立的。

      5. ARM7TDMI两种操作状态:ARM状态:32位,这种状态下执行的是字方式的ARM指令;Thumb状态:16位,这种状态下执行半字方式的Thumb指令6. 处理器状态切换;从Arm状态切换到Thumb状态LDR R0,=Lable+1 BX R0;从Thumb状态切换到ARM状态LDR R0,=Lable BX R07.处理器模式用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换 到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式8. ARM状态各模式下的寄存器A.其中R0〜R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。

      B. 寄存器R8〜R12有两个分组的物理寄存器一个用于除FIQ模式之外的所有寄存器模式, 另一个用于FIQ模式这样在发生FIQ中断后,可以加速FIQ的处理速度C. 寄存器R13常作为堆栈指针(SP)在ARM指令集当中,没有以特殊方式使用R13的指 令或其它功能,只是习惯上都这样使用但是在Thumb指令集中存在使用R13的指令D. R14为链接寄存器(LR),在结构上有两个特殊功能:• 在每种模式下,模式自身的R14版本用于保存子程序返回地址;• 当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个 小的固定偏移量)E. 寄存器R15为程序计数器(PC),它指向正在取指的地址可以认为它是一个通用寄存 器,但是对于它的使用有许多与指令相关的限制或特殊情况9. R15的限制正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8 个字节(两条ARM指令的长度)由于ARM指令总是以字为单位,所以R15寄存器的最低两 位总是为010. 程序状态寄存器(CPSR)M[4:0]模式M[4:0]模式10000用户10111中止10001快中断11011未定义10010中断11111系统10011管理11.异常入口/出口汇总异常或入口返回指令之前的状态备注ARM R14_xThumbR14_xBLMOV PC,R14PC+4PC+2此处PC为BL, SWI,为定义的指令 取指或预取指中止 指令的地址SWIMOVS PC,R14_svcPC+4PC+2未定义的指令MOVS PC,R14_undPC+4PC+2预取指中止SUBS PC,R14_abt,#4PC+4PC+4快中断SUBS PC,R14_fiq,#4PC+4PC+4此处PC为由于FIQ 或IRQ占先而没有 被执行的指令的地 址中断SUBS PC,R14_irq,#4PC+4PC+4数据中止SUBS PC,R14_abt,#8PC+8PC+8此处PC为产生数据 中止的装载或保存 指令的地址。

      复位无——复位时保存在R14_svc中的值不 可预知中断处理代码的开始部分和退出部分SUBSTMFDLR,LR,#4 ;计算返回地址SP!,{R0-R3,LR};保存使用到的寄存器...LDMFD SP!,{R0-R3,PC厂12.异常向量;中断返回地址异常类型进入时的模式进入时I的状 态进入时F的状 态0x0000 0000复位管理禁止禁止0x0000 0004未定义指令未定义IF0x0000 0008软件中断管理禁止F0x0000 000C中止(预取)中止IF0x0000 0010中止(数据)中止IF0x0000 0014保留保留——0x0000 0018IRQ中断禁止F0x0000 001CFIQ快中断禁止禁止13. 复位流程:• 强制M[4:0]变为b10011(管理模式);• 置位CPSR中的I和F位;• 清零CPSR中的T位;• 强制PC从地址0x00开始对下一条指令进行取指;• 返回到ARM状态并恢复执行14. 存储器格式小端存储器系统:在小端格式中,高位数字存放在高位字节中因此存储器系统字节0连接 到数据线7〜0大端存储器系统:在大端格式中,高位数字存放在低位字节中因此存储器系统字节0连接 到数据线31〜24。

      第4章 ARM7TDMI(-S)指令系统1. 堆栈寻址-满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址指令如LDMFA、 STMFA 等;-空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置指令如LDMEA、STMEA 等;-满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址指令如LDMFD、 STMFD 等;-空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置指令如LDMED、STMED 等2. 书写格式AREA Example1,CODE,READONLY ;声明代码段 ExamplelENTRYCODE32;标识程序入口;声明32位ARM指令START MOV R0,#0;设置参数MOV R1,#10LOOP BL ADD_SUB;调用子程序ADD_SUBB LOOPADD_SUBADDS R0,R0,R1MOV PC,LREND;跳转到LOOP;R0 = R0 + R1;子程序返回3. 指令格式 {} {S} ,{,}opcode:指令助记符; cond :执行条件;S:是否影响CPSR寄存器的值;Rd:目标寄存器; Rn:第1个操作数的寄存器;operand2 :第2个操作数;4. 条件码CMP R0,R1 ;R0 与 R1 比较ADDHI R0,R0,#1 ;若 R0>R1,则 R0=R0+1ADDLS R1,R1,#1 ;若 R0W1,则 R1=R1+15. 指令LDR Rd,addressingSTR Rd, addressingLDM{mode} Rn{!},reglistSTM{mode} Rn{!},reglistMOV Rd,operand2ADDRd,Rn, operand2SUBRd,Rn, operand2RSBRd,Rn, operand2ADCRd,Rn, operand2ANDRd,Rn, operand2ORRRd,Rn, operand2EORRd,Rn, operand2BICRd,Rn, operand2CMPRn,operand2TSTRn,operand2MULRd,Rm,RsBlabelBLlabel启动代码分析:SVC_STACK_LEGTHEQU0FIQ_STACK_LEGTHEQU0IRQ_STACK_LEGTHEQU256ABT_STACK_LEGTHEQU0UND_STACK_LEGTHEQU0NoIntEQU 0x80NoFIQEQU0x40USR32ModeEQU 0x10SVC32ModeEQU 0x13SYS32ModeEQU 0x1fIRQ32ModeEQU 0x12FIQ32ModeEQU 0x11IMPORT __use_no_semihosting_swi;The imported labelsIMPORT FIQ_ExceptionIMPORT __mainIMPORT TargetResetInit;The emported labelsEXPORT bottom_of_heapEXPORT StackUsrEXPORT ResetEXPORT __user_initial_stackheapCODE32AREA vectors,CODE,READONLYENTRYResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddrDCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.