会员中心 我自己做 机器人玩具                  

当前位置 :机器人首页>机器人技术文章>ARM技术>
热门关键字: asimo  管道机器人图片  机器人  中国  水上机器人
[机器人技术文章]ARM基础知识      
时间:2008-05-10   来源:机器人   作者:Jiqiren.net  关注指数:

0x18                   外部中断请求             IRQ模式                    4

0x1C                   快速中断请求             FIQ模式                    3

在应用程序中安装异常中断处理程序

1.使用跳转指令:可以在异常中断对应异常向量表中特定位置放置一条跳转指令,直接跳转到该异常中断的处理程序。这种方法有一个缺点,即只能在32M空间范围内跳转。

2.使用数据读取指令LDR:使用数据读取指令LDR向程序计数器PC中直接赋值。这种方法分为两步:先将异常中断处理程序的绝对地址存放在存放在距离向量表4KB范围内的一个存储单元中;再使用数据读取指令LDR将该单元的内容读取到程序计数器PC中。

**在系统复位时安装异常中断处理程序**

1.地址0x00处为ROM的情况

  使用数据读取指令LDR示例如下所示:

  Vector_Init_Block

  LDR PC, Reset_Addr

  LDR PC, Undefined_Addr

  LDR PC, SW_Addr

  LDR PC, Prefeth_Addr

  LDR PC, Abort_Addr

  NOP

  LDR PC, IRQ_Addr

  LDR PC, FIQ_Addr

  Reset_Addr  DCD Start_Boot

  Undefined_Addr DCD Undefined_Handle

  SW_Addr  DCD SWI_Handle

  Prefeth_Addr  DCD Prefeth_Handle

  Abort_Addr  DCD Abort_Handle

   DCD 0

  IRQ_Addr  DCD IRQ_Handle

  FIQ_Addr  DCD FIQ_Handle

使用跳转指令的示例如下所示:

  Vector_Init_Block

  BL Reset_Handle

  BL DCD Undefined_Handle

  BL SWI_Handle

  BL Prefeth_Handle

  BL Abort_Handle

  NOP

  BL IRQ_Handle

  BL FIQ_Handle

2.地址0x00处为RAM的情况

地址0x00处为RAM时,中断向量表必须使用数据读取指令直接指向PC中赋值的形式。而且,必须使用下面的代码巴中断向量表从ROM中复制到RAM中地址0x00开始处的存储空间中:

 

 MOV r8,#0

 ADR r9,Vector_Init_Block

 ;复制中断向量表(8字)

 LDMIA r9!,(r0-r7)

 STMIA r8!,(r0-r7)

 ;复制保存各中断处理函数地址的表(8字words)

 LDMIA r9!,(r0-r7)

 STMIA r8!,(r0-r7)

*********************************************
ARM存储系统概述
*********************************************
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。
**系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。
**通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。
**内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这些初始化完成后将RAM地址影射为0,并把系统程序加载到RAM中运行,这样很好地解决了嵌入式系统的需要。
**引入存储保护机制,增强系统的安全性。
**引入一些机制保证I/O操作应设成内存操作后,各种I/O操作能够得到正确的结果。
**与存储系统相关的程序设计指南**
本节从外部来看ARM存储系统,及ARM存储系统提供的对外接口。本节介绍用户通过这些接口来访问ARM存储系统时需要遵守的规则。
1.地址空间
ARM体系使用单一的和平板地址空间。该地址空间大小为2^32个8位字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0~2^32-1。ARM地址空间也可以看作是2^30个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址低两位为0b00。地址为A的字数据包括地址为A、A+1、A+3、A+3 4个字节单元的内容。
各存储单元的地址作为32为无符号数,可以进行常规的整数运算。这些运算的结果进行2^32取模。
程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。但是,当地址上发生溢出时,执行结果将是不可预知的。
2.存储器格式
在ARM中,如果地址A是字对齐的,有下面几种:
**地址为A的字单元包括字节单元A,A+1,A+2,A+3。
**地址为A的班子单元包括字节单元A,A+1。
**地址为A+2的半字单元包括字节单元A+2,A=3.
**地址为A的字单元包括半字节单元A,A+2。
在big-endian格式中,对于地址为a的字单元其中字节单元由高位到低位字节顺序为A,A+1,A=2,A+3;这种存储器格式如下所示:
31       24 23                    16 15           8 7        0
--------------------------------------------------------------------
字单元A           |

Tags:ARM基础    

     
到现在才向上顶了2
我来顶一下
上一篇:[机器人技术文章]ARM开发入门
下一篇:一步步教你在KEIL UV3上建立自己的ARM工程




  • 揭開人類机器人的智慧
    地球上最强悍的四足机器人(美国军用)-机器人(Jiqiren.net) 图片
    美军用拆弹机器人