arm2410实验手册经典教程.docx

上传人:b****6 文档编号:8627878 上传时间:2023-02-01 格式:DOCX 页数:39 大小:960.07KB
下载 相关 举报
arm2410实验手册经典教程.docx_第1页
第1页 / 共39页
arm2410实验手册经典教程.docx_第2页
第2页 / 共39页
arm2410实验手册经典教程.docx_第3页
第3页 / 共39页
arm2410实验手册经典教程.docx_第4页
第4页 / 共39页
arm2410实验手册经典教程.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

arm2410实验手册经典教程.docx

《arm2410实验手册经典教程.docx》由会员分享,可在线阅读,更多相关《arm2410实验手册经典教程.docx(39页珍藏版)》请在冰豆网上搜索。

arm2410实验手册经典教程.docx

arm2410实验手册经典教程

实验目录

实验一、熟悉realview开发环境2

1.1RealViewMDK软件开发环境简介2

1.1.1RealViewMDK的突出特性2

1.1.2产品模块介绍2

1.2RealView使用5

1.2.1创建一个工程5

1.2.1.1选择工具集5

1.2.1.2创建工程文件7

1.2.1.3选择设备7

1.2.2编译、链接工程8

1.2.2.1设置目标硬件的工具选项8

1.2.2.2增加连接控制文件9

1.2.2.3编译链接9

1.2.3程序调试10

1.2.4工程选项页概述11

实验二、ARM指令集12

2.1ARM汇编指令112

2.2ARM汇编指令220

2.3ARM汇编指令321

实验三23

3.1LDR/STM指令寻址实验23

3.2ARM汇编子函数调用25

3.3Thumb汇编指令练习25

3.4利用ARM汇编实现开发板LED灯控制25

实验四26

4.1简单C语言程序实验26

4.2汇编与C语言的相互调用实验26

4.3C语言中内联汇编程序实验27

4.4C语言中嵌入型汇编程序实验27

4.5SWI软中断实验28

4.6综合编程实验28

实验五、I/O及串口通信编程实验29

实验六、中断实验32

实验七、实时时钟实验32

实验八、看门狗控制实验33

实验九、PWM接口实验33

实验十、A/D转换实验33

实验十一、I2C串行通信实验34

实验一、熟悉realview开发环境

1.1RealViewMDK软件开发环境简介

RealViewMDK全称RealViewMDK中国版开发套件,源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的对各种嵌入式处理器的软件开发工具。

RealViewMDK集成了业内最领先的技术,包括µVision3集成开发环境与RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。

1.1.1RealViewMDK的突出特性

菜鸟的阿拉伯飞毯—启动代码生成向导,自动引导,一日千里

高手的无剑胜有剑—软件模拟器,完全脱离硬件的软件开发过程

专家的哈雷望远镜—性能分析器,看得更远、看得更细、看得更清 

未来战士的激光剑—Cortex-M3支持

业界最优秀的编译器—RealView编译器,代码更小,性能更高配备ULINK2仿真器—无需安装驱动

Flash编程模块—轻松实现Flash烧写

绝对的高性价比—国际品质,本土价格

1.1.2产品模块介绍

µVision3IDE

启动代码生成向导

设备模拟器

性能分析器

RealView编译器

MircoLib

 RL-ARM(可选) 

ULINK2仿真器

صVision3IDE

µVisionIDE在全球拥有庞大的用户群,超过10万开发工程师在使用Keil开发工具。

不管以前是用8位、16位MCU,还是现在改用ARM32位处理器,µVisionIDE简单易用,能让您立马上手。

图1.1µVision3IDE

صVision3IDE主要特性:

●功能强大的源代码编辑器;

●可根据开发工具配置的设备数据库;

●用于创建和维护工程的工程管理器;

●集汇编、编译和链接过程于一体的编译工具;

●用于设置开发工具配置的对话框;

●真正集成高速CPU及片上外设模拟器的源码级调试器;

●高级GDI接口,可用于目标硬件的软件调试和ULINK2仿真器的连接;

●用于下载应用程序到FlashROM中的Flash编程器;

