ARM简介及编程

合集下载

arm原理及编程

arm原理及编程

arm原理及编程ARM原理及编程概述ARM(Advanced RISC Machines)是一种精简指令集计算机(RISC)架构,由ARM公司开发。

ARM架构具有低功耗、高性能和灵活性等特点,广泛应用于移动设备、嵌入式系统和服务器等各个领域。

本文将介绍ARM的基本原理以及相关的编程技术。

一、ARM原理1. RISC架构ARM采用RISC架构,即精简指令集计算机。

RISC架构的特点是指令集精简,指令操作简单,执行速度快,能够高效利用处理器的资源。

ARM的指令集包括数据处理指令、分支跳转指令、访存指令等,这些指令的操作对象是寄存器,而不是内存。

2. 寄存器ARM架构中有一组寄存器,用于存储指令操作的数据。

通常,ARM架构有16个通用寄存器,分别用来存储操作数、地址和中间结果等。

此外,还有一些特殊寄存器,如程序计数器(PC)、堆栈指针(SP)等。

3. 处理器模式ARM架构中有多种处理器模式,用于支持不同的操作和特权级别。

常见的模式有用户模式、系统模式和中断模式等。

不同的模式下,处理器具有不同的权限和功能,可以执行不同的指令。

4. 存储器管理单元(MMU)ARM架构中的MMU负责虚拟地址到物理地址的转换,实现内存的管理和保护。

MMU通过页表机制将虚拟地址映射到物理地址,提供了地址空间的隔离和保护功能。

二、ARM编程1. 汇编语言ARM汇编语言是一种低级语言,用于直接操作处理器的指令和寄存器。

通过编写汇编语言程序,可以实现对底层硬件的直接控制。

ARM汇编语言的语法简洁清晰,可读性强。

2. C语言C语言是一种高级语言,常用于ARM的应用程序开发。

使用C语言编程可以更方便地进行软件开发,减少对底层硬件的直接操作。

ARM提供了C编译器,可以将C语言源代码编译成与ARM架构兼容的机器码。

3. 开发工具ARM编程常用的开发工具有Keil MDK、GCC等。

Keil MDK是一款集成开发环境(IDE),提供了ARM汇编器和C编译器,方便开发者编写和调试ARM程序。

5.ARM指令与编程简介

5.ARM指令与编程简介

进程A和进程B对一个互斥资源的访问
进程A …………………………. ………………………. Spin LDR r1, =semaphore MOV r2, #1 SWP r3, r2, [r1] CMP r3, #1 BEQ spin ……………………… ……………………….. @SET 0 TO [semaphore] 进程B …………………………. ………………………. Spin LDR r1, =semaphore MOV r2, #1 SWP r3, r2, [r1] CMP r3, #1 BEQ spin ……………………… ……………………….. @SET 0 TO [semap/INCLUDE:
GET 文件名 说明:GET将一个源文件包含到当前的源文件中,并将被包含的源文件在 当前位置展开进行汇编处理。INCLUDE和GET作用等效的。伪指令的使用: 在某源文件中定义一些宏指令,用MAP和FIELD定义结构化的数据类型,用 EQU定义常量的符号名称,然后用GET/INCLUDE将这个源文件包含到其他的 源文件中。GET/INCLUDE只能用于包含源文件,包含其他文件则需要使用 INCBIN伪指令。 使用示例: AREA Init , CODE , READONLY GET a1.s ;通知编译器当前源文件包含源文件a1.s GE T C:\a2.s ;通知编译器当前源文件包含源文件C:\ a2.s …… END INCBIN: INCBIN 文件名 说明:INCBIN将一个数据文件或者目标文件包含到当前的源文件中,编译 时被包含的文件不作任何变动的存放在当前文件中,编译器从后面开始继 续处理。 INCBIN a1.dat ;通知编译器当前源文件包含文件a1.dat INCBIN C:\a2.txt ;通知编译器当前源文件包含文件C:\a2.txt……

1-5章《ARM嵌入式C编程标准教程》

