chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

嵌入式Android調(diào)試避坑:AP6256藍牙正常WiFi失效?原來是通道選錯了!

jf_44130326 ? 來源:Linux1024 ? 2026-02-02 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式Android開發(fā)的朋友,大概率遇到過這樣的迷惑場景WiFi /藍牙二合一模塊(比如常見的AP6XXX系列),藍牙能正常連接,WiFi卻死活打不開——點擊開啟WiFi”毫無反應(yīng),日志里還一堆報錯。最近調(diào)試RK3576+Android14+AP6256模塊時,就踩了這個坑,最后發(fā)現(xiàn)竟是通信通道選錯導(dǎo)致的。今天就結(jié)合這個案例,帶大家搞懂WiFi /藍牙的工作邏輯、調(diào)試手段和開發(fā)注意事項,下次遇到類似問題能快速破局。

一、調(diào)試案例:AP6256冰火兩重天

先交代下調(diào)試環(huán)境:

?主控:RK3576Rockchip中端處理器,常用于物聯(lián)網(wǎng)、工業(yè)設(shè)備)

?系統(tǒng):Android 14

?模塊:AP6256Broadcom旗下WiFi /藍牙二合一模塊,支持2.4G WiFi +藍牙5.0

1.現(xiàn)象:藍牙正常,WiFi “躺平

?藍牙:能搜索到設(shè)備、正常配對連接,log中無報錯;

?WiFi:點擊開啟WiFi”按鈕,進度條走完后又自動關(guān)閉,上層log報錯:

E android.hardware.bluetooth@1.0-service: maybe there is no usb wifi or sdio or pcie wifi, set default wifi module Broadcom APXXX: Permission denied

wKgZPGkanJiAeqpMAAIJzncK2Ic697.png

?內(nèi)核log更關(guān)鍵,直接暴露了通道問題:

[dhd] ======== Card detection to detect PCIE card! ========

[dhd] No Broadcom or Synaptics PCI device enumerated!

[dhd] dhd_wifi_platform_load_pcie: dhd_bus_register failed err=-1

[dhd] _dhd_module_init: Failed to load the driver, try cnt 1

wKgZPGkanJiAAy-4AABBbI2KBjg565.png

2.排查:為什么WiFi會走PCIE通道?

先看DTS(設(shè)備樹)配置,理論上AP6256WiFi應(yīng)走SDIO通道(模塊手冊明確支持SDIO 3.0,不支持PCIE):

wKgZPGkanJiAS1unAABVXuBonGw310.pngDTS配置沒問題,那問題在哪?

翻到BoardConfig.mk(編譯配置文件),發(fā)現(xiàn)一行隱藏配置

#原來默認啟用了PCIE WiFi配置,驅(qū)動優(yōu)先檢測PCIE通道

PRODUCT_KERNEL_CONFIG += pcie_wifi.config

3.解決:禁用PCIE通道,讓WiFiSDIO

直接注釋掉這行配置,重新編譯燒錄:

#禁用PCIE WiFi配置,避免驅(qū)動優(yōu)先檢測不支持的通道

# PRODUCT_KERNEL_CONFIG += pcie_wifi.config

再次查看內(nèi)核logWiFi成功走SDIO通道加載:

[dhd] dhd_wifi_platform_load: Enter

[dhd] wifi_platform_set_power =1, delay: 200 msec//電源使能

[WLAN_RFKILL]: wifi turn on power [GPIO54-1]//電源引腳置高

[dhd] wifi_platform_bus_enumerate device present 1// SDIO設(shè)備識別成功

[dhd] [wlan0] wl_android_wifi_on:g_wifi_on=1// WiFi開啟成功

WiFi終于能正常開啟并連接網(wǎng)絡(luò),問題解決!

二、基礎(chǔ)知識:WiFi /藍牙模塊怎么對話主控?

很多人調(diào)試時只看配置,卻不懂模塊的工作邏輯,遇到問題容易慌。這里用AP6256為例,講清楚嵌入式AndroidWiFi /藍牙的核心通信原理。

1.二合一模塊的分工:共享硬件,獨立通道

AP6XXX系列(如AP6256、AP6356)是典型的“WiFi +藍牙二合一模塊,內(nèi)部集成了WiFi芯片、藍牙芯片和電源管理單元,但與主控(如RK3576)的通信通道是獨立的:

功能

通信通道

用途

速率

WiFi

SDIO/PCIE

傳輸高速數(shù)據(jù)(如上網(wǎng)、投屏)

SDIO 3.0100Mbps)、PCIE1Gbps+

藍牙

UART

傳輸?shù)退贁?shù)據(jù)(如配對、傳文件)

UART 115200bps~1Mbps

