reTerminal 系統升級注意事項

reTerminal 系統升級注意事項

在 2021 年 Q2 時,我們的供應商 Seeed 就開始宣傳上架一款創新概念的平台產品:reTerminal,大約經過半年時間幾經硬體、韌體小改版後,目前整個 reTerminal 平台於 2021 年底進入穩定的實用階段,我們也開始陸續進口、並推廣給 maker 同好與業界人士參考運用。

基本上 reTerminal 就是利用 Raspberry Pi 4 Compute Module 打造的一體機,與一般常見的官方開發板定位不同,適用於自訂開發的硬體環境。所以在作業系統升級時可能未必能以之前的觀念直接上手,本文就是協助新手釐清一些基本狀況,以便能夠快速排除問題。

系統架構簡介

Raspberry Pi 4Compute Module 可以理解成樹莓派的核心模組,功能大致與 Raspberry Pi 4 開發板相同,不過為了便於第三方廠商進行客製化,拿掉了一些 I/O 端子甚至是輔助晶片,以便能被嵌入到第三方底版上。因此要把一般為開發板製作的 Raspberry Pi 作業系統用於 reTerminal 時,需要自訂加掛一些系統核心程式設定。

reTerminal 直接可用的功能區塊為:

  • 4GB DRAM
  • 板載 32GB eMMC 版本,因此禁用了 MicroSD 卡槽。
  • 直接可用內建的 EthernetWiFi 模組。(在安裝第三方系統時可能要先透過進行設定,才能啟用其他周邊)

而不能直接使用、需要對作業系統加裝核心外掛的硬體功能如下:

  • USB 端口
  • DSI 介面的 5" 1280x720 LCD 螢幕
  • 按鈕與 LED 燈號

不過只要在安裝設定階段加載設定完成這些核心外掛之後,在ㄧ般使用時與開發板並沒有太大不同。主要是多了一個方便的螢幕隨時可以反饋視覺化資訊。

此外,在極少數的狀況下可能會遇到系統佔用少數的 GPIO pins,不過一般用於通訊的 UARTI2C、與 SPI 不會受到影響,所以絕大多數的 GPIO 擴充模組也是能夠直接掛載使用。另外就是因為 GPIO 插孔無防呆設計且間隙較大,在安裝擴充模組時要特別注意 GPIO 連接器的方向和 pinout 一一對應好,千萬不要裝反,或是錯位,以免將板子燒壞了。

幾個重要的觀念與操作步驟

Seeed 原廠官網上其實是具備了滿詳盡、完整的操作步驟,但是內容散落在各段落文字中。建議可以先大致瀏覽本文,以便掌握幾個升級時需要特別留意的觀念與操作步驟。

Seeedstudio 論壇上有關 reTerminal 的討論 中,看到有一些用戶遭遇到的問題,多半不外乎外掛 overlays 或是 STM32 韌體更新等設置不當的狀況造成的。仔細、確實地按照原廠說明步驟進行操作,即便是遇到不正常現象,重新來過應該也都可順利解決。

更新系統前的準備

如前所述,reTerminal 上有些 I/O 功能如 USBLCD 需要先幫系統核心外掛 overlays 之後才會啟用,所以你應該事先準備下列東西:

  • 具備 DHCP 功能的 Ethernet 有線網路連接、或是 WiFi 無線連接。
  • HDMI 螢幕(注意有些螢幕可能輸出畫面解析度需要自行調整)。

另外因為剛安裝完新系統後 USB 功能很可能無法啟用,所以你可能需要在燒錄系統映像檔前先透過 Raspberry Pi Imager 之類的工具設置妥當網路連接以及 ssh 連接功能,這樣燒錄完後才能透過遠端登錄方式 login 到系統中安裝額外的 seeed-linux-overlays 等。總之,您必須先確定燒錄新系統後可以透過 ssh 登入,以便能繼續加掛 seeed-linux-overlays 啟用其它 reTerminal 的 I/O 周邊功能。

STM32 韌體升級

您拿到的 reTerminal 都是預先安裝好基於 Buster 版本的 Raspberry Pi OS。建議最好能先行升級 STM32 韌體,因為後續您可能會想要安裝基於 Bullseye 版本的 Raspberry Pi OS、或其它相關的衍生系統,較新版本的 OS 有可能必需要用到 v1.9 版本的 STM32 韌體。

我們進口的是 v1.8 韌體搭配 v1.6 硬體的穩定版本,所以請務必參考 使用 CM4 连接到 STM32 并烧录固件,確實按照步驟一一執行操作指令。

  1. 可以採用 nanovi 之類的文字模式編輯器編輯 /boot/config.txt
  2. 在該文件最底部,如果有看到的話就註釋掉 dtoverlay=reTerminal
1#dtoverlay=reTerminal
  1. 重新開機 reTerminal
1sudo reboot
  1. 可以建立一個 STM32 目錄專門放置相關韌體與燒錄工具。
1mkdir STM32
  1. 這個連結 下載 STM32 韌體,即最新版本的 STM32G030F6_R2.bin 文件。

  2. 下載、編譯、並(選擇性)安裝 stm32flash

1sudo apt-get install git
2git clone https://github.com/Seeed-Projects/stm32flash
3cd stm32flash
4make -j4
5sudo make install
  1. 透過 i2c-tools
1i2ctransfer -y 1 w2@0x45 0x9b 0x01
  1. stm32flash 工具清除 STM32 晶片上的內容
1stm32flash -a 0x56 -o /dev/i2c-1
  1. Flash the firmware to STM32 using stm32flash tool
