广东工业大学嵌入式实验报告.docx

上传人:b****3 文档编号:11150216 上传时间:2023-05-29 格式:DOCX 页数:38 大小:541.95KB
下载 相关 举报
广东工业大学嵌入式实验报告.docx_第1页
第1页 / 共38页
广东工业大学嵌入式实验报告.docx_第2页
第2页 / 共38页
广东工业大学嵌入式实验报告.docx_第3页
第3页 / 共38页
广东工业大学嵌入式实验报告.docx_第4页
第4页 / 共38页
广东工业大学嵌入式实验报告.docx_第5页
第5页 / 共38页
广东工业大学嵌入式实验报告.docx_第6页
第6页 / 共38页
广东工业大学嵌入式实验报告.docx_第7页
第7页 / 共38页
广东工业大学嵌入式实验报告.docx_第8页
第8页 / 共38页
广东工业大学嵌入式实验报告.docx_第9页
第9页 / 共38页
广东工业大学嵌入式实验报告.docx_第10页
第10页 / 共38页
广东工业大学嵌入式实验报告.docx_第11页
第11页 / 共38页
广东工业大学嵌入式实验报告.docx_第12页
第12页 / 共38页
广东工业大学嵌入式实验报告.docx_第13页
第13页 / 共38页
广东工业大学嵌入式实验报告.docx_第14页
第14页 / 共38页
广东工业大学嵌入式实验报告.docx_第15页
第15页 / 共38页
广东工业大学嵌入式实验报告.docx_第16页
第16页 / 共38页
广东工业大学嵌入式实验报告.docx_第17页
第17页 / 共38页
广东工业大学嵌入式实验报告.docx_第18页
第18页 / 共38页
广东工业大学嵌入式实验报告.docx_第19页
第19页 / 共38页
广东工业大学嵌入式实验报告.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

广东工业大学嵌入式实验报告.docx

《广东工业大学嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《广东工业大学嵌入式实验报告.docx(38页珍藏版)》请在冰点文库上搜索。

广东工业大学嵌入式实验报告.docx

广东工业大学嵌入式实验报告

 

嵌入式系统实验报告

 

学生学院计算机学院

专业班级软件工程班

学号

学生姓名

指导教师

 

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安装完成。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2