關(guān)鍵結(jié)論:藍牙正常說明UART通道配置正確,WiFi失效大概率是通道(SDIO/PCIE)或電源控制出問題——這也是本次案例的核心邏輯。

2.模塊的控制信號GPIO開關(guān)

除了通信通道,模塊還需要3個關(guān)鍵GPIO引腳與主控交互,這3個引腳配置錯了,模塊也無法工作:

?poweren(電源使能):主控通過該引腳給模塊供電(高電平=供電,低電平=斷電),DTSWIFI,poweren_gpio需與硬件一致;

?reset(復(fù)位):模塊異常時,主控通過該引腳復(fù)位模塊(通常低電平復(fù)位,復(fù)位后置高),AP6256的復(fù)位引腳在sdio_pwrseq中配置;

?wake(喚醒):模塊主動通知主控(如WiFi收到數(shù)據(jù)、藍牙被搜索到),DTSWIFI,host_wake_irq就是這個功能,需配置正確的中斷觸發(fā)方式(如GPIO_ACTIVE_HIGH)。

3.驅(qū)動的角色:翻譯官

主控與模塊的通信需要翻譯官”——驅(qū)動程序:

?WiFi驅(qū)動:Broadcom模塊用dhd驅(qū)動(如本次案例中的bcmdhd驅(qū)動),Realtek模塊用rtl8189ftv等;

?藍牙驅(qū)動:通常是bt_uartUART通道)或bt_hciHCI通道),負責處理藍牙協(xié)議棧與硬件的交互;

?驅(qū)動加載失敗的常見原因:通道不匹配(如PCIE驅(qū)動加載SDIO模塊)、驅(qū)動版本不兼容(Android14需適配新驅(qū)動接口)。

三、實用調(diào)試手段:按這5步,定位問題不迷路

遇到WiFi /藍牙問題,不要盲目改配置,按日志通道→GPIO→驅(qū)動權(quán)限的流程排查,90%的問題能解決。

1.日志分析法:抓準關(guān)鍵信息

日志是調(diào)試的眼睛,但要區(qū)分上層日志(應(yīng)用/服務(wù))和內(nèi)核日志(驅(qū)動/硬件):

?上層日志:查應(yīng)用層錯誤(如權(quán)限、服務(wù)啟動失敗)

#過濾WiFi和藍牙相關(guān)日志

logcat -s "android.hardware.bluetooth" "wifi" "wificond"

關(guān)鍵報錯:Permission denied(權(quán)限問題)、No such file or directory(設(shè)備文件缺失,通道未識別)。

?內(nèi)核日志:查驅(qū)動/硬件問題(如通道檢測、GPIO狀態(tài))

#過濾WiFi/藍牙/驅(qū)動關(guān)鍵詞

dmesg | grep -E "wifi|dhd|wlan|BT|sdio|pcie"

關(guān)鍵報錯:No PCI device enumeratedPCIE通道不支持)、wifi_platform_set_power failed(電源引腳配置錯)。

2.通道檢測:確認路通不通

通信通道是模塊與主控的橋梁,先確認通道是否識別:

