嵌入式系统开发通信专业实验指导书.docx

上传人:b****5 文档编号:3423510 上传时间:2022-11-22 格式:DOCX 页数:97 大小:3.28MB
下载 相关 举报
嵌入式系统开发通信专业实验指导书.docx_第1页
第1页 / 共97页
嵌入式系统开发通信专业实验指导书.docx_第2页
第2页 / 共97页
嵌入式系统开发通信专业实验指导书.docx_第3页
第3页 / 共97页
嵌入式系统开发通信专业实验指导书.docx_第4页
第4页 / 共97页
嵌入式系统开发通信专业实验指导书.docx_第5页
第5页 / 共97页
点击查看更多>>
下载资源
资源描述

嵌入式系统开发通信专业实验指导书.docx

《嵌入式系统开发通信专业实验指导书.docx》由会员分享,可在线阅读,更多相关《嵌入式系统开发通信专业实验指导书.docx(97页珍藏版)》请在冰豆网上搜索。

嵌入式系统开发通信专业实验指导书.docx

嵌入式系统开发通信专业实验指导书

 

《嵌入式系统开发》

(通信专业)

 

陈靖编撰

 

 

闽江学院计算机实验教学中心印制

目录

实验一Linux常用命令1

实验二Linux常用工具实验4

实验三Makefile实验13

实验四gdb实验22

实验五Cross-gdb实验25

实验六驱动程序结构实验29

实验七字符设备驱动程序实验34

实验八嵌入式GUI应用程序实验45

实验九QT/E移植实验54

实验十嵌入式QT应用程序设计实验59

实验十一串口通讯实验60

实验十二网络通讯实验66

实验十三Web服务器的移植69

实验十四TCP客户/服务器应用程序设计实验72

实验一Linux常用命令

【实验目的】

1、掌握嵌入式系统设计中linux常用命令的使用方法。

2、熟悉linux操作环境

3、熟悉linux命令中常用参数的用法

【实验仪器】

1、装有Linux操作系统的PC机一台;

【常用命令介绍】

一、文件目录操作类命令

1、ls显示目录内容

2、cp文件复制

3、mv文件移动或改名

4、rm文件删除

5、pwd显示当前工作目录

6、cd改变工作目录

7、mkdir创建目录

8、chmod更改文件的访问权限

二、文件操作类命令

1、wc统计一个或多个文件的字数

2、more分屏显示文件

3、less分段显示文件

4、cat输出文件内容

5、head、tail显示文件的头(尾)内容

6、touch改变文件或目录的存取或修改时间

7、ln建立符号链接

三、文件查找、排序

1、find搜索文件

2、grep查找文件内容

3、sort对文件内容进行排序

四、文件备份、压缩和解压类

1、bzip2、gzip、compress压缩或解压文件

2、tar归档和恢复文件

五、文件系统管理类命令

1、mount、umount加载和卸载文件系统和设备

2、du显示目录或文件的大小

3、df显示磁盘信息

六、用户管理类命令

1、useradd建立新用户

2、userdel删除用户

3、passwd用户密码设置

4、su切换用户

5、who查看登录用户

七、进程控制类命令

1、ps、top显示进程及信息

2、kill中止信息

八、其他有用的命令

1、echo显示“字符串”

2、date日期时间设置

3、file查看文件的类型

4、history显示命令使用历史

5、ifconfig显示或配置网络设备

6、export新增、修改、删除或输出环境变量

九、输入输出重定向及管道

1、<输入重定向

2、>、>>输出重定向

3、|管道

十、vi编辑器的使用

【实验内容】

复习以上常用命令并完成以下的实验内容,写出实现下面功能的命令。

一、  文件和目录类命令:

1、1)启动计算机,利用root用户登录到系统,打开“终端”,进入命令行方式。

2)用pwd命令查看当前所在的目录。

3)用ls命令列出此目录下包括隐藏文件在内的所有文件和目录

2、在/home目录下建立st1子目录,并进入该目录

1)建立文件yoyo1和文件yoyo2文件,文件yoyo1的内容是“Linuxisamultitaskandmultiuseroperatingsystem”,文件yoyo2是空白文件。

