1-5章《ARM嵌入式C编程标准教程》PPT学习课件_第1页
1-5章《ARM嵌入式C编程标准教程》PPT学习课件_第2页
1-5章《ARM嵌入式C编程标准教程》PPT学习课件_第3页
1-5章《ARM嵌入式C编程标准教程》PPT学习课件_第4页
1-5章《ARM嵌入式C编程标准教程》PPT学习课件_第5页
已阅读5页,还剩185页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、另一个特征是可以在加载数值的同时进行算术和移位操作。它可以在几种模式下操作,包括通过使用SWI(softwarinterrupt软件中断)指令从用户模式进入到系统模式。,2,ARM处理器是一个综合体,ARM公司自身并不制造微处理器。它们是由ARM的合作伙伴(Intel或LSI)制造。ARM还允许将其处理器通过协处理器接口进行紧耦合。它还包括几种内存管理单元的变种,包括简单的内存保护到复杂的页面层次。 ARM微处理器系列包括ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCode系列和Intel的Xscale。其中,ARM7、ARM9、ARM9E和ARM10E为4个通用处

3、理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。例SecurCore系列专门为安全要求较高的应用而设计。,3,1.1.1 ARM7系列微处理器,ARM7系列微处理器是低功耗的32位RISC处理器,最适合用于对价位和功耗要求较低的消费类应用。ARM7系列有如下特点: 具有嵌入式ICERT (Internet Communications Engine-Route因特网通信)逻辑,调试开发方便。 极低的功耗,适合对功耗要求较低的应用,如便携式产品。 能够提供0.9MIPS(Million Instructions Per Second百万条/秒)/MHz的三级流水线结构。 对操

4、作系统的支持广泛,如Windows CE、Linux、Palm OS等。 指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。 主频最高可达130MHz,高速的运算处理能力能胜任绝大多数的复杂应用。,4,ARM7系列微处理器主要应用于工业控制、Internet设备、网络和调制解调器设备、 移动电话等多种多媒体和嵌入式应用。 ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TDMI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义如下: T 支持16

5、位压缩指令集Thumb(ARM体系结构中一种16位的指令集)。 D 支持片上Debug。 M 内嵌硬件乘法器(Multiplier)。 I 嵌入式ICE,支持片上断点和调试点。,5,1.1.2 ARM9系列微处理器,ARM9系列微处理器在高性能和低功耗特性方面提供最佳的表现。具有以下特点: 5级流水,指令执行效率更高。 提供1.1MIPS/MHz的哈佛结构。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA(Advanced Microcontroller Bus Architecture)总线接口。 全性能的MMU,支持WindowsCE、Linux、Palm OS

6、等多种主流嵌入式操作系统。 MPU支持实时操作系统。 支持数据Cache(高速缓冲存储器)和指令Cache,具有更高的指令和数据处理力。 ARM9系列微处理器主要应用于无线设备,仪器仪表,安全系统,机顶盒,高端打印机,数字照相机和数字摄像机等。 ARM9系列微处理器包括ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。,6,1.1.3 ARM9E系列微处理器,ARM9E系列微处理器的主要特点如下: 支持DSP指令集,适合于需要高速数字信号处理的场合。 5级流水线,指令执行效率更高。 支持32位ARM指令集和16位Thumb指令集。 支持32位的高速AMBA总线接口

7、。 支持VFP9浮点处理协处理器。 全性能的MMU,支持众多主流嵌入式操作系统。 支持数据Cache和指令Cache,具有更高的处理能力。 主频最高可达300MHz。 ARM9E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。 ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。,7,1.1.4 ARM10E系列微处理器,ARM10E系列微处理器的主要特点如下: 支持DSP指令集,适合于需要高速数字信号处理的场合。 6级流水线,指令执行效率更高。 支持32位ARM指令集和16位T

