编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。
环境的搭建:
一、开发板使用TQ2440
这个没什么好说,去购买一块开发板即可。
二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高)
linux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin
三、搭建uboot环境参数
烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:
1.前提已经将uboot、zImage烧写到NAND FLASH
2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
a. 在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数
b.选择1,设置为NFS启动方式,具体参考如下图所示
c.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。
d.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数
发现启动参数为:
bootargs: console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.123:/usr/src/root_2.6.30.4 ip=192.168.1.110:192.168.1.123:192.168.1.110:255.255.255.0:SKY2440.embedsky.net:eth0:off
并测试开发板能够与linux服务器进行网络通信。
ping测试注意事项:
1.确保linux服务器能与windows之间互ping通
2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。
IP地址设置的注意事项:
如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置?
EmbedSky> set ipaddr 192.168.1.110
EmbedSky> set serverip 192.168.1.123
EmbedSky> save
四、linux服务器的环境搭建
1.设置NFS文件系统共享目录
在/etc/exports文件里添加如下内如:
/usr/src/root_2.6.30.4 *(rw,sync,no_root_squash)
2.开启NFS服务器
/etc/init.d/nfs restart
正常的启动界面如下:
五、解决error
BUG1:
IP-Config: Complete:
device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,
host=SKY2440, domain=, nis-domain=embedsky.net,
bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=
Looking up port of RPC 100003/2 on 192.168.1.123
如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:
1.开发板的网络有问题,开发板不能与linux服务器互ping通
2.linux服务器没有开启NFS服务器
3.NFS文件系统的共享路径有误
4.防火墙没有关闭
BUG2:
能够启动文件系统,但是30s后,linux又自动重启?
原因(很明显是看门狗的原因):
因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS
在etc/init.d s/rcS中添加一句:
EmbedSky_wdg &
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。