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

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

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

在基于ARM的設(shè)計(jì)上調(diào)試Android平臺(tái)

星星科技指導(dǎo)員 ? 來源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Achim Nohl ? 2022-06-22 11:04 ? 次閱讀

如果不觸及 Android 軟件堆棧的內(nèi)部,就無法在新設(shè)備上啟動(dòng) Android。雖然 Java 應(yīng)用層在很大程度上保持不變,但必須在 Java 原生層、硬件適配層以及底層 Linux 內(nèi)核及其驅(qū)動(dòng)程序中完成工作。此外,特定于設(shè)備的服務(wù)和應(yīng)用程序需要與 Android 的其余部分一起集成和測(cè)試。

在軟件堆棧中的所有這些層之間垂直集成設(shè)備功能是一個(gè)相當(dāng)大的挑戰(zhàn)。在單層中隔離和調(diào)試一個(gè)軟件模塊可能很困難;更重要的是,任何調(diào)試框架都不支持跨所有層調(diào)試多個(gè)交互模塊,因此需要耐心和許多 printf 跟蹤消息。

為了解決這個(gè)問題,CoWare 開發(fā)了適用于 Android 的 Virtual ARM 開發(fā)板,它提供了一個(gè) Android 感知的調(diào)試和分析框架,支持確定性和連續(xù)的自上而下的調(diào)試方法。Android 意識(shí)首先通過檢測(cè)和跟蹤 ARM Linux 操作系統(tǒng)上下文(如中斷處理程序、內(nèi)核線程、驅(qū)動(dòng)程序和用戶空間進(jìn)程)的能力而引人注目。立即觀察進(jìn)程調(diào)度的能力可以洞察整個(gè)系統(tǒng)行為。

例如,圖 1 顯示了設(shè)備從深度睡眠掛起模式恢復(fù)后系統(tǒng)死鎖的在線上下文跟蹤。當(dāng)設(shè)備喚醒但未對(duì)任何按鍵或觸摸屏做出反應(yīng)時(shí),系統(tǒng)陷入軟件中斷 (swi) 處理程序和 Android 的輸入設(shè)備讀取器進(jìn)程 (InputDeviceRead) 之間的死鎖。通過這種分析,很明顯沒有其他重要進(jìn)程(例如窗口管理器)用于處理按鍵操作。

圖 1:在線上下文跟蹤顯示設(shè)備從深度睡眠掛起模式喚醒后出現(xiàn)系統(tǒng)死鎖。

pYYBAGKyhtmAKlueAAST-3qeqrY494.png

支持自上而下的調(diào)試流程,每個(gè)過程都可以在功能上進(jìn)一步研究到指令級(jí)。甚至可以跟蹤內(nèi)存訪問,從而可以有效地分析軟件堆棧中各層的行為。

圖 2 說明了 Android 輸入設(shè)備讀取器進(jìn)程與內(nèi)核軟件中斷之間的函數(shù)級(jí)交互。識(shí)別實(shí)際執(zhí)行的代碼有助于隔離大型第三方軟件代碼庫中需要開發(fā)人員注意的位置,并演示軟件如何跨各個(gè)層進(jìn)行交互。在圖 2 中,觀察 Android 中間件函數(shù) read_notify 如何觸發(fā)內(nèi)核軟件中斷 swi。

圖 2:調(diào)試 Android 用戶空間和 Linux 內(nèi)核之間的差距展示了軟件堆棧中跨層的行為。

poYBAGKyhuSAbQgcAAcKFUlts5Y684.png

分析解決方案集成了 Android 和 Linux 中存在的日志記錄和跟蹤功能。無需對(duì)軟件的任何部分進(jìn)行檢測(cè)或更改,Android 記錄器和內(nèi)核調(diào)試消息就會(huì)與之前引入的跟蹤一起被捕獲和可視化。這樣,開發(fā)人員可以繼續(xù)使用那些具有附加值的工具,即所有日志和跟蹤都同步,并且可以輕松地與流程和軟件功能相關(guān)聯(lián),如圖 3 所示。

圖 3:開發(fā)人員可以可視化 Android 記錄器和內(nèi)核調(diào)試消息以及之前引入的跟蹤。

pYYBAGKyhuyAGZmeAAalhULqiak481.png