●完善的开发工具手册、设备数据手册和用户向导。

Ø启动代码配置向导

µVision3IDE的启动代码配置向导将各个所需配置的功能模块以对话框方式展示,附加的提示说明,帮助你快速轻松的做出选择,生成完善的启动代码,免除手工写几百行汇编程序的痛苦。

图1.2配置启动代码

صVision3设备模拟器

µVision3设备模拟器的功能强大,能模拟整个MCU的行为。

使你在没有硬件或对目标MCU没有更深的了解的情况下,仍然可以立即开始开发软件。

高效指令集仿真

中断仿真片内外围设备仿真

ADC,DAC,EBI,Timers

UART,CAN,I2C…

外部信号和I/O仿真

图1.3设备模拟器

Ø性能分析器

性能分析器可给所有的MCU实现如程序运行时间统计、被调用次数统计、代码覆盖率统计等高端功能,而这些功能对于快速定位死区代码,帮助优化分析等起了关键的作用。

图1.4性能分析器

ØRealView编译器(RVCT)

RealViewMDK集成的RealView编译器(跟RVDS使用一样的编译器),是业界最优秀的编译器,它能使代码容量更小、执行效率更高;使应用程序运行更快、系统成本更低。

ØMicroLib

为进一步改进基于ARM处理器的应用代码密度,RealViewMDK采用了新型microlibC库(用于C的ISO标准运行时库的一个子集),并将其代码镜像降低最小以满足微控制器应用的需求。

MicrolibC库可将运行时库代码大大降低。

ØRealView实时库RL-ARM(可选)

ØULINK2仿真器 

1.2RealView使用

1.2.1创建一个工程

µVision是一个标准的窗口应用程序,可以点击程序按钮开始运行。

为了创建一个新的µVision工程必须作如下处理:

∙选择工具集

∙创建工程文件

∙选择设备

1.2.1.1选择工具集

µVision可以使用ARMRealView编译工具、ARMADS编译器、GNUGCC编译器和KeilCARM编译器。

当使用GNUGCC编译器或ARMADS编译器时必须另外安装它们编译集。

实际使用的工具集可以在µVisionIDE的Project–Manage-Components,Environment,andBooks对话框的Folders/Extensions页(见下图)中选择。

图1.5选择工具集

∙UseRealViewCompiler复选框表示本工程使用ARM开发工具。

RealViewFolder

文本框指定开发工具的路径。

下面的例子显示了各种版本的ARMADS/RealView开发工具的路径:

a)µVision的RealView编译器:

BIN31\

b)ADSV1.2:

C:

\ProgramFiles\ARM\ADSv1_2\Bin

c)RealView评估版2.1:

C:

\ProgramFiles\ARM\RVCT\Programs\2.1\350\eval2-sc\win_32-pentium

∙UseKeilCARMCompiler复选框表示本工程使用KeilCARM编译器、KeilAARM汇

编器和KeilLARM链接器/装载器。

∙UseGNUCompiler复选框表示本工程使用GNU开发工具。

CygnusFolder文本框指

定GNU的安装路径。

GNU-Tool-Prefix文本框指定不同的GNU工具链。

下面是各种GNU版本的例子:

a)带uclib的GNUV3.22:

GNU-Tool-Prefix:

arm-uclibc-CygnusFolder:

C:

\Cygnus

b)带标准库的GNUARMV4:

GNU-Tool-Prefix:

arm-elf-CygnusFolder:

C:

\ProgramFiles\GNUARM\

∙Keil根目录的设置是基于µVision/ARM开发工具的安装目录的。

对于KeilARM工

具来说,工具组件的路径是在开发工具目录中配置的。

1.2.1.2创建工程文件

单击Project->New...->µVisionProject菜单项,µVision3将打开一个标准对话框,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。

例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输入新建工程的名字Project1,µVision将会创建一个以Project1.UV2为名字的新工程文件,它包含了一个缺省的目标(target)和文件组名。

这些内容在ProjectWorkspace->Files中可以看到。

1.2.1.3选择设备

 在创建一个新的工程时,µVision要求为这个工程选择一款CPU。

