实验六 ARM9嵌入式系统开发环境实验.docx
《实验六 ARM9嵌入式系统开发环境实验.docx》由会员分享,可在线阅读,更多相关《实验六 ARM9嵌入式系统开发环境实验.docx(16页珍藏版)》请在冰豆网上搜索。
实验六ARM9嵌入式系统开发环境实验
ARM9嵌入式系统开发环境实验
【实验目的】
1.了解ARM模块的基本特性。
2.掌握ADS(ARMDeveloperSuite)集成开发环境的软硬件调试方法。
【实验内容】
1.ADS中的混合控制编程。
2.ADS中的软件开发环境的搭建及调试。
3.ADS中的硬件开发环境的搭建及调试。
4.实现跑马灯。
【实验器材】
1.ARM9开发板
2.ARMJTAG线
3.PC机(软件:
H-JTAGv0.9.2、ADS1.2)
【实验原理】
ARM模块的核心芯片为S3C2410,系统主频最高可达266MHz,NandFlash为K9F1208,可存储64MByte,SDRAM可存储32Mbyte。
S3C2410共有117个多功能复用I/O口,分为8组,即PORTA~PORTH。
相关寄存器有:
端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。
ARM核心板的两个LED连接在S3C2410的GPF6和GPF7上,通过修改寄存器内容可控制两端口的电平,当端口输出为0时,LED变亮。
ADS是一种ARM嵌入式开发工具,包含了CodeWarrior和AXD两个图形化开发环境,前者用于工程文件管理、程序代码编辑、程序编译链接,后者主要用于软件调试和硬件调试。
ADS英文全称为ARMDeveloperSuite,ARMADS起源于ARMSDT,对一些SDT的模块进行了增强并替换了一些SDT的组成部分。
ARMADS支持所有的ARM系列处理器,包括最新的ARM9E和ARM10。
除了可以在ARMSDT支持的操作系统中运行外,ARMADS还可以在Windows以及RedHatlinux上运行。
ARMADS由6个部分组成:
代码生成工具、集成开发环境、调试器、指令集模拟器、ARM开发包和ARM应用库。
•代码生成工具代码生成工具由源程序编辑、汇编及链接工具集组成。
•集成开发环境集成开发环境指CodeWarriorIDE,包括工程管理器、代码生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制系统接口以及文本搜索引擎等。
•调试器ADS中包含3个调试器,分别是ARM扩展调试器AXD(ARMeXtendedDebugger)、向下兼容的ARMDebuggerforWindows/ARMDebuggerforUNIX和ARM符号调试器。
AXD是目前最常用的调试器。
•指令模拟器ARM中的指令模拟器可以实现在PC机上对基于内核处理器的ARM和Thumb提供精确的模拟,从而可以在没有硬件支持的情况下实现部分调试工作。
•ARM开发包ARM开发包由一些底层的例程和库组成,可以帮助用户快速开发基于ARM的应用程序和操作系统。
•ARM应用库ADS的ARM应用库完善并增强了SDT中的函数库,同时还包括了一些非常有用的源码例程
【实验步骤】
1.用ARMJTAG线连接ARM实验板和PC机,然后给ARM实验板供电(可用底板供电,也可单独给ARM板供电)。
2.打开H-JTAG软件,点击Settings里面的LPTJTAGSettings,选择UserDefined模式,相关配置如下图:
配置好后点击OK退出,然后点击放大镜,Detecttarget,正常检测到ARM内核如下图:
打开桌面上的H-Flasher,点击Check,如能正确检测到Flash,显示如下:
3.正常检测到ARM内核后打开AXD,点击Options里的ConfigureTarget,显示如下:
其中ADP为硬件调试方式,ARMUL为软件调试方式。
单击ARMUL,然后点击Configure,Processor项选择ARM920T,OK退出,再OK进入软件模拟环境。
4.打开CodeWarrior,执行File里New命令,在Filename里输入test.s,选择保存位置,确定后在编辑区输入以下代码:
AREAasm,CODE,READONLY
IMPORTadd
ENTRY
LDRro,=0x1
LDRr1,=0x2
LDRr2,=0x3
BLadd
B.
END
保存后以同样方式在同一目录在建立main.c文件,代码如下:
intadd(inta,intb,intc)
{
returna+b+c;
}
5.建立工程项目,File菜单中选New,在project name中输入test,确定后弹出test.mcp窗口,点击右键后AddFiles:
把两文件添加进来,其中Targets选择DebugRel。
三种可选目标含义如下:
DebugRel:
生成目标时,为每一个源文件生成调试信息;
Release:
生成目标时,不生成任何调试信息;
Debug:
生成目标时,为每一个源文件生成最完全的调试信息。
6.后续设置如下图:
配置好后点击Make,进行编译。
如果没有错误则窗口如下:
此时在项目文件夹下DebugRel里有后缀为.axf的映像文件和.bin的二进制文件,映像文件用于程序调试,二进制文件用于烧写到FLASH中。
7.进行软件调试。
回到AXD界面,单击File,然后Load image打开映像文件。
此时可以进行单步运行、断点设置、全速运行等调试。
执行后可以看到Register里Current变量如下:
8.下面开始硬件调试:
首先用Code Warrior编写一个硬件调试程序,在此以跑马灯为例,来控制ARM核心板上的两个LED。
先建立一个2410led.s文件,代码如下:
AREAInit,CODE,READONLY;
ENTRY
IMPORTC_Entry;
BLC_Entry;
B.
END
再建立一个main_entry.c文件,代码为:
#defineGPFCON(*(volatileunsigned*)0x56000050);定义F端口控制寄存器的地址
#defineGPFDAT(*(volatileunsigned*)0x56000054);定义F端口数据寄存器的地址
#defineGPFUP(*(volatileunsigned*)0x56000058);定义F端口上拉寄存器的地址
voiddelay(unsignedcounter);
voidexternC_Entry()
{
GPFCON=0x5000;
GPFUP=0xffff;
while
(1)
{
GPFDAT=0x7f;;使GPF7输出为0
delay(500);
GPFDAT=0xbf;;使GPF6输出为0
delay(500);
}
}
voiddelay(unsignedcounter)
{
unsignedk;
while(counter--)
{
k=400;
while(k--);
}
}
在工程中加入两文件时选择Debug方式:
在编译成映像文件前要进行DebugSettings,所需设置如图:
设置好后编译成映像文件,再打开AXD,此时需要用H-JTAG调试方式进行与ARM板的连接,点开Options里的connfigtarget,点击Add,选择H-JTAG.dll。
点击OK,连接成功。
如果连接报错,重新检测H-JTAG和H-Flasher。
File里loadimage,选择刚刚编译好的.axf映像文件。
这时候点击全速运行即可看到LED交替闪烁,即跑马灯。
【实验报告要求】
1.对实验中跑马灯程序做简要注释并分析
2.回答实验思考题
【思考题】
1.分析混合控制编程的原理,分析.s文件和.c文件是如何结合的。
2.当GPF4-GPF7分别连LED时,编写这四个LED的跑马灯程序。