1-5章《ARM嵌入式C编程标准教程》
火龙果整理
高等学校嵌入式系统设计教材
ARM9处理器C语言编程标准教程
侯殿有 才华 编著
人民邮电出版社
第一章 ARM技术简介
1.1 ARM处理器简介
火龙果整理
ARM处理器是一种低功耗高性能的32位RISC (精简指令系统) 处理器。本章将其从结构入手进行分析,基于目前流行的 ARM920T核详细描述其硬件结构和编程。 ARM处理器共有31个32位寄存器,而其中16个可以在任何模 式下看到。它的指令为简单的加载与存储指令(从内存加载某个 值,执行完操作后再将其放回内存)。ARM一个有趣的特点是 它所有的指令都带有条件。例如用户可以测试某个寄存器的值, 但是直到下次使用同一条件进行测试时,才能有条件地执行这些 指令。另一个特征是可以在加载数值的同时进行算术和移位操作。 它可以在几种模式下操作,包括通过使用SWI(softwarinterrupt 软件中断)指令从用户模式进入到系统模式。

火龙果整理





· 5级流水线结构,即取指(F)、指令译码(D)、 执行(E)、数据存储访问(M)和写寄存器 (W)。 · 16K字节数据缓存,16K字节指令缓存。 · 写缓冲器:16字的数据缓冲器,4地址的地址 缓冲器,软件控制消耗。 · 标准的ARMv4存储器管理单元(MMU): 区域访问许可,允许以1/4页面大小对页面进行访 问,16个嵌入域,64个输入指令TLB及64个输入 数据TLB。 · 8位、16位、32位的指令总线与数据总线。
1.1.1 ARM7系列微处理器
火龙果整理
ARM7系列微处理器是低功耗的32位RISC处理器,最适合用于 对价位和功耗要求较低的消费类应用。ARM7系列有如下特点: ·具有嵌入式ICE—RT (Internet Communications Engine-Route 因特网通信)逻辑,调试开发方便。 ·极低的功耗,适合对功耗要求较低的应用,如便携式产品。 ·能够提供0.9MIPS(Million Instructions Per Second百万条/ 秒)/MHz的三级流水线结构。 ·对操作系统的支持广泛,如Windows CE、Linux、Palm OS等。 ·指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便 于用户的产品升级换代。 ·主频最高可达130MHz,高速的运算处理能力能胜任绝大多数 的复杂应用。

ARM简介及编程

ARM简介及编程

ARM简介及编程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内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。

arm 汇编 指令

arm 汇编 指令

arm 汇编指令ARM汇编指令是一种用于编写ARM处理器程序的语言。

ARM处理器广泛应用于嵌入式系统和移动设备等领域。

ARM汇编指令与x86汇编指令有所不同,它基于RISC(精简指令集计算机)架构。

下面是一些基本的ARM汇编指令:1. 数据传输指令:用于在寄存器之间传输数据。

例如:- mov:将数据从一个寄存器传输到另一个寄存器。

- ldr:将数据从内存传输到寄存器。

2. 算术指令:用于执行加法、减法、乘法和除法等操作。

例如:- add:加法操作。

- sub:减法操作。

- mull:乘法操作。

- div:除法操作。

3. 逻辑指令:用于执行逻辑操作,如与、或、非等。

例如:- and:与操作。

- or:或操作。

- xor:异或操作。

4. 移位指令:用于对数据进行左移、右移或无符号右移。

例如:- lsr:无符号右移。

- asr:带符号右移。

- ror:循环右移。

5. 比较指令:用于比较两个寄存器的值。

例如:- cmp:比较两个寄存器的值,若相等则返回0,否则返回1。

6. 跳转指令:用于改变程序的执行流程。

例如:- b:条件跳转。

- bl:无条件跳转。

- bx:带状态跳转。

7. 循环指令:用于实现循环操作。

例如:- loop:内部循环。

- ldp:外部循环。

8. 调用指令:用于实现函数调用。

例如:- blx:带状态调用。

- bx:不带状态调用。

9. 系统调用指令:用于实现与操作系统交互的功能。

例如:- swi:执行系统调用。

10. 存储器访问指令:用于访问内存数据。

例如:- str:将数据存储到内存。

- ldr:从内存中加载数据。

以上仅为ARM汇编指令的一部分,实际上,ARM汇编指令还有很多其他功能。

为了更好地理解和使用ARM汇编指令,可以参考相关的教程和手册,并进行实际操作。

ARM汇编语言程序设计

