1、嵌入式系统开发方法与调试_第1页
1、嵌入式系统开发方法与调试_第2页
1、嵌入式系统开发方法与调试_第3页
1、嵌入式系统开发方法与调试_第4页
1、嵌入式系统开发方法与调试_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统开发方法与调试A RM体系结构硬件工程师的成长之路?8位单片机8051?匚编言、(交叉编译器、原理图&PCB?16位处理器DSP?C语言、流水线、锁频环、哈佛结构 ?可编程逻辑器件 GAL、CPLD、FPGA?硬件描述语言、数字电路的根本作为当代的一个硬件工程师,这些词语并不陌生,这可能是大多数做硬件人的成 长之路。嵌入式处理器时代常见的嵌入式处理器核:?ARM?MIPS?PowerPC?68K?x86冯诺依曼体系结构模型指令寄存器控制器数据通道输入输出中央处理器存储器程序指令 0指令1指令2指令3指令4数据数据0数据1数据2哈佛体系结构指令寄存器控制器数据通道输入输出中央处

2、理器程序存储器指令0指令1指令2数据存储器数据0数据1数据2地址指令地址数据CISC 和 RISCCISC:复杂指令集(Complex Instruction Set Computer具有大量的指令和寻址方式8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。RISC:精简指令集(Reduced Instruction Set Compute在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单流水线流水线技术:几个指令可以并行执行提高了 CPU的运行效率内部信息流要求通畅流动译码取指执行add译码取指执行sub译码取指执行cmp时

3、间AddSubCmp高速缓存(CACHE1、为什么采用高速缓存微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性2、高速缓存的工作原理高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。CPU高速缓存控制器CACHE主存数据数据地址说说ARMARM?ARM(Adva need RISC Machi nes 公司是全球领先的 16132位RISC微处理器知识产权设计供应商。?ARM公司通过转让它的高性能、低成本、功耗低的RISC微处理器、外围和系统芯片设计技术给合作伙伴来生产各具特色的芯片。?ARM公司已成为移动通信、手持设备、多媒体数字消费 嵌入式解决方案的RISC标

4、准。ARM体系结构版本-1?Versio n 1 (obsolete?基本数据处理?字节,字以及多字load/store?软件中断?26 bit地址总线?Versio n 2 (obsolete?Multiply & Multiply -accumulate 支持协处理器?支持线程同步?26 bit地址总线ARM体系结构版本-2z V3版本推出32位寻址能力,结构扩展变化为T 16位压缩指令集M 增强型乘法器 产生全64位结果(32X32? 64or32X32+64 ? 64 z V4版本增加 了半字load和store指令z V5版本改进了 ARM和Thumb之间的交互,结构扩展变化

5、为:E-增强型DSP指令集,包括全部算法操作和16位乘法操作J-支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能ARM家族的更新感受ARM的几个突出优点?全新设计的RISC结构的32位处理器?因为是全新的设计,开始就是32位,没有历史遗留问题(比如,x86。所以,更便于 对处理器结构进行优化?价格低廉?ARM公司不生产芯片,专心研究处理器内核的解决方案把 ARM的核授权给各 个IC制造公司,各个公司生产自己的芯片,分工明确,体系统一,导致ARM处理器的价格低廉?ARM公司的合作伙伴众多?从 IC制造到操作系统,可以提供给用户大量的工具和开发资料,推广ARM的 应用?低功耗ARM指令的

6、特点?指令长度固定,所有的ARM指令长度都是32bit ?结构简单,更有利于处理器的 优化设计?会引起指令的密度降低,增加系统的总线的负担(对于存储器的需求的增加不予考虑,因为,现在的存储器可以做的很大,也很便宜。所以,产生了 16bit的Thumb指令。可以弥补一些不足?3寄存器指令操作,所有的指令都可条件执行,避免条件跳转中的流水线的停顿 应用更灵活(参考ARM Soc体系结构THUMB指令集( T'THUMB指令集:32位ARM指令集的子集,按16位指令重新编码(可看作ARM指令压缩形式的子集 代码尺寸小(up to 40 %compressi on简化设计工作状态之间的切换?A

7、RM7TDMI处理器有两种工作状态:ARM -32-bit,按字排列的ARM指令集Thumb -16-bit,按半字排列的Thumb指令集?ARM7TDMI核的操作状态可能通 过BX指令(分支和交换指令在ARM状态和Thumb状态之间切换例:从ARM状态切换到Thumb状态:LDR R0,=Label+1BX R0从Thumb状态切换到ARM 状态:LDR R0,=LabelBX R0存储器模式?大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中端模式低地址中存放字数据的低字节 高地址中存放字数据的高字节312423161587字地址1110988765443210低地址高地

8、址312423161587字地址8910118456740123低地址高地址ARM上编程值得注意的地方(1?ARM是一个32位处理器,通常,如果没有特殊 的要求,C语言中的结构体(struct要求4字节对齐的。?在实际的代码中(比如,TCP/IP协议,会有如下两种问题:?要求多个数据是紧缩在一个4字节中?有的4字节的数据,但是,数据在内存中并不是4字节对齐存储的字节对齐问题的解决?通过使用紧缩数据相关的关键字,可以让C语言的结构体以紧缩的方式存储 (并不是每个结构体成员都是 4字节对齐,比如在ARM SDT中,使用packed关键字 定义的结构体(struct编译的时候,就可以生成紧缩的数据段

9、。代码A:struct_Aun sig ned char time;unsigned int data; A;代码 B:_packed struct_Bun sig ned char time;un sig ned int data; B;比如下面ARM SDT中的C代码中两段结构体的定义:紧缩的结构体?结构体A是成员4字节的存储方式(sizeof(struct A=8,?结构体B是成员非4字节对齐的存储方式(sizeof(struct B=5。ARM的问题撚而作为32位处理器,和x86不同的是,ARM不支持非对齐字节的数据传输。 就是说,在C语言里,一旦使用了 32位的指针操作一个非4字节对

10、齐的数据,ARM就 会陷入一个异常。?这个问题将会给一些软件的移植,带来很多麻烦,一定要小心的处理这些问题。比如,如果这么访问:B b;int i=0;b.data=i;/错误这里看上去很正常的C代码,在ARM中将产生一个异常因为结构b中的data成员不是字对齐的。有时类似的错误在编译的时候是无 法发现的,在运行的时候,ARM7不能进行非对齐的字传输,所以,就会进入一个 ABORT异常。其实是因为对应汇编STR Rd, xxxLDR Rd, xxx指令中的有效地址,必须是4字节对齐的。非对齐字能否传输?在现在常用的ARM版本中,都不支持非对齐字的传输,主要包括:ARMv3、ARMv4、ARMv

11、5及相关的系列产品。在ARMv6中,开始支持非对齐字的传输。ARM上编程值得注意的地方(2流水线的影响?通常是在汇编中才能遇到的问题?比如:ARM7中的三级流水线导致,所读取的PC程序计数器指针,总是比当前 执行的汇编代码的地址多8ARM7 TDMI的指令流水线取指译码执行从存储器取指指令所用的寄存器译码从从寄存器组中读寄存器移位和 ALU操作把寄存器写回到存储器组每条指令可以分3个阶段执行ARM单周期指令3段流水线操作取指译码执行取指译码执行取指译码执行t指令123注:程序计数器PC指向正在取指的指令而不是正在执行的指令简单的例子mov pc, pc这条指令将使程序跳转到了当前指令的下下条指

12、令(既跳过一条指令执行程序Sub pc, pc,#4执行的是下一条指令。Sub pc, pc,#8则是,一条死循环。中断中的情况SUBS pc, lr, #4这条指令的作用是ARM7中断子程序的返回在ARM7进入中断异常(主要是IRQ或者FIQ时,lr中装载的在进入中断前pc 指针指向的指令。因为,IRQ(或者FIQ异常发生在流水线的最后的阶段,所以,当时的PC是当前的 指令地址+8。也就是lr中的地址,是要返回的地址+8,所以,lr-4,就是中断发生时的下 一条指令,即中断返回的位置。这个具体的可以参考ARM7TDMI Datasheet感受ARM使用ARM的一些感受,和一些值得注意的地方?

13、以ARM7TDMI和ARM920T内核为例?以 S3C44B0、S3C4510B和 S3C2410X处理器为基础?在 UP-NETARM3000 等 平台上验证Bank的划分術对不同速度、总线宽度的外设,通常,嵌入式处理器都把外部总线分成不同的 Bank空间对应不同的地址。?不同的Bank可以有不同的配置,或者对应的功能也不一样,支持的外设也不 同。?比如:S3C44B0的BankO-5支持,ROM、SRAM等那些线性寻址的存储器或者外设;Bank6-7,还可以支持SDRAM、DRAM等。而且,每一个Bank都可以配置成8-32bit的总线,大端(big endian或者小端(little e

14、ndian等嵌入式处理器的启动过程(1通常系统上电(或者复位以后,程序从地址空间的 0x0开始?即PC(程序计数器指针,指向0x0。从这个地址开始读取指令并运行。通常这 个地址对应的是Bank0嵌入式处理器的启动过程(2因为系统是从bank0上引导的,所以,在Bank0上连 接保存有启动代码的Flash ROM,这就是我们常说的Boot ROMBoot ROM要实现的主要工作(1?硬件系统自检?配置其他Bank或者端口、外设等工作模式?处理中系统的中断?在不支持remap的处理器中,中断必然要经过Boot ROM的空间,这时,Boot ROM需要处理的任务就是把固定的中断向量映射到一个可编程的

15、中断处理子程序的地址Boot ROM要实现的主要工作(2?引导操作系统?系统配置完成以后,Boot ROM需要把操作系统(或者其他程序装载到SDRAM(就是系统的RAM区,然后,把PC指针指向程序的RAM空间,使操作系统启 动,这就是引导。因此,Boot ROM中的代码有常称之为 BootloaderBoot ROM要实现的主要工作(3?Flash(Boot ROM 编程?对引导Flash(或者其他的非易失性存储器编程,通过串口或者以太网口下载编译成功的操作系统或者应用程序,甚至Boot ROM本身。Note:要想实现Boot ROM的自编程必须让Boot程序是在RAM中运行Boot ROM的

16、烧录Boot ROM使用来配置系统启动的。没有 Boot ROM,系统就不能配置,更不能启 动。Boot ROM可以自编程,但是,第一次系统启动用的Boot ROM是如何烧录的呢??使用插座连接Flash配合编程器?通过ARM的JTAG接口ARM的C编译器的选择常见的ARM的C编译器主要有,?SDT 2.5(ARM Software Developme nt Toolkit?ADS 1.1/1.2(ARM DeveloperSuite?RealView Developer Suite?armelf-gcc、arm-linux-gccSDT集成开发环境?用来编写、编译和调试 ARM系列的RISC

17、处理器的应用程序。可以开发C,C+或ARM汇编程序?它的 WINDOWS开发工具有两个:?the ARM Project Manager(APM?The ARM Debugger for Win dows(ADWARM SDT完全适合uCOS-ll的编译。SDT支持ARM公司的RDI调试协议,配合JTAG可以很容易的实现源码级的程序调试ARM调试结构JTAGARM的JTAG调试结构An gelJTAG宿主机调试器?宿主机调试器通过固定的协议控制下位机(协议转换器。比如,SDT中通过An gel协议或者第三方调试器所提供的协议?宿主机调试器只发送宏观的命令,比如:程序运行、终止。读内存、ARM寄

18、存器等?通讯的介质可以是串口、并口、以太网、USB等JTAG 与 An gel?JTAG调试:协议转换器解释上位机传送过来的命令,通过JTAG控制ARM执 行?An gel调试:协议转换器可以直接做为目标板的 Firmware的一部分。直接执行 从宿主机传送过来的调试命令;并回送相应的数据。?Angel可以节省专门的JTAG仿真器,但是,它需要软件,或者是嵌入式操作系统 的支持,做不到完全的实时仿真。而 JTAG仿真是通过硬件和控制 ARM的 EmbeddedICE实现的,可以做到实时仿真。UARMJTAG的调试结构什么是JTAG?JTAG 是 Joi nt Test Actio n Group 的缩写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论