8、humb指令集。 支持32位的高速AMBA总线接口。 支持VFP10浮点处理协处理器。 全性能的MMU,支持众多主流嵌入式操作系统。 支持数据Chche和指令Chche,具有更高的处理能力。 主频最高可达400MHz。 内嵌并行读/学操作部件。 ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。 ARM10E系列微处理器包括ARM1020E、ARM1002E和ARM1026JE-S三种类型,以适用于不同的应用场合。,8,1.1.5 ARM920T简介,ARM920T高缓存处理器是ARM9 Thumb系列中高性能的32位单片系统处理器。 而A

9、RM920T系列微处理器包含如下几种类型的内核。 ARM9TDMI:只有内核。 ARM940T:由内核、高速缓存和内存保护单元(MPU)组成。 ARM920T:有内核、高速缓存和内存管理单元(MMU)组成。 ARM920T提供完善的高性能CPU子系统,包括以下方面: ARM9TDMI RISC 整数CPU。 16K字节指令与16K字节数据缓存。 指令与数据存储器管理单元(MMU)。 写缓冲器。 高级微处理器总线架构(AMBA)总线接口。 ETM(内置追踪宏单元)接口。,9,ARM920T中的ARM9TDMI内核可执行32位ARM及16位Thumb指令集。ARM9TDMI处理器是哈佛结构,有包括

10、取指、译码、执行、存储及写入的5级流水线。 ARM920T处理器包括以下两个协处理器。 CP14:控制软件对调试信道的访问。 CP15:系统控制处理器,提供16个额外寄存器来配置与控制缓存、MMU、系统保护、 时钟模式及其他系列选项。 ARM920T处理器的主要特征如下。 ARM9TDMI内核,ARM v4T架构。 两套指令集:ARM高性能32位指令集和Thumb高代码密度16位指令集。,10,5级流水线结构,即取指(F)、指令译码(D)、执行(E)、数据存储访问(M)和写寄存器(W)。 16K字节数据缓存,16K字节指令缓存。 写缓冲器:16字的数据缓冲器,4地址的地址缓冲器,软件控制消耗。

11、 标准的ARMv4存储器管理单元(MMU):区域访问许可,允许以1/4页面大小对页面进行访问,16个嵌入域,64个输入指令TLB及64个输入数据TLB。 8位、16位、32位的指令总线与数据总线。,11,1.1.6 SecurCore (可靠内核技术)系列微处理器,SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,在系统安全方面具有如下特点: 带有灵活的保护单元,确保操作系统和应用数据的安全。 采用软内核技术,防止外部对其进行扫描探测。 可集成用户自己的安全特性。 SecurCore系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行

12、业务、网络和认证系统等领域。 SecurCore系列微处理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCour SC210四种类型,以适用于不同的应用场合。,12,1.1.7 StrongARM (超强性能ARM技术)系列微处理器,Intel StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intel公司的设计和处理技术,以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构,同时采用具有Intel技术优点的体系结构。Intel StrongARM处理器是便捷式通

13、信产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。,13,1.2 ARM体系结构的发展,1.2.1 ARM体系结构的发展 在过去的十年中,ARM处理器经历了从简单的ARM7TDMI内核发展到最新ARM11EJ-S内核,ARM当前有5个产品系列ARM7、ARM9、ARM9E、ARM10、 SecurCore和ARM11。 从简单的三级流水线到先进的8级流水线结构。用单个时钟来进行比较,性能差别不大。 ARM11是ARM家族中性能最强的一个系列。 ARM7TM 通常只能在200MHz以下的频率运行;ARM11系列处理器展示了在性能上的巨大提升,首先推出350M500MHz时

14、钟频率的内核,在未来将上升到1GHz时钟频率。 ARM11处理器在提供高性能的同时,也允许在性能和功耗间做权衡以满足某些特殊应用。通过动态调整时钟频率和供应电压,开发者完全可以控制这两者的平衡。在0.13um工艺,1.2v条件下,ARM11处理器的功耗可以低至0.4mW/MHz。,14,ARMv6结构体系: ARM11处理器的超强性能是由一系列的架构特点所决定的。ARMv6是决定性能的基础。 总的来说,ARMv6架构通过以下几点来增强处理器的性能: 多媒体处理功能扩展 MPEG4编码/解码加快一倍 音频处理加快一倍 增强的Cache结构 实地址Cache 减少Cache的刷新和重载 减少上下文

