找回密码
 注册
搜索
查看: 4675|回复: 22

[ARM资料] ARM体系结构与编程 -- 清华大学版ARM经典教材

[复制链接]
发表于 2006-1-13 21:46:00 | 显示全部楼层 |阅读模式
【文件名】:06113@52RD_ARM体系结构与编程.part1.rar
【格 式】:rar
【大 小】:4000K
【简 介】:
【目 录】:第1章  ARM概述及其基本编程模型                  

1. 1  ARM技术的应用领域及其特点                  

1. 2  ARM体系结构的版本及命名方法                  

1. 2. 1  ARM体系结构的版本                  

1. 2. 2  ARM体系的变种                  

1. 2. 3  ARM/Thumb体系版本的命名格式                  

l. 3  ARM处理器系列                  

1. 3. 1  ARM7系列                  

1. 3. 2  ARM9系列                  

1. 3. 3  ARM9E系列                  

1. 3. 4  ARM1OE系列                  

1. 3. 5  SecurCore系列                  

l. 4  ARM处理器模式                  

1. 5  ARM寄存器介绍                  

1. 5. l  通用寄存器                  

1. 5. 3  程序状态寄存器                  

1. 6  ARM体系的异常中断                  

1. 6. 1  ARM中异常中断种类                  

1. 6. 2  ARM处理器对异常中断的响应过程                  

1. 6. 3  从异常中断处理程序中返回                  

1. 7  ARM体系中存储系统                  

1. 7. 1  ARM体系中的存储空间                  

1. 7. 2  ARM存储器格式                  

1. 7. 3  非对齐的存储访问操作                  

1. 7. 4  指令预取和自修改代码                  

                  

第2章  ARM指令分类及其寻址方式                  

2. 1  ARM指令集概要介绍                  

2. 1. 1  ARM指令的分类                  

2. 1. 2  ARM指令的一般编码格式                  

2. 1. 3  ARM指令的条件码域                  

2. 2  ARM指令寻址方式                  

2. 2. l  数据处理指令的操作数的寻址方式                  

2. 2. 2  字及无符号字节的Load/Store指令的寻址方式                  

2. 2. 3  杂类Load/Store指令的寻址方式                  

2. 2. 4  批量Load/Store指令的寻址方式                  

2. 2. 5  协处理器Load/Store指令的寻址方式                  

                  

第3章  ARM指令集介绍                  

3. 1  ARM指令集                  

3. 1. l  跳转指令                  

3. l. 2  数据处理指令                  

3. 1. 3  乘法指令                  

3. 1. 4  杂类的算术指令                  

3. 1. 5  状态寄存器访问指令                  

3. l. 6  Load/Store内存访问指令                  

3. 1. 7  批量Load/Store内存访问指令                  

3. 1. 8  信号量操作指令                  

3. 1. 9  异常中断产生指令                  

3. 1. 10  ARM协处理器指令                  

3. 2  一些基本的ARM指令功能段                  

3. 2. l  算术逻辑运算指令的应用                  

3. 2. 2  跳转指令的应用                  

3. 2. 3  Loacl/Store指令的应用                  

3. 2. 4  批量Load/Store指令的应用                  

3. 2. 5  信号量指令的应用                  

3. 2. 6  与系统相关的一些指令代码段                  

3. 3  Thumb指令介绍                  

                  

第4章  ARM汇编语言程序设计                  

4. 1  伪操作                  

4. 1. l  符号定义伪操作                  

4. 1. 2  数据定义伪操作                  

4. 1. 3  汇编控制伪操作                  

4. 1. 4  栈中数据帧描述伪操作                  

4. 1. 5  信息报告伪操作                  

4. 1. 6  其他的伪操作                  

4. 2  ARM汇编语言伪指令                  

4. 3  ARM汇编语言语句格式                  

4. 3. 1  ARM汇编语言中的符号                  

4. 3. 2  ARM汇编语言中的表达式                  

4. 4  ARM汇编语言程序格式.                  

