嵌入式Linux之主机平台环境的搭建

2019-07-12 21:57发布

嵌入式Linux之主机平台环境的搭建

本文档时Linux学习笔记,主要是对宿主机平台的搭建过程的记录。同时对其中涉及到得Linux相关知识进行归纳总结。以备查阅。
平台环境:
宿主机:CPU:Intel E5300 双核,2G RAM。采用虚拟机的形式运行Ubuntu 10.04,分配给其的资源为30G硬盘,1G RAM。
开发板:ZLG SMART3250开发板,主控芯片NXP3250,基于ARM9内核。64M RAM,256M NANDFLASH。出厂时内置了WINCE6.0操作系统。
宿主机平台的搭建包括Linux操作系统的安装(这里采用虚拟机的形式),交叉编译工具以及相关共享软件的安装。

安装Linux操作系统

Linux操作系统采用虚拟机的形式,安装的Linux发行版本为Ubuntu 10.04(内核版本2.6.32)
虚拟机采用VMware软件搭建。分配给虚拟机的硬盘容量为30G,以应对后续的软件安装及平台升级;分配给其的RAM空间容量为1G。
虚拟的Linux系统安装完成之后,要对其进行相关的配置。一个是网络共享的设置,使虚拟机和主机共享IP,这样就可以在虚拟的Linux环境中通过网络进行软件安装(apt-get)和系统升级。另一个就是主机和虚拟机文件的共享,借此我们可以实现虚拟机和主机之间文件的传递。这两方面的配置均是通过VMware软件中的VMware Tool实现的,具体的设置网络上有相当多的说明,这里不再详述。

交叉编译工具的安装

对于嵌入式开发来说,需要通过PC机编译开发出适合嵌入式系统运行的程序。由于两者
运行环境存在巨大差异,要实现这一点,就需要借助交叉编译工具来实现。SMART3250提供的交叉编译工具为tc-nxp-lnx-armvfp-4.3.2.1-1.i386.rpm,将其复制到/usr/local文件夹下安装。Rpm包是由redhat支持的发行软件,而Ubuntu系统支持的Debian的软件包。需要安装的话,需要执行:
sudo rpm –ivh tc-nxp-lnx-armvfp-4.3.2-1.i386.rpm
安装完成之后,在根目录下就会出现一个/opt/nxp文件夹,里面存放着编译程序时需要的一些工具,同时,需要添加对应的PATH,修改~/.bashrc中添加:
xport PATH=$PATH:$HOME/bin:/opt/nxp/gcc-4.3.2-glibc-2.7/bin
这句话所执行的内容为在原有PATH变量基础上,在添加两个地址:/bin和/opt/nxp/gcc-4.3.2-glibc-2.7/bin到PATH变量空间中去。修改完该文件之后,运行之:. .bashrc
通过echo $PATH,可以看出变量已经成功修改。
运行指令iemink@ubuntu:~$ arm-vfp-linux-gnu-并连按两次TAB:
arm-vfp-linux-gnu-addr2line arm-vfp-linux-gnu-c++filt arm-vfp-linux-gnu-gcc-4.3.2 arm-vfp-linux-gnu-nm arm-vfp-linux-gnu-readelf
arm-vfp-linux-gnu-ar arm-vfp-linux-gnu-cpp arm-vfp-linux-gnu-gccbug arm-vfp-linux-gnu-objcopy arm-vfp-linux-gnu-size
arm-vfp-linux-gnu-as arm-vfp-linux-gnu-ct-ng.config arm-vfp-linux-gnu-gcov arm-vfp-linux-gnu-objdump arm-vfp-linux-gnu-strings
arm-vfp-linux-gnu-c++ arm-vfp-linux-gnu-g++ arm-vfp-linux-gnu-gprof arm-vfp-linux-gnu-populate arm-vfp-linux-gnu-strip
arm-vfp-linux-gnu-cc arm-vfp-linux-gnu-gcc arm-vfp-linux-gnu-ld arm-vfp-linux-gnu-ranlib
证明交叉编译链安装成功。