ARM汇编语言程序设计

ARM汇编语言程序设计1.ARM汇编语言概述2.ARM寄存器3.ARM指令ARM指令包括数据处理指令、传输指令、分支指令和其他特殊指令。

(1)数据处理指令:包括算术运算、逻辑运算、移位和旋转、比较和测试等。

(2)传输指令:用于数据的加载和存储,包括复制、分配和堆栈操作等。

(3)分支指令:用于控制程序流,包括无条件跳转、条件跳转和中断处理等。

4.ARM程序设计(1)初始化:程序开始时需要进行系统和寄存器的初始化。

可以将堆栈指针初始化,设置另外的寄存器和内存变量等。

(2)输入输出:程序可能需要从外部设备读取数据或向外部设备写入数据。

可以使用传输指令实现数据的输入和输出。

(3)运算处理:根据程序的需求,进行各种运算处理。

可以使用数据处理指令实现数据的加减乘除、逻辑运算等。

(4)循环和条件控制:根据需要,使用分支指令控制程序的流程。

可以使用无条件跳转、条件跳转和循环指令实现程序的循环和条件控制。

(5)结束:在程序执行完毕后,可以进行清理工作,例如释放内存、关闭设备等。

5.ARM程序设计实例下面是一个简单的ARM汇编程序示例,实现从数组中找到最大值并输出:.global _start.section .dataarray: .word 1, 3, 5, 2, 4max: .word 0.section .text_start:loop:next:在上述示例中,程序首先将数组的地址和最大值的地址加载到寄存器中。

然后使用循环和条件控制指令依次比较数组元素,找到最大值并将其存储在max变量中。

最后将最大值输出,并结束程序。

ARM快速入门教程

ARM快速入门教程ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的处理器系列,被广泛应用于嵌入式系统、移动设备和消费类电子产品中。

本文将为您提供一个简单的ARM快速入门教程,帮助您了解ARM的基本概念和使用方法。

第一部分:ARM概述(200字)第二部分:ARM架构(300字)ARM架构采用RISC设计思想,通过简化指令集和优化硬件设计来提高性能和效率。

ARM处理器具有三个基本特征:简洁的指令集、统一的寄存器文件和可变长度的指令长度。

ARM指令集包括数据传输指令(如加载和存储指令)、算术指令(如加法和乘法指令)、控制指令(如分支和跳转指令)等。

这些指令被编码为16位或32位二进制代码,以提高指令执行效率。

ARM处理器的寄存器文件使用统一的32位寄存器,这意味着所有的寄存器都可以用于存储数据或表示内存地址。

该设计简化了指令集编码,并提高了程序的灵活性和扩展性。

与其他处理器架构相比,ARM指令的长度是可变的。

ARM处理器支持16位和32位的指令,根据实际需要进行选择。

这种设计也有利于降低功耗和提高代码密度。

第三部分:ARM开发环境(400字)要开始使用ARM进行开发,您需要一个ARM开发板、一台计算机和适当的开发环境。

ARM开发板是一种嵌入式系统,其中包含一块ARM处理器和各种外围设备(如闪存、RAM、串口等)。

您可以使用开发板来加载和运行您的ARM代码,并与外部设备进行交互。

第四部分:ARM编程(300字)ARM编程可以使用汇编语言或高级语言进行。

汇编语言是一种低级编程语言,直接对应于CPU的指令集。

使用汇编语言编程可以更加深入地了解和控制ARM处理器的操作。

高级语言(如C/C++)编程可以提高开发效率和代码可读性。

您可以使用C/C++编程语言编写ARM应用程序,然后通过交叉编译器将其编译成ARM指令。

在ARM编程中,您可以使用各种库函数和驱动程序来访问外部设备(如闪存、串口、显示屏等)。

ARM体系结构与编程

ARM体系结构与编程
一、ARM体系结构
ARM(Advanced RISC Machine)是由英国ARM公司开发的一种低功耗、超低成本的处理器架构,是移动设备的首选处理器。

ARM架构的处理器有ARM7、ARM9、ARM11、 Cortex-A8 、Cortex-A15等,它们核心架构特点为以下几点:
1.保护模式。

ARM架构的处理器能够在用户模式和两个高级的保护模式之间来回切换。

