女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

嵌入式開發中調試器的技巧與竅門

工程師兵營 ? 來源:互聯網 ? 作者:佚名 ? 2018-07-17 08:59 ? 次閱讀

從只有幾千字節存儲空間的簡單 8 位控制器,到現在先進的 32 位控制器,雖然微控制器經歷了諸多演變,但是許多開發人員仍在使用老舊的工具,拖慢了開發周期。

設計人員若要適應當今快速發展且復雜多變的開發環境,則需要確保擁有合適的工具才能應對。他們需要嵌入式工具,以便監視芯片并查看其軟件是否按照預期方式運行;他們還需要可指出錯誤或優化代碼規模的工具,以降低其 BOM 成本。

現在有許多工具可以幫助他們降低整體開發成本,加快調試過程,從而縮短上市時間。本文將介紹一些這樣的工具,然后說明如何通過它們獲得最大收益。

利用專業調試器節省時間和金錢

開發人員編寫的軟件程序第一次試運行就正常工作非常少見。因此軟件開發需要調試,所以對于軟件開發人員來說,最重要的工具就是調試器。利用調試器,開發人員可以將應用程序加載到目標微控制器上,逐步檢查代碼,查看存儲器和其他寄存器,并操縱硬件。

問題是,許多專業開發人員通常使用的調試器是其低成本開發板所附帶的。這些調試器方便、便宜,而且在演示時表現完美。但是,在開發專業軟件時,可能會出現以下限制:

  • 斷點有限

  • 時鐘速率降低

  • 缺乏跟蹤功能

  • 功能極少

換言之,有時真是一分錢一分貨:附送的簡化工具集可能不是快速有效地開發和調試軟件的最佳方式。

專業級調試器具有許多功能,可提高工程師的生產力,例如無限制的斷點。許多調試器只能使用微控制器的內部比較器來設置斷點,而在大多數情況下只有兩個可用。在有數萬行代碼的復雜程序中,只有兩個可用的斷點可能會導致開發人員把時間浪費斷點切換上,也可能會導致開發人員錯過軟件中的關鍵點,從而錯過潛伏的漏洞。這樣一來,可能會導致編碼時間更長,反而增加了開發成本并影響了上市時間。

專業級調試器提供的算法不僅可以使用硬件斷點,還可以使用軟件和閃存斷點,為開發人員提供了更多的靈活性,而且用來評估代碼的斷點數量幾無限制。

當然專業級調試器不便宜。它們的價格可以輕松標到幾百到幾千美元。但它們為開發人員帶來了不可計算的投資回報,并能使用多年,無需升級或更換。選擇調試器時,開發人員應該問自己幾個問題:

  • 調試器的斷點數是否無限制?

  • 這是一款可以與幾乎所有工具鏈和微控制器配合使用的第三方調試器嗎?

  • 五年后這個調試器還能使用嗎?

  • 這個調試器有很好的生態系統嗎?

  • 調試器的能力可以擴展嗎?

因為符合上述標準而變得非常受歡迎的一款第三方調試器是 Segger J-Link。根據開發人員的需求,Segger J-Link 可提供不同的版本。其中包括 J-Link Base Unit、J-Link Plus、J-Link Ultra Plus 和 J-Link Trace(圖 1)。

Segger J-Link 調試器型號比較圖片

圖 1:Segger J-Link 調試器型號比較。(來源:Segger)

使用調試器跟蹤和分支檢測來揪出潛藏的錯誤

高級調試器(通常也是最昂貴的)配備 ETM 跟蹤連接器,可以獲得大量跟蹤數據,這是使用 JTAG 或 SWD 的標準跟蹤無法實現的。

使用高級跟蹤功能,開發人員可以將調試器與商業工具鏈(如適用于 ARMKeil MDK-PRO)連用,來監視系統中的每一行代碼在測試期間是否得到執行。如下例所示,針對 ARM 的 Keil MDK-PRO 與跟蹤調試器一并運行,檢測到了那些代碼行在測試期間得到執行(圖 2)。這種跟蹤對于需要 100% 測試覆蓋的安全關鍵型系統非常有用。在未測試代碼之處,可能會潛藏錯誤并在以后導致問題。

在調試模式下運行的用于 ARM 的 Keil MDK-PRO 圖片

圖 2:在調試模式下運行并對軟件執行分支分析的用于 ARM 的 Keil MDK-PRO。左側的綠色塊表示在測試期間得到執行的代碼行。(圖片來源:Keil)

如果開發人員不想購買成熟的跟蹤工具,則可以使用 SWD 進行跟蹤。在這種情況下,開發人員可以選擇使用如 Segger 的 SystemView 或 Percepio 的 Tracelyzer 之類軟件工具將跟蹤信息流傳輸到在 PC 上執行的應用程序。這些跟蹤系統通常在 RTOS 中工作,并且需要幾行代碼來設置跟蹤任務、捕獲數據并將其發送到調試器,然后再發送到 PC 上。