用重定向功能对yoyo1文件进行单词词数统计,将统计结果存入文件yoyo2中,并用文件显示命令确认统计结果是否已存入yoyo2.

2)将命令ls、passwd的帮助信息依次存入文件manls中

3)分屏浏览/sbin中的文件名

4)获取命令cp选项-a的帮助信息

3、在/home目录下建立st2子目录,并进入该目录

1)建立文件f1和f2,内容不限,建立目录bw和bg1和dir2/dir3

2)将系统文件/etc/passwd到当前目录下,再复制文件passwd到一个新文件passwd.bak,作为备份。

3)将文件passwd.bak的权限改为所有的人能读、写和执行

4)将文件passwd.bak按用户的id号进行逆序排序

5)显示当前目录下的内容,删除bg1目录,并确认

6)将文件passwd移动到dir3下

7)复制目录dir2到/home下,并改名为stu3

8)统计/home/st2目录下的文件数

4、进入/home/stu3/dir3目录,完成下列操作

1)创建文件passwd的硬链接lnhpasswd与软链接lnspasswd

2)用长格形式显示文件passwd、lnspasswd和lnhpasswd的详细信息。

3)删除文件lnhpasswd,用长格形式显示文件lnspasswd和lnhpasswd的详细信息,比较文件passwd的链接数的变化

4)用less和more命令分屏查看文件passwd的内容

5)查看passwd中包含字符串”oo”的用户;查看/bin中包含字符串”ls”的文件名。

6)在系统根目录下用find命令查找passwd文件

二、压缩管理命令:

1、用tar命令把目录/home打包,文件名为homebackup.tar

2、用gzip命令把打好的包进行压缩

3、解压etc.tar.bz2文件中的内容

三、系统信息类命令

1、利用date命令显示系统当前时间,并修改系统的当前时间。

2、显示当前登录到系统的用户状态

3、利用df命令显示系统的硬盘分区及使用状况

4、显示当前目录下的各级子目录的硬盘占用情况

5、显示当前环境变量PATH的内容,并用在PATH中加入/home/st1路径,然后确认是否加入

6、查看当前linux系统中是否装有gcc编译器,其版本为多少?

7、在所有已启动的进程中查找portmap进程是否已启动,其进程号为多少?

8、查看当前的主机的ip地址是多少

【思考题】

1、写出新建文件的三种方法?

2、编辑器vi有几种工作方式?

3、如何查看U盘中的内容?

4、要使用nfs功能,要安装什么软件包,如何查看是否已安装?

实验二Linux常用工具实验

【实验目的】

1、了解minicom配置串口通信参数的过程,掌握利用minicom进行传输文件方法

2、了解网络文件系统nfs的配置,掌握利用nfs进行文件的传输和异地运行目标板程序

3、掌握ftp的使用方法

【实验原理】

一、minicom的使用

1、串口通信参数的设置

首先运行minicom,由于minicom是通过串口来工作的,所以要通过minicom程序来对

串口通信参数进行设置。

启动minicom的设置窗口:

在linux的终端中输入“minicom–s”,

然后,按下回车键。

[root@localhostroot]#minicom–s

“-s”选项调出配置信息。

下面显示的就是配置的菜单。

有关串口通信选项的含义:

"Filenamesandpaths":

选择需要传输的文件和路径

"Filetransferprotocols":

选择传输文件的通信协议

"Serialportsetup":

设置串口通信参数

"Savesetupasdfl":

将设置好的各项参数保存为dfl

"Savesetupas":

将设置好的各项参数保存为自定义的文件名

"Exit":

退出返回到minicom设置好后的终端

"ExitfromMinicom":

从minicom命令中退出返回Linux终端

将光标移到"Serialportsetup",按回车键会弹出串口通信参数的配置菜单。

(1)、串口通信口的选择:

(A-SerialDevice)

接"A"键把光标移动到SerialDevice。

如果串口线连在PC机的串口1上,则把Serial

device设置为/dev/ttyS0。

如果连在串口2上,则把Serialdevice设置为/dev/ttyS1,然后按下

回车键。

(2)、串口参数的设置(E-Bps/Par/Bits)