2.对齐式存储。

ARM架构的处理器采用对齐方式,其二进制指令必须按照固定的位置排列,以便提高存储空间的利用率。

3.浮点处理单元。

ARM架构的处理器具有浮点数处理功能,使数值运算能够高效率地完成。

4.多级缓存。

ARM架构的处理器将原始数据复制到不同级别的快速缓存中,以便快速访问。

二、ARM程序的编程
1、ARM程序的编写
ARM程序的编写可以使用C语言编写,程序开发者需要掌握ARM架构各种中央处理器扩展指令集的使用方法,以便获得更好的效率。

2、编译ARM程序
ARM程序的编译是使用GNU的gcc编译器进行的,它可以将C语言编写的程序编译成ARM架构的机器码,并可以在ARM架构的处理器上运行。

3、调试ARM程序
ARM程序的调试使用GDB程序调试,它可以提供丰富的调试工具,可以跟踪程序执行的步骤,提供全面的程序反馈信息,可以帮助开发者快速定位程序运行出错的地方。

三、总结。

arm原理及编程

arm原理及编程ARM原理及编程ARM(Advanced RISC Machine)是一种精简指令集计算机(Reduced Instruction Set Computer,RISC)体系结构,广泛应用于移动设备、嵌入式系统以及高性能计算等领域。

ARM架构的特点是指令集精简、功耗低、性能高效,因此备受青睐。

ARM架构的核心原理是RISC,即精简指令集计算机。

相较于传统的CISC(复杂指令集计算机)架构,RISC架构通过简化指令集,提高指令的执行速度和效率。

ARM处理器采用了三级流水线(Fetch、Decode、Execute),通过将指令执行分解为多个阶段,提高了指令的并行度和效率。

此外,ARM还采用了延迟槽、分支预测等技术,进一步提高了指令的执行效率。

ARM架构的编程主要是通过汇编语言和高级语言来实现。

汇编语言是一种低级语言,直接对应机器指令,可以更加精细地控制处理器的行为。

高级语言(如C语言)则是通过编译器将源代码转换为机器码,进而在ARM处理器上执行。

在ARM汇编语言中,最基本的指令包括数据处理指令、分支指令、访存指令等。

数据处理指令用于对寄存器中的数据进行运算和处理,如加法、减法、位运算等。

分支指令用于实现条件跳转和循环等控制流程,通过判断标志位的值来决定是否跳转到指定的地址。

访存指令则用于对内存进行读写操作,通过指定内存地址和寄存器来实现数据的传输。

除了汇编语言,ARM编程还可以使用高级语言进行开发。

C语言是最常用的高级语言之一,通过C语言编写的程序可以在ARM处理器上运行。

C语言提供了丰富的库函数和语法结构,使得程序的开发更加便捷和高效。

通过C语言,可以实现复杂的算法和功能,并与底层的硬件进行交互。

ARM架构的编程也可以使用汇编语言和C语言的混合编程。

通过汇编语言可以实现对处理器底层的精细控制,而通过C语言可以实现逻辑更为复杂的功能。

混合编程可以兼顾高效性和可读性,提高程序的开发效率和性能。

第2 章 ARM体系结构及编程模型(OBE)汇总


