网站大量收购独家精品文档,联系QQ:2885784924

Rt3070 AP驱动编译过程及排错总结.docxVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、??????Rt3070 AP驱动编译过程及排错总结1、??将ap的tar包解压到某目录下2、??按照ap驱动解压目录下的INSTALL和README里的步骤,修改makefile中的kernel source目录路径及编译工具。一般在X86架构的系统上,不需要修改编译工具,默认为gcc。3、??如果系统上没有kernel source,需要下载和系统内核版本一致的内核源代码,解压,然后确定kernel source目录,否则编译会报错4、??Make5、??Make完毕后驱动源码下的三个目录下会有三个ko结尾的驱动,拷贝出来按照load.6脚本里顺序insmod即可成功。6、??网卡配置,修改/etc/Wireless/RT2870AP/下面的RT2870AP.dat文件(这个文件及目录原本是不存在的,需要自己创建目录,从驱动源码目录下将文件拷贝过去),里面的各个项可以通过看名称确定意义。或者查看驱动源码目录下的说明。7、??网卡驱动编译排错:问题1、刚装完系统,检查完驱动的makefile基本配置之后,确认内核目录、编译工具正确,进行make。报错:rtmp_main.c : error : code model kernel not supported in the 32 bit mode??????rtmp_main.c :sorry.unimplemented : 64-bit mode not compiled in是因为刚装完fedora15,内核目录/lib/modules/$(shell uname -r)/build下的.config文件中的选项没有载入到make menuconfig中,或者说是make menuconfig之后,exit前,没有save。到/lib/modules/$(shell uname -r)/build下make menuconfig一下,exit之后选择save。问题即可排除。?问题2、报错implicit declaration of function XXX某函数的隐式声明。其实就是没有找到这个函数的声明、定义。这种报错一般出现在内核版本比较新,驱动版本比较旧,一些老的函数在新内核头文件中,已经改用别的名字。比如init_MUTEX()改名为sema_init(sem,1) init_MUTEX_LOCKED改名为sema_init(sem,0),还有比较常见的是usb_buffer_free和usb_buffer_alloc它们分别被更名为usb_free_coherent和usb_alloc_coherent,参数没有变。可以通过报错的文件、行数找到这些函数,改成现在的名字,错误即可排除。?问题3、驱动编译完成,加载时,提示invalid module,用dmesg|tail命令查看后,发现是version magic报错。这个问题的原因一般是使用的内核版本与目前计算机上跑的内核版本不一致,在移植到嵌入式系统上的时候常出现。查证AP驱动的makefile里内核目录变量指向的是当前PC机所用内核目录。/lib/modules/`uname -r`/build这一步没有错。那么说明驱动的makefile是正确的切换到/lib/modules/`uname -r`/目录下,查看build(build在此处是一个符号链接),ls -al 发现build指向的目录是/usr/src/kernels/4-96.fc14.i686,问题在这里,虽然我用的目录是/lib/modules/`uname -r`/build 这个目录貌似与我当前内核版本(uname -r 即-45.fc14.i686)一致,但是build这个符号链接指向的内核源码却是4-96.fc14.i686的,这样造成了编译出来的模块所带的version magic是4-96.fc14.i686这一版本,加载时与uname -r不符。?那么要解决这一问题,就需要修改一下内核源码里的version magic 。驱动模块的version magic信息是怎么生成的:2.6 内核下,在linux/vermagic.h中定义有VERMAGIC_STRING,VERMAGIC_STRING不仅包含内核版本号,还包含有内核使用的gcc版本,SMP与PREEMPT等配置信息。模块在编译时,我们可以看到屏幕上会显示MODPOST。在此阶段, VERMAGIC_STRING会添加到模块的modinfo段。在内核源码目录下scripts\mod\modpost.c文件中可以看到模块后续处理部分的代码。模块编译生成后,通过`modinfomymodule.ko`命令可以查看此模块的vermagic等信息。2.6 内核下的模块装载器里保

文档评论(0)

taotao0c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档