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

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

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

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

如何使用靜態(tài)呼叫流瀏覽器更快地對嵌入式設(shè)備軟件進行故障排除

星星科技指導員 ? 來源:嵌入式計算設(shè)計 ? 作者:Hari Nagalla ? 2022-11-21 14:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

由于具有射頻連接和微控制器內(nèi)核的低成本集成片上系統(tǒng)設(shè)備的進步,物聯(lián)網(wǎng)IoT) 設(shè)備呈指數(shù)級增長。

其中許多設(shè)備主要基于Arm? Cortex-M?架構(gòu)。隨著硬件的進步,嵌入式軟件在跟上新的連接協(xié)議、協(xié)議棧和框架方面發(fā)揮著重要作用。

然而,連接設(shè)備的激增給嵌入式軟件工程師帶來了挑戰(zhàn),尤其是同時在多個設(shè)備和框架上工作的應(yīng)用程序和維護工程師。

了解新設(shè)備軟件、框架和協(xié)議棧的工作原理可能非常耗時,并且會限制工程師快速解決問題的能力。設(shè)計文檔和內(nèi)聯(lián)源代碼注釋可能會有所幫助,但它們可能不容易訪問,并且可能無法全面了解代碼的工作原理。

在這些情況下,工程師依靠他們的獨創(chuàng)性、足智多謀和使用集成開發(fā)環(huán)境 (IDE) 的源代碼瀏覽。雖然這在嘗試理解軟件代碼流時有所幫助,但這是一個耗時且乏味的過程,并且有更好的方法。

在本文中,我將介紹一種使用現(xiàn)有工具鏈實用程序來生成軟件的靜態(tài)函數(shù)調(diào)用層次結(jié)構(gòu)并更快更好地理解軟件流的新方法。

函數(shù)調(diào)用跟蹤的常見類型

可以使用函數(shù)調(diào)用跟蹤來了解代碼流或識別 bug。比較成功和失敗方案之間的程序流(通過函數(shù)調(diào)用跟蹤)可以幫助您快速識別代碼中存在問題的區(qū)域,以便進一步檢查。

函數(shù)調(diào)用跟蹤補充了基于 IDE 的源代碼瀏覽,以更好地了解整個軟件實現(xiàn),并且可以分為兩個常見類別:

運行時函數(shù)調(diào)用跟蹤。這是一個侵入性的過程,需要檢測源代碼。像 GNU Compiler Collection 這樣的工具鏈提供了放置函數(shù)調(diào)用的檢測,這需要重建代碼來重新生成新的二進制文件,但會導致額外的代碼大小和更長的執(zhí)行時間。對于缺少內(nèi)存的資源受限的 IoT 設(shè)備,運行時函數(shù)調(diào)用跟蹤可能不是一個可行的選擇。此外,您無法保證檢測的代碼的行為與未檢測的代碼相同。

靜態(tài)函數(shù)調(diào)用。對于基于只讀存儲器 (ROM) 的設(shè)備,檢測不是一個可行的選擇。盡管您可以簡單地使用 Eclipse 或 Source Insight 等 IDE 瀏覽源代碼以了解軟件實現(xiàn),但這是一個繁瑣的過程。一些 IDE(通常是昂貴的商業(yè)版本)可以派生靜態(tài)函數(shù)調(diào)用圖。這些靜態(tài)函數(shù)調(diào)用瀏覽器通常范圍有限,如果源代碼中有條件編譯,則可能無法提供整個調(diào)用流的準確圖片。

但是,可以從二進制可執(zhí)行和可鏈接格式 (ELF) 文件生成靜態(tài)調(diào)用流瀏覽器,該文件反映了實際的二進制代碼。

使用靜態(tài)呼叫流瀏覽器更快地修復(fù)軟件

讓我們使用設(shè)備的 ELF 二進制映像來生成函數(shù)調(diào)用引用詳細信息。如圖 1 所示,其思路是獲取 ELF 二進制文件,并通過各種代碼生成工具(如 TI 的目標文件顯示 (armofd) 和拆裝器 (armdis) )傳遞它,以生成函數(shù)列表和調(diào)用引用數(shù)據(jù)庫。生成數(shù)據(jù)庫后,在簡單的樹瀏覽器中顯示調(diào)用層次結(jié)構(gòu)和流,以查看函數(shù)調(diào)用引用。這些靜態(tài)調(diào)用流圖還可以通過將運行時 ROM 代碼消息日志覆蓋在靜態(tài)函數(shù)樹的頂部來幫助調(diào)試 - 這種組合將提供對運行時代碼流的洞察并幫助您隔離問題。