ARM9TDMI的五级流水线
2020/6/24
ARM7TDMI与ARM9TDMI流水线比较
3.ARM9TDMI的五级流水线
ARM7TDMI与ARM9TDMI流水线比较
2020/6/24
ARM7和ARM9流水线比较
• 5级流水线的ARM9内核是哈佛架构,拥有独立的 指令和数据总线;指令和数据的读取可以在同一周 期进行;
ARM1020E XScale ARM9E-S ARM966E-S
SIMD Instructions
6
Multi-processing
V6 Memory architecture (VMSA)
Unaligned data
support
ARM1136EJ-S
ARM系列产品命名规则
ARM 926EJ-S
ARM体系结构的特点
• 1) RISC型处理器结构
– (LOAD/STORD, I-cache, D-cache)
• 2)Thumb指令集 (32/16) • 3)多处理器状态模式 (7) • 4)两种处理器工作状态(2) • 5)嵌入式在线仿真调试(ICE-RT ,JTAG) • 6)灵活方便的协处理器接口 (16个) • 7)低电压功耗的设计
ARM体系结构的发展
Halfword
4
1
and signed halfword /
byte support
System
2
mode
SA-110 SA-1110
3
Early ARM architectures
Thumb instruction set
ARM7TDMI
4T
ARM9TDMI
ARM720T
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ARM简介及编程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主要特点[BLOCKQUOTE][BLOCKQUOTE]电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz. 13MHz位节电模式, 性能相当于33MHz Inter 486 PCARM710A内核ARM7 CPU8K 4向缓存(cache)MMU 带有64入口TLB(Transition Look-aside Buffer)DRAM控制器支持16位和32位DRAMROM/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)[/BLOCKQUOTE][/BLOCKQUOTE]3. 调试工具及调试方法[BLOCKQUOTE]ARM Project Manager (APM) include ARM Debuger: 这个工具由ARM提供主要是开发程序, 编程调试ARM芯片, 有相当不错的开发环境和远端调试功能, 支持汇编和C. 它带有一个ARM自己的嵌入式操作系统ARM Angel, 用户可以在它的上面开发自己的嵌入式软件, 不过这个操作系统不是实时多任务的.[/BLOCKQUOTE][BLOCKQUOTE]通过计算机串口与处理器UART相连,设置计算机的超级终端( Hyper Terminal ), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令, 用Beep报警也是经常用的. 这种调试方法是用于底层调试硬件,找出硬件存在的问题.VxWorks 在Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.[/BLOCKQUOTE]4. ARM7 编程要点及示例ARM编程可参考程序示例ARM_Boot Flash ROM驱动VxWorks image 装入ARM的过程:[BLOCKQUOTE]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。

