广东工业大学嵌入式实验报告.docx
- 文档编号:24614392
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:38
- 大小:541.95KB
广东工业大学嵌入式实验报告.docx
《广东工业大学嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《广东工业大学嵌入式实验报告.docx(38页珍藏版)》请在冰豆网上搜索。
广东工业大学嵌入式实验报告
嵌入式系统实验报告
学生学院计算机学院
专业班级软件工程班
学号
学生姓名
指导教师
2010年月日
实验一:
ARM调试环境和ADS的使用
实验项目性质:
普通
所属课程名称:
嵌入式系统
实验计划学时:
2
一、实验目的:
了解ARM系统的基本开发环境和手段,建立调试系统和ADS编译系统使用方法和技巧。
二、实验内容和要求
●设备连接方法
●启动服务器软件
●调试系统的配置
●学习编辑编译程序
●学习调试方法
三、实验主要仪器设备和材料
嵌入式系统实验箱,微机,
四、实验方法、步骤及结构测试
1.设备连接:
上电时注意观察指示灯状态,ProbeICE-ARM上设有三个指示灯,分别是:
CFG(配置)、Busy(工作中)、PWR(电源)。
在ProbeICE-ARM在供电正确、内部电路工作正常时,三个指示应是:
CFG:
闪烁,表明配置正确
Busy:
灭,表明仿真器处于空闲态。
仿真器工作时(比如程序下载)闪烁
PWR:
常亮,表明供电正确
注意:
务必在断电情况下连接ProbeICE-ARM和目标板。
带电插拔可能会对仿真器造成永久损害!
请使用仿真器配套的专用直流电源,其他电源可能导致意想不到的问题出现!
2.启动服务器软件
使用ProbeICE-ARM仿真器之前须安装服务器(Server)和调试环境(ADS1.2或SDT251)。
ProbeICE-ARM使用与Multi-ICE2.2兼容的服务器软件ProbeICE-Server。
请按以下步骤启动和使用ProbeICE-Server:
启动:
从Windows开始菜单中选择ProbeICE-Server启动,或从服务程序安装目录中直接启动。
配置:
从主菜单File→Auto-configure。
如果连接和配置正常,会有相应的ARM内核提示信息,出现如图所示的画面,表明服务器已经识别目标板ARM内核并作好准备为它服务了。
现在您可以启动调试软件开始调试了。
如果没有成功,就在File菜单中重新装载配置文件2410.CFG
3.启动ADS调试开发环境
运行软件ARMDeveloperSuitv1.2----CodeWarriorARMDeveloperSuit
4.新建项目:
激活File菜单的New项,输入项目名称,选择项目存盘路径。
5.设置项目参数:
6.添加源文件:
在项目窗口点击鼠标右键激活,出现添加文件的对话,将与实验相关的源程序*.c,*.s,*.h,添加到该项目中。
7.编译程序:
按F7执行make命令,要确认无编译错误
启动调试程序:
按F5启动AXD调试程序,如果有问题,需确认AXD的配置,从AXD的Option→ConfigureTarget,出现一个目标配置窗口,在目标环境列表中选择‘Multi-ICE’,点击‘OK’。
8.调试程序,变量,寄存器观察:
AXD和ProbeICE-ARM支持非常丰富的调试手段。
以下是一些最基本的调试方法:
●下载影像文件:
从AXD主菜单File→Loadimage,然后找到您要调试的可执行文件,点击‘确定’,就可将影像文件通过ProbeICE-ARM下载到目标板中。
●资源显示:
通过AXD的‘ProcessorView’菜单可以显示目标板的各种资源,包括源代码、寄存器、存储器、变量、符号等。
●断点设置:
双击源码窗口的可执行语句可设置永久性断点,屏幕出现红色标记,在此双击该处,可取消断点。
●运行控制:
通过AXD的‘Execute’菜单可以各种方式控制被调试程序的运行,如单步执行(Step,StepIn,StepOut)、全速执行(Go,RuntoCursor)、
●命令行接口:
AXD支持传统的命令行接口(CLI)调试形式。
您可以根据自己的喜好选择IDE方式或CLI。
启动CLI:
从AXD的‘SystemView’菜单,选择‘CommandLineInterface’,出现以‘Debug>’为提示符的CLI窗口,在CLI窗口中,您可以键入各种命令进行调试。
例如:
Debug>breakmain.c|50;在main.c的50行处设置断点
Debug>go;全速执行
Debug>step;单步执行
Debug>regcurrent;显示当前模式寄存器内容
Debug>mem0x1000+0xf32;以32位方式显示0x1000开始共16个单元。
五、实验报告要求:
讲叙ARM开发系统的架构:
应用(Application)
应用(Application)
标准接口函数(API)
驱动/板级支持包
(Driver/BSP)操作系统(OS)
硬件(Hardware)硬件抽象层(HAL)
硬件(Hardware)
(不带操作系统支持)(带操作系统支持)
相关硬件和软件:
中断向量表,初始化存储器系统,初始化堆栈,初始化有特殊要求的端口、设备,初始化应用程序执行环境,改变处理器模式,呼叫主应用程序;
六、思考题
实验中设置项目相关编译参数的原因:
1.关键字ENTRY并非总是用来设置程序入口点,所以通常需要在连接选项里显式地指定程序入口点;
2.存储器端口的接口时序优化是非常重要的,影响到整个系统的性能;
3.一般堆栈的大小要根据需要而定,但是要尽可能给堆栈分配快速和高带宽的存储器。
堆栈性能的提高对系统整体性能的影响是非常明显的。
实验三:
LCD显示与触摸屏
实验项目性质:
普通
所属课程名称:
嵌入式系统
实验计划学时:
2
一、实验目的:
学习LCD显示和触摸屏的编程方法。
二、实验内容和要求:
1.在彩色LCD显示屏上显示数字和汉字以及画图。
2.触摸屏编程,触摸位置信息的检测
3.编程实现,任点触摸屏一下,即在该处显示该处的x,y坐标数据。
三、实验主要仪器设备和材料:
嵌入式系统实验箱,微机
四、实验方法、步骤及结构测试:
1.编程要点与相关函数
a)画点:
intsetpixel(intx,inty,unsignedshortpencolor)
b)清屏:
clrsrc(void)
c)显示字符:
drawtext(intx0,inty0,char*c,intpencolor)
d)触摸屏初始化:
INT_ADC_Enable(TRUE);
e)读取X:
intadc_x_position()
f)读取Y:
intadc_y_position()
2.编译程序
3.调试
五、实验报告要求:
1.试验程序流程图
2.带注解的程序清单
程序清单:
1.LCD
voidC_Entry()
{
inti,j,k=0;
i=0;
Led4_On_or_Off(TRUE);
while(i++<1000000);
Led4_On_or_Off(FALSE);
clrsrc();
for(i=0;i<240;i++)
for(j=0;j<320;j++)
{
setpixel(j,j,0xff);
}
while(10);
;
}
intsetpixel(intx,inty,unsignedshortpencolor)
{
intmovetop;/*THEPIXELADDRESS*/
short*p;
if(x<0||x>(int)x_limit)returnERROR;
if(y<0||y>(int)y_limit)returnERROR;
/*指向所要显示的像素偏移地址*/
movetop=(x*x_size+y)*2;//一个像素占两个字节
p=(short*)(VideoAddrStart+movetop);
*p=pencolor;
return1;
}
voidclrsrc(void)
{
short*p;
for(p=(short*)VideoAddrStart;p<(short*)VideoAddrEnd;p++)*p=0;
return;
}
voidLed1_On_or_Off(intflag)
{
inttemp;
if(flag==TRUE)//led1on
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<8);
temp=rGPFDAT;
rGPFDAT=temp&(0<<4);
}
else//led1off
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<8);
temp=rGPFDAT;
rGPFDAT=temp|(1<<4);
}
}
voidLed2_On_or_Off(intflag)
{
inttemp;
if(flag==TRUE)//led1on
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<10);
temp=rGPFDAT;
rGPFDAT=temp&(0<<5);
}
else//led1off
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<10);
temp=rGPFDAT;
rGPFDAT=temp|(1<<5);
}
}
voidLed3_On_or_Off(intflag)
{
inttemp;
if(flag==TRUE)//led1on
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<12);
temp=rGPFDAT;
rGPFDAT=temp&(0<<6);
}
else//led1off
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<12);
temp=rGPFDAT;
rGPFDAT=temp|(1<<6);
}
}
voidLed4_On_or_Off(intflag)
{
inttemp;
if(flag==TRUE)//led1on
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<14);
temp=rGPFDAT;
rGPFDAT=temp&(0<<7);
}
else//led1off
{
//setGPF4
temp=rGPFCON;
rGPFCON=temp|(1<<14);
temp=rGPFDAT;
rGPFDAT=temp|(1<<7);
}
}
2.触摸屏
voidC_Entry()
{
INT_ADC_Enable(TRUE);
while(10);
;
}
voidadcdly(intnumber)
{
inti,t;
/*delayingthetime*/
for(i=0;i { for(t=0;t<0x100;t++); } } voidtp_rewaite_int(void) { /*definethepointervariblepointtotheregister*/ int*p_adctsc; p_adctsc=(int*)ADCTSC; *p_adctsc=0xd3;/*confinguretheregisterADCTSCrenablethetouchpanelinterrupt*/ } intadc_x_position() { /*definethepointervaribleandpointtotheregister*/ volatileint*p_adccon; int*p_adctsc; int*p_adcdat1; intadc_xdata,x_data; p_adccon=(int*)ADCCON; p_adctsc=(int*)ADCTSC; p_adcdat1=(int*)ADCDAT1; /*confinguretheADCTSCregisterandbegintheXaxiscovision*/ *p_adctsc=0x9a; *p_adccon=0x7ff9; while(! (*p_adccon&0x8000));/*ifthecovisionisend? */ adcdly (1);/*delaylittletimeformorenicety*/ adc_xdata=(*p_adcdat1)&0x3ff;/*getthevaluefromregisterADCADT0*/ x_data=(0x3c8-adc_xdata)*320/TP_XRAGE;/*covertthealuetocoordinate*/ returnx_data; } intadc_y_position() { /*definethepointervaribleandpointtotheregister*/ volatileint*p_adccon; int*p_adctsc; int*p_adcdat0; intadc_ydata,y_data; p_adccon=(int*)ADCCON; p_adctsc=(int*)ADCTSC; p_adcdat0=(int*)ADCDAT0; *p_adctsc=0x69;/*confinguretheADCTSCregisterandbegintheYaxiscovision*/ *p_adccon=0x7FE9; while(! (*p_adccon&0x8000));/*ifthecovisionisend? */ adcdly (1);/*delaylittletimeformorenicety*/ adc_ydata=(*p_adcdat0)&0x3ff;/*getthevaluefromregisterADCADT0*/ y_data=(0x3c8-adc_ydata)*240/TP_YRAGE;/*covertthealuetocoordinate*/ returny_data; } voidTouchPanel_LISR(void) { volatileintxPosition; volatileintyPosition; yPosition=adc_y_position(); xPosition=adc_x_position(); tp_rewaite_int(); } intsetpixel(intx,inty,unsignedshortpencolor) { intmovetop;/*THEPIXELADDRESS*/ short*p; if(x<0||x>(int)x_limit)returnERROR; if(y<0||y>(int)y_limit)returnERROR; /*指向所要显示的像素偏移地址*/ movetop=(x*x_size+y)*2;//一个像素占两个字节 p=(short*)(VideoAddrStart+movetop); *p=pencolor; return1; } voidclrsrc(void) { short*p; for(p=(short*)VideoAddrStart;p<(short*)VideoAddrEnd;p++)*p=0; return; } voidLed1_On_or_Off(intflag) { inttemp; if(flag==TRUE)//led1on { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<8); temp=rGPFDAT; rGPFDAT=temp&(0<<4); } else//led1off { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<8); temp=rGPFDAT; rGPFDAT=temp|(1<<4); } } voidLed2_On_or_Off(intflag) { inttemp; if(flag==TRUE)//led1on { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<10); temp=rGPFDAT; rGPFDAT=temp&(0<<5); } else//led1off { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<10); temp=rGPFDAT; rGPFDAT=temp|(1<<5); } } voidLed3_On_or_Off(intflag) { inttemp; if(flag==TRUE)//led1on { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<12); temp=rGPFDAT; rGPFDAT=temp&(0<<6); } else//led1off { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<12); temp=rGPFDAT; rGPFDAT=temp|(1<<6); } } voidLed4_On_or_Off(intflag) { inttemp; if(flag==TRUE)//led1on { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<14); temp=rGPFDAT; rGPFDAT=temp&(0<<7); } else//led1off { //setGPF4 temp=rGPFCON; rGPFCON=temp|(1<<14); temp=rGPFDAT; rGPFDAT=temp|(1<<7); } } voidINT_ADC_Enable(intflag) { inttemp; if(flag==FALSE) { temp=rINTSUBMSK; temp|=(1<<10); rINTSUBMSK=temp; temp=rINTMSK; temp|=0x80000000; rINTMSK=temp; } else { temp=rINTSUBMSK; temp=0x5ff; rINTSUBMSK=temp; temp=rINTMSK; temp&=~(0x80000000); rINTMSK=temp; } } 六.思考题: 1.如何实现动画功能。 用WindowsAPI提供或MFC封装后的GDI绘图函数来实现;在内存中创建一个与显示动画的窗口区域一样大的位图,先用GDI函数绘制位图,然后在适当的时候从内存中显示出来。 还可以在显示位图时作优化显示 2.如何把检测到的触摸屏的位置信息转换位显示屏的位置信息。 在触摸屏上选择至少三个坐标点;利用触摸点在触摸屏上产生的声波信号,计算触摸点与每个坐标点之间的距离;以所述坐标点为圆心、所述触摸点与坐标点之间的距离为半径,构造至少三个圆,所述多个圆的公共交点为所述触摸点;通过求解所述公共交点的坐标值,确定出所述触摸点在触摸屏上的位置。 实验五: WinCE操作系统 实验项目性质: 综合性 所属课程名称: 嵌入式系统 实验计划学时: 4 一、实验目的: 学习WinCE操作系统的建立以及应用程序的编程方法。 二、实验内容和要求: 1.了解WinCE操作系统的建立。 2.WinCE操作系统的编译系统建立 3.了解WinCE操作 4.编写一个应用程序,实现简单的计算器功能。 5.了解装载应用程序的方法。 三、实验主要仪器设备和材料: 嵌入式系统实验箱,微机 四、实验方法、步骤及结构测试: 1.编程要点与相关函数 2.编译程序 3.调试 五、实验报告要求: 1.操作过程说明 第一步安装BSP 1-1PC上安装PlatformBuilder4.2开发环境。 (这里假定安装路径为x: \wince420) 1-2进入到x: \WINCE420\PLATFORM\SMDK2410目录下,将里面的内容全部删除。 1-3插入配套资料光盘,拷贝资料光盘中的 WINCE\SMDK2410目录中的内容到 x: \WINCE420\PLATFORM\SMDK2410目录。 1-4光盘里的文件带有只读属性,所以我们要先将刚才拷贝过来的所有文件及子目录的只读属性去除。 1-5运行PlatformBuilder4.2 1-6选择“File”菜单下的”ManageCatalogFeatures…”菜单项 1-7在Catalog列表中,选中smdk2410.cec 1-8点击Remove按钮,在弹出的对话框中,选择“是(Y)”按钮 1-9点击右边的Import按钮 1-10在弹出的对话框中,进入到x: \WINCE420\PLATFORM\SMDK2410目录,选中smdk2410.cec文件 1-11点击”打开”按钮,将新的smdk2410.cec文件添加到Catalog列表中,然后点击”OK”按钮 1-12在Catalog窗口的BSPs下,将会自动添加SamsungSMDK2410: ARMV4I项 1-13至此,新的BSP安装完成。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广东工业大学 嵌入式 实验 报告