VSCode搭建Keil開發(fā)仿真環(huán)境
一、前言
由于Keil軟件各方面都比較難用、易用性差、界面丑、功能落后,很多時候我們都會使用其他的編輯器進行代碼的編輯開發(fā),只有當需要燒錄程序或者仿真調(diào)試的時候才使用Keil軟件。
其實我們完全可以選擇使用VSCode,用這一款軟件同時進行編輯開發(fā)和燒錄、仿真調(diào)試工作,只需要提前通過Keil創(chuàng)建好工程即可,后續(xù)的所有工作都可以通過VSCode完成。
二、需要的插件和第三方工具
VSCode插件可以通過VSCode軟件安裝即可,在插件中搜索安裝。
2.1 VSCode插件:C/C++;
C/C++插件用來實現(xiàn)代碼的智能識別和補全、代碼瀏覽等基本功能。
2.2 VSCode插件:Cortex-Debug;
Cortex-Debug插件用來實現(xiàn)代碼仿真和調(diào)試。
?
?
2.3 VSCode插件:Embedded IDE;
Embedded IDE簡稱EIDE,用來導(dǎo)入Keil工程,支持Cortex-M內(nèi)核芯片的編譯和燒錄工作。
?
2.4 GDB工具:
GDB工具用來配合Cortex-Debug插件實現(xiàn)仿真調(diào)試功能。
需要單獨下載并安裝,安裝的時候可以選擇把執(zhí)行文件路徑加入系統(tǒng)的環(huán)境變量中,避免找不到"gcc.exe"文件路徑等問題。
下載url:https://developer.arm.com/downloads/-/gnu-rm
下載win32.exe用于windows系統(tǒng)的版本安裝即可。
2.5 OPENOCD
OPENOCD用來配合Cortex-Debug插件實現(xiàn)仿真調(diào)試功能,下載之后放到任意的路徑均可。
下載路徑: https://gnutoolchains.com/arm-eabi/openocd/
三、編譯和燒錄功能實現(xiàn)
編譯和燒錄通過Embedded IDE插件實現(xiàn),Embedded IDE配置好了就可以進行Keil工程的編譯和燒錄了。
更詳細的介紹可以參見此插件的具體文檔:https://em-ide.com/#/README
3.1 路徑和ELF功能設(shè)置
3.1.1 路徑設(shè)置:
其實就是設(shè)置Keil軟件的MDK TOOLS.INI文件路徑,這個文件就在Keil軟件的安裝目錄下面可以找到。如下:
?
3.1.2 ELF文件設(shè)定
選擇將.axf文件轉(zhuǎn)換為.elf文件,這個是為了下一步的仿真調(diào)試功能做準備。
?
?
?
3.2 導(dǎo)入項目
這里也就是導(dǎo)入現(xiàn)有的Keil工程。在VSCode的側(cè)邊欄,點擊EIDE插件按鈕,在左下角選擇導(dǎo)入。
?
?
在彈出的類型選擇中選擇MDK,然后選擇對應(yīng)的Keil工程文件即可,后綴是.uvprojx。
?
打開工程以后可以看到工程的文件和很多項目相關(guān)的配置項,這些配置項其實和Keil軟件打開工程的配置內(nèi)容類似,下面逐個來介紹。
?
3.3 芯片支持包
?
點擊右邊的加號可以添加,可以從本地目錄選擇文件添加(From Disk),所謂的支持包,就是Keil5安裝的pack包,選擇此工程使用的芯片對應(yīng)的包即可,例如:
?
3.4 構(gòu)建配置
構(gòu)建配置就是和Keil工程中的編譯器設(shè)置、RAM設(shè)置等完全對應(yīng)的,介紹如下:
3.4.1 編譯器類型選擇
點擊構(gòu)建配置右側(cè)的符號可以進行切換。
?
?
?
?
在keil中的位置:
?
?
3.4.2 CPU類型和浮點數(shù)設(shè)置
不需要手動選擇,前面選擇了芯片支持包,芯片就已經(jīng)確定了,這里會自動識別。
3.4.3 RAM/FLASH布局
就是Keil軟件中的IRAM和IROM選項,從Keil導(dǎo)入工程時就自動識別了,一般不會出錯。
?
?
3.4.4 構(gòu)建器選項
類似Keil中設(shè)置參數(shù)的C/C++選項卡的內(nèi)容,以及User選項卡。
3.4.4.1 用戶任務(wù):就是編譯完成之后Keil中執(zhí)行的User Command。
?
Keil中設(shè)置位置
?
對應(yīng)VSCode
3.4.4.2 其他項目
按照Keil工程中的設(shè)置即可。
?
C/C++編譯器
?
?
MicroLIB
?
還可以修改輸出的目錄名稱,這里修改為了obj。這個路徑是和.uvprojx工程文件同級目錄的。
?
輸出目錄名修改
?
3.4.5 燒錄配置
根據(jù)實際使用的燒錄器設(shè)定即可。
?
接口類型和下載速度都可以設(shè)定修改。
以上的參數(shù)設(shè)定完成之后就可以進行編譯和燒錄了。如下:
?
編譯按鈕
?
?
紅框中的幾個按鈕分別是編譯、清除、燒錄、從頭重新編譯。編譯完成之后的結(jié)果,可以看到和Keil編譯結(jié)果類似,可視性更好一些:
?
?
四、仿真調(diào)試
仿真調(diào)試通過Cortex-Debug插件來實現(xiàn)。Cortex-debug 使用 gdb 來完成調(diào)試;下圖介紹了 gdb 調(diào)試的組成和它們之間的關(guān)系,在開始之前有必要理解清楚它們的關(guān)系。
?
這張圖片來源于:https://blog.csdn.net/qq_40833810/article/details/106713462
?
4.1 配置GNU編譯器路徑
?
?
GNU編譯器下載url:https://developer.arm.com/downloads/-/gnu-rm
先下載安裝編譯器,再設(shè)定編譯器的路徑即可。
4.2 設(shè)置openocd路徑
這里需要安裝openocd,下載路徑:https://gnutoolchains.com/arm-eabi/openocd/。
然后在插件設(shè)置中填入openocd的路徑。
4.3 設(shè)定項目配置
項目配置文件修改:launcth.json。這里的executable就是上一步EIDE擴展中編譯得到的ELF文件的路徑(相對路徑即可)。
?
?
4.4 配置完成
以上配置完成之后,可以進行調(diào)試,打斷點、監(jiān)視數(shù)據(jù)等。
?
?
以下就是正常的調(diào)試界面。
?
調(diào)試界面