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试验平台
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)嵌入式开发环境构建的更多相关文章
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel
经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...
- 嵌入式实时操作系统VxWorks入门――开发环境构建[转]
VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通 信.军事.航空.航天等高精尖技术及实时性 ...
- 转:Qt 嵌入式开发环境搭建
地址: http://www.cnblogs.com/lishixian/articles/3013897.html 作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...
- Ubuntu嵌入式开发环境配置问题集锦(不断更新)
本文章主要记录在建立嵌入式开发环境中遇到的各种问题,并详细写上解决方法. 我的开发环境为:win7+Vmware9.0+Ubuntu12.04 之所以选择这样的开发环境是因为:1. 有 ...
- ubuntu-10.10嵌入式开发环境搭建【转】
本文转载自:http://blog.csdn.net/zjhsucceed_329/article/details/8036781 版权声明:本文为博主原创文章,未经博主允许不得转载. ubuntu- ...
- 嵌入式linux开发环境构建
2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...
- Qt嵌入式开发环境搭建
一.Qt版本介绍 按照不同的图形界面来划分,分为四个版本: 1.Win32版:适用于windows平台 2.X11版:适用于各种X系统的Linux和Unix平台 3.Mac版:适用于苹果的MacOS ...
- Mac下搭建基于PlatformIO的嵌入式开发环境(STM32开发)
PlatformIO简介 PlatformIO是开源的物联网开发生态系统.提供跨平台的代码构建器.集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等 支持在Windows.Lin ...
- 使用eclipse搭建嵌入式开发环境
下载jdk http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-i586.tar.gz 下载eclipse-cpp-ga ...
随机推荐
- java Clone使用方法详解
java"指针" Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念.并且由于Java不能 通过 ...
- svg可缩放矢量图形
可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. <svg xmlns="http://www.w ...
- LoadRunner测试场景中添加负载生成器
如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...
- windows加入path路径
右键我的电脑,属性:高级系统设置,高级,环境变量:在系统变量中选path,编辑:将python安装路径加入即可(注意分号):
- caffe中添加local层
下载caffe-local,解压缩; 修改makefile.config:我是将cuudn注释掉,去掉cpu_only的注释; make all make test(其中local_test出错,将文 ...
- 浩瀚技术 安卓版移动开单手持微POS PDA无线移动开单软件 -安卓版移动手持开单设备
PDA数据采集器,是深圳浩瀚技术有限公司最新研发的一款安卓版移动手持开单设备,它通过WIFI和GPRS连接并访问电脑,从进销存软件中读取数据,实现移动开单,打破电脑开单模式. 它自带扫描器,可直接扫描 ...
- fragment中嵌入viewpager的问题
今天终于解决了这个问题 原来问题是出现于viewpager在这里的layout_height不能设置为"wrap_content" 之前我遇到空白的问题,我还以为是管理的问题 所以 ...
- The StringFormat property
As we saw in the previous chapters, the way to manipulate the output of a binding before is shown is ...
- PL/SQL 循环结构
(1)LOOP...EXIT...END语句示例: control_var:; LOOP then EXIT; END IF; control_var:; END LOOP; 上述,初始化contro ...
- BZOJ3257 : 树的难题
设$f[x][i][j]$表示以$x$为根的子树,与$x$连通部分有$i$个黑点,$j$个白点,不联通部分都是均衡的最小代价.若$i>1$,则视作$1$:若$j>2$,则视作$2$. 然后 ...