ARM简介及编程.pdf

上传人:qwe****56 文档编号:70012685 上传时间:2023-01-14 格式:PDF 页数:11 大小:135.25KB
返回 下载 相关 举报
ARM简介及编程.pdf_第1页
第1页 / 共11页
ARM简介及编程.pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《ARM简介及编程.pdf》由会员分享,可在线阅读,更多相关《ARM简介及编程.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 ARM 简介及编程 1.ARM 简介(摘录)ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的 RISC 处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP 和移动式应用等。ARM 将其技术授权给世界上许多著名的半导体、软件和 OEM 厂商,每个厂商得到的都是一套独一无二的 ARM 相关技术及服务。利用这种合伙关系,ARM 很快成为许多全球性 RISC 标准的缔造者。目前,总共有 30 家半导体公司与 ARM 签订了硬件技术使用许可协议,其中包括 Intel、

2、IBM、LG 半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和 MRI 等一系列知名公司。ARM 架构是面向低预算市场设计的第一款 RISC 微处理器。2.产品介绍 ARM 提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。CPU内核 -ARM7:小型、快速、低能耗、集成式 RISC 内核,用于移动通信。-ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将 ARM7 指令集同 Thumb扩展组合在一起,以减少内存容量和系统成本。

3、同时,它还利用嵌入式 ICE 调试技术来简化系统设计,并用一个 DSP 增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。-ARM9TDMI:采用 5 阶段管道化 ARM9 内核,同时配备 Thumb 扩展、调试和 Harvard总线。在生产工艺相同的情况下,性能可达 ARM7TDMI 的两倍之多。常用于连网和顶置盒。体系扩展 -Thumb:以 16 位系统的成本,提供 32 位 RISC 性能,特别注意的是它所需的内存容量非常小。嵌入式 ICE 调试 由于集成了类似于 ICE 的 CPU 内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。微处理器 -ARM710 系列

4、,包括 ARM710、ARM710T、ARM720T 和 ARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和 JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。-ARM940T、920T 系列:低价、低能耗、高性能系统微处理器,配有 Cache、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。-StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术,与 DEC 联合研制,后来授权给 Intel。SA110 处理器、SA1100 PDA 系统芯片和 SA1500 多媒体处理器芯片均采用了这一技

5、术。-ARM7500 和 ARM7500FE:高度集成的单芯片 RISC 计算机,基于一个缓存式 ARM7 32位内核,拥有内存和 I/O 控制器、3 个 DMA 通道、片上视频控制器和调色板以及立体声端口;ARM7500FE 则增加了一个浮点运算单元以及对 EDO DRAM 的支持。特别适合电视顶置盒和网络计算机(NC)。Windows CE 的 Pocket PC 只支持 ARMWindows CE 可支持多种嵌入式处理器,但基于Windows CE 的 Pocket PC 则只支持 ARM 一种。微软在对 SH3、MIPS、ARM 等嵌入式处理器做了评估后认为,ARM 是一种性价比较好的

6、选择。由于目前 ARM 在手持设备市场占有90%以上的份额,只支持 ARM,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。由于 ARM 开放其处理器授权,因此,用户在市场上可以在多家整机厂商中进行选择,从而保证了这一市场的竞争性。2.ARM 芯片 CL-PS7111 主要特点BLOCKQUOTEBLOCKQUOTE 电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz.13MHz位节电模式,性能相当于33MHz Inter 486 PC ARM710A 内核 ARM7 CPU 8K 4 向缓存(cache)MMU 带有 64 入口 TLB(Transition Loo

7、k-aside Buffer)DRAM 控制器 支持 16 位和 32 位 DRAM ROM/SRAM/Flash Memory 控制 可译码 4,5 或 6 个独立的 256M 存储空间段 每个存储段支持 8 位,16 位和 32 位操作,并支持分页模式 可编程 ROM/SRAM/Flash Memory 支持两个低功耗 CL-PS6700 PC 卡(PCMCIA)控制器 2K 片内 SRAM 用于程序快速执行 片内 Boot ROM(128Byte)两个同步串行接口 支持 SPI,或 Microwire2 兼容 音频解码器(Audio Codec)27 位通用接口 GPIO(general

8、-purpose I/O port)3 个 8 位和 1 个 3 位 GPIO port 支持键盘阵列扫描(Scanning keyboard matrix)两个异步串口 UARTs 支持高达 115.2K 波特率 内有两个接收发送(TX,RX)16Bytes FIFOs 缓冲 支持 MODEM 控制信号 DC-to-DC 转换器接口 提供两个 96KHz 时钟输出,通过编程 duty ratio(1/16-15/16)操作 LCD 控制器 直接信号扫描板接口,单色 LCD 面板的大小可编程从 16 到 1024 个像素,16 个像素为一个单位 视频帧大小可编程到 128K byte 每个像素

