- 积分
- 55
贡献1
飞刀0 FD
注册时间2010-11-14
在线时间14 小时
|
楼主 |
发表于 2010-12-31 15:50:25
|
显示全部楼层
本帖最后由 yystju 于 2010-12-31 15:55 编辑
终于搞定了,来结贴。大家新年快乐~
希望对大家有用。这两天内核代码看了不少,不过深感基础知识比较差,看得懂得不是很多。而且我们用的2.6.28.6的内核相对于从kernel.org下载的修改了不少地方,内核的移植目前还路很远阿。现在都2.6.35了。
I) 代码改动:
总结起来呢,就改了两行代码 (字字血泪啊,哈哈):
1. linux2.6.28/arch/arm/mach-s3c6410/setup_sdhi.c (94):
从改为2. linux2.6.28/arch/arm/plat-s3c/dev-hsmmc1.c (41):
从- ...
- MMC_CAP_SD_HIGHSPEED),
- ...
复制代码 改为- ...
- MMC_CAP_SD_HIGHSPEED | MMC_CAP_ON_BOARD),
- ...
复制代码 II) 配置内容
首先要把8686的firmware都copy到linux2.6.28/firmware/ 并将helper_sd.bin改名叫sd8686_helper.bin(而sd8686.bin名字不变).
然后在make menuconfig里边,
1. 在Device Dirvier->Generic Device Option->External firmware blobs to build into the kernel binary 里边写入"sd8686_helper.bin sd8686.bin"
2. 在Device Dirvier->Network device support->Wireless LAN里边将所有Marvell 8xxx Libertas WLAN driver support设成built-in ("Marvell 8xxx Libertas WLAN driver support with thin firmware ..." 不用).
3. 编译内核然后上传。
然后重新冷启动(见副作用).在启动串口输出或者dmesg里边,你应该能看到类似下边的内容:
======================
...
mmc1: new SDIO card at address 0001
libertas_sdio mmc1:0001:1: firmware: using built-in firmware sd8686_helper.bin
libertas_sdio mmc1:0001:1: firmware: using built-in firmware sd8686.bin
libertas: 00:27:13:ed:28:a4, fw 9.70.3p24, cap 0x00000303
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: eth1: Marvell WLAN 802.11 adapter
...
--------------------------------------
注意:在我的板上叫eth1, 不是wlan0
4. 设置
首先ifconfig eth1 up,然后用iwlist eth1 scan查看能否查到接入点。
然后配置无线,基本上所有的参数都可以从iwlist scan的结果里找到, 除了passwd。(我用的是WEP, 如果大家用的什么LEAP或者WPA,WPA2等等的话估计要自己搞了,我实在是外行。)
======================
iwconfig eth1 essid <ESSID> freq <FREQENCY> channel <CHANNEL> ap <ACCESS POINT> rate 54M auto key restricted s:<passwd>
--------------------------------------
最后设置IP(见局限)
======================
ifconfig eth1 <IP>
--------------------------------------
III) 副作用和局限
1. 只有第一次冷启动可以侦测到mmc1, linux reboot或者 uboot reset都不能。不是很懂原因。不过很可能是MMC_CAP_ON_BOARD造成的。
2. 目前不能DHCP, 因为板子上没有dhclient,而我dhcp交叉编译没搞定。所以我就直接设了个地址,目前工作正常。
3. 设置了的无线网链接过一会儿不用就会断,然后要先ifconfig eth1 down, 再up, 然后重新用iwconfig设置。(貌似telnet上去一个链接,它就不断了~)
4. 用模块方式编译的内核,手动加载驱动时候无论如何都报firmware load failed (ret = -2), 无解。
5. IPV6不会...
IV) 硬件
我只有OK6410。不清楚别的板子上是否需要改动。
V) 重要参考文章或帮助文档
1. http://blog.csdn.net/zhangqingsup/archive/2010/03/20/5399258.aspx
2. http://blog.csdn.net/unbutun/archive/2009/04/03/4022391.aspx
3. http://linux.die.net/man/8/iwconfig
4. http://chgw.blog.hexun.com/10803450_d.html |
|