WiFi驱动移植到Linux_第1页
WiFi驱动移植到Linux_第2页
WiFi驱动移植到Linux_第3页
WiFi驱动移植到Linux_第4页
WiFi驱动移植到Linux_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、linux下移植之WIFI驱动2010-05-14 22:27L前言硬件平台:imx27+sd8686软件平台:linux内核:2.6.27移植思想WIFI模块本身和cpu之间的接口;我们的模块和cpu之间的接口是sdio的,也就是说必须要先保证 SDIO本身是工作的,与SD卡,MMC属于同类型。主要用到这几个GPIO引 脚 SD0.SD3,SD2_CMD,SD2_CLK,以及复位引脚 PB24.WIFI模块本身的上电时序;模块都有它自己的规律,所以必须要根据spec 了解它本身的上电 过程,严格遵守;以太网接口的创建;我们的WIFI模块本身是建立在SDIO 口之上的,而对上都是提供 以太网接

2、口的,所以必须要保证这个接口以及创建;4,特殊处理;不同的模块都有它特别的地方,比如我们用的是8686和compo也就是 说它和蓝牙共用天线,所以需要在初始化的时候做特殊的处理,发送特殊的命令, 才能工作;移植过程1, sdio本身是通过gpio 口模拟的,所以需要对gpio 口进行配置static mfp_cfg_t littleton_mmc3_pins = (GPIO7_2_MMC3_DAT0,GPIO8_2_MMC3_DAT1,GPIO9_2_MMC3_DAT2,GPIO10_2_MMC3_DAT3,GPIO103_MMC3_CLK,GPIO105_MMC3_CMD,;2, wifi模

3、块本身的初始化#define MFP_WIFI_V18_ENABLE#define MFP_WLAN_RESETN#define WIFI_WAKEUP_HOSTchanged*/#define WLAN_ENABLE_PIN#define WLAN_RESET_PIN#define M200_B#ifdef M200_B#define BT_RESET_PIN#define BT_RESET_GPIO#else#define BT_RESET_GPIO#define BT_RESET_PIN#endifstatic mfp_cfg_t lin2008_wifibtMFP_WIFI_V18_E

4、NABLE,(GPIO26_GPIO)(GPIO99_GPIO)(GPIO104_GPIO) /*error must be2699EXT1_GPIO(1)(GPIO1_2_GPIO)(GPIO6_2_GPIO)EXT1_GPIO(6)pins口 = (MFP_WLAN_RESETN,WIFI_WAKEUP_HOST,/*wakeup host*/;static mfp_cfg_t lin2008_wifibt_pins2口 = (MFP_WIFI_V18_ENABLE,;static int wifibt_power_status;int lin2008_poweron_wifibt_boa

5、rd(void)(if (!wifibt_power_status) (mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins) ;gpio_direction_output(WLAN_ENABLE_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);gpio_direction_output(BT_RESET_PIN,1);mdelay(10);gpio_direction_output(BT_RESET_PIN, 0);gpio_direction_output(WLAN_RESET_PIN, 0);

6、/ bt need 5 ms to resetmdelay(5);gpio_direction_output(BT_RESET_PIN, 1);gpio_direction_output(WLAN_RESET_PIN, 1);wifibt_power_status+;return 0;wifibt_power_status+;return 1;int lin2008_poweroff_wifibt_board(void)(wifibt_power_status-;if (!wifibt_power_status) (mxc_mfp_config(ARRAY_AND_SIZE(lin2008_w

7、ifibt_pins2) );gpio_direction_output(WLAN_ENABLE_PIN, 0);return 0;return 1;3,以太网接口的创建这里在android平台上要做特殊的处理,也就是firmware的位置 要放好,否则加载firmware始终不成功,那么以太网接口就不会被创建了; 需要把 helper_sd.bin 放在 /lib/firmware/mrvl 下面(若没有, 则创建一个);把 sd8686.bin 放在 /lib/firmware/mrvl 下面(同上);4,特殊的处理对于8686模块需要做特殊的处理,在注册完以太网接口以后,需要添加下面这段

8、话:( TOC o 1-5 h z #define BCA_CFG_NUM_OF_MODES4#define BCA_CFG_SINGLE_ANT_WITH_COEX0#define BCA_CFG_DUAL_ANT_WITH_COEX1#define BCA_CFG_SINGLE_ANT_FOR_BT_ONLY2#define BCA_CFG_MRVL_DEFAULT3#define BCA_CONFIG BCA_CFG_SINGLE_ANT_WITH_COEXstatic u32 BCACfgTblBCA_CFG_NUM_OF_MODES3 = (/0 xA5F0,0 xA58C, 0 x

9、A5A0( 0 xa027181c, 0 x40214, 0 xd24d), /Mode 0: Single ANT with COEX enable( 0 xa027181c, 0 x40211, 0 xd24d), /Mode 1: Dual ANT with COEX enable( 0 xa027181c, 0 x40222, 0 xd21c), /Mode 2: single ANT for BT only( 0 xa027801d, 0 x18000, 0 xd21c), /Mode 3: Marvell default;wlan_offset_value RegBuffer;Re

10、gBuffer.offset = (0 xA5F0);RegBuffer.value = BCACfgTblBCA_CONFIG0;wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset =(0 xA58C);RegBuffer.value = BCACfgTblBCA_CONFIG1;wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_A

11、CT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);RegBuffer.offset = (0 xA5A0);RegBuffer.value = BCACfgTblBCA_CONFIG2;wlan_prepare_cmd(priv,HostCmd_CMD_MAC_REG_ACCESS,HostCmd_ACT_GEN_SET,HostCmd_OPTION_WAITFORRSP,0,&RegBuffer);基本上这样就可以工作了;其它问题Sdio 口默认是用的3.2V这里需要修改相关的地方强制设成是1.8V,否则SDIO接口将无法工作;Linux平

12、台上需要移植一些上层软件才能验证,比如 iwconfig, iwlist 等。测试步骤:ifconfig eth0 upiwlist eth0 scanning如果能扫描到AP那么证明基本已经OK 了;iwconfig eth0iwlist eth0 freq可以查看设备的相关信息,查看各项是否正常。现在,就可以ping通IP地址了;常见问题1, WIFI驱动注册sdio驱动的时候出错,也就是probe函数未被调用?需要检查sdio设备本身是否被检测到,内核是通过发送特定的命 令来检测是sdio是SD卡还是mmc的,在mmc_rescan函数里面可以看到sdio设备的加载过程,有可能 就是你的

13、电压设置不对;2,以太网接口一直出不来或者说firmware加载失败?这里需要确保firmware是否正确被加载,很可能是它找不到对应 的firmware,可以通过添加打印信息看看,它的路径到底是在什么地方, 对于wifi来说helper_sd.bin需要放在/lib/firmware/下面,而 sd8686.bin 需要放在 /lib/firmware/mrvl 下面;3, 一切正常,但是调用iwlist eth0 scanning的时候,扫描不到任何结 果,出现 NO scan results?这时候需要做特殊的处理,比如共存代码的设置,是否正常等,通 常可以判断有没有中断上来,以此区分到

14、底是模块和cpu的连接问题还是 模块本身的设置问题;4,工作一段时间后不正常这个有可能是蓝牙模块需要进行初始化,因为它们是共用天线,有 时候不起蓝牙模块对应的40M时钟就不起来;本人参照: HYPERLINK /u2/67984/showart_2113942.html /u2/67984/showart 2113942.html 此博客而移植成功的。在此感谢wylhistory !linux - 嵌入式linux 下 wifi无线网卡驱动插入模块驱动rootWEIYAN wifi$ insmod zd1211rw.kousb 1-1: reset full speed USB device

15、using s3c2410-ohci and address 3zd1211rw 1-1:1.0: phy2usbcore: registered new interface driver zd1211rw打开无线网卡rootWEIYAN wifi$ ifconfig wlan0 upzd1211rw 1-1:1.0: firmware version 4725zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-1d-0f UW2453_RF pa0 -7-扫描频道rootWEIYAN wifi$ ./wftools/iwlist wl

16、an0 scanningwlan0 Scan completed :Cell 01 - Address: 00:0E:4E:81:02:4DESSID:WEIYANMode:MasterChannel:6Frequency:2.437 GHz (Channel 6)Quality=11/100 Signal level=62/100Encryption key:offBit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/sExtra:tsf=00000000004c3c37设置essid和无线网卡ip地址,并关闭原来的dm9000rootWEIYAN wifi$

17、./wftools/iwconfig wlan0 essid WEIYANrootWEIYAN wifi$ ./wftools/iwconfig wlan0 00rootWEIYAN wifi$ ifconfig eth0 down测试与路由的连通性rootWEIYAN wifi$ ping 54PING 54 (54): 56 data bytes64 bytes from 54: seq=0 ttl = 255 time=10.997 ms64 bytes from 54: seq = 1 ttl = 255 time=4.399 ms64 bytes from 54: seq = 2 t

18、tl = 255 time=3.915 ms 通过无线网卡的nfs挂载测试rootWEIYAN wifi$ mount -t nfs -o nolock 08:/new_disk/tftp/ /mntrootWEIYAN wifi$ ls /mntg_file_storage.ko mplayer gspca.ko led_drv.ko madplaytslib.tar.gz mplayer_no_v4l u-boot.bin rootfs.jffs2 uImage rootfs.yaffs2mp3mpgwav abxtest通过无线网卡播放mp3rootWEIYAN wifi$ /opt/madplay /mnt/1.mp3MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.UDA1341:audio_set_dsp_speed:44100 prescaler:99Title: 05.Forever Love192kArtist:王力宏Orchestra: HYPERLINK CoUDA13

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论