9、点的位数可编程 1,2,4 位 计时器和实时时钟 两个 16 位计时器(Timer counter)和一个 32 位实时时钟(RTC)/BLOCKQUOTE/BLOCKQUOTE 3.调试工具及调试方法BLOCKQUOTE ARM Project Manager(APM)include ARM Debuger:这个工具由 ARM 提供主要是开发程序,编程调试 ARM 芯片,有相当不错的开发环境和远端调试功能,支持汇编和 C.它带有一个ARM 自己的嵌入式操作系统 ARM Angel,用户可以在它的上面开发自己的嵌入式软件,不过这个操作系统不是实时多任务的./BLOCKQUOTEBLOCKQUO

10、TE 通过计算机串口与处理器 UART 相连,设置计算机的超级终端(Hyper Terminal),通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向 UART 送出数据的指令,用 Beep 报警也是经常用的.这种调试方法是用于底层调试硬件,找出硬件存在的问题.VxWorks 在 Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是 BSP 中存在的问题,需要根据硬件,修改 BSP./BLOCKQUOTE 4.ARM7 编程要点及示例 ARM 编程可参考程序示例 ARM_Boot Flash ROM 驱动 VxWorks image

11、装入 ARM 的过程:BLOCKQUOTE ARM7 有两种运行模式,Boot 模式和 Normal 模式,Boot 模式主要是把程序装入(down load 或 load)Flash ROM 中用的,Normal 模式是一般运行程序用的.ARM7 Boot 模式时,Flash 的地址是 0 x70000000 片选型号是 CS0(Normal 模式下,Flash 地址为 0 x00000000)ARM7内部有128byte的BootROM和2K的SRAM,当需要Download VxWorks image时,ARM启动采用 Boot 方式启动运行存在 128byte BootROM 中的程序

12、初始化 ARM 内部的 COM 口,从 COM 口接受数据到 2K 的 SRAM,这 2K 程序是用来真正 Load VxWorks 的,2K 程序 Load完毕后系统自动跳转到这 2K 程序执行,它的作用是再次初始化内部的 COM 口,通过 COM 口接受 VxWorks 到 DRAM,然后由 DRAM 写入 FLASH。在主板 2K SRAM 运行的 Boot Load程序执行过程,可参看程序示例中 ARM Boot Load 程序 写入完毕后,切换到 Normal 模式重新启动系统,系统自动跳到 FLASH 0X00000000 开始运行 VXWORKS。用 PC 机上的 COM1 与

13、ARM 内部的 UART1(COM)通信来 Download VxWorks。/BLOCKQUOTE 主要管脚定义 BLOCKQUOTE 32 条数据线:D0-D31 28 条地址线:A0-A27 little endian 定义,相对应数据排列 0 1 2 3 4 5 6-27 6 条片选信号脚:CS0-CS5,其实作用相当于地址线 A28-A31 4 个 8 位的 PORT 口:PORT A,PORT B,PORT D 主要用于外围芯片信号的控制.PORT E 有双作用.例如 PORT A 控制键盘的行信号,PORT B 用于RS232,PORT D 用于控制MODEM,FPGA.外部中断

14、信号 EINT,EXTFIQ.编程时要根据主板原理图和硬件手册进行.BLOCKQUOTE 看硬件图纸,该芯片和 CPU 的那些管脚连结.特别是 PORT 口和片选线.查 CPU 手册,得到 PORT 口和该片选的硬件地址.编程:用 PORT 口直接对芯片操作,如开,关,RESET 等,用片选地址和芯片内地址结合对该外围芯片操作./BLOCKQUOTE/BLOCKQUOTE Exception vectors,中断向量表及中断分配 Vector 地址 BLOCKQUOTE Exception/BLOCKQUOTE Exception Mode Priority(1=High)0 x0 BLOCK

