IoT 裝置除錯工具與技術的專業指南
資料提供者:DigiKey 北美編輯群
2021-03-23
開發嵌入式系統時,軟硬體之間必須配合良好,但這極為複雜且有其難度,即便是看似相對單純的物聯網 (IoT) 裝置也是一樣。以致於出錯時 (終究都會),除錯所需的時間往往不僅數小時而已,而會是數週甚至好幾個月。這些延遲與開發成本會讓產品趕不上上市時間、延誤製造排程,也會打亂供應鏈與營運計畫。
最好的作法就是縮短除錯花費的時間,而要讓專案保持正軌,就要使用硬體除錯工具搭配可自由取用的軟體,以便深入瞭解系統的運作情況,並找出問題的起源點。對專業人員及業餘愛好者等來說,擁有可處理此工作的正確工具,有助於快速正確地完成工作。
本文將探討可用來除錯並分析 IoT 裝置效能的開發工具與軟體。並以 STMicroelectronics 的開發板作為 IoT 裝置的範例,然後使用 SEGGER Microcontroller Systems 的工具與軟體來瞭解系統並進行除錯。接著也會探討幾個技巧與訣竅,以便將除錯時間降至最低,並按照時程順利交出 IoT 專案。
要除錯的典型 IoT 裝置
IoT 裝置幾乎已經遍及各個產業,從智慧家庭到工業監測控制等都有其蹤影。且不論應用類型為何,IoT 裝置都會有幾種典型的元件。包括:
- 微處理器
- 連線用的無線電
- 感測器
若是為了要探索除錯技術或測試應用程式碼,開發人員並不會想要對其板件進行客製化。因為這實在太耗時間了。反之,較聰明的作法是使用低成本開發板,例如 STMicroelectronics 的 B-L4S5I-IOT01A IoT 節點用探索套件。此產品幾乎擁有典型 IoT 裝置上使用的各種項目 (圖 1)。
圖 1:STMicroelectronics 的 B-L4S5I-IOT01A IoT 節點用探索套件含有 IoT 裝置通常需要的各種元件。(圖片來源:STMicroelectronics)
此板件含有 STM32L4S5VIT6、 Arm® Cortex®-M4 微控制器,運行頻率為 120 MHz。具有高達 2 MB 的快閃記憶體及 640 KB RAM 可提供支援。重要的是,為了符合此作法的用意,板件含有 Wi-Fi 和大量感測器,可用來快速打造模擬的 IoT 測試裝置。
專業的除錯硬體工具
幾乎所有開發板都內建 JTAG/SWD 介面,因此開發人員無需拿自己的編程器來用。也就是說,開發板開箱就可使用。就行銷角度來看,這樣很好,但在實際工程上則不然:板載除錯器通常是大幅縮減的款式,因此限制眾多,例如可用斷點數量及介面鮑率等。在不了解的情況下,這些限制可能不是什麼大問題,但若有無限制的斷點,就可避免要時常啟用與停用斷點的麻煩,且要達到應用追蹤就需要快速的鮑率 (軟體工具章節會進一步說明追蹤)。
目前有多種不同的工具可提供專業的除錯體驗,但這些工具本身並非完整的解決方案。工具需要良好的軟體提供支援。有一套工具在硬體和軟體層面上都相當突出,那就是 SEGGER J-Link 系列。此系列有提供除錯器款式,適合幾乎各種開發人員使用,從學生、業餘愛好者到硬派專業人士都適用。
對一般開發人員來說,有兩個款式可提供最實用的體驗:J-Link Base 與 J-Link Ultra+ (圖 2)。就尺寸而論,這兩個款式是相同的,但 J-Link Ultra+ 能讓開發人員以更快速度下載到 RAM (3 MB/s 比 1.0 MB/s),也提供更快速的 SWD 介面速度 (100 MHz 比 30 MHz)。更快的速度可在開發人員想追蹤應用時發揮關鍵作用,以便深入瞭解效能、RTOS 行為,並對系統進行除錯。
圖 2:SEGGER J-Link Ultra+ 可透過 50 MHz 目標介面,提供開發人員增強的除錯器體驗。(圖片來源: SEGGER Microcontroller Systems)
J-Link 與 B-L4S5I-IOT01A 開發板有個優點,就是這兩者可透過 Tag-Connect TC2050-IC-NL 纜線以及 TC2050-CLIP-3PACK 固定扣彼此相連。如此一來,就可透過「釘墊」將除錯器接到開發板 (圖 3)。有可能要將 J-Link 的 20 引腳連接器轉接到 TC-2050 纜線的 10 引腳連接器。此時有個選項可使用,就是 8.06.04 J-Link 10 引腳配接器
圖 3:在 B-L4S5I-IOT01A 開發板上,Tag-Connect 纜線組件可透過類似釘床般的 PC 板覆蓋區 (右) 進行連接。(圖片來源:STMicroelectronics)
開發人員硬體側的路徑封閉後,就可使用軟體工具來分析應用並進行除錯。
專業的除錯軟體工具
有不少軟體工具可順利搭配 SEGGER J-Link 工具使用,而且出乎意料的是,並非由 SEGGER 提供。以下將介紹一些免費工具,瞭解開發人員如何使用這些工具對軟體進行除錯。
首先登場的是 J-Scope。J-Scope 是類似振盪器的工具,可顯示隨時間而變化的變數值。開發人員可監測單一變數或數十個變數。但請注意,監測的變數越多,採樣數就會更少,且樣本緩衝區遲早會溢流並流失資料。
將 elf 檔案 (由編譯器輸出) 提供給 J-Scope,就可選擇變數。如此一來即可讀取記憶體位置,開發人員就可設定取樣率,並監測變數隨時間的變化。圖 4 以三個變數的追蹤情況簡單舉例說明。
圖 4:J-Scope 可在應用執行的同時透過 J-Link 來監測變數。(圖片來源:SEGGER Microcontroller Systems)
接著要介紹的是 Ozone。Ozone 是除錯器介面與效能分析器。開發人員可載入 elf 檔案到此工具,然後執行原始碼層級的除錯。可設定斷點並更新其程式碼。此工具對開發人員來說有個特別實用的功能,就是也能執行指令追蹤 (若其硬體有支援),然後判別已經執行的組合與 C 程式碼陳述。這在硬體迴路 (HiL) 測試中,要確認程式碼涵蓋範圍時非常有用。
Ozone 亦可協助開發人員分析其系統效能 (圖 5),並且視覺化呈現隨時間變化的變數。可提供類似 J-Scope 的能力,但整合度較高。甚至可用來監測功耗,並可在單一位置中同步處理這些事件。
圖 5:Ozone 除了可判斷程式碼範圍並進行 RTOS 感知除錯外,更可在應用執行的同時,透過 J-Link 來追蹤變數。(圖片來源:SEGGER Microcontroller Systems)
第三個工具是 SystemView。SystemView 能讓開發人員分析其 RTOS 系統的執行階段行為。任務切換會記錄在追蹤緩衝器中,然後透過除錯器回報給 SystemView (圖 5)。SystemView 接著會顯示此資訊,可讓開發人員查看其上下文交換,然後測量系統效能。這也是視覺化呈現系統狀態的另一個好方法,可藉此找出錯誤和其他問題。
圖 6:SystemView 提供連結深入 RTOS,即可讓開發人員測量任務效能,並視覺化呈現 RTOS 的運作狀態及運作時間。(圖片來源:SEGGER Microcontroller Systems)
嵌入式系統的除錯秘訣與訣竅
若要對 IoT 裝置進行除錯,開發人員須具備適合的硬體及軟體工具。若開發人員想要將除錯花費的時間降至最低,軟硬體兩者都要就位。為了順利除錯,開發人員應謹記幾個「技巧與訣竅」,例如:
- 使用專業的除錯器達到最大的介面鮑率。要從系統取得多少實用的資料,取決於接收資料的速度。速度越慢,除錯時間就越長。
- 提早在開發週期就設定軟體。開發人員不該等到問題發生時,才要設定除錯工具。
- 開始開發時就使用追蹤工具。如此能讓開發人員監測系統效能,並可立即瞭解軟體的變更帶來何種影響。
- 運用指令追蹤或程式計數器取樣在測試期間瞭解系統程式碼覆蓋範圍。程式錯誤會出現在未經測試的條件分支與程式碼中。
- 運用快速的傳輸協定取得晶片外資料,例如即時傳輸 (RTT) 函式庫。
開發人員若遵循這些「秘訣和訣竅」,便可在開發 IoT 裝置時省下很多時間與麻煩。
結論
IoT 裝置軟體越來越複雜,但不代表專業或業餘愛好的開發人員就要陷入系統除錯的困擾中。使用專業的開發工具與軟體,就可提供開發人員所需的深入見解,不僅能進行系統除錯,還可分析並改善系統效能。投資這些工具,使用者就可大幅縮短除錯時間,並讓專案順利進行,以便在合理的期限內上市。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。