




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM开发培训班实验指导V3.0实验目录实验一、熟悉realview开发环境21.1 RealView MDK软件开发环境简介21.1.1 RealView MDK的突出特性21.1.2 产品模块介绍21.2RealView 使用51.2.1创建一个工程51.2.1.1选择工具集51.2.1.2创建工程文件71.2.1.3 选择设备71.2.2 编译、链接工程81.2.2.1 设置目标硬件的工具选项81.2.2.2 增加连接控制文件91.2.2.3 编译链接91.2.3 程序调试101.2.4 工程选项页概述11实验二、ARM指令集122.1 ARM汇编指令1122.2 ARM汇编指令2202.3 ARM汇编指令321实验三233.1 LDR/STM指令寻址实验233.2 ARM汇编子函数调用253.3Thumb汇编指令练习253.4利用ARM汇编实现开发板LED灯控制25实验四264.1简单C语言程序实验264.2汇编与C语言的相互调用实验264.3 C语言中内联汇编程序实验274.4 C语言中嵌入型汇编程序实验274.5 SWI软中断实验284.6综合编程实验28实验五、I/O及串口通信编程实验29实验六、中断实验32实验七、实时时钟实验32实验八、看门狗控制实验33实验九、PWM接口实验33实验十、A/D转换实验33实验十一、I2C串行通信实验34实验一、熟悉realview开发环境1.1 RealView MDK软件开发环境简介RealView MDK全称RealView MDK中国版开发套件,源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的对各种嵌入式处理器的软件开发工具。RealView MDK集成了业内最领先的技术,包括Vision3集成开发环境与 RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20。1.1.1 RealView MDK的突出特性菜鸟的阿拉伯飞毯 启动代码生成向导,自动引导,一日千里 高手的无剑胜有剑 软件模拟器,完全脱离硬件的软件开发过程 专家的哈雷望远镜 性能分析器,看得更远、看得更细、看得更清 未来战士的激光剑 Cortex-M3支持业界最优秀的编译器 RealView 编译器,代码更小,性能更高配备ULINK2仿真器 无需安装驱动Flash编程模块 轻松实现Flash烧写绝对的高性价比 国际品质,本土价格1.1.2 产品模块介绍Vision3 IDE启动代码生成向导设备模拟器性能分析器RealView 编译器MircoLibRL-ARM(可选)ULINK2仿真器 Vision3 IDEVision IDE在全球拥有庞大的用户群,超过10万开发工程师在使用Keil开发工具。不管以前是用8位、16位MCU,还是现在改用ARM 32位处理器,Vision IDE简单易用,能让您立马上手。图1.1 Vision3 IDE Vision3 IDE主要特性:l 功能强大的源代码编辑器;l 可根据开发工具配置的设备数据库;l 用于创建和维护工程的工程管理器;l 集汇编、编译和链接过程于一体的编译工具;l 用于设置开发工具配置的对话框;l 真正集成高速CPU及片上外设模拟器的源码级调试器;l 高级GDI接口,可用于目标硬件的软件调试和ULINK2仿真器的连接;l 用于下载应用程序到Flash ROM中的Flash编程器;l 完善的开发工具手册、设备数据手册和用户向导。 启动代码配置向导Vision3 IDE 的启动代码配置向导将各个所需配置的功能模块以对话框方式展示,附加的提示说明,帮助你快速轻松的做出选择,生成完善的启动代码,免除手工写几百行汇编程序的痛苦。图1.2配置启动代码 Vision3设备模拟器Vision3设备模拟器的功能强大,能模拟整个MCU的行为。使你在没有硬件或对目标MCU没有更深的了解的情况下,仍然可以立即开始开发软件。高效指令集仿真中断仿真片内外围设备仿真ADC,DAC, EBI,TimersUART,CAN,I2C外部信号和 I/O仿真图1.3 设备模拟器 性能分析器性能分析器可给所有的MCU实现如程序运行时间统计、被调用次数统计、代码覆盖率统计等高端功能,而这些功能对于快速定位死区代码,帮助优化分析等起了关键的作用。图1.4 性能分析器 RealView编译器(RVCT)RealView MDK集成的RealView编译器(跟RVDS使用一样的编译器),是业界最优秀的编译器,它能使代码容量更小、执行效率更高;使应用程序运行更快、系统成本更低。 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编译工具、 ARM ADS编译器、GNU GCC编译器和Keil C ARM编译器。当使用GNU GCC编译器或ARM ADS编译器时必须另外安装它们编译集。实际使用的工具集可以在Vision IDE的Project Manage- Components, Environment, and Books对话框的Folders/Extensions页(见下图)中选择。图1.5 选择工具集 Use RealView Compiler复选框表示本工程使用ARM开发工具。RealView Folder文本框指定开发工具的路径。下面的例子显示了各种版本的ARM ADS/RealView 开发工具的路径: a) Vision的RealView编译器: BIN31 b) ADS V1.2: C:Program FilesARMADSv1_2Bin c) RealView评估版2.1: C:Program FilesARMRVCTPrograms2.1350eval2-scwin_32-pentium Use Keil CARM Compiler复选框表示本工程使用Keil CARM编译器、Keil AARM汇编器和Keil LARM链接器/装载器。 Use GNU Compiler复选框表示本工程使用GNU开发工具。Cygnus Folder文本框指定GNU的安装路径。GNU-Tool-Prefix文本框指定不同的GNU工具链。下面是各种GNU版本的例子: a) 带uclib的GNU V3.22: GNU-Tool-Prefix: arm-uclibc- Cygnus Folder: C:Cygnus b) 带标准库的GNUARM V4: GNU-Tool-Prefix: arm-elf- Cygnus Folder: C:Program FilesGNUARM Keil根目录的设置是基于Vision/ARM开发工具的安装目录的。对于Keil ARM 工具来说,工具组件的路径是在开发工具目录中配置的。1.2.1.2创建工程文件单击Project -New.-Vision Project菜单项,Vision 3将打开一个标准对话框,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字Project1,Vision将会创建一个以Project1.UV2为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。这些内容在Project Workspace-Files中可以看到。1.2.1.3 选择设备在创建一个新的工程时,Vision要求为这个工程选择一款CPU。选择设备对话框显示了Vision的设备数据库,只需要选择用户所需的微控制器即可。例如,选择 Philips LPC2106微控制器,这个选择设置了LPC2106设备的必要工具选项、简化了工具的配置。图1.6 选择设备注意: 当创建一个新的工程时,Vision会自动为所选择的CPU添加合适的启动代码。 对于一些设备而言,Vision需要用户手动地输入额外的参数。请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。 创建源文件以后,就可以将这个文件添加到工程中。Vision提供了几种方法将源文件添加到工程中。例如, 在Project Workspace -Files页的文件组上点击鼠标右键,然后在弹出的菜单中选择Add Files菜单项,这时将打开标准的文件对话框,选择我们创建的asm或c文件即完成源文件的添加。1.2.2 编译、链接工程1.2.2.1 设置目标硬件的工具选项Vision可以设置目标硬件的选项。通过工具栏按钮或Project - Options for Target菜单项打开Options for Target对话框,在 Target页中设置目标硬件及所选CPU片上组件的参数。下图是LPC2106的一些参数设置。图1.7 设置目标硬件下表描述了Target对话框的选项:对话框项描述Xtal设备的晶振(XTAL)频率。大多数基于ARM的微控制器都使用片上PLL产生CPU时钟。所以,一般情况下CPU的时钟与XTAL的频率是不同的。Read/Only Memory Area配置片内、片外的ROM区地址以及大小Read/Write Memory Areas指定目标硬件的片内和片外的RAM区地址以及大小Code Generation 旋转产生ARM code 还是Thumb code1.2.2.2 增加连接控制文件对于GNU和ARM ADS/RealView工具链来说,链接器的配置是通过链接器控制文件实现的。这个文件指定了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页中的所有的工具和属性都要配置。单击Build Target工具栏按钮将编译所有的源文件,链接应用程序。当编译有语法错误的应用程序时,Vision将在Output Window -Build窗口中显示错误和警告信息。单击这些信息行,Vision将会定位到相应的源代码处。图1.9 编译结果源文件编译成功产生应用程序以后就可开始调试了,点击Debug-Start/Stop debug session (Ctrl F5)即进入调试模式。1.2.3 程序调试 进入调试模式之后,可以选择单步、全速运行。可以设置断点等常规的调试。所有有关调试的操作都可以在Debug菜单下找到。如下图所示为进入调试模式下时的界面。图1.10 simulator调试常用的调试手段:l 单步、全速运行程序l F10 单步运行, F5全速运行。l 对于各种模式下的寄存器,可以在左边的窗口查看l 对于ARM的7种模式下的寄存器,都可以查看。当处理器处于任何一种模式时,可以查看Current中所有的寄存器的值,处理器从一种状态改变到另外一种状态时,该模式下物理上独立的寄存器将会被用到。l 设置断点l 选中需要设置断点的行,然后F9即在改行设置断点,程序运行到此处就停止运行。l 查看变量的实时值l 对于local的变量,打开View-Watch&Call Stack Window,在此Window中,选择Locals tab就可以查看所有的local变量。l 对于全局变量,选择Watch window中的Watch #1, 加入你需要查看的变量就可以查看实时的全局变量的值。l 外设模块仿真l 因为我们选择的是Simulator,所以可以通过RealView MDK强大的仿真功能来调试程序。打开Peripheral-GPIO可以看到每一个GPIO pin的实时状态信息。全速运行程序后,GPIO的状态就开始按照程序的控制开始变化。1.2.4 工程选项页概述在Project - Options对话框页可以设置所有的工具选项。所有的选项都保存在Vision工程文件中。在Project Workspace -Files窗口点击鼠标右键,在弹出的菜单中可以设置文件夹或单个文件的不同选项,这些选项在文件和文件夹选项中解释过。在这种情况下,可能有附加的属性页及仅与所选项相关的对话框页。下表概述了各种选项对话框的功能。对话框页描述Device从Vision的设备数据库中选择选择设备。Target为应用程序指定硬件环境。Output定义工具链的输出文件,在编译完成后运行用户程序。Listing指定工具链产生的所有列表文件。C设置C编译器的工具选项,例如代码优化和变量分配。Asm设置汇编器的工具选项,如宏处理。Linker设置链接器的相关选项。一般来说,链接器的设置需要配置目标系统的存储分配。设置链接器定义存储器类型和段的位置。DebugVision调试器的设置。Utilities配置Flash编程实用工具。实验二、ARM指令集2.1 ARM汇编指令1【实验内容】建立一个汇编工程,要求完成两个变量求和,编译通过后,调试结果。【实验目的】初步学会使用 Vision3 IDE for ARM 开发环境及 ARM 软件模拟器;通过实验掌握简单 ARM 汇编指令的使用方法。【实验步骤】1、新建工程 首先在就业班ARM课件ARM实验第1天目录下建立文件夹命名为 asm-00,运行Vision3 IDE集成开发环境,选择菜单项 Project New Vision Project,系统弹出一个对话框,按照图 2-1 所示输入相关内容。点击“保存” 按钮,将创建一个新工程 asm00.Uv2。图2-12、为工程选择 CPU 新建工程后,要为工程选择 CPU,如图 2.2 所示,在此选择 SAMSUNG 的 S3C2410X图2-23、添加启动代码 在图 2-3 中点“确定”后,会弹出一个对话框,问是否要添加启动代码。如图2.3 所示。图2-3由于本实验是简单的汇编实验,因此不需要启动代码。选择否。4、选择开发工具要为工程选择开发工具,在 Project - Manage - Components,Environment and Books - Folder/Extensions对话框的 Folder/Extensions页内选择开发工具,如图 2-4所示。图2-4 选择开发工具从图中可以看到,有三个开发工具可选,在此选择 RealView Compiler。5、建立源文件点击菜单项 File - New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件asm1_a.s。6、添加源文件 单击工程管理窗口中的相应右键菜单命令,选择Add Files to,会弹出文件选择对话框,在工程目录下选择刚才建立的源文件 asm1_a.s。如图 2-5 所示。图2-57、工程配置 选择菜单项 Project-Option for Target,将弹出工程设置对话框,如图 2-6所示。对话框会因所选开发工具的不同而不同,在此仅对 Target 选项页、Linker选项页及 Debug选项页进行配置。Target选项页的配置如图 2-6;Linker 选项页的配置如图 2-7;Debug 选项页的配置如图 2-8。需要注意,后面的实验中在 Debug选项页内需要一个初始化文件:DebugINRam.ini。此.INI 文件用于设置生成的.AXF 文件下载到目标中的位置,以及调试前的寄存器、内存的初始化等配置操作。它是由调试函数及调试命令组成调试命令脚本文件。图2-6 基本配置 Target图2-7 基本配置 Linker图2-8 基本配置 Debug8、生成目标代码 选择菜单项 Project - Build target或快捷键 F7,生成目标代码。在此过程中,若有错误,则进行修改,直至无错误。若无错误,则可进行下一步的调试。9、调试 选择菜单项 Debug - Start/Stop Debug Session 或快捷键 Ctrl+F5,即可进入调试模式。若没有目标硬件,可以用 Vision 3 IDE 中的软件仿真器。如果使用 MDK 试用版,则在进入调试模式前,会有如下对话框弹出,如图 2-9所示。图2-9 在软件仿真下调试程序确定后即可调试了,做如下调试工作:参看“asm-00”目录下的代码。图2.10 ARM 汇编练习-编译,链接。Options for target “Target1”中设置如下:Target tabLinker tab去掉 “use memory layout from target dialog”, R/O Base填0x0, R/W Base填0x4000000。-进入调试模式,开始调试,并注意查看寄存器的值,检查计算结果是否正确。注意:汇编语言的源语句行的一般格式是:label instruction|directive|pseudoinstruction ;comment即使没有标号,指令、伪指令和命令前面也必须有一个空白,例如一个空格或制表符。源语句行的所有三部分都是可选的。可以使用空行来使代码更具可读性。对以上代码的解释:段和 AREA 命令段是独立的、命名的、不可分割的代码或数据序列。一个代码段是生成一个应用程序的最低要求。汇编或编译的输出可以包括: 一个或多个代码段。它们通常是只读段。 一个或多个数据段。它们通常是读写段。它们可以是零初始化的 (ZI)。链接程序依照段位置规则,将每个段放在一个程序映像中。在源文件中相邻的段,不一定要在应用程序映像中相邻。在源文件中,用 AREA命令来标记一个段的开始。该命令对段进行命名并设置其属性。属性放在名称后面,之间用逗号分隔。ENTRY 命令ENTRY 命令标记要执行的第一个指令。在包含 C 代码的应用程序中,在 C库的初始化代码中也包含一个入口点。初始化代码和异常处理程序也包含入口点。END 命令此命令指示汇编程序停止处理这个源文件。每个汇编语言源模块必须以一行单独的 END命令结束。2.2 ARM汇编指令2【实验内容】使用 add/sub/lsl/lsr/and/orr 等指令,完成基本算术/逻辑运算。【实验目的】初步学会使用 Vision3 IDE for ARM 开发环境及 ARM 软件模拟器;通过实验掌握简单 ARM 汇编指令的使用方法。【实验步骤】参看“asm-01”目录下的代码按照实验一的方法,新建一个project,名字为asm01;添加asm01.s文件到项目中。帮助:LDR指令:LDR指令用于从内存中将一个32位的字读取到目标寄存器。LDR指令根据所确定的地址模式将一个32位字读取到指令中的目标寄存器。如果指令中的寻址方式确定的地址不是字对齐的,则读出的数值要进行循环右移。所移位数为寻址方式确定的地址bits108的倍,也就是说处理器将取到的数值作为字的最低位处理。如果设置了L位,则进行装载,否则进行存储。如果设置了P位,则使用预先变址寻址,否则使用过后变址寻址。如果设置了U位,则给出的偏移量被加到基址寄存器上,否则从中减去偏移量。如果设置了B位,传送内存的一个字节,否则传送一个字。这在助记符末尾添加后缀“B”,如MOV r7,r5变为MOVB r7,r5。W位的解释依赖于使用的地址模式。l 对于预先变址寻址,设置W位强制把它用做地址转换的最终地址写回基址寄存器中(例如,传送的副作用是Rn:= Rn +/-offset。这在汇编器中表示为给指令加上后缀“!”。)。l 对于过后变址寻址,地址总是写回,设置 W 位指示在进行传送之前强制地址转换。这在汇编器中表示为给指令加上后缀“T”。l 当PC作为LDR的目的寄存器时,从存储器取得的数据将被当作目标地址值,程序将跳转到目标地址开始执行。指令的语法格式LDR ,它确定了指令编码中的I、P、U、W、Rn和位。所有的寻址模式中,都会确定一个基址寄存器Rn。指令举例LDR r1,r0,#0x12;将r0+12地址处的数据读出,保存到r1中(r0的值不变)LDR r1,r0;将r0地址处的数据读出,保存到r1中(零偏移)LDR r1,r0,r2;将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不允许是r15STR指令:STR指令用于将一个32位的字数据写入到指令中指定的内存单元。指令的语法格式STR ,指令举例LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等等,若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。 变量访问NumCount EQU 0x40003000;定义变量NumCountLDR R0,=NumCount;使用LDR伪指令装载NumCount的地址到R0LDR R1,R0;取出变量值ADD R1,R1,1;NumCount=NumCount+1STR R1,R0;保存变量 GPIO设置GPIOBASE EQU 0xe0028000;定义GPIO寄存器的基地址LDR R0,=GPIOBASELDR R1,=0x00ffff00;将设置值放入寄存器STR R1,R0,#0x0C;IODIR=0x00ffff00,IOSET的地址为0xE0028004 程序散转MOV r2,r2,LSL #2;功能号乘以4,以便查表LDR PC,PC,r2;查表取得对应功能子程序地址,并跳转NOPFUNTAB DCD FUNSUB0 DCD FUNSUB1 DCD FUNSUB2 2.3 ARM汇编指令3【实验内容】建立一个汇编工程,要求通过ARM汇编指令在各个处理器模式下切换并观察各个模式下处理器的区别。编译通过后,调试结果。【实验目的】通过实验掌握学会使用MSR/MRS指令实现AMR处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU结构的理解。 【实验步骤】参看“asm-02”目录下的代码按照实验一的方法,新建一个project,名字为armmode工程;添加armmode.s文件到项目中。【实验原理】ARM处理器共有7种工作模式 ARM处理器的工作模式处理器工作模式简 写描 述用户模式(User)usr正常程序执行模式,大部分任务执行在这种模式下快速中断模式(FIQ)fiq当一个高优先级(fast)中断产生时将会进入这种模式,一般用于高速数据传输和通道处理外部中断模式(IRQ)irq当一个低优先级(normal)中断产生时将会进入这种模式,一般用于通常的中断处理特权模式(Supervisor)svc当复位或软中断指令执行时进入这种模式,是一种供操作系统使用的保护模式数据访问中止模式(Abort)abt当存取异常时将会进入这种模式,用于虚拟存储或存储保护未定义指令中止模式(Undef)und当执行未定义指令时进入这种模式,有时用于通过软件仿真协处理器硬件的工作方式系统模式(System)sys使用和User模式相同寄存器集的模式,用于运行特权级操作系统任务除用户模式外的其他6种处理器模式称为特权模式(Privileged Modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。其中的5种又称为异常模式,分别为: FIQ(Fast Interrupt reQuest); IRQ(Interrupt request); 管理(Supervisor); 中止(Abort); 未定义(Undefined)。处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。当处理器工作在用户模式时,应用程序不能够访问受操作系统保护的一些系统资源,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器模式切换。这种体系结构可以使操作系统控制整个系统资源的使用。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组专用寄存器以供相应的异常处理程序使用,这样就可以保证在进入异常模式时用户模式下的寄存器(保存程序运行状态)不被破坏。状态操作指令ARM指令集提供了两条指令,可直接控制程序状态寄存器(PSR,Program State Register)。MRS指令用于把CPSR或SPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内容传送到CPSR或SPSR。这两条指令结合,可用于对CPSR和SPSR进行读/写操作。交换指令如表5.5所示。表5.5程序状态寄存器指令指 令作 用操 作MRS把程序状态寄存器的值送到一个通用寄存器Rd=SPRMSR把通用寄存器的值送到程序状态寄存器或把一个立即数送到程序状态字PSRfield=Rm或PSRfield=immediate在指令语法中可看到一个称为fields的项,它可以是控制(C)、扩展(X)、状态(S)及标志(F)的组合。注意程序不能通过直接修改CPSR中的T位控制直接将程序状态切换到Thumb状态,必须通过BX等指令完成程序状态的切换。MRSMRS指令用于将程序状态寄存器的内容传送到通用寄存器中。当数据被移到通用寄存器以后,就可以对数据进行处理。(2)指令的语法格式MRS ,CPSRMRS ,SPSRMSRMSR指令用于将通用寄存器中的内容或立即数传送到程序状态寄存器中。因此指令的编码格式也有两种格式。(2)指令的语法格式MSR CPSR_,MSR CPSR_,MSR SPSR_,MSR SPSR_,实验三3.1 LDR/STM指令寻址实验【实验内容】熟悉开发环境的使用并完成一块存储区的复制。完成分支程序设计。【实验目的】通过实验掌握使用LDM/STM、B等指令,完成较为复杂的存储区访问和程序分支。学习使用条件码,加强对CPSR的认识。【实验步骤】参看“asm-03”目录下的代码按照实验一的方法,新建一个project,名字为asm01;添加asm01.s文件到项目中。注意:link设置和实验2.1不同,原因是asm01.s中的代码段属性为readwrite,所以R/O Base(-entry 后的值)和 R/W Base相同,且在rw区域。area start,code,readwrite Linker tab因为 entry 0x30000000 所以需要在调试时把pc的初始值指向这个位置。使用DebugInRam.ini来实现。DebugInRam.ini内容如下:3.2 ARM汇编子函数调用【实验内容】建立一个汇编工程,要求完成两个变量求和,求差,以及返回值。编译通过后,调试结果。【实验目的】通过实验掌握简单子函数调用。【实验步骤】参看“asm-04”目录下的代码按照实验一的方法,新建一个project,名字为asm02;添加asm02.s文件到项目中。编译程序,使用debugger调试程序。观察程序运行时寄存器的状态。单步执行代码,观察在子程序调用时,r14(LR)的变化。3.3Thumb汇编指令练习【实验内容】建立一个汇编工程,要求完成两个变量求和,两个变量相加的子程序用Thumb指令编写。编译通过后,调试结果。【实验目的】通过实验掌握简单的Thumb指令及 ARM、Thumb交互。【实验步骤】参看“ThumbTest”目录下的代码按照实验一的方法,新建一个project,名字为Thumb_test工程;添加Thumb_code.s文件到项目中。3.4利用ARM汇编实现开发板LED灯控制【实验内容】建立一个简单的汇编语言代码,完成LED的控制。编译通过后,调试结果。【实验目的】学会使用realview MDK编写简单的汇编语言程序控制外围设备。 【实验步骤】参看“led_asm”目录下的代码1、按照实验一的方法,新建一个project,名字为led_asm工程;添加led.s文件到项目中。2、按照实验一的方法,编译,下载代码到开发板运行,观察现象。3、修改代码,实现自己的逻辑。4、烧写你的代码到开发板后,可能出现逻辑和你想要的不一致。思考原因?(原因在于:默认情况下,处理器是打开看门狗的。解决方法:添加指令关闭看门狗)实验四4.1简单C语言程序实验【实验内容】建立一个简单的C语言代码,完成延时功能。编译通过后,调试结果。【实验目的】学会使用realview MDK编写简单的C语言程序并调试运行。 【实验步骤】参看“CTest1”目录下的代码按照实验一的方法,新建一个project,名字为C_test1工程;添加C_CALL.C文件到项目中。4.2汇编与C语言的相互调用实验【实验内容】使用汇编完成一个函数,通过C语言调用该函数。【实验目的】学会使用realview MDK编写汇编和C语言相互调用的程序,学会使用sct连接脚本文件。 【实验步骤】参看“explasm”目录下的代码按照实验一的方法,新建一个project,名字为C_test1工程;添加randtest.c、startup.s、addsubb.s文件到项目中。注意在linker下选择.explasm.sct文件4.3 C语言中内联汇编程序实验【实验内容】建立一个简单的C语言代码,加入内联汇编代码。编译通过后,调试结果。【实验目的】学会在C语言程序中内联汇编语言。 【实验步骤】参看“CTest2”目录下的代码按照实验一的方法,新建一个project,名字为CTest2工程。添加CCode.c startup.s文件到项目中。使用CTest2.sct脚本文件。4.4 C语言中嵌入型汇编程序实验【实验内容】建立一个简单的C语言代码,加入嵌入型汇编代码。编译通过后,调试结果。【实验目的】学会在C语言程序中加入嵌入型汇编代码。 【实验步骤】参看“CTest3”目录下的代码按照实验一的方法,新建一个project,名字为CTest3工程。添加CCode.c startup.s文件到项目中。使用CTest3.sct脚本文件。4.5 SWI软中断实验【实验内容】参照课件SWI示例,完成一个完整的工程,可以实现SWI的调用过程。【实验目的】理解SWI的实现过程。 【实验步骤】1、理解课件中“软中断(SWI)处理示例”,2、编写程序,在swi处理过程中,完成软中断号的获取。(参考实验代码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代码的注意:Thumb Mode 选项的选择情况实验五、I/O及串口通信编程实验【实验内容】编写程序,控制实验平台的发光二极管D9、D10、D11、D12使它们有规律的点亮和熄灭。并且通过串口打印提示信息。代码分别在仿真器控制下、和脱离仿真环境运行。【实验目的】掌握S3C2410芯片I/O控制器、uart控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建医科大学安全保卫人员招聘2人(四)考前自测高频考点模拟试题及1套参考答案详解
- 公司主提升机操作工职业健康、安全、环保技术规程
- 飞机试飞设备安装调试工职业健康考核试卷及答案
- 飞机特种设备检测与修理工客户满意度导向考核试卷及答案
- 2025江苏南京市浦口区中医院招聘42人模拟试卷及答案详解(考点梳理)
- 2025阿勒泰市消防救援大队招聘编制外政府专职消防员(21人)考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025北京第五实验学校招聘38人考前自测高频考点模拟试题及答案详解(典优)
- 2025年洗染行业服务合同
- p27-Analogue-CP2-生命科学试剂-MCE
- 2025年春季湖南长沙市雨花区雨花实验第四小学实习教师招聘的模拟试卷及完整答案详解1套
- 学校物业委托管理服务合同7篇
- 2025少先队基础知识题库(含答案)
- 人教版九年级物理上-各单元综合测试卷含答案共五套
- 《守望成长法治护航》法制教育主题班会
- 三折页设计课件
- 防诈骗消防安全知识培训课件
- 数据标注课件
- 2025公安辅警招聘知识考试题(含答案)
- 劳动课包包子课件
- 教师教育心理学考试试题及答案
- 山河已无恙+吾辈当自强+课件-2025-2026学年高二上学期用《南京照相馆》和731上一节思政课
评论
0/150
提交评论