S5pc100平台wifi模块驱动移植分析.doc_第1页
S5pc100平台wifi模块驱动移植分析.doc_第2页
S5pc100平台wifi模块驱动移植分析.doc_第3页
S5pc100平台wifi模块驱动移植分析.doc_第4页
S5pc100平台wifi模块驱动移植分析.doc_第5页
全文预览已结束

下载本文档

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

文档简介

S5pc100平台wifi模块驱动移植分析一、移植环境: 1、 主机:Ubuntu 10.10发行版 2、 目标机:FS_S5PC100平台 3、 交叉编译工具:arm-none-linux-gnueabi- 4、wifi模块:marvell-8686 5、内核:linux-2.6.35-二、在linux下的移植1. 平台代码修改内核驱动支持 因为S5PC100平台上SDIO功能已经支持,所以只需要内核驱动支持marvell-8686即可。由于wifi的接口种类有很多种,比如有usb接口wifi,串口接口wifi,sd卡接口wifi,sdio接口wifi,所以在移植wifi驱动时必须确保usb,串口,sd卡的驱动存在,取决于wifi接口的类型。S5pc100开发板上的wifi的接口是sdio接口的,所以在此之前必须移植号sdio接口的驱动。$ make menuconfig 修改:* Networking support -* Wireless - cfg80211 - wireless configuration API* common routines for IEEE 802.11 driversDevice Drivers - * Network device support - Wireless LAN - Marvell 8xxx Libertas WLAN driver support Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards Generic Driver Options - (sd8686.bin sd8686_helper.bin) External firmware blobs to build into the kernel2. 内核的修改:wifi的移植依赖于网卡驱动的移植和nand-flash平台的支持,可以参考Linux-2.6.35内核移植网卡驱动的移植和Linux-2.6.35内核移植Nand flash 驱动的移植文件arch/arm/mach-s5pc100/mach-smdkc100.c下有内核的分区, 把第2个分区改成8M。因为生成的文件系统太大,大于4M。修改如下(红色字体部分):static struct mtd_partition s5pc100_nand_part = 0 = .name = bootloader, .size = SZ_1M, .offset = 0, , 1 = .name = kernel, .size = SZ_1M * 4, .offset = MTDPART_OFS_APPEND, , 2 = .name = rootfs, .size = SZ_8M, .offset = MTDPART_OFS_APPEND, , 3 = .name = usrfs, .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL, ,3. 固件的准备将固件sd8686.bin和sd8686_helper.bin拷贝到linux-2.6.35/firmware下。编译时会自动编译进内核。$ cp sd8686.bin linux-2.6.35/firmware/$ cp sd8686_helper.bin linux-2.6.35/firmware/$ make zImage$ sudo cp zImage /tftpboot由于wifi驱动在运行时需要两个工具,wpa_supplicant和wpa_cli,所以必须先制作这两个工具放到文件系统的bin目录下面。三,文件系统的制作1. wpa_suppicant的移植源码版本选择:wpa_supplicant-0.7.3openssl-0.9.8e openssl移植 :a、补丁安装 openssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e所以我们需要wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch拷贝到openssl源码下。$ cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/$ cd openssl-0.9.8e $ patch -p1 openssl-0.9.8e-tls-extensions.patch注意:p1,这里是数字“1”.b、配置编译安装$ ./Configure linux-elf-arm -DL_ENDIAN linux:arm-cortex_a8-linux-gnueabi-gcc shared -prefix=/home/linux/workdir/wifi/openssl打开openssl-0.9.8e中Makefile$ vim Makefile 修改如下:- CC= cc+ CC= arm-none-linux-gnueabi- AR= ar $(ARFLAGS) r+ AR= arm-cortex_a8-linux-gnueabi-ar $(ARFLAGS) r- RANLIB= /usr/bin/ranlib+ RANLIB= arm-cortex_a8-linux-gnueabi-ranlib编译:$ make$ make install wpa_supplicant移植 :在/wpa_supplicant-0.7.3/wpa_supplicant目录下$ cd wpa_supplicant-0.7.3/wpa_supplicant a、Makefile修改$ vim Makefile 修改#ifndef CCCC=gcc#endif为CC= arm-none-linux-gnueabi-gcc /自己的交叉编译工具链在CFLAGS += -I./srcCFLAGS += -I./src/utils下添加:CFLAGS += -I/home/linux/workdir/wifi/openssl/include/注意这是你自己安装wpa_supplicant的路径下的include修改LIBS += -lssl为LIBS += -lssl -L/home/linux/workdir/wifi/openssl/lib/修改LIBS_p += -lcrypto为LIBS_p += -lcrypto -L/home/linux/workdir/wifi/openssl/lib/b、编译$ cp deconfig .config$ make此处可能出题以下问题:/usr/bin/ld: skipping incompatible /usr/local/ssl/lib/libssl.so when searching for -lssl/usr/bin/ld: skipping incompatible /usr/local/ssl/lib/libssl.a when searching for -lssl/usr/bin/ld: cannot find -lssl/usr/bin/ld: skipping incompatible /usr/local/ssl/lib/libcrypto.so when searching for -lcrypto/usr/bin/ld: skipping incompatible /usr/local/ssl/lib/libcrypto.a when searching for -lcrypto/usr/bin/ld: cannot find -lcryptocollect2: ld returned 1 exit statusmake: * wpa_supplicant Error 1解决方法如下:方法1:可能你在修改wpa_supplicant-0.7.3/wpa_supplicant下Makefile的时候,将CC=gcc直接改为CC=arm-cortex_a8-linux-gnueabi-gcc,而没有按上面方式去掉#ifndef CC和#endif这两行。方法2:需要先编译安装openssl库,确保两个编译都使用统一工具arm-cortex_a8-linux-gnueabi-gcc,这样只要把openssl和wpa_supplicant两个用同一个编译工具编译即可。方法3:如果已经安装了openssl库,还出现如上问题,建议更新源,卸载后再装,如果有文件信赖关系不对,运行命令:sudo apt-get -f install.注:方法1,亲测可行。方法2和3是我在移植的时候出现上面问题,在网上搜到的结果,好像不管用,在此帖出,以供参考。最后,编译$ make后将生产的wpa_supplicant和wpa_cli拷贝到根文件系统的bin目录下$ cp wpa_supplicant /source/rootfs/bin$ cp wpa_cli /source/rootfs/bin2. 文件系统的制作至此,wifi的驱动工作已经完成。但是想正常的利用wifi来链接网络,还需要配置wifi。Wifi配置:$ cd 文件系统 a. 在根文件中添加/etc/resolv.conf,域名解析。$ vim /etc/resolv.conf内容为:# Generated by NetworkManagernameserver /你自己的无线路由的DNSnameserver /此行可不写b. 在根文件系统/etc下添加wpa_supplicant配置文件wpa_supplicant.conf$ vim /etc/wpa_supplicant.conf内容为:# WPA-PSK/TKIPctrl_interface=/var/run/wpa_supplicantnetwork=ssid=XXXX #无线路由ssidkey_mgmt=WPA-PSKproto=WPApairwise=TKIPgroup=TKIPpsk=XXXXXXXX #无线路由密码c. 创建目录/var/run/wpa_supplicant$ mkdir /var/run/wpa_supplicant p四,wifi模块的测试启动开发板完成如下操作: 配置无线网卡ip # ifconfig wlan0 00 # ifconfig -a 配置默认网关# route add default gw 启动wpa_supplicant连接无线网络# wpa_supplicant -

温馨提示

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

评论

0/150

提交评论