minicom安装

在Linux环境下,minicom是一个功能强大的串口调试工具,它兼具window环境中超级终端和串口调试助手的功能,是嵌入式开发所必须的软件。该软件的安装十分简单,在虚拟机联网的情况下,使用:
sudo apt-get install minicom
指令就可以完成安装。这里有个技巧,Ubuntu默认的更新源是欧美的地址,下载速度很慢,可以在/etc/apt/source.list文件中将更新源改为国内的163镜像,速度会快很多。
另外我电脑串口是坏的,在window下有PL2303这样的USB转串口驱动程序,然而在Linux环境下具体情况还不得而知,插上usb转串口线之后通过以下指令查看USB驱动情况:
iemink@ubuntu:/etc/apt$ lsmod|grep usb
usbserial 33694 3 pl2303
usbhid 36110 0
hid 67288 1 usbhid
可以看出USB转串口驱动已经加载,经过网络查询,Ubuntu 10.04中内置了该驱动程序。

NFS服务器的搭建

NFS即网络文件系统(Network flle system),可以通过网络,让不同机器,不同系统之间可以实现文件共享。通过NFS,可以访问远程共享目录,就像访问本地硬盘一样。在嵌入式Linux开发中,通常需要在主机上配置NFS服务器,将系统特定的目录共享给目标系统访问和使用。通过NFS,目标系统可以直接运行存放于主机的程序。可以减少对目标系统FLASH的烧写,既减少了对FLASH的损害,同时也节省了烧写FLASH所花费的时间。
首先,在主机上安装相应的软件:
sudo apt-get install nfs-kernel-server
sudo apt-get install portmap
接着,在主机上配置相应文件。上面两个软件安装好之后,会在/etc下面出现一个名叫
exports的文件,打开之后再后面添加以下内容:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
#/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
/home/iemink/nfsfiles 192.168.7.100(rw,sync,no_root_squash)
添加的内容就是:设置/home/iemink/nfsfiles为nfs服务器共享的文件夹,主机IP为 192.168.7.100,后面的一些参数是nfs服务器的一些配置。
接着,配置主机IP,关闭防火墙,启动NFS服务器。
sudo ufw disable //关闭防火墙
sudo exportfs –rv //导入配置文件
sudo /etc/init.d/portmap restart //重新启动portmap服务
sudo /etc/init.d/nfs-kernel-server restart //启动nfs服务器
至此,nfs服务器配置完成。具体使用上,采用mount指令将文件夹挂载在/mnt下指定目录。本地测试如下:
mkdir /mnt/nfs
mount –t nfs 192.168.7.100:/home/iemink/nfsfiles /mnt/nfs
就可以从/mnt/nfs中看到共享的/home/iemink/nfsfiles文件夹

安装TFTP服务器

TFTP服务器可以用于主机向目标板加载镜像,具体配置如下:
首先,安装需要的软件:tftp-hpa和tftpd-hpa,前者是客户端,后者是服务程序,同时还需要安装xinetd。
sudo apt-get insatll tftp-hpa
sudo apt-get insatll tftpd-hpa
sudo apt-get insatll xinetd
接着,进入根目录下的etc文件夹,查看目录中是否有一个xinetd.confg文件,如果没有,就新建一个,并改写其中内容如下:
# Simple configuration file for xinetd
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
然后进入xinetd.d文件夹,查看是否有一个tftp文件,如果没有这个文件就新建一个,修改其中内容如下:
service tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s -c /home/iemink/tftfiles
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的,系统设定tftp文件夹为/home/iemink/tftfiles.接着建立这个文件夹并设置其权限。
mkdir /home/iemink/tftfiles
sudo chmod –R 777 /home/iemink/tftfiles
紧接着,启动tftp服务器,这是最容易忘掉的一步。
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart
至此,tftp服务器搭建完成,整个宿主机环境搭建完成。