15、切换的开销 增强的异常和中断处理 使实时任务的处理更加迅速 使数据共享、软件移植更简单,也有利于节省存储器空间,15,对绝大多数应用来说,ARMv6保持了100%的二进制向下兼容,使用户过去开发的程序可以进一步继承下去。ARMv6保持了所有过去架构中的T(Thumb指令)和E(DSP指令)扩展,使代码压缩和DSP处理特点得到延续;为了加速Java代码执行速度的ARM Jazalle技术也继续在ARMv6架构中发挥重要作用。,16,1.2.2 ARM11处理器的内核特点,ARM11是为了更有效的提高处理器能力而设计的。该系列主要有ARM1136J、ARM1156T2和ARM1176JZ三个内核型

16、号 ,ARM11处理器使用130nm工艺,在2.2mm芯片面积上和0.24mW/MHz的前提下主频高达500MHz。ARM11处理器以消费产品市场为目标,推出了许多新的技术,包括针对多媒体处理的SIMD(Single instruction Multiple Data 单指令多数据流),用以提高安全性能的TrustZone(通过硬件和软件结合,为片上数据提供安全环境)技术,智能能源管理IEM(In-Ear Monitoring 耳内监听),以及非常高的、超过2600倍 Dhrystone 2.1标准(测量处理器的运算能力标准) MIPS(百万条指令/每秒) 性能的多处理器技术。,17,上面对几

17、个ARM处理器内核做了简单的介绍。可以注意到,随着处理器内核技术的发展,处理器的速度越来越快,其主要得益于ARM流水线的技术发展。 ARM1176JZF-S处理器专门用于包括数字电视、机顶盒、游戏机以及手机在内的家电产品和无线产品。这一处理器采用ARM Java加速技术、ARM TrustZone技术以及一个矢量浮点(VFP)协处理器,为嵌入式3D图像提供强大的加速功能。,18,1.2.3 DSP功能,DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、

18、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片 目前有很多应用要求多处理器的配置(多个ARM内核,或ARM+DSP的组合),ARM11处理器从设计伊始就注重更容易地与其他处理器共享数据,以及从非ARM的处理器上移植软件。此外,ARM还开发了基于ARM11系列的多处理器系统MPCORE(由二个到四个ARM11内核组成)。,19,1.3 ARM体系结构的存储器格式,首先来了解ARM体系结构中的字长: 字(Word),在ARM体系结构中,字的长度为32位,

19、而在8位/16位处理器体系结构中,字的长度一般为16位。 半字(Half Word),在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。 字节(Byte),在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。 指令长度可以是32位(ARM状态下),也可以为16位(Thumb状态下)。 ARM920T中支持字节(8位)、半字(16位)、字(32位)3种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。 ARM920T体系结构将存储器看成是从零地址开始的字节的线性组合。从0字节到3字节放置第1个存储的字数据,从第4个字节到第7个字节放置第2个存

20、储的字数据,依次排列。,20,作为32位的微处理器,ARM920T体系结构所支持的最大寻址空间位4GB(2字节)。 ARM920T体系结构支持两种方法存储字数据,即大端(Big Enddian )格式和小端(Little Enddian )格式。在大端格式中,字数据的高字节存储在低字节单元中,而字数据的低字节则存放在高地址单元中,如图1.1所示。 在小端存储格式中,低地址单元存放的是字数据的低字节,高地址单元中,存放的是数据的高字节,如图1.2所示。,在基于ARM920T内核的嵌入式系统中,常用小端存储格式来存储字数据。,21,第一章习题与练习 1,嵌入式控制系统按操作系统分,大致可分哪几类,