[/BLOCKQUOTE]主要管脚定义[BLOCKQUOTE]32条数据线: D0-------D3128条地址线: A0-------A27 little endian 定义, 相对应数据排列0 1 2 3 4 5 6--------276条片选信号脚: CS0-------CS5, 其实作用相当于地址线A28------A314个8位的PORT口: PORT A, PORT B , PORT D主要用于外围芯片信号的控制. PORT E有双作用.例如PORT A 控制键盘的行信号, PORT B 用于RS232, PORT D 用于控制MODEM, FPGA.. 外部中断信号EINT, EXTFIQ.编程时要根据主板原理图和硬件手册进行. [BLOCKQUOTE]看硬件图纸, 该芯片和CPU的那些管脚连结. 特别是PORT 口和片选线.查CPU手册, 得到PORT 口和该片选的硬件地址.编程: 用PORT口直接对芯片操作,如开,关,RESET等, 用片选地址和芯片内地址结合对该外围芯片操作.[/BLOCKQUOTE][/BLOCKQUOTE]Exception vectors, 中断向量表及中断分配Vector 地址[BLOCKQUOTE]Exception[/BLOCKQUOTE] Exception Mode Priority(1=High)0x0 [BLOCKQUOTE]Reset[/BLOCKQUOTE] Svc 10x4 [BLOCKQUOTE]Undefined Instruction[/BLOCKQUOTE] Undef 60x8 [BLOCKQUOTE]Software Interrupt[/BLOCKQUOTE] Svc 60xC [BLOCKQUOTE]Prefetch Abort[/BLOCKQUOTE] Abort 50x10 [BLOCKQUOTE]Data Abort[/BLOCKQUOTE] Abort 20x14 [BLOCKQUOTE]Reserved[/BLOCKQUOTE] Not applicable Not applicable0x18 [BLOCKQUOTE]Interrupt (IRQ)[/BLOCKQUOTE] irq 40x1C [BLOCKQUOTE]Fast Interrupt (FIQ)[/BLOCKQUOTE] Fiq 3[BLOCKQUOTE][/BLOCKQUOTE][BLOCKQUOTE]这个向量表必须要放置在系统地址0x00000000 (一般是逻辑地址, 即经过MMU映射后的地址)处.[/BLOCKQUOTE][BLOCKQUOTE]一般是在这些地址上放跳转指令BL, 跳到相应的地址空间执行相应的程序.[/BLOCKQUOTE][BLOCKQUOTE]如系统执行从0x00000000 Reset开始, Reset 跳转到某一地址开始运行操作系统.[/BLOCKQUOTE][BLOCKQUOTE][/BLOCKQUOTE][BLOCKQUOTE]程序示例,中断向量表(ARM asm):__VectorStart ; Start of ARM processor vectorsLDR pc,ResetV ; 00 - ResetLDR pc,UndefV ; 04 - Undefined instructionsLDR pc,SWIV ; 08 - SWI instructionsLDR pc,PAbortV ; 0C - Instruction fetch abortsLDR pc,DAbortV ; 10 - Data access abortsLDR pc,UnusedV ; 14 - Reserved (was address exception)LDR pc,IRQV ; 18 - IRQ interruptsLDR pc,FIQV ; 1C - FIQ interrupts[/BLOCKQUOTE]中断号分配(FIQ, IRQ)中断类型中断号Name说明FIQ 0 外部中断EXTFIQ 管脚NEXT FIQ… … … …IRQ 5 外部中断EINT1 管脚NEINT1IRQ 6 外部中断EINT2 管脚NEINT2IRQ 7 外部中断EINT3 管脚NEINT3… … … …IRQ 12 内部中断UTXINT1 UART1 TX FIFO 为空… … … …[BLOCKQUOTE][/BLOCKQUOTE][BLOCKQUOTE]中断号也是寄存器INTMR和INTSR的位,所以在ARM中中断的编程要点是[/BLOCKQUOTE][BLOCKQUOTE]看硬件图纸, 该外设和CPU的那一个管脚连结.查CPU手册, 得到中断号及INTMR,INTSR的地址.编程[/BLOCKQUOTE][BLOCKQUOTE]注: 如果不是写底层driver, 只是在系统上层编程(如VxWorks, Linux) 知道中断号即可.[/BLOCKQUOTE][BLOCKQUOTE]程序示例(VxWorks): [/BLOCKQUOTE][BLOCKQUOTE]//登记中断号5, 和相应的中断例程ComISR.[/BLOCKQUOTE][BLOCKQUOTE] intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ; [/BLOCKQUOTE][BLOCKQUOTE]//使能这中断[/BLOCKQUOTE][BLOCKQUOTE]intEnable ( ( VOIDFUNCPTR * ) 5 );[/BLOCKQUOTE][BLOCKQUOTE]……[/BLOCKQUOTE][BLOCKQUOTE]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.计时器中断编程过程[BLOCKQUOTE]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. 中断状态寄存器标志位复位,计时器开始重新开始计时.[/BLOCKQUOTE][/BLOCKQUOTE]存储空间管理单元(MMU)物理地址映射重点在于片选地址CS的选取,另外MMU映射需要参考这个物理地址[BLOCKQUOTE][/BLOCKQUOTE][BLOCKQUOTE]ARM7 物理地址映射表[/BLOCKQUOTE]地址内容大小备注0xF000.0000 Unused 256Mbytes0xE000.0000 Unused 256Mbytes0xD000.0000 DRAM Bank 1 256Mbytes0xC000.0000 DRAM Bank 0 256Mbytes 外接DRAM0x8000.2000 Unused --1Gbytes0x8000.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 Mbytes0x4000.0000 PCMCIA-0(NCS[4]) 4*64 Mbytes0x3000.0000 外部扩展(NCS[3]) 256Mbytes0x2000.0000 外部扩展(NCS[2]) 256Mbytes0x1000.0000 ROM Bank 1(NCS[1]) 256Mbytes0x0000.0000 ROM Bank 0(NCS[0]) 256Mbytes 外接Flash ROMMMU 虚拟(逻辑)地址和物理地址的映射实例[BLOCKQUOTE]Vxworks支持的ARM架构的处理器,一般是RAM的起始位置为0x0,而实际上ARM的物理地址0x0是ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAM和ROM的地址.即RAM起始地址为0x0.[/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中定义.该表在文件romInit.s中初始化,语句为:BL _ramAtHigh_1(2)[/BLOCKQUOTE]MMU映射实例虚拟(逻辑)地址(VxWorks系统) 硬件物理地址RAM 首地址0x0000.0000Low Address 0x0000.1000High Address 0x0060.0000ROM 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 内部寄存器............................其中,Low Address,High Address在系统配置文件config.h和Makefile中设置,参见BSP文件示例。

相关文档
最新文档