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试验平台

4. 操作方法和实验步骤

4.1 安装交叉编译器

4.1.1 下载交叉编译工具

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

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

使用以下命令进行解压:

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

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

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

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

图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

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

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

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

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

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

4.2 minicom端口配置

4.2.1 安装minicom

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

图4-2-1 minicom安装过程

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

4.2.2 配置minicom

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

图4-2-2 minicom配置界面

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

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

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

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

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

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

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

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

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

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

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

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

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

图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所示。

图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页面:

图4-2-10 进入minicom界面

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

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

图4-2-11 minicom帮助页面

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

图4-2-12 minicom配置页面

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

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

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

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

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

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

图4-2-14 Filename and paths设置

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

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

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

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

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

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

4.3 Tftp服务器安装与配置

4.3.1 安装tftp

apt-get install tftpd-hpa tftp-hpa

图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) 打开配置文件

(b)编写配置文件

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

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

关闭linux防火墙:sudo ufw disable

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

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

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

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

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

图 4-3-4 启动tftp服务

4.3.3 测试

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

cp /root/hello /tftproot

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

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

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

tftp -l hello -r hello 192.168.1.100 69 -g

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

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

netstat –a | grep tftp

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

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

service tftpd-hpa start

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

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

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

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

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

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

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

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

图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服务器。

(a)

(b)

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

4.4.2 配置

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

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

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

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

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

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

/nfsroot *(sync,rw,no_root_squash)

图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所示。

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

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

图4-4-5 重启portmap服务

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

如4-4-6 重启nfs服务

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

4.4.3 测试

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

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

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

图4-4-9 卸载过程

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

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

zju(1)嵌入式开发环境构建的更多相关文章

  1. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  2. 嵌入式实时操作系统VxWorks入门――开发环境构建[转]

    VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通 信.军事.航空.航天等高精尖技术及实时性 ...

  3. 转:Qt 嵌入式开发环境搭建

    地址: http://www.cnblogs.com/lishixian/articles/3013897.html         作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...

  4. Ubuntu嵌入式开发环境配置问题集锦(不断更新)

    本文章主要记录在建立嵌入式开发环境中遇到的各种问题,并详细写上解决方法.     我的开发环境为:win7+Vmware9.0+Ubuntu12.04     之所以选择这样的开发环境是因为:1. 有 ...

  5. ubuntu-10.10嵌入式开发环境搭建【转】

    本文转载自:http://blog.csdn.net/zjhsucceed_329/article/details/8036781 版权声明:本文为博主原创文章,未经博主允许不得转载. ubuntu- ...

  6. 嵌入式linux开发环境构建

    2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...

  7. Qt嵌入式开发环境搭建

    一.Qt版本介绍 按照不同的图形界面来划分,分为四个版本: 1.Win32版:适用于windows平台 2.X11版:适用于各种X系统的Linux和Unix平台 3.Mac版:适用于苹果的MacOS ...

  8. Mac下搭建基于PlatformIO的嵌入式开发环境(STM32开发)

    PlatformIO简介 PlatformIO是开源的物联网开发生态系统.提供跨平台的代码构建器.集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等 支持在Windows.Lin ...

  9. 使用eclipse搭建嵌入式开发环境

    下载jdk http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-i586.tar.gz 下载eclipse-cpp-ga ...

随机推荐

  1. java Clone使用方法详解

    java"指针"       Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念.并且由于Java不能 通过 ...

  2. svg可缩放矢量图形

    可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. <svg xmlns="http://www.w ...

  3. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

  4. windows加入path路径

    右键我的电脑,属性:高级系统设置,高级,环境变量:在系统变量中选path,编辑:将python安装路径加入即可(注意分号):

  5. caffe中添加local层

    下载caffe-local,解压缩; 修改makefile.config:我是将cuudn注释掉,去掉cpu_only的注释; make all make test(其中local_test出错,将文 ...

  6. 浩瀚技术 安卓版移动开单手持微POS PDA无线移动开单软件 -安卓版移动手持开单设备

    PDA数据采集器,是深圳浩瀚技术有限公司最新研发的一款安卓版移动手持开单设备,它通过WIFI和GPRS连接并访问电脑,从进销存软件中读取数据,实现移动开单,打破电脑开单模式. 它自带扫描器,可直接扫描 ...

  7. fragment中嵌入viewpager的问题

    今天终于解决了这个问题 原来问题是出现于viewpager在这里的layout_height不能设置为"wrap_content" 之前我遇到空白的问题,我还以为是管理的问题 所以 ...

  8. The StringFormat property

    As we saw in the previous chapters, the way to manipulate the output of a binding before is shown is ...

  9. PL/SQL 循环结构

    (1)LOOP...EXIT...END语句示例: control_var:; LOOP then EXIT; END IF; control_var:; END LOOP; 上述,初始化contro ...

  10. BZOJ3257 : 树的难题

    设$f[x][i][j]$表示以$x$为根的子树,与$x$连通部分有$i$个黑点,$j$个白点,不联通部分都是均衡的最小代价.若$i>1$,则视作$1$:若$j>2$,则视作$2$. 然后 ...