国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

RK3576+Android15+Linux6.1調試EM05 4G模塊全記錄:從底層到上層的踩坑與破局

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

掃碼添加小助手

加入工程師交流群

嵌入式Android開發中,4G模塊的調試往往是牽一發而動全身的關鍵環節——既要搞定底層驅動與內核適配,又要打通上層框架與RILRadio Interface Layer)服務。最近我們在RK3576開發板+ Android15系統+ Linux6.1內核環境下調試EM05 4G模塊時,就遇到了從“RIL起不來庫缺失再到上層功能未開的一系列問題。今天就把完整的調試流程、踩過的坑和解決方案整理出來,希望能給做類似開發的同學避坑!

一、調試環境先明確

在開始前,先把核心環境信息列清楚,避免大家因環境差異導致問題復現偏差:

?硬件:RK3576開發板+ EM05 4G模塊

?系統:Android 15(上層框架)

?內核:Linux 6.1(底層驅動)

?關鍵依賴:Quectel_Android_RIL_Driver_V4.2.1

二、調試全流程:從“RIL未啟動“4G通網

1.初遇困境:模組RIL未啟動,rild文件失蹤

現象

剛上電調試時,發現4G模組完全沒反應,執行service ril-daemon指令無任何輸出——核心的RIL(無線接口層)服務根本沒起來。

wKgZPGkam2yAe-gpAADeI8HhVJA265.png

排查

RIL服務依賴rild可執行文件,其默認路徑是vendor/bin/hw/rild。進入該路徑查看,果然沒有rild文件——系統編譯時壓根沒把rild編進去!

解決方案

需要在代碼中添加rild的編譯配置,具體是:

hardwarerilrild目錄下補充Android.mk文件,通過該.mk文件將rild編譯進系統。重新編譯后,vendor/bin/hw/rild路徑下成功生成rild文件。

2.新問題:rild存在,但鏈接庫缺胳膊少腿

好不容易搞定rild,運行后又報錯——鏈接庫缺失!這一步遇到了兩個典型的庫問題,我們逐個解決。

問題2.1android.hardware.radio系列NDK庫缺失

現象

執行/vendor/bin/hw/rild驗證時,終端報錯:

CANNOT LINK EXECUTABLE "/vendor/bin/hw/rild": library "android.hardware.radio.config-V2-ndk.so" not found: needed by /vendor/lib64/libril.so in namespace

顯然,libril.so依賴的一系列android.hardware.radio相關NDK庫沒加進去。

解決方案

修改hardware/ril/rild/Android.mk文件,在LOCAL_SHARED_LIBRARIES中補充缺失的NDK庫,具體添加內容如下:

--- a/hardware/ril/rild/Android.mk

+++ b/hardware/ril/rild/Android.mk

@ -14,6 +14, 16 @@ LOCAL_SHARED_LIBRARIES :=

liblog

libril

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.config-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.data-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.messaging-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.modem-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.network-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.sim-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio.voice-V2-ndk

+LOCAL_SHARED_LIBRARIES += android.hardware.radio-V2-ndk

添加后重新編譯,將生成的庫文件直接pushvendor/lib64/路徑下。

問題2.2libnetutils.so缺失,訪問路徑不對

wKgZPGkam2yAfJlOAAAQyYmKeow391.png

現象

解決NDK庫后,查看Logcat又出現新報錯(關鍵詞:dlopen failed: library "libnetutils.so" not found):

1547): dlopen failed: dlopen failed: library "libnetutils.so" not found: needed by /vendor/lib64/quectel_ril/libreference-ril.so in namespace (default)

1826): dlopen failed: dlopen failed: library "libnetutils.so" not found: needed by vendor/lib64/quectel_ril/libreference-ril.so in namespace (default)

find命令查找文件位置,發現libnetutils.so其實存在,路徑是./system/lib64/libnetutils.so,但libreference-ril.sovendor目錄下,訪問不到system目錄的庫。

解決方案

直接將/system/lib64/libnetutils.so移動到/vendor/lib64/路徑下(與libreference-ril.so同目錄)。

這一步操作后,底層RIL鏈路終于打通!從Log中能看到AT指令交互(比如查詢服務小區的AT+QENG="servingcell"):

wKgZPGkam2yAQgoBAAEf1KRaz7w293.png

3.上層卡點:無RILJ初始化,4G功能未開啟

底層打通后,查看系統Log發現一個關鍵問題:沒有RILJRIL Java層)初始化相關操作——上層根本不知道要啟用4G功能!

原因

Android系統默認可能關閉了移動數據和電信功能,需要手動開啟配置。

解決方案

分兩步修改上層配置:

步驟1:開啟移動數據能力(修改config.xml

修改overlay/frameworks/base/core/res/res/values/config.xml,添加config_mobile_data_capabletrue(表示支持移動數據),具體diff

--- a/overlay/frameworks/base/core/res/res/values/config.xml

+++ b/overlay/frameworks/base/core/res/res/values/config.xml

@@ -24,6 +24,11 @@

false

true

步驟2:添加電信功能權限(修改device.mk

修改device.mk,添加電信功能的權限配置文件拷貝,確保系統識別為支持電信功能的設備

+++ b/device.mk

@@ -260,6 +260,9 @@ PRODUCT_COPY_FILES +=

frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml

endif

+PRODUCT_COPY_FILES +=

frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml

4.再遇波折:HAL配置缺失,功能仍不通

修改完上層配置后,運行還是沒通——查了半天發現,缺少4G模塊對應的HAL(硬件抽象層)配置,導致上層無法與底層RIL服務通信。

解決方案

devicerockchipcommon4g_modem目錄下創建/修改manifest.xml,添加android.hardware.radio系列HALAIDL配置(版本均為V2,對應之前的NDK庫版本):

android.hardware.radio.config

2

IRadioConfig/default

android.hardware.radio.data

2

IRadioData/slot1

android.hardware.radio.messaging

2

IRadioMessaging/slot1

android.hardware.radio.modem

2

IRadioModem/slot1

android.hardware.radio.network

2

IRadioNetwork/slot1

android.hardware.radio.sim

2

IRadioSim/slot1

android.hardware.radio.voice

2

IRadioVoice/slot1

5.最后一公里:ril-daemon服務被停止

配置完HAL后,功能還是沒通!用getprop |grep ril查看服務狀態,發現關鍵問題:

[init.svc.ril-daemon]:[stopped]

——ril-daemon服務被莫名關掉了,電話服務也隨之停用。

解決方案

關閉系統中可能導致ril-daemon停止的配置(具體需結合實際設備的初始化腳本,此處為針對性關閉沖突配置)。

操作后重啟服務,ril-daemon終于保持“running”狀態!

6.驗證:4G功能完全打通

至此,所有問題解決!我們做了三項驗證,確認4G功能正常:

1.網卡信息正常wwan0網卡已識別,獲取到運營商分配的IP

wwan0

Link encap:Ethernet HWaddr e28b6f:c4 Driver qmi_wwan_q

inet addr:10.35.91.190 Mask:255.255.255.252

inet6 addr: fe80:8bff6fc4/64 Scope:Link

UP RUNNING NOARP MTU:1500 Metric:1

RX packets:31 errors:0 dropped:0 overruns:0 frame:0

TX packets:46 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:5678 TX bytes:3960

1.Ping通外網:執行ping www.baidu.com,無丟包,延遲正常:

PING www.a.shifen.com (157.148.69.151) 56(84) bytes of data.

64 bytes from 157.148.69.151: icmp_seq=1 ttl=52 time=29.9 ms

64 bytes from 157.148.69.151: icmp_seq=2 ttl=52 time=48.6 ms

64 bytes from 157.148.69.151: icmp_seq=3 ttl=52 time=55.3 ms

--- www.a.shifen.com ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2003ms

1.系統顯示正常Android界面顯示已連接China Unicom / 4G”,網絡狀態穩定。

wKgZPGkam2yAadHBAAJEHPVVK2I768.png

三、關鍵代碼修改記錄匯總

為了方便大家后續復用,這里把調試過程中所有修改/新增的文件列出來(含路徑),避免遺漏:

操作類型

涉及文件路徑

關鍵修改內容

修改

hardware/ril/rild/Android.mk

補充android.hardware.radio系列NDK庫依賴

修改

overlay/frameworks/base/core/res/res/values/config.xml

開啟config_mobile_data_capable

修改

device.mk(含device/rockchip/common/device.mkdevice/rockchip/rk3576/device.mk

添加android.hardware.telephony.gsm.xml拷貝

修改

device/rockchip/common/4g_modem/manifest.xml

配置android.hardware.radio系列HAL

移動

/system/lib64/libnetutils.so → /vendor/lib64/

調整庫文件路徑,解決訪問問題

新增

hardware/ril/rild/Android.mk

編譯rild文件進系統

其他修改

build/make/core/Makefile、device/rockchip/common/BoardConfig.mkkernel-6.1/drivers/net/usb/qmi_wwan_q.c

適配內核驅動、系統編譯配置

新增目錄/文件

device/rockchip/common/4g_modem/、device/rockchip/rk3576/em05_quectel_ril/、external/usb_modeswitch/

4G模塊依賴文件、工具

四、調試心得

這次EM05 4G模塊調試,本質是從底層到上層的逐層排查:

1.先解決有沒有:比如rild文件是否存在、庫文件是否齊全,這是基礎;

2.再解決通不通:比如庫路徑是否正確、HAL配置是否匹配,這是鏈路;

3.最后解決啟不啟:比如服務是否運行、上層功能是否開啟,這是功能。

過程中一定要善用dmesg(內核日志)、logcatAndroid日志)、getprop(系統屬性)、find(文件查找)等命令,定位問題會事半功倍。

如果大家也在RK3576+Android15環境下調試4G模塊,遇到類似問題可以參考本文,祝大家少踩坑、快通網!



聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5198

    文章

    20442

    瀏覽量

    333971
  • Android
    +關注

    關注

    12

    文章

    4024

    瀏覽量

    133970
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK3576 Android 14.0 SDK開發指南(第一集)

    RK3576 Android 14.0 SDK代碼編譯 SDK下載到本地后大概70多個G 下載后要做個校驗 解壓后內核源碼 kernel代碼路徑說明 Android14支持
    發表于 05-20 08:43

    Linux學習過程過的與如何解決

    Linux記錄記錄Linux學習過程過的
    發表于 11-04 08:44

    記錄寫SAM4S的bootloader所

    記錄寫SAM4S的bootloader所
    發表于 01-24 07:16

    關于RK1808板子調試過程過的記錄

    關于RK1808板子調試過程過的記錄
    發表于 02-16 06:38

    如何調試RK3288 Android5.1 4G模塊?

    如何調試RK3288 Android5.1 4G模塊
    發表于 03-03 07:46

    如何對RK3288 Android8上的4G模塊EC20進行調試

    如何對RK3288 Android8上的4G模塊EC20進行調試呢?
    發表于 03-04 06:42

    怎樣在RK3288 Android上去移植4G模塊EC20呢

    怎樣在RK3288 Android上去移植4G模塊EC20呢?有哪些移植步驟?
    發表于 03-04 06:01

    如何對RK3399上的4G模塊EC20進行調試

    怎樣去移植RK3399上的4G模塊EC20呢?如何對RK3399上的4G模塊EC20進行
    發表于 03-07 06:15

    嵌入式Linux記錄

    Linux記錄記錄Linux學習過程過的
    發表于 11-01 17:21 ?10次下載
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>

    STM32CubeIDE+FREERTOS記錄

    STM32CubeIDE+FREERTOS記錄
    發表于 12-05 18:06 ?15次下載
    STM32CubeIDE+FREERTOS<b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>

    初次編譯rk3568(rk3576Linux 6.1內核記錄報錯終止到成功解決的完整流程

    很多剛接觸瑞芯微 rk 系列芯片開發的小伙伴,在初次編譯基于 Linux 6.1 內核的系統時,很容易因為環境依賴問題卡殼。最近我在編譯 rk3576
    的頭像 發表于 02-06 16:47 ?2561次閱讀
    初次編譯<b class='flag-5'>rk</b>3568(<b class='flag-5'>rk3576</b>)<b class='flag-5'>Linux</b> <b class='flag-5'>6.1</b>內核<b class='flag-5'>踩</b><b class='flag-5'>坑</b><b class='flag-5'>記錄</b>:<b class='flag-5'>從</b>報錯終止到成功解決的完整流程

    嵌入式Android調試:AP6256藍牙正常WiFi失效?原來是通道選錯了!

    WiFi” 毫無反應,日志里還一堆報錯。最近調試 RK3576+Android14+AP6256 模塊時,就了這個,最后發現竟是 “通
    的頭像 發表于 02-02 17:16 ?2189次閱讀
    嵌入式<b class='flag-5'>Android</b><b class='flag-5'>調試</b>避<b class='flag-5'>坑</b>:AP6256藍牙正常WiFi失效?原來是通道選錯了!

    保姆級教程!RK3588 Linux6.1?固件簽名完整實現方案(不含rootfs)

    內核)上實操固件簽名時,了不少官方文檔的,經過反復調試終于打通全流程。今天就把這份實戰經驗整理成保姆級教程,配置到問題排查,一步步帶大家搞定
    的頭像 發表于 01-14 17:21 ?1822次閱讀
    保姆級教程!<b class='flag-5'>RK</b>3588 <b class='flag-5'>Linux6.1</b>?固件簽名完整實現方案(不含rootfs)

    硬核進階:RK3576 Android15?驅動與系統開發實戰指南

    android15,想與大家探討更多,不僅僅是驅動,更包含android其他方面。 各位嵌入式與Android開發的朋友們,我們的? RK3576
    的頭像 發表于 01-26 22:29 ?627次閱讀
    硬核進階:<b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b>?驅動與系統開發實戰指南

    RK3576 Android15音頻開發必看:alsa_route核心文件解析與修改場景

    ——alsa_route(alsa_route.h/alsa_route.c)。 作為連接Android上層音頻框架與底層ALSA驅動的“橋梁”,alsa_route是RK3576
    的頭像 發表于 02-26 08:08 ?80次閱讀
    <b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b>音頻開發必看:alsa_route核心文件解析與修改場景