開源 RT Thread Studio,用於晶片的韌體開發

簡介

        早期在開發韌體時,電腦環境需要自己架設 cross-compile 環境,並將編譯器的 tool chain 工具設定好路徑才能使用,參考前文 漫談 ARM cross compiler 環境。不過,現在的開發環境人性化多了,市面上有 KEIL、IAR...等 IDE 商業工具,我們編譯 ARM 核心晶片變得很便利。前陣子發現一套開源的 IDE 工具,稱為 RT-Thread Studio,它支援 ARM 和 RISC-V 晶片的韌體編譯,號稱是開發物聯網的 IDE。下載並安裝 RT-Thread Studio 之後,這套工具外觀看起來就是一套類似 eclipse 的工具,對軟體開發者不會陌生。最後說一點,RT Thread Studio 吸引到我的原因,除了開源之外,主要還是使用 KEIL 和 IAR 這些 IDE 工具的開發成本越來越高,不得不找尋新的工具。

套件說明

        圖一是創建一個新的項目,我們選用 STM32F103 的晶片來試試看。首先,在創建項目時,可以選定這是 RT-Thread 項目BSP 項目或者無 RT-Thread 架構的項目。甚麼是 RT-Thread 架構?簡單說,把它想像成是作業系統 (OS) 的架構,底層各類 ARM 或 RISC-V 晶片的 BSP (Board Support Package) 當作驅動程式。此外,這架構還有一個 nano 版本,屬於相對精簡的版本,適合開發資源有限且運算量低的晶片。

圖一:創建一個新項目


        下圖二是下載資源的視窗,也像 eclipse IDE 一樣,我們可以下載開發時所需要的資源,圖中顯示目前支援的交叉編譯工具有哪些,支援的除錯器又有哪些。一般來說 ARM 的編譯工具市面上已經很常見,不過近期 RISC-V 晶片開始火熱起來 (Intel 加入該領域),因此這套 IDE 非常適合拿來玩一玩 RISC-V 板子。
圖二:編譯的 tool chain 和除錯器


        下圖三是目前 RT-Thread 架構支援的 BSP (Board Support Package),可視為每塊開發板子的驅動程式一樣,各家晶片原廠通常會推出晶片開發板或評估板,同時提供板子的驅動。從列表來看,支援的板子非常多,而我比較常使用的是 STM 的板子,現階段 IDE 提供從 STM32F1、STM32F4 到 F7...等相當齊全。
圖三:列出支援的板卡


       下圖四是目前 RT-Thread 架構版本,包含 nano 版本和 LTS 長期支持的版本。此外,可下載晶片的安裝包 (CSP - Chip Support Package),CSP 的內容通常包括晶片 reset 後的初始化,如:設定 clock、中斷向量表、核心暫存器...等相關原始碼。如果晶片原廠有支援 RT-Thread 的話,就能在這兒下載了,目前看起來 STM32 是 RT-Thread Studio 的主力
圖四:支援的晶片安裝包


       實際操作一下,新建 nano 項目,以 STM32F103 開發板來做驗證,如下圖五所示,按下 Finish 鍵後,會自動生成所有相關的代碼,呈現如下圖六。圖的最左邊是這個 nano 項目所包含的程式檔案,中間區塊是程式的編寫區,下方是結果輸出區域。我們開啟 main.c 後,加上 GPIO pin 腳的控制程式碼(如下),點亮板子上的 LED 燈號。如果編譯並下載後,能點亮燈號,代表成功了。
                  __HAL_RCC_GPIOC_CLK_ENABLE();

                  pinDef.Pin = GPIO_PIN_13;
                  pinDef.Mode = GPIO_MODE_OUTPUT_PP;
                  pinDef.Pull = GPIO_NOPULL;
                  pinDef.Speed = GPIO_SPEED_FREQ_LOW;
                  HAL_GPIO_Init(GPIOC, &pinDef);

                  while (count++)
                 {
                      HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, bOn ? GPIO_PIN_RESET : GPIO_PIN_SET);
                      bOn = !bOn;

                      LOG_D("Hello RT-Thread!");
                      rt_thread_mdelay(1000);
                 }

圖五:新建一個 nano 項目


圖六:RT-Thread 項目的布局圖

Debug 調試

        開發板接上 ST-Link debugger 就能在 RT-Thread 開始除錯調試了,如下圖所示。當我們按下 debug 鍵時,卻跳出錯誤視窗,此時不用慌張!到系統的\repo\Extract\Debugger_Support_Packages\STMicroelectronics\ST-LINK_Debugger 目錄下找到 debug.log 檔案,看一看內文的錯誤訊息是怎麼一回事,可能是 ST-Link 除錯器的韌體版本沒更新,或者將 ST-Link debugger v1.6 版本降級來解決。
圖七:ST-Link V2 接上開發板
圖八:ST-Link Debug 錯誤視窗


        最後,成功的情況,我們能看到下圖的畫面。我們可以設 break point,讓程式停在斷點處,右邊小視窗呈現各個變數的數值,左邊則顯示目前的線程。
圖九:debug 調試的視窗畫面

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[模組] LD3320 離線語音辨識晶片與 ESP32 無線傳輸