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