0.前言
- 因為智慧車競賽而接觸到了MM32F32G9P這款微控制器。而由於我很喜歡macOS系統,加上我同時喜歡剪影片,因此買了一個arm晶片的MacBook Pro,但這就限制了我沒辦法用雙系統執行Windows系統,只能轉而使用虛擬機器。使用Mac燒錄stm32的教程很多,但是很少有mm32的教程。理論上這塊晶片不用虛擬機器也能燒錄,但奈何本人實力有限,只能做到用vs code代替mdk(
主要keil又醜又難用) - 第一次寫這種教程,可能會漏很多東西,請見諒
1.準備工作
- 準備好pd虛擬機器並安裝Windows系統,Windows10、11都可以
- 虛擬機器上安裝mdk,vsc,python(最好選x86的,不要選arm晶片),以及arm晶片的下載器驅動(比如jlink的arm驅動,可能需要的arm CH341驅動)
2.安裝
先在這裡貼一個vsc外掛EIDE的網址,這個作者原來的外掛Keil Assistant已經不再更新了
安裝在這裡就不再贅述,就是下載外掛即可,詳情請看上面的網址
如果你是Windows筆記本想要使用,基本上按照上面這個網址的教程來配置就不會有任何問題
3.開始
- 安裝完成後點選這裡進入外掛介面
- 點選 匯入專案 匯入KEIL 專案檔案,MDK 專案為
*.uvprojx
, KEIL C51 專案為*.uvproj
隨後右下角會彈出 eide專案是否和keil檔案放在同一資料夾內 和 切換工作區 的彈窗,自行選擇即可
-
點選 設定工具鏈路徑 可以配置mdk路徑,打勾的是配置好的,叉是沒配置好的
(好像本文需要的都自動配置好了?我忘了我有沒有手動配置了)
4.配置
匯入完成後介面如下
配置主要用到 晶片支援包、構建配置、燒錄配置
4.1.晶片支援包
- 點選加號新增晶片支援包,也就是Keil的
*.pack
檔案,如果不需要新增包忽略即可
- 選擇晶片
4.2.構建配置
- 構建配置選擇AC6
- CPU型別按照晶片選擇即可,這裡是Cortex-M3
- 自定義連結指令碼如果匯入的時候就是
true
而且指令碼路徑存在的話就不要管他,不然就選擇false
(後面的更新有詳細說明) - 構建器選項主要用到了兩個,這個後面再說
4.3.燒錄配置
最麻煩的來了
- 在
vs code
需要做的只有四件事:
- 按照下載器選擇燒錄工具,我這裡用的逐飛
Dap Link
,因此選擇pyocd
。 - **程式檔案 **建議點開重新輸入,理論上不輸入也可以,但我會報錯,很奇怪,輸入
${ExecutableName}.hex
- 目標晶片名稱 根據選擇的晶片填寫
- 其他選項 如果你使用了晶片包,請點開輸入以下程式碼,儲存並關閉:
pack:
- X:\XX\XXX\XXXXXXXXXX.pack
將第二行替換為晶片包的地址,地址中間的斜槓只需要寫一個!
- 麻煩在於
pyocd
的配置,我這裡出了很多問題
- 以管理員模式開啟
CMD
。不要直接Win/Command+R
快捷鍵開啟,開始選單搜尋然後右鍵以管理員模式執行 - 輸入以下程式碼安裝pyocd(這裡當時忘記截圖了):
pip3 install pyocd
或者
pip install -U pyocd
我自己是第二種成功的,各位可以多試試,千萬不要在安裝途中關閉CMD!
-
從 github 下載 usblib,下載
*.7z
檔案 -
解壓 usblib 後,將
MS32
目錄下的libusb.dll
複製到 python.exe 所在的目錄和C:\Windows\System32
目錄下(所選擇的libusb.dll
必須要和電腦上安裝的 python 是同一體系結構,例如:x86 版本python對應MS32
目錄下的libusb.dll
)
- 還是管理員執行的
CMD
,輸入pyocd list
,使用虛擬機器的朋友大機率會獲得這樣的結果
而正常的是這樣的
解決辦法:找到你的python.exe
,如圖設定:右鍵點開 屬性 - 更改模擬設定 - 選擇安全模擬
這時理論上來說再使用pyocd list
就不會報錯了。如果依然報錯請百度
5.編譯燒錄
-
可以在左邊專案處點選編譯燒錄,也可以在右上角點選,圖片上分別是 構建、清理、下載,左邊專案處會多一個 重新構建 的按鈕
-
這時已經全部配置好了,但有可能還是不能燒錄
-
問題1
這時候就要用到上文 4.2 中提到的構建器選項
將圖片中這項取消勾選即可(別忘記儲存!!!)
- 問題2
依然是構建器選項
選擇level-image-size
即可
- 問題3
這個問題我有一點遺忘了,有兩種原因好像
-
4.2 中 自定義連結指令碼 應該選
true
但是選成了false
-
選擇
false
的介面中有 RAM/FLASH佈局 ,這個選項內的設定不正確
這裡可以開啟keil的專案設定,參照keil中的資料進行填寫
-
問題4 有的時候下載會失敗(終端裡面啥都沒有,過了很久出現很多灰色文字),多下載幾次就好了
(不知道是不是作者更新過修復了,我寫這篇文章的時候想去截圖結果發現每次都一次就下載成功了,而且下載變快了)
-
還可能有其他問題我沒碰到,有的問題可能是keil檔案的設定沒設定好,可以去keil裡面設定好,比如上面那張圖片的
Debug
選項中有些設定是錯誤的之類的都有可能,其他的就只能百度了。 -
錯誤都解決就可以愉快的燒錄啦,vsc寫程式碼體驗比keil舒服了很多。燒錄成功介面:
6.Debug
這東西我一直沒整好,Windows筆記本使用者可以去開頭那個連線裡面找到debug部分對照著操作應該可以弄好。我需要Debug都是去Keil 裡面乾的,如果之後成功了再過來更新吧
7.結尾
應該都寫完啦,如果有漏的之後再補充吧,第一次寫這種文章,寫的不好請見諒!
20220411更新
用一種奇怪 的辦法解決了debug問題
- 依然是 EIDE Manual 網址,找到 入門-新建專案-從空專案開始(以stm32f1為例)
- 按照手冊操作新建一個工程就可以debug啦
放張我自己的檔案目錄在這裡,可以參考一下(mycode
是我用來放自己寫的檔案的地方)
注意事項
- 4.2中 自定義連線指令碼 中,檔案可以選擇
*.scf
檔案,如果用的是逐飛工程檔案,可以找一下是否有
libraries/sdk/mdk/linker/mm32f3277g_flash(注意這個檔案可能是沒有字尾的,也有可能有*.scf
字尾)
- 除了Manual中提到的
install cmsis header files
別忘了pack包還是要新增的,其他工程配置參考上文