一、嵌入式LINUX开发环境的建立

2019-07-12 22:00发布

 1.vmware+Ubuntu的安装      要进行嵌入式linux的开发首先要按照好一个主机开发环境,因为嵌入式linux下的大部分开发工作都是在pc中开发的。如果你的机器足够好,那么建议首先在Windows下安装一个虚拟机软件vmware,毕竟Windows下可用的工具比较多,再在vmware基础上安装一个桌面版本的Linux系统。这里使用的是vmware-7.0和Ubuntu-9.10,这2个软件都可以在网上下载到。安装过程比较冗长,这里不一一说明,可以参见开发板的附录。    不过在进行下面的开发的时候会发现默认下Ubuntu缺少很多需要用到的软件包,这要根据自己的实际情况使用Ubuntu的apt命令在线安装这些软件包。2.建立tftp服务器。
在嵌入式linux开发过程中需要使用tftp方式从Linux主机下载文件到板子中,因此需要在主机linux系统中安装tftp服务器。
Ubuntu-9.10中安装tftp服务器的方法如下:注明:在非ROOT用户下输入命令要达到ROOT用户的效果   需要在命令前加上sudo2.1 安装程序
通过软件管理安装 tftp tftpd,前者是客户端,后者是服务程序。系统根据依赖会选上openbsd-inetd。在Ubuntu的终端下输入命令如下:
sudo apt-get install tftp tftpd
2.2 在根目录/目录下建一个tftpboot, 把属性改成777
cd /
sudo mkdir tftpboot
sudo chmod 777 tftpboot
2.3 修改存放目录
sudo vi /etc/inetd.conf
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
2.4sudo /etc/init.d/openbsd-inetd restart
sudo in.tftpd -l /tftpboot
2.5 测试tftp服务器
在/tftpboot文件夹下新建立一个文件
cd /tftpboot
touch test
进入另外一个文件夹
tftp 127.0.0.1
tftp> get test
是不是工作正常了呢?
现在把你编译好的内核文件拷贝到/tftpboot下面,就可以使用u-boot的tftp命令加栽内核到目标板内存了 
3 建立nfs服务器
在嵌入式linux开发的时候,常常需要使用nfs以方便程序的调试。使用nfs,用户可以将板子要用到的根文件系统放在主机目录下,开发板则通过以太网挂载到这个目录并将这个目录下的文件作为根文件系统的内容,这样用户的程序更新后不比重新烧写板子的根文件系统便能被重新使用,这点能够大大加快程序的调试。Ubuntu下安装nfs服务器的步骤如下:
3.1进行NFS服务器端与客户端的安装:
sudo apt-get install nfs-kernel-server nfs-common portmap
安装客户端的作用是可以在本机进行NFS服务的测试。
3.2配置portmap
两种方法任选一种就可以:
(1):sudo emacs /etc/default/portmap
去掉 -i 127.0.0.1
(2)sudo dpkg-reconfigure portmap
运行后选择“否” 另外很重要的一点,要用sysv-rc-conf (而不是chkconfig)工具查看一下当前nfs和portmap的状态,若是off,则用sudo sysv-rc-conf portmap on 或sudo sysv-rc-conf nfs-kernel-server on打开
3.3配置挂载目录和权限
emacs /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) hostname2(ro,sync) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt) # /srv/nfs4/homes gss/krb5i(rw,sync) # /nfsboot *(rw,sync) 解释一下:
#后面的都是解释
/nfsboot是NFS的共享目录,*表示任何IP都可以共享这个目录,你可以改为受限的IP,rw表示的是权限,sync是默认的。
3.4更新exports文件
只要你更改了/etc/exports, 你不可以通过sudo exportfs -r 来更新 这个文件3.5重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务
3.6进行测试
尝试一下挂载本地磁盘(我的linux系统IP为202.198.137.18,将/home/nfsboot挂载到/mnt) $ sudo mount 202.198.137.18:/nfsboot /mnt 运行 $ df 看看结果 $ sudo umount /mnt
3.7使用nfs调试程序
A.将板子用的根文件系统,如下面说到的qtopia.tar.gz、android.tar.gz解压缩到nfs共享目录下,并使用修改权限:
sudo cp qtopia.tar.gz /nfsboot
cd /nfsboot
sudo tar –zxvf qtopia.tar.gz
sudo chmod –R 777 *
B.在uboot下修改linux内核的启动参数为:
setenv bootargs noinitrd root=/dev/nfs console=ttySAC0 init=/linuxrc nfsroot=192.168.1.178:/nfsboot ip=192.168.1.20:192.168.1.178:192.168.1.1:255.255.255.0::eth0:on fbcon=rotate:1
运行saveenv保存参数。其中,192.168.1.178是nfs主机端ip,192.168.1.20是板子ip,/nfsboot就是共享目录。
C.重启内核,最后阶段内核会到服务器端挂载共享目录的内容作为根文件系统。