Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514369
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: 嵌入式

2010-01-03 15:45:26

参考:

首先说下我使用的环境:

操作系统:ubuntu 8.04桌面版 开发板:友善之臂mini2440

主机IP(我主机上安装了双网卡): eth0供我上外网查找资料用,eth1直接和开发板相连

eth0:192.168.179.205(dhcp) 网关:192.168.179.33 子网掩码:255.255.255.0 广播地址:192.168.179.255
eth1:192.168.1.2(static) 子网掩码:255.255.255.0 广播地址:192.168.1.255 (并没有设置网关)

开发板IP:192.168.1.230(static) 子网掩码:255.255.255.0 广播地址:192.168.1.255

第一步:连接主机和开发板

我选择了串口线和网线连接起了主机和开发板。由于我的主机上也没有串口,故需要一根RS232的串口转USB线分别连接开发板的串口和主机的一个USB口;

用一根网线直接连接开发板的网卡接口和主机的eth1(注:直接连接就可以了,我之前一直郁闷不知道怎么用网线连接起开发板和主机)。

第二步:配置minicom

启动 minicom,按CTRL-A Z进入到 mincom 命令汇总界面

按下O键,进入到minicom的串口配置界面,然后按照图示设置好。(可以直接使用 minicom -s 命令直接进入到如下界面)



由于我的系统已经汉化了(默认是中文界面的UTF-8字符编码),如果你的系统是英文的(或者minicom的界面还是英文的),那么应类似如下设置:

A -    Serial Device      : /dev/ttyUSB0
B - Lockfile Location     : /var/lock
C -   Callin Program      :
D -  Callout Program      :
E -    Bps/Par/Bits       : 115200 8N1
F - Hardware Flow Control : No
G - Software Flow Control : No

设置好要记得保存哦,可以选择为:Save setup as dfl (设置保存为dfl)
最后生成的默认配置文件内容如下,如果对minicom的设置操作不熟悉,可以使用你喜欢的编辑器来编辑一个这样的配置文件(保存在你的主目录下)。

fhc2007@fhc2007-desktop:~$ cat .minirc.dfl
# Machine-generated file - use setup menu in minicom to change parameters.
pu port             /dev/ttyUSB0
pu rtscts           No

第三步:配置主机和开发板IP

1.主机

由于我们学校使用的是动态获取IP,所以主机eth0的IP我的不需要设置,如果你的主机是单网卡,则直接设置eth0(我这里是设置eth1)为静态IP地址,网段和开发板的一致。

至于网关,应该是不必设置的(我没有设置,再说我也不知道怎么设置这个网关^_^)。
大致的设置步骤如下:

fhc2007@fhc2007-desktop:~$ sudo /etc/init.d/networking stop

fhc2007@fhc2007-desktop:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0

fhc2007@fhc2007-desktop:~$ sudo /etc/init.d/networking start

手动编辑/etc/network/interfaces文件并输入类似上面cat命令输出的内容。

2.开发板

我使用的是友善之臂的mini2440开发板,开发板原先的IP就是192.168.1.230。为了能和主机建立起连接我必须得把开发板IP改成和主机一个网段,

或者把主机的IP改成和开发板的IP同一个网段(见上面的配置说明),下面的内容主要是在xhylyx兄原文上稍作修改

经过第二步的配置我们现在应该能进到开发板了。

进入到/etc/init.d/目录下会看到一个rcS文件

IP就是在这个文件修改的

[root@FriendlyARM init.d]# ls
rcS rcS.old
[root@FriendlyARM init.d]# vi rcS

我只复制了其中的一段出来:/sbin/ifconfig eth0 192.168.1.230 netmask 255.255.255.0 broadcast 192.168.1.255 up

改完后就重启一下开发板

[root@FriendlyARM /]# reboot

第四步:安装arm-linux-gcc编译器

我买开发板的时候光盘上已经给有编译器了,所以我的不需要去下载或自行编译。

没有的就自己去下载吧

