1、 1.ARM9开发板 2.ARM JTAG线 3 .PC机(软件:H-JTAG v0.9.2、ADS1.2)【实验原理】ARM模块的核心芯片为S3C2410,系统主频最高可达266MHz,Nand Flash为K9F1208,可存储64M Byte, SDRAM可存储32M byte。S3C2410共有117个多功能复用I/O口,分为8组,即PORTAPORTH。相关寄存器有:端口控制寄存器(GPACONGPHCON)、端口数据寄存器(GPADATGPHDAT)、端口上拉寄存器(GPBUPGPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。ARM核心板的两个LED连接在S3
2、C2410的GPF6和GPF7上,通过修改寄存器内容可控制两端口的电平,当端口输出为时,LED变亮。ADS是一种ARM嵌入式开发工具,包含了Code Warrior和AXD两个图形化开发环境,前者用于工程文件管理、程序代码编辑、程序编译链接,后者主要用于软件调试和硬件调试。ADS英文全称为ARM Developer Suite,ARM ADS起源于ARM SDT,对一些SDT的模块进行了增强并替换了一些SDT的组成部分。ARM ADS支持所有的ARM系列处理器,包括最新的ARM9E和ARM10。除了可以在ARM SDT支持的操作系统中运行外,ARM ADS还可以在Windows以及RedHat
3、 linux上运行。ARM ADS由6个部分组成:代码生成工具、集成开发环境、调试器、指令集模拟器、ARM开发包和ARM应用库。代码生成工具 代码生成工具由源程序编辑、汇编及链接工具集组成。集成开发环境 集成开发环境指Code Warrior IDE,包括工程管理器、代码生成接口、语法敏感编辑器、源文件和类浏览器、源代码版本控制系统接口以及文本搜索引擎等。调试器 ADS中包含3个调试器,分别是ARM扩展调试器AXD(ARM eXtended Debugger)、向下兼容的ARMDebugger for Windows/ARM Debugger forUNIX 和ARM 符号调试器。AXD是目前
4、最常用的调试器。指令模拟器 ARM中的指令模拟器可以实现在PC机上对基于内核处理器的ARM和Thumb提供精确的模拟,从而可以在没有硬件支持的情况下实现部分调试工作。ARM开发包 ARM开发包由一些底层的例程和库组成,可以帮助用户快速开发基于ARM的应用程序和操作系统。ARM应用库 ADS的ARM应用库完善并增强了SDT中的函数库,同时还包括了一些非常有用的源码例程【实验步骤】.用ARM JTAG线连接ARM实验板和PC机,然后给ARM实验板供电(可用底板供电,也可单独给ARM板供电)。.打开JTAG软件,点击Settings里面的LPT JTAG Settings,选择User Define
5、d模式,相关配置如下图:配置好后点击OK退出,然后点击放大镜,Detect target,正常检测到ARM内核如下图:打开桌面上的H-Flasher,点击Check,如能正确检测到Flash,显示如下:.正常检测到ARM内核后打开AXD,点击Options里的Configure Target,显示如下:其中ADP为硬件调试方式,ARMUL为软件调试方式。单击ARMUL,然后点击Configure,Processor项选择ARM920T,OK退出,再OK进入软件模拟环境。.打开Code Warrior,执行File里New命令,在File name里输入tests,选择保存位置,确定后在编辑区输
6、入以下代码: AREA asm, CODE, READONLY IMPORT add ENTRY LDR ro,=0x1 LDR r1,=0x2 LDR r2,=0x3 BL add B . END保存后以同样方式在同一目录在建立mainc文件,代码如下:int add(int a,int b,int c) return a+b+c;.建立工程项目,File菜单中选New,在projectname中输入test,确定后弹出testmcp窗口,点击右键后Add Files:把两文件添加进来,其中Targets选择DebugRel。三种可选目标含义如下: DebugRel:生成目标时,为每一个源文
7、件生成调试信息; Release:生成目标时,不生成任何调试信息; Debug:生成目标时,为每一个源文件生成最完全的调试信息。.后续设置如下图:配置好后点击Make,进行编译。如果没有错误则窗口如下:此时在项目文件夹下DebugRel里有后缀为axf的映像文件和bin的二进制文件,映像文件用于程序调试,二进制文件用于烧写到FLASH中。7.进行软件调试。回到AXD界面,单击File,然后Loadimage打开映像文件。此时可以进行单步运行、断点设置、全速运行等调试。执行后可以看到Register里Current变量如下:8.下面开始硬件调试: 首先用CodeWarrior编写一个硬件调试程序
8、,在此以跑马灯为例,来控制ARM核心板上的两个LED。先建立一个2410leds文件,代码如下: AREA Init,CODE,READONLY; IMPORT C_Entry; BL C_Entry; B .再建立一个mainentryc文件,代码为: #define GPFCON (*(volatile unsigned *)0x56000050) ;定义F端口控制寄存器的地址 #define GPFDAT (*(volatile unsigned *)0x56000054) ;定义F端口数据寄存器的地址 #define GPFUP (*(volatile unsigned *)0x560
9、00058) ;定义F端口上拉寄存器的地址 void delay(unsigned counter); void extern C_Entry() GPFCON=0x5000; GPFUP=0xffff; while(1) GPFDAT=0x7f; ;使GPF7输出为0 delay(500); GPFDAT=0xbf;使GPF6输出为0 void delay(unsigned counter) unsigned k; while(counter-) k=400; while(k-);在工程中加入两文件时选择Debug方式:在编译成映像文件前要进行Debug Settings,所需设置如图:设置好后编译成映像文件,再打开AXD,此时需要用H-JTAG调试方式进行与ARM板的连接,点开Options里的connfig target,点击Add,选择H-JTAG.dll。点击OK,连接成功。如果连接报错,重新检测H-JTAG和H-Flasher。File里load image,选择刚刚编译好的axf映像文件。这时候点击全速运行即可看到LED交替闪烁,即跑马灯。【实验报告要求】 1.对实验中跑马灯程序做简要注释并分析 2.回答实验思考题【思考题】1.分析混合控制编程的原理,分析.s文件和.c文件是如何结合的。2.当GPF4-GPF7分别连LED时,编写这四个LED的跑马灯程序。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1