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

高可靠、高性能車(chē)規(guī)MCU, 滿足車(chē)身控制多元應(yīng)用
帶VSCode EIDE的AT32 MCU
解析車(chē)規(guī)級(jí)MCU的技術(shù)難點(diǎn)
云途完成數(shù)億元A+輪融資,打造全系列高端車(chē)規(guī)芯格局

國(guó)民技術(shù)車(chē)規(guī)MCU型號(hào)應(yīng)用與參數(shù)

貞光科技:什么是車(chē)規(guī)級(jí)MCU?

?國(guó)民技術(shù)車(chē)規(guī)MCU型號(hào)應(yīng)用與參數(shù)

2022車(chē)規(guī)MCU的發(fā)展趨勢(shì)及國(guó)產(chǎn)替代分析

國(guó)產(chǎn)車(chē)規(guī)MCU發(fā)展趨勢(shì)

云途車(chē)規(guī)MCU軟件開(kāi)發(fā)環(huán)境搭建及使用詳解

AT32 MCU Develop with VSCode

戰(zhàn)略合作 | IAR全面支持云途車(chē)規(guī)級(jí)MCU

評(píng)論