在嵌入式linux系统中,编译的环境和运行的环境不一样,所以我们需要交叉编译工具,一般是在PC上面运行交叉编译工具编译好程序,然后再烧写到目标板的flash上,对于应用程序,我们需要频繁的调试,如果每次都需要烧写,那一定是一件很烦的事情,本文讲述的就是如何避开这个问题,通过NFS文件系统来调试程序的方法。

  准备工作:

  一台装有REDHAT9.0的PC机,一套YFDVK2410开发板,PC机上装有YFDVK2410的软件包,假如我们通过NFS要加载的文件系统为/YF2410/root_dir/root_china,PC机IP:192.168.1.102,开发板IP:192.168.1.134

  YFDVK2410开发板设置:

  我们需要重新配置编译内核,开启开发板NFS文件系统功能,具体步骤如下:

  1、 修改kernel/arch/arm/def-configs/smdk2410配置文件

  把CONFIG_CMDLINE="root=/dev/mtdblock2 noinitrd init=/linuxrc console=ttyS0"这一行改为CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=192.168.1.102:/YF2410/root_dir/root_china noinitrd init=linuxrc console=ttys0 ip=192.168.1.134"

  2、 运行make menuconfig进入配置菜单,装载配置文件SMDK2410

  选中networking options-》IP:kernel level auloconfiguralion项

  选中file systems-》network file systems-》下的root file system on nfs和nfs file system support

  重新编译内核

  下载bootloader和kernel到开发板上,至此,开发板设置已经完成。

  PC机设置:

  我们必须开启PC机的NFS服务,具体设置如下:

  1、 在LINUX命令符下运行setup,在system services里面选中nfs服务,然后保存退出。

  2、 执行vi /etc/exports,在里面添加一行:/YF2410/root_dir/root_china (rw),然后保存退出,/和rw要有空格(/YF2410/root_dir/root_china为共享目录,rw为读写权限)。

  3、 执行/etc/rc.d/init.d/nfs restart重启nfs服务。

  4、 为了不必每次开机都要启动nfs服务,我们把/etc/rc.d/init.d/nfs restart 添加到/etc/rc.d/rc.local中,以后PC启动的时候就会执行此文件开启nfs服务。

  5、 测试NFS服务:设置完成后可以在本机上进行测试,如果本机IP为192.168.1.102,则可以用mount 192.168.1.102:/YF2410/root_dir/root_china /mnt,如果mount成功,则在/mnt的目录就可以看到root_china下面的东西了。

  6、 修改root_china/usr/etc/rc.local文件,设置开发板IP地址为192.168.1.134

  至此,开发板和PC机的设置都已经基本完成,假如我们在PC机上调试好的应用程序已经放到/root_china这个嵌入式的文件系统下面,我们则可以用网络连接好开发板和PC机,开发板上电,系统开始运行并且通过运行nfs网络文件系统就可以进入熟悉的linux界面了。

  以后调试程序只需要把编译好的程序放到root_china的目录下面就可以了,开发板不再需要烧写。