代碼工程的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 對接芯片上行下行接口介紹
本章主要從以下幾個方面介紹
1)解壓包介紹,主要對整個Linux驅動解壓包內容做一個大概的介紹
2)主要對部分重要文檔做一個簡單的介紹
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的數據格式來寫驅動。如圖,就是這本啦,后續分析驅動的時候會大量用到這本。
5)C代表依賴的Linux kernel的版本,3X代表支持Linux Kernel的版本是3.X
大概就是這些信息,一個小小的名字對我們來說信息還真是多啊·好啦,回歸主題
解壓后得到所有目錄如下:
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,在說明這兩個文件夾前,請先看下面一張圖
其中MOAL是OS抽象層,MLAN是OS獨立層,知道了這個,那么我么就能一眼看出來mlinux文件夾下肯定是MOAL層了,也就是跟OS有關的東西。那么如果要移植那么大部分的工作是MOAL的移植。Mlan文件夾就是MLAN層了。
來一張結構圖,通過下圖可以看出MLAN跟MOAL溝通是通過一個SHIM的媒人
到此為止,重要的文件夾已經完畢了,但是我還想羅嗦一點MOAL跟MLAN包含的一些東西,為后面做一點鋪墊
MOAL最主要起到了一個承上啟下的作用,上對接調用函數接口,下對接SDIO/USB接口,然后中間在通過媒人(SHIM)和MLAN溝通
MLAN就比較是驅動的精華,負責fw的download,命令/事件/數據/SME/PS/MUX/DEMUX相關事情的處理
另外,各位可能也發現了除了文件夾之外,還有幾個文件
其中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或者單獨調試某功能的介紹,詳細請自行查看