21、每类的设计方法有什么不同? 2,嵌入式控制不加嵌入式操作系统支持,遇到多线程或局域网问题如何解决? 3,ARM体系中的字,半字和字节各占多少位(bit)? 4, 什么是大端存储 (Big Enddian ) 格式和小端存储 (Little Enddian ) 格式,ARM920T内核的嵌入式系统中,常用哪种存储格式来存储字数据? 5, 什么是Thumb指令集?它和32位ARM指令集的区别?,22,第二章ADS 1.2开发环境创建与简介,2.1 ADS1.2开发环境创建 2.1.1 ADS1.2概述 ADS是个集成开发环境,主要包括编译器、链接器、调试器、C和C+库等,是ARM公司推出的新一代A

22、RM集成开发工具。最新版本是ADS1.2,该版本支持包括Windows和Linux在内的多种操作环境。ADS1.2的组成如下所述。 1. 编译器 ADS提供多种编译器,以支持ARM和Thumb指令的编译,主要有: armcc:是ARM C编译器。 tcc:是Thumb C编译器。 armcpp:是ARM C+编译器。 tcpp:是Thumb C+编译器。 armasm:是ARM和Thumb的汇编语言编译器。,23,2. 链接器 armlink是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目标文件

23、,以供进一步的链接。 3 符号调试器 armsd是ARM和Thumb的符号调试器,能进行源码级程序调试。用户可以在用C或汇编语言写的代码中进行单步调试、设置断点、查看变量值和内存单元的内容。,24,4 fromELF 将ELF格式的文件转换为各种格式的输出文件,包括BIN格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六进制文件。FromELF命令也能够为输入映像文件产生文本信息,例如代码和数据长度。 5 armar armar是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几

24、个ELF文件。,25,6 CodeWarrior CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理开发用C、C+或者ARM汇编语言编写的程序代码。 7 调试器 ADS中含有3个调试器,即AXD、Armsd和ADW/ADU。 在ARM体系中,可以选择多种调试方式,如Multi-ICE(Multi-processor In-Circuit Emulator)、ARMulator或Angel。 Multi-ICE是一个独立的产品,是ARM公司自己的JTAG在线仿真器,不是由ADS提供的

25、。,26,ARMulator是一个ARM指令集仿真器,集成在ARM的调试器AXD中,提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟。用户可以在硬件尚未做好的情况下开发程序代码,利用模拟器方式调试。 Angel是ARM公司常驻在目标机Flash中的监控程序,只需通过RS-232C串口与PC主机相连,就可以对基于ARM架构处理器的目标机进行监控器方式的调试。 C和C+库,27,ADS提供ANSI C库函数和C+库函数,支持被编译的C和C+代码。用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分,重新进行代码的实现。这就为用户带来了极大的方便,针对自己的应用程序的要求

26、,对与目标无关的库函数进行适当的裁剪。在C库中有很多函数是独立于其他函数的,并且与目标硬件没有任何依赖关系。对于这类函数,用户可以很容易地在汇编代码中使用。 有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。,28,2.1.2 ADS1.2的安装,ADS全称为ARM Developer Suite,是ARM公司推出的新的一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,该版本支持包Windows和Linux在内的多种操作系统。安装步骤如下: 在ADS1.2的安装盘中运行setup.exe,安装ARM Develop

27、er Suite v1.2。出现图2-1对话框和图2-2对话框,同意产权协义,选省缺安装路径(C:Program FilesARMvADS1.2)和典型安装模式(Typiflcation),按Next进入下一步,出现选文件夹、编程语言和当前设定对话框,均按Next,开始安装,如图2-3示。 安装结束,安装许可文件(Install License),这一步可按安装向导进行,单击“下一步”按钮,会出现如图2-4和图2-5所示的对话框。,29,30,31,在图2-5对话框中选浏览(Browser)查许可文件,在Program FilesARMADSV1_2license中选license.dat文件

28、并打开,单击“下一步”按钮,如图2-6,即可完成ADS1.2的安装。 最后,程序还要注册,注册文件在Program FilesARMADSV1_2文件夹中,单击注册文件,即完成程序注册,如图2-7所示。,32,33,2.2 ADS集成开发环境的使用,2.2.1建立一个新工程 运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执行文件,如图2-8所示。,34,还要在Project name栏中输入项目的名称,以及

