透過 Meadow.CLI 工具安裝(更新) MeadowF7 開發晶片板的作業系統

在 介紹 MeadowF7 晶片開發板 後,其安裝 Meadow 的 Visual Studio Extension 與 建立 Meadow 開發專案皆不是什麼難事,但要透過 Meadow.CLI 工具繼續來安裝(更新) MeadowF7 開發晶片板的作業系統 meadowOS,其處理還有點繁瑣,於是乎寫了這篇文章作些紀錄。



首先,若將 MeadowF7 開發晶片板透過 Boot 模式(將 Boot 鈕按著同時接上 USB 線即是 Boot 模式)連接到 Windows 電腦,在 Windows 的 "裝置管理員" 會看到類似如下畫面:

會發現 "STM32 BOOTLOADER" 會被視為其他裝置,且其驅動程式無法正確運作,此時就須要靠 Zadig 來更新相關的驅動程式(更詳細介紹可看 Scott 的 Blog 文章)。

 

來到 Zadig 的官網: https://zadig.akeo.ie/,並找到 Download 的連結下載最新的 Zadig 的執行安裝檔。

 

下載完成後如下:

 

執行該 Zadig 應用程式,預設會讀取到無法正確驅動的 "STM32 BOOTLOADER",注意此時的 Driver 會是呈現 None。



若沒有,可在 Zadig 在選單中點選 Options,再點選 "List All Devices"。


 

應該就會看到 Zadig 會列出 "STM32 BOOTLOADER" 裝置。



選取到 "STM32 BOOTLOADER" 之後即可點選 "Install Driver"。



請等待安裝,直到出現安裝完成的訊息畫面。




在 Zadig 的畫面在 "STM32 BOOTLOADER" 的 Driver 會呈現如下:


 

而在裝置管理員中確認 "STM32 BOOTLOADER" 也應已經能正常被識別成 "通用序列匯流排裝置" 且其驅動程式能正確運作。

 

接著請開啟 "命令提示字元" ,並鍵入 "dotnet tool install WildernessLabs.Meadow.CLI --global" 的指令。


若該指令無法在命令提示字元當中順利執行,請確認是否已有安裝最新的 dotnet sdk,可直接選擇下載與安裝 .NET 5 的 .net sdk:

 

 

安裝 Meadow.CLI 完成。

 

接著再利用系統管理員身分執行起另一個 "命令提示字元" 準備透過 meadow 來下載 DufUtil,鍵入以下指令 "meadow --InstallDfuUtil"。

Dfu-Util 工具可在 http://dfu-util.sourceforge.net 的網站中找到 releases 的部分進入下載連結的頁面。



但目前 v0.10 的版本沒有 Windows 的安裝執行檔可供下載,所以可選擇使用 Meadow.CLI 提供的指令下載該 Dfu-Util 工具。

 

若無意外,則在命令提示字元當中會顯示已下載安裝完畢。

 

這裡來解釋一下為什麼要用 "系統管理員" 身分,來另外執行一個命令提示字元下載 DfuUtil 的執行檔。

其原因是 Meadow.CLI 在執行 meadow --InstallDfuUtil 的指令時,預設會把 DfuUtil 的執行檔案下載到 Windows 資料夾底下的 System32 資料夾(熟悉 Windows 的人都知道 System32 資料夾是需要特殊權限才能存取的)。

所以如果更新完畢後會覺得有點怪的話,可以在更新完成後到 Windows 資料夾下的 System32 資料夾中把下圖的兩個檔案移除。

只是下次要在更新新版 meadowOS 時要再安裝一次 DfuUtil,或是可以把 DfuUtil 執行檔的兩個檔案搬移到 "C:\Users\<<YourUserAccount>>\AppData\Local\Wildernesslabs\Firmware" 當中來使用。經測試是也能順利更新 meadowOS,但未來不保證仍順利可行。

 

接著就可以回到原本的命令提示字元中下達 "meadow --Download" 指令,來下載最新版本的 meadowOS。



下載完成後,會告知 meadowOS 的最新版本已經下載到 "C:\Users\<<YourUserAccount>>\AppData\Local\Wildernesslabs\Firmware" 資料夾下。



後續為了方便起見,下面就直接透過 cd 指令切換到 "C:\Users\<<YourUserAccount>>\AppData\Local\Wildernesslabs\Firmware" 該資料夾中,操作後續指令。



接著就下達 "meadow --FlashOS" 的指令。

注意此時 MeadowF7 晶片板仍是保持 Boot 模式與電腦連結。



下面就是更新的過程截圖畫面:

注意: 若沒有先安裝 DfuUtil 的話,在更新 meadowOS 時的過程中會發生失敗。

 

更新完畢後,MeadowF7 晶片板會自動重啟,裝置管理員會重新抓到用一般模式連結電腦的 MeadowF7 晶片板,並且會有個 COM[Num] 的指定。

 

接著依照 "Wilderness Labs" 官方說明,更新玩 MeadowF7 晶片板的 meadowOS 之後,還需要調整 Mono 跟更新 Esp 晶片的部分,於是請先執行 "meadow --MonoDisable -s COM[Num]" 的指令。

注意: 此處一定要指定 -s COM[Num]。
而如果遇到顯示了 "Opening Port COM[NUM]" 的訊息後就卡住,請嘗試著按 MeadowF7 晶片板上的 RST 鈕後再按 BOOT 鈕,再重新執行上述指另一次。若還是呈現相同狀況,請斷開電腦與 meadowF7 晶片板的 USB 連接線,重新接上(一般模式)後,再執行上述指令一次。

若該指令成功後,最後會呈現 "Mono disabled, will not run app.exe" 等訊息。 

 

完成後,再繼續執行 "meadow --MonoUpdateRt" 的指令,成功後會呈現 "Mono runtime successfully flashed" 等訊息。


 

完成後繼續調整 MeadowF7 晶片板上的 Esp 晶片的部分,下達 "meadow --FlashEsp" 的指令。


完成後就可以下達 "執行 "meadow --MonoEnable" 的指令",重啟 Mono 執行。成功後會出現 "Mono has been enabled, Restarting F7 Micro" 的訊息。


 

最後也可以使用 Meadow.CLI 的 "--GetDeviceInfo" 或 "--GetDeviceName" 指令看看並確認目前 MeadowF7 晶片板的 OS 版號 與 裝置序號 等資訊:

更新完成!!!

可喜可賀~~~可喜可賀~~~

 

接著就可以開啟 Visual Studo 來開啟 Meadow 專案測試部屬 Meadow 的專屬應用程式到晶片板上。

請在 Visual Studio 透過 Meadow Device Explorer 確認連線 MeadowF7 晶片板的 Port 是否正確。



接下來就跟一般 .NET 開發動作相同,建置或編譯該應用專案。

 

正確編譯完成後,即可透過 Visual Studio 部屬該 Meadow 應用程式到 MeadowF7 晶片板中。

 

在部屬的同時可透過 Visual Studio 的輸出窗格中的 "建置" 了解部屬的過程。



完成後,可將輸出窗格切到 "偵錯" 觀看執行的輸出結果。

目前(2021/1/8)透過 Visual Studio (for Mac) 來開發 MeadowF7 晶片板,執行 Meadow 應用程式尚未支援 "DEBUG" 模式並執行單步偵錯的開發,只能在應用程式當中透過 Console 的 Write、WriteLine 相關方法觀看輸出結果。

而官方說明在未來正式推出 MeadowOS 1.0 前會支援。


 

相關參考連結:


 


I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
 

MVP_Logo



I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.

If you want to know more about them, welcome to my website:
https://jamestsai.tw 


本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。