15、QUOTE Reset/BLOCKQUOTE Svc 1 0 x4 BLOCKQUOTE Undefined Instruction/BLOCKQUOTE Undef 6 0 x8 BLOCKQUOTE Software Interrupt/BLOCKQUOTE Svc 6 0 xC BLOCKQUOTE Prefetch Abort/BLOCKQUOTE Abort 5 0 x10 BLOCKQUOTE Data Abort/BLOCKQUOTE Abort 2 0 x14 BLOCKQUOTE Reserved/BLOCKQUOTE Not applicable Not applicabl

16、e 0 x18 BLOCKQUOTE Interrupt(IRQ)/BLOCKQUOTE irq 4 0 x1C BLOCKQUOTE Fast Interrupt(FIQ)/BLOCKQUOTE Fiq 3 BLOCKQUOTE /BLOCKQUOTEBLOCKQUOTE 这个向量表必须要放置在系统地址 0 x00000000(一般是逻辑地址,即经过 MMU 映射后的地址)处./BLOCKQUOTEBLOCKQUOTE 一般是在这些地址上放跳转指令 BL,跳到相应的地址空间执行相应的程序./BLOCKQUOTEBLOCKQUOTE 如系统执行从 0 x00000000 Reset 开始,Re

17、set 跳转到某一地址开始运行操作系统./BLOCKQUOTEBLOCKQUOTE /BLOCKQUOTEBLOCKQUOTE 程序示例,中断向量表(ARM asm):_VectorStart;Start of ARM processor vectors LDR pc,ResetV;00-Reset LDR pc,UndefV;04-Undefined instructions LDR pc,SWIV;08-SWI instructions LDR pc,PAbortV;0C-Instruction fetch aborts LDR pc,DAbortV;10-Data access abor

18、ts LDR pc,UnusedV;14-Reserved(was address exception)LDR pc,IRQV;18-IRQ interrupts LDR pc,FIQV;1C-FIQ interrupts/BLOCKQUOTE 中断号分配(FIQ,IRQ)中断类型 中断号 Name 说明 FIQ 0 外部中断 EXTFIQ 管脚 NEXT FIQ IRQ 5 外部中断 EINT1 管脚 NEINT1 IRQ 6 外部中断 EINT2 管脚 NEINT2 IRQ 7 外部中断 EINT3 管脚 NEINT3 IRQ 12 内部中断 UTXINT1 UART1 TX FIFO 为

19、空 BLOCKQUOTE /BLOCKQUOTEBLOCKQUOTE 中断号也是寄存器 INTMR 和 INTSR 的位,所以在 ARM 中中断的编程要点是/BLOCKQUOTEBLOCKQUOTE 看硬件图纸,该外设和 CPU 的那一个管脚连结.查 CPU 手册,得到中断号及 INTMR,INTSR 的地址.编程 /BLOCKQUOTEBLOCKQUOTE 注:如果不是写底层 driver,只是在系统上层编程(如 VxWorks,Linux)知道中断号即可./BLOCKQUOTEBLOCKQUOTE 程序示例(VxWorks):/BLOCKQUOTEBLOCKQUOTE/登记中断号 5,和相

20、应的中断例程 ComISR./BLOCKQUOTEBLOCKQUOTE intConnect(VOIDFUNCPTR*)5,ComISR,0);/BLOCKQUOTEBLOCKQUOTE/使能这中断/BLOCKQUOTEBLOCKQUOTE intEnable(VOIDFUNCPTR*)5);/BLOCKQUOTEBLOCKQUOTE/BLOCKQUOTEBLOCKQUOTE ARM Interrupts:ARM processors implement fast and normal level of interrupt,signalled externally,synchronise in

