嵌入式系统与应用试验指导报告书_第1页
嵌入式系统与应用试验指导报告书_第2页
嵌入式系统与应用试验指导报告书_第3页
嵌入式系统与应用试验指导报告书_第4页
嵌入式系统与应用试验指导报告书_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——嵌入式系统与应用试验指导报告书安徽工业大学

嵌入式系统与应用

试验报告册

学院:电气与信息工程学院专业:测控技术与仪器姓名:学号:

试验一Linux认知试验

一、试验目的:

1、通过试验,把握Linux操作系统下常用的命令,能灵活运用这些命令完成特定的工作;

2、学习Linux下文本编辑器vi的使用方法。

二、试验内容:

1、新建文件hello.c,文件位于/home/test/目录下;2、使用vi编辑

三、试验步骤:

1、开启电脑上的虚拟机,加载Linux系统。

2、输入密码进入系统后,按ctrl+Alt+t开启终端;3、使用mkdir建立/home/test文件夹;4、使用chmod命令修改文件夹权限;

5、使用vi开启hello.c文件,从而新建文件;

6、在hello.c文件中输入程序,使得程序能够显示打印字符:“Hello,Linux!〞

四、试验结果:(包括代码源码和运行结果)

1、源代码

(1)hello.c程序代码:

#include\intmain(){

printf(\}

(2)修改文件夹权限:

用chmod修改文件夹权限lv@lv-pc:~$cdtest1lv@lv-pc:~/test1$ls-l总用量28

-rwxr-xr-x1lvlv81365月711:36a.out-rwxr-xr-x1lvlv78695月1109:10main-rw-r--r--1lvlv2505月711:35main.c-rwxr-xr-x1lvlv81363月3020:28mianlv@lv-pc:~/test1$chmod733a.out

-1-

lv@lv-pc:~/test1$ls-l总用量28

-rwx-wx-wx1lvlv81365月711:36a.out-rwxr-xr-x1lvlv78695月1109:10main-rw-r--r--1lvlv2505月711:35main.c-rwxr-xr-x1lvlv81363月3020:28mian

2、试验结果

五、思考:

在建立文件夹的过程中,假使不进入管理员权限,会出现什么问题?同样,不进入管理员权限,vi编辑完代码,能不能保存退出?chmod后面的数字参数是什么含义?

答:会出现:键入mkdirtest后显示:无法创立目录\权限不够的问题。不进入管理员权限,vi编辑完代码,不能保存退出。想对文件夹所修改成的权限。

-2-

试验二交织编译试验

一、试验目的:

1、通过试验,把握交织编译的原理,理解文件系统挂载的原理;

2、把握交织编译工具的使用,学会使用两种不同的方式访问目标板系统,学会使用gdb对程序进行调试。

二、试验内容:

编辑hello.c程序,使用交织编译工具进行编译,生成可执行文件,分别使用minicom和telnet登录到目标板上,对程序进行运行调试。

三、试验步骤:

1、开启电脑上的虚拟机,加载Linux系统。

2、Linux系统登录完毕,设置PC机网络地址为192.168.0.10,其中子网掩码为255.255.255.0,连接好试验箱上的电源、网线和USB转串口工具以及串口延长线。

3、按ctrl+Alt+t开启终端,输入sudominicom开启minicom,查看串口设置是否正确,进行串口设置;

4、开启试验箱电源,查看启动代码,启动完成后,试验箱屏幕显示界面,按“Ctrl+c〞,然后按“Enter〞,进入板子系统。

5、在文件系统(/home/nfs)下的test文件夹下,建立hello.c的程序,程序中输入相应程序,实现打印信息“hello,linux〞并换行输出1~10;

6、再开启一个终端,在该终端中转到文件系统test文件夹,使用交织编译工具对hello.c进行编译。

7、在minicom中,目录转到“/test〞文件夹下使用./(你的程序名)运行程序;8、使用“gdb你的程序名〞运行程序,设置断点进行程序调试。