29、在Location中输入其存放的位置,按确定保存项目。,2.2.2 开发环境设置 在新建的工程中,选择Debug版本,如图2-9,使用Edit|Debug Settings菜单对Debug版本进行参数设置。,35,在如图2-10中,点击Debug Setting 按钮,弹出2-11图,选中Target Setting,36,项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可执行的代码的初始开关。 3. 在如图2-12中,点击ARM Assembler ,在Architecture or Processer,37,栏中选ARM920T。这是项目选择的CPU类型

30、。 4. 在如图2-13中,点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。这是要编译的CPU核。,38,5. 在如图2-14中,点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。该地址是属于SDRAM的地址。,39,在options栏中,如图2-15,Image entry point要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0 x300000000 x33ffff

31、ff中选值,这是64M SDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字节对齐的地址(ARM状态)。通常入口点Image entry point 为0 x30000000,ro_base也为0 x30000000。 在Layout栏中,如图2-16,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。它的

32、作用是通知编译器,整个项目的开始运行,是从该段开始的。,40,41,42,6. 在如图2-17中,即在Debug Setting对话框中点击左栏的ARM fromELF项,在Output file name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。图2-17中使用的是test.bin。,43,7. 到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件

33、安装的目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。 8. 新建项目工程后,就可以执行菜单Project|Add Files把和工程所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group来创建文件夹,然后把加入的文件选中,移入文件夹。或者鼠标放在文件填加区,右键点击,如图2-18所示。,44,先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。读者可根据自己习惯,更改Edit

34、|Preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。如图2-19。,45,2.2.3 ADS1.2下仿真、调试,在ADS1.2下进行仿真调试,首先需要一根仿真调试电缆和JTAG仿真器,用调试电缆把 JTAG仿真器和上位机并口相连, JTAG仿真器的驱动程序为两个动态链接库,也要事先安装。 打开调试软件AXD Debugger。点击File|load image 加载可执行文件xx.axf,打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。点击全速运行,在我们的例子程序中,出现图2-20的界面:,46,最后介绍

35、调试按钮,调试按钮在程序进入AXD Debugge状态时会出现在主菜单项,主要几个调试按钮如图2-21所示。,图2-21,左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部单步执行,第四个把一个函数做为一个语句单步执行,第五个跳出函数。 关于在ADS1.2下进行仿真调试,下面还要祥细介绍。,47,2.2.4 其他开发环境介绍,IAR(瑞典爱亚软件技术咨询公司) Embedded Workbench for ARM 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境,下面简称IAR EWARM。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代

36、码紧凑等特点。故在这里做简单介绍。 IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.42,并提供一个32k 代码限制学习版或30 天时间限制的免费评估版,可以到IAR 公司的网站 下载。 IAR EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。,48,IAR EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM内核

37、、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。 IAR Embedded Workbench for ARM version 4.42 是一个针对ARM 处理器的集成开发环境,包含项目管理器、编辑器、编译连接工具和支持RTOS(嵌入式实时控制系统)的调试工具,在该环境下可以使用C/C+和汇编语言方便地开发嵌入式应用程序。IAR EWARM 的主要模块如下: 项目管理器 功能强大的编辑器 高度优化的IAR ARM C/C+ Compiler IAR ARM Assembler 1 个通用的IAR XLINK Linker IAR XAR 和XLIB 建

38、库程序和IAR DLIB C/C+运行库 IAR C-SPY 调试器(先进的高级语言调试器) 命令行实用程序,49,以下介绍一下EWARM 4.42 版本及其相关配套硬件的一些特点: 1 IAR EWAM 软件的特点 EWARM 4.42 版基本特点 完善的ARM 内核支持 最新支持到ARM11 及Cortex M3 内核 支持的其他ARM 内核 ARM7(ARM7TDMI,ARM7TDMI-S,ARM720T) ARM9(ARM9TDMI,ARM920T,ARM922T,ARM940T,ARM9E,ARM9E-S, ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E

39、-S) ARM10(ARM10E,ARM1020E,ARM1022E,ARM1026EJ-S) XScale(XScale,XScale-IR7) ,50,更加客户化地提供芯片级的支持 完备的各厂商ARM 处理器的C/C+和汇编语言外设寄存器定义文件 支持的芯片厂商有Analog Devices、ARM、Atmel、Cirrus Logic、Freescale、Intel、NetSilicon、 OKI、Philips、Samsung、Sharp、ST 和TI 等 支持Analog Devices、Atmel、Freescale、OKI、Philips、ST 和TI 等厂商的ARM 处理器的F

