Chinaunix首页 | 论坛 | 博客
  • 博客访问: 301570
  • 博文数量: 71
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 734
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-20 17:17
文章分类

全部博文(71)

文章存档

2011年(1)

2009年(70)

我的朋友

分类: LINUX

2009-05-22 15:05:41

目前sourceforge网站上提供了Linux 2.6.18版本内核的,使用此补丁后可以编译出供Atheros SDIO wifi v1.0模块使用的驱动。

 

首先选择工作目录(例如当前用户的个人目录/home/~),此后的操作都在此目录下进行。下面以Samsung S3C2410平台为例介绍驱动编译过程,使用的交叉编译工具为arm-linux-gcc v3.4.6。

 

1. 下载内核压缩包并解压。

   tar zxvf linux-2.6.18.tar.gz

 

2. 下载sdiostack驱动并解压至内核源码目录,补丁包含5个patch文件和1个series文件,按照series文件中的顺序依次打补丁。

   tar zxvf sdio-linux-2.6.18.tar.gz -C linux-2.6.18/

   cd linux-2.6.18/

   patch -p1 < common_atheros_sdiostack.patch

   patch -p1 < common_atheros_sdiostack_shcd.patch

   patch -p1 < common_atheros_sdiostack_functions.patch

   patch -p1 < common_atheros_sdiostack_sample_fd.patch

   patch -p1 < common_atheros_sdiostack_benchmark.patch

   patch -p1 < common_atheros_sdiostack_ar6000_wlan.patch

 

3. 可以从配置路径拷贝s3c2410配置模板后再对其修改。

   cp arch/arm/configs/s3c2410_defconfig .config

   需要开启Device Drivers-->Plug and Play support-->Plug and Play support选项支持PnP。

   需要开启Device Drivers-->Network device support-->Wireless LAN (non-hamradio)--> Wireless LAN drivers (non-hamradio) & Wireless Extensions选项,否则无法找到wireless_send_event函数定义。

   make menuconfig

 

4. drivers/pnp/resource.c中的request_dma和free_dma函数需要删除,不然在稍后的编译中会造成缺少定义的错误(我 始终未能让resource.c成功的找到这两个相关的dma函数实现,最后只能注释掉了,如果有了解的朋友,希望能告诉我正确的做法)。然后开始内核编 译操作。

   make

 

5. 最后在drivers/sdio/对应目录下生成驱动各个模块。sdiostack补丁中只提供了很少几种平台的hcd模块代码,如果缺少对应目标平台的代码,还需要自己移植。以下4个模块为必须的最小配置。

   lib/sdio_lib.ko

   busdriver/sdio_busdriver.ko

   function/wlan/ar6000/ar6000.ko

   hcd/s3c2412/sdio_s3c2410_hcd.ko

 

注意:编译sdiostack驱动时使用的内核版本需要和目标平台上的内核版本一致,如果 不是2.6.18版本的内核,在打补丁过程中可能会有提示信息,可以根据提示信息手工修改。不同平台的内核配置选项也会有所不同,可能需要对配置做少许调 整。一般来说,补丁中包含的hcd模块代码不能满足需要,所以要想最终能使用SDIO WIFI网卡,最困难的地方在于如何获取缺少的这一部分的代码。MontaVista也提供了一个,我没有用过这个补丁,但是其中包含的sdiostack文档是很好的资料。如果希望使用Atheros SDIO wifi v2.0,可以看看。下一步,我将尝试编译wifi v2.0的驱动。

阅读(2100) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-11 16:35:56

讲的很好