91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

調(diào)試故事:從 printf 到 Flash 及其他

王燕 ? 來源:十個名字V ? 作者:十個名字V ? 2022-07-19 10:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在 1990 年代,基本上有兩種基于工具的解決方案,用于在真實硬件上調(diào)試嵌入式軟件:一種是監(jiān)視器調(diào)試器,一種在嵌入式系統(tǒng)內(nèi)存中編程并響應外部調(diào)試器軟件請求的軟件. 以及在線仿真器,一個(大型)硬件,它通過自適應替換和仿真位于目標硬件中的微控制器/處理器。

pYYBAGLVc2GAaN_BAAH4npMSBeA428.jpg

圖 1:1980 年代末的在線仿真。

監(jiān)控調(diào)試器解決方案價格便宜,并實現(xiàn)了基本的調(diào)試功能;在線仿真器解決方案非常昂貴,使用復雜,而且適配經(jīng)常不穩(wěn)定且容易出錯。作為回報,開發(fā)人員獲得了對微控制器/處理器所有總線的完全透明和訪問權(quán)限。那時,計時測量和代碼覆蓋率分析已經(jīng)成為可能。然而,半導體制造商必須為此目的開發(fā)一種特殊的、所謂的帶有額外引腳的仿真芯片。對所有相關人員來說都是一個關鍵的成本因素。

半導體的日益小型化和片上調(diào)試接口的引入對調(diào)試器作為開發(fā)工具本身的架構(gòu)產(chǎn)生了重大影響。越來越多的以前在硬件中實現(xiàn)的功能現(xiàn)在在軟件中實現(xiàn)。開發(fā)環(huán)境和調(diào)試器軟件變得更強大,硬件更小,帶寬和速度方面的性能不斷提高。但是,今天調(diào)試的基本用例仍然相同。

硬件調(diào)試進化,瞄準調(diào)試的“圣杯”

從 printf 到“just” flash 到斷點、實時監(jiān)視和單步執(zhí)行,這就是您可以簡要描述調(diào)試的方式。原則上,調(diào)試用于驅(qū)動程序開發(fā)、板/硬件啟動、啟動過程等的開發(fā)和故障排除,作為“低級”、硬件相關開發(fā)的標準方法。一個調(diào)試器被迅速拿出來,將軟件閃存到目標硬件上,開始執(zhí)行或通過斷點在代碼中的某個點停止它,檢查內(nèi)存區(qū)域和寄存器或操作它們測試,讀出調(diào)用堆棧等等。

在應用方面,它簡單易懂,原則上大多數(shù)開發(fā)人員通過調(diào)試都可以理解。大多數(shù)時候,人們沒有時間深入處理調(diào)試器本身,從而可能發(fā)現(xiàn)“調(diào)試的圣杯”,這些附加功能最終可以節(jié)省大量調(diào)試和測試時間。例如,在這種情況下,一種被低估的技術(shù)是追蹤。它在不影響運行時行為的情況下提供對軟件執(zhí)行的洞察。因此,開發(fā)人員獲得了硬件上軟件執(zhí)行的真實圖像??梢园l(fā)現(xiàn)軟件中偶爾出現(xiàn)的錯誤和瓶頸。這只是調(diào)試器的許多替代用例的一個示例。

圖 2:硬件調(diào)試——嵌入式軟件開發(fā)人員的日常業(yè)務。

微控制器、處理器和 SoC 帶來了新的挑戰(zhàn)

調(diào)試的發(fā)展伴隨著半導體的小型化、復雜性和速度的增加。在過去的 15 年中,嵌入式行業(yè),尤其是汽車行業(yè),在其產(chǎn)品中引入了許多附加功能,以滿足當前和未來的環(huán)境法規(guī),減少一般的車禍數(shù)量,通過分銷更有效地開發(fā)和生產(chǎn)車輛跨多個電子控制單元 (ECU) 的功能,而不是按功能開發(fā)專用 ECU,并在競爭中脫穎而出。

為了實現(xiàn)這一切,汽車行業(yè)需要半導體制造商通過開發(fā)和生產(chǎn)更緊湊、更快的微控制器來滿足他們的要求。