我使用编译器版本分别是arm-linux-gcc-2.95.3 arm-linux-gcc-3.3 .2 arm-linux-gcc-3.4.1

把这三个编译器的压缩包放到你的home目录下去

我的是放在/home/xhylyx/qq2440目录下

然后我们cd进入到根目录下分别执行

root@xhylyx-desktop:/# tar xvzf /home/xhylyx/qq2440/arm-linux-gcc-2.95.3.tgz

root@xhylyx-desktop:/# tar xvzf /home/xhylyx/qq2440/arm-linux-gcc-3.3.2.tgz

root@xhylyx-desktop:/# tar xvzf /home/xhylyx/qq2440/arm-linux-gcc-3.4.1.tgz

解压完后会在/usr/local目录下生成一个arm文件夹,如果没有则是你解压的路径不正确(或者直接在/home/xhylyx/qq2440目录下使用 tar xvzf package.tgz -C / 命令)。

把交叉编译器的路径加入到PATH,以方便使用:

xhylyx@xhylyx-desktop:~$ sudo gedit ~/.bashrc

在后面加入如下代码:

if [ -d /usr/local/arm ] ; then
PATH=/usr/local/arm/3.4.1/bin:"${PATH}"
fi

保存退出。执行如下命令使设置生效。

source ~/.bashrc 或 . ~/.bashrc

检验一下:

xhylyx@xhylyx-desktop:~$ arm-linux-gcc -v

如果出现类似如下信息,则说明交叉编译环境已经成功安装

Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs
Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux 
--host=i686-host_pc-linux-gnu --prefix=/usr/local/arm/3.4.1 
--with-headers=/usr/local/arm/3.4.1/arm-linux/include 
--with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable-nls 
--enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit 
--enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix gcc version 3.4.1

第五步:配置NFS服务

1.安装NFS

Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:

xhylyx@xhylyx-desktop:~$ sudo apt-get install nfs-kernel-server

安装nfs-kernel-server时,apt会自动安装nfs-common和portmap

这样,宿主机就相当于NFS Server

2.配置NFS

(1)配置portmap

方法1: 编辑/etc/default/portmap, 将 -i 127.0.0.1 去掉.
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.
(其实默认情况下就已经不是绑定到loopback地址的,具体的自行查看/etc/default/portmap文件吧)

(2)配置/etc/hosts.deny

禁止任何host(主机)能和你的NFS服务器进行NFS连接,加入:

### NFS DAEMONS

portmap:ALL

lockd:ALL

mountd:ALL

rquotad:ALL

statd:ALL

(3)配 置/etc/hosts.allow

允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.1开头的主机(连接到NFS服务器上),也可以指定特定的IP地址,加入:

### NFS DAEMONS

portmap: 192.168.1.

lockd: 192.168.1.

rquotad: 192.168.1.

mountd: 192.168.1.

statd: 192.168.1.

/etc/hosts.deny 和 /etc/hosts.allow 设置对portmap的访问. 采用这两个配置文件有点类似”mask”的意思. 现在/etc/hosts.deny中禁止所有用户对portmap的访问.

再在/etc/hosts.allow 中允许某些用户对portmap的访问.

xhylyx@xhylyx-desktop:~$sudo /etc/init.d/portmap restart

重启portmap daemon.

(4)配置/etc/exports

NFS挂载目录及权限由/etc/exports文件定义

比如我要将我的/opt/FriendlyARM/QQ2440/root_nfs目录让192.168.1.*的IP共享, 则在该文件末尾添加下列语句:

/opt/FriendlyARM/QQ2440/root_nfs  192.168.1.0/24(rw,sync,no_root_squash)

192.168.1.* 网段内的NFS客户端能够共享NFS服务器/opt/FriendlyARM/QQ2440/root_nfs目录内容.且有读,写权限, 并且该用户进入/opt/FriendlyARM/QQ2440/root_nfs目录后的身份为root

最好加上sync, 否则 $ sudo exportfs -r 时会给出警告, sync是NFS的默认选项.

root@xhylyx-desktop:/#showmount -e 查看NFS server的export list.

