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

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

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

3天內不再提示

嵌入式軟件減少調試時間的技巧

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:許慶偉 ? 2022-06-30 10:01 ? 次閱讀

工程師喜歡解決問題。當然,這就是我們的工作。但不如人愿的是,嵌入式軟件工程師最大的問題之一是我們自己制造了很多問題,然后花大量的時間來解決這些問題,最后使自己成為英雄(在調試上!)。有很多公司的嵌入式軟件工程師把20 - 40%的時間花在調試上。值得慶幸的是,從團隊的角度可以做出很多潛在的改變,以減少他們花在調試上的時間,并將時間百分比壓縮到個位數。在本文中,我們將研究一些減少調試時間的技巧。

技巧1-測試驅動開發(TDD)

測試驅動開發是一種允許開發人員增量地構建他們的產品軟件,并依賴測試來規定他們編寫代碼的技術。例如,開發人員首先編寫一個測試用例,如果測試失敗,則編寫以通過測試為目的新代碼。然后重復這個過程。

傳統上來講,嵌入式軟件開發人員會在測試之前編寫整個軟件代碼模塊。 可能會在幾周內編寫數千行代碼。 當到了測試代碼的時候,如果發現它不起作用,問題在哪里? 只有天知道! 開發人員必須煞費苦心地回顧代碼并發現問題所在并修復它。 執行此操作所需的時間可能相當長。

另一方面,對于使用TDD的開發人員來說,如果出現了錯誤并且在代碼中注入了bug,測試用例將立即告訴開發人員!由于是逐步編寫代碼的流程,所以更有可能確切地知道更改了程序的什么部分,并且能夠立即修復問題。TDD似乎需要更多的時間來驗證,但通過創建一系列的測試用例,可以在回歸測試中運行這些用例,以確保一切都按照預期工作。TDD功能實現了一石二鳥的目的:減少調試和自動化測試的時間。

技巧2-盡可能無機器依賴的開發

當一個項目開始時,幾乎每個嵌入式軟件開發人員的第一反應就是獲得一塊開發板然后開始編寫代碼。 但不如人愿的是,在許多情況下嵌入式軟件代碼并不是和對手之間產品的差異化因素,差別在于應用程序代碼。 雖然許多應用程序代碼最終需要與硬件交互,但許多模塊可以不依賴于主機器環境來進行開發。

實施無機器依賴的代碼開發,為開發人員提供了許多減少每個調試周期所花費時間的機會。 例如,通常要為目標微控制器編寫和測試代碼,開發人員必須做以下工作:

1.交叉編譯代碼

2.啟動調試會話

3.通過 SWD 對設備進行編程

4.在目標機器上運行代碼

5.通過在目標機上運行來驗證代碼是否有效(同樣的必須擁有所有Low-Level代碼)

如果代碼是在主機上開發的,開發人員必須在主機上編譯代碼,然后使用單元測試工具、仿真器或自定義程序來運行正在開發的代碼。 如果發現問題,會更加快速的修復、重新編譯并重新開始測試。

在嵌入式板子上,僅對目標程序進行編程就會使每個周期增加幾十秒,更不用說單步執行代碼了。

無機器依賴的開發/調試可能會產生特定的錯誤。從我現在寫了大約 75% 的相關代碼的例子上來看,發現會有速度更快、效率更高的效果。 我可以快速定位代碼中的問題,確定原因并修復它,然后繼續調試,而不是只能在嵌入式板子上跟蹤問題。 當然,有些問題會出現在主機上不會出現的板子環境上。

技巧3-掌握調試策略

我們已知效率最低的調試方法就是單步調試代碼。 但不要誤會我的意思,有具體的程序運行時間和發生位置,往往更加會造成很多時間上的浪費。 不幸的是,嵌入式軟件開發人員通常默認使用斷點和單步調試的方案。 為了更好地調試,開發人員還需要掌握現代微控制器上可用的其他調試策略。

目前至少有八種不同的調試技術可供開發人員使用。 這些技術從最簡單到最復雜的順序排列如下:

Watch / Expressions:為開發人員提供檢查 CPU 和外設寄存器的能力。它們通常可用于監視變量、執行計算或在更改時停止 CPU。

斷點:為開發人員提供在特定代碼行上停止 CPU 執行的能力,高級斷點功能可用于設置條件語句的情況。

打印:為開發人員提供將字符數據打印到映射的串行接口的能力,有一定概率會影響實時性能。

斷言:用于驗證程序中特定點假設的條件語句。斷言失敗通常會停止 CPU 并提供失敗斷言的文件和行位置。

統計分析:對在運行中應用程序中的各種寄存器進行定期采樣。 通常不會影響實時性能。 例如,您可能想要對程序計數器 (PC) 進行采樣以了解正在執行的代碼模塊。

數據分析:對包含可變數據的各種內存位置進行定期采樣。當與實時可視化工具一起使用來監控系統狀態、感興趣的變量變化等時,數據分析會非常有用。

任務和數據跟蹤:使開發人員能夠跟蹤實時操作系統應用程序中的事件。因此,開發人員可以深入了解應用程序性能、任務延遲、運行時間等等。

指令跟蹤:使開發人員能夠記錄在處理器上執行的每條指令。這可用于了解測試期間的代碼覆蓋率、調試編譯器問題等。

掌握所有這些技術并知道何時使用它們,可以大大減少當異常發生進入系統時用于調試的時間。

結論