這是嵌入式多核微控制器的誕生,即具有兩個或更多內(nèi)核的控制器。ECU 中從單核架構(gòu)向多核架構(gòu)的轉(zhuǎn)變給每個人帶來了新的挑戰(zhàn)。嵌入式軟件工具供應商面臨著新問題,從如何輕松訪問多核 ECU 的所有內(nèi)核,到如何在不同內(nèi)核上分發(fā)嵌入式軟件和遺留軟件,這些內(nèi)核運行效率最高,同時保持高性能。開發(fā)嵌入式軟件的傳統(tǒng)方式此時已經(jīng)受到質(zhì)疑。

隨著高性能/計算平臺和多核系統(tǒng)的引入,現(xiàn)在甚至更復雜的處理器架構(gòu)被用于開發(fā)高度復雜的應用程序。調(diào)試在這里仍然扮演什么角色?

原則上,它仍然是基礎。除了微控制器的內(nèi)部閃存組件外,還必須運行 SoC 外部閃存組件。調(diào)試器首先幫助控制引導過程,然后在下一步中仔細檢查這些處理器的各個部分和內(nèi)核以及在這些設備上運行的軟件。除了標準調(diào)試功能之外,由于這些軟件系統(tǒng)的復雜性越來越高,時序分析、功能分析或 CPU 負載測量等分析選項也越來越多地被使用(圖 3)。這樣做的先決條件是所用半導體上的跟蹤接口的可用性以及相應的調(diào)試器,其軟件實現(xiàn)這些功能。

pYYBAGLVc4KAPTDKAAewM1N-QHk669.jpg

圖 3:來自 iSYSTEM 的 winIDEA Analyzer;左邊是記錄的對象,右邊是它們的時間相關性。 (點擊展開)

半導體行業(yè)的技術(shù)發(fā)展正在改變軟件開發(fā)過程,進而將調(diào)試器作為工藝工具的基本工具。

軟件開發(fā)過程和標準

分布式開發(fā)團隊、日益復雜的代碼庫、日益增長的功能需求、標準化和時間壓力:即使在嵌入式軟件開發(fā)中,在最短的時間內(nèi)將可靠和安全的產(chǎn)品推向市場的挑戰(zhàn)也只能通過更高程度的抽象和自動化。

因此,經(jīng)典意義上的開發(fā)工具必須比以往更加通用。以前由微控制器專家專門用作與硬件相關的開發(fā)工具,現(xiàn)在越來越多地可以在各種軟件開發(fā)情況中找到調(diào)試器。調(diào)試器仍然是通過標準調(diào)試接口連接到實際目標硬件,目的是開發(fā)和測試盡可能接近實際硬件的嵌入式軟件。

除了簡單地連接到目標硬件之外,調(diào)試器還提供更高級的調(diào)試功能,包括測試功能。在這里,開發(fā)人員可以跟蹤正在運行的軟件的執(zhí)行情況。為此,可以檢查程序狀態(tài),并在某些條件下停止程序的執(zhí)行。這是在對被測軟件的影響最小或沒有影響的情況下完成的。專業(yè)的調(diào)試解決方案還可以實時記錄軟件中的過程(跟蹤)、記錄時鐘周期范圍內(nèi)的執(zhí)行時間以及評估與測試相關的軟件處理部分(代碼覆蓋率)。

pYYBAGLVc4-ABr8dAAOq6GAVak8027.jpg

圖 4:如今,調(diào)試器提供的 API 可通過平滑和自動化的工具轉(zhuǎn)換來實現(xiàn)開發(fā)和測試流程。