若更改了/etc/exports, 运行 xhylyx@xhylyx-desktop:~$sudo exportfs -r 更新

或运行 xhylyx@xhylyx-desktop:~$ sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务

ps:其实为简单起见,实际配置中,(1)(2)(3)都是可以略过的,直接从第(4)步开始,而且可以如下配置就好:

/opt/FriendlyARM/QQ2440/root_nfs  *(rw,sync,no_root_squash)

要注意的是:网段或特定的IP或*和后面的(号不要有空格。

(5)测试NFS

可以尝试一下挂载本地磁盘

我前面开始时已经提到了我的主机eth1的IP是192.168.1.2

我现在试把/opt/FriendlyARM/QQ2440/root_nfs目录挂载到/mnt目录下

root@xhylyx-desktop:/#mount -t nfs -o nolock 192.168.1.2:/opt/FriendlyARM/QQ2440/root_nfs /mnt

成功的挂载上的话你会在/mnt目录下看到root_nfs这个文件夹下的内容。
(注:-o nolock 选项必须得有,要不然不能成功挂载,而且minicom也会变成“阻塞”状态而无法继续操作)

第六步:通过NFS启动开发板

当NFS 服务设置好并启动后,我们就可以把NFS 作为根文件系统来启动开发板了。

通过使用NFS 作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘。这是使用linux作为开发经常使用的方法。

设置目标板启动模式跳线 s2 为Nand Flash 启动,连接好电源,串口线,网线;打开串行终端minicom,在开机或者复位的时候先按下PC 机的空格键再启动开发板,这样我们就进入了supervivi 的命令行模式。

输入命令之前提醒下,现在在supervivi下是不能自动换行的,我们必须手动打开(其实这应该是minicom的选项功能,与supervivi无关)。

打开的方法是同时按住ctrl+a键,然后同时松开这两个键,接着再按W键,这时我们就把自动换行打开了,如果你不打开后面的命令你是输入不完那命令进去的,因为那命令挺长的。

Supervivi>param set linux_cmd_line "console=ttySAC0 root=/dev/nfs 
nfsroot=192.168.1.2:/opt/FriendlyARM/QQ2440/root_nfs
ip=192.168.1.230:192.168.1.2:192.168.1.2:255.255.255.0:fhc2007:eth0:off"

其中,param set linux_cmd_line 是设置启动 linux 时的命令参数。其各参数的含义如下:

nfsroot 指定了nfs共享文件的具体路径,也即是开发主机上的共享文件。
“ip=”后面:
   第一项(192.168.1.230)是目标板的临时 IP(注意不要和局域网内其他 IP 冲突);(其实大可不必担心,因为我的实践是网线直接连接主机和开发板的网卡接口)
   第二项(192.168.1.2)是开发主机的 IP;
   第三项(192.168.1.2)是目标板上网关(GW)的设置;(实际上也即是开发主机的 IP)
   第四项(255.255.255.0)是子网掩码;
   第五项是开发主机的名字(一般无关紧要,可随便填写)
   eth0 是网卡设备的名称。(对应开发板上的网卡设备名称,而并非开发主机上的网卡设备名称)

总结:

Supervivi>param set linux_cmd_line "console=ttySAC0 root=/dev/nfs 
nfsroot=主机IP:/opt/FriendlyARM/QQ2440/root_nfs
ip=开发板IP:主机IP:主机IP:开发板子网掩码:开发主机名称:eth0:off"

执行完这条命令后再继续执行

Supervivi>boot

如果一切顺利的话将会进入到开发板上去

进入到开发板后你就可以去mount你主机的共享目录了

我主机的共享目录是/opt/FriendlyARM/QQ2440/root_nfs,所以我在开发板上执行

[root@FriendlyARM /]#mount  -t  nfs  -o  nolock  192.168.1.2:/opt/FriendlyARM/QQ2440/root_nfs   /mnt

mount成功后你进入到/mnt目录下就可以看到你主机root_nfs目录下的内容了

阅读(1358) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~