ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:18.54KB ,
资源ID:5283470      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5283470.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(WiFi驱动移植到Linux.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

WiFi驱动移植到Linux.docx

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

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

3、IO10_2_MMC3_DAT3, GPIO103_MMC3_CLK, GPIO105_MMC3_CMD, ;2, wifi 模块本身的初始化 ;#define MFP_WIFI_V18_ENABLE (GPIO26_GPIO)#define MFP_WLAN_RESETN (GPIO99_GPIO) #define WIFI_WAKEUP_HOST (GPIO104_GPIO) /*error must be changed*/#define WLAN_ENABLE_PIN 26#define WLAN_RESET_PIN 99#define M200_B#ifdef M200_B#defi

4、ne BT_RESET_PIN EXT1_GPIO(1)#define BT_RESET_GPIO (GPIO1_2_GPIO)#else#define BT_RESET_GPIO (GPIO6_2_GPIO)#define BT_RESET_PIN EXT1_GPIO(6)#endifstatic mfp_cfg_t lin2008_wifibt_pins = MFP_WIFI_V18_ENABLE,MFP_WLAN_RESETN,WIFI_WAKEUP_HOST,/*wakeup host*/;static mfp_cfg_t lin2008_wifibt_pins2 = MFP_WIFI

5、_V18_ENABLE,;static int wifibt_power_status;int lin2008_poweron_wifibt_board(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); gpi

6、o_direction_output(BT_RESET_PIN, 0); gpio_direction_output(WLAN_RESET_PIN, 0); / bt need 5 ms to reset mdelay(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) w

7、ifibt_power_status-; if (!wifibt_power_status) mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins2); gpio_direction_output(WLAN_ENABLE_PIN, 0); return 0; return 1;3, 以太网接口的创建 这里在 android 平台上要做特殊的处理,也就是 firmware 的位置要放好,否则加载 firmware 始终不成功,那么以太网接口就不会被创建了; 需要把 helper_sd.bin 放在 /lib/firmware/mrvl 下面(若没有,

8、则创建一个); 把 sd8686.bin 放在 /lib/firmware/mrvl 下面(同上);4, 特殊的处理 对于 8686 模块需要做特殊的处理,在注册完以太网接口以后,需要添加下面这段话 : #define BCA_CFG_NUM_OF_MODES 4 #define BCA_CFG_SINGLE_ANT_WITH_COEX 0 #define BCA_CFG_DUAL_ANT_WITH_COEX 1 #define BCA_CFG_SINGLE_ANT_FOR_BT_ONLY 2 #define BCA_CFG_MRVL_DEFAULT 3 #define BCA_CONFIG

9、BCA_CFG_SINGLE_ANT_WITH_COEX static u32 BCACfgTblBCA_CFG_NUM_OF_MODES3 = /0xA5F0, 0xA58C, 0xA5A0 0xa027181c, 0x40214, 0xd24d, /Mode 0: Single ANT with COEX enable 0xa027181c, 0x40211, 0xd24d, /Mode 1: Dual ANT with COEX enable 0xa027181c, 0x40222, 0xd21c, /Mode 2: single ANT for BT only 0xa027801d,

10、0x18000, 0xd21c, /Mode 3: Marvell default ; wlan_offset_value RegBuffer; RegBuffer.offset = (0xA5F0); RegBuffer.value = BCACfgTblBCA_CONFIG0; wlan_prepare_cmd(priv, HostCmd_CMD_MAC_REG_ACCESS, HostCmd_ACT_GEN_SET, HostCmd_OPTION_WAITFORRSP, 0,&RegBuffer); RegBuffer.offset =(0xA58C); RegBuffer.value

11、= BCACfgTblBCA_CONFIG1; wlan_prepare_cmd(priv, HostCmd_CMD_MAC_REG_ACCESS, HostCmd_ACT_GEN_SET, HostCmd_OPTION_WAITFORRSP, 0,&RegBuffer); RegBuffer.offset = (0xA5A0); RegBuffer.value = BCACfgTblBCA_CONFIG2; wlan_prepare_cmd(priv, HostCmd_CMD_MAC_REG_ACCESS, HostCmd_ACT_GEN_SET, HostCmd_OPTION_WAITFO

12、RRSP, 0,&RegBuffer);基本上这样就可以工作了;4 其它问题 Sdio 口默认是用的 3.2V 这里需要修改相关的地方强制设成是 1.8V ,否则 SDIO 接口将无法工作; Linux平台上需要移植一些上层软件才能验证,比如 iwconfig , iwlist 等。 测试步骤: ifconfig eth0 up iwlist eth0 scanning 如果能扫描到 AP 那么证明基本已经 OK 了; iwconfig eth0 iwlist eth0 freq 可以查看设备的相关信息,查看各项是否正常。 现在,就可以 ping 通 IP 地址了;5 常见问题 1, WIFI

