|
||||||
| | 首页 | 文章中心 | 下载中心 | 本站商品 | 学习资料 | 留言 | 论坛 | | ||||||
| 广告载入中... | ||||||
| 您现在的位置: 电子爱好者 >> 文章中心 >> ARM入门 >> 正文 |
|
|||||
| ARM简介与编程-献给ARM初学者 | |||||
| 作者:未知 文章来源:互连网 点击数: 更新时间:2007-4-28 | |||||
| 1.ARM简介(摘录) 电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz. 13MHz位节电模式, 性能相当于33MHz Inter 486 PC ARM ARM7 CPU 支持16位和32位DRAM 可译码4,5或6个独立的256M存储空间段 2K 片内 SRAM用于程序快速执行 片内Boot ROM (128Byte) 两个同步串行接口 支持SPI,或Microwire2兼容 3个8位和1个3位GPIO port 支持高达115.2K 波特率 提供两个96KHz时钟输出,通过编程duty ratio(1/16---15/16)操作 直接信号扫描板接口,单色LCD 两个16位计时器(Timer counter)和一个32位实时时钟(RTC) 3. 调试工具及调试方法 ARM Project Manager (APM) include ARM Debuger: 这个工具由ARM提供主要是开发程序, 编程调试ARM芯片, 有相当不错的开发环境和远端调试功能, 支持汇编和C. 它带有一个ARM自己的嵌入式操作系统ARM Angel, 用户可以在它的上面开发自己的嵌入式软件, 不过这个操作系统不是实时多任务的. 通过计算机串口与处理器UART相连,设置计算机的超级终端 ( Hyper Terminal ), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令, 用Beep报警也是经常用的. 这种调试方法是用于底层调试硬件,找出硬件存在的问题. VxWorks 在Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP. 需要说明的是:上述方法是在没有硬件仿真器的情况下采用的,仿真器是底层调试硬件程序最好,最简便直观的办法。 4. ARM7 编程要点及示例 ARM编程可参考程序示例 ARM_Boot Flash ROM驱动 VxWorks image 装入ARM的过程: ARM7 Boot 模式时, Flash 的地址是0x70000000片选型号是CS0 (Normal模式下,Flash地址为0x00000000) ARM7内部有128byte的BootROM和2K的SRAM,当需要Download VxWorks image时,ARM启动采用Boot方式启动运行存在128byte BootROM中的程序初始化ARM内部的COM口,从COM口接受数据到2K的SRAM,这2K程序是用来真正Load VxWorks的,2K程序Load完毕后系统自动跳转到这2K程序执行,它的作用是再次初始化内部的COM口,通过COM口接受VxWorks到DRAM,然后由DRAM写入FLASH。在主板2K SRAM运行的Boot Load程序执行过程,可参看程序示例中ARM Boot Load程序 用PC机上的COM1与ARM内部的UART1(COM)通信来Download VxWorks。 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.. 外部中断信号EINT, EXTFIQ. 编程时要根据主板原理图和硬件手册进行. 看硬件图纸, 该芯片和CPU的那些管脚连结. 特别是 PORT 口和片选线. 查CPU手册, 得到PORT 口和该片选的硬件地址. 编程: 用PORT口直接对芯片操作,如开,关,RESET等, 用片选地址和芯片内地址结合对该外围芯片操作.
Exception vectors,中断向量表及中断分配 这个向量表必须要放置在系统地址0x00000000 (一般是逻辑地址, 即经过MMU映射后的地址)处. 一般是在这些地址上放跳转指令 BL, 跳到相应的地址空间执行相应的程序. 如系统执行从0x00000000 Reset开始, Reset 跳转到某一地址开始运行操作系统. 程序示例,中断向量表 (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 ; LDR pc,DAbortV ; 10 - Data access aborts LDR pc,UnusedV ; 14 - Reserved (was address exception) LDR pc,IRQV ; 18 - IRQ interrupts LDR pc,FIQV ; 中断号分配 (FIQ, IRQ) 中断类型中断号 Name FIQ 0 外部中断 EXTFIQ 管脚 NEXT FIQ 中断号也是寄存器INTMR和INTSR的位,所以在ARM中中断的编程要点是 看硬件图纸, 该外设和CPU的那一个管脚连结. 查CPU手册, 得到中断号及INTMR,INTSR的地址. 编程 注: 如果不是写底层driver, 只是在系统上层编程(如VxWorks, Linux) 知道中断号即可. 程序示例(VxWorks): //登记中断号 5, 和相应的中断例程 ComISR. intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ; //使能这中断 intEnable ( ( VOIDFUNCPTR * ) 5 ); …… ARM Interrupts: ARM processors implement fast and normal level of interrupt,signalled externally, synchronise interrupts 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. 计时器中断编程过程 ARM7一般内部有两个16位计时器(Timer counter)和一个32位实时时钟(RTC),计时器中断属于IRQ中断,这里以计时器1为例叙述一下中断的编程过程 设置interrup mask INTMR1寄存器 0x80000240 第8位TC1OI计时器1为使能. 在0x800000300 计时器 1 的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至 0 后,会产生一个溢出underflow IRQ中断请求,中断状态寄存器INTSR1 0x80000240 第8位TC1OI置位.系统会跳到中断向量表地址 0x00000018 处,执行相应的中断程序,中断程序通过判断中断的类型(判断中断状态寄存器的位),来执行相应的中断服务程序ISR. 中断状态寄存器标志位复位,计时器开始重新开始计时. 存储空间管理单元(MMU) 重点在于片选地址CS的选取,另外MMU映射需要参考这个物理地址 ARM7 物理地址映射表 地址内容 0xF000.0000 Unused 256Mbytes MMU 虚拟(逻辑)地址和物理地址的映射实例 Vxworks支持的ARM架构的处理器,一般是RAM的起始位置为0x0,而实际上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址为0x0. MMU主要有ARM7中协处理器coprocessor 15控制,coporocessor主要控制: 片内的MMU 指令和数据缓存(IDC) Write Buffer(WB) MMU有两层页表(two-level page table)用来进行虚拟地址向物理地址转换,CP15定义16个寄存器,只有MRC和MCR指令才能对它们操作. 在VxWorks系统中,MMU表分成两部分:boot up table和final table.在文件ramAtHigh.h中定义.该表在文件romInit.s中初始化,语句为: BL _ramAtHigh_1(2) MMU映射实例 虚拟(逻辑)地址(VxWorks系统) 硬件物理地址 RAM 首地址 0x0000.0000 相同的颜色映射对应的地址
其他的地址映射地址不变 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| |
| | 设为首页 | 站点地图|<产品开发服务|光盘刻录服务| 广告合作 | 访问记录 |汇款方法 | 关于VIP会员 | | |
![]() |
|