精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【技術(shù)分享】怎么在Android 9&10上面實現(xiàn)WIFI功能

潤欣科技Fortune ? 來源:潤欣科技Fortune ? 作者:潤欣科技Fortune ? 2020-08-13 09:47 ? 次閱讀

上海潤欣科技股份有限公司創(chuàng)研社

前言

現(xiàn)如今,WiFi已經(jīng)和我們生活密不可分了,不管我們是在公交車上、地鐵上,還是走在大街上,我們都可以享受到WiFi的信號,WiFi5 已經(jīng)進(jìn)入千家萬戶,下面將分享基于WIFI5搭配Android 9 pie上面實現(xiàn)2.4/5G上網(wǎng)功能。隨著Android版本更替,在Android 9 與Android 10中wifi的結(jié)構(gòu)層次與Android 8以前的對比也發(fā)生了許多變化。

注:本文章所述的WIFI5包括1*1/2*2芯片,有SDIO、USB、PCIE三種接口方式,在不同的應(yīng)用場景中有著廣泛應(yīng)用,想詳細(xì)了解的可以咨詢潤欣的商務(wù)端。

添加CLD驅(qū)動移植

本文以高通WIFI5 CLD驅(qū)動為例。編譯驅(qū)動前,請確保Linux 內(nèi)核成功編譯完成。低于Linux 4.4內(nèi)核版本需要在wifi 驅(qū)動部分適配backports。

操作步驟:

1) 修改linux內(nèi)核路徑和toolchain路徑,配置好IF_TYPE和BOARD_TYPE

2) 進(jìn)入AIO/build目錄

3) 通過命令make進(jìn)行編譯.

編譯完成后:

把固件放置到/lib/firmware目錄下

然后通過命令sudo insmod ./wlan.ko安裝WIFI驅(qū)動

驅(qū)動移植好了,以后就是加載驅(qū)動,測試功能,但是在實際過程中可能會有許多問題需要去debug。最常見的是wlan 接口生成不成功,以及無法掃描AP等……這些都需要我們一步步跟著wifi的啟動流程去分析。

Android 9.0里wifi的框架做了一些變動,包括wifi開啟流程,前面與8.0差不多,到了WifiServiceImpl后面就有了很大變動,最重要的變化是WIFI HAL層。

WLAN HAL

HIDL 讀作 hide-l,Wifi到Andoid O之后所以Android P也一樣不再使用jni,而是使用HIDL,Hardware Interface Define Language。

WLAN 框架具有三個 WLAN HAL 表面,分別由三個不同的 HIDL 軟件包表示:

Vendor HAL:Android 專用命令的 HAL 表面,HIDL 文件位于hardware/interfaces/wifi/1.x中。

客戶端 HAL:wpa_supplicant的 HAL 表面,HIDL 文件位于hardware/interfaces/supplicant/1.x中。

Hostapd HAL:hostapd的 HAL 表面,HIDL 文件位于hardware/interfaces/hostapd/1.x中。

根據(jù)我們實際調(diào)試情況來看,Android 9 pie 走的是hardware/interfaces/wifi/1.2中的default/wifi.cpp Android 10(Android Q)走的流程對應(yīng)的是hardware/interfaces/wifi/1.3/default/ wifi.cpp 。

系統(tǒng)編譯的時候會自動產(chǎn)生IWifi.java文件。

out/soong/.intermediates/hardware/interfaces/wifi/1.0/android.hardware.wifi_V1.0-java_gen_java/gen/android/hardware/wifi/V1_X/IWifi.java

對應(yīng)的代碼:

/hardware/interfaces/wifi/1.3/IWifi.hal
/**
* Perform any setup that is required to make use of the module. If the module
* is already started then this must be a noop.
* Must trigger |IWifiEventCallback.onStart| on success.
*
* @return status WifiStatus of the operation.
* Possible status codes:
* |WifiStatusCode.SUCCESS|,
* |WifiStatusCode.NOT_AVAILABLE|,
* |WifiStatusCode.UNKNOWN|
*/
@entry
@callflow(next={"registerEventCallback", "start", "stop", "getChip"})
start() generates (WifiStatus status);