4. 4. l  汇编语言程序格式                  

4. 4. 2  汇编语言子程序调用                  

4. 5  ARM汇编编译器的使用                  

4. 6  汇编程序设计举例                  

4. 6. 1  ARM中伪操作使用实例                  

4. 6. 2  ARM中汇编程序实例                  

                  

第5章 ARM存储系统                  

5. 1  ARM存储系统概述                  

5. 2  ARM中用于存储管理的系统控制协处理器CP15                  

5. 2. 1  访问CP15寄存器的指令                  

5. 2. 2  CP15中的寄存器                  

5. 3  存储器管理单元MMU                  

5. 3. l  存储器管理单元MMU概述                  

5. 3. 2  禁止/使能MMU                  

5. 3. 3  MMU中地址变换过程                  

5. 3. 4  MMU中存储访问权限控制                  

5. 3. 5  MMU中的域                  

5. 3. 6  关于快表的操作                  

5. 3. 7  ARM中的存储访问失效                  

5. 4  高速缓冲存储器和写缓冲区                  

5. 4. 1  基本概念                  

5. 4. 2  cache的工作原理和地址映像方法                  

5. 4. 3  cache的分类                  

5. 4. 4  cache的替换算法                  

5. 4. 5  缓冲技术的使用注意事项                  

5. 4. 6  存储系统的一致性问题                  

5. 4. 7  cache内容锁定                  

5. 4. 8  与cache和写缓冲区相关的编程接口                  

5. 5  快速上下文切换技术                  

5. 5. l  快速上下文切换技术原理                  

5. 5. 2  快速上下文切换技术编程接口                  

5. 6  与存储系统相关的程序设计指南                  

5. 6. l  地址空间                  

5. 6. 2  存储器格式                  

5. 6. 3  非对齐的存储访问操作                  

5. 6. 4  指令预取和自修改代码                  

5. 6. 5  IMB                  

5. 6. 6  存储器映射的I/O空间                  

5. 7  AIOA存储系统的实例                  

5. 7. 1  L7205的存储系统概述                  

5. 7. 2  L7205中的SDRAM                  

5. 7. 3  L7205中的 MMU                  

                  

第6章  ATPCS介绍                  

6. 1  ATPCS概述                  

6. 2  基本ATPCS                  

6. 2. l  寄存器的使用规则                  

6. 2. 2  数据栈使用规则                  

6. 2. 3  参数传递规则                  

6. 3  几种特定的ATPCS                  

6. 3. l  支持数据栈限制检查的ATPCS                  

6. 3. 2  支持只读段位置无关(ROPI)的ATPCS                  

6. 3. 3  支持可读写段位置无关(RWPI)的ATPCS                  

6. 3. 4  支持ARM程序和Thumb程序混合使用的ATPCS                  

6. 3. 5  处理浮点运算的ATPCS                  

                  

第7章  ARM程序和Thumb程序混合使用                  

7. 1  概述                  

7. 2  在汇编语言程序中通过用户代码支持interwork                  

7. 2. l  可以实现程序状态切换的指令                  

7. 2. 2  与程序状态切换相关的伪操作                  

7. 2. 3  进行状态切换的汇编程序实例                  

7. 3  在C/C++程序中实现interwork                  

7. 4  在汇编语言程序中通过连接器支持interwork                  

7. 4. l  利用veneers实现汇编程序间的程序状态切换                  

7. 4. 2  利用veneers实现汇编程序与C/C++程序间的程序状态切换                  

                  

第8章  C\C++以及汇编语言的混合编程                  

8. l  内嵌汇编器的使用                  

8. 1. l  内嵌的汇编指令用法                  

8. 1. 2  内嵌的汇编器和armasm的区别                  

8. l. 3  在C\C++程序中使用内嵌的汇编指令                  

8. 1. 4  内嵌汇编指令的应用举例                  

8. 2  从汇编程序中访问C程序变量                  

8. 3  汇编程序. C程序以及C++程序的相互调用                  

8. 3. l  在C++程序中使用C程序头文件                  