21、terrupts before an exception is raised.A fast interrupt requst(FIQ)will desable subsequent normal and fast interrupt by setting the I and F bit in CPSR,and a normal interrup request(IRQ)will disable subsequent normal interrupt by setting I bit in CPSR.计时器中断编程过程BLOCKQUOTE ARM7 一般内部有两个 16 位计时器(Timer c

22、ounter)和一个 32 位实时时钟(RTC),计时器中断属于 IRQ 中断,这里以计时器 1 为例叙述一下中断的编程过程 设置 interrup mask INTMR1 寄存器 0 x80000240 第 8 位 TC1OI 计时器 1 为使能.在0 x800000300 计时器 1 的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至 0 后,会产生一个溢出 underflow IRQ 中断请求,中断状态寄存器INTSR1 0 x80000240 第8位TC1OI置位.系统会跳到中断向量表地址 0 x00000018 处,执行相应的中断程序,中断程序通过判

23、断中断的类型(判断中断状态寄存器的位),来执行相应的中断服务程序 ISR.中断状态寄存器标志位复位,计时器开始重新开始计时./BLOCKQUOTE /BLOCKQUOTE 存储空间管理单元(MMU)物理地址映射 重点在于片选地址 CS 的选取,另外 MMU 映射需要参考这个物理地址BLOCKQUOTE /BLOCKQUOTEBLOCKQUOTE ARM7 物理地址映射表/BLOCKQUOTE地址 内容 大小 备注 0 xF000.0000 Unused 256Mbytes 0 xE000.0000 Unused 256Mbytes 0 xD000.0000 DRAM Bank 1 256Mby

24、tes 0 xC000.0000 DRAM Bank 0 256Mbytes 外接 DRAM 0 x8000.2000 Unused-1Gbytes 0 x8000.0000 内部寄存器地址 8Kbytes 主要的 I/O 和控制 0 x7000.0000 Boot ROM 128 bytes 片内,封有 Boot 程序 0 x6000.0000 On-chip SRAM 2 Kbytes 片内,存放 Load 程序 0 x5000.0000 PCMCIA-1(NCS5)4*64 Mbytes 0 x4000.0000 PCMCIA-0(NCS4)4*64 Mbytes 0 x3000.000

25、0 外部扩展(NCS3)256Mbytes 0 x2000.0000 外部扩展(NCS2)256Mbytes 0 x1000.0000 ROM Bank 1(NCS1)256Mbytes 0 x0000.0000 ROM Bank 0(NCS0)256Mbytes 外接 Flash ROM MMU 虚拟(逻辑)地址和物理地址的映射实例BLOCKQUOTE Vxworks 支持的 ARM 架构的处理器,一般是 RAM 的起始位置为 0 x0,而实际上 ARM 的物理地址 0 x0 是 ROM 的起始地址,RAM 在高位地址.这就需要系统在 Boot 过程中,执行 MMU 程序,重新映射 RAM

26、和 ROM 的地址.即 RAM 起始地址为 0 x0./BLOCKQUOTE MMU主要有ARM7中协处理器coprocessor 15控制,coporocessor主要控制:BLOCKQUOTE 片内的 MMU 指令和数据缓存(IDC)Write Buffer(WB)MMU有两层页表(two-level page table)用来进行虚拟地址向物理地址转换,CP15 定义 16个寄存器,只有 MRC 和 MCR 指令才能对它们操作.在 VxWorks 系统中,MMU 表分成两部分:boot up table 和 final table.在文件 ramAtHigh.h 中定义.该表在文件 ro

27、mInit.s 中初始化,语句为:BL _ramAtHigh_1(2)/BLOCKQUOTE MMU 映射实例 虚拟(逻辑)地址(VxWorks 系统)硬件物理地址 RAM 首地址 0 x0000.0000 Low Address 0 x0000.1000 High Address 0 x0060.0000 ROM 0 x0100.0000 其他的地址逻辑地址和物理地址映射地址不变 0 x8000.0000 内部寄存器 .相同的颜色映射对应的地址 ROM 0 x0000.0000 VxWorks image 和文件系统 RAM 首地址 0 xC000.0000 存放 LCD,MMU 表等 0 xC004.0000 中断向量表等 0 xC004.1000 VxWorks 运行位置 0 xC064.0000 VxWorks 从 ROM 解压后 Copy 的位置 其他的地址映射地址不变 0 x8000.0000 内部寄存器 .其中,Low Address,High Address在系统配置文件config.h和Makefile中设置,参见BSP文件示例

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