已阅读5页,还剩185页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高等学校嵌入式系统设计教材 ARM9处理器C语言编程标准教程 1 第一章ARM技术简介 1 1ARM处理器简介ARM处理器是一种低功耗高性能的32位RISC 精简指令系统 处理器 本章将其从结构入手进行分析 基于目前流行的ARM920T核详细描述其硬件结构和编程 ARM处理器共有31个32位寄存器 而其中16个可以在任何模式下看到 它的指令为简单的加载与存储指令 从内存加载某个值 执行完操作后再将其放回内存 ARM一个有趣的特点是它所有的指令都带有条件 例如用户可以测试某个寄存器的值 但是直到下次使用同一条件进行测试时 才能有条件地执行这些指令 另一个特征是可以在加载数值的同时进行算术和移位操作 它可以在几种模式下操作 包括通过使用SWI softwarinterrupt软件中断 指令从用户模式进入到系统模式 2 ARM处理器是一个综合体 ARM公司自身并不制造微处理器 它们是由ARM的合作伙伴 Intel或LSI 制造 ARM还允许将其处理器通过协处理器接口进行紧耦合 它还包括几种内存管理单元的变种 包括简单的内存保护到复杂的页面层次 ARM微处理器系列包括ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 SecurCode系列和Intel的Xscale 其中 ARM7 ARM9 ARM9E和ARM10E为4个通用处理器系列 每一个系列提供一套相对独特的性能来满足不同应用领域的需求 例SecurCore系列专门为安全要求较高的应用而设计 3 1 1 1ARM7系列微处理器 ARM7系列微处理器是低功耗的32位RISC处理器 最适合用于对价位和功耗要求较低的消费类应用 ARM7系列有如下特点 具有嵌入式ICE RT InternetCommunicationsEngine Route因特网通信 逻辑 调试开发方便 极低的功耗 适合对功耗要求较低的应用 如便携式产品 能够提供0 9MIPS MillionInstructionsPerSecond百万条 秒 MHz的三级流水线结构 对操作系统的支持广泛 如WindowsCE Linux PalmOS等 指令系统与ARM9系列 ARM9E系列和ARM10E系列兼容 便于用户的产品升级换代 主频最高可达130MHz 高速的运算处理能力能胜任绝大多数的复杂应用 4 ARM7系列微处理器主要应用于工业控制 Internet设备 网络和调制解调器设备 移动电话等多种多媒体和嵌入式应用 ARM7系列微处理器包括如下几种类型的核 ARM7TDMI ARM7TDMI S ARM720T ARM7EJ 其中 ARM7TDMI是目前使用最广泛的32位嵌入式RISC处理器 属低端ARM处理器核 TDMI的基本含义如下 T支持16位压缩指令集Thumb ARM体系结构中一种16位的指令集 D支持片上Debug M内嵌硬件乘法器 Multiplier I嵌入式ICE 支持片上断点和调试点 5 1 1 2ARM9系列微处理器 ARM9系列微处理器在高性能和低功耗特性方面提供最佳的表现 具有以下特点 5级流水 指令执行效率更高 提供1 1MIPS MHz的哈佛结构 支持32位ARM指令集和16位Thumb指令集 支持32位的高速AMBA AdvancedMicrocontrollerBusArchitecture 总线接口 全性能的MMU 支持WindowsCE Linux PalmOS等多种主流嵌入式操作系统 MPU支持实时操作系统 支持数据Cache 高速缓冲存储器 和指令Cache 具有更高的指令和数据处理力 ARM9系列微处理器主要应用于无线设备 仪器仪表 安全系统 机顶盒 高端打印机 数字照相机和数字摄像机等 ARM9系列微处理器包括ARM920T ARM922T和ARM940T三种类型 以适用于不同的应用场合 6 1 1 3ARM9E系列微处理器 ARM9E系列微处理器的主要特点如下 支持DSP指令集 适合于需要高速数字信号处理的场合 5级流水线 指令执行效率更高 支持32位ARM指令集和16位Thumb指令集 支持32位的高速AMBA总线接口 支持VFP9浮点处理协处理器 全性能的MMU 支持众多主流嵌入式操作系统 支持数据Cache和指令Cache 具有更高的处理能力 主频最高可达300MHz ARM9E系列微处理器主要应用于下一代无线设备 数字消费品 成像设备 工业控制 存储设备和网络设备等领域 ARM9E系列微处理器包含ARM926EJ S ARM946E S和ARM966E S三种类型 以适用于不同的应用场合 7 1 1 4ARM10E系列微处理器 ARM10E系列微处理器的主要特点如下 支持DSP指令集 适合于需要高速数字信号处理的场合 6级流水线 指令执行效率更高 支持32位ARM指令集和16位Thumb指令集 支持32位的高速AMBA总线接口 支持VFP10浮点处理协处理器 全性能的MMU 支持众多主流嵌入式操作系统 支持数据Chche和指令Chche 具有更高的处理能力 主频最高可达400MHz 内嵌并行读 学操作部件 ARM10E系列微处理器主要应用于下一代无线设备 数字消费品 成像设备 工业控制 通信和信息系统等领域 ARM10E系列微处理器包括ARM1020E ARM1002E和ARM1026JE S三种类型 以适用于不同的应用场合 8 1 1 5ARM920T简介 ARM920T高缓存处理器是ARM9Thumb系列中高性能的32位单片系统处理器 而ARM920T系列微处理器包含如下几种类型的内核 ARM9TDMI 只有内核 ARM940T 由内核 高速缓存和内存保护单元 MPU 组成 ARM920T 有内核 高速缓存和内存管理单元 MMU 组成 ARM920T提供完善的高性能CPU子系统 包括以下方面 ARM9TDMIRISC整数CPU 16K字节指令与16K字节数据缓存 指令与数据存储器管理单元 MMU 写缓冲器 高级微处理器总线架构 AMBA 总线接口 ETM 内置追踪宏单元 接口 9 ARM920T中的ARM9TDMI内核可执行32位ARM及16位Thumb指令集 ARM9TDMI处理器是哈佛结构 有包括取指 译码 执行 存储及写入的5级流水线 ARM920T处理器包括以下两个协处理器 CP14 控制软件对调试信道的访问 CP15 系统控制处理器 提供16个额外寄存器来配置与控制缓存 MMU 系统保护 时钟模式及其他系列选项 ARM920T处理器的主要特征如下 ARM9TDMI内核 ARMv4T架构 两套指令集 ARM高性能32位指令集和Thumb高代码密度16位指令集 10 5级流水线结构 即取指 F 指令译码 D 执行 E 数据存储访问 M 和写寄存器 W 16K字节数据缓存 16K字节指令缓存 写缓冲器 16字的数据缓冲器 4地址的地址缓冲器 软件控制消耗 标准的ARMv4存储器管理单元 MMU 区域访问许可 允许以1 4页面大小对页面进行访问 16个嵌入域 64个输入指令TLB及64个输入数据TLB 8位 16位 32位的指令总线与数据总线 11 1 1 6SecurCore 可靠内核技术 系列微处理器 SecurCore系列微处理器除了具有ARM体系结构各种主要特点外 在系统安全方面具有如下特点 带有灵活的保护单元 确保操作系统和应用数据的安全 采用软内核技术 防止外部对其进行扫描探测 可集成用户自己的安全特性 SecurCore系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统 如电子商务 电子政务 电子银行业务 网络和认证系统等领域 SecurCore系列微处理器包含SecurCoreSC100 SecurCoreSC110 SecurCoreSC200和SecurCourSC210四种类型 以适用于不同的应用场合 12 1 1 7StrongARM 超强性能ARM技术 系列微处理器 IntelStrongARMSA 1100处理器是采用ARM体系结构高度集成的32位RISC微处理器 它融合了Intel公司的设计和处理技术 以及ARM体系结构的电源效率 采用在软件上兼容ARMv4体系结构 同时采用具有Intel技术优点的体系结构 IntelStrongARM处理器是便捷式通信产品和消费类电子产品的理想选择 已成功应用于多家公司的掌上电脑系列产品 13 1 2ARM体系结构的发展 1 2 1ARM体系结构的发展在过去的十年中 ARM处理器经历了从简单的ARM7TDMI内核发展到最新ARM11EJ S内核 ARM当前有5个产品系列 ARM7 ARM9 ARM9E ARM10 SecurCore和ARM11 从简单的三级流水线到先进的8级流水线结构 用单个时钟来进行比较 性能差别不大 ARM11是ARM家族中性能最强的一个系列 ARM7TM通常只能在200MHz以下的频率运行 ARM11系列处理器展示了在性能上的巨大提升 首先推出350M 500MHz时钟频率的内核 在未来将上升到1GHz时钟频率 ARM11处理器在提供高性能的同时 也允许在性能和功耗间做权衡以满足某些特殊应用 通过动态调整时钟频率和供应电压 开发者完全可以控制这两者的平衡 在0 13um工艺 1 2v条件下 ARM11处理器的功耗可以低至0 4mW MHz 14 ARMv6结构体系 ARM11处理器的超强性能是由一系列的架构特点所决定的 ARMv6是决定性能的基础 总的来说 ARMv6架构通过以下几点来增强处理器的性能 多媒体处理功能扩展 MPEG4编码 解码加快一倍 音频处理加快一倍 增强的Cache结构 实地址Cache 减少Cache的刷新和重载 减少上下文切换的开销 增强的异常和中断处理 使实时任务的处理更加迅速 使数据共享 软件移植更简单 也有利于节省存储器空间 15 对绝大多数应用来说 ARMv6保持了100 的二进制向下兼容 使用户过去开发的程序可以进一步继承下去 ARMv6保持了所有过去架构中的T Thumb指令 和E DSP指令 扩展 使代码压缩和DSP处理特点得到延续 为了加速Java代码执行速度的ARMJazalle技术也继续在ARMv6架构中发挥重要作用 16 1 2 2ARM11处理器的内核特点 ARM11是为了更有效的提高处理器能力而设计的 该系列主要有ARM1136J ARM1156T2和ARM1176JZ三个内核型号 ARM11处理器使用130nm工艺 在2 2mm芯片面积上和0 24mW MHz的前提下主频高达500MHz ARM11处理器以消费产品市场为目标 推出了许多新的技术 包括针对多媒体处理的SIMD SingleinstructionMultipleData单指令多数据流 用以提高安全性能的TrustZone 通过硬件和软件结合 为片上数据提供安全环境 技术 智能能源管理IEM In EarMonitoring耳内监听 以及非常高的 超过2600倍Dhrystone2 1标准 测量处理器的运算能力标准 MIPS 百万条指令 每秒 性能的多处理器技术 17 上面对几个ARM处理器内核做了简单的介绍 可以注意到 随着处理器内核技术的发展 处理器的速度越来越快 其主要得益于ARM流水线的技术发展 ARM1176JZF S处理器专门用于包括数字电视 机顶盒 游戏机以及手机在内的家电产品和无线产品 这一处理器采用ARMJava加速技术 ARMTrustZone技术以及一个矢量浮点 VFP 协处理器 为嵌入式3D图像提供强大的加速功能 18 1 2 3DSP功能 DSP digitalsingnalprocessor 是一种独特的微处理器 是以数字信号来处理大量信息的器件 其工作原理是接收模拟信号 转换为0或1的数字信号 再对数字信号进行修改 删除 强化 并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式 它不仅具有可编程性 而且其实时运行速度可达每秒数以千万条复杂指令程序 远远超过通用微处理器 是数字化电子世界中日益重要的电脑芯片目前有很多应用要求多处理器的配置 多个ARM内核 或ARM DSP的组合 ARM11处理器从设计伊始就注重更容易地与其他处理器共享数据 以及从非ARM的处理器上移植软件 此外 ARM还开发了基于ARM11系列的多处理器系统 MPCORE 由二个到四个ARM11内核组成 19 1 3ARM体系结构的存储器格式 首先来了解ARM体系结构中的字长 字 Word 在ARM体系结构中 字的长度为32位 而在8位 16位处理器体系结构中 字的长度一般为16位 半字 HalfWord 在ARM体系结构中 半字的长度为16位 与8位 16位处理器体系结构中字的长度一致 字节 Byte 在ARM体系结构和8位 16位处理器体系结构中 字节的长度均为8位 指令长度可以是32位 ARM状态下 也可以为16位 Thumb状态下 ARM920T中支持字节 8位 半字 16位 字 32位 3种数据类型 其中 字需要4字节对齐 半字需要2字节对齐 ARM920T体系结构将存储器看成是从零地址开始的字节的线性组合 从0字节到3字节放置第1个存储的字数据 从第4个字节到第7个字节放置第2个存储的字数据 依次排列 20 作为32位的微处理器 ARM920T体系结构所支持的最大寻址空间位4GB 2字节 ARM920T体系结构支持两种方法存储字数据 即大端 BigEnddian 格式和小端 LittleEnddian 格式 在大端格式中 字数据的高字节存储在低字节单元中 而字数据的低字节则存放在高地址单元中 如图1 1所示 在小端存储格式中 低地址单元存放的是字数据的低字节 高地址单元中 存放的是数据的高字节 如图1 2所示 在基于ARM920T内核的嵌入式系统中 常用小端存储格式来存储字数据 21 第一章习题与练习1 嵌入式控制系统按操作系统分 大致可分哪几类 每类的设计方法有什么不同 2 嵌入式控制不加嵌入式操作系统支持 遇到多线程或局域网问题如何解决 3 ARM体系中的字 半字和字节各占多少位 bit 4 什么是大端存储 BigEnddian 格式和小端存储 LittleEnddian 格式 ARM920T内核的嵌入式系统中 常用哪种存储格式来存储字数据 5 什么是Thumb指令集 它和32位ARM指令集的区别 22 第二章ADS1 2开发环境创建与简介 2 1ADS1 2开发环境创建2 1 1ADS1 2概述ADS是个集成开发环境 主要包括编译器 链接器 调试器 C和C 库等 是ARM公司推出的新一代ARM集成开发工具 最新版本是ADS1 2 该版本支持包括Windows和Linux在内的多种操作环境 ADS1 2的组成如下所述 1 编译器ADS提供多种编译器 以支持ARM和Thumb指令的编译 主要有 armcc 是ARMC编译器 tcc 是ThumbC编译器 armcpp 是ARMC 编译器 tcpp 是ThumbC 编译器 armasm 是ARM和Thumb的汇编语言编译器 23 2 链接器armlink是ARM链接器 该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接 生成一个可执行文件 也可以将多个目标文件部分链接成一个目标文件 以供进一步的链接 3符号调试器armsd是ARM和Thumb的符号调试器 能进行源码级程序调试 用户可以在用C或汇编语言写的代码中进行单步调试 设置断点 查看变量值和内存单元的内容 24 4fromELF将ELF格式的文件转换为各种格式的输出文件 包括BIN格式映像文件 Motorola32位S格式映像文件 Intel32位格式映像文件和Verilog十六进制文件 FromELF命令也能够为输入映像文件产生文本信息 例如代码和数据长度 5armararmar是ARM库函数生成器 它将一系列ELF格式的目标文件以库函数的形式集合在一起 用户可以把一个库传递给一个链接器以代替几个ELF文件 25 6CodeWarriorCodeWarrior集成开发环境 IDE 为管理和开发项目提供了简单多样化的图形用户界面 用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理开发用C C 或者ARM汇编语言编写的程序代码 7调试器ADS中含有3个调试器 即AXD Armsd和ADW ADU 在ARM体系中 可以选择多种调试方式 如Multi ICE Multi processorIn CircuitEmulator ARMulator或Angel Multi ICE是一个独立的产品 是ARM公司自己的JTAG在线仿真器 不是由ADS提供的 26 ARMulator是一个ARM指令集仿真器 集成在ARM的调试器AXD中 提供对ARM处理器的指令集的仿真 为ARM和Thumb提供精确的模拟 用户可以在硬件尚未做好的情况下开发程序代码 利用模拟器方式调试 Angel是ARM公司常驻在目标机Flash中的监控程序 只需通过RS 232C串口与PC主机相连 就可以对基于ARM架构处理器的目标机进行监控器方式的调试 C和C 库 27 ADS提供ANSIC库函数和C 库函数 支持被编译的C和C 代码 用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分 重新进行代码的实现 这就为用户带来了极大的方便 针对自己的应用程序的要求 对与目标无关的库函数进行适当的裁剪 在C库中有很多函数是独立于其他函数的 并且与目标硬件没有任何依赖关系 对于这类函数 用户可以很容易地在汇编代码中使用 有了这些部件 用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了 28 2 1 2ADS1 2的安装 ADS全称为ARMDeveloperSuite 是ARM公司推出的新的一代ARM集成开发工具 现在ADS的最新版本是1 2 它取代了早期的ADS1 1和ADS1 0 该版本支持包Windows和Linux在内的多种操作系统 安装步骤如下 在ADS1 2的安装盘中运行setup exe 安装ARMDeveloperSuitev1 2 出现图2 1对话框和图2 2对话框 同意产权协义 选省缺安装路径 C ProgramFiles ARM vADS1 2 和典型安装模式 Typiflcation 按Next进入下一步 出现选文件夹 编程语言和当前设定对话框 均按Next 开始安装 如图2 3示 安装结束 安装许可文件 InstallLicense 这一步可按安装向导进行 单击 下一步 按钮 会出现如图2 4和图2 5所示的对话框 29 30 31 在图2 5对话框中选浏览 Browser 查许可文件 在ProgramFiles ARM ADSV1 2 license 中选license dat文件并打开 单击 下一步 按钮 如图2 6 即可完成ADS1 2的安装 最后 程序还要注册 注册文件在ProgramFiles ARM ADSV1 2文件夹中 单击注册文件 即完成程序注册 如图2 7所示 32 33 2 2ADS集成开发环境的使用 2 2 1建立一个新工程运行ADS1 2集成开发环境 CodeWarriorforARMDeveloperSuite 点击File New 在New对话框中 共有7项 ARMExecutableImage是ARM的通用模板 选中它即可生成ARM的执行文件 如图2 8所示 34 还要在Projectname栏中输入项目的名称 以及在Location中输入其存放的位置 按确定保存项目 2 2 2开发环境设置在新建的工程中 选择Debug版本 如图2 9 使用Edit DebugSettings菜单对Debug版本进行参数设置 35 在如图2 10中 点击DebugSetting按钮 弹出2 11图 选中TargetSetting 36 项 在Post linker栏中选中ARMfromELF项 按OK确定 这是为生成可执行的代码的初始开关 3 在如图2 12中 点击ARMAssembler 在ArchitectureorProcesser 37 栏中选ARM920T 这是项目选择的CPU类型 4 在如图2 13中 点击ARMCCompliler 在ArchitectureorProcesser栏中选ARM920T 这是要编译的CPU核 38 5 在如图2 14中 点击ARMlinker 在outpur栏中设定程序的代码段地址 以及数据使用的地址 图中的ROBase栏中填写程序代码存放的起始地址 RWBase栏中填写程序数据存放的起始地址 该地址是属于SDRAM的地址 39 在options栏中 如图2 15 Imageentrypoint要填写程序代码的入口地址 其他保持不变 如果是在SDRAM中运行 则可在0 x30000000 0 x33ffffff中选值 这是64MSDRAM的地址 但是这里用的是起始地址 所以必须把你的程序空间给留出来 并且还要留出足够的程序使用的数据空间 而且还必须是4字节对齐的地址 ARM状态 通常入口点Imageentrypoint为0 x30000000 ro base也为0 x30000000 在Layout栏中 如图2 16 在Placeatbeginningofimage框内 需要填写项目的入口程序的目标文件名 如 整个工程项目的入口程序是2410init s 那么应在Object Symbol处填写其目标文件名2410init o 在Section处填写程序入口的起始段标号 它的作用是通知编译器 整个项目的开始运行 是从该段开始的 40 41 42 6 在如图2 17中 即在DebugSetting对话框中点击左栏的ARMfromELF项 在Outputfilename栏中设置输出文件名 bin 前缀名可以自己取 在Outputformat栏中选择Plainbinary 这是设置要下载到flash中的二进制文件 图2 17中使用的是test bin 43 7 到此 在ADS1 2中的基本设置已经完成 可以将该新建的空的项目文件作为模板保存起来 首先 要将该项目工程文件改一个合适的名字 如S3C2410ARM mcp等 然后 在ADS1 2软件安装的目录下新建一个合适的模板目录名 如 S3C2410ARMExecutableImage 再将刚刚设置完的S3c2410ARM mcp项目文件存放到该目录下即可 8 新建项目工程后 就可以执行菜单Project AddFiles把和工程所有相关的文件加入 ADS1 2不能自动进行文件分类 用户必须通过Project CreateGroup来创建文件夹 然后把加入的文件选中 移入文件夹 或者鼠标放在文件填加区 右键点击 如图2 18所示 44 先选AddFiles 加入文件 再选CreateGroup 创建文件夹 然后把文件移入文件夹内 读者可根据自己习惯 更改Edit Preference窗口内关于文本编辑的颜色 字体大小 形状 变量 函数的颜色等等设置 如图2 19 45 2 2 3ADS1 2下仿真 调试 在ADS1 2下进行仿真调试 首先需要一根仿真调试电缆和JTAG仿真器 用调试电缆把JTAG仿真器和上位机并口相连 JTAG仿真器的驱动程序为两个动态链接库 也要事先安装 打开调试软件AXDDebugger 点击File loadimage加载可执行文件xx axf 打开超级终端 设置其参数为 波特率为115200 数据位数8 奇偶校验无 停止位无1 数据流控无 点击全速运行 在我们的例子程序中 出现图2 20的界面 46 最后介绍调试按钮 调试按钮在程序进入AXDDebugge状态时会出现在主菜单项 主要几个调试按钮如图2 21所示 图2 21 左起第一个是全速运行 第二个是停止运行 第三个跳入函数内部单步执行 第四个把一个函数做为一个语句单步执行 第五个跳出函数 关于在ADS1 2下进行仿真调试 下面还要祥细介绍 47 2 2 4其他开发环境介绍 IAR 瑞典爱亚软件技术咨询公司 EmbeddedWorkbenchforARM是IARSystems公司为ARM微处理器开发的一个集成开发环境 下面简称IAREWARM 比较其他的ARM开发环境 IAREWARM具有入门容易 使用方便和代码紧凑等特点 故在这里做简单介绍 IARSystems公司目前推出的最新版本是IAREmbeddedWorkbenchforARMversion4 42 并提供一个32k代码限制学习版或30天时间限制的免费评估版 可以到IAR公司的网站 48 IAREWARM中包含一个全软件的模拟程序 simulator 用户不需要任何硬件支持就可以模拟各种ARM内核 外部设备甚至中断的软件运行环境 从中可以了解和评估IAREWARM的功能和使用方法 IAREmbeddedWorkbenchforARMversion4 42是一个针对ARM处理器的集成开发环境 包含项目管理器 编辑器 编译连接工具和支持RTOS 嵌入式实时控制系统 的调试工具 在该环境下可以使用C C 和汇编语言方便地开发嵌入式应用程序 IAREWARM的主要模块如下 项目管理器 功能强大的编辑器 高度优化的IARARMC C Compiler IARARMAssembler 1个通用的IARXLINKLinker IARXAR和XLIB建库程序和IARDLIBC C 运行库 IARC SPY调试器 先进的高级语言调试器 命令行实用程序 49 以下介绍一下EWARM4 42版本及其相关配套硬件的一些特点 1 IAREWAM软件的特点 EWARM4 42版基本特点 完善的ARM内核支持 最新支持到ARM11及CortexM3内核 支持的其他ARM内核 ARM7 ARM7TDMI ARM7TDMI S ARM720T ARM9 ARM9TDMI ARM920T ARM922T ARM940T ARM9E ARM9E S ARM926EJ S ARM946E S ARM966E S ARM968E S ARM10 ARM10E ARM1020E ARM1022E ARM1026EJ S XScale XScale XScale IR7 50 更加客户化地提供芯片级的支持 完备的各厂商ARM处理器的C C 和汇编语言外设寄存器定义文件支持的芯片厂商有AnalogDevices ARM Atmel CirrusLogic Freescale Intel NetSilicon OKI Philips Samsung Sharp ST和TI等 支持AnalogDevices Atmel Freescale OKI Philips ST和TI等厂商的ARM处理器的FlashLoader程序 软件集成了400余个代码例程 对应于各种不同的芯片 位于 arm src examples目录下 进一步改进了编译器速度优化 重写了的浮点运算库 对更多嵌入式操作系统的支持新增支持OSEK类操作系统的OSEKRun TimeInterface ORTI 51 新增支持OSEEpsilonRTOS的KernelAwareness调试 新增支持embOS SMX NORTi等的支持 调试器的增强功能 对堆栈运行的监测功能 配合IARJ Link仿真器的新增功能 J LinkTCP IP服务器 调试器和IARJ Link仿真器协同配合 实现对ARM处理器的多核调试 对IARJ Trace仿真器提供全面的支持 在C SPY模拟器中可执行Trace的模拟 支持同一芯片上多颗Flash的FlashLoader程序 以及通用的FlashLoader开发指南 52 EWARM软件在芯片级支持方面的特色 完备的各厂商ARM处理器的C C 和汇编语言外设寄存器定义文件 大量适合于嵌入式代码的编程语言扩展特性 包括存储器关键字 函数 中断函数 存储器映射I O等 针对评估板的例程 包含IAR AnalogDevices AijiSystem ARM Atmel CirrusLogic Freescale Keil OKI Olimex Pasat Philips Phytec ST和TI等厂家的开发 支持ARM或Thumb模式下大至4G字节的应用程序 每个函数都能选择在ARM或Thumb模式下编译 可生成VFP向量浮点协处理器代码 支持AnalogDevices Atmel Freescale OKI Philips ST和TI等厂商的ARM处器的FlashLoader程序 支持ARMAngelDebugmonitor 53 EWARM编译器的软件特色 先进的通用编译器优化和针对特定处理器的速度优化及存储器优化功能 轻量运行库 用户可以根据需要自行配置 提供全部源代码 灵活的存储器控制 允许详细地为代码和数据分配地址 去除不需要的函数和变量 C C 变量和函数连接时全局类型检查 可选的校验和生成功能 用于运行时映象校验 自动将代码和数据放置到非连续的存储器区域 强大的可重定位宏汇编器 支持丰富的命令集和操作符 54 EWARM调试器的软件特色 完全集成的源代码和反汇编程序调试器 非常细化的执行控制 函数调用级步进 复杂的代码和数据断点 丰富的数据监视功能 Locals Watch Auto LiveWatch和QuickWatch等变量查看窗口 寄存器和存储器查看窗口 支持STL容器 55 C C 调用栈窗口 同时还可以显示将要进入的函数 双击调用链上的任何函数将更新编辑器 局部变量 寄存器 变量查看和反汇编窗口 以显示在该函数调用时的状态 跟踪功能 可以检查执行的历史记录 在跟踪窗口中移动时将更新编辑器和反汇编窗口以显示合适的位置 控制台I O仿真 中断和I O模拟仿真 类似C语言的宏系统 可扩充调试器的功能 由主机执行的应用程序系统调用仿真 代码覆盖率和执行时间分析工具 通用的FlashLoader程序及开发指南 同时支持多颗Flash的FlashLoader程序 支持OSEKRun TimeInterface ORTI 提供为调试器扩充第三方功能的软件开发包 如RTOS调试扩充和仿真器驱动扩充 命令行调试工具 56 IARC SPY支持的调试方法 IARJ LinkJTAG接口 支持所有ARM7和ARM9核 通过USB或TCP IP连接 RDI接口类的第三方仿真器 AbatronBDI1000 BDI2000 EPIMajic AshlingOpella AijiOpenICE SignumJTAGjet ARMMulti ICE等 MacraigorWiggler Raven mpDemon和USBdemon等调试接口 EPIJeeni仿真器支持 IAR的ROM Monitor ARM公司的AngelROM Monitor 用于Atmel和CirrusLogic的评估板 EWARM图形化的集成开发环境的界面特色 分层次的工程组织 同一工作空间中允许存放多个工程 可停靠的窗口和多视图 源代码浏览 创建和维护库的工具 可以和源代码控制系统相集成 57 文本编辑器 支持多字节字符 汉字 上下文相关的帮助系统 根据句法着色 无限制的undo redo 搜寻 替换和增量搜寻 Goto 书签 错误标签 查阅前一个 下一个 自动括号配对 智能缩排 类似网页浏览器的前向 后向源码查阅 代码断点的设置 清除 使能 禁止 命令行编译连接工具 58 EWARM的编程语言和标准 遵循ISO ANSIC94 带有一些从C99标准中挑选的特性 标准的C编程语言 嵌入式C 扩展 支持模板 多重继承和虚拟继承 名字空间以及其它不增加执行时间或存储器开销的C 特性 完整的嵌入式C 库还包含字符串 流等特性 IEEE 754浮点运算规则 MISRAC检查器 支持大量工业标准的调试和映象文件格式 如ELF DWARF 与大多数常见的调试器和仿真器兼容 用户帮助 完备的例程和工程模板 上下文相关的联机帮助系统 带有库函数查阅功能 印刷好的用户指南 带有详细的step by step教程 友好 详尽和精确的错误信息和警告信息 59 2 3用AXD进行代码仿真 调试 2 3 1AXD简介ADX ARMextendedDebugger 是ADS软件中独立于CodeWarriorIDE的图形软件 可从CodeWarriorforARMDeveloperSuite中进入ADX进行调试 或在Windows下选择 程序 ARMDeveloperSuitev1 2 AXDDebugger进入调试 要使用AXD必须首先有生成包含调试信息的程序 即由CodeWarriorforARMDeveloperSuite编译生成含有调试信息的可执行ELF格式的映像文件 axf 60 1在AXD中打开调试文件在CodeWarriorforARMDeveloperSuite界面中 点击Debugger进入AXD调试界面 选择File Loadimage命令 打开Loadimage对话框 找到要装入的 axf映像文件 单击 打开 按钮 就可以把映像文件装载到目标内存中 如图2 22所示 利用Exeute菜单中的子菜单项对可执行映像文件进行调试 各选项的含义如下 选择Go子菜单或按F5键 将全速运行代码 选择Stop子菜单或按Shift F5键 将停止运行代码 选择StepIn子菜单或按F8键 以单步执行代码 若遇到函数 则进入函数内执行 选择Step子菜单或按F10键 以单步执行代码 若遇到函数 则把函数看成一条语句单步执行 61 选择StepOut子菜单或按Shift F8键 在StepIn单步执行代码进入函数内后 若选该子菜单 则可以从函数中跳出返回到上一级程序执行 选择RunTocursor子菜单或按F7键 以全速运行到光标处停下 选择ShowExecutionContext子菜单 可显示执行的内容 选择DeleteAllBreakpoint子菜单 清除所有的断点 2 查看存储器 寄存器 变量内容 62 利用AXD菜单选项ProcessorViews和SystemViews中的子菜单选项可查看寄存器 变量值 还可以查看某个内存单元的数值等 各子菜单的含义如下 63 选择Registers子菜单或按Ctrl R键 可查看或修改目标板处理器中寄存器中的值 选择Watch子菜单或按Ctrl E键 可对处理器设置观察点 观察点可以是寄存器 地址等 但不能修改 特别注意 ProcessorViews菜单下的Watch只能观察处理器 而SystemViews菜单下的Watch或按Alt E键时可对目标板上的任何资源建立观察 可增加或删除观察点 选择Variables菜单或按Ctrl E键 可查看或修改当前可执行的映像文件 程序 中的变量值 这些变量可以是局部变量 全局变量 类属变量 可增加或删除查看或修改的变量 选择Memory子菜单或按Ctrl M键 可查看或修改存储器中的值 如在程序执行前 可以先查看两个宏变量IOPMOD和IOPDATA的当前值 方法是 选择AXD的ProcessorViews Memory命令或按Ctrl M键后 查看或修改存储器中的值 如图2 23所示 64 3 在MemoryStartaddress文本框图上 用户可以根据要查看或修改的存储器地址输入起始地址 在下面的表格中会列出连续的64个地址 因为I O模式控制寄存器和I O数据控制寄存器都是32位的控制寄存器 所以从0 x00000000开始的连续4个地址空间存放的是I O模式控制寄存器的值 从图中可以读出该控制寄存器的值 数据控制寄存器的内容 注意因为用的是小端模式 所以读数据时注意高地址中存放的高字节 低地址存放的是低字节 65 4 断点设置 查看在程序调试时经常设置断点 即在程序的某处设置断点 当程序执行到断点处即可停下 这时开发人员可通过前面的方法查看寄存器 存储器或变量的值 以判定程序是否正常 设置断点的方法是将光标移到需设置断点处 使用快捷键F9在此处设置断点 查看断点的方法是 选择SystemViews breakpointview命令或按Alt K键 在断点状态对话框中右击 利用快捷菜单可增加或删除断点 按F5键 程序将运行到断点 如果要进入函数内查看如何运行的 可以选择Execte StepInw命令或按下F8键 进入到子函数内部进行单步程序的调试 66 2 3 2JTAG概述 JTAG是JointTestActionGroup 联合测试行动小组 的简称 由于IEEE1149 1标准是由JTAG这个组织最初提出的 最终由IEEE批准并且标准化的 所以IEEE1149 1这个标准一般也俗称JTAG调试标准 JTAG标准主要用于芯片内部测试及对系统进行仿真 调试 JTAG技术是一种嵌入式调试技术 它在芯片内部封装了专门的测试电路TAP TestAccessPort测试访问口 通过专用的JTAG测试工具对内部节点进行测试 目前大多数比较复杂的器件都支持JTAG协议 如ARM DSP FPGA器件等 标准的JTAG接口是4线 TMS TCK TDI TDO 分别为测试模式选择 测试时钟 测试数据输入和测试数据输出 JTAG测试允许多个器件通过JTAG接口串联在一起 形成一个JTAG链 能实现对多个器件分别测试 JTAG接口还常用于实现ISP In SystemProgrammable在线系统可编程 功能 如对FLASH器件进行编程等 67 在JTAG调试中 边界扫描 Boundary Scan 是一个很重要的概念 边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元 因为这些移位寄存器单元都分布在芯片的边界上 所以被称为边界扫描寄存器 Boundary ScanRegisterCell 芯片处于调试状态的时候 这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来 通过这些边界扫描寄存器单元 可以实现对芯片输入输出信号的观察和控制 如果需要捕获芯片某个管脚上的输出 首先需要把该管脚上的输出装载到边界扫描链的寄存器单元中去 然后通过TDO输出 这样 我们就可以从TDO上得到相应管脚上的输出信号 如果要在芯片的某个管脚上加载一个特定的信号 则首先需要通过TDI把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元里去 然后将该寄存器单元的值加载到相应的芯片管脚 68 由于在正常的运行状态下 这些边界扫描寄存器对芯片来说是透明的 所以正常的运行不会受到任何影响 这样 边界扫描寄存器就提供了一个便捷的方式 用以观测和控制所需要调试的芯片 另外 芯片输入输出管脚上的边界扫描 移位 寄存器单元可以相互连接起来 在芯片的周围形成一个边界扫描链 Boundary ScanChain 一般的芯片都会提供几条独立的边界扫描链 用来实现完整的测试功能 边界扫描链可以串行地输入和输出 通过相应的时钟信号和控制信号 可以方便地观察和控制处在调试状态下的芯片 JTAG仿真器需要设备驱动程序驱动 在我们使用的教学实验系统 EDUKIT JTAG仿真器的驱动程序为两个动态链接库 EasyICEArm9Plus dll EasyICEArm7Plus dll 把这两个文件拷贝到C EmbestIDE Bin Device 路径下 即可正常使用 69 2 3 3Nor和NandFlash的区别和使用 Nor和Nand是现在市场上两种主要的非易失闪存技术 Intel公司于1988年首先开发出NorFlash技术 这项技术的开发和投放市场彻底改变了原先由EPROM和EEPROM一统天下的局面 紧接着 1989年东芝公司发表了NandFlash结构 强调降低每比特的成本 提供更高的性能 并且像磁盘一样可以通过接口轻松升级 在具有NandFlash接口的系统中 NandFlash存储器可以替代NorFlash存储器使用 许多业内人士也搞不清楚Nand闪存技术相对于Nor技术的优越之处 因为大多数情况下闪存只是用来存储少量的代码 这时Nor闪存更适合一些 而Nand则是高数据存储密度的理想解决方案 70 Nor的特点是XIP eXecuteInPlace芯片内执行 特性 这样 应用程序可以直接在Flash闪存内运行 不必再把代码读到系统RAM中 Nor的传输效率很高 在1 4MB的小容量时具有很高的成本效益 但是很低的写入和擦除速度大大影响了它的性能 Nand结构能提供极高的单元密度 可以达到高存储密度 并且写入和擦除的速度也很快 应用Nand的困难在于Flash的管理和需要特殊的系统接口 71 1 性能比较Flash闪存是非易失存储器 可以对称作块的存储器单元块进行擦写和再编程 由于任何Flash器件的写入操作只能在空或已擦除的单元内进行 所以大多数情况下 在进行写入操作之前必须先执行擦除 Nand器件执行擦除操作是十分简单的 而Nor则要求在进行写入前先要将目标块内所有的位都写为0 由于擦除Nor器件时是以64KB 128KB的块进行的 执行一个写入 擦除操作的时间为5s 与此相反 擦除Nand器件是以8KB 32KB的块进行的 执行相同的操作最多只需要4ms 执行擦除时块尺寸的不同进一步拉大了Nor和Nand之间的性能差距 统计表明 对于给定的一套写入操作 尤其是更新小文件时 在基于Nor的单元中进行需要更多的擦除操作 这样 当选择存储解决方案时 设计师必须权衡以下的各项因素 72 Nor的读速度比Nand稍快一些 Nand的写入速度比Nor快很多 Nand的4ms擦除速度远比Nor的5s快 大多数写入操作需要先进行擦除操作 Nand的擦除单元更小 相应的擦除电路更少 2 容量和成本 NandFlash的单元尺寸几乎是Nor器件的一半 由于生产过程更为简单 Nand结构可以在给定的模具尺寸内提供更高的容量 也就相应地降低了价格 在Nand闪存中每个块的最大擦写次数是一百万次 而Nor的擦写次数是十万次 NorFlash占据了容量为1MB 16MB闪存市场的大部分 而NandFlash只是用在8MB 128MB的产品当中 这也说明Nor主要应用在代码存储介质中 Nand适合于数据存储 Nand在CompactFlash SecureDigital PCCards和MMC存储卡市场上所占份额最大 73 3 接口差别 NorFlash带有SRAM接口 有足够的地址引脚来寻址 可以很容易地存取其内部的每一个字节 基于Nor的闪存使用非常方便 可以像其他存储器那样连接 并可以在上面直接运行代码 Nand器件使用复杂的I O口来串行存取数据 各个产品或厂商的方法可能各不相同 8个引脚用来传送控制 地址和数据信息 Nand的读写操作采用512字节的块 这一点与硬盘管理操作类似 显然基于Nand的存储器就可以取代硬盘或其他块设备 74 在使用Nand器件时 必须先写入驱动程序 才能继续执行其他操作 向Nand器件写入信息需要相当的技巧 因为设计师决不能向坏块写入 这就意味着在Nand器件上自始至终都必须进行虚拟映射 幸运的是 S3C2410微处理器支持NandFlash接口 大大方便了在嵌入式系统设计中的应用 鉴于两种存储器各自的优缺点 在S3C2410嵌入式系统中 对NorFlas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB11T 1205-2015 工业用能单位能源审计报告编制与审核技术规范
- 离心式冷水机组技术规格书
- 江西省九江市六校2024-2025学年九年级上学期期中联考化学试题(含答案)
- 第六章《世界的发展差异》 2024-2025学年湘教版七年级上册地理单元测试卷(含解析)
- 拨浪鼓玩具产品供应链分析
- 对流式烤箱产品供应链分析
- 压茶砖机市场需求与消费特点分析
- 双向触发极管产业深度调研及未来发展现状趋势
- 人教版英语八年级上册 期末常见题型能力提升练习
- 湖北省武汉市洪山区鲁巷实验小学2024~2025学年二年级上学期期中数学试题
- JJG 165-2024钟罩式气体流量标准装置检定规程
- 江西省萍乡市2024-2025学年高二上学期期中考试地理试题
- 新版加油站安全操作规程
- 2023年贵州黔东南州州直机关遴选公务员考试真题
- 黑龙江省龙东地区2024-2025学年高二上学期阶段测试(二)(期中) 英语 含答案
- 4S店展厅改造装修合同
- 送货简易合同范本(2篇)
- 全国职业院校技能大赛赛项规程(高职)智能财税
- 七年级上册音乐教案 人音版
- 某小区住宅楼工程施工组织设计方案
- 3-4单元测试-2024-2025学年统编版语文六年级上册
评论
0/150
提交评论