8. 3. 2  汇编程序. C程序以及C++程序的相互调用举例                  

                  

第9章  异常中断处理                  

9. 1  ARM中异常中断处理概述                  

9. 1. 1  ARM体系中异常中断种类                  

9. 1. 2  异常中断向量表及异常中断优先级                  

9. 1. 3  异常中断使用的寄存器                  

9. 2  进入和退出异常中断的过程                  

9. 2. 1  ARM处理器对异常中断的响应过程                  

9. 2. 2  从异常中断处理程序中返回                  

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

9. 3. 1  在系统复位时安装异常中断处理程序                  

9. 3. 2  在C程序中安装异常中断处理程序                  

9. 4  SWI异常中断处理程序                  

9. 4. 1  SWI异常中断处理程序的实现                  

9. 4. 2  SWI异常中断调用                  

9. 5  FIQ和IRQ异常中断处理程序                  

9. 5. 1  IRQ/FIQ异常中断处理程序                  

9. 5. 2  IRQ异常中断处理程序举例                  

9. 6  复位异常中断处理程序                  

9. 7  未定义指令异常中断                  

9. 8  指令预取中止异常中断处理程序                  

9. 9  数据访问中止异常中断处理程序                  

                  

第10章  ARM   C/0++编译器                  

10. 1  ARM C/C++编译器概述                  

10. 1. 1  ARM C/C++编译器及语言库介绍                  

10. l. 2  ARM编译器中与搜索路径相关的一些基本概念                  

10. 2  ARM编译器命令行格式                  

10. 2. l  过程调用标准                  

10. 2. 2  设置源程序语言类型                  

10. 2. 3  指定搜索路径                  

10. 2. 4  设置预处理选项                  

10. 2. 5  设置输出文件类型                  

10. 2. 6  指定目标处理器和ARM体系版本                  

10. 2. 7  生成调试信息                  

10. 2. 8  代码生成的控制                  

10. 2. 9  控制警告信息的产生                  

10. 2. 10  编译时进行的一些额外的检查                  

10. 2. 11  控制错误信息                  

10. 3  ARM编译器中的pragmas                  

10. 4  ARM编译器特定的关键词                  

10. 4. 1  用于声明函数的关键词                  

10. 4. 2  用于声明交量的关键词                  

10. 4. 3  用于限定数据类型的关键词                  

10. 5  ARM编译器支持的基本数据类型                  

10. 6  ARM编译器中预定义宏                  

10. 7  ARM中C/C++库                  

10. 7. 1  ARM中C/C++运行时库概述                  

10. 7. 2  建立一个包含C/C++运行时库的C/C++应用程序                  

10. 7. 3  建立不包含C运行时库的应用程序                  

10. 7. 4  裁减C/C++运行时库以适应特定的目标运行环境                  

                  

第11章  ARM连接器                  

11. 1  ARM映像文件                  

11. 1. 1  ARM映像文件的组成                  

11. 1. 2  ARM映像文件的入口点                  

11. 1. 3  输入段的排序规则                  

11. 2  ARM连接器介绍                  

11. 3  ARM连接器生成的符号                  

11. 3. 1  连接器生成的与域相关的符号                  

11. 3. 2  连接器生成的与输出段相关的符号                  

11. 3. 3  连接器生成的与输入段相关的符号                  

11. 4  连接器的优化功能                  

11. 5  运行时库的使用                  

11. 5. 1  C/C++运行时库与目标文件                  

11. 5. 2  查找需要的C/C++运行时库                  

11. 5. 3  选择合适种类的C/C++运行时库                  

11. 5. 4  扫描C/C++运行时库                  

11. 6  从一个映像文件中使用另一个映像文件中的符号                  

11. 6. 1  symdefs文件                  

11. 6. 2  建立symdefs文件                  

11. 6. 3  symdefs文件的使用                  

11. 7  隐藏或者重命名全局符号                  

11. 7. l  steering文件的格式                  

11. 7. 2  steering文件中的命令                  

