M1 Mac使用PD虛擬機(jī)配合VSC代替Keil燒錄MM32單片機(jī)

0.前言
因?yàn)橹悄苘嚫傎惗佑|到了MM32F32G9P這款單片機(jī)。而由于我很喜歡macOS系統(tǒng),加上我同時(shí)喜歡剪視頻,因此買了一個(gè)arm芯片的MacBook Pro,但這就限制了我沒辦法用雙系統(tǒng)運(yùn)行Windows系統(tǒng),只能轉(zhuǎn)而使用虛擬機(jī)。使用Mac燒錄stm32的教程很多,但是很少有mm32的教程。理論上這塊芯片不用虛擬機(jī)也能燒錄,但奈何本人實(shí)力有限,只能做到用vs code代替mdk(
主要keil又丑又難用)第一次寫這種教程,可能會漏很多東西,請見諒
B站觀感可能比較差,可以移步https://zhuanlan.zhihu.com/p/493363407
我會在評論區(qū)放出文章中涉及的網(wǎng)址,就不開放專欄允許復(fù)制了
1.準(zhǔn)備工作
準(zhǔn)備好pd虛擬機(jī)并安裝Windows系統(tǒng),Windows10、11都可以
虛擬機(jī)上安裝mdk,vsc,python(最好選x86的,不要選arm芯片),以及arm芯片的下載器驅(qū)動(dòng)(比如jlink的arm驅(qū)動(dòng),可能需要的arm CH341驅(qū)動(dòng))
2.安裝
先在這里貼一個(gè)vsc插件EIDE的,這個(gè)作者原來的插件Keil Assistant已經(jīng)不再更新了
安裝在這里就不再贅述,就是下載插件即可,詳情請看上面的網(wǎng)址
如果你是Windows筆記本想要使用,基本上按照上面這個(gè)網(wǎng)址的教程來配置就不會有任何問題
3.開始
1.????安裝完成后點(diǎn)擊這里進(jìn)入插件界面

2.????點(diǎn)擊 導(dǎo)入項(xiàng)目 導(dǎo)入KEIL 項(xiàng)目文件,MDK 項(xiàng)目為 *.uvprojx
, KEIL C51 項(xiàng)目為 *.uvproj
隨后右下角會彈出 eide項(xiàng)目是否和keil文件放在同一文件夾內(nèi) 和 切換工作區(qū) 的彈窗,自行選擇即可
3.????點(diǎn)擊 設(shè)置工具鏈路徑 可以配置mdk路徑,打勾的是配置好的,叉是沒配置好的