pYYBAGN7GmKAR_u_AAFtC8PlGFA735.png

圖 1:ELF 文件格式

二進制文件 (ELF) 分析

該ELF文件包含一個程序頭,節(jié)頭,以及代碼和數(shù)據(jù)節(jié)。工具鏈提供了各種工具來檢查和以可讀格式顯示 ELF 二進制文件內(nèi)容。在 TI,我們使用 armofd 和 armdis 等實用程序名稱來獲取 Arm 反匯編中的功能詳細信息和完整的程序編碼。

pYYBAGN7GmqALZYUAADzD0d8ZGg045.png

圖2:靜態(tài)函數(shù)分析的過程

解析引擎遍歷反匯編代碼,并通過帶鏈接的分支 (BL) 和帶鏈接和交換的分支 (BLX) 指令檢查函數(shù)調(diào)用,查找每個函數(shù)的所有調(diào)用函數(shù),并填充函數(shù)數(shù)據(jù)庫。數(shù)據(jù)庫本身被安排為Adelson-Velsky和Landis自平衡搜索樹,以便快速搜索和瀏覽。

編譯器優(yōu)化可能會通過直接分支到被調(diào)用的函數(shù)來扭曲某些函數(shù)調(diào)用。這些函數(shù)沒有任何堆棧分配,因此解析引擎需要足夠智能才能檢測這些編譯器優(yōu)化。

函數(shù)瀏覽器

稱為 Java 幀 (JFrames) 的簡單圖形用戶界面 (GUI) 界面為函數(shù)調(diào)用瀏覽選擇感興趣的函數(shù)。選擇一個函數(shù)將顯示兩個幀,一個用于“被調(diào)用方/被調(diào)用函數(shù)”,另一個用于“被調(diào)用自”函數(shù)。這些幀顯示具有進一步節(jié)點擴展的分層樹結(jié)構(gòu),如圖 3、4、5 和 6 所示。

瀏覽器圖形用戶界面

函數(shù)列表顯示所有可用函數(shù),使您能夠選擇感興趣的函數(shù)來瀏覽參考文獻。

pYYBAGN7GnGAFEtaAAGDeVrYZL4756.png

圖 3:功能列表顯示

可以在樹中進一步向下導航以查看函數(shù)調(diào)用的可能性。

pYYBAGN7GnmAbdZbAAGZpw-V-lU508.png

圖 4:調(diào)用的函數(shù)引用

poYBAGN7GoOAOxy6AACo9zMJYR0595.png

圖 5:從引用調(diào)用

poYBAGN7GoqAaUSlAAIveYQZPpM392.png

圖 6:功能列表 GUI

簡化軟件