?SDIO通道:查看SDIO設(shè)備是否存在(AP6256WiFiSDIO

ls /sys/bus/sdio/devices/

#正常應(yīng)顯示類似“mmc11”的設(shè)備(mmc1SDIO控制器

?PCIE通道:查看PCIE設(shè)備(高端模塊如AP6398PCIE

lspci#dmesg | grep PCI

#無輸出說明無PCIE設(shè)備,模塊不支持PCIE

?UART通道:查看藍牙對應(yīng)的UART設(shè)備

ls /dev/ttyS*#藍牙通常用ttyS4、ttyS5

#結(jié)合DTSuart_rts_gpios配置,確認UART設(shè)備正確

3. GPIO狀態(tài)驗證:開關(guān)是否按對

GPIO是模塊的電源開關(guān)復(fù)位按鈕,配置對了但電平錯了,模塊也無法工作。以本次案例的poweren_gpiogpio1 RK_PC6)為例:

1.計算GPIO編號RK芯片的GPIO編號公式為「引腳組編號*32 +組內(nèi)引腳號」。

比如gpio1 RK_PC6gpio1是第1組(從0開始),RK_PC6是組內(nèi)第14個引腳(PC0=8,PC1=9...PC6=14),所以編號= 1*32 +14=46?

(不同芯片引腳編號規(guī)則可能不同,需查芯片手冊,比如RK3576GPIO1 PC6對應(yīng)GPIO54,以實際手冊為準)。

2.查看GPIO電平

#進入GPIO目錄

cd /sys/class/gpio/

#導(dǎo)出GPIO(若未導(dǎo)出)

echo 54 > export

#查看電平(1=高電平,0=低電平,poweren需為1

cat gpio54/value

4.驅(qū)動加載檢查:翻譯官在不在

驅(qū)動沒加載,通道再通也沒用。檢查驅(qū)動加載情況:

?WiFi驅(qū)動Broadcom模塊查dhd,Realtekrtl

lsmod | grep dhd#正常應(yīng)顯示dhd模塊

#若未加載,檢查內(nèi)核配置:CONFIG_BCMDHD=y

?藍牙驅(qū)動:查bt相關(guān)模塊

lsmod | grep bt#正常應(yīng)顯示bt_uartbt_hci

5.權(quán)限排查:Android高版本必查

Android 10 +默認啟用SELinux(強制模式),權(quán)限不足會導(dǎo)致模塊無法訪問設(shè)備文件:

?臨時關(guān)閉SELinux(驗證是否是權(quán)限問題):

setenforce 0#切換為寬容模式(permissive

?若關(guān)閉后WiFi正常,說明是SELinux權(quán)限問題,需添加規(guī)則(如允許wifi服務(wù)訪問SDIO設(shè)備):

device/rockchip/rk3576/sepolicy/vendor/目錄下添加規(guī)則文件,允許wifi_hal訪問/sys/bus/sdio/devices。

四、開發(fā)注意事項:避免踩坑的“5個必須

調(diào)試是事后補救,開發(fā)時做好這5點,能減少80%WiFi /藍牙問題。

1. DTS配置必須硬軟對齊

DTS硬件描述文件,每一個參數(shù)都要與硬件schematic(原理圖)完全匹配:

?模塊類型wifi_chip_type = "ap6256"(不能錯寫為ap6255/ap6356,否則驅(qū)動加載錯);

?GPIO引腳poweren_gpio、host_wake_irq必須與原理圖一致(比如原理圖中WiFi電源接gpio1 PC6,DTS不能寫gpio2 PC6);

?電源序列sdio_pwrseqpost-power-on-delay-ms(延遲時間)需參考模塊手冊(AP6256建議200ms,太短模塊未就緒,太長啟動慢)。

2.通道配置必須匹配模塊特性

先查模塊手冊,確認WiFi支持的通道(SDIO/PCIE),再禁用不支持的通道:

?低端模塊(如AP6256AP6212):通常只支持SDIO,需禁用PCIE配置(如注釋pcie_wifi.config);

?高端模塊(如AP6398、AP6498):支持PCIE,需禁用SDIO配置,同時在DTS中添加PCIE相關(guān)節(jié)點。

3.驅(qū)動必須版本兼容

Android版本與驅(qū)動版本必須匹配,否則會出現(xiàn)接口不兼容:

?Android 12+:需使用支持“WiFi HAL 1.5”的驅(qū)動(如bcmdhd版本≥1.367.33);

?內(nèi)核版本:驅(qū)動需適配內(nèi)核版本(如本次案例用Linux 6.1內(nèi)核,驅(qū)動需編譯為6.1版本)。

4.硬件必須前期驗證

很多問題不是軟件配置錯,而是硬件沒接對:

?電源電壓AP62563.3V供電,若接5V會燒毀模塊,接2.5V會供電不足;

?引腳焊接SDIO引腳(如DATA0~DATA3、CLK)虛焊會導(dǎo)致設(shè)備識別失敗;

?復(fù)位時序:模塊上電后需等待復(fù)位完成(通常100~200ms),再初始化通道,否則會識別失敗。

5. SELinux必須提前配置

Android高版本(10+SELinux默認enforcing模式,需提前添加模塊所需權(quán)限:

?WiFi:允許wifi_hal訪問/sys/bus/sdio/、/dev/wlan0;

?藍牙:允許bluetooth服務(wù)訪問/dev/ttyS*UART設(shè)備);

?推薦做法:開發(fā)初期用setenforce 0驗證權(quán)限問題,再將規(guī)則固化到SELinux策略中。

五、總結(jié):調(diào)試的核心是定位方向

這次AP6256的調(diào)試,沒有復(fù)雜的代碼修改,只是注釋了一行配置,但關(guān)鍵在于從日志中定位到通道問題。很多人調(diào)試時容易陷入盲目改配置的誤區(qū),卻忽略了先看日志定方向,再查硬軟匹配度的基本邏輯。

最后給大家一個調(diào)試口訣:

藍牙正常看WiFi,通道優(yōu)先查日志;SDIO/PCIE分清楚,GPIO電平要記?。或?qū)動版本別忽略,權(quán)限問題別糊涂。

