szypf2011 发表于 2017-11-23 11:39:03

TI AM335x debian系统USB无线网卡移植手册

本帖最后由 szypf2011 于 2017-11-23 11:41 编辑

先简介下AM335x
AM335x处理器采用系列化,从高端过渡到低端,满足不同行业客户的各种功能需求,达到性价比最优的微妙平衡。有AM3359/AM3358/AM3357/AM3356/AM3354等多款配置参数各不相同的处理器,且系列   处理器管脚PIN对PIN兼容,方便客户进行产品升级公开资料最全的一款芯片,方便工程师学习及进行产品设计。
系统支持丰富,支持WINCE、LINUX、Android三种主流嵌入式操作系统;支持裸机操作,可通过StarterWare做到无需操作系统,开发人员便可像对微控制器编程那样对处理器进行编程。集成2个MAC,双千兆网络。拥有CAN、PROFIBUS、RS485等多种主流工业总线,应用领域广泛。品质稳定,定位工业控制MCU,适应各种残酷工业环境;超长供货周期,保证客户产品寿命。


这次使用的是深圳盈鹏飞嵌入式公司基于AM335x打造的双网络,6串口的嵌入式开发板(EVB-T335)。核心板采用的AM335x处理器,最高运行1GHz,邮票孔设计,超小体积,EtherCat.PROFINET工业总线,支持Linux3.14/Wince7.0系统!
从官网上找了两张开发板和核心板的高清图
EVB-T335开发板


CoM-T335核心板



开始切入主题
根据盈鹏飞嵌入式公司提供文档<<CoM-335x如何烧写BBB的Debian系统>>(需要文档可到官网下载:http://www.embedall.com/)可将BBB的debian系统转换给EVB-T335 使用,但是转换后的debian系统,usbwifi驱动模块不能使用,原因是BBB debian系统中的内核驱动模块是以3.8版本内核编译的,而EVB-T335使用的是3.14.43版本内核。所以需要单独移植无线 usbwifi驱动模块以支持EVB-T335。本文以rtl8192cu为例讲解。
若要在3.14 内核 debian系统上移植无线usbwifi,需完成下列步骤:
a) 需重新配置内核,编译rtl8192cu驱动模块;
b) 下载移植固件firmware (rtl8192cufw_TMSC.bin / rtl8192cufw.bin);
c) debian系统上通过apt-get install 安装wpa_supplicant 工具,libnl库 (libnl-3.so.200、libnl-genl-3.so.200)
d) 编写wpa_supplicant.conf配置文件,用于连接无线wifi网络;

配置内核
支持rtl8192cu usbwifi内核及驱动模块配置如下:
[*] Networking support--->
                -*-   Wireless--->
                        --- Wireless
                         <M>   cfg80211 - wireless configuration API
                         [*]   enable powersave by default
                         [*]   cfg80211 wireless extensions compatibility
                         <*>   Generic IEEE 802.11 Networking Stack (mac80211)
                         [*]   Minstrel
                         [*]   Minstrel 802.11n support
Device Drivers--->
        [*] Network device support--->
                        [*]   Wireless LAN--->
                                <M>   Realtek rtlwifi family of devices--->
                                        <M>   Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter
                                        []   Debugging output for rtlwifi driver family

配置完成后,保存退出。然后重新编译内核和内核模块(如已将驱动编译进内核,则无需编译内核模块):
编译内核:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-LOADADDR=0x80008000 uImage
编译内核模块:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
安装内核模块:
$ make ARCH=arm INSTALL_MOD_PATH=<path to root of file system> modules_install
path to root of file system为模块安装的目录,例如/home/alex/evbt335/kernel/modules为笔者的安装路径,相应命令如下所示:
$ make ARCH=arm INSTALL_MOD_PATH=/home/alex/evbt335/kernel/modules modules_install
将编译好的内核烧录到开发板,并将安装好的驱动模块目录/home/alex/evbt335/kernel/modules/lib/modules
复制到debian的/lib/目录下。

下载固件
Rtl8192cu 所需固件为rtl8192cufw_TMSC.bin / rtl8192cufw.bin ,其他wifi模块可根据实际模块加载过程中打印输出为准;(如debian系统启动时,会自动加载所需模块,并打印缺少的固件)
Linux系统所需的固件包可在linux系统下通过如下命令下载:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
下载后可在该固件包里找到rtl8192cufw_TMSC.bin / rtl8192cufw.bin文件,并移植到debian系统的/lib/firmware/rtlwifi/目录下即可;
至此rtl8192cu usbwifi模块在系统启动过程中即可自动加载完成;

配置使用
下载wpa_supplicant工具及libnl库
驱动模块加载成功后,需要使用wpa_supplicant 工具连接wifi网络。此工具还需要libnl库支持,所以需要使用下列命令加载wpa_supplicant 工具及libnl库;
上电启动EVB-T335debian系统,输入以root用户登陆,无需输入密码,输入下列命令:
root@beaglebone:/# apt-get install libnl-3-dev libnl-genl-3-dev wpasupplicant

创建wpa_supplicant.conf配置文件
在/etc/目录下创建wpa_supplicant.conf文件:(根据路由器实际配置修改,可参考附件2)
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
      ssid="artcor"                   //Wifi账号
      key_mgmt=WPA-PSK //请无论你是使用WPA-PSK,WPA2-PSK,都请在这里输入 WPA-PSK。这
在wpa_supplicant看来WPA-PSK,WPA2-PSK都是 WPA-PSK,改成WPA2-PSK,它会不认识。
      proto=WPA RSN           //一般这样写可以兼容WPA和WPA2 CCMP和TKIP
proto=RSN #Robust Security Network:强健安全网络,表示这个网络配
置比 WEP模式要更安全。
      pairwise=CCMP TKIP        //关键点,wpa_supplicant目前还不认AES的加密标准,因此即使你在
此输入AES也没有用,自行web到路由器上改成CCMP TKIP
      psk="82523090"        //Wifi密码
}


连接无线wifi
上电启动EVB-T335,进入debian系统后,输入下列命令:
由于EVBT-335使用了双网络,为避免冲突,可以先关闭eth0和eth1:
root@beaglebone:/#ifconfig eth0 down
root@beaglebone:/#ifconfig eth1 down

root@beaglebone:/#modprobe rtl8192cu
root@beaglebone:/#ifconfig wlan0 192.168.0.222 up
root@beaglebone:/#route add default gw 192.168.0.1
root@beaglebone:/#wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
root@beaglebone:/# ping 192.168.0.1 -I wlan0
此时即可正常使用usbwifi ,移植rtl8192cu完成;


无线网卡使用注意事项
问题1:加载驱动模块
问题:debian系统上电启动会自动加载硬件所需的驱动模块,如需卸载rtl8192cu模块,可使用如下命令:
root@beaglebone:/#modporbe –r rtl8192cu
若要手动加载rtl8192cu模块,不要使用insmod命令,需使用modprobe 命令,该命令可自动加载该模块所需的其他依赖模块;
问题2:可以ping通路由但是ping不通外网
解决办法:
route add default gw 192.168.0.1

szypf2011 发表于 2017-11-23 14:39:26

关注公众号,获取更多技术文档,产品资讯!!!更有不定时推出开发板使用活动!!!
页: [1]
查看完整版本: TI AM335x debian系统USB无线网卡移植手册