顯示軟件跟蹤的輸出示例(圖 3)。開發人員可以使用這些工具來檢測諸如優先級轉換、死鎖、線程饑餓以及許多在復雜系統中可能遇到的其他問題。每個任務都有一條生命線,顯示其何時就緒、何時執行、何時完成,以及在此期間可能發生的任何事件,例如發出和接收信號

專業開發人員需要這樣的細節,同樣地,也要求他們使用的調試工具能夠檢索這類信息。

Percepio 的 Tracealyzer 圖片

圖 3:使用如 Percepio 的 Tracealyzer 之類工具檢查軟件操作,并查看執行時間和時間長短。(圖片來源:Digi-Key

最大限度利用調試器的技巧與竅門

調試工具有很多功能,但有時可能受限于為應用選擇的微控制器。開發人員需要了解其調試器的功能,并要將其與微控制器正確配對。現今的許多調試器都可與 ARM? Cortex?-M 微控制器配合使用,開發人員在調試這些系統時應考慮以下幾個因素:

  • 避免通過 UART 進行 printf。而應使用 ITM 端口來獲得更好的性能

  • 不要逐條查看代碼,使用高級斷點來提高調試效率

  • 選擇一個通過服務器控制的調試器,以便為多個應用提供調試數據,即自定義分析儀、跟蹤、調試環境等等。

  • 調整調試器使用的默認時鐘速率,因該速率通常比最大值慢得多

  • 在開發周期的早期階段設置跟蹤,以建立比較基準

  • 使 SWO 能夠從系統獲取更多信息

  • 在硬件、軟件和閃存斷點之間進行選擇性選擇,以最小化實時性能影響

使用這些技巧可以幫助開發人員從調試器及其調試會話中獲取更多信息。

使用商業編譯器降低成本

GCC 是一款極受歡迎且大獲成功的編譯器。它與商業工具相比有一個優點就是免費!免費并不意味著編譯器的質量和輸出將產生與商業工具同等的可執行代碼。事實上,在許多情況下,將 GCC 與商業編譯器(如用于 ARM 的 Keil MDK-PRO 或 IAR Embedded Workbench)進行比較,得出的結果是,GCC 使用的代碼規模更大,占用的 RAM 空間更多。Renesas 甚至在他們的 Synergy 平臺規格書中顯示了這一點(圖 4)。

在圖中,Renesas 使用 EEMBC CoreMark? 對其編譯器進行了基準測試,顯示了 IAR 編譯的代碼比 GCC 編譯的代碼更快。

基準測試還顯示,使用商業級編譯器可以顯著減少代碼規模。乍一看,開發人員可能會認為購買諸如用于 ARM 的 Keil MDK-PRO 之類工具不值得投資,而應該使用 GCC。但是,當開發人員使用包含 128 KB 代碼空間的微控制器(如 NXP MK20DX128)并發現使用 GCC 應用程序需要 132 KB 時,會發生什么?

若發生這種情況,開發團隊就被迫要尋找一個具有足夠內存但卻更為昂貴的引腳兼容器件,如 NXP MKD20DX256。如果該公司只能生產適量的產品,那么每年花在 MCU 上的成本可能會超過最初投資于商業編譯器上的成本。

使用商業編譯器也有其他優勢,有助于降低成本,例如:

  • 代碼分析功能,如分支檢測

  • 軟件復雜性測量

  • 高效生成代碼

  • 卓越的調試工具和功能

  • 技術支持

  • 集成到驅動程序庫和框架

結論

開發人員當然可以使用免費或便宜的開發工具。然而問題在于,這些低成本工具在大多數情況下并非是適合這種工作的最佳工具。它們往往缺乏每個開發人員所需的高級功能,不能節省時間和金錢,而且常常會導致項目延遲并增加成本。

購買好的專業調試器和工具鏈是一項投資,可以在未來幾年節省大量時間和金錢,并大幅提高開發團隊的工作效率和績效。

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

    關注

    134

    文章

    9311

    瀏覽量

    375130
  • 嵌入式
    +關注

    關注

    5141

    文章

    19540

    瀏覽量

    315150
  • 調試器
    +關注

    關注

    1

    文章

    311

    瀏覽量

    24175
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式開發入門指南:從零開始學習嵌入式

    特定功能的計算機系統,廣泛應用于智能家居、工業控制、醫療設備、車載系統等領域。 2. 學習嵌入式開發的前置知識熟悉C語言編程掌握基本的數據結構與算法了解數字電路與微控制原理熟悉Linux操作系統
    發表于 05-15 09:29

    嵌入式開發:高門檻的系統性工程與 996 的行業困局

    嵌入式開發的門檻,往往被培訓機構和表象所掩蓋。許多人誤以為 “用 C 語言寫個跑在 ARM 上的程序” 就是嵌入式,實則連皮毛都未觸及。真正的嵌入式開發是硬件與軟件深度融合的系統性工程,需跨越三重壁壘
    的頭像 發表于 04-09 11:06 ?257次閱讀
    <b class='flag-5'>嵌入式開發</b>:高門檻的系統性工程與 996 的行業困局

    BlackBerry QNX推出通用嵌入式開發平臺

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發平臺(General Embedded Development
    的頭像 發表于 03-11 16:04 ?542次閱讀

    AI來襲!嵌入式開發者該如何應對轉型?

    AI正在改變世界!從自動駕駛到智能家居,從工業自動化到語音助手,各行各業都在朝著智能化方向邁進。對于嵌入式開發者來說,AI的到來既是一次前所未有的挑戰,也是一個充滿機遇的時代。過去,我們專注于硬件
    的頭像 發表于 03-04 14:41 ?682次閱讀
    AI來襲!<b class='flag-5'>嵌入式開發</b>者該如何應對轉型?

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    尊敬的各位電子工程師、嵌入式開發愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導體的單片機CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發表于 03-03 15:15 ?549次閱讀
    代碼+案例+生態:武漢芯源半導體CW32<b class='flag-5'>嵌入式開發</b>實戰正式出版

    如何成為嵌入式開發工程師?

    如何成為嵌入式開發工程師? 成為嵌入式開發工程師通常需要掌握一系列技能和知識,并且在實踐不斷積累經驗。以下是一些基本步驟和建議: 1. 基礎教育:- 獲取電子工程、計算機科學或相關領域的學位
    發表于 02-19 10:39

    嵌入式開發新紀元:AI大模型助力樂鑫芯片高效編程

    芯片開發的有效途徑。看看它們如何為樂鑫ESP32系列芯片開發賦能,實現從代碼生成到調試優化全流程的效率飛躍!嵌入式開發者的得力AI助手Cursor與Trae:代碼生
    的頭像 發表于 02-17 18:06 ?905次閱讀
    <b class='flag-5'>嵌入式開發</b>新紀元:AI大模型助力樂鑫芯片高效編程

    盤點工程師常用的嵌入式開發工具

    嵌入式開發涉及硬件與軟件的緊密結合,開發工具的選擇對效率和質量至關重要。以下是嵌入式開發中常用的工具分類及代表性工具,涵蓋開發全流程: 1. 集成
    的頭像 發表于 02-07 10:06 ?1708次閱讀

    嵌入式開發必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品

    實用干貨!嵌入式開發學習必備-RK3562演示Linux常用系統查詢命令(上)關注觸覺智能持續為大家帶來更多嵌入式開發內容
    的頭像 發表于 12-31 10:51 ?117次閱讀
    <b class='flag-5'>嵌入式開發</b>必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品

    嵌入式工程師常用的開發工具有哪些?

    。此外,ARM 公司的編譯也備受青睞,針對 ARM 架構的微控制進行了深度優化,能夠生成高效的代碼。 三、調試工具 調試嵌入式開發過程中
    發表于 12-20 15:29

    如何使用 RISC-V 進行嵌入式開發

    RISC-V是一種開源的指令集架構(ISA),它允許任何人設計、制造和銷售基于RISC-V的處理,這為嵌入式開發提供了極大的靈活性和創新空間。以下是使用RISC-V進行嵌入式開發的基本步驟: 一
    的頭像 發表于 12-11 17:32 ?1698次閱讀

    嵌入式開發常見問題排查

    嵌入式開發問題排查很多人認為嵌入式開發很難,主要是因為在這個過程中常常會遇到各式各樣的問題。這些問題的復雜性和多樣性使得許多人感到困惑和無所適從。然而,如果將這些問題逐一拆解,實際上大部分都可以
    的頭像 發表于 09-22 08:04 ?716次閱讀
    <b class='flag-5'>嵌入式開發</b>常見問題排查

    嵌入式開發常用軟件有哪些?

    用于編寫、編譯和調試嵌入式系統軟件。它提供了一個集成的開發環境(IDE),包括代碼編輯、編譯調試器
    發表于 09-09 15:22

    聚焦嵌入式開發的合規性工具、項目管理工具、版本迭代工具應用

    ,就嵌入式開發與管理領域的最新趨勢、工具選擇以及DevSecOps實踐應用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發的合規性工具、項目管理和版本管理的工具選擇,以及DevSecOps
    的頭像 發表于 07-29 15:15 ?979次閱讀

    嵌入式開發前景怎么樣?

    嵌入式開發前景非常廣闊,這主要得益于物聯網、人工智能、大數據等技術的快速發展,以及嵌入式系統在各個領域的廣泛應用。以下是對嵌入式開發前景的詳細分析
    的頭像 發表于 07-10 09:00 ?4163次閱讀
    <b class='flag-5'>嵌入式開發</b>前景怎么樣?