下次遇到WiFi /藍牙問題,不妨按這個思路走一遍,大概率能快速找到問題所在。你在調(diào)試中還遇到過哪些奇葩問題?歡迎在評論區(qū)分享,一起避坑~



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

    關(guān)注

    5202

    文章

    20516

    瀏覽量

    335257
  • 藍牙
    +關(guān)注

    關(guān)注

    119

    文章

    6336

    瀏覽量

    178945
  • WIFI
    +關(guān)注

    關(guān)注

    82

    文章

    5515

    瀏覽量

    213827
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RK3588-WIF/BT調(diào)試AP6256

    RK3588-WIF/BT調(diào)試AP6256
    的頭像 發(fā)表于 06-10 10:33 ?6750次閱讀
    RK3588-WIF/BT<b class='flag-5'>調(diào)試</b>之<b class='flag-5'>AP6256</b>

    【HZ-RK3568開發(fā)板免費體驗】--藍牙通訊

    開發(fā)板搭載了AP6256 模塊具有藍牙功能。 源代碼在合眾恒躍提供的rk356x_linux_sdk/AP6256-BSA 目錄下。 1.登陸開發(fā)板,切換到根目錄的 bt_bsa 目錄
    發(fā)表于 08-10 22:26

    AP6256 wifi模塊無法上電怎么解決?

    interface [wlan0]MAC: 40:d9:5a:2e:02:86 [12.692139] [12.700076] [dhd] [wlan0] wl_android_wifi
    發(fā)表于 03-14 15:36

    原來是升職了

    {:7:}我之前還納悶分類版主是什么,原來是包括了下面好幾個版塊。今天上版主交流區(qū)才剛看到調(diào)整通知(兩個月前的,呵呵)。怎么沒收到通知呢?每次我都是直奔單片機版塊的。本人主要是使用單片機和DSP的,還沒系統(tǒng)地學(xué)過ARM和嵌入式,還希望有才之士毛遂自薦,過來助我一臂之力。
    發(fā)表于 08-05 10:40

    藍牙 wifi嵌入式

    有誰在上海做藍牙 wifi 嵌入式或射頻開發(fā)方向的啊? 能否交個朋友, 請教一下
    發(fā)表于 06-16 11:22

    AP6xxx系列Pin to Pin高性能WiFi模塊應(yīng)用參考原理圖

    6452 AP6251UAP6234 AP6255 AP6335 AP6256 AP6441AP6181
    發(fā)表于 07-06 16:35

    分享一些嵌入式系統(tǒng)編程中內(nèi)存操作相關(guān)的指南

    嵌入式系統(tǒng)的編程中,內(nèi)存操作是我們常用到的,但往往也是易錯的地方,怎么避免呢,今天給大家分享一些相關(guān)的指南。數(shù)據(jù)指針...
    發(fā)表于 12-17 07:18

    常見的雙通道嵌入式無線AP模塊有哪些?

    QCA9531芯片具有哪些功能特性?常見的雙通道嵌入式無線AP模塊有哪些?
    發(fā)表于 12-27 07:13

    RK3288 android5.1增加AP6256調(diào)試wifi藍牙發(fā)現(xiàn)不可用怎么解決?

    RK3288 android5.1增加AP6256調(diào)試wifi藍牙發(fā)現(xiàn)不可用怎么解決?
    發(fā)表于 03-03 06:36

    如何新增wifi模塊ap6256?

    如何新增wifi模塊ap6256
    發(fā)表于 03-03 06:59

    怎樣在RK3288 Android7.1 5.1上增加AP6256 WI-FI Bluetooth呢

    怎樣在RK3288 Android7.1 5.1上增加AP6256 WI-FI Bluetooth呢?有哪些添加步驟?
    發(fā)表于 03-03 07:23

    替代正基AP6256WIFI6模塊YM5411簡介

    正基AP6256是一款非常通用的WIFI5模組,在許多RK方案商的BOOM里面都有這個料。這個模組采用的主控是新思SYN43456這個芯片,隨著市場競爭壓力,很多客戶渴望方案降成。 國內(nèi)模組廠采用
    發(fā)表于 11-23 17:27

    嵌入式系統(tǒng)的遠程調(diào)試

      1 基本方法   圖1(a)是傳統(tǒng)的嵌入式調(diào)試方法:主機PC通過串口與從機嵌入式系統(tǒng)相連,接收從嵌入式系統(tǒng)發(fā)來的調(diào)試信息并向
    發(fā)表于 08-30 10:23 ?1305次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)的遠程<b class='flag-5'>調(diào)試</b>

    AP6330單通道11ac雙頻藍牙wifi模塊芯片資料下載.pdf

    AP6330單通道11ac雙頻藍牙wifi模塊芯片資料下載.pdf
    發(fā)表于 05-25 15:33 ?59次下載

    AP6256 WIFI模塊中文版規(guī)格書

    AMPAK Technology AP6256 是一個完全的 Wi-Fi 和藍牙功能模塊,具有無縫漫游功能和高級安全性,還可以與不同供應(yīng)商的符合 SISO 標準的 802.11a/b/g/n/ac
    發(fā)表于 07-16 11:40 ?17次下載