嵌入式linux交叉环境搭建(在开发板mini2440下搭建的)

      通过自己这几天的摸索终于把linux交叉开发环境搭建好了,现在总结一下自己做的工作。

      在嵌入式开发的过程中,PC应用开发是直接在pc上进行的,但是嵌入式linux应用开发则必须依靠宿主机才能进行。所以,在宿主机上搭建针对某种目标机的应用开发环境是进行嵌入式linux应用开发的第一步。我是在windows XP的平台上来做的,利用虚拟机中的linux来搭建所需要的开发平台。
      在嵌入式开发领域广泛的使用NFS(Network Filesystem)来开发文件系统中的应用程序。NFS最初是由Sun公司提出的,NFS使得开发板可以通过网络远程挂载宿主机中的文
件系统。从开发板的角度来看,访问宿主机中的文件系统就相当于在访问本地的文件系统。这样在宿主机上做了程序修改,就能马上在开发板上看到修改的运行结果,应用程序的调试效率得到了极大地提高。


一、在虚拟机下安装Fedora9,并设置其IP地址为:202.38.214.179,并设置相应的子网掩码和网关。


二、在pc上实现数据交互的常用接口有串口、并口、网络接口、USB接口等,在这里我们采用串口来实现交互,在mini2440开发板中提供了一个9针的串口。虚拟机设置串口,在本

实验中,由于宿主机的硬件平台是有虚拟机模拟的,所欲需要在虚拟机中实现对串口的模拟,如下:
     1) 打开虚拟机的配置界面,单击"Add"按钮。
     2) 在弹出的窗口中选择需要安装的"Serial Port"选项,如图1所示:


     3) 选择串口类型"使用位于主机上的物理串行端口(P)".
     4) 单击"完成"按钮完成串口的创建.


三、Minicom的使用:在我们用windows开发板进行连接通行的时候,是采用"超级终端"。在linux系统中,常用的串口通信软件是Minicom。由于嵌入式linux应用开发是在linux平

台上进行的。所以我们要采用minicom串口通信。
      启动Minicom [root#lcoalhost]#minicom -s
      启动后minicom会自动读取默认的配置文件,由于Minicom默认的部分配置不符合实际环境的要求,所以需要进行修改,修改过程如下:
 1) 启动minicom如图2所示:

嵌入式linux交叉环境搭建(在开发板mini2440下搭建的)_第1张图片
 2) 选中"Serial port setup"选项对串口参数进行配置,配置界面如图3所示:

嵌入式linux交叉环境搭建(在开发板mini2440下搭建的)_第2张图片
 从上面我们可以看到minicom采用的设备是ttyS5,在linux中/dev/目录下的ttyS0、ttyS1、ttyS2、ttyS3是对应与串口COM1、COM2、COM3、COM4的,由于在本人的实验在

开始设置的过程中的一些原因,在winodws下采用COM6端口的终端,所以这时候在linux得得到新的串口设备ttyS5,我是通过语句:
 mknod -m 666 /dev/ttyS0 c 4 64
 得到COM6对应的ttyS5串口的。最后退出Minicom设置界面。
四、设置宿主机上的NFS。
 启动NFS: [root#lcoalhost]#/etc/init.d/nfs start
 启动rpcbind: [root#lcoalhost]#/etc/init.d/rpcbind start
 关闭防火墙: [root#lcoalhost]#/etc/init.d/iptables stop
 设置共享目录 [root#lcoalhost]#vim /etc/exports
 在编辑nfs服务的配置文件(注意:第一次打开的时候是空的,在exports文件中添加)
 /opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
 其中:/opt/FriendlyARM/mini2440/root_qtopia 表示nfs共享目录,它可以作为开发板的根
文件系统通过nfs挂接;
 * 表示所有的客户机都可以挂接此目录
 rw 表示挂接此目录的客户机对该目录有读写的权力
 sync 所有数据在请求时写入共享
 no_root_squash 表示允许挂接此目录的客户机享有该主机的root 身份  
   测试nfs是否成功,可以输入以下命令检验:
 [root#lcoalhost]#mount -t nfs localhost:/opt/FriendlyARM/mini2440/root_qtopia /mnt/
   运行后在到目录/mnt/下查看发现和目录/opt/FriendlyARM/mini2440/root_qtopia下的内容一样,这样nfs就可以了。
五、通过nfs挂载文件系统:启动mini2440开发板,并设置目标板启动模式为 Nand Flash 启动,在windows的超级终端下我们看到了vivi菜单界面,选择q进入Goto shell of vivi

,并写入以下内容:

[c-sharp]  view plain copy
  1.  Supervivi> param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=202.3  
  2. 8.214.179:/opt/FriendlyARM/mini2440/root_qtopia ip=202.38.214.189:202.38.214.179  
  3. :202.38.214.254:255.255.255.0:mini2440:eth0:off"  

 其中param set linux_cmd_line是设置启动 linux 时的命令参数。其各参数的含义如下:
 root=/dev/nfs 告诉内核使用NFS挂载根文件系统。
 nfsroot 是自己开发主机的IP 地址。
 “ip=”后面:
 第一项(202.38.214.189)是目标板的临时IP(注意不要和局域网内其他IP 冲突);
 第二项(202.38.214.179)是开发主机的IP;
 第三项(202.38.214.254)是目标板上网关(GW)的设置;
 第四项(255.255.255.0)是子网掩码;
 第五项是开发主机的名字(一般无关紧要,可随便填写)
 eth0 是网卡设备的名称。
 要注意的是,宿主机的IP地址、网关和子网掩码必须和所设的参数值保持一致。内核启动时,会自动挂载NFS服务器共享的目录。如下所示:
 

[c-sharp]  view plain copy
  1. eth0: link down  
  2.  IP-Config: Complete:  
  3.        device=eth0, addr=202.38.214.189, mask=255.255.255.0, gw=202.38.214.254,  
  4.        host=mini2440, domain=, nis-domain=(none),  
  5.        bootserver=202.38.214.179, rootserver=202.38.214.179, rootpath=  
  6.  Looking up port of RPC 100003/2 on 202.38.214.179  
  7.  eth0: link up, 100Mbps, full-duplex, lpa 0x45E1  
  8.  Looking up port of RPC 100005/1 on 202.38.214.179  
  9.  VFS: Mounted root (nfs filesystem) on device 0:11.  
  10.  Freeing init memory: 160K  
  11.  [10/Sep/2008:03:06:06 +0000] boa: server version Boa/0.94.13  
  12.  [10/Sep/2008:03:06:06 +0000] boa: server built Mar 26 2009 at 15:28:42.  
  13.  [10/Sep/2008:03:06:06 +0000] boa: starting server pid=699, port 80  
  14.   
  15.  Try to bring eth0 interface up......NFS root ...Done  
  16.   
  17.  Please press Enter to activate this console.  

六、挂载了NFS文件系统,就可以在宿主机上进行嵌入式应用程序的开发了。
 比如我们在宿主机上的root_qtopia目录下写一个helloword的c语言程序,通过arm-linux-gcc -o test test.c的编译成为在arm上可运行的可执行文件。


原文出至:http://blog.csdn.net/xiaxiazls/article/details/5819329

你可能感兴趣的:(嵌入式linux交叉环境搭建(在开发板mini2440下搭建的))