40、lash Loader 程序 软件集成了400 余个代码例程,对应于各种不同的芯片,位于.armsrcexamples 目录下 进一步改进了编译器速度优化,重写了的浮点运算库 对更多嵌入式操作系统的支持 新增支持OSEK 类操作系统的OSEK Run-Time Interface (ORTI),51,新增支持OSE Epsilon RTOS 的Kernel Awareness 调试 新增支持embOS、SMX、NORTi 等的支持 调试器的增强功能 对堆栈运行的监测功能 配合IAR J-Link 仿真器的新增功能 J-Link TCP/IP 服务器 调试器和IAR J-Link 仿真器协同配合

41、,实现对ARM 处理器的多核调试 对IAR J-Trace 仿真器提供全面的支持 在C-SPY 模拟器中可执行Trace 的模拟 支持同一芯片上多颗Flash 的Flash Loader 程序,以及通用的Flash Loader 开发指南,52, EWARM 软件在芯片级支持方面的特色 完备的各厂商ARM 处理器的C/C+和汇编语言外设寄存器定义文件 大量适合于嵌入式代码的编程语言扩展特性,包括存储器关键字,函数,中断函数,存储器映射I/O 等 针对评估板的例程,包含IAR、Analog Devices、Aiji System、ARM、Atmel、Cirrus Logic、 Freescale

42、、Keil、OKI、Olimex、Pasat、Philips、Phytec、ST 和TI 等厂家的开发支持ARM 或Thumb 模式下大至4G 字节的应用程序 每个函数都能选择在ARM 或Thumb 模式下编译 可生成VFP 向量浮点协处理器代码 支持Analog Devices、Atmel、Freescale、OKI、Philips、ST 和TI 等厂商的ARM 处 器的Flash Loader 程序 支持ARM Angel Debug monitor,53, EWARM 编译器的软件特色 先进的通用编译器优化和针对特定处理器的速度优化及存储器优化功能 轻量运行库,用户可以根据需要自行配置,

43、提供全部源代码 灵活的存储器控制,允许详细地为代码和数据分配地址 去除不需要的函数和变量 C/C+变量和函数连接时全局类型检查 可选的校验和生成功能,用于运行时映象校验 自动将代码和数据放置到非连续的存储器区域 强大的可重定位宏汇编器,支持丰富的命令集和操作符,54, EWARM 调试器的软件特色 . 完全集成的源代码和反汇编程序调试器 . 非常细化的执行控制(函数调用级步进) . 复杂的代码和数据断点 . 丰富的数据监视功能 . Locals,Watch,Auto,Live Watch 和Quick Watch 等变量查看窗口 . 寄存器和存储器查看窗口 . 支持STL 容器,55,. C/