9、关闭minicom,终端中输入telnet,然后输入open192.168.0.11,等待出现“login:〞输入“root〞,进入目标板系统;

10、目录转到“/test〞文件夹下使用./(你的程序名)运行程序;11、使用“gdb你的程序名〞运行程序,设置断点进行程序调试。

四、试验结果:(包括代码源码和运行结果)

1、源程序

#includemain(){

inti;

printf(“hellolinux!!\\n〞);for(i=1;iopen192.168.0.11Trying192.168.0.11...

Connectedto192.168.0.11.Escapecharacteris'^]'.

Linux2.4.18-rmk7-pxa1(192.168.0.11)(0)192.168.0.11login:root

BusyBoxv0.60.3(2023.05.13-08:36+0000)Built-inshell(ash)Enter'help'foralistofbuilt-incommands.

#./helloarm

./helloarm:Nosuchfileordirectory#cdtest#./helloarm

Hellolinux!!

-4-

thisis1thisis2thisis3thisis4thisis5thisis6thisis7thisis8thisis9thisis10

(2)在minicom下运行:

wyxj@wyxj-cpu:~$sudominicom[sudo]passwordforwyxj:Welcometominicom2.6.2OPTIONS:I18n

CompiledonFeb82023,06:27:51.Port/dev/ttyUSB0,21:22:32

PressCTRL-AZforhelponspecialkeysWaitingforentertostart'/bin/sh'(pid46,terminal/dev/console)PleasepressEntertoactivatethisconsole.Startingpid46,console/dev/console:'/bin/sh'

BusyBoxv0.60.3(2023.05.13-08:36+0000)Built-inshell(ash)Enter'help'foralistofbuilt-incommands.#ls

333.bmpmicrowindows-0.90sbin

binmmcsdsheryl.mp3bombmnttestdevnotebooktmp

etcpig.mp3usrhello.cprocvariceage.mpegqcop-msg-qpevconguilibqcop-msg-quicklauncherlinuxrcqtembedded-root#cdtest#./helloarm

Hellolinux!!thisis1thisis2thisis3thisis4

-5-

thisis5thisis6thisis7thisis8thisis9

thisis10

(3)超级终端下运行:

3、gdb调试

-6-

-7-

五、思考:

1、在使用交织编译工具进行编译过程中,要生成可用gdb调试的程序,需要再编译过程中加什么参数?

答:gcc-ghello.c-ohello要加上“-g〞,这样编译出的可执行代码中才包含调试信息,否则之后gdb无法载入该执行文件。

2、使用telnet进行目标板访问过程中,什么时候运行open命令不会出现连接不到目标板的状况?

答:目标版能显示文档内容,表示所有连接成功。连接不到原因:1)线路问题;(检查线路);

2)telnet的网络设备负载过高,无法正常响应服务;(重启一下设备);3)telnet的网络设备阻止了telnet的23端口...(于设备中开启该端口);

-8-

试验三S3C2410基础试验

一、试验目的:

了解在ADS环境下对S3C2410芯片的AD接口的操作、键盘/LED接口的操作、直流和步进电机的工作原理和实际编程操作。

二、试验内容:

1、实现使用ADS和简易JTAG仿真器连接ARM芯片S3C2410;2、使用提供例程和超级终端对上述的各个模块的接口进行实际操作。

三、试验步骤:

1、ADS试验环境的建立,参照《THUEA-1A型嵌入式(ARM9)高级试验/开发系统》试验指导书的157~162页;

2、设置好以后,到D盘ARM文件夹下,找到ADS的工程文件,拖入到开启的ADS1.2中;

3、重启开发板,超级终端中显示等待状态,点击ADS1.2上的调试按钮,程序开始下装到开发板;ADS进入调试界面;

4、点击调试界面上的运行按钮,程序执行到主程序处,再次点击运行程序;5、程序运行后,超级终端上显示运行提醒,按提醒操作键盘/LED、电机和AD转换.

四、试验结果:(超级终端上的运行提醒和实际运行结果)1、运行程序:

(1)A/D程序:读取采样值函数:

intReadAdc(intch){

inti;

staticintprevCh=-1;

rADCCON=(1return((int)rADCDAT0}

在超级终端显示数字量:{

a4=ReadAdc(4);a6=ReadAdc(6);Uart_Printf(\%0.2f}

AIN6:%0.2f\\n\

(2)D/A程序:MAX504的控制程序如下:

voidDA_Test(){inti;

intSAVrGPACON,SAVrGPFCON,SAVrGPGCON;floatv;

SAVrGPACON=rGPACON;SAVrGPFCON=rGPFCON;SAVrGPGCON=rGPGCON;MAX504_CLEAR();for(i=0;i>8);

//开启MAX504//发送高8位//左移两位//寄放器状态恢复//寄放器状态恢复//寄放器状态恢复

//MAX504读取数字量转化//数字量显示//数字量保持时间//寄放器状态保护//寄放器状态保护//寄放器状态保护//将DAC寄放器设为0

Uart_Printf(\Test]\\nPleaseobservethecorrespondingofoutputandinput:\\n\

Uart_Printf(\DigitalVoltageOfInput=%1.2fV\\r\

-10-

SendSPIData(value);MAX504_DISABLE();}

//发送低8位//关闭MAX504

(3)键盘/LED接口程序:超级终端显示键值数组:

unsignedcharScandata[4][4]={

{'F','E','D','C'},{'B','A','9','8'},{'7','6','5','4'},

{'3','2','1','0'},};

数码管码段显示值数组:

unsignedcharst[4][4]={

{0x8e,0x86,0xa1,0xc6},{0x83,0x88,0x90,0x80},{0xf8,0x82,0x92,0x99},{0xb0,0xa4,0xf9,0xc0},};

扫描键值中断函数:

do{

rGPEDAT=rGPEDATrGPEDAT=rGPEDAT|0x70;i=3;

Read_value(i);

rGPEDAT=rGPEDAT//置GPE4为低,扫描键盘第三行rGPEDAT=rGPEDAT|0x68;i=2;

Read_value(i);

rGPEDAT=rGPEDATrGPEDAT=rGPEDAT|0x58;i=1;

Read_value(i);

rGPEDAT=rGPEDATrGPEDAT=rGPEDAT|0x38;i=0;

Read_value(i);}while(value!='0');

//置GPE3为低,扫描键盘第四行//GPE4、5、6为高

//GPE3、5、6为高

//置GPE5为低,扫描其次行键盘//GPE3、4、6为高

//置GPE6为低,扫描第一行键盘//GPE3、4、5为高

-11-

某列键值读取:

case(0xe):

value=Scandata[data][0];rGPADAT=0x81e0;rSMG0=st[data][0];rGPADAT=0x01e0;break;

Uart_Printf(\keyvalueis%c\

//超级终端显示

//GPA5,6,7,8输出1,15输出高//数码管显示

//GPA5,6,7,8输出1,15输出低

(5)直流、步进电机程序:

直流电机正转:rGPADAT=0xfff80;//GPA7置1,GPA4、5、6置0

Delay(50);//延时函数,控制低脉冲时间rGPADAT=0xfff90;//GPA4、7置1,GPA5、6置0

Delay(30);//延时函数,控制高脉冲时间

直流电机反转:

rGPADAT=0xfff20;//GPA5置1,GPA4、6、7置0

Delay(50);//延时函数,控制低脉冲时间rGPADAT=0xfff60;//GPA5、6置1,GPA4、7置0

Delay(30);//延时函数,控制高脉冲时间

步进电机输出脉冲:

rGPADAT=0xfff07;//0111,注意:低电平有效

Delay(140);//延时函数,控制步进电机转速rGPADAT=0xfff0b;//1011

Delay(140);rGPADAT=0xfff0d;//1101

Delay(140);rGPADAT=0xfff0e;//1110

Delay(140);

2、超级终端运行结果:

-12-

-13-

五、思考:

在ADS下载程序的过程中,目标板为什么不能进入到linux系统,目标板进入linux系统后,下装的程序能不能正常运行?答:由于内存冲突;能。

-14-

五、思考:

在网络通信试验中,在目标板和PC机通信过程中,是否可以把目标板设置为服务器,PC机设置为客户机?为什么?

答:不可以。

客户机又称为用户工作站,是用户与网络打交道的设备,一般由用户PC担任,每一个客户机都运行在它自己的、并为服务器所认可的操作系统环境中。客户机主要通过服务器享受网络上提供的各种资源。

客户机是连接服务器的计算机,使用服务器共享的文件、打印机和其他资源,是网络软件运行的一种形式,寻常采用客户机/服务器(C/S)结构的系统,有一台或多台服务器以及大量的客户机。服务器配备大容量存储器并安装数据库系统,用于数据存放和数据检索;客户端安装专用的软件,负责数据的输入、运算和输出。

客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,就被叫做服务器。那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机/服务器模型并不是从物理分布的角度来定义,它所表达的是一种网络数据访问的实现方式。

服务器(英文名称server),也称伺服器。指一个管理资源并为用户提供服务的计算机设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承受服务并且保障服务的能力。服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

-30-

3、目标板运行结果

4.超级终端上运行

-20-

五、思考:

主程序运行过程中,超时退出是靠select()函数的那个参数控制的?在整个试验过程中,假使in1,in2的名字发生变化,需要修改程序源码中的哪部分?

答:timeout;修改如下部分中的in1和in2

if((fds[1]=pen(“in1〞,O_RDONLY|O_NONBLOCK))0)set_speed(fd,115200);else{printf(\exit(0);}if(set_parity(fd,8,1,'n')==FALSE){printf(\exit(1);}printf(\while(1){read(fd,//ch=getchar();putchar(ch);//write(fd,}close(fd);return(0);}

Makefile代码:

KERNELDIR=/usr/src/linux-2.4.20-8#CC=armv4l-unknown-linux-gccCC=gcc

CFLAGS=-I$(KERNELDIR)/include/-Wall

host_serial:$(CC)$(CFLAGS)-ohost_serialserial.chost_serial.c

clean:rm-fhost_serial

(2)target_serial.c:

#include\

#defineTRUE1

-23-

#defineFALSE0/**

*@breifmain()*/

intmain(){intfd;charch;

char*dev=\fd=init_serial(dev);if(fd>0)set_speed(fd,115200);else{printf(\exit(0);}if(set_parity(fd,8,1,'N')==FALSE){printf(\exit(1);}printf(\while(1){//ch=getchar();ch='a';write(fd,//read(fd,//printf(\//putchar(ch);}close(fd);return(0);}

Makefile代码:

KERNELDIR=/home/sitsang/linux-2.4.19#KERNELDIR=/usrCC=arm-linux-gcc

CFLAGS=-I$(KERNELDIR)/include/-Wall

serial:

-24-

$(CC)$(CFLAGS)-otarget_serialserial.ctarget_serial.cclean:rm-ftarget_serial

2、试验结果:

-25-

-26-

五、思考:

串口传送过程中,假使不能接收到数据,怎么处理?怎么测试PC机上的接收端口能接收到数据?

答:确认接线正确,有信号;确认波特率正确,两端一致

-27-

试验六Linux网络编程试验

一、试验目的:

1、通过试验,把握Linux操作系统下网络通信的基本方法;

2、学习socket编程的基本函数socket()、bind()、listen()、accept()、send()、sendto()、recv()以及recvfrom()的使用方法;

二、试验内容:

该试验中,需要建立网络通信的程序,程序分为客户端和服务器端两部分,其中服务器端首先建立起socket,然后与本地端口进行绑定,接着就开始接收从客户端的连接请求并建立与它的连接,接下来,接收客户端发送的消息。客户端则在建立socket之后调用connect()函数来建立连接。

三、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论