1stm32flash -a 0x56 -w STM32G030F6_R2.bin -v -g 0x0 /dev/i2c-1

注意:STM32G030F6_R2.bin 是新韌體的檔名

  1. 修改 OPTR 暫存器切換為
1i2ctransfer -y 1 w2@0x45 0x9b 0x00

在這邊要注意的是讓 STM32 晶片進入 boot mode 後必須完成燒錄執行後,對 OPTR 下達指令退出 boot mode 模式,才能正常運作。

透過 USB 掛載 eMMC 燒錄系統映像檔案

可參考 将Raspberry Pi操作系统/64位Ubuntu操作系统或其他操作系统闪存到eMMC上 一文,先將 reTerminal 外殼拆開,調整 boot switch 到適當位置,然後將你電腦上的 USB 線連接 reTerminal 的電源插口,這倆有兩個需要注意的地方:

  • 使用 reTerminal 時可能需要較大的電流,請確認你電腦的 USB 插孔
  • 你使用的 Type-C 線材必須具備數據資料通訊功能,不能只有供電功能而已。

如果符合上述條件的話,你的電腦應該能夠偵測到連接了一個新的 USB 裝置,使用 Seeed 推薦、Raspberry Pi 原廠撰寫的 rpiboot 工具時,應該就能順利上傳一段小小的程式碼給 reTerminal,之後會模擬出來一個 USB 儲存裝置掛載在你的電腦系統下。

之後將系統映像檔案燒錄到 eMMC 上的操作,就如同為一般的 Raspberry Pi 開發板燒錄作業系統ㄧ樣,只是現在是直接燒錄到 eMMC 儲存媒介上。燒錄完後斷開連接,然候將 boot switch 切回正常開機模式,接上電源開機。

如果你不是採用 Seeed 專為 reTerminal 製作的系統映像檔,開機後應該無法使用 USB 與 LCD 螢幕(因為還沒有安裝核心外掛 overlay),所以您可能需要在燒錄錢先透過 Raspberry Pi Imager 設置妥當網路連接和 ssh 連接功能,這樣燒錄完後才能透過遠端登錄方式 login 到系統中安裝額外的 overlays 等。

安裝 seeed-linux-overlays

敬請參考 Install reTerminal drivers after flashing new Raspberry Pi OS/ Ubuntu OS or Other OS ㄧ節。如前所述,官方或其它 Raspberry Pi 的作業系統中並未直接支援 reTerminal 的一些周邊 I/O 晶片與設定,所以需要讓核心外掛一些 overlays 來進行支援,才能成功控制 USB 與 LCD。

安裝 arandr

可以參考 arandr: 輕薄短小又彈性極高的外接螢幕調整器對這個小程式的介紹與使用,透過下列命令安裝 arandr

1sudo apt install arandr -y

就可以分別調整 DSI 與 HDMI 螢幕的方向與設定。

調整Touch Screen 的方向

有時安裝系統後發現點擊觸控螢幕位置的反應怪怪的,可能會有偏移或是方向錯誤的情況。可以參考這一篇 Q12: Troubleshooting Touch Screen Inaccuracy 進行修正。

倘若遇到 LED、Button、Buzzer 的錯誤狀況,也是看這一篇 FAQ 來嘗試修正。

安裝經驗分享

以下分享一下我們最近在 reTerminal 上更新安裝系統的經驗。

Raspberry Pi OS

buster

如果發生任何問題,您都可以參考 我怎样才能烧录原厂reTerminal的Raspberry Pi操作系统? 燒錄回預載的 32-bit Raspberry Pi OS 應該就可以復原。

注意!上述連接是原廠中文版 FAQ 中提供的系統映像檔,建議自己留存備份,以便後續需要時提供救援。

如果 LCD 無顯示,有個可能性是 STM32 的韌體停留在 boot mode,您應該參考前面的說明透過 I2C 重新燒錄 STM32 韌體並且確實退出 boot mode,然後重新開機即可。

bullseye

根據原廠文件與我們的經驗,最好先將 STM32 韌體更新到 v1.9 版本,可能可以避免奇怪的問題。

32-bit

Seeed 原廠英文版 FAQ 中提供有 Q2: How can I flash Raspberry Pi OS which is originally shipped with reTerminal?,更新燒錄系統後即可使用

64-bit

注意!!!根據我們經驗,原廠給的 64-bit 映像檔燒錄後 LCD 無法顯示畫面,且似乎有去動到 STM32 韌體部分。我們是重新燒錄 32-bit 版本 OS 後,又繼續燒錄 v1.9 版本的 STM32 韌體,才讓手上的 reTerminal 恢復正常。在原廠論壇上也有些老外在哀嚎這個問題,建議可能方式為

  1. 確認已經燒錄 v1.9 版本的 STM32 韌體
  2. 先燒錄自 Raspberry Pi 原廠下載給一般 Raspberry Pi 開發板使用的 64-bit OS。
  3. 再自行安裝 seeed-linux-dtoverlays

應該就可以使用官方的 64-bit Raspberry Pi OS,有空我們會確認一下這個方法。

DietPi

DietPi 是我們目前採用的主力系統,系統本身小巧精緻,不但適用於嵌入式系統、也適合桌面應用環境。只要下達一個指令就能導引完成系統升級,非常方便。

在安裝前只要先準備好網路連接與 ssh 連接,系統開機後再設法安裝 seeed-linux-dtoverlays,後續ㄧ切都很完美。

參考資料