Linux SDIO WIFI Marvell8801/Marvell88w8801(二) --- Marvell88w8801驱动编译和测试

原创 专注于无线通信的蓬勃 2020-01-11 15:22

代码工程的GITHUB连接:
https://github.com/sj15712795029/stm32f1_marvell88w8801_marvell8801_wifi

1.Linux SDIO WIFI Marvell8801/Marvell88w8801(一) — 代码及文档介绍
2. Linux SDIO WIFI Marvell8801/Marvell88w8801(二) — Marvell88w8801驱动编译
3. Linux SDIO WIFI Marvell8801/Marvell88w8801(三) — Linux驱动以及组件的使用
4. Linux SDIO WIFI Marvell8801/Marvell88w8801(四) — Linux Wi-Fi架构
5. Linux SDIO WIFI Marvell8801/Marvell88w8801(五) — Linux SDIO API介绍
6. Linux SDIO WIFI Marvell8801/Marvell88w8801(六) — Marvell Linux Wi-Fi driver介绍-WIFI插入卡槽内发生的事情
7. Linux SDIO WIFI Marvell8801/Marvell88w8801(七) — Marvell Linux Wi-Fi driver初始化
8. Linux SDIO WIFI Marvell8801/Marvell88w8801(八) — Marvell Linux Wi-Fi driver 对接芯片上行下行接口介绍


Marvell Linux驱动以及组件编译分为几个部分做介绍:
在这里插入图片描述
1)接线方式,主要是介绍怎样把我们的模块接到Linux开发板中
2) Marvell88w8801的驱动是Marvell公司针对88w8801这款芯片出的驱动,另外,每个Wi-Fi芯片厂商基本上都会realease Linux wifi driver,但是并不是所有的驱动我们都能拿的到,有的需要签订NDA(保密协议)我们才能拿到,文档是一样的道理,并不是所有人都能拿的到。
3)Libnl,这个是最新的netlink驱动,我们选择编译他是因为wpa_supplicant和hostapd都要用到他
4)Openssl,同样我们选择编译他是因为wpa_supplicant会用到他
5)Wpa_supplicant主要用于STA mode下认证/加密的处理
6)Dhcp是隶属于tcp/ip的范畴,分为两个角色,dhcpc代表dhcp client,用于STA mode连接上AP主动向AP要IP,dhcpd代表dhcp server的角色,主要作用是有有STA连接到本AP,如果STA向本AP索要IP地址,那么server的作用就是给AP分配IP地址,其实dhcp有很多选择,比如我就自己基于lwip写了一个dhcpd的代码,但是我们在linux选择udchp
7)Hostapd是一个把wifi芯片设置为AP mode的程序

1. Marvell8801模块接线方式

在这里插入图片描述
买一个SD卡槽转换器,如果你的linux是tf小卡槽,那么买一个小卡槽,如果是大卡槽的,那么买一个上图类似的,淘宝应该很多,在这里不做广告
接线方式很简单,只要对接VCC,GND,D0~D3,CMD,CLK引脚即可
在这里插入图片描述

2. Marvell88w8801驱动编译和测试

驱动编译一共分几个步骤:
1)解压驱动
2)进入驱动的wlan_src下
3)make ARCH=arm KERNELDIR=内核路径 其中内核路径根据每人放的位置不同而不同
我的Linux Kernel版本是3.0.101,编译遇到了几类错误:
第一类错误:
…/mlinux/moal_shim.c:1606:21: error: ‘STATION_INFO_ASSOC_REQ_IES’ undeclared (first use in this function)
…/mlinux/moal_shim.c:1608:10: error: ‘struct station_info’ has no member named ‘assoc_req_ies’
…/mlinux/moal_shim.c:1611:10: error: ‘struct station_info’ has no member named ‘assoc_req_ies_len’
解决方法:
https://blog.csdn.net/weiwei_xiaoyu/article/details/71775094
第二类错误:
…/mlinux/moal_uap_cfg80211.c:1518:10: error: too few arguments to function ‘woal_cfg80211_mgmt_frame_ie’
解决方法:
ret = woal_cfg80211_mgmt_frame_ie(priv,
params->tail,
params->tail_len,
NULL, 0, NULL, 0,
NULL, 0,
MGMT_MASK_BEACON);
修改为:
ret = woal_cfg80211_mgmt_frame_ie(priv,
params->tail,
params->tail_len,
NULL, 0, NULL, 0,
NULL, 0,
MGMT_MASK_BEACON,
MOAL_IOCTL_WAIT);
4)我还是比较顺利,做完这几步就生成了两个.ko文件(mlan.ko,sd8xxx.ko)如果生成了这两个ko文件,证明已经编译完成了,下面我们就迫不及待的验证了
5)先别急,好像少点什么,就是fw,需要把fw,就是sd8801_uapsta.bin放到开发板中的/lib/firmware/mrvl/的这个目录下,如果没有这个目录,就创建一个
程序使用一共有几个步骤
1)先把Marvell88w8801插入到SD slot中,当然这步可以加载完驱动进行
2)cd 模块path
3)insmod ./mlan.ko
会出现一下log
在这里插入图片描述
4)insmod ./sd8xxx.ko
会出现以下log
在这里插入图片描述
看到successfully就像看到曙光一样,有没有这种感觉?哈哈
5)iwconfig查看是否出现uap0,mlan0,wfd0
在这里插入图片描述