13、 驱动注册 sdio 驱动的时候出错,也就是 probe 函数未被调用? 需要检查 sdio 设备本身是否被检测到,内核是通过发送特定的命令来检测是 sdio 是 SD 卡还是 mmc 的, 在 mmc_rescan 函数里面可以看到 sdio 设备的加载过程,有可能就是你的电压设置不对;2, 以太网接口一直出不来或者说 firmware 加载失败? 这里需要确保 firmware 是否正确被加载,很可能是它找不到对应的 firmware ,可以通过添加打印信息看看,它的路径到底是在什么地方,对于 wifi 来说 helper_sd.bin 需要放在 /lib/firmware/ 下面,而 s

14、d8686.bin 需要放在 /lib/firmware/mrvl 下面;3, 一切正常,但是调用 iwlist eth0 scanning 的时候,扫描不到任何结果,出现NO scan results? 这时候需要做特殊的处理,比如共存代码的设置,是否正常等,通常可以判断有没有中断上来,以此区分到底是模块和 cpu 的连接问题还是模块本身的设置问题;4, 工作一段时间后不正常 这个有可能是蓝牙模块需要进行初始化,因为它们是共用天线,有时候不起蓝牙模块对应的 40M 时钟就不起来;本人参照: 此博客而移植成功的。在此感谢wylhistory!linux - 嵌入式linux下wifi无线网卡驱

15、动 插入模块驱动rootWEIYAN wifi$ insmod zd1211rw.ko usb 1-1: reset full speed USB device 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:1

16、215 v4810 full 00-1d-0f UW2453_RF pa0 -7-扫描频道rootWEIYAN wifi$ ./wftools/iwlist wlan0 scanningwlan0 Scan completed : Cell 01 - Address: 00:0E:4E:81:02:4D ESSID:WEIYAN Mode:Master Channel:6 Frequency:2.437 GHz (Channel 6) Quality=11/100 Signal level=62/100 Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s;

17、5.5 Mb/s; 11 Mb/s Extra:tsf=00000000004c3c37设置essid和无线网卡ip地址,并关闭原来的dm9000rootWEIYAN wifi$ ./wftools/iwconfig wlan0 essid WEIYANrootWEIYAN wifi$ ./wftools/iwconfig wlan0 192.168.1.100rootWEIYAN wifi$ ifconfig eth0 down测试与路由的连通性rootWEIYAN wifi$ ping 192.168.1.254PING 192.168.1.254 (192.168.1.254): 56

18、data bytes64 bytes from 192.168.1.254: seq=0 ttl=255 time=10.997 ms64 bytes from 192.168.1.254: seq=1 ttl=255 time=4.399 ms64 bytes from 192.168.1.254: seq=2 ttl=255 time=3.915 ms通过无线网卡的nfs挂载测试rootWEIYAN wifi$ mount -t nfs -o nolock 192.168.1.108:/new_disk/tftp/ /mntrootWEIYAN wifi$ ls /mnt1.mp3 g_f

19、ile_storage.ko mplayer tslib.tar.gz2.mpg gspca.ko mplayer_no_v4l u-boot.bin3.wav led_drv.ko rootfs.jffs2 uImageabxtest madplay rootfs.yaffs2通过无线网卡播放mp3rootWEIYAN wifi$ /opt/madplay /mnt/1.mp3 MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.UDA1341:audio_set_dsp_speed:4

20、4100 prescaler:99 Title: 05.Forever Love 192k Artist: 王力宏 Orchestra: CoUDA1341:audio_set_dsp_speed:22050 prescaler:231nductor: Lyricist: Album: 心中的日月 Track: 05 Year: 2004 Publisher: Genre: Pop Station: Comment: 清晰1039 frames decoded (0:00:27.1), +0.8 dB peak amplitude, 40 clipped samples通过无线网卡播放视频ro

21、otWEIYAN wifi$ /opt/mplayer /mnt/2.mpg -ac madMPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer TeamCPU: ARMPlaying /mnt/2.mpg.MPEG-PS file format detected.VIDEO: MPEG1 384x288 (aspect 1) 29.970 fps 1638.4 kbps (204.8 kbyte/s)=Opening video decoder: mpegpes MPEG 1/2 Video passthroughA: 25.9 V: 26.1 A-V: -0.149 ct: 1.128 782/782 79% 47% 17.5% 428 0Exiting. (End of file)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1