IWifi.java的getService方法

public static IWifi getService(String serviceName) throws android.os.RemoteException {
return IWifi.asInterface(android.os.HwBinder.getService("android.hardware.wifi@1.0::IWifi",serviceName));
}

對應(yīng)的IWifi.java的asInterface方法

IWifi.asInterface(android.os.HwBinder.getService("android.hardware.wifi@1.0::IWifi",serviceName));

硬件WIFI調(diào)用

按照IWifi.java的代碼接下來的調(diào)用路徑在hardware/interfaces/wifi/1.3/default/,目前跟蹤流程走的是走的1.3下面的wifi.cpp這個文件。

函數(shù)入口 Wifi::start

對應(yīng)的路徑hardware/interfaces/wifi_hidl/1.3/default/wifi.cpp

初始化 initializeModeControllerAndLegacyHal()

mode_controller_->initialize()

hardware/interfaces/wifi_hidl/1.3/default/wifi_mode_controller.cpp

driver_tool_->LoadDriver()

這個driver_tool.cpp這里開始走到WPA適配層去。對應(yīng)的路徑如下:

//frameworks/opt/net/wifi/libwifi_hal/driver_tool.cpp

wifi_load_driver()

libwifi_hal/wifi_hal_common.Cpp中。函數(shù)wifi_load_driver()

結(jié)果反饋調(diào)用驅(qū)動,通知上層

insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG)

wifi_change_driver_state(WIFI_DRIVER_STATE_ON) < 0)

property_set(DRIVER_PROP_NAME, "ok");

客戶端 HAL

客戶端 HAL 為wpa_supplicant守護進(jìn)程提供 HIDL 接口。

wpa_supplicant 源代碼位于external/wpa_supplicant_8/wpa_supplicant中。提供 HIDL 接口的 wpa_supplicant 代碼位于hidl子目錄中 啟動startSupplicant

對應(yīng)的路徑如下:libwifi_system/wifi/supplicant_manager.cpp

Hostapd HAL

Hostapd HAL 為hostapd守護進(jìn)程提供 HIDL 接口。hostapd 源代碼位于external/wpa_supplicant_8/hostapd中。提供 HIDL 接口的 hostapd 代碼位于hidl子目錄中。

以上是基于Android P&Android Q中調(diào)試高通wifi過程中對wifi的簡單分析。如有異議的地方歡迎大家與我們一起探討交流,潤欣與您一同成長進(jìn)步!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3925

    瀏覽量

    127155
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8518

    瀏覽量

    150857
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11232

    瀏覽量

    208942
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5290

    瀏覽量

    203311