(好像本文需要的都自動(dòng)配置好了?我忘了我有沒有手動(dòng)配置了)
4.配置
因?yàn)槭稚现挥徐`動(dòng)mm32的芯片,下載器用的是逐飛
Dap Link
,所以本文基于這兩者配置,其他芯片和下載器請移步至EIDE手冊(上面的網(wǎng)址)另外提一嘴,因?yàn)楸容^菜,我用的是逐飛MM32開源庫,大佬別罵
導(dǎo)入完成后界面如下

配置主要用到 芯片支持包、構(gòu)建配置、燒錄配置
4.1.芯片支持包

1.????點(diǎn)擊加號添加芯片支持包,也就是Keil的*.pack
文件,如果不需要添加包忽略即可

2.????選擇芯片
4.2.構(gòu)建配置

構(gòu)建配置選擇AC6
CPU類型按照芯片選擇即可,這里是Cortex-M3
自定義鏈接腳本如果導(dǎo)入的時(shí)候就是
true
而且腳本路徑存在的話就不要管他,不然就選擇false(結(jié)尾更新有詳細(xì)說明)
構(gòu)建器選項(xiàng)主要用到了兩個(gè),這個(gè)后面再說
4.3.燒錄配置
最麻煩的來了


在
vs code
需要做的只有四件事:
按照下載器選擇燒錄工具,我這里用的逐飛
Dap Link
,因此選擇pyocd
。程序文件 建議點(diǎn)開重新輸入,理論上不輸入也可以,但我會報(bào)錯(cuò),很奇怪,輸入
${ExecutableName}.hex
目標(biāo)芯片名稱 根據(jù)選擇的芯片填寫
其他選項(xiàng) 如果你使用了芯片包,請點(diǎn)開輸入以下代碼,保存并關(guān)閉:
pack:
- X:\XX\XXX\XXXXXXXXXX.pack
將第二行替換為芯片包的地址,地址中間的斜杠只需要寫一個(gè)!
麻煩在于
pyocd
的配置,我這里出了很多問題
以管理員模式打開
CMD
。不要直接Win/Command+R
快捷鍵打開,開始菜單搜索然后右鍵以管理員模式運(yùn)行輸入以下代碼安裝pyocd(這里當(dāng)時(shí)忘記截圖了):
pip3 install pyocd
或者
pip install -U pyocd
我自己是第二種成功的,當(dāng)時(shí)安裝pyocd各種報(bào)錯(cuò),有/無科學(xué)上網(wǎng),不同的安裝語句都試過,各位可以多試試,千萬不要在安裝途中關(guān)閉CMD!
從 github 下載 下載
*.7z
文件解壓 usblib 后,將
MS32
目錄下的libusb.dll
復(fù)制到 python.exe 所在的目錄和C:\Windows\System32
目錄下(所選擇的libusb.dll
必須要和電腦上安裝的 python 是同一體系結(jié)構(gòu),例如:x86 版本python對應(yīng)MS32
目錄下的libusb.dll
)

3.????還是管理員運(yùn)行的CMD
,輸入pyocd list
,使用虛擬機(jī)的朋友大概率會獲得這樣的結(jié)果

而正常的是這樣的

解決辦法:找到你的python.exe
,如圖設(shè)置:右鍵點(diǎn)開 屬性 - 更改仿真設(shè)置 - 選擇安全仿真

這時(shí)理論上來說再使用pyocd list
就不會報(bào)錯(cuò)了。如果依然報(bào)錯(cuò)請百度
5.編譯燒錄

1.????可以在左邊項(xiàng)目處點(diǎn)擊編譯燒錄,也可以在右上角點(diǎn)擊,圖片上分別是 構(gòu)建、清理、下載,左邊項(xiàng)目處會多一個(gè) 重新構(gòu)建 的按鈕
2.????這時(shí)已經(jīng)全部配置好了,但有可能還是不能燒錄
問題1

這時(shí)候就要用到上文 4.2 中提到的構(gòu)建器選項(xiàng)

將圖片中這項(xiàng)取消勾選即可(別忘記保存!?。。?/span>
問題2

依然是構(gòu)建器選項(xiàng)

選擇level-image-size
即可
問題3

這個(gè)問題我有一點(diǎn)遺忘了,有兩種原因好像
4.2 中 自定義鏈接腳本 應(yīng)該選
true
但是選成了false
選擇
false
的界面中有 RAM/FLASH布局 ,這個(gè)選項(xiàng)內(nèi)的設(shè)置不正確


這里可以打開keil的項(xiàng)目設(shè)置,參照keil中的數(shù)據(jù)進(jìn)行填寫

有的時(shí)候下載會失敗(終端里面啥都沒有,過了很久出現(xiàn)很多灰色文字),多下載幾次就好了
(不知道是不是作者更新過修復(fù)了,我寫這篇文章的時(shí)候想去截圖結(jié)果發(fā)現(xiàn)每次都一次就下載成功了,而且下載變快了 ?
說到下載變快了我想提一下,英飛凌的tc264性能是好,但是Aurix Development Studio編譯和下載那叫一個(gè)慢,太差勁了,不知道是不是eclipse的通病)
還可能有其他問題我沒碰到,有的問題可能是keil文件的設(shè)置沒設(shè)置好,可以去keil里面設(shè)置好,比如上面那張圖片的
Debug
選項(xiàng)中有些設(shè)置是錯(cuò)誤的之類的都有可能,其他的就只能百度了。錯(cuò)誤都解決就可以愉快的燒錄啦,vsc寫代碼體驗(yàn)比keil舒服了很多。燒錄成功界面:
6.Debug
這東西我一直沒整好,我需要Debug都是去Keil 里面干的,如果之后成功了再過來更新吧

(xswl逐飛的精準(zhǔn)預(yù)判)
7.結(jié)尾

20220411更新
用一種奇怪的辦法解決了debug問題
依然是 ,找到 入門-新建項(xiàng)目-從空項(xiàng)目開始(以stm32f1為例)
按照手冊操作新建一個(gè)工程就可以debug啦
放張我自己的文件目錄在這里,可以參考一下

注意事項(xiàng)
4.2中 自定義連接腳本 中,文件可以選擇
*.scf
文件,如果用的是逐飛工程文件,可以找一下是否有:
libraries/sdk/mdk/linker/mm32f3277g_flash(注意這個(gè)文件可能是沒有后綴的,也有可能有*.scf
后綴)
除了Manual中提到的
install cmsis header files
別忘了pack包還是要添加的,其他工程配置參考上文