zju(1)嵌入式开发环境构建

1. 实验目的

搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs。用makefile 编译几个文件,在实验台上运行。

2. 实验内容

1) 安装ubuntu12.04

2) minicom端口配置

3) TFTP服务配置

4) NFS服务的配置。

5) 安装交叉编译器

6) 运行helloworld

3. 主要仪器设备

1) 笔记本,安装Ubuntu12.04系统。

2) 英培特eduk4-s3c2410试验平台

2013-10-21 17.13.22

4. 操作方法和实验步骤

4.1 安装交叉编译器

4.1.1 下载交叉编译工具

下载地址:http://ftp.snapgear.org/pub/snapgear/tools/arm-linux/ ,如图4-1-1所示。

clip_image002

图4-1-1 交叉编译工具下载地址
4.1.2解压交叉编译环境

使用以下命令进行解压:

tar -ivxzf .../arm-linux-tools-20080623.tar.gz -C /

注意加上参数-C,会自动解压到/usr/loacl/相关子目录下,例如用于编译、链接的命令在usr/local/bin目录下,如图4-1-2所示:

clip_image004

图4-1-2 解压后/usr/local/bin目录
4.1.3测试交叉编译环境是否可用

首先,检查环境变量设置,查看相关命令所在路径是否已经加入到环境变量。

clip_image006

图4-1-3 查看环境变量

如图4-1-3所示,编译、链接所用命令所在目录已经添加到环境变量中。

如果命令解压后所在目录不在环境变量中,可以使用如下方法进行添加:

方法1编辑~/.bashrc文件

vi ~/.bashrc

在文件的末尾加入如下内容:

export PATH=$PATH:usr/local/bin

保存并退出,重启Terminal即可生效。

注意这种方式只对当前用户有效,因为这仅仅编辑了当前用户下的.bashrc文件。而且仅仅对当前的shell有效。

方法2:编辑/etc/profile

/etc/profile是全局的,适用于所有的shell。

与方法1相同,打开/etc/profile文件在末尾添加如下语句即可:

export PATH=$PATH:usr/local/bin

然后使用如下语句使其生效:

source /etc/profile

clip_image008

然后,编写一个简单的文件进行编译测试。

使用vi编写一个简单的hello.c文件,输出“Hello,World!”,如图4-1-4所示。

clip_image010

图4-1-4 编写的Hello,World!文件

clip_image012

图4-1-5 使用arm-linux-gcc编译Hello,World!的结果

如图4-1-5所示,能够成功编译,说明交叉编译环境安装成功。

4.2 minicom端口配置

4.2.1 安装minicom

使用apt-get install minicom安装minicom工具。

clip_image014

图4-2-1 minicom安装过程

如图4-2-1,安装成功。

4.2.2 配置minicom

1. 输入minicom –s进行配置,如如4-2-2进入配置页面。

clip_image015

图4-2-2 minicom配置界面

2. 选择Serial port setup进行设置,进入如图4-2-3页面:

clip_image017

图4-2-3 Serial port setup设置页面

3. 检查Windows中串口:设备管理器->端口,如图4-2-4所示。

clip_image018

图4-2-4 设备管理器中端口选项

如图4-2-4所示,含有COM1和COM3两个串口。右键查看端口设置,如图4-2-5所示。

clip_image020 clip_image022

图4-2-5 Windows中COM1和COM3端口属性

4. 在windows下测试哪个串口可用(主机箱后面只有一个串口接口),使用串口调试助手,串口线一端连接PC,一端链接试验箱。打开串口,分别连接COM1和COM3,并设置好对应参数,并打开串口,如图4-2-6所示。

clip_image024

图4-2-6 连接COM1参数配置

然后打开试验箱电源,观察输出:发现没有任何输出。说明,当前连接的串口不是COM1。

5. 对COM3进行同样配置,观察输出,如图4-2-7所示。

clip_image026

图4-2-7 COM3输出信息(部分)

如图4-2-7所示,观察到以上输出信息,说明COM3当前可用。

6. 为虚拟机添加硬件COM。

clip_image028

图4-2-8 为虚拟机添加虚拟硬件Serial Port

如图4-2-8所示,添加Serial Port 2,using port COM3。这里要特别注意两个数字,Serial Port 2中的2和using port COM3中的3,之后会详细介绍。

7. 在虚拟机中连接了Serial Port 2,选择A修改Serial Device为/Dev/ttyS1(笔记本用USB串口线应该使用/dev/ttyUSB0),如图4-2-9所示。

clip_image030

图4-2-9 Serial Device设置