11. 8  ARM连接器命令行选项                  

11. 9  使用scatter文件定义映像文件的地址映射                  

11. 9. l  scatter文件概述                  

11. 9. 2  satter文件中各部分介绍                  

11. 9. 3  scatter文件使用举例                  

                  

第12章  嵌入式应用程序示例                  

12. l  嵌入式应用程序设计的基本知识                  

12. 1. 1  嵌入式应用系统中的存储映射                  

12. 1. 2  系统初始化                  

12. 2  使用semihosting的  C语言程序示例                  

12. 2. 1  源程序分析                  

12. 2. 2  生成映像文件                  

12. 3  一个嵌入式应用系统示例                  

12. 3. l  源程序分析                  

12. 3. 2  生成映像文件                  

12. 3. 3  本例中地址映射模式                  

12. 4  进行ROM/RAM地址重映射的嵌入式应用系统                  

12. 4. l  地址映射模式                  

12. 4. 2  源程序分析                  

12. 4. 3  生成映像文件                  

12. 5  一个嵌入式操作系统示例                  

                  

第13章  使用CodeWarrior                  

13. 1  CodeWarrior for ADS概述                  

13. 2  简单工程项目的使用                  

13. 2. 1  工程项目窗口                  

13. 2. 2  简单工程项目的使用                  

13. 3  配置生成目标                  

13. 3. 1   Debug  Settings对话框介绍                  

13. 3. 2 设置牛成目标的基本选项                  

13. 3. 3  汇编器选项设置                  

13. 3. 4  编译器的选项设置                  

13. 3. 5  连接器的选项设置                  

13. 3. 6  fromELF工具的选项设置                  

13. 4  复杂工程项目的使用                  

13. 4. l  建立一个新的生成目标                  

13. 4. 2  将一个生成目标更名                  

13. 4. 3  建立生成目标之间的依赖关系                  

13. 4. 4  子工程项目的使用                  

13. 5  工程项目模板                  

13. 5. 1  ADS中工程项目模板的使用                  

13. 5. 2  建立用户工程项目模板                  

13. 6  编译和连接工程项目                  

13. 6. 1  编译文件                  

13. 6. 2  生成工程项目                  

                  

第14章  ARM体系中的调试方法                  

14. 1  ARM体系中调试系统概述                  

14. 2  基于Angel的调试系统                  

14. 2. l  基于Angel的调试系统的概述                  

14. 2. 2  使用Angel开发应用程序                  

14. 2. 3  Angel执行的操作                  

14. 2. 4  将Angel移植到特定的目标系统                  

14. 3  基于JTAG的调试系统                  

14. 3. l  基于JTAG的调试系统的特点                  

14. 3. 2  基于JTAG的调试系统结构                  

14. 3. 3  目标系统中的调试功能扩展部件                  

14. 3. 4  基于JTAG的调试过程                  

14. 4  ADW使用介绍                  

14. 4. 1  ADW概述                  

14. 4. 2  ADW中的窗口                  

14. 4. 3  ADW使用介绍                  

[UseMoney=2]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-1-16 09:14:00 | 显示全部楼层
没m[em04]
点评回复

使用道具 举报

发表于 2006-1-18 09:51:00 | 显示全部楼层
哈哈,谢谢了!
点评回复

使用道具 举报

发表于 2006-1-18 10:58:00 | 显示全部楼层
赔了!!!有这本书!
点评回复

使用道具 举报

发表于 2006-1-18 17:17:00 | 显示全部楼层
没钱了,下不了part1
点评回复

使用道具 举报

发表于 2006-1-20 15:19:00 | 显示全部楼层
好好,谢谢,我有纸面书,现在有电子文档!
点评回复

使用道具 举报

