Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍

时间:2024-04-04 08:04:58

代码工程的GITHUB连接:点进进入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 对接芯片上行下行接口介绍
9. libnl的编译
10. openssl的编译
11. wpa_supplicant的编译/使用
12. udhcp的编译/使用
13. hostapd的编译和使用(我实验失败)


本章主要从以下几个方面介绍
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
1)解压包介绍,主要对整个Linux驱动解压包内容做一个大概的介绍
2)主要对部分重要文档做一个简单的介绍

1. 解压包文件夹介绍

SD-UAPSTA-8801-FC18-MMC-14.76.36.p61-C3X14090_B0-GPL.tar,代码我放在了github上
这是整个压缩包的名字,在介绍解压后各个目录之前,首先有一些重要信息我们需要知道,下面介绍的内容会在realease note中找到,从上述名字得到的信息有:
1)这是一份基于SDIO的代码
2)支持UAP/STA mode
备注:UAP/STA的模式最简单的一句话是:比如我们手机连接路由器,那么我们手机的角色就是STA(station),路由器的角色就是AP(Access Point)
3)这是Marvell88w8801的驱动,哈哈,这个可以理解为废话啦
4)14.76.36.p61,此部分分别是:Major Revision,Minor Revision,Release Number,Patch Number,对我们来说比较有用的是:14,表明此部分是按照firmware V14的数据格式来写驱动。如图,就是这本啦,后续分析驱动的时候会大量用到这本。
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
5)C代表依赖的Linux kernel的版本,3X代表支持Linux Kernel的版本是3.X
大概就是这些信息,一个小小的名字对我们来说信息还真是多啊·好啦,回归主题

解压后得到所有目录如下:
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
1)FwImage是Marvell88w8801 init的时候需要download的固件,这个固件的作用你可以把他尽量想象简单化:就是我们把fw download进芯片内,等fw runing起来,后续我们给芯片下命令,是固件在解析后让芯片执行特定的指令,所以我们一定要按照固件手册去写驱动。
2)SD-8801-FC18-MMC-14.76.36.p61-C3X14090_B0-GPL这个就是整个linux wifi驱动的source code。
Wlan_src下面有mapp,mlan,mlinux,script,其中需要编译的是mlan,mlinux,在说明这两个文件夹前,请先看下面一张图
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
其中MOAL是OS抽象层,MLAN是OS独立层,知道了这个,那么我么就能一眼看出来mlinux文件夹下肯定是MOAL层了,也就是跟OS有关的东西。那么如果要移植那么大部分的工作是MOAL的移植。Mlan文件夹就是MLAN层了。
来一张结构图,通过下图可以看出MLAN跟MOAL沟通是通过一个SHIM的媒人
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
到此为止,重要的文件夹已经完毕了,但是我还想罗嗦一点MOAL跟MLAN包含的一些东西,为后面做一点铺垫
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍

MOAL最主要起到了一个承上启下的作用,上对接调用函数接口,下对接SDIO/USB接口,然后中间在通过媒人(SHIM)和MLAN沟通
MLAN就比较是驱动的精华,负责fw的download,命令/事件/数据/SME/PS/MUX/DEMUX相关事情的处理

2.文件介绍

另外,各位可能也发现了除了文件夹之外,还有几个文件
Linux SDIO WIFI Marvell8801/Marvell88w8801(一) --- 代码及文档介绍
其中Makefile在编译的时候再去说
其他几个我也不一一介绍,只是摘取重要部分罗列,其实,我也没都看过,只是扫了一遍,知道大概都是在讲什么,好啦,罗列重要内容啦,不过有很多在linux编译的时候会重点介绍
1)FOR DRIVER BUILD(驱动编译)
Goto source code directory wlan_src/.
make [clean] build
The driver code supports Linux kernel up to 3.4.
2)FOR DRIVER INSTALL(驱动加载)
a) Copy firmware image sd8786_uapsta.bin | sd8787_uapsta.bin | … to
/lib/firmware/mrvl/ directory, create the directory if it doesn’t exist.
b) Install WLAN driver,insmod mlan.ko 其中可以带一堆参数
c) Uninstall WLAN driver(卸载),
ifconfig mlanX down
ifconfig uapX down
rmmod sd8xxx
rmmod mlan
3)在其次就是一些debug或者单独调试某功能的介绍,详细请自行查看