收藏 人收藏

    評論

    相關(guān)推薦

    WIFI無線技術(shù)各種熱門設(shè)計方案~

    基于WiFi的無線測控系統(tǒng)設(shè)計與實現(xiàn)一種基于WIFI的室內(nèi)定位系統(tǒng)設(shè)計與實現(xiàn)簡述基于WIFI停車場方案闡述藍(lán)牙與
    發(fā)表于 12-13 15:26

    世平推出基于 WIFI 互聯(lián)技術(shù)的車載影音導(dǎo)航系統(tǒng)方案

    。除了具備傳統(tǒng)的視頻播放、車載導(dǎo)航功能之外,還可以實現(xiàn)同屏傳送,收發(fā)郵件、網(wǎng)絡(luò)登陸、網(wǎng)絡(luò)下載等移動互聯(lián)功能。為迎接即將到來的車聯(lián)網(wǎng)時代,世平集團推出基于 WIFI 互聯(lián)
    發(fā)表于 10-27 08:13

    Android9有哪些新功能

    Android9.0 P 電源管理&amp;android各版本電量優(yōu)化功能策略針對電量優(yōu)化android的改動
    發(fā)表于 12-28 08:08

    如何實現(xiàn)Android 9同時STA和AP模式下運行的功能

    如何實現(xiàn)Android 9同時STA和AP模式下運行的功能呢?
    發(fā)表于 03-07 07:34

    RK3288和心版上如何實現(xiàn)WiFi和以太網(wǎng)共存呢

    RK3288 Android 5.1官方SDK(rk3288_android5.1_v1.00_20150515,已更新到20180412),Rockchip官方提供的RK_EVB_RK3288
    發(fā)表于 05-30 14:23

    Android系統(tǒng)終端實現(xiàn)3G WIFI無線漫游

    本文提出了一種基于Android系統(tǒng)終端控制上實現(xiàn)3G到WIFI以及WIFI到3G 的無線漫游機制,分析了3G到WIFI的連接、認(rèn)證、得到A
    發(fā)表于 12-24 00:36 ?1814次閱讀
    <b class='flag-5'>Android</b>系統(tǒng)終端<b class='flag-5'>實現(xiàn)</b>3G <b class='flag-5'>WIFI</b>無線漫游

    基于Android系統(tǒng)終端實現(xiàn)3G WIFI無線漫游

    基于Android系統(tǒng)終端實現(xiàn)3G WIFI無線漫游
    發(fā)表于 01-13 22:02 ?3次下載

    基于androidwifi模塊功能開發(fā)教程

    本文開始介紹了Android平臺下的WIFI模塊的功能,其次介紹了熱點加密類型,最后介紹了androidwifi模塊
    發(fā)表于 04-12 14:51 ?4632次閱讀

    Altera SoC上面演示Android應(yīng)用程序效果

    該演示由Altera全球合作伙伴Fujisoft提供。演示Altera SoC上面Android應(yīng)用程序。并且Fujisoft演示了FPGA邏輯上
    的頭像 發(fā)表于 06-26 08:08 ?3449次閱讀

    Android10功能上做出了哪些升級

    近日谷歌正式宣布將下一版Android命名為Android 10,并于今年秋季發(fā)布。
    的頭像 發(fā)表于 08-27 08:46 ?1767次閱讀

    Android 12 有望允許用戶通過 “附近分享”功能分享 WiFi 密碼

    的分享方式,但仍然存在一些缺點。值得慶幸的是,谷歌正在研究一種更簡單的分享 WiFi 密碼的方法,可能會在即將發(fā)布的 Android 12 上亮相。 Android
    的頭像 發(fā)表于 01-20 16:15 ?1794次閱讀

    Android9.0 P 電源管理&amp;android各版本電量優(yōu)化功能策略

    針對電量優(yōu)化android的改動最近幾個android版本中已存在的電量優(yōu)化功能基礎(chǔ)上,Android
    發(fā)表于 10-22 18:36 ?0次下載
    <b class='flag-5'>Android</b>9.0 P 電源管理&<b class='flag-5'>amp</b>;<b class='flag-5'>android</b>各版本電量優(yōu)化<b class='flag-5'>功能</b>策略

    Android9.0 P 電源管理&amp;android各版本電量優(yōu)化功能策略

    針對電量優(yōu)化android的改動最近幾個android版本中已存在的電量優(yōu)化功能基礎(chǔ)上,Android
    發(fā)表于 01-05 15:06 ?0次下載
    <b class='flag-5'>Android</b>9.0 P 電源管理&<b class='flag-5'>amp</b>;<b class='flag-5'>android</b>各版本電量優(yōu)化<b class='flag-5'>功能</b>策略

    Android9.0 P 電源管理&amp;android各版本電量優(yōu)化功能策略

    Android9.0 P 電源管理&amp;android各版本電量優(yōu)化功能策略針對電量優(yōu)化android的改動
    發(fā)表于 01-05 15:07 ?0次下載
    <b class='flag-5'>Android</b>9.0 P 電源管理&<b class='flag-5'>amp</b>;<b class='flag-5'>android</b>各版本電量優(yōu)化<b class='flag-5'>功能</b>策略

    Android 9以太網(wǎng)功能移植以及設(shè)置IP地址

    基于Android 9實現(xiàn)以太網(wǎng)的IP地址設(shè)置和功能實現(xiàn)
    發(fā)表于 06-20 14:42 ?2次下載