选择设备对话框显示了µVision的设备数据库,只需要选择用户所需的微控制器即可。

例如,选择PhilipsLPC2106微控制器,这个选择设置了LPC2106设备的必要工具选项、简化了工具的配置。

图1.6选择设备

注意:

 

∙当创建一个新的工程时,µVision会自动为所选择的CPU添加合适的启动代码。

∙对于一些设备而言,µVision需要用户手动地输入额外的参数。

请仔细阅读这个对话框右边的信息,因为它可能包含所选设备的额外配置要求。

创建源文件以后,就可以将这个文件添加到工程中。

µVision提供了几种方法将源文件添加到工程中。

例如,在ProjectWorkspace->Files页的文件组上点击鼠标右键,然后在弹出的菜单中选择AddFiles菜单项,这时将打开标准的文件对话框,选择我们创建的asm或c文件即完成源文件的添加。

1.2.2编译、链接工程

1.2.2.1设置目标硬件的工具选项

µVision可以设置目标硬件的选项。

通过工具栏按钮或Project-OptionsforTarget菜单项打开OptionsforTarget对话框,在Target页中设置目标硬件及所选CPU片上组件的参数。

下图是LPC2106的一些参数设置。

图1.7设置目标硬件

下表描述了Target对话框的选项:

对话框项

描述

Xtal

设备的晶振(XTAL)频率。

大多数基于ARM的微控制器都使用片上PLL产生CPU时钟。

所以,一般情况下CPU的时钟与XTAL的频率是不同的。

Read/OnlyMemoryArea

配置片内、片外的ROM区地址以及大小

Read/WriteMemoryAreas

指定目标硬件的片内和片外的RAM区地址以及大小

CodeGeneration

旋转产生ARMcode还是Thumbcode

1.2.2.2增加连接控制文件

对于GNU和ARMADS/RealView工具链来说,链接器的配置是通过链接器控制文件实现的。

这个文件指定了ARM目标硬件的存储配置。

预配置的链接器控制文件在文件夹..\ARM\GNU或..\ARM\ADS中。

 为了与目标硬件相匹配,用户可能会修改链接器控制文件,所以工程中的那个文件是预配置的连接控制文件的一个副本。

这个文件可以通过Project-OptionsforTarget对话框的Linker页添加到工程中。

图1.8设置linker选项

对于复杂的memorylayout分配方式,应该采用scatterfile,对于简单的工程,直接指定R/O和R/W的基地址即可。

1.2.2.3编译链接

一般来说,在新建一个应用程序的时候Options->Target页中的所有的工具和属性都要配置。

单击BuildTarget工具栏按钮将编译所有的源文件,链接应用程序。

当编译有语法错误的应用程序时,µVision将在OutputWindow->Build窗口中显示错误和警告信息。

单击这些信息行,µVision将会定位到相应的源代码处。

图1.9编译结果

源文件编译成功产生应用程序以后就可开始调试了,点击Debug->Start/Stopdebugsession(CtrlF5)即进入调试模式。

1.2.3程序调试

进入调试模式之后,可以选择单步、全速运行。

可以设置断点等常规的调试。

所有有关调试的操作都可以在Debug菜单下找到。

如下图所示为进入调试模式下时的界面。

图1.10simulator调试

常用的调试手段:

●单步、全速运行程序

●F10单步运行,F5全速运行。

●对于各种模式下的寄存器,可以在左边的窗口查看

●对于ARM的7种模式下的寄存器,都可以查看。

当处理器处于任何一种模式时,可以查看Current中所有的寄存器的值,处理器从一种状态改变到另外一种状态时,该模式下物理上独立的寄存器将会被用到。

●设置断点

●选中需要设置断点的行,然后F9即在改行设置断点,程序运行到此处就停止运行。

●查看变量的实时值

●对于local的变量,打开View->Watch&CallStackWindow,在此Window中,选择Localstab就可以查看所有的local变量。

●对于全局变量,选择Watchwindow中的Watch#1,加入你需要查看的变量就可以查看实时的全局变量的值。

●外设模块仿真

