设为首页 加入收藏

TOP

hisi3559的usb无线网卡驱动(rtl8192cu)(一条龙服务:内核编译、驱动编译、iw等工具编译)(一)
2019-08-27 07:36:47 】 浏览:58
Tags:hisi3559 usb 无线 网卡驱动 rtl8192cu 一条龙 服务 内核 编译 驱动 工具

usb无线网卡驱动(rtl8192cu)

内核编译、驱动编译、iw等工具编译

 (哈哈,如果有其他问题,麻烦留言;)
环境
板卡:hi3559av100(arm64)
交叉编译链:aarch64-himix100-linux-
usb无线网卡:rtl8192cu(ID 0bda:8178)
 
1、内核编译
在内核中,不仅要包含相应无线驱动、还有包含其他一些项,否则iw等等工具无法使用;
进入内核配置:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
① 搜索:rtl8192cu(注意依赖项);
② RNDIS的API驱动和gadget driver(https://blog.csdn.net/zhenglie110/article/details/80223167):
Device Drivers —>
     [*] USB support —>
       <*> USB Gadget Support —>
              Ethernet Gadget (with CDC Ethernet support)
             [*] RNDIS support
如下图:
 
③ 内核关于wireless部分80211部分:cfg80211 wireless extension(https://blog.csdn.net/faihung/article/details/82497378)
Networking support ------>
Wireless----------------->
cfg80211 wireless extensions compatibility
 
④ 这个不太清楚是做啥的,只是看到网上写着(https://wenku.baidu.com/view/f2d2d7ea0975f46527d3e14b.html)
Device Drivers --------->
Network device support----------- >
Wireless LAN--------------------->
IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
 
2、驱动编译
一开始在内核中没有加③和④,以为是驱动的问题,所以找到了无线驱动源码交叉编译,在这个编译过程中经历比较痛苦,中间出了好多错误,但都是一开始不规范导致;除了需要驱动源代码,还需要板卡对应内核源代码,并且源代码内核中一定不可以包含该驱动,否则驱动不会进行编译;
①内核准备
.config要准备好,并且放入内核目录下(可以看板卡对应文档);
 make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- prepare
  make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- scripts
如果不按照这三步走,在内核编译时可能会有以下提示错误:
  • asm/types.h不存在;
  • 提示警告:Module.symvers不存在;
②驱动源代码
makefile:
增加CONFIG_PLATFORM_HISI3559 = y,改CONFIG_PLATFORM_I386_PC = n
增加: ifeq ($(CONFIG_PLATFORM_HISI3559), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm64
CROSS_COMPILE :=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-
KVER := 4.9.37 #内核版本
KSRC ?= /home/deepglint/linux-4.9.37 #内核位置(该位置不要太过复杂,最好复制出来)
endif
编译:make
提示错误:implicit declaration of function ‘csum_ipv6_magic’
处理:在提示该错误的文件中增加相应的头文件,头文件位置通过命令在内核中:find /home/deepglint/linux-4.9.37 -name "*" | xargs grep "csum_ipv6_magic" >> 1.txt,在1.txt中搜索头文件,net/ip6_checksum.h,增加出现错误的完呢建在增加 include<net/ip6_checksum.h>
 
③加载驱动:
将生成的rtl8192cu.ko复制到板卡中,使用命令:insmod rtl8192cu.ko加载;如果出现错误:wiless_send_event未定义错误,则为内核中③没有配置;
 
3、iw等工具交叉编译
主要编译内容包含:iw、iwlist、iwconfig、dhcpd
①dhcpd 用于无线网卡连接后分配IP;(来源: https://www.cnblogs.com/helloworldtoyou/p/5457504.html)
  • 下载:ftp://roy.marples.name/pub/dhcpcd(我下载的版本是:dhcpcd-6.9.4.tar.xz)
  • 配置:./configure
  • 编译:make CC=aarch64-himix100-linux-gcc
  • 生成:直接复制dhcpd即可使用(./dhcpd wlan0)
 
②wireless_tool(包含iwlist、iwconfig)(https://blog.csdn.net/weixin_42432281/article/details/86524808)
  • 用于扫描、连接;
  • 下载:https://hewlettpackard.github.io/wireless-tools/Tools.html,如下图(或者:https://hewlettpackard.github.io/wireless-tools/wireless_to
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SLAM+语音机器人DIY系列:(五).. 下一篇Linux 系统调用过程详细分析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目