发表于 2006-2-8 09:46:00 | 显示全部楼层
1.ARM简介(摘录)            


  ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
  ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
  目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
  ARM架构是面向低预算市场设计的第一款RISC微处理器。
  2.产品介绍
  ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。
   ①CPU内核
   --ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。
  -- ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。
  --ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard总线。在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。
  ②体系扩展
  -- Thumb:以16位系统的成本,提供32位RISC性能,特别注意的是它所需的内存容量非常小。
  ③嵌入式ICE调试
  由于集成了类似于ICE的CPU内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。
  ④微处理器
  --ARM710系列,包括ARM710、ARM710T、ARM720T和ARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。
   --ARM940T、920T系列:低价、低能耗、高性能系统微处理器,配有Cache、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。
  --StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术,与DEC联合研制,后来授权给Intel。SA110处理器、SA1100 PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。
  --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是一种性价比较好的选择。由于目前ARM在手持设备市场占有90%以上的份额,只支持ARM,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。由于ARM开放其处理器授权,因此,用户在市场上可以在多家整机厂商中进行选择,从而保证了这一市场的竞争性。

2. ARM芯片CL-PS7111主要特点

 

电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz. 13MHz位节电模式, 性能相当于33MHz Inter 486 PC

ARM710A内核

·       ARM7 CPU

·       8K 4向缓存(cache)