按"E"键来设置通信波特率、数据位、奇偶校验位和停止位。

可以通过按下不同的键来

设置通信参数。

例如XSBase270平台需要把波特率设为115200,数据位设为8,奇偶校验

位设为无,停止位设为1。

可以分别通过按"I"、"V"、"L"、"W"键设置波特率、数据位、奇

偶校验位和停止位。

设置完后按"Esc"返回。

(3)、数据流的控制选择(F-HardwareFlowControl、G-SoftwareFlowControl)

按"F"键可以完成硬件流控制切换,即完成"Yes"与"No"之间的切换。

按"G"键完成软件

流控制切换,即完成"Yes"与"No"之间的切换。

下图显示的是串口配置好的后完整信息。

(4)、设置参数的保存与退出

配置完成后,按下“Esc”键,将会出现下图的配置菜单。

选择“Savesetupasdfl”按

ENTER键来保存,当配置保存后,按下“Esc”键完成设置。

当minicom窗口出现后,重起XSBase270将会看到启动信息。

如果没有出现启动信息,

请检查mincom的设置和线缆连接是否有错。

2、利用串口通信文件传输

在与目标板连接后,可以通过串口下传一些文件到目标板,具体操作步骤如下:

(1)、在与目标正确连接后,进入[root@51board~],按下CTRL+A键后,再按Z键,系统

调出minicom的命令选项菜单;

其中Sendfiles和Receivefiles两项负责文件数据的传输,所用命令使用热键进行激活。

上传文件只需按S键。

(2)、当向目标板上传文件时,按S键,系统弹出串口通信协议选项,利用方向键选中zmodem

传输协议,按回车键,进入文件选择菜单。

(3)、文件传输

文件选择菜单弹出后,利用空格键选中需要上传的文件,一次可以选择多个文件,选好

需要传输的文件后按回车键,便可以进行文件数据传输。

当数据传输完毕,系统会弹出传输

完毕提示菜单(如下图所示)。

二、网络文件系统nfs的配置

网络文件系统nfs可以将PC机上的一部分文件系统作为目标机的资源,这样可以弥补

目标机存储空间的不足。

在使用网络文件之时,应对网络文件配置进行一定的设置。

1、主机(host)的设置:

在主机/mnt目录下创建nfs目录,并利用文本编辑器编辑修改/etc/exports文件,增加如

下内容:

/mnt/nfs(rw,no_root_squash)

将主机的/mnt/nfs目录设置为能够通过网络文件系统访问可读写的目标,

2、重新启动nfs

[root@local]$/etc/rc.d/init.d/nfsstop

[root@local]$/etc/rc.d/init.d/nfsstart

3、目标机设置(假设主机的IP地址为192.168.1.12)

[root@51Board~]$portmap

[root@51Board~]$mount–tnfs192.168.1.12:

/mnt/nfs/mnt

上述设置实现将主机上的/mnt/nfs目录挂载到目标机的/mnt目录下,并作为目标机文件系统的一部分。

这时,可以将需要传输的文件或需要运行的程序保存在主机的/mnt/nfs目录下,

然后在目标机对主机/mnt/nfs上的文件进行运行或复制等相应的处理。

三、ftp文件传输

文件传输协议ftp(FileTransimitProtocol)利用以太网实现文件的传输。

ftp相对于串口

传输文件来说,传输速度快,所以上传比较大的文件一般采用ftp来实现,需要上传的文件

应保存到主机的/var/ftp/pub目录下。

下面具体介绍ftp文件传输过程(假设主机的IP地址

为192.168.0.100)。

(ftp的具体其他用法可以在linux终端提示符输入manftp查看)

1、在目标板的调试终端输入ftp命令

[root@51Board~]$ftp192.168.0.100

2、输入用户名和密码:

用户采用匿名登陆网络(anonymous),无需输入密码。

如果用户需要采用其他的用户名登陆,必须修改(脚本)

3、当用户名和密码都正确后,在调试终端显示登陆成功信息和ftp提示符,如图所示。

4、文件传输:

ftp提示符下利用cd命令转到主机的pub目录下,利用get命令上传需要传输的文件。

假设需要上传的文件为facedect(确保文件保存在主机的/var/ftp/pub目录下)