●因为我们选择的是Simulator,所以可以通过RealViewMDK强大的仿真功能来调试程序。

打开Peripheral->GPIO可以看到每一个GPIOpin的实时状态信息。

全速运行程序后,GPIO的状态就开始按照程序的控制开始变化。

1.2.4工程选项页概述

在Project-Options对话框页可以设置所有的工具选项。

所有的选项都保存在µVision工程文件中。

在ProjectWorkspace->Files窗口点击鼠标右键,在弹出的菜单中可以设置文件夹或单个文件的不同选项,这些选项在文件和文件夹选项中解释过。

在这种情况下,可能有附加的属性页及仅与所选项相关的对话框页。

下表概述了各种选项对话框的功能。

对话框页

描述

Device

从µVision的设备数据库中选择选择设备。

Target

为应用程序指定硬件环境。

Output

定义工具链的输出文件,在编译完成后运行用户程序。

Listing

指定工具链产生的所有列表文件。

设置C编译器的工具选项,例如代码优化和变量分配。

Asm 

设置汇编器的工具选项,如宏处理。

Linker 

设置链接器的相关选项。

一般来说,链接器的设置需要配置目标系统的存储分配。

设置链接器定义存储器类型和段的位置。

Debug

µVision调试器的设置。

Utilities

配置Flash编程实用工具。

 

实验二、ARM指令集

2.1ARM汇编指令1

【实验内容】

建立一个汇编工程,要求完成两个变量求和,编译通过后,调试结果。

【实验目的】

初步学会使用μVision3IDEforARM开发环境及ARM软件模拟器;

通过实验掌握简单ARM汇编指令的使用方法。

【实验步骤】

1、新建工程

首先在\就业班ARM课件\ARM实验\第1天\目录下建立文件夹命名为asm-00,运行μVision3IDE集成开发环境,选择菜单项Project–New…–μVisionProject,系统弹出一个对话框,按照图2-1所示输入相关内容。

点击“保存”按钮,将创建一个新工程asm00.Uv2。

图2-1

2、为工程选择CPU

新建工程后,要为工程选择CPU,如图2.2所示,在此选择SAMSUNG的S3C2410X

图2-2

3、添加启动代码

在图2-3中点“确定”后,会弹出一个对话框,问是否要添加启动代码。

如图2.3所示。

图2-3

由于本实验是简单的汇编实验,因此不需要启动代码。

选择否。

4、选择开发工具

要为工程选择开发工具,在Project-Manage-Components,EnvironmentandBooks-Folder/Extensions对话框的Folder/Extensions页内选择开发工具,如图2-4所示。

图2-4选择开发工具

从图中可以看到,有三个开发工具可选,在此选择RealViewCompiler。

5、建立源文件

点击菜单项File-New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。

编辑完后,保存文件asm1_a.s。

6、添加源文件

单击工程管理窗口中的相应右键菜单命令,选择AddFilesto…,会弹出文件选择对话框,在工程目录下选择刚才建立的源文件asm1_a.s。

如图2-5所示。

图2-5

7、工程配置

选择菜单项Project->OptionforTarget…,将弹出工程设置对话框,如图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基本配置Debug

8、生成目标代码

选择菜单项Project-Buildtarget或快捷键F7,生成目标代码。

在此过程中,若有错误,则进行修改,直至无错误。

若无错误,则可进行下一步的调试。

9、调试

选择菜单项Debug-Start/StopDebugSession或快捷键Ctrl+F5,即可进入调试模式。

若没有目标硬件,可以用μVision3IDE中的软件仿真器。

如果使用MDK试用版,则在进入调试模式前,会有如下对话框弹出,如图2-9所示。

图2-9在软件仿真下调试程序

确定后即可调试了,做如下调试工作:

参看“asm-00”目录下的代码。

图2.10ARM汇编练习

---编译,链接。

Optionsfortarget“Target1”中设置如下:

Targettab

Linkertab

去掉“usememorylayoutfromtargetdialog”,R/OBase填0x0,R/WBase填0x4000000。

--进入调试模式,开始调试,并注意查看寄存器的值,检查计算结果是否正确。

注意:

