嵌入式培训专家 基于 ARM 的程序开发 与调试技巧 www.farsight.com.cn
今天内容 v 单片机的应用情况 varm 处理器的发展概况 varm 的开发平台和仿真器 varm 处理器的基础知识 v 开发高效程序的技巧 viar 公司 EWARM 介绍和演示 v 华清远见的 ARM 培训课程介绍
单片机的应用情况 v51/pic/avr 性能价格比较高 atmel/philp/.. 兼容 51 的 flash/ 掩膜单片机占据大量市场份额 v68hc 系列发展势头也不错, 另外专用单片机如 NEC/ 东芝 / 在特定行业应用广泛
v 单片机的应用情况
单片机应用存在的问题 v 一些客户开始向高端发展 目前单片机的外围扩充代码 / 数据空间困难 单片机缺少协议处理功能,mips 值低, 外接 ethernet/ 上 tcp/ip 协议困难 大屏幕 LCD 显示接口 /HDLC 等需求用 8 位机实现困难
varm 处理器的发展概况
ARM 公司简介 v ARM 公司作为 32 位处理器内核的提供者, 拥有 100 多家半导体合作伙伴,ARM core 是目前消费类电子市场中市场占有量第一的 CPU 体系 v ARM 是一个 CPU 内核 ARM 公司自己并不生产或销售芯片, 它采用技术授权模式, 通过出售芯片技术授权, 收取授权费与技术转让费 v 随着 ARM/MIPS/ARC 等成熟内核的推出, 很多过去没有 32 位 cpu 研发能力的半导体公司进入这一行列
ARM 处理器的发展进程
ARM 系列处理器 varm 系列内核的优势 v 低价格 v 低功耗 v 高处理能力 v 另外具有 Thumb, DSP, jazeller 功能扩展 v 新的 Thumb2
ARM 系列处理器 v 主流 ARM 内核 : v ARM7 :arm7tdmi,arm720t(mmu) v ARM9 v ARM10 v StrongARM/Xscale(Intel 公司的 arm 处理器 ) v ARM11 v SecurCore( 专门为安全产品设计的 ) v Cortex(ARM 新一代的处理器核心 )
关于 A-R-M Cortex 核心 v A 系列 用于复杂的带 OS 的大型应用的应用处理器 支持 arm thumb thumb2 指令集 v R 系列 用于嵌入式实时操作系统, 嵌入式处理器 支持 arm thumb thumb2 指令集 v M 系列 用于深嵌入的低成本处理器 只支持 thumb2 指令集
ARM 系列处理器 vatmel 公司 arm 系列 vat91 系列 : 优点 : 工业级 但缺乏 lcd 驱动等较吸引力的外围电路 vat75/76 系列 : 内置 arm7/dsp 双内核, 有 Arm+2DSP/ ARM+DSP+MAC, 两种配置, 加上 PHY 就 可实现 voip 终端
ARM 系列处理器 vcirrus logic 公司 机顶盒 /mp3/ia 等专用 SOC, 有数模混合和视频 / 音频处理优势 vep7211 vep7312 vep7209 vep9312
ARM 系列处理器 vsamsung: Arm 系列 SOC 芯片 44b0,4510, 2410, 2510, 2800 集成度高, 关注 mp3/pda 应用 vmotolora: 最近推出龙珠 MX21/31, 使用了 arm 内核 vphiliphs: LPC2xxx/3xxx
varm 的开发平台和仿真器
ARM 系列开发平台 vc/c++ 开发平台 ADS :ARM 公司提供 SDT:ARM 公司提供 RealView ARM 公司提供 EWARM 瑞典 IAR 公司提供 GNU: 免费平台
ARM 系列仿真调试器 v ARM 系列支持 JTAG 规范支持 ARM 调试的一些仿真器 : Angel---rommonitor Multi-Ice BDI2000/BDI1000 OPENICE A1000 J-link/J-trace Trace32 Wiggler Cable
varm 处理器的基础知识
ARM 处理器基础知识 v ARM 全 32 位指令系统 v THUMB 内部 32 位, 代码是 16 位 -- 增加代码密度减少成本 v THUMB2 最近 ARM 公司公布了一项新的发明 Thumb-2 指令集, 该指令集同时包含 32 位和 16 位指令, 在代码长度和性能之间作了最佳的平衡 ; 这样, 以后用户就可以用一个统一的 Thumb-2 编译器来解决现在面临的很多问题了
ARM/Thumb/Thumb2 应用比较
ARM7 处理器基础知识 v ARM7TDMI 是基于 ARM7 内核 3 级流水线 ---0.9MIPS/MHz 冯. 诺依曼架构 CPI(Cycle Per Instruction) 约为 1.9 T -Thumb 架构扩展, 提供两个独立的指令集 : ARM 指令, 均为 32 位 Thumb 指令, 均为 16 位两种运行状态, 用来选择哪个指令集被执行 D - 内核具有 Debug 扩展结构 M - 增强乘法器 (32x8) 支持 64 位结果. I -EmbeddedICE-RT 逻辑 --- 提供片上断点和调试点支持
ARM7 处理器基础知识 v 为增加处理器指令流的速度,ARM7 系列使用 3 级流水线. 允许多个操作同时处理, 比逐条指令执行要快 PC 指向正被取指的指令, 而非正在执行的指令 ARM Thumb PC PC Fetch 从存储器中读取指令 PC - 4 PC-2 Decode 解码指令 PC - 8 PC - 4 Execute 寄存器读 ( 从寄存器 Bank) 移位及 ALU 操作寄存器写 ( 到寄存器 Bank )
ARM9 处理器基础知识 vharvard 架构 增加了可用的存储器宽度指令存储器接口数据存储器接口 可以实现对指令和数据存储器的同时访问 v5 级流水线 v 实现了以下改进 : 改进 CPI 到 ~1.5 提高了最大时钟频率
ARM9 处理器基础知识 ARM7TDMI Instruction Fetch ThumbfiARM decompress ARM decode Reg Select Reg Read Shift ALU Reg Write FETCH DECODE EXECUTE ARM9TDMI Instruction Fetch ARM or Thumb Inst Decode Reg Decode Reg Read Shift + ALU Memory Access Reg Write FETCH DECODE EXECUTE MEMORY WRITE
ARM9E 的区别 varm9e 基于 ARM9TDMI 内核, 有以下扩展和增强 : 单周期 32x16 乘法器 EmbeddedICE 逻辑 RT 改进的 ARM/Thumb 交互操作 新的 32x16 和 16x16 乘法指令 新的计数到零指令 新的饱和算术指令
ARM9x6E-S 的区别 varm946e-s ARM9E-S 内核 指令和数据 cache, 大小可选择 指令和数据 RAM, 大小可选择 保护单元 AHB 总线接口 varm966e-s 与 ARM946E-S 相似, 但无 cache
ARM926EJ-S 的区别 vjazelle 状态允许直接执行 Java 8 位码 varm926ej-s ARM9E-S 内核 可配置的 cachetcm TCM(Terminal-to-ComputerMultiplexer 终端设备至计算机多路转接器 ) 内存管理单元 双重 32 位 AHB 总线接口 ( 多层 )
Intel StrongARM varm V4 架构 ( 无 Thumb 支持 ) v5 级流水线, 降低跳转损耗 -stage pipeline, reduced branch penalty v 改进的乘法器 ( 典型地比 ARM9TDMI 快 2 个周期 ) v 不支持 Multi-ICE 调试 (JTAG 限制在连通性测试 ) v 无外部协处理器接口
Intel XSCALE v V5TE 兼容架构 v 7-8 级流水线带统计分支预测 v 32k 的数据和指令 Cache, 外加 2k 的数据 Minicache 8 口写缓冲,4 口填充和追加缓冲 v 完整的 32 位协处理器接口 调试和性能监控逻辑 ( 通过 CP14 ) 乘 - 加模块 ( 作为 CP0 ) 可配置的内核时钟速度 100-733MHz, 来自 33-66MHz 输入时钟 异步输入总线时钟可到 100 MHz ( 最大总线内核时钟的 1/3 )
v 开发高效程序的技巧
开发高效程序的技巧 v 变量定义 变量定义虽然很简单, 但是也有很多值得注意的地方 看下面两组变量定义顺序
开发高效程序的技巧 定义的 4 个变量形式都一样, 只是次序不同, 却导致了在最终的映像中不同的数据布局
开发高效程序的技巧 v 循环条件 记数循环是程序中十分常用的流程控制结构 在 C 中, 类似下面的 for 循环 for (loop = 1; loop <= limit; loop++) 这种累加计数的方法符合一般的自然思维习惯, 所以比下面的递减计数方法使用的更多 for (loop = limit; loop!= 0; loop--) 这两者在逻辑上并没有效率差异, 但是映射到具体的体系结构中, 就有很大的不同
开发高效程序的技巧
开发高效程序的技巧 v 从图中可以发现累加法比递减法多用了一条指令, 当循环次数比较大的时候, 这两段代码就会在性能上产生出明显的差异来 分析其中的本质原因, 在于当进行一个非零常数比较时, 必须用专门的 CMP 指令来执行 ; 而当一个变量与零进行比较时,ARM 指令可以直接利用条件执行的特性 (NE) 来进行判别
v IAR EWARM 开发平台 介绍和演示
IAR EWARM 的组织结构 IDE Host Application Text Editor Project Manager Debugger GUI Third Party Editors, Source Code Control Systems, etc. Tool Chain C-SPY Debugger Kernel Compiler, Assembler Linker, Libraries Simulator RDI, J-Link, Angel, Macraigor, RTOS Support Custom Plug-Ins
EWARM 软件编译过程 <library>.r79 (Library File) <design>.xcl (Linker File) File with UBROF Object Debug Information ddf-file IAR Simulator <design>.c (C Code) <design>.h (Head File) <design>.s79 (Assembly) IAR C/C++ Compile r IAR Assembler <design>.r7 9 (Object File) <design>.r7 9 (Object File) IAR Linker <design>.map (Map File) <design>.d79 <design>.a79 Linker can produce multiple output files, e.g. Motorola s- record, Intel hex, coff, elf/dwarf,... IAR Debugge r RTOS Support e.g. ORTI CMX OSE ThreadX uc/os-ii Fusion Quadros... RDI IAR J-Link Macraigor Angel Third-Party Emulator Driver
开发环境 v IAR C-SPY 软仿真器 v 硬件调试器接口 RDI, J-Link/J-Trace, Macraigor, Angel, ROM-monitor 第三方的仿真器
EWARM 支持 arm 核时间表 ARM11 Cortex ARM9E ARM10 XScale VFP ARM 7 ARM 9 2.10 3.11 3.20 3.30 3.40 4.10 4.11 4.20 4.30 4.40 2001 2002 2003 2004 2005 2006
支持的实时操作系统 v 内置的 : v CMX-RTX v CMX-Tiny+ v ThreadX v OSE Epsilon v ORTI v embos v μc/os-ii v 第三方提供 : v RTXC Quadros v Fusion v MiSPO NORTi v SMX
文档和图书 v 重要的 PDF 文件 : IAR ARM Embedded Workbench User Guide IAR ARM C/C++ Compiler Reference Guide v 移植指导 : ADS to EWARM Migration Guide RVDS to EWARM Migration Guide v 书籍 : IAR EWARM 嵌入式系统编程与实践 v 手册 : EWARM 快速用户指南 v 其它资料 : IAR ARM Assembler Reference Guide IAR EWARM Flash Loader Developer Guide IAR Embedded Workbench MISRA C Reference Guide IAR Linker and Library Tools Reference Guide
IAR EWARM 演示
创建一个工程
增加文件 v 给工程增加文件 v 创建程序组, 给组增加文件 有效的组织源代码 帮助生成更好的代码
v 选择一个 ARM 核 v 选择一个 ARM 芯片 ( 推荐 ) 选择 ARM 核或者芯片
选择优化方式 v 体积优化 v 速度优化
选择链接定位文件
选择调试器驱动 v 软仿真 v 硬件仿真器接口
v 下载到 RAM v 用 Flash Loader 下载到 Flash v 在 Flash 中调试不下载代码 选择下载方式
v 编译 v 观察链接映射文件 *.map 编译和连接
v 启动调试 v 代码下载和调试 下载和调试
v 华清远见 ARM 培训课程介绍 课时 : 共 4 天, 每天 6 学时总计 24 学时
华清远见 ARM 培训课程介绍 varm 体系结构 varm 编程模型与寻址 varm 与 Thumb 指令集 v 混合使用 C C++ 和汇编语言 v 基于 ARM 处理器的高效 C 编程 varm 汇编与优化
ARM 课程详细情况请访问 : www.farsight.com.cn/courses/ts-arm.htm
让我们一起讨论!
The success's road www.farsight.com.cn 谢谢!