20220405【黑歷史】M1 Mac使用PD虛擬機器配合VSC代替Keil燒錄MM32微控制器

ErBW_s發表於2024-04-22

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.開始

  1. 安裝完成後點選這裡進入外掛介面

在這裡插入圖片描述

  1. 點選 匯入專案 匯入KEIL 專案檔案,MDK 專案為 *.uvprojx, KEIL C51 專案為 *.uvproj

隨後右下角會彈出 eide專案是否和keil檔案放在同一資料夾內切換工作區 的彈窗,自行選擇即可

  1. 點選 設定工具鏈路徑 可以配置mdk路徑,打勾的是配置好的,叉是沒配置好的

    在這裡插入圖片描述

(好像本文需要的都自動配置好了?我忘了我有沒有手動配置了)

4.配置

匯入完成後介面如下

在這裡插入圖片描述

配置主要用到 晶片支援包構建配置燒錄配置

4.1.晶片支援包

在這裡插入圖片描述

  1. 點選加號新增晶片支援包,也就是Keil的*.pack檔案,如果不需要新增包忽略即可

在這裡插入圖片描述

  1. 選擇晶片

4.2.構建配置

在這裡插入圖片描述

  1. 構建配置選擇AC6
  2. CPU型別按照晶片選擇即可,這裡是Cortex-M3
  3. 自定義連結指令碼如果匯入的時候就是true而且指令碼路徑存在的話就不要管他,不然就選擇false(後面的更新有詳細說明)
  4. 構建器選項主要用到了兩個,這個後面再說

4.3.燒錄配置

最麻煩的來了
在這裡插入圖片描述
在這裡插入圖片描述

  • vs code需要做的只有四件事:
  1. 按照下載器選擇燒錄工具,我這裡用的逐飛Dap Link,因此選擇pyocd
  2. **程式檔案 **建議點開重新輸入,理論上不輸入也可以,但我會報錯,很奇怪,輸入${ExecutableName}.hex
  3. 目標晶片名稱 根據選擇的晶片填寫
  4. 其他選項 如果你使用了晶片包,請點開輸入以下程式碼,儲存並關閉:

pack:

- X:\XX\XXX\XXXXXXXXXX.pack

將第二行替換為晶片包的地址,地址中間的斜槓只需要寫一個!

  • 麻煩在於pyocd的配置,我這裡出了很多問題
  1. 以管理員模式開啟CMD。不要直接Win/Command+R快捷鍵開啟,開始選單搜尋然後右鍵以管理員模式執行
  2. 輸入以下程式碼安裝pyocd(這裡當時忘記截圖了):

pip3 install pyocd

​ 或者

pip install -U pyocd

我自己是第二種成功的,各位可以多試試,千萬不要在安裝途中關閉CMD!

  1. 從 github 下載 usblib,下載*.7z檔案

  2. 解壓 usblib 後,將 MS32目錄下的libusb.dll 複製到 python.exe 所在的目錄和 C:\Windows\System32目錄下(所選擇的 libusb.dll 必須要和電腦上安裝的 python 是同一體系結構,例如:x86 版本python對應 MS32目錄下的libusb.dll

在這裡插入圖片描述

  1. 還是管理員執行的CMD,輸入pyocd list,使用虛擬機器的朋友大機率會獲得這樣的結果

在這裡插入圖片描述

而正常的是這樣的

在這裡插入圖片描述

解決辦法:找到你的python.exe,如圖設定:右鍵點開 屬性 - 更改模擬設定 - 選擇安全模擬

在這裡插入圖片描述

這時理論上來說再使用pyocd list就不會報錯了。如果依然報錯請百度

5.編譯燒錄

在這裡插入圖片描述

  1. 可以在左邊專案處點選編譯燒錄,也可以在右上角點選,圖片上分別是 構建、清理、下載,左邊專案處會多一個 重新構建 的按鈕

  2. 這時已經全部配置好了,但有可能還是不能燒錄

  • 問題1

    在這裡插入圖片描述

這時候就要用到上文 4.2 中提到的構建器選項

在這裡插入圖片描述

將圖片中這項取消勾選即可(別忘記儲存!!!)

  • 問題2

在這裡插入圖片描述

依然是構建器選項

在這裡插入圖片描述

選擇level-image-size即可

  • 問題3

在這裡插入圖片描述

這個問題我有一點遺忘了,有兩種原因好像

  1. 4.2自定義連結指令碼 應該選true但是選成了false

  2. 選擇false的介面中有 RAM/FLASH佈局 ,這個選項內的設定不正確

    在這裡插入圖片描述在這裡插入圖片描述
    這裡可以開啟keil的專案設定,參照keil中的資料進行填寫

    在這裡插入圖片描述

  • 問題4 有的時候下載會失敗(終端裡面啥都沒有,過了很久出現很多灰色文字),多下載幾次就好了

    (不知道是不是作者更新過修復了,我寫這篇文章的時候想去截圖結果發現每次都一次就下載成功了,而且下載變快了)

  • 還可能有其他問題我沒碰到,有的問題可能是keil檔案的設定沒設定好,可以去keil裡面設定好,比如上面那張圖片的Debug選項中有些設定是錯誤的之類的都有可能,其他的就只能百度了。

  • 錯誤都解決就可以愉快的燒錄啦,vsc寫程式碼體驗比keil舒服了很多。燒錄成功介面:

在這裡插入圖片描述

6.Debug

這東西我一直沒整好,Windows筆記本使用者可以去開頭那個連線裡面找到debug部分對照著操作應該可以弄好。我需要Debug都是去Keil 裡面乾的,如果之後成功了再過來更新吧

在這裡插入圖片描述

7.結尾

應該都寫完啦,如果有漏的之後再補充吧,第一次寫這種文章,寫的不好請見諒!


20220411更新

用一種奇怪 的辦法解決了debug問題

  1. 依然是 EIDE Manual 網址,找到 入門-新建專案-從空專案開始(以stm32f1為例)
  2. 按照手冊操作新建一個工程就可以debug啦

放張我自己的檔案目錄在這裡,可以參考一下(mycode是我用來放自己寫的檔案的地方)

file

注意事項

  • 4.2中 自定義連線指令碼 中,檔案可以選擇*.scf檔案,如果用的是逐飛工程檔案,可以找一下是否有

libraries/sdk/mdk/linker/mm32f3277g_flash(注意這個檔案可能是沒有字尾的,也有可能有*.scf字尾)

  • 除了Manual中提到的install cmsis header files別忘了pack包還是要新增的,其他工程配置參考上文

相關文章