汇编语言的源语句行的一般格式是:

{label}{instruction|directive|pseudoinstruction}{;comment}

即使没有标号,指令、伪指令和命令前面也必须有一个空白,例如一个空格或制表符。

源语句行的所有三部分都是可选的。

可以使用空行来使代码更具可读性。

对以上代码的解释:

段和AREA命令

段是独立的、命名的、不可分割的代码或数据序列。

一个代码段是生成一个应用程序的最低要求。

汇编或编译的输出可以包括:

∙一个或多个代码段。

它们通常是只读段。

∙一个或多个数据段。

它们通常是读写段。

它们可以是零初始化的(ZI)。

链接程序依照段位置规则,将每个段放在一个程序映像中。

在源文件中相邻的段,不一定要在应用程序映像中相邻。

在源文件中,用AREA命令来标记一个段的开始。

该命令对段进行命名并设置其属性。

属性放在名称后面,之间用逗号分隔。

ENTRY命令

ENTRY命令标记要执行的第一个指令。

在包含C代码的应用程序中,在C库的初始化代码中也包含一个入口点。

初始化代码和异常处理程序也包含入口点。

END命令

此命令指示汇编程序停止处理这个源文件。

每个汇编语言源模块必须以一行单独的END命令结束。

2.2ARM汇编指令2

【实验内容】

使用add/sub/lsl/lsr/and/orr等指令,完成基本算术/逻辑运算。

【实验目的】

初步学会使用μVision3IDEforARM开发环境及ARM软件模拟器;

通过实验掌握简单ARM汇编指令的使用方法。

【实验步骤】

参看“asm-01”目录下的代码

按照实验一的方法,新建一个project,名字为asm01;添加asm01.s文件到项目中。

帮助:

LDR指令:

LDR指令用于从内存中将一个32位的字读取到目标寄存器。

LDR指令根据所确定的地址模式将一个32位字读取到指令中的目标寄存器

如果指令中的寻址方式确定的地址不是字对齐的,则读出的数值要进行循环右移。

所移位数为寻址方式确定的地址bits[1∶0]8的倍,也就是说处理器将取到的数值作为字的最低位处理。

如果设置了L位,则进行装载,否则进行存储。

如果设置了P位,则使用预先变址寻址,否则使用过后变址寻址。

如果设置了U位,则给出的偏移量被加到基址寄存器上,否则从中减去偏移量。

如果设置了B位,传送内存的一个字节,否则传送一个字。

这在助记符末尾添加后缀“B”,如MOVr7,r5变为MOVBr7,r5。

W位的解释依赖于使用的地址模式。

●对于预先变址寻址,设置W位强制把它用做地址转换的最终地址写回基址寄存器中(例如,传送的副作用是Rn:

=Rn+/-offset。

这在汇编器中表示为给指令加上后缀“!

”。

)。

●对于过后变址寻址,地址总是写回,设置W位指示在进行传送之前强制地址转换。

这在汇编器中表示为给指令加上后缀“T”。

●当PC作为LDR的目的寄存器时,从存储器取得的数据将被当作目标地址值,程序将跳转到目标地址开始执行。

指令的语法格式

LDR{}

它确定了指令编码中的I、P、U、W、Rn和位。

所有的寻址模式中,都会确定一个基址寄存器Rn。

指令举例

LDRr1,[r0,#0x12];将r0+12地址处的数据读出,保存到r1中(r0的值不变)

LDRr1,[r0];将r0地址处的数据读出,保存到r1中(零偏移)

LDRr1,[r0,r2];将r0+r2地址的数据读出,保存到r1中(r0的值不变)

LDRr1,[r0,r2,LSL#2];将r0+r2×4地址处的数据读出,保存到r1中(r0,r2的值不变)

LDRRd,label;label为程序标号,label必须是当前指令的±4KB范围内

LDRRd,[Rn],#0x04;Rn的值用作传输数据的存储地址。

在数据传送后,将偏移量0x04与

Rn相加,结果写回到Rn中。

Rn不允许是r15

STR指令:

STR指令用于将一个32位的字数据写入到指令中指定的内存单元。

指令的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1