测试环境:

        pc1——arm开发板——pc2,pc2作为nfs server,arm板作为nfs client,之间通过无线连接。然后在nfs server上创建一个32G的块文件用来安装操作系统。通过linux的mass storage.  gadget 使的arm板能作为pc1的一个usb盘访问。


测试步骤:

        1. 通过虚拟终端将nfs server上的e盘挂载到arm板上,命令:mount -t nfs -o nolock 192.168.1.100:/e  /home/nfsroot   前提:将无线网络配置好,后面会讲到配置无限网卡的时候出现的问题。

        2. 在/home/nfsroot目录下创建一个约32G块文件,命令:dd if=/dev/zero of=/home/nfsroot/system.img bs=10M count=3200

            然后用mdfs命令将其格式成ntfs格式:mkfs -t ntfs /home/nfsroot/system.img

           还有一种快速方式创建块文件的方法就是:将一个32G的u盘插入到linux系统,然后通过dd if=/dev/sdb1 of=/home/nfsroot/system.img 然后再格式化。

        3. 在arm板上加载g_mass_storage.ko 模块,命令:modprobe g_mass_storage file=/home/nfsroot/system.img   或 insmod g_mass_storage.ko file=/home/nfsroot/system.img

        4. 3完成后,在pc1上就可以看到一个接近32G的u盘了,其实就是pc2上 e:/system.img这个虚拟快文件。这时开始向这个“u盘”安装操作系统,用winpe或者wintousb都行。              g_mass_storage的写速度大概是1.7MB/s左右,所以写一个win8系统或者win7系统会花很长的时间,ubuntu和winpe会快很多。

        5. 安装操作系统完成之后就从“u盘”启动系统。会比直接在pc上插u盘启动操作系统要慢很多。


测试问题:

        1.主要问题是交叉编译网卡驱动,需要把linux-at91/ 的makefile做些修改,内核构建系统默认内核是本地编译,即编译的内核是运行在与宿主系统相同的体系架构上 。交叉编译的话,需要设置两个变量:ARCH和CROSS_COMPILE。其中:

ARCH指明目标体系架构,即编译好的内核运行在什么平台上,如x86、arm或mips等。

CROSS_COMPILE指定使用的交叉编译器的前缀。对于我们的交叉工具链来说,其前缀是arm-none-linux-gnueabi-。

有三种方式可以给这定义这两个变量:

a.可比如通过在环境变量中定义ARCH、CROSS_COMPILE;

b.每次执行make时,通过命名行为这两个变量的赋值:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-;

c.也可以直接更改顶层Makefile:

ARCH ?= $(SUBARCH) 改成ARCH ?= arm

CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) 改成CROSS_COMPILE ?= arm-none-linux-gnueabi-

2.http://blog.csdn.net/w616589292/article/details/48715333 上讲述的错误4,原因和解决方案上面介绍的很清楚。

3. 测试用的内核源码,以及交叉编译工具,还有虚拟机都放在了百度云盘中。


Logo

更多推荐