通過使用此方法從二進制映像派生靜態(tài)調(diào)用流程圖,您現(xiàn)在可以更好地了解軟件功能流,并補充源代碼瀏覽,以更深入地了解軟件實現(xiàn)。最重要的是,這種方法可以加快流程并使故障排除軟件更簡單。

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    8315

    瀏覽量

    163817
  • 嵌入式
    +關(guān)注

    關(guān)注

    5196

    文章

    20323

    瀏覽量

    332193
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2943

    文章

    47715

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    嵌入式驅(qū)動開發(fā),需要掌握哪些技能?

    。 4、 熟悉驅(qū)動開發(fā)常用工具做驅(qū)動開發(fā),會牽涉到很多軟硬件工具。比如:VS Code、Keil、 J-Link、Git等。 5、 調(diào)試和故障排除嵌入式軟件的測試和調(diào)試非常重要
    發(fā)表于 01-20 16:46

    什么是嵌入式應(yīng)用開發(fā)?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。這些處理和編程語言的選擇取決于具體的硬件條件和開發(fā)需求?。 綜上所述,嵌入式應(yīng)用開發(fā)是一個綜合性的技術(shù)領(lǐng)域,涉及硬件和軟件的緊密結(jié)合,廣泛應(yīng)用于各種
    發(fā)表于 01-12 16:13

    嵌入式軟件測試找bug的常見方法和秘訣

    的領(lǐng)域使用軟件和微處理控制各種嵌入式設(shè)備,對日益復(fù)雜的嵌入式軟件
    發(fā)表于 01-12 07:07

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!

    無需安裝!在瀏覽器里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!【往期精選】十年嵌入式最深的痛,不是Bug,而是抓不到日志!vivo宣布原生支持HomeAssistant生態(tài)設(shè)備接入(含
    的頭像 發(fā)表于 01-10 10:01 ?501次閱讀
    無需安裝!在<b class='flag-5'>瀏覽器</b>里就能玩轉(zhuǎn)ESP32/ESP8266,這個神器絕了!

    CW32嵌入式軟件開發(fā)的必備知識

    。 能夠進行操作系統(tǒng)的任務(wù)設(shè)計、任務(wù)管理等,以滿足特定應(yīng)用的需求。 5 、硬件接口與外設(shè) 熟悉常用的硬件接口,如GPIO、串口、SPI、I2C等,并能編寫相應(yīng)的驅(qū)動程序。 了解嵌入式系統(tǒng)常用的硬件設(shè)備
    發(fā)表于 11-28 07:48

    嵌入式開發(fā)的關(guān)鍵點介紹

    設(shè)備和移動設(shè)備。因此,嵌入式開發(fā)需要考慮系統(tǒng)的功耗,并編寫節(jié)能的代碼以延長系統(tǒng)的使用壽命。 4. 軟件集成: 嵌入式系統(tǒng)通常需要與其他
    發(fā)表于 11-13 08:12

    嵌入式軟件測試與專業(yè)測試工具的必要性深度解析

    故障,最終召回成本高達數(shù)百萬歐元。主流測試工具與技術(shù)方案嵌入式軟件測試工具市場提供了多樣化的解決方案,滿足不同測試需求:功能測試工具 ?ETest Studio?:國產(chǎn)化黑盒測試工具,提供測試
    發(fā)表于 09-28 17:42

    嵌入式達到什么水平才能就業(yè)?

    :包括GPIO、定時、中斷、ADC 等外設(shè)的配置與調(diào)試,能實現(xiàn)如溫濕度采集、電機控制等功能掌握嵌入式 Linux 驅(qū)動開發(fā)基礎(chǔ):能編寫簡單字符設(shè)備驅(qū)動,實現(xiàn)設(shè)備的初始化、讀寫操作,會
    發(fā)表于 09-15 10:20

    新一代嵌入式開發(fā)平臺 AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺,全面加速概念構(gòu)想到部署落地。 2025.1 版嵌入式軟件
    的頭像 發(fā)表于 08-20 09:15 ?3870次閱讀

    AMD 2025.1版嵌入式軟件和工具的新增功能

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺,全面加速概念構(gòu)想到部署落地。
    的頭像 發(fā)表于 08-15 15:32 ?1192次閱讀

    入行嵌入式應(yīng)該怎么準備?

    常會遇到各種問題和錯誤。因此,具備良好的調(diào)試和故障排除能力是非常重要的。需要學會使用調(diào)試工具和設(shè)備,如示波器、邏輯分析儀和仿真,以便于分析和解決問題。 六、領(lǐng)域知識
    發(fā)表于 08-06 10:34

    老電視如何安裝瀏覽器?

    2017年購買的夏普老電視,1.5G+8G存儲,網(wǎng)上下的瀏覽器APK文件在電視內(nèi)打開就彈出“解析程序包出現(xiàn)問題”。 未知來源選項已打開,存儲空間清空到只剩下三個應(yīng)用(只占用300M左右),基本可
    發(fā)表于 06-01 18:57

    嵌入式軟件行業(yè)增長驅(qū)動因素

    嵌入式軟件在物聯(lián)網(wǎng)應(yīng)用中至關(guān)重要,因為它管理設(shè)備操作、控制傳感、支持連接并確保數(shù)據(jù)安全。例如,在智能家居中,恒溫、安全攝像頭和燈光等
    的頭像 發(fā)表于 05-09 11:26 ?751次閱讀

    嵌入式軟件單元測試的必要性、核心方法及工具深度解析

    一、為什么嵌入式軟件必須重視單元測試? ?嵌入式系統(tǒng)的特殊性? 在汽車 ECU、醫(yī)療設(shè)備控制等場景中,
    的頭像 發(fā)表于 03-21 14:53 ?1202次閱讀

    嵌入式軟件測試技術(shù)深度研究報告

    嵌入式軟件測試技術(shù)深度研究報告 ——基于winAMS的全生命周期質(zhì)量保障體系構(gòu)建 一、行業(yè)技術(shù)瓶頸與解決方案框架 2025年嵌入式軟件測試領(lǐng)域面臨兩大核心矛盾: ? 安全合規(guī)與開發(fā)效率
    的頭像 發(fā)表于 03-03 13:54 ?951次閱讀