44、C+调用栈窗口,同时还可以显示将要进入的函数 . 双击调用链上的任何函数将更新编辑器、局部变量、寄存器、变量查看和反汇编窗口,以显示在该函数调用时的状态 . 跟踪功能,可以检查执行的历史记录。在跟踪窗口中移动时将更新编辑器和反汇编窗口以显示合适的位置。 . 控制台I/O 仿真 . 中断和I/O 模拟仿真 . 类似C 语言的宏系统,可扩充调试器的功能 . 由主机执行的应用程序系统调用仿真 . 代码覆盖率和执行时间分析工具 . 通用的Flash Loader 程序及开发指南 . 同时支持多颗Flash 的Flash Loader 程序 . 支持OSEK Run-Time Interface (OR

45、TI) . 提供为调试器扩充第三方功能的软件开发包,如RTOS 调试扩充和仿真器驱动扩充 . 命令行调试工具,56, IAR C-SPY 支持的调试方法 . IAR J-Link JTAG 接口(支持所有ARM7 和ARM9 核,通过USB 或TCP/IP 连接) . RDI 接口类的第三方仿真器(Abatron BDI1000 while(1); ,162,/- / 定时器1初始化程序 /- void Timer1_init(void) rGPGCON = rGPGCON /启动定时器1,自动装载 ,163,/- / 定时器中断服务子程序 /- int flag; void _irq Tim

46、er1_ISR( void ) if (flag = 0) rGPGDAT = rGPGDAT ,164,/- / 定时器中断初始化程序 /- void Timer1INT_Init(void) /定时器接口使能 if (rINTPND /开中断; /- / 目标板初始化程序,主函数中只需调用此函数,即可完成目标板的初始化 /-,165,void sys_init(void) MMU_Init(); ChangeClockDivider(1,1); / 1:2:4 ChangeMPllValue(0 xa1,0 x3,0 x1); / FCLK=202.8MHz Isr_Init(); Por

47、t_Init(); Timer1_init(); Timer1INT_Init(); Uart_Init(0,115200); Uart_Select(0); ,166,第四章习题与练习 1,S3C2410的中断模式有哪两种? S3C2410的中断控制寄存器有几个,每个的作用是什么? S3C2410的中断源挂起寄存器和中断挂起寄存器的区别和作用有哪些? 如何清除中断请求? 如何使能某中断源申请的中断? 如何屏蔽某中断源申请的中断? 7, 外部中断0(EXTINT0)通过F口的GPF0、外部中断11(EXTINT11)通过G口的GPG3向CPU申请中断,此时两个口的控制寄存器GPFCON和GPG

48、CON如何设置? 8,阅读例子程序,熟悉中断程序编写步骤。 9,如何绕过项目和仿真器设置以及项目初始化程序的编写困难,快速完成嵌入式程序设计? 10,S3C2410中断有几种触发方式?如何选择中断触发方式?,167,第五章 S3C2410的I/O口和I/O操作,S3C2410芯片上共有71个多功能的输人/输出引脚,它们分为8组I/O端口。 1个23位输出端口(端口A); 2个11位输人/输出端口(端口B, H); 4个16位输入/输出端口(端口C,D,E,G); 1个8位输人/输出端口(端口F)。 可以很容易地通过每组端口来满足不同系统配置和设计的需要。在运行程序之前,必须 对每个用到的引脚功

49、能进行设置。如果某些引脚的复用功能(第二功能)没有使用,那么可以先将该引脚设置为I/O口。,168,5.1 S3C2410 I/O口描述 端口控制寄存器(GPACONGPHCON)。 在S3C2410芯片中,大部分引脚是复用的,所以必须对每个引脚进行配置。端口控制寄存器定义了每个引脚的功能。 端口数据寄存器(GPADATGPHDAT)。如果该端口定义为输出端口,那么可以向PnDAT的相应位写数据。如果该端口定义为输人端端口,可以从PnDAT的相应位读入数据。 端口上拉寄存器(GPBUPGPHUP)。端口上拉寄存器控制每个端口组上拉电阻的使能/禁止。如果某一位为0,则相应的上拉电阻被使能(上电复

50、位状态),端口做输人/输出端口(第一功能口);如果是1则相应的上拉电阻被禁止,端口做多功能口(第二功能口)。如果端口的上拉电阻使能,无论在哪种状态(INPUT、OUTPUT、DATAn、和EINTn等下,)上拉电阻都起作用。,169, 多状态控制寄存器。该寄存器控制数据端口的上拉电阻,包括高阻态、USB 和CLKOUT选项。 外部中断控制寄存器(EXTINTN) 。24个外部中断有各种各样的中断请求信号,EXTINTN寄存器可以配置信号的类型有低电平触发中断请求、高电平触发中断清求、下降沿触发中断请求、上升沿触发中断请求,以及两沿触发方式中断清求。 8个外部中断引脚有数字滤波器(参考数据手册中

51、的EINTFI.Tn)。 有16个外部中断 (E1NT15:0) 用于唤醒CPU。 掉电模式和I/O端口。在掉电模式下仍然保持所有的GPIO状态值,可以参考相应章节的内容。EINTMASK在掉电模式下也不能阻止唤醒CPU。如果EINTMASK屏蔽了EINT15:4的某一位,仍然可以唤醒CPU;但是SRCPND的EINT4:7位和EINT8:23位不能在CPU唤醒后马上被置位。,170,5.2 I/O端口控制寄存器 5.2.1 端口A控制寄存器(GPACON、GPADAT)和功能配置 S3C2410 I/O端口A控制寄存器及端口A功能配置分别如表5-1表5-2所示。 表5-1 S3C2410端口

52、A控制寄存器,171,表5-2 端口A功能配置,GPACON22:0中的某一清零,与该位相对应的引脚为输出口;置位相应的引脚为第二功能端口。 端口被配置为输出引脚后,引脚的状态和相应的位状态一致。当端口被配置为第二功能引脚后,读出来的值不确定。,172,5.2.2 端口B控制寄存器(GPBCON、GPBDAT和GPBUP)和功能配置 表5-3 S3C2410端口B控制寄存器,若端口B被配置为输入端口,则可以从引脚上读入相应的外部输入的数据。如果端口B被配置为输出端口,则向该位写人的数据可以被发送到相应的引脚上。如果该引脚被配置为第二功能引脚,则读出的数据不确定。 若清位GPBUP10:0中的某

53、一位,则允许端口B的相应引脚的上拉功能,否则禁止上拉功能。,173,表5-4 端口B控制寄存器(GPBCON)的配置,5.2.3 端口C控制寄存器(GPCCON、GPCDAT和GPCUP) 和功能配置 端口C控制寄存器(GPCCON、GPCDAT和GPCUP) 和具体配置如表5-5和5-6所示。,174,表5-5 端口C控制寄存器(GPCCON)的配置,表5-6端口C控制寄存器(GPCCON)的配置,175,如果端口C被配置为输人端口,则可以从引脚读入相应外部输入源输入的数据。如果端口C被配置为输出端口,则向寄存器写的数据可以被送往相应的引脚。如果端口C被配置为第二功能引脚,则从该引脚读出的数

54、据不确定。 若清位GPCUP 15:0的某一位,则允许端口C相应引脚的上拉功能,否则禁止上拉功能。 5.2.4 端口D控制寄存器(GPDCON、GPDDAT和GPDUP)和功能配置 端口D控制寄存器(GPDCON)的具体配置情况如表5-7和表-8所示。,表5-7 端口D控制寄存器( GPDCON)的配置,176,表5-8 端口D控制寄存器( GPDCON)的配置,如果端口D被配置为输入端口,则可以从引脚读入相应外部输入源输入的数据。如果端口D被配置为输出端口,则向寄存器写的数据可以被送往相应的引脚。如果端口D被配置为第二功能引脚,则从该引脚读出的数据不确定。 若清位GPDUP15:0的某一位,

55、则允许端口D相应引脚的上拉功能,否则禁止上拉功能。,177,5.2.5 端口E控制寄存器(GPECON、GPEDAT和GPEUP) 和功能配置,表5-9 端口E控制寄存器( GPECON),178,表5-10 端口E控制寄存器(GPECON)的配置,179,端口E控制寄存器(GPECON)的配置如表5-9和5-10所示。 如果端口E被配置为输入端口,则可以从引脚读入相应外部输入源输入的数据。如果端口E被配置为输出端口,则向寄存器写的数据可以被送往相应的引脚。如果端口E被配置为第二功能引脚,则从该引脚读出的数据不确定。 若清位GPEUP15:0的某一位,则允许端口E相应引脚的上拉功能,否则禁止上拉功能 5.2.6 端口F控制寄存器(GPFCON、GPFDAT和GPFUP)和功能配置 端口F控制寄存器(GPFCON)的配置如表5-l1和-12所示。 如果端口F被配置为输入端口,则可以从引脚读入相应外部输入源输入的数据。如果端口F被配置为输出端口,向寄存器写的数据可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论