学习老大驱动教程,不用NFS挂接文件系统,会不方便做测试。当然samba和ftp也行,但这里可以从NFS启动。
一,由于我用的并不100ask的标准JZ2440开发板(这是历史原因,不然也得慕名而来慕名购取),所以曾经遇到过的错误:
“NETDEV WATCHDOG: eth0: transmit timed out”
错误(网卡已工作了),
这并不是NETDEV WATCHDOG的问题,把它关闭时,关后网卡就不能工作了。找到了自已原来开发板的内核移植手册,发现
里面移植DM9000时中断号和老大的DM9000的平台设备定义中的不一样,所以修改了老大提供的内核中的代码,更改如下。重新编译固件后就
可以了。
linux/arch/
ARM/plat-s3c24xx/common-smdk.c。在其中DM9000平台设备结构中修改了中断引脚。
1,调整中断号:
参照原开发板的驱动:
上面的宏“S3C2410_CS4”的值,有的是其他值,而我这里是“0x20000000”,
这是DM9000基地址设置。一般都是设置成片选CS4 的基地址0x20000000。
若这个基地址设置不正确,则网卡无法工作。
二,设置 NFS 挂载:
1,配置“NFS”服务端:vim /etc/exports
*号和后面的()间不能有空格。如只是指定一个IP地址来挂接,则若:
Work/s3c2440/nfs_romfs 172.16.1.111(rw,sync,no_root_squash)
Ip与后面的参数没有空格。
上面只定义了一个可以被挂接的NFS目录。这里可以写多个目录。
2,单板上的挂接:
这里可能会遇到下面一个问题:
在单板上通过NFS复制PC机上较大文件到目标板上的时候遇到的问题:
nfs: server *** not responding, still trying
NFS是用UDP传输的,不可靠,若是改成 TCP 传输可以避免此问题。但
下面可以通过修改读写BUF的大小。
修改方法:
nfs mount时候出现的NFS崩溃,按照以下的方式mount。
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024
这样,在PC端写的ARM架构程序可以拿到单板上运行了,但这不是从 NFS 文件系统启动的,
所以需要配置UBOOT启动参数,来改变文件系统的挂载。
三,配置UBOOT内核启动方式:(简单描述)
1,启动参数修改:
noinitrd root=/dev/nfs
nfsroot=172.16.1.11:/work/nfs_root/romfs 服务器IP和要被挂载的NFS目录。
ip=172.16.1.100:172.16.1.11:172.16.1.11:255.255.255.0::eth0:off
上面分别是“单板IP”,“服务器IP”,“网关”,“子网掩码”,“hostname”不关心不
用写。“device”,如eth0等(这是单板上的设备名)。最后的“off”是指“atuoconf”不需要。
init=/linuxrc
init脚本是NFS系统上的 linuxrc .
console=ttySAC0
串口终端是“ttySAC0”.
3,内核成功挂载 NFS 文件系统: