作者按:隨著越來越多云途車規(guī)MCU芯片型號的量產(chǎn),越來越多的客戶開始使用云途的車規(guī)MCU應(yīng)用軟件開發(fā)工具鏈,其中基于CMake + ninja + GNU gcc toolchain的VSCode IDE尤為受到大家的歡迎,但是對于很多習(xí)慣了傳統(tǒng)IDE工程師來說,使用VSCode IDE難免會遇到問題,因此,我希望寫一系列相關(guān)的使用指南,通過自己實際使用中遇到的問題的解決方案為例進行介紹,希望能夠幫助大家快速上手。
如何使用Segger Ozone調(diào)試GCC/Keil/IAR編譯工程?
在電腦本地將云途車規(guī)MCU的應(yīng)用工程通過VSCode IDE(GCC/KEIL/IAR + CMake + Ninja)或者Keil IDE及IAR IDE進行編譯,生成二進制可執(zhí)行文件:
VSCode IDE(GCC + CMake + Ninja)應(yīng)用工程:<project_name>.elf
VSCode IDE(KEIL + CMake + Ninja)或者Keil IDE應(yīng)用工程:<project_name>.axf
VSCode IDE(/IAR + CMake + Ninja)或者IAR IDE應(yīng)用工程:<project_name>.out
YCT中配置生成VSCode IDE應(yīng)用工程方法如下:
①下載安裝SEGGER Ozone調(diào)試軟件
https://www.segger.com/products/development-tools/ozone-j-link-debugger/
選擇一個匹配自己電腦操作系統(tǒng)的穩(wěn)定的版本進行下載即可:
https://www.segger.com/downloads/jlink/#Ozone
下載到本地后,直接雙擊可執(zhí)行exe進行傻瓜式安裝即可,此處不贅述。
Tips:如果在Ozone安裝之前JLINK的驅(qū)動已經(jīng)安裝好,則需要使用JLINK的DLL updater更新一下JLINK驅(qū)動:
② 打開Ozone,選擇“Create New Project”打開新建工程向?qū)?/strong>:
選擇目標(biāo)MCU型號(Device)、內(nèi)核寄存器集(Register Set)和外設(shè)寄存器映射文件(Peripherals(Optional)), -> "Next":
選擇目標(biāo)器件時,通過在“Device”列輸入“YTM”可進行過濾篩選快速查找到云途車規(guī)MCU型號,但是其他是必須提前安裝好云途車規(guī)MCU的JLINK補?。?/p>
選擇工程目錄下“.vscode”的“chip.svd”文件(注意:僅在選擇VSCode作為IDE時YCT才會在“.vscode”目錄下生成該文件)作為調(diào)試時MCU外設(shè)寄存器映射文件:
選擇JLINK調(diào)試器連接方式為使用“SWD”接口,“4MHz”通信速率,“USB”接口 ->"Next":
選擇要調(diào)試工程的可選elf文件,IAR為后綴.out的文件 -> "Next":
保持默認(rèn)配置 -> "Finish"即可完成Ozone調(diào)試工程創(chuàng)建:
選擇右上角的“Download & Reset Program”進行程序下載連接:
Ozone調(diào)試概覽如下,更多細(xì)節(jié)請參考其用戶手冊或者幫助文檔:
如何在添加用戶自己的代碼到CMake編譯目錄?
Case 1:用戶自己添加的應(yīng)用代碼文件較少,直接添加到“app”目錄即可
這些情況,直接將添加的.c和.h文件添加到Y(jié)CT生成VSCode IDE應(yīng)用工程默認(rèn)生成的“app”文件夾目錄即可:
Case 2:用戶自己添加的應(yīng)用代碼文件比較多,需要添加多個文件夾,則需要修改CMakelist.txt
在YCT創(chuàng)建VSCode IDE應(yīng)用工程根目錄下有一個CMakeLists.txt,其中存放了CMake編譯的規(guī)則,找到保留關(guān)鍵詞“# USER CODE BEGIN add_executable”和“# USER CODE END add_executable”,將默認(rèn)添加app目錄的CMake腳本拷貝粘貼到其間,以防止重新生成工程時被覆蓋。然后修改添加編譯目錄,比如下圖中的應(yīng)用工程,添加了“General_CryptoAlgo”,“MIRACL”和“SMx”3個用戶代碼目錄及其子目錄到CMake的elf編譯目錄中:
在target_include_directories(${project_elf}
在file(GLOB dir_sources "
接下的的if語句判斷源文件“dir_sources ”是否為空,不為空,即存在源代碼需要編譯,則調(diào)用后續(xù)foreach語句遍歷所有源文件進行編譯。
如何編譯生成靜態(tài)庫?
以如下工程為例,將其中的MIRACL目錄下的所有C源代碼(將其添加到Y(jié)CT生成的SDK/MCAL VSCode IDE應(yīng)用工程中)編譯成一個靜態(tài)庫(比如libYTM32B1M_MIRACL.a)供其他應(yīng)用工程調(diào)用:
具體步驟如下:
在應(yīng)用工程根目錄下的CMakelist.txt中,使用set()函數(shù)創(chuàng)建一個CMake的編譯目標(biāo)miracl_lib,并使用add_library()函數(shù)添加為靜態(tài)庫:
set(miracl_lib YTM32B1M_MIRACL) add_library(${miracl_lib})
Tips:推薦將其放在“# USER CODE BEGIN include”和“# USER CODE END include”之間,以防止YCT重新生成SDK/MCAL驅(qū)動配置時被覆蓋:
將要鏈接到靜態(tài)庫中的C源文件和頭文件包含目錄添加到上面創(chuàng)建的編譯目標(biāo)miracl_lib,具體腳本如下:
#add "MIRACL/src as include path for static library target_include_directories(${miracl_lib} PRIVATE MIRACL/src MIRACL/inc) #add all source files in SMx folder file(GLOB dir_sources "MIRACL/src/*.c") if(dir_sources) foreach(src ${dir_sources}) target_sources(${miracl_lib} PRIVATE ${src}) endforeach() endif()
Tips:推薦將其放在“USER CODE BEGIN add_executable”和“# USER CODE END add_executable”之間,以防止YCT重新生成SDK/MCAL驅(qū)動配置時被覆蓋:
保存以上修改后的CMakelist.txt,然后打開VSCode的CMake Tools擴展插件,就能夠發(fā)現(xiàn)上面創(chuàng)建的靜態(tài)庫編譯目標(biāo)了,最終生成的靜態(tài)庫為libYTM32B1M_MIRACL.a,自動添加了前綴“l(fā)ib”和后綴“.a”:
Tips:如果沒有安裝CMake Tools擴展插件,大家可以通過VSCode的Extension(Ctrl + Shift + X), 搜索“CMake Tools”在線安裝:
在CMake Tool中選中靜態(tài)庫編譯目標(biāo),點擊右側(cè)的編譯(Build)圖標(biāo),即可開始靜態(tài)庫的編譯,
VSCode IDE的“OUTPUT”窗口輸出靜態(tài)庫編譯鏈接過程log信息如下:
最終生成的靜態(tài)庫位于工程目錄下的“build”文件夾下:
Tips:若靜態(tài)庫源代碼有修改,需要重新編譯,則需要收到刪除“build”目錄,否則ninja將輸出“ no work to do”:
如何使用靜態(tài)庫?
接下來,介紹如何在YCT生成的SDK/MCAL VSCode IDE應(yīng)用工程中調(diào)用以上生成的靜態(tài)庫,具體步驟如下:
使用YCT配置創(chuàng)建一個與上面靜態(tài)庫編譯目標(biāo)MCU相同內(nèi)核(比如YTM32B1Mx系列使用的CM33內(nèi)核,則編譯的靜態(tài)庫可以通用)的云途車規(guī)MCU SDK/MCAL VSCode IDE應(yīng)用工程;
將需要使用的靜態(tài)庫文件和相應(yīng)的頭文件添加到VSCode IDE應(yīng)用工程:
在工程CMakelist.txt文件中,使用target_include_directories() 函數(shù)將靜態(tài)庫文件使用的頭文件路徑添加到應(yīng)用工程elf編譯目標(biāo)包含路徑:
target_include_directories(${project_elf} PRIVATE MIRACL/inc MIRACL)
Tips:推薦將其放在“USER CODE BEGIN add_executable”和“# USER CODE END add_executable”之間,以防止YCT重新生成SDK/MCAL驅(qū)動配置時被覆蓋:
在工程CMakelist.txt文件中,使用target_link_libraries() 函數(shù)將用戶靜態(tài)庫添加到應(yīng)用工程elf鏈接庫:
target_link_libraries(${project_elf} libYTM32B1M_MIRACL.a -L${CMAKE_SOURCE_DIR}/MIRACL)
Tips:以上函數(shù)中,需要使用完整的靜態(tài)庫文件名“l(fā)ibYTM32B1M_MIRACL.a”,并通過“-L${CMAKE_SOURCE_DIR}/MIRACL”指定正確的搜索路徑,否則鏈接生成工程elf時會報找不到添加的靜態(tài)庫文件的錯誤;
Tips:推薦將其放在“USER CODE BEGIN target_link_libraries”和“# USER CODE END target_link_libraries”之間,以防止YCT重新生成SDK/MCAL驅(qū)動配置時被覆蓋:
在應(yīng)用工程中,包含所需靜態(tài)庫接口函數(shù)的頭文件,然后調(diào)用庫函數(shù)即可。
以上就是今天先跟大家分享的內(nèi)容,希望對大家有啥幫助和啟發(fā)。
若大家在實際工作中遇到了云途車規(guī)MCU VSCode IDE工程使用和配置相關(guān)的問題,也歡迎留言指出,我將在這一系列文章的下篇文章中為大家解答。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
455文章
50816瀏覽量
423674 -
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351213 -
IDE
+關(guān)注
關(guān)注
0文章
338瀏覽量
46758 -
vscode
+關(guān)注
關(guān)注
1文章
155瀏覽量
7714 -
云途
+關(guān)注
關(guān)注
1文章
4瀏覽量
1945
原文標(biāo)題:云途車規(guī)MCU VSCode IDE工程使用和配置指南(一)
文章出處:【微信號:汽車電子expert成長之路,微信公眾號:汽車電子expert成長之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論