91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

?系統(tǒng):Android 14

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

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

?藍(lán)牙:能搜索到設(shè)備、正常配對(duì)連接,log中無(wú)報(bào)錯(cuò);

?WiFi:點(diǎn)擊開(kāi)啟WiFi”按鈕,進(jìn)度條走完后又自動(dòng)關(guān)閉,上層log報(bào)錯(cuò):

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)鍵,直接暴露了通道問(wè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會(huì)走PCIE通道?

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

wKgZPGkanJiAS1unAABVXuBonGw310.pngDTS配置沒(méi)問(wèn)題,那問(wèn)題在哪?

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

#原來(lái)默認(rèn)啟用了PCIE WiFi配置,驅(qū)動(dòng)優(yōu)先檢測(cè)PCIE通道

PRODUCT_KERNEL_CONFIG += pcie_wifi.config

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

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

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

# PRODUCT_KERNEL_CONFIG += pcie_wifi.config

再次查看內(nèi)核log,WiFi成功走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è)備識(shí)別成功

[dhd] [wlan0] wl_android_wifi_on:g_wifi_on=1// WiFi開(kāi)啟成功

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

二、基礎(chǔ)知識(shí):WiFi /藍(lán)牙模塊怎么對(duì)話主控?

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

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

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

功能

通信通道

用途

速率

WiFi

SDIO/PCIE

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

SDIO 3.0100Mbps)、PCIE1Gbps+

藍(lán)牙

UART

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

UART 115200bps~1Mbps

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

2.模塊的控制信號(hào)GPIO開(kāi)關(guān)

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

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

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

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

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

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

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

?藍(lán)牙驅(qū)動(dòng):通常是bt_uartUART通道)或bt_hciHCI通道),負(fù)責(zé)處理藍(lán)牙協(xié)議棧與硬件的交互;

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

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

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

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

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

?上層日志:查應(yīng)用層錯(cuò)誤(如權(quán)限、服務(wù)啟動(dòng)失?。?/span>

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

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

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

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

#過(guò)濾WiFi/藍(lán)牙/驅(qū)動(dòng)關(guān)鍵詞

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

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

2.通道檢測(cè):確認(rèn)路通不通

通信通道是模塊與主控的橋梁,先確認(rèn)通道是否識(shí)別:

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

ls /sys/bus/sdio/devices/

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

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

lspci#dmesg | grep PCI

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

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

ls /dev/ttyS*#藍(lán)牙通常用ttyS4、ttyS5

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

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

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

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

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

(不同芯片引腳編號(hào)規(guī)則可能不同,需查芯片手冊(cè),比如RK3576GPIO1 PC6對(duì)應(yīng)GPIO54,以實(shí)際手冊(cè)為準(zhǔn))。

2.查看GPIO電平

#進(jìn)入GPIO目錄

cd /sys/class/gpio/

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

echo 54 > export

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

cat gpio54/value

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

驅(qū)動(dòng)沒(méi)加載,通道再通也沒(méi)用。檢查驅(qū)動(dòng)加載情況:

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

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

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

?藍(lán)牙驅(qū)動(dòng):查bt相關(guān)模塊

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

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

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

?臨時(shí)關(guān)閉SELinux(驗(yàn)證是否是權(quán)限問(wèn)題):

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

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

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

四、開(kāi)發(fā)注意事項(xiàng):避免踩坑的“5個(gè)必須

調(diào)試是事后補(bǔ)救,開(kāi)發(fā)時(shí)做好這5點(diǎn),能減少80%WiFi /藍(lán)牙問(wèn)題。

1. DTS配置必須硬軟對(duì)齊

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

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

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

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

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

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

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

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

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

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

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

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

4.硬件必須前期驗(yàn)證

很多問(wèn)題不是軟件配置錯(cuò),而是硬件沒(méi)接對(duì):

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

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

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

5. SELinux必須提前配置

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

?WiFi:允許wifi_hal訪問(wèn)/sys/bus/sdio/、/dev/wlan0;

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

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

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

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

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

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

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



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

    關(guān)注

    5198

    文章

    20442

    瀏覽量

    333986
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    119

    文章

    6312

    瀏覽量

    178689
  • WIFI
    +關(guān)注

    關(guān)注

    82

    文章

    5509

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】--藍(lán)牙通訊

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

    原來(lái)是升職了

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

    藍(lán)牙 wifi嵌入式

    有誰(shuí)在上海做藍(lán)牙 wifi 嵌入式或射頻開(kāi)發(fā)方向的啊? 能否交個(gè)朋友, 請(qǐng)教一下
    發(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)存操作是我們常用到的,但往往也是易錯(cuò)的地方,怎么避免呢,今天給大家分享一些相關(guān)的指南。數(shù)據(jù)指針...
    發(fā)表于 12-17 07:18

    常見(jiàn)的雙通道嵌入式無(wú)線AP模塊有哪些?

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

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

    RK3288 android5.1增加AP6256調(diào)試wifi藍(lán)牙發(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簡(jiǎn)介

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

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

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

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

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

    如何實(shí)現(xiàn)嵌入式系統(tǒng)遠(yuǎn)程調(diào)試

    嵌入式系統(tǒng)隨著目前科技的發(fā)展,正逐步融入人們的生活中。對(duì)于嵌入式系統(tǒng),我們應(yīng)該有所了解。就專業(yè)人員而言,他們對(duì)嵌入式系統(tǒng)早已駕輕就熟。為增進(jìn)大家對(duì)嵌入式系統(tǒng)的認(rèn)識(shí),本文將對(duì)
    的頭像 發(fā)表于 11-22 11:55 ?7031次閱讀
    如何實(shí)現(xiàn)<b class='flag-5'>嵌入式</b>系統(tǒng)遠(yuǎn)程<b class='flag-5'>調(diào)試</b>

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

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