為了讓客戶能夠靈活地使用所有這些功能,調(diào)試器制造商提供了通用接口 (API),可以將這些工具集成到客戶的開發(fā)和測試過程中(圖 4)。這些接口必須適合解決各種各樣的任務(開發(fā)、測試、驗證和驗證軟件和硬件)。這里的標準是支持編程(C、C++、C#Java 等)和腳本語言(Python 等),以便從另一個(也是客戶特定的)應用程序“遠程控制”開發(fā)工具。基本上,該過程的一部分可以在開發(fā)和測試期間實現(xiàn)自動化。

此外,當今的調(diào)試器提供了所謂的“mini-HIL”功能(用于測試的硬件在環(huán)、測量和激勵模塊)來生成或測量數(shù)字和模擬信號,同時記錄和關聯(lián)程序執(zhí)行. 這使得在軟件開發(fā)過程中盡可能早地進行非常接近現(xiàn)實的測試成為可能。所有這些都是從已知環(huán)境中實現(xiàn)的,幾乎是即時的,無需學習新的方法。

這些用于測試自動化的靈活接口的典型用例是持續(xù)集成 (CI)。CI 通過將開發(fā)人員的更改或新創(chuàng)建的代碼集成到與團隊共享的存儲庫中來支持敏捷/分布式軟件開發(fā)和測試。為此目的,有幾個合適的持續(xù)集成服務器,例如 Jenkins、GitLab、TeamCity、CircleCI 或 GitHub Actions。通過集成,通過內(nèi)部或云中托管的 CI 軟件觸發(fā)一系列快速且高度自動化的步驟(稱為“管道”)。管道通常包括并結(jié)合構(gòu)建、靜態(tài)分析、單元和系統(tǒng)測試。

pYYBAGLVc5WABkNoAAHw3Vd5ae4420.jpg

圖 5:持續(xù)集成基礎設施的管道,包括構(gòu)建、靜態(tài)分析、單元測試、系統(tǒng)測試,最后是可交付產(chǎn)品。

經(jīng)典調(diào)試器因此成為在真實硬件上進行測試的測試工具。

通常,軟件也可以在 PC 平臺上進行廣泛的測試,與目標硬件無關。然而,并非所有潛在錯誤都在模擬環(huán)境中檢測到:例如,所需的硬件外圍通常不可用,或者應用程序的行為與真實硬件不同,時序行為不同,或者交叉編譯器生成目標- 特定的目標代碼,因此與用于測試環(huán)境的編譯器的代碼不同。

因此,有必要在早期盡可能接近真實硬件進行測試,以確保最終產(chǎn)品的正確功能以及應用程序的準確時序行為。

ISO26262 和 DO-178C 等安全標準會影響工具的功能范圍以及向客戶提供這些功能正確性的證明。特別是在航空領域,工具制造商被要求在工具認證方面進行合作已經(jīng)有很長一段時間了——但最近在汽車行業(yè)也需要通過 ISO26262 進行合作。

為此,工具制造商必須為與特定用例相關的工具的功能正確性創(chuàng)建驗證選項。這些可以是組織措施,例如開發(fā)過程的外部審計或獨立第三方對工具的認證,或支持客戶執(zhí)行正確性證明的參考工具套件。上述使用調(diào)試器自動化測試過程的方法非常適合實施此類工具鑒定過程。

結(jié)論:更復雜的調(diào)試器,不斷發(fā)展的新業(yè)務模型

調(diào)試器越來越多地變成了一個過程工具。調(diào)試器的基本功能找到了它們的普通應用,并輔以強大的分析功能。軟件日益復雜,軟件開發(fā)本身使用的大量軟硬件工具及其相互依賴性,推動了工具制造商、芯片供應商和客戶之間對知識轉(zhuǎn)移和咨詢服務的需求。

參與這些發(fā)展的各方之間持續(xù)和開放的溝通是成功的關鍵。今天,客戶不再想購買工具,他們想隨時隨地使用它們。嵌入式軟件開發(fā)和軟件測試的新商業(yè)模式將發(fā)揮作用,其中工具、知識轉(zhuǎn)移和咨詢是一種常見的產(chǎn)品,最終是一種服務。正如軟件行業(yè)所發(fā)生的那樣,訂閱業(yè)務模式也越來越適合全球嵌入式軟件開發(fā)和測試。

審核編輯 黃昊宇

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

    關注

    5200

    文章

    20490

    瀏覽量

    334679
  • FlaSh
    +關注

    關注

    10

    文章

    1749

    瀏覽量

    155603
  • 調(diào)試
    +關注

    關注

    7

    文章

    650

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    NOR Flash NAND Flash 和SD NAND,底層結(jié)構(gòu)應用差異

    nor flash,nor nand,sd nand,spi nor,nand flash
    的頭像 發(fā)表于 03-05 18:24 ?123次閱讀
    <b class='flag-5'>從</b>NOR <b class='flag-5'>Flash</b> <b class='flag-5'>到</b> NAND <b class='flag-5'>Flash</b> 和SD NAND,<b class='flag-5'>從</b>底層結(jié)構(gòu)<b class='flag-5'>到</b>應用差異

    NOR Flash NAND Flash 和SD NAND,底層結(jié)構(gòu)應用差異

    在嵌入式系統(tǒng)開發(fā)中,“存儲選型”是經(jīng)常會遇到的問題,特別是許多曾長期使用 NOR   Flash 的工程師,在切換到 NAND Flash 時常常感到疑惑:   為什么 NAND Flash 容量
    發(fā)表于 03-05 18:23

    “人機交互”“數(shù)字預演”:詳解 HMI、SCADA 與虛擬調(diào)試的閉環(huán)架構(gòu)

    “人機交互”“數(shù)字預演”:詳解 HMI、SCADA 與虛擬調(diào)試的閉環(huán)架構(gòu)
    的頭像 發(fā)表于 03-05 11:36 ?156次閱讀
    <b class='flag-5'>從</b>“人機交互”<b class='flag-5'>到</b>“數(shù)字預演”:詳解 HMI、SCADA 與虛擬<b class='flag-5'>調(diào)試</b>的閉環(huán)架構(gòu)

    一文搞定RK平臺Wi-Fi/BT調(diào)試配置問題解決全攻略

    專用芯片,Wi-Fi/BT 的穩(wěn)定運行直接影響產(chǎn)品體驗。本文配置、編譯、測試問題排查,手把手帶你搞定 RK 平臺 Wi-Fi/BT 調(diào)試
    的頭像 發(fā)表于 02-09 16:57 ?1501次閱讀
    一文搞定RK平臺Wi-Fi/BT<b class='flag-5'>調(diào)試</b>!<b class='flag-5'>從</b>配置<b class='flag-5'>到</b>問題解決全攻略

    軟件硬件的轉(zhuǎn)場:一場由OceanOS-CM0啟發(fā)的嵌入式思考

    。我們在高級語言中習慣了使用現(xiàn)成的集合類,很少思考底層的數(shù)據(jù)結(jié)構(gòu)設計。而在嵌入式世界,每一個數(shù)據(jù)結(jié)構(gòu)的選擇都直接影響系統(tǒng)性能。 五、“知道”“做到” :調(diào)試思維的轉(zhuǎn)變 1. **** 串口:硬件
    發(fā)表于 01-04 15:52

    Linux內(nèi)核日志玩明白了嗎?printk調(diào)試神器全解析

    的日志等級機制,參數(shù)配置實戰(zhàn)用法一次講透~一、printk與printf的差異用戶態(tài)的printf大家都熟,直接打印內(nèi)容,簡單粗暴。但內(nèi)核場景更復雜,系統(tǒng)崩潰或是
    的頭像 發(fā)表于 12-19 08:32 ?898次閱讀
    Linux內(nèi)核日志玩明白了嗎?printk<b class='flag-5'>調(diào)試</b>神器全解析

    代碼里的青春——我與RT-Thread的故事

    發(fā)出RT-Thread20周年故事征集令的第一天起,我們已陸續(xù)收到了數(shù)十位開發(fā)者的投稿。有人凌晨三點在調(diào)試線程棧,有人在社區(qū)收獲友情,有人靠RTT拿下比賽順利上岸……今天我們選出幾篇極具代表性
    的頭像 發(fā)表于 12-12 20:11 ?1109次閱讀
    代碼里的青春——我與RT-Thread的<b class='flag-5'>故事</b>

    NOR FlashNAND Flash和SD NAND,底層結(jié)構(gòu)應用差異

    在嵌入式系統(tǒng)開發(fā)中,“存儲選型”是經(jīng)常會遇到的問題,特別是許多曾長期使用 NOR   Flash 的工程師,在切換到 NAND Flash 時常常感到疑惑:   為什么 NAND Flash 容量
    發(fā)表于 12-08 17:54

    AT32F系列 使用DMA將數(shù)據(jù)FLASH傳輸?shù)絊RAM

    使用DMA將數(shù)據(jù)FLASH傳輸?shù)絊RAM 下載示例 演示AT32F系列使用DMA將數(shù)據(jù)FLASH傳輸?shù)絊RAM的使用方法。 注:本例程對應的代碼是基于雅特力提供的V2.x.x
    發(fā)表于 12-03 16:26

    RK?平臺?USB?攝像頭成像調(diào)試指南:信號畫質(zhì)的全流程優(yōu)化

    信號調(diào)試畫質(zhì)優(yōu)化的實操方案,助力開發(fā)者快速解決成像難題。 一、先搞懂:成像差的核心誘因 USB?攝像頭成像模糊、卡頓、斷連等問題,本質(zhì)是?“信號傳輸”?與?“硬件適配”?雙重問題: ?信號層面:USB?眼圖指標不達標、枚舉失敗、異常斷開,導致圖像數(shù)據(jù)傳輸中斷或失真;
    的頭像 發(fā)表于 11-26 07:05 ?856次閱讀
    RK?平臺?USB?攝像頭成像<b class='flag-5'>調(diào)試</b>指南:<b class='flag-5'>從</b>信號<b class='flag-5'>到</b>畫質(zhì)的全流程優(yōu)化

    LuatOS GNSS定位調(diào)試新手必讀:一的完整教程!

    面對LuatOS GNSS定位調(diào)試,新手開發(fā)者常感無從下手。本文將為您梳理一的完整教程,環(huán)境搭建代碼
    的頭像 發(fā)表于 11-03 09:59 ?630次閱讀
    LuatOS GNSS定位<b class='flag-5'>調(diào)試</b>新手必讀:<b class='flag-5'>從</b>零<b class='flag-5'>到</b>一的完整教程!

    阻抗計算入門精通

    在 PCB 設計領域,“阻抗” 是決定信號能否穩(wěn)定傳輸?shù)年P鍵。不少工程師曾因忽視阻抗匹配,遭遇信號反射、串擾等問題,導致產(chǎn)品調(diào)試反復卡殼。其實,只要掌握阻抗計算的核心邏輯,參數(shù)準備軟件實操都能輕松應對。今天這篇文章,用通俗語
    的頭像 發(fā)表于 10-16 10:58 ?2252次閱讀
    阻抗計算<b class='flag-5'>從</b>入門<b class='flag-5'>到</b>精通

    如何在rtt studio中進行外部flash調(diào)試?

    app下載到了外部flash(w25q64)程序可以運行但調(diào)試不了
    發(fā)表于 09-25 07:53

    AS32X601芯片Flash擦寫調(diào)試技術(shù)解析

    本文聚焦于 國科安芯推出的AS32X601 芯片的 Flash 擦寫調(diào)試工作,深入剖析其片內(nèi) Flash 存儲器架構(gòu),詳述 Flash 控制器功能與運作機制。通過對
    的頭像 發(fā)表于 07-22 13:47 ?774次閱讀
    AS32X601芯片<b class='flag-5'>Flash</b>擦寫<b class='flag-5'>調(diào)試</b>技術(shù)解析

    調(diào)試時Memory窗口中Flash內(nèi)容不更新的原因和解決辦法

    調(diào)試時在代碼中對Flash進行寫操作時(比如Bootloader對Code Flash進行升級操作,Application對Data Flash進行寫操作),Memory窗口中
    的頭像 發(fā)表于 04-01 09:18 ?1276次閱讀
    <b class='flag-5'>調(diào)試</b>時Memory窗口中<b class='flag-5'>Flash</b>內(nèi)容不更新的原因和解決辦法