文档库 最新最全的文档下载
当前位置:文档库 › ADS环境及超级终端使用

ADS环境及超级终端使用

实验一ADS环境及超级终端使用

一、实验目的

熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。

二、实验内容

本次实验使用ADS 集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。

三、预备知识

C 语言的基础知识、程序调试的基础知识和方法。

四、实验设备及工具(包括软件调试工具)

硬件:ARM 嵌入式开发板、ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以上。

软件:ADS1.2 集成开发环境、仿真器驱动程序。

五、实验步骤

1)建立工程

(1)运行ADS1.2 集成开发环境(CodeWarrior for ARM Developer Suite)。选择File|New…菜单,在对话框中选择Project,如图1B-1 所示,新建一个工程文件。图中示例的工程名为Exp6.mcp 。点set…按钮可为该工程选择路径如图1B-2 所示,选中CreatFolder 选项后将以图1B-1 中的ProjectName 或图1B-2 中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。

在图1B-1 中工程模板列表中的44B0 ARM Executable Image 是专为本嵌入式开发板

设置的工程模板,后文有具体说明。在此也可选择ARM Executable Image 通用模板。

图1B-1 新建工程

图1B-2 保存工程

(2)在新建的工程中,如图1B-3 所示,选择Debug 版本,使用Edit | Debug Settings 菜单对Debug 版本进行参数设置。

图1B-3 选择版本

(3)在Debug Settings 对话框中选择Target Settings 项,如图1B-4 所示。在Post-linker 一栏中选择ARM fromELF 。

图1B-4 Target Settings

(4)在Debug Settings 对话框中选择ARM Linker 项,如图1B-5。在Output 选项卡的Simple image 框中设置连接的Read-Only (只读)和Read-Write (读写)地址。地址0x0c080000 是开发板上SDRAM 的真实地址,是由系统的硬件决定的;0x0c200000 指的是系统可读写的内存地址。也就是说,在0x0c080000~0x0c 1fffff 之间是只读区域,存放程序的代码段,在0xC200000 开始是程序的数据段。

图1B-5 设置连接地址范围

图1B-5 所示的设置只是一种简单设置,如果程序需要用到标准C 库函数的话需要按图1B-6 进行连接地址的设置。

标准C 中如果使用malloc 及其相关的函数,需要使用系统的堆(Heap)空间,可以通过scatter 文件来描述系统HEAP 段的位置。针对44B0 开发板,把程序的入口定位在0xc080000,并定义scatter 文件为scat_ram.scf 。在图1B-6 中选择LinkType 为Scattered,输入scatter 文件名scat_ram.scf ;然后切换到Options 选项卡在Image Entry Point 框中输入0xc080000 。也可以在图1B-6 的Command Line 框中直接输入-entry 0xc080000 -scatter

scat_ram.scf 进行上述设置。

图1B-6 通过scatter 文件设置连接地址

提示:

1.程序移植到ADS 后,程序最开始首先执行用汇编写的初始化代码——包括中断向量

内存空间的初始化。在该段代码中使用

IMPORT __main ;注意main 前面是两个下划线

B __main

进行系统内部的标准C 函数初始化,然后调用用户在C 中定义的main()函数(注意:两个main 都是小写),并且在嵌入式应用中用户C 的main 函数中不能有参数(int main(void))。

2. 不能有系统定义的软中断,在汇编中可以使用

IMPORT __use_no_semihosting_swi

来检测,在C 中使用#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting

3. scatter 文件内容如下,创建了一个RAM_LOAD 的程序和数据的装载区域,起始

地址0xc080000 。RAM_LOAD 0xc080000 { RAM_EXEC 0xc080000

{

44binit.o (init, +First)

* (+RO)

}

RAM 0x0c200000

{

* (+RW,+ZI)

}

HEAP +0 UNINIT

{

heap.o (+ZI)

}

STACKS 0xc7ff000 UNINIT

{

stack.o (+ZI)

}

ISR_STARTADDRESS 0xc7fff00 ;SDRAM bottom

{ isr_address.o (+ZI)

} } 在图1B-7 中说明了这个装载区域的划分。

图1B-7 程序和数据装载区域的划分

4. 定义retarget.c 函数,重新定位标准C 库中stdio 的一些相关函数。主要有:struct

__FILE { int handle; /* Add whatever you need here */}; FILE __stdout; //文件的定义int fputc(int ch, FILE *f)//fputc 函数int ferror(FILE *f) //ferror 函数void _sys_exit(int

return_code) //系统退出函数void _ttywrch(int ch) __value_in_regs struct

__initial_stackheap __user_initial_stackheap(unsigned R0, unsigned

SP, unsigned R2, unsigned SL)// 用户的堆空间和栈空间函

数具体定义,可以参考init/retarget.c

(5)在第(4)步中如果不选择简单的连接地址设置,则需按图1B-8 所示设置C 编译器。在Debug Settings 对话框中选择ARM C Compiler 项,在ATPCS 选项卡中选择

ARM/Thump interwork,或者在命令行中添加-apcs /interwork 。

图1B-8 设置ARM C Compiler

(6)在Debug Settings 对话框中选择ARM Linker 项,如图1B-9。在Layout 选项卡的Place at beginning of image 框中设置程序的入口模块。指定在生成的代码中,程序是从44binit.s 开始运行的。Object 设为44binit.o,section 设为init 。

图1B-9 设置入口模块

(7)在Debug Settings 对话框中选择ARM fromELF 项,如图1B-10 。在Output file name 框中设置输出文件名为system.bin,这就是要下载到开发板的嵌入式应用程序文件。

图1B-10 设置输出文件名

(8)回到如图1B-3 所示的工程窗口中,选择Release 版本,使用Edit | Release Settings 菜单对Release 版本进行参数设置。

(9)参照第(3)、(4)、(5)、(6)、(7)步在Release Settings 对话框中设置Release 版本的Post-linker、连接地址范围、入口模块和输出文件。

(10)回到如图1B-3 所示的工程窗口中,选择Targets 选项卡,如图1B-11 所示。选中DebugRel 版本,按Del 键将其删除。DebugRel 子树是一个折衷版本,通常用不到,所以在这里删除。

图1B-11 删除DebugRel 版本

(11)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。将工程文件名改为44B0 ARM Executable.mcp 。然后在ADS1.2 软件安装目录下的Stationery 目录下新建名为44B0 ARM Executable Image 的模板目录,再将刚设置完的44B0 ARM Executable.mcp 工程模板文件存放到该目录下即可。这样以后新建工程的时候如图1B-1 所示就能看到以44B0 ARM Executable Image 为名字的模板了。

(12)新建工程后,可以执行菜单Project | Add Files 把和工程相关的所有文件加入到工程中。ADS1.2 不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project | Create Group 创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。如图1B-12 所示。更为简单的办法是,在新建工程时ADS 创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。选中所有目录拖动到任务栏上的ADS 任务条上,不要松开鼠标当ADS 窗口恢复后再拖动到工程文件窗口,松开鼠标。这样ADS 将以子目录名建立同名文件组并以此对文件分类。

图1B-12 加入工程文件

(13)双击图1B-12 中的Main.c 打开该文件,可以看到Main ()函数的内容:

int main(void)

{ ARMTargetInit(); //开发版初始化

LCD_Init(); LCD_ChangeMode(DspTxtMode);// 转换LCD 显示模式为文本显示

模式LCD_Cls();//文本模式下清屏命令LCD_printf("Hello world!\n");// 向液晶屏

输出Uart_Printf("\nHello world!\n");// 向串口输出while(1);

}

读者可以查看其他源文件的内容以对系统运行有所了解。可以发现ADS 的文本编辑器已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit 菜单下的Preferences 窗口中进行设置。并可以很好的支持中文注释。

2)进行程序的在线仿真、调试

(1)回到图1B-12 所示的工程窗口选中Debug 版本,执行菜单Project | Make 对工程进行编译连接。在出现的错误/警告窗口中选择某错误/警告信息,ADS 会自动打开相应源文件并用箭头指向出错的文本行。如果某个源文件被修改,重新编译时ADS 会自动同步各文件的日期信息。

(2)在ADS 中执行菜单Project | Debug 启动ADS1.2 的调试工具AXD。

(3)在AXD 中执行菜单Options | Configure Target 对AXD 进行设置。如图1B-13 所示。选择ADP 即远程调试,点Configure 按钮进一步设置具体参数,如图1B-14 所示。

图1B-13 设置AXD 参数

