嵌入式系统原理与设计实验指导书成都信息工程学院电子工程系二00八年七月实验一:ADS1.2集成开发环境及EasyJTAG-H仿真器应用1.实验目的掌握在ADS1.2开发环境里如何建立、编译连接工程、仿真调试及脱机运行的基本方法。2.实验设备●硬件:PC机一台EasyARM2103教学实验开发平台一套●软件:Windows98/XP/2000系统,ADS1.2集成开发环境3.实验内容使用EasyJTAG-H仿真器在ADS1.2集成开发环境里运行一个程序,来熟悉ADS1.2集成开发环境和使用仿真器,最终脱机运行。利用EasyARM2103在ADS1.2集成开发环境下的工程模板编写程序,程序的功能设计为控制LED1灯的闪烁。4.实验预习要求仔细阅读《EasyARM2103教材》第3章EasyARM2103快速入门的说明5.实验步骤(1)打开ADS(ARM_DeveloperSuitev.12-CodeWarriorforARMDeveloperSuite)开发环境,使用ARMExecutableImageforlpc2103模板建立工程——Example,如图1.1所示。项目目录如图3.27所示。图1.1使用EasyARM2103工程模板建立工程——Example图1.2ADS项目工程目录(2)在user组中的main.c文件中添加代码。(3)选用DebugInRAM生成目标,然后编译连接工程。选择DebugInRAM生成目标时,编译连接的目标代码用于片内RAM调试。(4)将EasyARM2103教学实验开发平台上的JP4跳线短接。(5)选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。将计算机并口与EasyJTAG-H仿真器相连,然后再将EasyJTAG-H仿真器的JTAG接口连接到EasyARM2103目标板上,打开H-JTAGServer,检测到芯片内核信息后,打开AutoDownload选项,如图1.3所示。此时会自动启动H-Flasher软件,选择目标芯片的型号,如图1.4所示,将当前的配置信息保存起来,建议将配置信息保存到安装路径下的Hconfig文件夹内,如图1.5所示。图1.3启动H-JTAGServer图1.4选择芯片型号图1.5保存配置信息在H-JTAGServer中选择AutoDownload项后,H-Flasher的只需设置芯片型号即可,至于烧写目标文件可以不设置。设置完成后,关闭H-JTAGServer和H-Flasher(注意:不能使用Exit项关闭)。启动AXD,打开【Options】-【ConfigureTarget...】,弹出ChooseTarget窗口,如图1.6所示。点击“ADD”添加仿真器的驱动程序,在添加文件窗口选择如D:\ProgramFiles\H-JTAG目录下的H-JTAG.dll,点击“打开”即可。图1.6ChooseTarget窗口添加完EasyJTAG-H驱动后,选择该驱动程序,如图1.7所示,然后点击OK,出现图1.7所示的界面。图1.7H-JTAG检测到的CPU内核关闭AXD界面,回到ADS中,在正常情况下,点击Debug仿真后,PC指针会指向中断向量表的起始处,如图1.8所示。图1.8进入AXD仿真调试界面如果工程文件的路径中存在中文,直接进入AXD调试环境会出现错误,此时需要重新设置配置信息,如图1.9所示。因此,建议工程路径中不包含中文。(6)脱机运行调试时若选择使用DebugInFLASH生成目标,并进行调试后(使用EasyJTAG-H仿真器),程序即烧写到片内Flash中。将EasyJTAG-H和电源断开,重新上电,程序将脱机运行,将会看到LED闪烁。使用RelInFlash生成目标时,编译连接生成的目标代码会将芯片加密。此时不能再进行调试,除非使用ISP进行全片擦除,否则是不能再进行调试的。(7)可以全速运行程序,LED1灯亮一会,熄灭一会……依次循环。6.实验参考程序程序清单1LED控制程序/****************************************************************************************/#includeconfig.h#defineLED1117/*P0.17控制LED1*//*******************************************************************************************函数名称:Delay**函数功能:延时子程序**入口参数:dly延时参数,值越大,延时时间越长**出口参数:无**返回值:无*****************************************************************************************/voidDelayNS(uint32dly){uint32i;for(;dly0;dly--){for(i=0;i50000;i++);}}/*******************************************************************************************函数名称:main**函数功能:跳线JP4短接,LED1闪烁**入口参数:无**出口参数:无**返回值:无*****************************************************************************************/intmain(void){PINSEL1=PINSEL1&(~(0x032));/*将P0.17设置为GPIO*/IO1DIR=LED1;/*设置LED控制口为输出*/while(1){IO1SET=LED1;/*LED1熄灭*/Delay(50)IO1CLR=LED1;/*LED1点亮*/Delay(50)}return0;}/****************************************************************************************/7.作业1、工程模板有哪些作用?2、如何强行重新编译工程的所有文件?实验二:高速GPIO-LED灯闪烁控制实验1.实验目的掌握EasyARM2103的ARM7微控制器的GPIO控制。2.实验设备●硬件:PC机一台EasyARM2103教学实验开发平台一套●软件:Windows98/XP/2000系统,ADS1.2集成开发环境3.实验内容选择高速GPIO,控制LED灯闪烁。需要短接JP4的P0.17、P0.18、P0.19、P0.20端口,输出控制LED1、LED2、LED3和LED4灯。4.实验预习要求仔细阅读《EasyARM2103教材》第4章EasyARM2103功能部件详解的4.1节引脚连接模块和4.2节GPIO。5.实验步骤(1)打开ADS(ARM_DeveloperSuitev.12-CodeWarriorforARMDeveloperSuite)开发环境,使用ARMExecutableImageforlpc2103模板建立工程——EnhanceGPIO。(2)在user组中的main.c文件中添加代码。(3)选用DebugInRAM生成目标,然后编译连接工程。(4)将EasyARM2103教学实验开发平台上的JP4跳线短接。(5)选择【Project】-【Debug】,启动AXD进行JTAG仿真调试。(6)可以全速运行程序,LED1、LED3灯熄灭,LED2、LED4灯点亮一会,LED2、LED4灯熄灭,LED1、LED3灯点亮一会……依次循环。6.实验参考程序程序清单2高速GPIO-LED灯闪烁控制程序/****************************************************************************************/#includeconfig.h#defineLED1117/*P0.17控制LED1*/#defineLED2118/*P0.18控制LED2*/#defineLED3119/*P0.19控制LED3*/#defineLED4120/*P0.20控制LED4*//*******************************************************************************************函数名称:Delay**函数功能:延时子程序**入口参数:dly延时参数,值越大,延时时间越长**出口参数:无**返回值:无*****************************************************************************************/voidDelayNS(uint32dly){uint32i;for(;dly0;dly--){for(i=0;i50000;i++);}}/*******************************************************************************************函数名称:main**函数功能:跳线JP4短接,LED闪烁**入口参数:无**出口参数:无**返回值:无*****************************************************************************************/intmain(void){PINSEL1=PINSEL1&(~(0xFF2));/*将P0.17-P0.20设置为GPIO*/SCS=0x01;/*设定为高速GPIO模式*/FIO0DIR=LED1|LED2|LED3|LED4;/*设置LED控制口为输出*/FIO0SET=LED1|LED2|LED3|LED4;/*LED1熄灭*/while(1){FIO0SET=LED1|LED3;/*LED1、LED3熄灭*/FIO0CLR=LED2|LED4;/*LED2、LED4点亮*/DelayNS(50);/*延时*/FIO0CLR=LED1|LED3;/*LED1、LED3点亮*/FIO0SET=LED2|LED4;/*LED2、LED4熄灭*/DelayNS(50);/*延时*/}return0;}/****************************************************************************************/7.作业1、为什么本实验的工程不需要设置链接地址?(EasyARM2103专用工程模版已集成了启动代码、编译选项和链接地址设置等)2、在实验程序中,如何控制LED灯的闪烁速度?(DelayNS())3、要将以上几个I/O口作GPIO功能时,为什么要注意对PINSEL2的操作?在启动程序中哪里配置了PINSEL2?4、在实验程序中,“#defineLED4120”这种表达式对于I/O操作有哪些方便的地方?5、如何避免“C2892E:signedconstantoverflow”警告(“#defineLED41u20”,这里u表示无符号数值)实验三:定时器实验1.实验目的掌握EasyARM2103的ARM7微控制器中定时器0/1的基本设置及应用。2.实验设备●硬件:PC机一台EasyARM2103教学实验开发平台一套逻辑分析仪一台●软件:Windows98/XP/2000系统,ADS1.2集成开发环境3.实验内容定时器1匹配输出PWM波形,波形的占空比设定如下:P0.19输出的波形占空比为50%,P0.20输出的占空比为25%4.实验预习要求仔