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

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

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

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

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Hari Nagalla ? 2022-10-18 10:51 ? 次閱讀

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

其中許多設(shè)備主要基于手臂?皮層?-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) 進行源代碼瀏覽。雖然這在嘗試?yán)斫廛浖a流時有所幫助,但這是一個耗時且繁瑣的過程,并且有更好的方法。

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

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

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

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

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

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

但是,可以從二進制可執(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)試,這種組合將提供對運行時代碼流的深入了解并幫助您隔離問題。

pYYBAGNOFNuAcB-dAAFtsJWr3l4870.png

圖1:ELF文件格式

二進制文件 (ELF) 分析

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

pYYBAGNOFOOAf7TXAADyhfGrNCU769.png

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

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

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

功能瀏覽器

一個名為 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ù)來瀏覽引用。

pYYBAGNOFOuAVmlmAAGDaAmpXFU894.png

圖3:功能列表顯示

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

poYBAGNOFPSAYrjpAAGaqnyBqoo130.png

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

pYYBAGNOFPyAAfg_AACo0cIBeYY569.png

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

pYYBAGNOFQKAD8yaAAIvtu3-T2o515.png

圖 6:函數(shù)列表 GUI

簡化軟件

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

審核編輯:郭婷

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

    關(guān)注

    5053

    文章

    18915

    瀏覽量

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

    關(guān)注

    2899

    文章

    43807

    瀏覽量

    369224
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式設(shè)備瀏覽器內(nèi)存管理有什么方法?

    嵌入式系統(tǒng)中,由于設(shè)備性能限制系統(tǒng)總的可分配內(nèi)存相對較小,而在嵌入式平臺上瀏覽器正常運行所需內(nèi)存一般都比較大,并且內(nèi)存分配和釋放操作也比較頻繁,例如,IPTV EPG界面上顯示各類菜
    發(fā)表于 03-12 08:26

    怎么實現(xiàn)基于車載網(wǎng)絡(luò)嵌入式瀏覽器的設(shè)計?

    怎么實現(xiàn)基于車載網(wǎng)絡(luò)嵌入式瀏覽器的設(shè)計?
    發(fā)表于 05-14 06:35

    基于Linux的嵌入式瀏覽器的實現(xiàn)方法

    利于人們在日常生活中使用帶有嵌入式瀏覽器功能的小型電子設(shè)備即時實現(xiàn)上網(wǎng)功能.而且Linux操作系統(tǒng)是開源的操作系統(tǒng),使用C語言編寫,具有良好的可移植性,所以嵌入式
    發(fā)表于 12-21 07:31

    基于LINUX的嵌入式瀏覽器的設(shè)計資料分享

    基于LINUX的嵌入式瀏覽器的設(shè)計與實現(xiàn)隨著 Intemet普及率的迅猛增長,瀏覽器成為獲取信息的標(biāo)準(zhǔn)工具,并且已經(jīng)為廣大 Intemet用戶所接受。與瀏覽器相配合的各類
    發(fā)表于 12-21 07:38

    基于嵌入式Linux圖片瀏覽器的設(shè)計與實現(xiàn)

    基于嵌入式Linux圖片瀏覽器的設(shè)計與實現(xiàn)PAGEPAGEII本科學(xué)生畢業(yè)論文(設(shè)計)題目(中 文):基于嵌入式Linux圖片瀏覽器的設(shè)計與實現(xiàn)(英文):The design
    發(fā)表于 12-21 06:27

    嵌入式瀏覽器Konqueror-E的實現(xiàn)

    Konqueror/embedded是針對嵌入式Linux的開放源碼瀏覽器,也是符合GNU條款的自由軟件。本文首先對該瀏覽器技術(shù)核心做了簡要分析,然后詳細介紹了Konqueror/em
    發(fā)表于 12-11 16:17 ?10次下載

    基于LINUX的嵌入式瀏覽器的設(shè)計與實現(xiàn)

    嵌入式瀏覽器可以廣泛應(yīng)用于各種信息電器和便攜網(wǎng)絡(luò)終端中,在工業(yè)控制領(lǐng)域也有著非常廣闊的應(yīng)用前景。本文提出了一種基于LINUX 的嵌入式瀏覽器
    發(fā)表于 01-07 14:50 ?28次下載

    嵌入式瀏覽器Konqueror的移植和漢化

    目前,嵌入式瀏覽器已經(jīng)逐漸成為高端手機和PDA的標(biāo)準(zhǔn)置。Konqueror/embedded作為嵌入式Linux操作系統(tǒng)的首選瀏覽器得到了廣泛使用。但是由于該
    發(fā)表于 02-05 08:23 ?15次下載

    基于LINUX的嵌入式瀏覽器的設(shè)計與實現(xiàn)

    基于LINUX的嵌入式瀏覽器的設(shè)計與實現(xiàn) 隨著 Intemet普及率的迅猛增長,瀏覽器成為獲取信息的標(biāo)準(zhǔn)工具,并且已經(jīng)為廣大 Intemet用戶所接受。與瀏覽
    發(fā)表于 10-06 08:31 ?1031次閱讀
    基于LINUX的<b class='flag-5'>嵌入式</b><b class='flag-5'>瀏覽器</b>的設(shè)計與實現(xiàn)

    一種WAP嵌入式瀏覽器的設(shè)計

    為解決傳統(tǒng)瀏覽器可移植性差、效率比較低的問題,設(shè)計出一種基于WAP的嵌入式瀏覽器。與傳統(tǒng)瀏覽器比較,該瀏覽器分為各個模塊同時去掉一些沒有用的
    發(fā)表于 09-29 15:55 ?1289次閱讀
    一種WAP<b class='flag-5'>嵌入式</b><b class='flag-5'>瀏覽器</b>的設(shè)計

    嵌入式linux瀏覽器移植,嵌入式Linux WEB服務(wù)BOA的移植方法

    ,能夠生成動態(tài)頁面,在用戶端只需要通過Web瀏覽器就可以對嵌入式設(shè)備進行管理和監(jiān)控,非常方便實用。本節(jié)主要介紹這種應(yīng)用的開發(fā)和移植工作。用戶首先需要在
    發(fā)表于 11-01 16:57 ?10次下載
    <b class='flag-5'>嵌入式</b>linux<b class='flag-5'>瀏覽器</b>移植,<b class='flag-5'>嵌入式</b>Linux WEB服務(wù)<b class='flag-5'>器</b>BOA的移植方法

    如何使用靜態(tài)呼叫瀏覽器進行軟件故障排除

      通過使用這種方法從二進制圖像中導(dǎo)出靜態(tài)調(diào)用流程圖,您現(xiàn)在可以更好地了解軟件功能流程并補充您的源代碼瀏覽,從而更深入地了解軟件實現(xiàn)。最重要的是,這種方法可以加快流程并使
    的頭像 發(fā)表于 06-21 09:55 ?919次閱讀
    如何使用<b class='flag-5'>靜態(tài)</b><b class='flag-5'>呼叫</b><b class='flag-5'>流</b><b class='flag-5'>瀏覽器</b><b class='flag-5'>進行</b><b class='flag-5'>軟件</b><b class='flag-5'>故障</b><b class='flag-5'>排除</b>

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

    由于具有射頻連接和微控制內(nèi)核的低成本集成片上系統(tǒng)設(shè)備的進步,物聯(lián)網(wǎng) (IoT) 設(shè)備呈指數(shù)級增長。
    的頭像 發(fā)表于 11-21 14:26 ?444次閱讀
    如何使用<b class='flag-5'>靜態(tài)</b><b class='flag-5'>呼叫</b><b class='flag-5'>流</b><b class='flag-5'>瀏覽器</b>更快地對<b class='flag-5'>嵌入式</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>軟件</b><b class='flag-5'>進行</b><b class='flag-5'>故障</b><b class='flag-5'>排除</b>

    嵌入式環(huán)境下瀏覽器的研究與設(shè)計

    電子發(fā)燒友網(wǎng)站提供《嵌入式環(huán)境下瀏覽器的研究與設(shè)計.pdf》資料免費下載
    發(fā)表于 10-24 10:38 ?0次下載
    <b class='flag-5'>嵌入式</b>環(huán)境下<b class='flag-5'>瀏覽器</b>的研究與設(shè)計

    基于WAP的嵌入式瀏覽器設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于WAP的嵌入式瀏覽器設(shè)計.pdf》資料免費下載
    發(fā)表于 10-24 11:33 ?0次下載
    基于WAP的<b class='flag-5'>嵌入式</b><b class='flag-5'>瀏覽器</b>設(shè)計