rt3070 ap驱动编译过程及排错总结

rt3070 ap驱动编译过程及排错总结

ID:17551916

大小:132.04 KB

页数:19页

时间:2018-09-03

rt3070 ap驱动编译过程及排错总结_第1页
rt3070 ap驱动编译过程及排错总结_第2页
rt3070 ap驱动编译过程及排错总结_第3页
rt3070 ap驱动编译过程及排错总结_第4页
rt3070 ap驱动编译过程及排错总结_第5页
资源描述:

《rt3070 ap驱动编译过程及排错总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、      Rt3070AP驱动编译过程及排错总结1、  将ap的tar包解压到某目录下2、  按照ap驱动解压目录下的INSTALL和README里的步骤,修改makefile中的kernelsource目录路径及编译工具。一般在X86架构的系统上,不需要修改编译工具,默认为gcc。3、  如果系统上没有kernelsource,需要下载和系统内核版本一致的内核源代码,解压,然后确定kernelsource目录,否则编译会报错4、  Make5、  Make完毕后驱动源码下的三个目录下会有三个ko结尾的驱

2、动,拷贝出来按照load.6脚本里顺序insmod即可成功。6、  网卡配置,修改/etc/Wireless/RT2870AP/下面的RT2870AP.dat文件(这个文件及目录原本是不存在的,需要自己创建目录,从驱动源码目录下将文件拷贝过去),里面的各个项可以通过看名称确定意义。或者查看驱动源码目录下的说明。7、  网卡驱动编译排错:问题1、刚装完系统,检查完驱动的makefile基本配置之后,确认内核目录、编译工具正确,进行make。报错:rtmp_main.c:error:codemodel"kernel

3、"notsupportedinthe32bitmode      rtmp_main.c:sorry.unimplemented:64-bitmodenotcompiledin是因为刚装完fedora15,内核目录/lib/modules/$(shelluname-r)/build下的.config文件中的选项没有载入到makemenuconfig中,或者说是makemenuconfig之后,exit前,没有save。到/lib/modules/$(shelluname-r)/build下makemenucon

4、fig一下,exit之后选择save。问题即可排除。 问题2、报错implicitdeclarationoffunction'XXX'某函数的隐式声明。其实就是没有找到这个函数的声明、定义。这种报错一般出现在内核版本比较新,驱动版本比较旧,一些老的函数在新内核头文件中,已经改用别的名字。比如init_MUTEX()改名为sema_init(sem,1)init_MUTEX_LOCKED改名为sema_init(sem,0),还有比较常见的是usb_buffer_free和usb_buffer_alloc它们分别

5、被更名为usb_free_coherent和usb_alloc_coherent,参数没有变。可以通过报错的文件、行数找到这些函数,改成现在的名字,错误即可排除。 问题3、驱动编译完成,加载时,提示invalidmodule,用dmesg

6、tail命令查看后,发现是versionmagic报错。这个问题的原因一般是使用的内核版本与目前计算机上跑的内核版本不一致,在移植到嵌入式系统上的时候常出现。查证AP驱动的makefile里内核目录变量指向的是当前PC机所用内核目录。/lib/modules/`uname-r

7、`/build这一步没有错。那么说明驱动的makefile是正确的切换到/lib/modules/`uname-r`/目录下,查看build(build在此处是一个符号链接),ls-al发现build指向的目录是/usr/src/kernels/2.6.35.14-96.fc14.i686,问题在这里,虽然我用的目录是/lib/modules/`uname-r`/build这个目录貌似与我当前内核版本(uname-r即2.6.35.6-45.fc14.i686)一致,但是build这个符号链接指向的内核源码却是

8、2.6.35.14-96.fc14.i686的,这样造成了编译出来的模块所带的versionmagic是2.6.35.14-96.fc14.i686这一版本,加载时与uname-r不符。 那么要解决这一问题,就需要修改一下内核源码里的versionmagic。驱动模块的versionmagic信息是怎么生成的:2.6内核下,在linux/vermagic.h中定义有VERMAGIC_STRING,VERMAGIC_STRING不仅包含内核版本号,还包含有内核使用的gcc版本,SMP与PREEMPT等配置信息。模

9、块在编译时,我们可以看到屏幕上会显示"MODPOST"。在此阶段,VERMAGIC_STRING会添加到模块的modinfo段。在内核源码目录下scriptsmodmodpost.c文件中可以看到模块后续处理部分的代码。模块编译生成后,通过`modinfomymodule.ko`命令可以查看此模块的vermagic等信息。2.6内核下的模块装载器里保存有内核的版本信息,在装载模块时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。