同样,进行其他选项的设置,Bps/Par/bits为115200 8N1;Hardware Flow Control为No。修改完成后按Enter键,返回上一级设置目录;选择Save Setup as dfl,最后选择 Exit From minicom退出。

注意,这里需要说明的是,应该特别注意Minicom配置、虚拟机和PC机中COM的对应关系。如果虚拟机中COM为Serial Port No,则minicom中名称为/dev/ttyS[No-1]。这样,还不行,还应该注意Serial Port No具体连接的是物理机器上得哪个串口,本实验中连接的是COM3。这两个对应关系一定要正确,否则不能正确工作。

8. 输入命令minicom,初始化后进入如图4-2-10页面:

clip_image032

图4-2-10 进入minicom界面

如图4-2-10所示,所配置的参数已经生效。

9. 按下CTRL+A键进入控制模式,此时按下Z键显示帮助菜单,如图4-2-11所示。

clip_image033

图4-2-11 minicom帮助页面

10. 选择O:Configure minicom;进入如图4-2-12所示页面:

clip_image034

图4-2-12 minicom配置页面

11. 选择Filename and paths选项进行设置,进入如图4-2-13所示页面。

clip_image036

图4-2-13 Filename and paths设置页面

如图2-2-13所示,相关设置选项含义如下:

A:Download directory:下载文件所在位置,传输方向:目标机->宿主机;

B:Upload directory:上传文件所在位置,传输方向:宿主机->目标机;从此处读取上传的文件(PC -> 开发板) PC机向开发板发送文件,需要发送的文件在PC机上的目录中。做了此项配置后,每次向开发板发送文件时,只需输入文件名即可,无需输入文件所在目录的绝对路径。

如图2-2-14所示设置A、B选项:

clip_image038

图4-2-14 Filename and paths设置

直接按下回车键,返回最初界面。

12. 此时如果重启试验箱,会发现和在Windows下测试COM3相同的信息,如图2-2-15所示,说明链接成功。

clip_image040

如4-2-15 目标机启动时minicom接收到的信息

13. 此时,在minicom中按下Enter键即可进行命令输入并执行,如ls。

clip_image041

图4-2-16 使用minicom在目标机中执行命令

由图2-2-16所示,ls列出目标机中当前目录下文件信息。

4.3 Tftp服务器安装与配置

4.3.1 安装tftp

apt-get install tftpd-hpa tftp-hpa

clip_image043

图4-3-1 tftp安装

4.3.2 配置

1. 使用vi /etc/default/tftpd-hpa打开配置文件,写入如图4-3-2(b)所示内容。

#/etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftproot"

TFTP_ADDRESS="192.168.1.100:69"

TFTP_OPTIONS="-l -c -s"

(a) 打开配置文件

clip_image045

(b)编写配置文件

图4-3-2 配置tftp服务器

注意此时使用网线直接连接目标机和宿主机,需要在同一网段,虚拟机选择桥接方式,宿主机IP为192.168.1.100,目标机IP为192.168.1.200。

clip_image047

clip_image048

clip_image050

clip_image052

关闭linux防火墙:sudo ufw disable

设置宿主机的tftp的ip地址:ifconfig eth0 192.168.1.100

如果你有打开无线网访问外网,请关闭,否则会导致宿主机和目标机ping不通。

2. 创建/tftproot目录,并修改权限chmod 777 /tftproot,修改效果如图4-3-3所示。

clip_image054

clip_image056

图4-3-3 创建/tftproot目录并修改权限

3. 执行 sudo service tftpd-hpa start,启动服务。效果如图4-3-4所示。

clip_image058

图 4-3-4 启动tftp服务

4.3.3 测试

将之前编译的hello文件复制到/tftproot目录下,用于进行测试。

cp /root/hello /tftproot

clip_image060

1. 进入minicom,使用tftp下载文件到目标机。键入tftp,显示如图4-3-5所示帮助信息。

clip_image062

图 4-3-5 minicom中显示帮助信息

2. 执行如图4-3-6命令,将hello文件下载到目标机,并执行,正确。

tftp -l hello -r hello 192.168.1.100 69 -g

clip_image064

图4-3-6 将hello下载到目标机并执行

注意1:有些时候,配置完成后可以使用;可是当系统重启时发现timeout或者其他提示,这时可能是因为tftp服务器没有启动,可以使用以下如图4-3-7命令进行查看,返回如下信息说明启动。

netstat –a | grep tftp

clip_image065

图4-3-7 查看tftp服务器是否启动

如果没有任何信息,可以使用下面命令进行启动:

service tftpd-hpa start

对应的重启命令:service tftpd-hpa restart。

注意2:使用tftp服务必须使目标机和宿主机在同一网段,设置方法如下:

1. 使用minicom查看目标机IP地址