請(qǐng)注意,Android 日志并沒有與重要的內(nèi)核調(diào)試消息分開,查看這些消息不再需要工作的用戶空間應(yīng)用程序(例如 dmesg 或 logcat)。當(dāng)系統(tǒng)損壞并且查看器應(yīng)用程序或調(diào)試橋不再運(yùn)行時(shí),通常需要訪問跟蹤。一個(gè)示例是引導(dǎo)的早期階段或與深度睡眠模式之間的轉(zhuǎn)換。該分析解決方案通過虛擬平臺(tái)提供的非侵入式控制和檢查功能直接從嵌入式軟件中捕獲跟蹤。

虛擬 ARM 開發(fā)板和工具通過強(qiáng)大的系統(tǒng)級(jí)分析工具補(bǔ)充了現(xiàn)有的 Android 開發(fā)環(huán)境。該板可與使用 Android 調(diào)試橋的 Google Eclipse SDK 等工具配合使用。RealView Debugger (RVD)、Lauterbach 或 Data Display Debugger (DDD) 等最先進(jìn)的調(diào)試器可以使用板作為目標(biāo)而不是硬件來執(zhí)行嵌入式軟件調(diào)試(參見圖 4)。

這種高水平的可見性以及非侵入式檢查和可控性使調(diào)試 Android 成為一項(xiàng)更加簡(jiǎn)化和可預(yù)測(cè)的任務(wù)。