·       MMU 带有64入口TLB(Transition Look-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-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

·       每个像素点的位数可编程1,2,4位

计时器和实时时钟

·       两个16位计时器(Timer counter)和一个32位实时时钟(RTC)

 

3. 调试工具及调试方法

a.      ARM Project Manager (APM) include ARM Debuger: 这个工具由ARM提供主要是开发程序, 编程调试ARM芯片, 有相当不错的开发环境和远端调试功能, 支持汇编和C. 它带有一个ARM自己的嵌入式操作系统ARM Angel, 用户可以在它的上面开发自己的嵌入式软件, 不过这个操作系统不是实时多任务的.

b.      通过计算机串口与处理器UART相连,设置计算机的超级终端 ( Hyper Terminal ), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令, 用Beep报警也是经常用的. 这种调试方法是用于底层调试硬件,找出硬件存在的问题.

c.      VxWorks 在Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.

需要说明的是:上述方法是在没有硬件仿真器的情况下采用的,仿真器是底层调试硬件程序最好,最简便直观的办法。

 

4.  ARM7 编程要点及示例

    ARM编程可参考程序示例 ARM_Boot    Flash ROM驱动

VxWorks image 装入ARM的过程:
   ARM7 有两种运行模式, Boot 模式和 Normal 模式, Boot模式主要是把程序装入(down load 或load )Flash ROM中用的, Normal模式是一般运行程序用的.

   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程序


写入完毕后,切换到Normal模式重新启动系统,系统自动跳到FLASH 0X00000000开始运行VXWORKS。

用PC机上的COM1与ARM内部的UART1(COM)通信来Download VxWorks。



主要管脚定义
    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..

    外部中断信号EINT, EXTFIQ.

        编程时要根据主板原理图和硬件手册进行.            

a.    看硬件图纸, 该芯片和CPU的那些管脚连结. 特别是 PORT 口和片选线.

b.  查CPU手册, 得到PORT 口和该片选的硬件地址.

c.    编程: 用PORT口直接对芯片操作,如开,关,RESET等, 用片选地址和芯片内地址结合对该外围芯片操作.

 

Exception vectors, 中断向量表及中断分配
  

Vector 地址
Exception
Exception Mode
Priority(1=High)

0x0
Reset
Svc
1

0x4
Undefined Instruction
Undef
6

0x8
Software Interrupt
Svc
6

0xC
Prefetch Abort
Abort
5

0x10
Data Abort
Abort
2

0x14
Reserved
Not applicable
Not applicable

0x18
Interrupt (IRQ)
irq
4

0x1C
Fast Interrupt (FIQ)
Fiq
3


 

这个向量表必须要放置在系统地址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              0C - Instruction fetch aborts

LDR pc,DAbortV              10 - Data access aborts

LDR pc,UnusedV           14 - Reserved (was address exception)

LDR pc,IRQV  18 -           IRQ interrupts

LDR pc,FIQV                   1C - FIQ interrupts

 

 

中断号分配 (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 为空







 

中断号也是寄存器INTMR和INTSR的位,所以在ARM中中断的编程要点是

a.      看硬件图纸, 该外设和CPU的那一个管脚连结.

b.      查CPU手册, 得到中断号及INTMR,INTSR的地址.

c.      编程

注: 如果不是写底层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
  

0xE000.0000
Unused
256Mbytes
  

0xD000.0000
DRAM Bank 1
256Mbytes
  

0xC000.0000
DRAM Bank 0
256Mbytes
外接DRAM

0x8000.2000
Unused
--1Gbytes
  

0x8000.0000
内部寄存器地址
8Kbytes
主要的I/O和控制

0x7000.0000
Boot ROM
128 bytes
片内,封有Boot程序

0x6000.0000
On-chip SRAM
2 Kbytes
片内,存放Load程序

0x5000.0000
PCMCIA-1(NCS[5])
4*64 Mbytes
  

0x4000.0000
PCMCIA-0(NCS[4])
4*64 Mbytes
  

0x3000.0000
外部扩展(NCS[3])
256Mbytes
  

0x2000.0000
外部扩展(NCS[2])
256Mbytes
  

0x1000.0000
ROM Bank 1(NCS[1])
256Mbytes
  

0x0000.0000
ROM Bank 0(NCS[0])
256Mbytes
外接Flash ROM


 

   

    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

Low Address
0x0000.1000

High Address
0x0060.0000

ROM
 
0x0100.0000

 

 

 

其他的地址逻辑地址和物理地址映射地址不变

0x8000.0000
内部寄存器

..................

.................




相同的颜色映射对应的地址

 

 

 

 

 

 
ROM
0x0000.0000
VxWorks image和文件系统

RAM
首地址
0xC000.0000
存放LCD,MMU表等


0xC004.0000
中断向量表等

0xC004.1000
VxWorks运行位置

0xC064.0000
VxWorks从ROM解压后Copy的位置



其他的地址映射地址不变

0x8000.0000
内部寄存器

..............

..............
点评回复

使用道具 举报

发表于 2006-2-10 12:20:00 | 显示全部楼层
扫描版的,效果好差,买亏了
点评回复

使用道具 举报

发表于 2006-2-28 17:35:00 | 显示全部楼层
<P>这是什么啊,看不明白</P>
点评回复

使用道具 举报

发表于 2006-5-11 13:17:00 | 显示全部楼层
<P>经典教程,扫描版是差了点但,总比没得看好!</P>[em08]
点评回复

使用道具 举报

发表于 2006-5-18 16:14:00 | 显示全部楼层
好书。想买来看看
点评回复

使用道具 举报

发表于 2006-5-19 12:29:00 | 显示全部楼层
扫描效果不怎么样,不清楚
点评回复

使用道具 举报

发表于 2006-6-8 09:42:00 | 显示全部楼层
全面地介绍了arm,如果要精通,还是要选本专门介绍某一型号的芯片的书
点评回复

使用道具 举报

发表于 2006-7-1 12:39:00 | 显示全部楼层
<P>内容比较充实阿,谢谢楼主</P>
点评回复

使用道具 举报

发表于 2006-7-2 07:54:00 | 显示全部楼层
<P>谢谢啦,楼主</P>[em08]
点评回复

使用道具 举报

发表于 2006-10-13 17:35:00 | 显示全部楼层
貌似不错的样子
点评回复

使用道具 举报

发表于 2006-11-2 09:07:00 | 显示全部楼层
連2RDB都沒有,窮啊
点评回复

使用道具 举报

发表于 2006-11-6 19:41:00 | 显示全部楼层
好书!!!!!!!!!!!
点评回复

使用道具 举报

发表于 2006-11-9 21:05:00 | 显示全部楼层
静电东东
点评回复

使用道具 举报

发表于 2010-5-30 12:18:00 | 显示全部楼层

sdf

xiexie!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-9 04:23 , Processed in 0.056751 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表