ftp>getfacedect

文件传输完毕后,ftp输出成功信息和被传输文件的字节数。

(如图所示)

【实验仪器】

1、装有Linux操作系统的PC机一台;

2、XSBase270或XSBase255ARM实验开发平台一套

【实验内容】

一、minicom的使用实验内容

1、将目标机与PC机相连,利用minicom–s正确设置串口的参数,启动目标机,记录PC

机显示的内容

2、关闭目标板,利用minicom–s重新设置串口参数,启动目标机,记录PC机显示的现象

3、用file命令查看root目录下的hello应用程序的属性并记录。

然后利用串口通信向目标机下传root目录下的hello应用程序,同时运行该应用程序。

记录文件下载的目标板目录和下载文件的基本步骤。

二、网络文件系统nfs的配置及应用实验内容

1、通过网络文件系统的配置将主机的其他目录(如/root/Emdoor目录),并挂载到目标机上,记录设置的步骤。

2、用file命令查看root目录下的hello-arm应用程序的属性并记录。

然后将主机root目录下的ARM程序hello-arm复制到主机的网络文件系统目录上,在目标机的挂载目录运行该程序,记录此次运行结果并与hello的运行结果比较写出你的结论

3、将目标机其他目录上的文件复制到网络文件系统挂载的目录上,然后到主机上查看文件

是否完成传输。

4、将主机上其他目录上的文件复制到网络文件系统挂载的目录上,然后到目标机挂载网络

文件系统的目录中将该文件复制到目标机其他目录上,重新启动目标机系统查看文件是否复

制成功。

最后写出你的结论。

三、ftp实验内容

1、将example目录下的文件cxcore.lib文件通过ftp直接传输到目标板的/usr/lib目录下,记

录通过ftp传输文件的基本步骤,并与通过串口传输文件进行比较,写下你的结论。

2、将目标板中/usr/lib目录下的一个文件传输到主机上,记录传输的基本步骤和文件传输所

在的目录。

【思考题】

1、一目标平台通过串口与PC机连接后,用户启动目标平台时发现串口终端出现乱码,请

分析串口终端产生乱码的原因。

2、某同学想利用ftp进行文件传输,他已经设定主机平台的IP地址为192.168.0.100,可在

串口终端输入ftp192.168.0.100时,出现ftp:

connect:

Connectionrefused错误,请分析

产生错误的原因。

3、参考ftp适应文档,分析在ftp方式下如何使用linux下如mkdir等常用命令。

实验三Makefile实验

【实验目的】

1、了解Makefile的基本概念和基本结构

2、初步掌握编写简单Makefile的方法

3、了解递归Make的编译过程

4、初步掌握利用GNUMake编译应用程序的方法

【实验原理】

在Linux或Unix环境下,对于只含有几个源代码文件的小程序(如hello.c)的编译,

可以手工键入gcc命令对源代码文件逐个进行编译;然而在大型的项目开发中,可能涉及几

十到几百个源文件,采用手工键入的方式进行编译,则非常不方便,而且一旦修改了源代码,

尤其头文件发生了的修改,采用手工方式进行编译和维护的工作量相当大,而且容易出错。

所以在Linux或Unix环境下,人们通常利用GNUmake工具来自动完成应用程序的维护和

编译工作。

实际上,GNUmake工具通过一个称为Makefile的文件来完成对应用程序的自动维护和编译工作。

Makefile是按照某种脚本语法编写的文本文件,而GNUmake能够对

Makefile中指令进行解释并执行编译操作。

Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

GNUmake工作时的执行步骤如下:

1、读入所有的Makefile。

2、读入被include的其它Makefile。

3、初始化文件中的变量。

4、推导隐晦规则,并分析所有规则。

5、为所有的目标文件创建依赖关系链。

6、根据依赖关系,决定哪些目标要重新生成。

7、执行生成命令。

1-5步为第一个阶段,6-7为第二个阶段。

第一个阶段中,如果定义的变量被使用了,那么,

make会把其展开在使用的位置。

但make并不会完全马上展开,make使用的是拖延战术,

如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部

展开。

下面对makefile的相关问题进行简单介绍:

1、Makefile的基本结构

Makefile的一般结构:

target……:

dependency……

command……

结构中各部分的含义:

(1)、target(目标):

一个目标文件,可以是Object文件,也可以是执行文件。

还可以是一个标签(Label)。

(2)、dependency(依赖):

要生成目标文件(target)所依赖哪些文件

(3)、command(命令):

创建项目时需要运行的shell命令(注:

命令(command)部分的每行的缩进必须要使用Tab而不能使用多个空格)。

Makefile实际上是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依

赖于dependency中的文件,其生成规则定义在命令command中。

如果依赖文件(dependency)

中有一个以上的文件比目标(target)文件要新的话,shell命令(command)所定义的命令

就会被执行。

这就是Makefile的规则。

也就是Makefile中最核心的内容。

例如,假设有一个C源文件test.c,该源文件包含有自定义的头文件test.h,则目标文件

test.o明确依赖于两个源文件:

test.c和test.h。

如果只希望利用gcc命令来生成test.o目标文件,这时,就可以利用如下的makefile来定义test.o的创建规则:

#Thismakefilejustisaexample.

test.o:

test.ctest.h

gcc–ctest.c

从上面的例子注意到,第一个字符为#的行表示注释行。

第一个非注释行指定test.o为

目标,并且依赖于test.c和test.h文件。

随后的行指定了如何从目标所依赖的文件建立目标。

当test.c或test.h文件在编译之后又被修改,则make工具可自动重新编译test.o,如果

在前后两次编译之间,test.c和test.h均没有被修改,而且test.o还存在的话,就没有必要重新编译。

这种依赖关系在多源文件的程序编译中尤其重要。

通过这种依赖关系的定义,make工具可避免许多不必要的编译工作。

一个makefile文件中可定义多个目标,利用maketarget命令可指定要编译的目标,如

果不指定目标,则使用第一个目标。

通常,makefile中定义有clean目标,可用来清除编译过程中的中间文件

#Thismakefilejustisaexample.

test.o:

test.ctest.h

gcc-ctest.c

clean:

rm-f*.o

运行makeclean时,执行rm–f*.o命令,删除编译过程中生成的所有中间文件。

2、Makefile的基本内容

Makefile一般包括包含:

显式规则、隐晦规则、变量定义、文件指示和注释等五个内容。

(1)、显式规则:

显式规则说明如何生成一个或多个的目标文件。

这是由Makefile的书写

者明显指出,要生成的文件,文件的依赖文件,生成的命令。

(2)、变量定义。

在Makefile中可以定义一系列的变量,变量一般都是字符串,当Makefile

被执行时,变量的值会被扩展到相应的引用位置上。

(3)、隐含规则:

由于GNUmake具有自动推导功能,所以隐晦规则可以比较粗糙地简略地

书写Makefile,然后由GNUmake的自动推导功能完成隐晦规则的内容。

(4)、文件指示。

其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。

(5)、注释。

Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:

“\#”。

2.1Makefile中的变量

(1)、Makefile中定义的变量,与C/C++语言中的宏一样,代表一个文本字串,在Makefile

被执行时候变量会自动地展开在所使用的地方。

Makefile中的变量可以使用在“目标”,“依赖目标”,“命令”或Makefile的其它部分中。

(2)、Makefile中变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:

”、“#”、“=”或是空字符(空格、回车等)。

(3)、Makefile中变量是大小写敏感的,“foo”、“Foo”和“FOO”是三个不同的变量名。

传统的Makefile的变量名是全大写的命名方式

(4)、变量在声明时需要给予初值,而在使用时,需要在变量名前加上“$”符号

#makefiletestforhelloprogram

#writtenbyEmdoor

CC=gcc

CFLAGS=

OBJS=hello.o

all:

hello

hello:

$(OBJS)

$(CC)$(CFLAGS)$(OBJS)–ohello

hello.o:

hello.c

$(CC)$(CFLAGS)–chello.c–o$(OBJS)

clean:

rm–rfhello*.o

上面自定义变量OBJS表示hello.o,当makefile被执行时,变量会在使用它的地方精确

地展开,就像C/C++中的宏一样。

上述makfile变量

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

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1