




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM 开发培训班实验指导 V3.0实验目录实验一、熟悉 realview 开发环境21.1 RealView MDK 软件开发环境简介21.1.11.1.21.2RealView MDK 的突出特性2模块介绍2RealView 使用51.2.1 创建一个工程51.2.1.1 选择工具集51.2.1.2 创建工程文件71.2.1.3 选择设备71.2.2 编译、工程81.2.2.11.2.2.21.2.2.3设置目标硬件的工具选项8增加连接文件9编译.91.2.3 程序调试101.2.4 工程选项页概述11实验二、ARM 指令集122.1 ARM 汇编指令 1122.2 ARM 汇编指令 22
2、02.3 ARM 汇编指令 321实验三233.1 LDR/STM 指令寻址实验233.2 ARM 汇编子函数调用253.3 Thumb 汇编指令练习253.4 利用 ARM 汇编实现开发板 LED 灯.25实验四264.1 简单C 语言程序实验264.2 汇编与C 语言的相用实验264.34.44.5C 语言中内联汇编程序实验27C 语言中嵌入型汇编程序实验27SWI 软中断实验284.6 综合编程实验28实验五、I/O 及串口通信编程实验29实验六、中断实验32实验七、实时时钟实验32实验八、看门狗实验33实验九、PWM 接口实验33实验十、A/D 转换实验33实验十一、I2C 串行通信实
3、验341ARM 开发培训班实验指导 V3.0实验一、熟悉 realview 开发环境1.1 RealView MDK 软件开发环境简介RealView MDK 全称 RealView MDK 中国版开发套件,源自德国 Keil 公司,被全球超过10 万的开发工程师验证和使用,是 ARM 公司目前最新推出的对各种处理器的软件开发工具。RealView MDK 集成了业内最领先的技术,包括 Vision3 集成开发环境与RealView 编译器,支持 ARM7、ARM9 和最新的 Cortex-M3 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性
4、能分析等功能,与 ARM 之前的工具包ADS 等相比,RealView 编译器的最新版本可将性能超过 20。1.1.1 RealView MDK 的突出特性菜鸟的飞毯启动代码生成向导,自动引导,一日千里 软件模拟器,完全脱离硬件的软件开发过程性能分析器,看得更远、看得更细、看得更清Cortex-M3 支持 RealView 编译器,代码更小,性能更高配备高手的无剑胜有剑的望远镜未来战士的激光剑业界最优秀的编译器ULINK2器无需安装驱动 轻松实现 Flash 烧写 国际品质,本土价格Flash 编程模块绝对的高性价比1.1.2模块介绍Vision3 IDEVision IDE 在全球拥有庞大的
5、用户群,超过 10 万开发工程师在使用 Keil 开发工具。不管以前是用 8 位、16 位 MCU,还是现在改用 ARM 32 位处理器,Vision IDE 简单易用,能立马上手。2Vision3 IDE启动代码生成向导设备模拟器性能分析器RealView 编译器MircoLibRL-ARM(可选)ULINK2器ARM 开发培训班实验指导 V3.0图 1.1 Vision3 IDEVision3 IDE 主要特性:l功能强大的源代码编辑器;l可根据开发工具配置的设备数据库;l用于创建和维护工程的工程管理器;l集汇编、编译和过程于一体的编译工具;l用于设置开发工具配置的框;l真正集成高速 CP
6、U 及片上外设模拟器的源码级调试器;l高级 GDI 接口,可用于目标硬件的软件调试和 ULINK2器的连接;l用于应用程序到 Flash ROM 中的 Flash 编程器;l完善的开发工具手册、设备和用户向导。启动代码配置向导Vision3 IDE 的启动代码配置向导将各个所需配置的功能模块以框方式展示,附加的提示说明,帮助你快速轻松的做出选择,生成完善的启动代码,免除手工写几百行汇编程序的痛苦。3ARM 开发培训班实验指导 V3.0图 1.2配置启动代码Vision3 设备模拟器Vision3 设备模拟器的功能强大,能模拟整个 MCU 的行为。使你在没有硬件或对目标MCU 没有更深的了解的情
7、况下,仍然可以立即开始开发软件。高效指令集中断片内设备ADC,DAC, EBI,Timers UART,CAN,I2C外部信号和 I/O图 1.3 设备模拟器4ARM 开发培训班实验指导 V3.0性能分析器性能分析器可给所有的 MCU 实现如程序运行时间统计、被调用次数统计、代码覆盖率统计等高端功能,而这些功能对于快速死区代码,帮助优化分析等起了关键的作用。图 1.4 性能分析器RealView 编译器(RVCT)RealView MDK 集成的 RealView 编译器(跟 RVDS 使用一样的编译器),是业界最优秀的编译器,它能使代码容量更小、执行效率更高;使应用程序运行更快、系统成本更低
8、。MicroLib为进一步改进基于 ARM 处理器的应用代码密度,RealView MDK 采用了新型 microlib C库(用于 C 的 ISO 标准运行的一个子集),并将其代码镜像降低最小以满足微器应用的需求。Microlib C 库可将运行代码大大降低。RealView 实RL-ARM(可选)ULINK2器1.2RealView 使用1.2.1 创建一个工程Vision 是一个标准的窗口应用程序,可以点击程序按钮开始运行。为了创建一个新的Vision 工程必须作如下处理:选择工具集 创建工程文件选择设备1.2.1.1 选择工具集Vision 可以使用 ARM RealView 编译工具
9、、 ARM ADS 编译器、GNU GCC 编译器和Keil C ARM 编译器。当使用 GNU GCC 编译器或ARM ADS 编译器时必须另外安装它们编译集。实际使用的工具集可以在 Vision IDE 的 Project Manage- Components, Environment,5ARM 开发培训班实验指导 V3.0and Books框的 Folders/Extensions 页(见下图)中选择。图 1.5 选择工具集Use RealView Compiler 复选框表示本工程使用 ARM 开发工具。RealViewFolder文本框指定开发工具的路径。下面的例子显示了各种版本的
10、ARM ADS/RealView 开发工具的路径:a)b)c)Vision 的 RealView 编译器: BIN31ADS V1.2: C:Program FilesARMADSv1_2BinRealView 评估版 2.1: C:Program FilesARMRVCTPrograms2.1350eval2-scwin_32-pentiumUse Keil CARM Compiler 复选框表示本工程使用 Keil CARM 编译器、Keil AARM 汇编器和 Keil LARM器/装载器。Use GNU Compiler 复选框表示本工程使用 GNU 开发工具。Cygnus Folde
11、r 文本框指定 GNU 的安装路径。GNU-Tool-Prefix 文本框指定不同的 GNU 工具链。下面是各种 GNU版本的例子:a) 带 uclib 的 GNU V3.22: GNU-Tool-Prefix: arm-uclibc- Cygnus Folder:C:Cygnusb) 带标准库的 GNUARM V4: GNU-Tool-Prefix: arm-elf- Cygnus Folder: C:Program FilesGNUARM6ARM 开发培训班实验指导 V3.0Keil 根目录的设置是基于 Vision/ARM 开发工具的安装目录的。对于 Keil ARM 工具来说,工具组件
12、的路径是在开发工具目录中配置的。1.2.1.2 创建工程文件单击 Project -New.-Vision Project 菜单项,Vision 3 将打开一个标准框,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用的文件夹。例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字 Project1,Vision 将会创建一个以 Project1.UV2 为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。这些内容在 Project Workspace-Files 中可以看到。1.2.1.3 选择设备在创建一个新的工程时,Vi
13、sion 要求为这个工程选择一款 CPU。选择设备框显示了 Vision 的设备数据库,只需要选择用户所需的微器即可。例如,选择 Philips LPC2106微器,这个选择设置了 LPC2106 设备的必要工具选项、简化了工具的配置。图 1.6 选择设备注意:当创建一个新的工程时,Vision 会自动为所选择的 CPU 添加合适的启动代码。对于一些设备而言,Vision 需要用户手动地输入额外的参数。请仔细阅读这个框右边的信息,因为它可能包含所选设备的额外配置要求。7ARM 开发培训班实验指导 V3.0创建源文件以后,就可以将这个文件添加到工程中。Vision 提供了几种方法将源文件添加到工
14、程中。例如, 在 Project Workspace -Files 页的文件组上点击鼠标右键,然后在弹出的菜单中选择 Add Files 菜单项,这时将打开标准的文件c 文件即完成源文件的添加。框,选择我们创建的 asm 或1.2.2 编译、工程1.2.2.1 设置目标硬件的工具选项Vision 可以设置目标硬件的选项。通过工具栏按钮或 Project - Options for Target 菜单项打开 Options for Target框,在 Target 页中设置目标硬件及所选 CPU 片上组件的参数。下图是 LPC2106 的一些参数设置。图 1.7 设置目标硬件下表描述了 Targ
15、et框的选项:框项描述设备的晶振(XTAL)频率。大多数基于 ARM 的微器都使用片上 PLLXtal产生 CPU 时钟。所以,一般情况下 CPU 的时钟与 XTAL 的频率是不同的。Read/Only Memory AreaRead/WriteMemory Areas配置片内、片外的 ROM 区地址以及大小指定目标硬件的片内和片外的 RAM 区地址以及大小Code Generation 旋转产生 ARM code 还是 Thumb code8ARM 开发培训班实验指导 V3.01.2.2.2 增加连接文件对于 GNU 和 ARM ADS/RealView 工具链来说器的配置是通过器文件实文件
16、 在文件现的。这个文件指定了 ARM 目标硬件的配置。预配置的器夹.ARMGNU 或.ARMADS 中。 为了与目标硬件相匹配,用户可能会修改器文件,所以工程中的那个文件是预配置的连接文件的一个副本。这个文件可以通过 Project- Options for Target框的 Linker 页添加到工程中。图 1.8 设置 linker 选项对于复杂的 memory layout 分配方式,应该采用 scatter file, 对于简单的工程,直接指定 R/O和 R/W 的基地址即可。1.2.2.3 编译一般来说,在新建一个应用程序的时候 Options -Target 页中的所有的工具和属性
17、都要配置。单击 Build Target 工具栏按钮将编译所有的源文件,应用程序。当编译有语法错误的应用程序时,Vision 将在 Output Window -Build 窗口中显示错误和警告信息。单击这些信息行,Vision 将会到相应的源代码处。9ARM 开发培训班实验指导 V3.0图 1.9 编译结果产生应用程序以后就可开始调试了, 点击 Debug-Start/Stop debug源文件编译session (Ctrl F5)即进入调试模式。1.2.3 程序调试进入调试模式之后,可以选择单步、全速运行。可以设置断点等常规的调试。所有有关调试的操作都可以在 Debug 菜单下找到。如下图
18、所示为进入调试模式下时的界面。图 1.10 simulator 调试常用的调试:lll单步、全速运行程序F10 单步运行, F5 全速运行。对于各种模式下的寄存器,可以在左边的窗口查看10ARM 开发培训班实验指导 V3.0l对于 ARM 的 7 种模式下的寄存器,都可以查看。当处理器处于任何一种模式时,可以查看 Current 中所有的寄存器的值,处理器从一种状态改变到另外一种状态时,该模式下物理上设置断点的寄存器将会被用到。llll选中需要设置断点的行,然后 F9 即在改行设置断点,程序运行到此处就停止运行。查看变量的实时值对于 local 的变量,打开 View-Watch&Call S
19、tack Window,在此 Window 中,选择Locals tab 就可以查看所有的 local 变量。对于全局变量,选择 Watch window 中的 Watch #1, 加入你需要查看的变量就可以l查的全局变量的值。ll外设模块因为我们选择的是 Simulator,所以可以通过 RealView MDK 强大的功能来调试程序。打开 Peripheral-GPIO 可以看到每一个 GPIO pin 的实时状态信息。全速运行程序后,GPIO 的状态就开始按照程序的开始变化。1.2.4 工程选项页概述在 Project - Options框页可以设置所有的工具选项。所有的选项都保存在 V
20、ision工程文件中。在 Project Workspace -Files 窗口点击鼠标右键,在弹出的菜单中可以设置文件夹或单个文件的不同选项,这些选项在文件和文件夹选项中解释过。在这种情况下,可能有附加的属性页及仅与所选项相关的框页。下表概述了各种选项框页框的功能。描述Device Target Output Listing CAsm从 Vision 的设备数据库中选择选择设备。为应用程序指定硬件环境。定义工具链的输出文件,在编译完成后运行用户程序。指定工具链产生的所有列表文件。设置 C 编译器的工具选项,例如代码优化和变量分配。设置汇编器的工具选项,如宏处理。设置器的相关选项。一般来说,器
21、的设置需要配置目标系统的Linker分配。设置器定义器类型和段的位置。DebugVision 调试器的设置。Utilities配置 Flash 编程实用工具。11ARM 开发培训班实验指导 V3.0实验二、ARM 指令集2.1 ARM 汇编指令 1【实验内容】建立一个汇编工程,要求完成两个变量求和,编译通过后,调试结果。【实验目的】会使用 Vision3 IDE for ARM 开发环境及 ARM 软件模拟器; 通过实验掌握简单 ARM 汇编指令的使用方法。【实验步骤】1、新建工程首先在就业班 ARM 课件ARM 实验第 1 天目录下建立文件夹命名为 asm-00,运行 Vision3 IDE
22、 集成开发环境,选择菜单项 Project New Vision Project,系统弹出一个框,按照图2-1所示输入相关内容。点击“保存”按钮,将创建一个新工程asm00.Uv2。图 2-12、为工程选择CPU新建工程后,要为工程选择 CPU,如图 2.2 所示,在此选择 SAMSUNG 的 S3C2410X12ARM 开发培训班实验指导 V3.0图 2-23、添加启动代码在图 2-3 中点“确定”后,会弹出一个示。框,问是否要添加启动代码。如图 2.3 所图 2-3由于本实验是简单的汇编实验,因此不需要启动代码。选择否。4、选择开发工具要为工程选择开发工具,在 Project - Mana
23、ge - Components,Environment and Books- Folder/Extensions框的 Folder/Extensions 页内选择开发工具,如图 2-4 所示。13ARM 开发培训班实验指导 V3.0图 2-4 选择开发工具从图中可以看到,有三个开发工具可选,在此选择 RealView Compiler。5、建立源文件点击菜单项 File - New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑,保存文件 asm1_a.s。6、添加源文件单击工程管理窗口中的相应右键菜单命令,选择 Add Files
24、to,会弹出文件选择对话框,在工程目录下选择刚才建立的源文件 asm1_a.s。如图 2-5 所示。14ARM 开发培训班实验指导 V3.0图 2-57、工程配置选择菜单项 Project-Option for Target,将弹出工程设置框,如图 2-6 所示。框会因所选开发工具的不同而不同,在此仅对 Target 选项页、Linker 选项页及 Debug选项页进行配置。Target 选项页的配置如图 2-6;Linker 选项页的配置如图 2-7;Debug 选项页的配置如图 2-8。需要注意,后面的实验中在 Debug 选项页内需要一个初始化文件:DebugINRam.ini。此.IN
25、I 文件用于设置生成的.AXF 文件到目标中的位置,以及调试前的寄存器、内存的初始化等配置操作。它是由调试函数及调试命令组成调试命令文件。15ARM 开发培训班实验指导 V3.0图 2-6 基本配置 Target图 2-7 基本配置 Linker16ARM 开发培训班实验指导 V3.0图 2-8 基本配置 Debug8、生成目标代码选择菜单项 Project - Build target 或快捷键 F7,生成目标代码。在此过程中,若有错误,则进行修改,直至无错误。若无错误,则可进行9、调试的调试。选择菜单项 Debug - Start/Stop Debug Session 或快捷键 Ctrl+
26、F5,调试模试用版,式。若没有目标硬件,可以用 Vision 3 IDE 中的软件器。如果使用MDK则在进入调试模式前,会有如下框弹出,如图 2-9 所示。图 2-9 在软件确定后即可调试了,做如下调试工作: 参看“asm-00”目录下的代码。下调试程序17ARM 开发培训班实验指导 V3.0图 2.10 ARM 汇编练习-编译,。targetOptionsTarget tabfor“Target1”中设置如下:Linker tab18ARM 开发培训班实验指导 V3.0去掉 “use0x4000000。memorylayoutfromtargetdialog”,R/OBase填0x0,R/W
27、Base填-进入调试模式,开始调试,并注意查看寄存器的值,检查计算结果是否正确。注意:汇编语言的源语句行的一般格式是:label instruction|directive|pseudo-instruction ;comment即使没有标号,指令、伪指令和命令前面也必须有一个空白,例如一个空格或制表符。源语句行的所有三部分都是可选的。可以使用空行来使代码更具可读性。对以上代码的解释:段和 AREA 命令段是最低要求。名的、不可分割的代码或数据序列。一个代码段是个应用程序的汇编或编译的输出可以包括:一个或多个代码段。它们通常是只读段。一个或多个数据段。它们通常是读写段。它们可以是零初始化的 (Z
28、I)。程序依照段位置规则,将每个段放在一个程序映像中。在源文件中相邻的段,不一定要在应用程序映像中相邻。在源文件中,用 AREA 命令来标记一个段的开始。该命令对属性放在名称后面,之间用逗号分隔。ENTRY 命令ENTRY 命令标记要执行的第一个指令。在包含 C 代码的应用命名并设置其属性。,在 C 库的初始化代码中也包含一个点。初始化代码和异常处理程序也包口点。19ARM 开发培训班实验指导 V3.0END 命令此命令指示汇编程序停止处理这个源文件。每个汇编语言源模块必须以一行单独的END 命令结束。2.2 ARM 汇编指令 2【实验内容】使用 add/sub/lsl/lsr/and/orr
29、 等指令,完成基本算术/逻辑运算。【实验目的】会使用 Vision3 IDE for ARM 开发环境及 ARM 软件模拟器; 通过实验掌握简单 ARM 汇编指令的使用方法。【实验步骤】参看“asm-01”目录下的代码按照实验一的方法,新建一个 project,名字为 asm01;添加 asm01.s 文件到项目中。帮助:LDR 指令:LDR 指令用于从内存中将一个 32 位的字到目标寄存器。LDR 指令根据所确定的地址模式将一个 32 位字到指令中的目标寄存器。如果指令中的寻址方式确定的地址不是字对,则读出的数值要进行循环右移。所移位数为寻址方式确定的地址 bits108 的倍,也就是说处理
30、器将取到的数值作为字的最低位处理。如果设置了 L 位,则进行装载,否则进行。如果设置了 P 位,则使用预先变址寻址,否则使用过后变址寻址。如果设置了 U 位,则给出的偏移量被加到基址寄存器上,否则从中减去偏移量。如果设置了 B 位,传送内存的一个字节,否则传送一个字。这在助记符末尾添加后缀“B”,如 MOV r7,r5 变为 MOVB r7,r5。W 位的解释依赖于使用的地址模式。l对于预先变址寻址,设置 W 位强制把它用做地址转换的最终地址写回基址寄存器中(例如,传送的副作用是 Rn:= Rn +/-offset。这在汇编器中表示为给指令加上后缀“!”。)。对于过后变址寻址,地址总是写回,设
31、置 W 位指示在进行传送之前强制地址转换。这在汇编器中表示为给指令加上后缀“T”。ll当 PC 作为 LDR 的目的寄存器时,从序将跳转到目标地址开始执行。器取得的数据将被当作目标地址值,程指令的语法格式 LDR ,它确定了指令编码中的 I、P、U、W、Rn 和位。所有的寻址模式中,都会确定一个基址寄存器 Rn。指令举例 LDR r1,r0,#0x12;将 r0+12 地址处的数据读出,保存到 r1 中(r0 的值不变)20ARM 开发培训班实验指导 V3.0STR 指令:STR 指令用于将一个 32 位的字数据写入到指令中指定的内存单元。指令的语法格式指令举例LDR/STR 指令用于对内存变
32、量的、内存缓冲区数据的、查表、部件的控制操作等等,若使用 LDR 指令加载数据到 PC 寄存器,则实现程序跳转功能,这样也就实现了程序散转。变量GPIO 设置程序散转2.3 ARM 汇编指令 3【实验内容】建立一个汇编工程,要求通过 ARM 汇编指令在各个处理器模式下切换并观察各个模式下处理器的区别。编译通过后,调试结果。【实验目的】21MOV r2,r2,LSL #2;功能号乘以 4,以便查表LDR PC,PC,r2;查表取得对应功能子程序地址,并跳转NOPFUNTAB DCD FUNSUB0DCD FUNSUB1 DCD FUNSUB2GPIOBASE EQU 0xe0028000;定义G
33、PIO 寄存器的基地址LDRR0,=GPIOBASELDRR1,=0x00ffff00;将设置值放入寄存器STRR1,R0,#0x0C;IODIR=0x00ffff00,IOSET 的地址为 0xE0028004NumCount EQU 0x40003000;定义变量NumCountLDR R0,=NumCount;使用LDR 伪指令装载NumCount 的地址到R0LDR R1,R0;取出变量值ADD R1,R1,1;NumCount=NumCount+1STR R1,R0;保存变量STR ,LDR r1,r0;将 r0 地址处的数据读出,保存到 r1 中(零偏移)LDR r1,r0,r2;
34、将 r0+r2 地址的数据读出,保存到 r1 中(r0 的值不变)LDR r1,r0,r2,LSL #2 ;将 r0+r24 地址处的数据读出,保存到 r1 中(r0,r2 的值不变)LDR Rd,label;label 为程序标号,label 必须是当前指令的4KB 范围内LDR Rd,Rn,0x04;Rn 的值用作传输数据的地址。在数据传送后,将偏移量 0x04 与Rn 相加,结果写回到 Rn 中。Rn 不是r15ARM 开发培训班实验指导 V3.0通过实验掌握学会使用 MSR/MRS 指令实现 AMR 处理器工作模式的切换,观察不同模式下的寄存器,加深对 CPU 结构的理解。【实验步骤】
35、参看“asm-02”目录下的代码按照实验一的方法,新建一个 project,名字为 armmode 工程;添加 armmode.s 文件到项目中。【实验原理】ARM 处理器共有 7 种工作模式ARM 处理器的工作模式除用户模式外的其他 6 种处理器模式称为模式(Privileged Modes)。在这些模式下,程序可以所有的系统,也可以任意地进行处理器模式切换。其中的 5 种又称为异常模式,分别为:FIQ(Fast Interrupt reQuest); IRQ(Interrupt request);管理(Supervisor);中止(Abort);未定义(Undefined)。处理器模式可以
36、通过软件进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。当处理器工作在用户模式时,应用程序不能够访问受操保护的一些系统,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式切换。这种体系结构可以使操系统的使用。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一寄存器以供相应的异常处理程序使用,这样就可以保证在进入异常模式时用户模式下组的寄存器(保存程序运行状态)不被破坏。状态操作指令ARM 指令集提供了两条指令, 可直接程序状态寄存器( PSR , Progra
37、m State22处理器工作模式简 写描述用户模式(User)usr正常程序执行模式,大部分任务执行在这种模式下快速中断模式(FIQ)fiq当一个高优先级(fast)中断产生时将会进入这种模式,一般用于高速数据传输和通道处理外部中断模式(IRQ)irq当一个低优先级(normal)中断产生时将会进入这种模式, 一般用于通常的中断处理模式(Supervisor)svc当复位或软中断指令执行时进入这种模式,是一种供操作系统使用的保护模式数据中止模式(Abort)abt当存取异常时将会进入这种模式,用于虚拟或保护未定义指令中止模式(Undef)und当执行未定义指令时进入这种模式,有时用于通过软件协
38、处理器硬件的工作方式系统模式(System)sys使用和 User 模式相同寄存器集的模式,用于运行级操任务ARM 开发培训班实验指导 V3.0Register)。MRS 指令用于把 CPSR 或 SPSR 的值传送到一个寄存器;MSR 与之相反,把一个寄存器的内容传送到 CPSR 或 SPSR。这两条指令结合,可用于对 CPSR 和 SPSR 进行读/写操作。交换指令如表 5.5 所示。表 5.5程序状态寄存器指令在指令语法中可看到一个称为 fields 的项,它可以是及标志(F)的组合。(C)、扩展(X)、状态(S)程序不能通过直接修改CPSR 中的T 位等指令完成程序状态的切换。直接将程
39、序状态切换到 Thumb 状态,必须通过 BX注意MRSMRS 指令用于将程序状态寄存器的内容传送到通用寄存器中。当数据被移到通用寄存器以后,就可以对数据进行处理。(2)指令的语法格式MSRMSR 指令用于将通用寄存器中的内容或立即数传送到程序状态寄存器中。因此指令的编码格式也有两种格式。(2)指令的语法格式实验三3.1 LDR/STM 指令寻址实验【实验内容】熟悉开发环境的使用并完成一块【实验目的】区的。完成分支程序设计。通过实验掌握使用 LDM/STM、B 等指令,完成较为复杂的学习使用条件码,加强对 CPSR 的认识。【实验步骤】参看“asm-03”目录下的代码区和程序分支。按照实验一的
40、方法,新建一个 project,名字为 asm01;添加 asm01.s 文件到项目中。23MSR CPSR_, MSR CPSR_, MSR SPSR_, MSR SPSR_,MRS ,CPSR MRS ,SPSR指令作用操作MRS把程序状态寄存器的值送到一个通用寄存器Rd=SPRMSR把通用寄存器的值送到程序状态寄存器或把一个立即数送到程序状态字PSRfield=Rm 或PSRfield=immediateARM 开发培训班实验指导 V3.0注意:link 设置和实验 2.1 不同,是 asm01.s 中的代码段属性为 readwrite,所以R/O Base(-entry 后的值)和 R
41、/W Base 相同,且在 rw 区域。areastart,code,readwriteLinker tab因为 entry0x30000000所以需要在调试时把 pc 的初始值指向这个位置。使用 DebugInRam.ini 来实现。DebugInRam.ini 内容如下:24ARM 开发培训班实验指导 V3.03.2 ARM 汇编子函数调用【实验内容】建立一个汇编工程,要求完成两个变量求和,求差,以及返回值。编译通过后,调试结果。【实验目的】通过实验掌握简【实验步骤】函数调用。参看“asm-04”目录下的代码按照实验一的方法,新建一个 project,名字为 asm02;添加 asm02.
42、s 文件到项目中。编译程序,使用 debugger 调试程序。观察程序运行时寄存器的状态。单步执行代码,观察在子程序调用时,r14(LR)的变化。3.3Thumb 汇编指令练习【实验内容】建立一个汇编工程,要求完成两个变量求和,两个变量相加的子程序用 Thumb 指令编写。编译通过后,调试结果。【实验目的】通过实验掌握简单的 Thumb 指令及 ARM、Thumb 交互。【实验步骤】参看“ThumbTest”目录下的代码按照实验一的方法,新建一个 project,名字为 Thumb_test 工程;添加 Thumb_code.s文件到项目中。3.4 利用 ARM 汇编实现开发板 LED 灯【实
43、验内容】建立一个简单的汇编语言代码,完成 LED 的【实验目的】。编译通过后,调试结果。学会使用 realview MDK 编写简单的汇编语言程序【实验步骤】参看“led_asm”目录下的代码设备。1、按照实验一的方法,新建一个 project,名字为 led_asm 工程;添加 led.s 文件到25ARM 开发培训班实验指导 V3.0项目中。2、按照实验一的方法,编译,代码到开发板运行,观察现象。3、修改代码,实现的逻辑。4、烧写你的代码到开发板后,可能出现逻辑和你想要的不一致。思考?(在于:默认情况下,处理器是打开看门狗的。解决方法:添加指令关闭看门狗)实验四4.1 简单 C 语言程序实
44、验【实验内容】建立一个简单的 C 语言代码,完成延时功能。编译通过后,调试结果。【实验目的】学会使用 realview MDK 编写简单的 C 语言【实验步骤】参看“CTest1”目录下的代码调试运行。按照实验一的方法,新建一个 project,名字为 C_test1 工程;添加 C_CALL.C 文件到项目中。4.2 汇编与 C 语言的相【实验内容】用实验使用汇编完成一个函数,通过 C 语言调用该函数。【实验目的】学会使用 realview MDK 编写汇编和 C 语言相件。【实验步骤】参看“explasm”目录下的代码用的程序,学会使用 sct 连接文按照实验一的方法,新建一个 proje
45、ct,名字为 C_test1 工程;添加 randtest.c、startup.s、addsubb.s 文件到项目中。注意在 linker 下选择.explasm.sct 文件26ARM 开发培训班实验指导 V3.04.3 C 语言中内联汇编程序实验【实验内容】建立一个简单的 C 语言代码,加入内联汇编代码。编译通过后,调试结果。【实验目的】学会在 C 语言【实验步骤】内联汇编语言。参看“CTest2”目录下的代码按照实验一的方法,新建一个project,名字为CTest2 工程。添加CCode.c startup.s文件到项目中。使用 CTest2.sct文件。4.4 C 语言中嵌入型汇编程
46、序实验【实验内容】建立一个简单的 C 语言代码,加入嵌入型汇编代码。编译通过后,调试结果。【实验目的】27ARM 开发培训班实验指导 V3.0学会在 C 语言【实验步骤】加入嵌入型汇编代码。参看“CTest3”目录下的代码按照实验一的方法,新建一个project,名字为CTest3 工程。添加CCode.c startup.s文件到项目中。使用 CTest3.sct文件。4.5 SWI 软中断实验【实验内容】参照课件 SWI 示例,完成一个完整的工程,可以实现 SWI 的调用过程。【实验目的】理解 SWI 的实现过程。【实验步骤】1、理解课件中“软中断(SWI)处理示例”,2、编写程序,在 s
47、wi 处理过程中,完成软中断号的获取。(参考实验代码 swi_test)4.6 综合编程实验【实验内容】完成一个完整的工程,要求包含启动代码、汇编函数和 C 文件,而且 C 文件包含 AMR函数和 Thumb 函数,并且可以相【实验目的】用。学会使用 realview MDK 编写综合代码。【实验步骤】参看“interwork”目录下的代码按照实验一的方法,新建一个 project,名字为 interwork 工程;添加 arm.c、thumb.c、addsubb.s、S3C2410A.s 文件到项目中。读懂程序的启动过程及调用关系。注意:下图说明了 arm.c 和 thumb.c 是如何被分布编译为 ARM 代码和 Thumb 代码的28ARM 开发培训班实验指导 V3.0注意:Thumb Mode 选项的选择情况实验五、I/O 及串口通信编程实验【实验内容】编写程序,实验平台的发光二极管 D9、D10、D11、D12 使它们有规律的点亮和熄灭。并且通过串口打印提示信息。代码分别在【实验目的】器下、和脱离环境运行。掌握 S3C2410I/O器、uart器、及系统初始化相关部分的配置方法;掌握调整 fputc 库使其适应目标硬件;掌握如何通过 realview MDK 环境将代码烧写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政法学技术应用试题与答案
- 信息技术的前沿动态的试题及答案
- 2025年软件设计师考试学习目标与试题及答案
- 2025年软件设计师考试真题及答案分析
- 2025物流服务转让合同协议书
- 行政管理考试备考的心理调节:试题及答案
- 2025年租赁店铺合同范本
- 高考作文的心灵交汇试题及答案
- 校园文化氛围的艺术渲染计划
- 黑客面试题目及答案
- 给小朋友科普化学小知识
- 中医专科护士进修汇报
- 9.2 法律保障生活课件(共13张)-2024-2025学年统编版道德与法治七年级下册
- 北非旅游地理
- 体重管理培训课件
- EPC工程合作框架协议书范本
- 人教版八年级英语下册导学案(全册 共10个单元)
- 2025年新高考全国Ⅰ卷英语模拟试卷(含答案)
- 楼体字施工方案
- 临时活动咖啡机租赁合同
- 山东省济南市东南片区2024-2025学年八年级(上)期中物理试卷(含答案)
评论
0/150
提交评论