arm实验一.docx
《arm实验一.docx》由会员分享,可在线阅读,更多相关《arm实验一.docx(14页珍藏版)》请在冰豆网上搜索。
arm实验一
汇编语言与接口技术实验报告
熟悉开发环境及工程创建
院系信息科学与工程学院
专业班级计科1101
学生姓名杜海
指导教师黄向宇
提交日期2014年4月2日
一、实验目的
1,熟悉IAREWARM编程环境。
2,熟悉博创经典UP-TECHS2410DVP
3,熟悉UP-TECHS2410DVP平台使用
4,学会设置超级终端
5,学会设置H-JTAG使用方法
6,EWARM集成开发环境的使用
二、实验内容
1,了解H-JTAG的安装,学会H-JTAG的设置。
2,学会使用在ttyso-超级终端中对UP-TECHS2410DVP中的Linux操作系统完成转电机、放mp3和视频等小试验。
3,学会在EWARM中生成一个新项目并编译和连接应用程序
4,学会用C-SPY调试应用程序
三、实验环境
1,硬件:
ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG仿真器、串口线。
2,软件:
PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序。
四、实验原理
1,当前ARM的学习与开发非常流行,由于ARM的软件开发相对以前单片机而言更加复杂,硬件上的考虑也比较多,因此选择一个好的调试方法将可以使得开发的除错过程变得更加直接和简单。
现在市面上有很多可用于ARM调试的仿真器出售,然而其价格往往都比较贵。
这些仿真器一般都有其专用的软件和硬件,在速度和flash编程等方面有各自的优势。
然而对初学者而言,这些仿真器的成本都太高。
而简易仿真器的出现,使得大家可以使用甚至自制ARM仿真器硬件。
有了调试器的硬件,还要加上调试代理软件,作为中介,将调试器前端软件(比如AXD)的调试信息与目标板上的目标芯片交互,才能最终完成仿真的任务。
目前,可以免费使用的简易ARM仿真器的代理软件很多,差别也比较大,主要表现在易用程度,目标器件支持,调试速度等方面。
H-JTAG作为近来新推出的简易ARM仿真器调试代理,其支持器件比较多,支持的调试器前端软件也比较多,特别是支持keil,其调试速度也很有优势。
2,EWARM是按项目进行管理的,它提供了应用程序和库程序的项目模板。
项目下面可以分级或分类管理源文件。
允许为每个项目定义一个或多个编译连接(build)配置。
在生成新项目之前,必须建立一个新的工作区(Workspace)。
一个工作区中允许存放一个或多个项目。
另外用户最好建立一个专用的目录存放自己的项目文件。
3,EWARM调试器的软件特色
Ø完全集成的源代码和反汇编程序调试器
Ø非常细化的执行控制(函数调用级步进)
Ø复杂的代码和数据断点
Ø丰富的数据监视功能
ØLocals,Watch,Auto,LiveWatch和QuickWatch等变量查看窗口
Ø寄存器和存储器查看窗口
Ø支持STL容器
ØC/C++调用栈窗口,同时还可以显示将要进入的函数
Ø双击调用链上的任何函数将更新编辑器、局部变量、寄存器、变量查看和反汇编窗口,以显示在该函数调用时的状态
Ø跟踪功能,可以检查执行的历史记录。
在跟踪窗口中移动时将更新编辑器和反汇编窗口以显示合适的位置
Ø控制台I/O仿真
Ø中断和I/O模拟仿真
Ø类似C语言的宏系统,可扩充调试器的功能
Ø由主机执行的应用程序系统调用仿真
Ø代码覆盖率和执行时间分析工具
Ø通用的FlashLoader程序及开发指南
Ø同时支持多颗Flash的FlashLoader程序
Ø支持OSEKRun-TimeInterface(ORTI)
Ø提供为调试器扩充第三方功能的软件开发包,如RTOS调试扩充和仿真器驱动扩充
Ø命令行调试工具
4,IARC-SPY支持的调试方法
ØIARJ-LinkJTAG接口(支持所有ARM7和ARM9核,通过USB或TCP/IP连接)
ØIARJ-TraceJTAG接口(支持所有ARM7和ARM9核,通过USB或TCP/IP连接)
ØRDI接口类的第三方仿真器(AbatronBDI1000&BDI2000,EPIMajic,AshlingOpella,AijiOpenICE,SignumJTAGjet,ARMMulti-ICE等)
ØMacraigorWiggler,Raven,mpDemon和USBdemon等调试接口
ØEPIJeeni仿真器支持
ØIAR的ROM-Monitor
ØARM公司的AngelROM-Monitor(用于Atmel和CirrusLogic的评估板)
五、实验步骤
试验一:
设置JTAG端口
1双击运行H-JTAG
2选择菜单项Settings>JtagSettings修改选项配置如下图:
3选择菜单项Settings>PortSettings选择ARM-JTAG仿真器所用的并口号,点击PortTesting按钮,已确认该并口是否可用,否则请检查BIOS设置。
4正常应该弹出
5点击Options菜单,检查DisableSemihosting和DisableVectorCatch是否为选中状态,若没有选中应将其勾选。
6使用UP-LINK接通开发板和主机,开启电源。
7在H-JTAGServer窗口中选择Operations>DetectTarget应该能够侦测目标板上的ARM7~10内核如下图,如侦测不到请检测上述步骤。
a)设置初始化脚本
b)检测目标器件
使用开发板附带的JTAG小板连接开发板的JTAG接口,并接上打开电源。
点主菜单Operations->DetectTarget,或者点工具栏相应的图标也可以,这时就可以看到已经检测到目标器件了。
提示:
如果没有设置初始化脚本,也可以检测到CPU,但无法进行下面的单步调试。
试验二:
完成在ttyso-超级终端中对UP-TECHS2410DVP中的Linux操作系统完成转电机、放mp3和视频等小试验
1.转电机
1在ttyso-超级终端中输入ls查询目录中的文件
2cddc-motor进入dc-motor目录
3输入ls查询目录中的文件
4insmoddc-motor.o用来启动驱动
5dcm_main用来执行文件
6按键盘上的ctrl+z来停止操作
2.放视频和MP3
①在ttyso-超级终端中输入ls查询目录中的文件
②cdmplayer进入mplayer目录
③dcm_main用来执行文件
④mplayertest.avi来完成音频的播放
3.进入操作程序
1在ttyso-超级终端中输入ls查询目录中的文件
2cdQtopia进入Qtopia目录
3qtopia进入操作程序
试验三:
学会在EWARM中生成一个新项目并编译和连接应用程序
1.生成新的工作区(Workspace)
选择主菜单File>New>Workspace生成新工作区。
2.生成新项目
①选择主菜单Project>CreateNewProject,弹出生成新项目窗口,见下图所示。
②在Toolchain栏中选择ARM,然后点击OK按钮。
③在弹出的另存为窗口中浏览和选择新建的project目录,输入文件名project1,然后保存。
这时在屏幕左边的Workspace窗口中将显示新建的项目名。
见下图所示:
IAREWARM提供两种缺省的项目生成配置,即Debug和Release。
本例在Workspace窗口顶部的下拉菜单中选取Debug。
现在project目录下已生成一个project1.ewp文件。
该文件中包含与project1项目设置有关的信息,如build选件等。
项目名后缀上的*号表示该工作区有改变但还没有被保存。
本例调用printf库函数,这是在C-SPY模拟器中的一个低级write函数。
如果用户希望在真实硬件上以release配置运行例子,就必须提供与硬件相适配的write函数。
④保存工作区
先选择主菜单File>SaveWorkspace,浏览并选择project目录。
然将工作区取名为tutorials输进Filename输入框,按保存按钮退出。
这时在projects目录下将生成一个tutorials.eww文件,该文件中保存了用户添加到tutorials工作区中的所有项目。
窗口和断点放置等与当前操作有关的其他信息则被存储在Myprojects\settings目录下的文件中。
3.给项目添加文件
本例我们将采用arm\tutor目录下的两个源文件,Tutor.c和Utilities.c。
①在Workspace中选择希望添加文件的目的地,可以是项目或源文件组。
本例直接选project1。
②选择主菜单Project>AddFiles打开标准浏览窗口,见图3。
选择安装目录ARM\tutor下的上述2个文件,点击打开按钮,把它们添加到Project1目录下。
4.设置项目选件
生成新项目和添加文件后就应该为项目设置选件。
IAREWARM允许为任何一级目录和文件单独设置选件,但是用户必须为整个项目设置通用的编译连接(build)选件。
①选择通用选件
选中Workspace中的project1–Debug,然后选择主菜单Project>Options。
也可以先选择project1–Debug,然后选择鼠标右键命令中的Options。
在打开的Options窗口左边的Category中选择GeneralOptions。
然后分别在:
-Target页面/Core条目下选择ARM7TDMI-S
-Output页面中,Outputfile条目下选择Executable
-LibraryConfiguration页面中,Library条目下选择Normal
②选择编译器选件
在Options窗口的Category中选择C/C++Compiler,
然后在:
-Language页面中,选择C
-Output页面中,选择Generatedebuginformation
-List页面中,选择Outputlistfile。
并选择Assemblermnemonics和Diagnostics
-点击OK按钮,确认选择的选件
5.编译源文件
①选中workspace中utilities.c文件。
②选择主菜单Project>Compile,或工具条中的Compile按钮,或按右键后选择Compile命令。
③用同样的方法编译tutor.c。
编译完成后在Myprojects目录下将生成一批新子目录。
因为我们在建立新项目时选择Debug配置,所以在Myprojects目录下自动生成一个Debug子目录。
Debug子目录下又包含另3个子目录,名字分别为List、Obj、Exe。
它们的用途如下:
_List目录存下放列表文件,列表文件的后缀是lst;
_Obj目录下存放Compiler和Assembler生成的目标文件,这些文件的后缀为0;
_Exe目录下存放可执行文件,这些文件的后缀为out,注意在执行连接处理之前这个目录是空的。
点击project1–Debug前面的+号将目录展开。
你可以从自动生成的Output目录中看到所有生成的输出文件名以及反映相互依赖关系的的头文件名
6.连接应用程序
①先选中Workspace窗口中的Project1–Debug,然后选择主菜单Project>Options,弹出Options对话窗口在List页面中选择Generatelinkermapfile(见允许生成存储器分配MAP文件。
在在config里面选中Overridedefault。
7.运行应用程序
先选中Workspace窗口中的Project1-Debug,然后选择主菜单Project>DwonloadandDebug,然后选择主菜单Debug->go。
试验四:
学会调试应用程序
1.查看程序结果
选择主菜单的View>TerminalI/O即可看见程序的输出结果。
2.查看寄存器的状态
选择主菜单的View>Register即可看见各个寄存器的状态。
3.查看存储器的状态
选择主菜单的View>Memory即可看见存储器的状态
4.查看变量的值
选择主菜单的View>Watch,再在界面中输入变量既可看见变量的值
1-4的运行图如下图:
5.设置和监视断点
IARC-SPY具有强大的断点功能。
设置断点最简单的方法是将光标定位到某条语句,然后按鼠标右键选择ToggleBreakpoint命令。
实验方法如下:
①设置断点
用下面方法在语句上设置断点。
在编辑器窗口显示utilities.c。
点击要设置断点的语句,选择主菜单Edit>ToggleBreakpoint。
也可以按工具条上的ToggleBreakpoint按钮。
这时该语句上将出现断点标记。
如果要查看刚定义的断点,选择主菜单View>Breakpoint打开Breakpoint窗口。
在DebugLog窗口也显示有关断点执行的信息。
②执行到断点
选择主菜单Debug>Go或者工具条上的Go按钮都可以让程序执行到断点。
Watch窗口将显示root表达式的值。
DebugLog窗口将显示关于断点的信息。
③消除断点
可用主菜单Edit>ToggleBreakpoint或按鼠标右键选择ToggleBreakpoint。
6.执行程序到结束
①选择主菜单Debug>Go或工具条上的Go按钮。
因为只有一个断点,所以程序一直执行到结束。
②如果要求复位应用程序,选择主菜单Debug>Reset或工具条上的Reset按钮。
③如果要退出C-SPY,选择Debug>StopDebugging,或工具条上的StopDebugging按钮
六、实验结果与分析
实验结果如实验步骤。
现在将对与自己写的一个C语言程序,在IAREWARM中完成一系列的操作。
C语言代码如下:
#include
voidmain()
{
intb[10]={1,-2,5,6,8,-9,-8,9,-7,5};
inti;
intsum1=0,sum2=0;
for(i=0;i<10;i++)
{
if(b[i]>0)
sum1+=b[i];
elseif(b[i]<0)
sum2+=b[i];
}
printf("正数之和为:
%d,负数之和为:
%d\n",sum1,sum2);
}
对此c语言程序进行各种调试后的界面为: