最近忙着做毕业设计,做到系统底层软件平台构建这一步,也就是移植uboot、linux内核和根文件系统,目标平台是S3C2410。
经过一步步的移植,最后都移植成功了,烧到板子上能够正常启动,但是经过我得测试后发现一个问题,无法加载驱动模块。(红色字体表示很严重!)这个问题严重,无论怎么insmod或者modprobe发现都不行,刚开是提示“chdir(modules) No such file...”错误,无法加载,经过查询资料发现是内核模块在插入卸载时都会要转到/lib/modules/内核版本号/
这个目录里。而我得文件系统里没有这个目录,所以又重启制作下文件系统添加这个目录。再次下载到开发板上,运行模块加载命令,发现还是错误提示是没有这个文件“No such file..”,怎么会没有这个文件哪?明明就在当前目录下,这个郁闷坏了。然后千方百计的找资料实验很多方法,发现都不行。最后无奈之下就换了一个busybox的版本,从之前的busybox1.12.2换成busybox1.9.2,然后再次配置编译,配置如下:
Busybox Setting----->
build option-->
[ ] Build BusyBox as a static binary (no shared libs)
[*] Build shared libbusybox
[*] Produce a binary for each applet, linked against libbusybox
[*] Produce additional busybox binary linked against libbusybox
[ ] Build with Large File Support (for accessing files > 2 GB)
installation option-->
[*] Don't use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library Tuning --->
MD5: Trade Bytes for Speed
[*] Faster /proc scanning code (+100 bytes)
[*] Support for /etc/networks
[*] Support for /etc/networks
[*] Additional editing keys
[*] vi-style line editing commands
[*] History saving
[*] Tab completion
[*] Username completion
[*] Fancy shell prompts
Linux Module Utilities --->
[*] Support version 2.6.x Linux kernels
[*] insmod
[*] Enable load map (-m) option
[*] Symbols in load map
[*] rmmod
[*] lsmod
[*] lsmod pretty output for 2.6.x Linux kernels
[*] modprobe
[ ] Multiple options parsing
[ ] Fancy alias parsing
--- Options common to multiple modutils
[ ] Support tainted module checking with new kernels
[ ] Support version 2.2.x to 2.4.x Linux kernels
[*] Support version 2.6.x Linux kernels
(红色字体表示关键地方)
其他的用默认值
我想无法加载驱动模块的问题就出在红色的配置选项地方,难道是busybox1.12.2版本有bug?这个目前还不是很清楚,希望知道的大牛们给一个解答(回复)!
配置完成后make一下出现一串错误,好像是什么applets/applets.c 21:2 error #Abort error,无奈,根据提示找到这个文件的第21行将其注释掉,重新make,通过!然后make install完成,重新制作文件系统。制作完成之后下载到板子上一切正常,再次加载驱动模块OK,[root@ /mnt/yaffs]# insmod s3c2410-dc-motor.ko
s3c2410-dc-motor device initialized,加载成功!
另外发现一个问题,s3c2410平台上的dm9000网卡只能配置成功一次,第二次启动配置的时候就会出现:ifconfig: SIOCSIFFLAGS: Invalid argument
目前只有一个非常笨得方法可以用:在启动的时候停留在uboot,然后使用tftp下载一个文件到内存,然后再reset,就会再次配置成功网卡,否则无法正常网卡,好想现在就不正常!