審核編輯:郭婷

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

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298563
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126623
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1006

    瀏覽量

    45417
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    丟掉數(shù)據(jù)線,你還會(huì)調(diào)試Android設(shè)備嗎?

    ADB(AndroidDebugBridge)作為Android開發(fā)中非常重要的工具,開發(fā)者可以使用ADB設(shè)備電腦上對(duì)Android設(shè)備進(jìn)行安裝調(diào)
    的頭像 發(fā)表于 08-14 17:09 ?159次閱讀
    丟掉數(shù)據(jù)線,你還會(huì)<b class='flag-5'>調(diào)試</b><b class='flag-5'>Android</b>設(shè)備嗎?

    如何在服務(wù)器上調(diào)試本地FPGA板卡

    聯(lián)合開發(fā)或者跑多策略工程的時(shí)候,一般都使用多核的服務(wù)器進(jìn)行FPGA設(shè)計(jì)。這個(gè)時(shí)候如果板卡在本地電腦上應(yīng)該怎么進(jìn)行調(diào)試呢? 今天就簡(jiǎn)單講講《如何在服務(wù)器上調(diào)試本地FPGA板卡
    發(fā)表于 07-31 17:36

    Android案例分享,基于瑞芯微RK3568國(guó)產(chǎn)平臺(tái)!

    SDK:Rockchip_Android13_SDK_Release ? 硬件平臺(tái)介紹 創(chuàng)龍科技TL3568-EVM是一款基于瑞芯微RK3568J/RK3568B2處理器設(shè)計(jì)的四核ARM Cortex-A55國(guó)產(chǎn)工業(yè)評(píng)估板
    的頭像 發(fā)表于 06-20 10:04 ?444次閱讀
    <b class='flag-5'>Android</b>案例分享,基于瑞芯微RK3568國(guó)產(chǎn)<b class='flag-5'>平臺(tái)</b>!

    鴻蒙ArkUI-X跨語言調(diào)用說明:【平臺(tái)橋接開發(fā)指南(Android)】

    平臺(tái)橋接用于客戶端(ArkUI)和平臺(tái)Android或iOS)之間傳遞消息,即用于ArkUI與平臺(tái)雙向數(shù)據(jù)傳遞、ArkUI側(cè)調(diào)用平臺(tái)的方法
    的頭像 發(fā)表于 05-25 16:26 ?443次閱讀
    鴻蒙ArkUI-X跨語言調(diào)用說明:【<b class='flag-5'>平臺(tái)</b>橋接開發(fā)指南(<b class='flag-5'>Android</b>)】

    鴻蒙ArkUI-X跨平臺(tái)開發(fā):【bility開發(fā)說明(Android平臺(tái))】

    本文介紹將ArkUI框架擴(kuò)展到Android平臺(tái)所需要的必要的類及其使用說明,開發(fā)者基于OpenHarmony,可復(fù)用大部分的應(yīng)用代碼(生命周期等)并可以部署到Android平臺(tái),降低
    的頭像 發(fā)表于 05-21 10:54 ?733次閱讀
    鴻蒙ArkUI-X跨<b class='flag-5'>平臺(tái)</b>開發(fā):【bility開發(fā)說明(<b class='flag-5'>Android</b><b class='flag-5'>平臺(tái)</b>)】

    freertos啟用IAR自帶插件調(diào)試時(shí)不能查看隊(duì)列信息怎么解決?

    IAR平臺(tái)上調(diào)試freertos,想利用IAR自帶的freertos插件進(jìn)行調(diào)試,但是只能看task的信息,不能看隊(duì)列信息顯示
    發(fā)表于 05-07 06:54

    ARM Cortex-A53嵌入式開發(fā)平臺(tái)Android手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《ARM Cortex-A53嵌入式開發(fā)平臺(tái)Android手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-28 15:10 ?0次下載

    FunASR語音大模型Arm Neoverse平臺(tái)上的優(yōu)化實(shí)踐流程

    Arm 架構(gòu)服務(wù)器領(lǐng)域發(fā)展勢(shì)頭前景看好。目前已有許多頭部云服務(wù)提供商和服務(wù)器制造商推出了基于 Arm Neoverse 平臺(tái)的服務(wù)器產(chǎn)品
    的頭像 發(fā)表于 02-22 13:41 ?1821次閱讀
    FunASR語音大模型<b class='flag-5'>在</b><b class='flag-5'>Arm</b> Neoverse<b class='flag-5'>平臺(tái)</b>上的優(yōu)化實(shí)踐流程

    fpga能焊接口轉(zhuǎn)換板上調(diào)試嗎?

    fpga能焊接口轉(zhuǎn)換板上調(diào)試嗎?對(duì)pcb走線要求高嗎? 不高的話,直接焊接在轉(zhuǎn)接板上,引出的線接面包板上的元器件做實(shí)驗(yàn)了。
    發(fā)表于 02-06 22:59

    arm三個(gè)寄存器gdb調(diào)試時(shí)的作用

    arm三個(gè)寄存器gdb調(diào)試時(shí)作用? ARM是一種廣泛使用的微處理器架構(gòu),它廣泛應(yīng)用于移動(dòng)設(shè)備、嵌入式系統(tǒng)和其他高性能計(jì)算設(shè)備。當(dāng)我們使用
    的頭像 發(fā)表于 01-31 10:44 ?643次閱讀

    USB調(diào)試模式是什么意思?USB調(diào)試模式有什么用?

    USB調(diào)試模式是什么意思?USB調(diào)試模式有什么用? USB調(diào)試模式是一種Android設(shè)備上進(jìn)行開發(fā)、測(cè)試和
    的頭像 發(fā)表于 12-11 11:06 ?8922次閱讀

    基于Android平臺(tái)的個(gè)性通訊錄

    電子發(fā)燒友網(wǎng)站提供《基于Android平臺(tái)的個(gè)性通訊錄.doc》資料免費(fèi)下載
    發(fā)表于 10-30 11:32 ?0次下載
    基于<b class='flag-5'>Android</b><b class='flag-5'>平臺(tái)</b>的個(gè)性通訊錄

    有無藍(lán)牙4.0BLE簡(jiǎn)單有效的調(diào)試辦法?

    這幾天做“AT-09藍(lán)牙4.0BLE模塊(CC2541芯片)”的實(shí)驗(yàn),在網(wǎng)上一直搜索藍(lán)牙4.0BLE的電腦端調(diào)試軟件和手 機(jī)上調(diào)試APP,也去查詢了微 信平臺(tái)上相關(guān)調(diào)試小程序,感覺比傳
    發(fā)表于 10-19 07:55

    基于ARM平臺(tái)的車載定位系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于ARM平臺(tái)的車載定位系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-08 10:53 ?0次下載
    基于<b class='flag-5'>ARM</b><b class='flag-5'>平臺(tái)</b>的車載定位系統(tǒng)設(shè)計(jì)

    RK3399 VR Android參數(shù)配置和調(diào)試說明

    電子發(fā)燒友網(wǎng)站提供《RK3399 VR Android參數(shù)配置和調(diào)試說明.pdf》資料免費(fèi)下載
    發(fā)表于 10-07 15:42 ?0次下載
    RK3399 VR <b class='flag-5'>Android</b>參數(shù)配置和<b class='flag-5'>調(diào)試</b>說明