进入minicom后,使用ifconfig进行查看,如图4-3-8所示。

clip_image067

图4-3-8 minicom中查看目标机ip

当然也可以使用ifconfig eth0 IPAddress进行修改。

2. 设置宿主机(虚拟机中的Ubuntu)IP地址使其在同一网段。

虚拟机的网络连接方式使用桥接方式,设置方法如图4-3-9所示。

clip_image069

图4-3-9 虚拟机网络设置为桥接方式

在虚拟机中使用ifconfig eth0 192.168.1.100(tftp的设置地址)进行设置。

这样,目标机和虚拟机就在同一网段,可以进行连接。可以使用ping命令进行互ping测试。

这些操作和Vmware所在的Windows本地连接的IP地址没有关系,使用自动获得IP地址方式即可。但是,不能在windows下ping通虚拟机或者目标机。如果需要三者互ping,则三者必须在同一网段,可以给windows设置为192.168.1.50。注意以上在网掩码均为255.255.255.0。

4.4 NFS服务的配置

4.4.1 安装

如图4-4-1安装nfs服务器。

clip_image070

(a)

clip_image072

(b)

图4-4-1 安装nfs服务器

4.4.2 配置

1. 查看nfs服务当前状态,若nfs服务正在运行则返回"nfsd running"。否则返回"nfsd not running"。

clip_image073

3. 创建目录/nfsroot用于共享文件。

root@ubuntu:/tftproot# apt-get install nfs-common

4. 配置共享目录。在主机上配置配置文件。安装好上面的软件后,会在/etc下出现一个名叫exports的文件(如果没有新建一个也可以),打开后可以看到如图4-4-2所示内容。

clip_image075

clip_image077

图4-4-2 /etc/exports内容

其实就是一些注释,提示你怎样配置nfs。因为nfs是一种网络共享,所以首先要确定你想把哪个文件夹共享出来,目前假设共享的文件目录为/nfsroot,建议不要把共享的文件夹选的太大,那样会严重影响共享传输的速度;还要确定主机的IP地址是多少,目前先假设IP为192.168.1.100。配置时只需要在exports文件的末尾加上一句话,如图4-4-3所示。

/nfsroot *(sync,rw,no_root_squash)

clip_image079

图4-4-3 /etc/exports加入的配置信息

下面解释一下,总共需要写三部分的东西,第一部分就是/nfsroot,也就是待共享的目录。第二部分192.168.1.0/24是指在这个IP地址段内可以共享,第三部分就是括号里的内容,就是参数,也是配置的重点地方,下面重点说一下:

第一个参数:rw:可擦写的权限;ro:只读的权限。

第二个参数:sync: 资料同步写入到内存与硬盘当中;async:资料会先暂存于内存当中,而非直接写入硬盘。

第三个参数: no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有root的权限!这个项目极不安全,不建议使用! root_squash:在登入 NFS 主机使用分享之目录的使用者如果是root时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的UID与GID都会变成nobody那个身份。all_squash:不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody。anonuid:前面关于*_squash提到的匿名使用者的UID设定值,通常为nobody,但是你可以自行设定这个UID的值!当然,这个UID必需要存在于你的/etc/passwd当中! anongid:同anonuid,但是变成group ID就是了。

4.启动nfs服务。

首先把上面修改过的配置文件重新导入:sudo exportfs –rv ,如图4-4-4所示。

clip_image081

图4-4-4 重新载入配置文件

然后,重新启动portmap服务(端口映射):sudo /etc/init.d/portmap restart,如图4-4-5所示。

clip_image083

图4-4-5 重启portmap服务

最后,重新启动nfs服务:sudo /etc/init.d/nfs-kernel-server restart,如图4-4-6所示。

clip_image085

如4-4-6 重启nfs服务

以上三步输入完毕,就配置好了nfs服务了,如果后面有需要要修改exports文件,在修改之后,还是需要重新输入1步骤中的命令。

4.4.3 测试

1. 使用mount使用NFS,如图4-4-7所示。

clip_image087

图4-4-7 本地测试挂载/nfsroot目录

2. 如果要卸载只需umount /mnt即可,如果当前工作路径为/mnt则会返回device is busy,所以先退出mnt目录在进行umount操作。如图4-4-8所示。

clip_image089

图4-4-9 卸载过程

3. 在minicom中可以将/nfsroot目录挂载到目标机,并直接运行/nfsroot/hello文件。如图4-4-10所示。

clip_image091

图4-4-10 目标机挂载、执行程序、卸载过程

posted @ 2013-10-21 22:16  Ю詺菛╀時代  阅读(342)  评论(0编辑  收藏  举报