(4)在图1B-14 中点Select 按钮选择远程连接为ARM ethernet driver ,点Configure 按钮输入仿真器的IP 地址。如果用户使用的是并行口仿真器,请输入127.0.0.1 即可。

图1B-14 设置远程连接

(5)等待程序装载完毕以后,通过Execute | Go 菜单以及Execute | Stop (或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。

(6)通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。也可以使用Step In 、Step Out 菜单命令进入或者跳出函数的调用。Run To Cursor 命令运行到光标位置。

(7)程序停止后可以通过Processor Views | Sources 菜单查看源文件,并可在适当位置按F9 设置端点。

(8)使用在Processor View 菜单下的Registers 、Variables 和Memory 命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。

注意:在进行调试时在ADS 中必须选择当前工程的Debug 版本,如果选择Release 版本则无法正常调试程序。但在调试通过后就必须选择Release 版本进行编译连接并将产生的system.bin 文件复制到开发板的Flash 中。将开发板上的Flash 激活并使Windows 认其为一个U 盘的操作在下节中描述。

实验一B:超级终端设置及BIOS 功能使用

1、运行Windows 系统下的超级终端(HyperTerminal )应用程序,如图1C-1 所示新建一个通信终端,取名为arm 。单击“确定”按钮。

图1C-1 创建超级终端

2、选择终端的连接的串口(如串行口1),如图1C-2 所示,设置通信的格式和协议。这里波特率为115200 ,无数据流控制。

图1C-2 设置串行口

3、完成超级终端设置以后,可以保存为一个特定终端到桌面上,以备后用。用串口线将PC 机和平台UART0 正确连接后,就可以在终端上看到程序输出的信息了,比如本实验的“Hello world!。

4、启动开发板,按住开发板上键盘的任意按键,使

开发板进入BIOS 设置状态。如图1C-3 所示。

图1C-3 系统的BIOS 设置程序

5、该画面上提示了该BIOS 的版本等信息。Shell Menu 是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC 机键盘相应键将执行对应功能。注意操作时保持超级终端处于激活状态,并且PC 机键盘为小写。

6、读者可以试着用一下每个测试功能,其中:

.l:测试LCD 的文本和图形显示。

.o:格式化开发平台的16M FLASH ,其中的文件将丢失,需要重新拷贝。

.n:设置平台网卡的IP 地址,子网掩码等,下有子菜单。

u:激活平台的USB 连接,开发平台可以被PC 机认为一个U 盘,从而可以方便的将字库,应用程序等文件从PC 机拷贝到平台的FLASH 中。

e 和k:测试平台上由ZLG7289 构成的LED 显示和键盘电路。

s:测试平台触摸屏,触摸屏有动作时终端上会显示动作类型和坐标。

h:设置触摸屏的坐标基准点,也就是校屏功能。需要按提示点击触摸屏的3 个位置并保存结果。

a 和d:测试平台的AD 和DA 电路,终端显示AD0-AD3 的数值,而DA 需要用电压表测量平台DA 输出端子。

.t:设置平台RTC 时间参数,该时间由平台电池保证持续计时。请按提示输入时间。 .i:测试平台的音频电路,可以听到一段从平台扬声器发出的音乐。

.m:测试平台的电机,需要打开电机开关,按提示分别测试步进电机或直流电机。 .c:测试平台的CAN 控制器。

.b:引导FLASH 中的应用程序。该功能将推出BIOS 状态,把控制交给应用程序。

7、按PC 键盘的u 键(要使超级终端处于活动状态),这时超级终端上会显示如图

1C-4

所示的信息。

图1C-4 进入U 盘状态

8、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M 非线性Flash。开发板就像一个U 盘,可以通过“我的电脑”进行操作。把上两节内容中生成的system.bin 文件通过USB 下载到嵌入式开发板中,复位系统,运行并检查输出结果。

提示:

system.bin 文件是系统通过BIOS 引导以后,装入内存中运行的默认文件名。所以上文中对工程的设置都使用该文件名作为编译最终文件。SDT 环境中,system.bin 文件产生在工程路径下的Debug 和Release 目录下;ADS 环境中,该文件产生在工程路径下的ProjectName_Data\Debug 和Release 目录下。建议将Release 下的system.bin 文件拷贝的到U 盘。

相关文档