昨天拿到了OK6410的开发板,板子还是不错的,就是资料有点乱,今天通过SD卡和DNW烧写了光盘里给的3.0的Linux系统,晚上打算运行一个简单的交叉编译小程序。
我的开发环境:
开发板:OK6410,Linux 3.0.1
宿主机:VMware Ubuntu 11.10
先说一下NFS
直接说我的个人理解,NFS就是网络文件系统,用NFS可以实现把宿主机的目录挂载到开发板上,这样用宿主机进行交叉编译时就不用用USB或者SD卡将编译好的文件拷贝到开发板上运行了,调试程序非常方便。常用的NFS有两种,一种是做NFS根文件系统,及Linux的根文件系统就是网络上的NFS,也就是说开发板的启动文件全部是通过NFS从宿主机读取的,没有网络系统都启动不起来,目前网上找了很多都是这一种。这一种需要在U-boot中设置好同事还需要在内核中进行相应的配置。
第二种是将宿主机的某个目录映射到开发板的某个目录,这个操作是在linux系统中配置的,比较之下先用第二种,本文就介绍这一种。
IP设置
由于nfs是基于网络的,因此ip设置是首要的。首先是主机,虚拟机运行的linux要把网络改为桥接的方式。如图所示。
然后通过ifconfig查看地址。
开发板进入linux系统后连接网络通过ifconfig查看地址。如果不和主机在一网段内需要设置
ifconfig eth0 121.248.202.168 netmask 255.255.255.0 up
或者可以通过DHCP自动分配
超级终端里面输入:
udhcpc –i eth0
命令,用来动态获取IP 地址,-i 参数用来指定网卡名称。
板子默认的配置适合连接路由使用,刚开始也纳闷是不是必须使用路由,实际上只要是一个网段内的都可以。
设置好之后互相ping一下。
开发板ping宿主机,如图所示。按ctrl+C结束,如图所示,表示ping通。
主机ping开发板也一样。
互相能够ping通是前提,这一步搞不通一是查看网络,是不是防火墙啥的,为了确定不是虚拟机的问题,可以用虚拟机ping同一网段其他电脑试试,来排除虚拟机的问题。
如果这个不同就看看板子的内核和网卡设置。
宿主机nfs配置
ubuntu中默认是没有安装nfs的,安装非常简单,联网情况下运行
apt-get install nfs-kernel-server
如果安装不成功在试试安装nfs-common和portmap,我是装这一个就可以了。
接下来需要编辑一下配置文件:
修改/etc/exports,在末尾添加:/armnfs *(rw,sync,no_root_squash)可以使用vi修改,vi怎么使用这里就不说了自己百度一下。
/armnfs 表示我需要设置的宿主机共享目录
* 和前面中间有个空格,*表示任意ip均可连接,同理可以设置成某一个ip段,如192.168.0.*
rw 表示可读可写
no_root_squash允许客户机享有主机root身份
保存后在根目录下对应新建armnfs文件夹
mkdir armnfs
修改目录权限
chmod 777 -R /armnfs
好了,启动nfs
service nfs-kernel-server start
开发板挂载
开发板上挂载nfs
mount –t nfs –o nolock 121.248.202.163:/armnfs /mnt
含义为宿主机IP:宿主机nfs目录 开发板挂载目录
挂载之后在宿主机上的目录下新建个文件看看是否在开发板中能够看到。
下面可以在宿主机上利用交叉编译工具链编译个小程序在板子上跑了。
至此,第一个小程序就这样了,继续研究!
重启后IP地址又恢复默认了,找到一个方法,更改配置文件,设置固定ip
vi /etc/eth0-setting
打开后更改对应的设置,保存即可。