我們在開發階段可能會花費大量時間調試嵌入式軟件代碼。 有時調試時間是不可避免的; 但在許多情況下,開發人員可能會花費超出預期更多的時間。 我們已經探索了幾個您可以進一步調查的領域,以減少您和您的團隊花費在調試上的時間。 如果您在調試上花費超過整體軟件周期的20%時間,那么請在本周花一個小時時間確定您在以上哪些方面可以立即調整優化,以控制花在調試上的時間。

審核編輯 :李倩

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

    關注

    7

    文章

    2783

    瀏覽量

    49632
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    245

    瀏覽量

    27179
  • 驅動開發
    +關注

    關注

    0

    文章

    133

    瀏覽量

    12256

原文標題:減少嵌入式軟件調試時間的三個技巧

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式軟件行業增長驅動因素

    嵌入式軟件在物聯網應用中至關重要,因為它管理設備操作、控制傳感器、支持連接并確保數據安全。例如,在智能家居中,恒溫器、安全攝像頭和燈光等設備使用嵌入式系統獨立運行,并通過云平臺或本地網絡與其他智能
    的頭像 發表于 05-09 11:26 ?255次閱讀

    嵌入式適合自學嗎?

    構、時鐘系統、電源管理、存儲映射等。 嵌入式必學技術點↓↓↓ 1硬件與軟件的結合 2實時性要求與資源限制 3跨領域知識整合 4調試與測試困難 二)缺乏專業指導 1)容易走彎路:自學嵌入
    發表于 04-27 09:54

    如何成為一名嵌入式軟件工程師?

    RTOS的編程和使用對于提升嵌入式軟件的實時性和穩定性至關重要。 開發環境:熟悉Keil、IAR、Eclipse等集成開發環境,以及JTAG、GDB等調試工具。 2)硬件接口與驅動開發 硬件接口
    發表于 04-15 14:37

    泰克MDO32示波器在嵌入式系統調試中的關鍵技術分析

    隨著現代電子技術的飛速發展,嵌入式系統在各個領域的應用日益廣泛,從消費電子到工業控制,再到汽車電子和航空航天等。嵌入式系統的復雜性不斷增加,使得調試工作變得尤為重要。泰克MDO32示波器作為一款
    的頭像 發表于 03-19 13:51 ?251次閱讀
    泰克MDO32示波器在<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>調試</b>中的關鍵技術分析

    嵌入式機器學習的應用特性與軟件開發環境

    設備和智能傳感器)上,這些設備通常具有有限的計算能力、存儲空間和功耗。本文將您介紹嵌入式機器學習的應用特性,以及常見的機器學習開發軟件與開發環境。 嵌入式機器學習的應用特性與優勢 由于嵌入式
    的頭像 發表于 01-25 17:05 ?551次閱讀
    <b class='flag-5'>嵌入式</b>機器學習的應用特性與<b class='flag-5'>軟件</b>開發環境

    如何提高嵌入式代碼質量?

    嵌入式系統的發展已經深刻地影響了我們日常生活的方方面面,從智能家居到汽車控制系統,再到醫療設備和工業自動化等領域,嵌入式系統無處不在。嵌入式軟件的質量直接關系到系統的安全性、穩定性和性
    發表于 01-15 10:48

    嵌入式系統開發與硬件的關系 嵌入式系統開發常見問題解決

    嵌入式系統開發與硬件的關系 嵌入式系統是專為特定應用設計的計算機系統,它們通常嵌入在所控制的設備中。這些系統的關鍵特點是它們與硬件的緊密集成,這意味著軟件必須為特定的硬件平臺量身定制。
    的頭像 發表于 12-09 09:38 ?853次閱讀

    什么是嵌入式?一文讀懂嵌入式主板

    在現代科技浪潮中,嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式系統,顧名思義,是將計算機的硬件和軟件嵌入
    的頭像 發表于 10-16 10:14 ?2467次閱讀

    EsDA,一站嵌入式軟件

    ,旨在提高嵌入式軟件開發的效率、性能和可擴展性。EsDA全稱是嵌入式系統設計自動化,它是一個由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多種軟件
    的頭像 發表于 09-15 08:10 ?653次閱讀
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

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

    用于編寫、編譯和調試嵌入式系統軟件。它提供了一個集成的開發環境(IDE),包括代碼編輯器、編譯器、調試器和仿真器等組件,這些組件可以方便地進行配置和管理,提供了高效的開發體驗。Keil
    發表于 09-09 15:22

    嵌入式系統中的實時操作系統

    嵌入式RTOS是嵌入式應用程序運行、相互交互和與外界通信的底層軟件機制。在本節中,您將了解嵌入式軟件開發人員使用哪些流行RTOS以及它們運行
    的頭像 發表于 08-20 11:28 ?793次閱讀

    嵌入式軟件開發與AI整合

    嵌入式軟件開發與AI整合是當前技術發展的重要趨勢之一。隨著人工智能技術的快速發展,嵌入式系統越來越多地集成了AI算法,以實現更復雜的智能功能。以下是關于嵌入式
    的頭像 發表于 07-31 09:25 ?1239次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發與AI整合

    嵌入式系統怎么學?

    系統設計與調試:需要掌握嵌入式系統的設計方法和調試技術,包括硬件設計、軟件設計、電路調試等,以確保系統的穩定性和可靠性。 隨著技術的不斷進
    發表于 07-02 10:10

    如何提升嵌入式編程能力?

    代碼以提高性能,包括減少內存使用、提高處理速度等。 16. 調試技巧:掌握嵌入式系統的調試技巧,包括使用調試器、日志記錄和性能分析工具。 1
    發表于 06-21 10:01

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰的領域里,如何提升自己顯得非常重要,它決定了你未來的發展方向和成就。接下來,我們一起探討一下。 1.奠定扎
    發表于 06-12 11:20