3 libnl的编译

1)tar xzf libnl-3.2.23.tar.gz
2)cd libnl-3.2.23/
3)./configure --host=arm-linux --prefix=$PWD/tmp
4)make
5)make install -->然后会在下面tmp下面发现一堆东西出来
6)把头文件放到编译链的include中 —》此处两个注意点,只需要把./tmp/include/libnl3下的netlink放过去就好,第二点就是你需要找准自己编译链的include目录,我也是找了好久啊
7)把./tmp/lib下的所有东西放到编译链的lib中
8)把./tmp/lib下的.so放到开发板中
我把这份代码放在了github中

4 openssl的编译

1)tar xzf openssl-1.0.1d.tar.gz
2)cd openssl-1.0.1d/
3)./config shared no-asm --prefix=$PWD/tmp
4)修改Makefile:
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
NM= arm-linux-nm
MAKEDEPPROG= arm-linux-gcc
5)make
6)make install
7)把头文件放到编译链的include中 —》此处两个注意点,只需要把./tmp/include/libnl3下的netlink放过去就好,第二点就是你需要找准自己编译链的include目录,我也是找了好久啊
8)把./tmp/lib下的所有东西放到编译链的lib中
9)把./tmp/lib下的.so放到开发板中
我把这份代码放在了github中

5 wpa_supplicant的编译

终于到了应用的地方了,各位看客,如果你们上面不顺利,不要灰心,大家一起讨论,别看那么简短的几句编译,copy啥的,我也花了2天时间,大写的尴尬····大牛不要笑话俺
wpa_supplicant的编译和使用
Wpa_supplicant的编译
1)cd ~/work/qiyang/wifi/wpa_supplicant/
2)tar xzf wpa_supplicant-2.0.tar.gz
3)cd wpa_supplicant-2.0/wpa_supplicant/
4)cp defconfig .config
5)修改.config加上一行: CONFIG_LIBNL32=y
6)修改makefile CC=arm-linux-gcc
7)make
8)make DESTDIR=$PWD/tmp install
wpa_supplicant的使用
此部分做一个简短的使用,后面一片文章会做详细应用介绍
1)mkdir -p /var/run/wpa_supplicant
2)准备一个配置文件,记住路径和名字,我们暂且把他放到/etc下,并且命名为plaintext.conf
内容如下:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid=“IoT_lwos_wifi”
key_mgmt=NONE
}
3)wpa_supplicant -B -c/etc/plaintext.conf -imlan0
4)查看状态wpa_cli -imlan0 status
5)分配IP ifconfig mlan0 192.168.43.120
6)ping 192.168.43.1
PING 192.168.43.1 (192.168.43.1): 56 data bytes
64 bytes from 192.168.43.1: seq=0 ttl=64 time=32.828 ms
64 bytes from 192.168.43.1: seq=1 ttl=64 time=29.404 ms
至于详细使用后续会在说明
我把这份代码放在了github中

6 udhcp的编译和使用

上面我们虽然有了wpa_supplicant,但是却不能自动获取IP地址,只能我们通过ifconfig来配置IP地址,所以为了克服弊端,我们采用udhcp client来自动获取IP地址
Udhcp的编译
1)tar -xvf udhcp-0.9.8.tar.gz
2)dhcpc.c:134:7: error: label at end of compound statement加一条break;
3)make CROSS_COMPILE=arm-linux-
4)就有了udhcpd ,udhcpc,其实这两个在busybox就有了,看读者板子中是否存在啦
udhcpc的使用:
在wpa_supplicant连接成功后执行以下命令
udhcpc -i mlan0
Log:
udhcp client (v0.9.8) started
Sending discover…
Sending select for 192.168.43.143…
Lease of 192.168.43.143 obtained, lease time 3600
Deleting routers
adding dns 192.168.43.1
我把这份代码放在了github中

7 hostapd的编译和使用(我实验失败)

Hostapd主要是创建一个热点,并且配置dhcpd来给STA分配IP地址,其中dhcpd我们已经在udhcp编译出来两个可执行档:udhcpd
虽然我实验失败,但是还是要说下编译,以及我出现的错误,以便各位大牛出出招,让我能够成功
Hostapd的编译:
1)tar xzf hostapd-2.0.tar.gz
2)cd hostapd-2.0/hostapd/
3)cp defconfig .config
4)修改.config, 加一行: CONFIG_LIBNL32=y
5)修改Makefile:
CC=arm-linux-gcc
6)make
7)make DESTDIR=$PWD/tmp install
8)把 tmp/uer/bin目录下的hostapd hostapd_cli弄到开发板中
使用:
我出现的错误是:
在这里插入图片描述
在网上查了很多办法都不奏效,各位给点意见
我把这份代码放在了github中

专注于无线通信的蓬勃 朝气蓬勃——不积跬步 无以至千里, 不积小流 无以成江海
评论
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 90浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 90浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 64浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 86浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 104浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 93浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 99浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 96浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 98浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 73浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 123浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 124浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