0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

云途车规MCU VSCode IDE工程使用教程

jf_ocihYtwl 来源:汽车电子expert成长之路 2023-09-24 10:51 次阅读

作者按:随着越来越多云途车规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应用工程方法如下:

68b6c7c4-5933-11ee-939d-92fbcf53809c.png

68cdbc72-5933-11ee-939d-92fbcf53809c.png

68e7b514-5933-11ee-939d-92fbcf53809c.png

6904e33c-5933-11ee-939d-92fbcf53809c.png

下载安装SEGGER Ozone调试软件

https://www.segger.com/products/development-tools/ozone-j-link-debugger/

选择一个匹配自己电脑操作系统的稳定的版本进行下载即可:

https://www.segger.com/downloads/jlink/#Ozone

6925520c-5933-11ee-939d-92fbcf53809c.png

下载到本地后,直接双击可执行exe进行傻瓜式安装即可,此处不赘述。

Tips:如果在Ozone安装之前JLINK的驱动已经安装好,则需要使用JLINK的DLL updater更新一下JLINK驱动:

693f2d94-5933-11ee-939d-92fbcf53809c.png

69618dbc-5933-11ee-939d-92fbcf53809c.png

② 打开Ozone,选择“Create New Project”打开新建工程向导

697a6486-5933-11ee-939d-92fbcf53809c.png

选择目标MCU型号(Device)、内核寄存器(Register Set)和外设寄存器映射文件(Peripherals(Optional)), -> "Next":

69919bd8-5933-11ee-939d-92fbcf53809c.png

选择目标器件时,通过在“Device”列输入“YTM”可进行过滤筛选快速查找到云途车规MCU型号,但是其他是必须提前安装好云途车规MCU的JLINK补丁:

69a521bc-5933-11ee-939d-92fbcf53809c.png

选择工程目录下“.vscode”的“chip.svd”文件(注意:仅在选择VSCode作为IDE时YCT才会在“.vscode”目录下生成该文件)作为调试时MCU外设寄存器映射文件:

69b6212e-5933-11ee-939d-92fbcf53809c.png

选择JLINK调试器连接方式为使用“SWD接口,“4MHz通信速率,“USB”接口 ->"Next":

69cb62d2-5933-11ee-939d-92fbcf53809c.png

选择要调试工程的可选elf文件,IAR为后缀.out的文件 -> "Next":

69e8cad4-5933-11ee-939d-92fbcf53809c.png

保持默认配置 -> "Finish"即可完成Ozone调试工程创建:

6a0a3066-5933-11ee-939d-92fbcf53809c.png

选择右上角的“Download & Reset Program”进行程序下载连接:

6a1c3d38-5933-11ee-939d-92fbcf53809c.png

Ozone调试概览如下,更多细节请参考其用户手册或者帮助文档:

6a2ed902-5933-11ee-939d-92fbcf53809c.png

如何在添加用户自己的代码到CMake编译目录?

Case 1:用户自己添加的应用代码文件较少,直接添加到“app”目录即可

这些情况,直接将添加的.c和.h文件添加到YCT生成VSCode IDE应用工程默认生成的“app”文件夹目录即可:

6a4cfbd0-5933-11ee-939d-92fbcf53809c.png

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编译目录中:

6a6137d0-5933-11ee-939d-92fbcf53809c.png

在target_include_directories(${project_elf} )行添加用户目录,可添加多个,以空格隔开即可;

在file(GLOB dir_sources "/*.c" "/*.c")行添加想要编译源代码文件,其中*.c为任意C源代码,*.cpp为任意C++源代码, *.S/*.s为任意汇编源代码(注意CMake区分文件名后缀的大小写,必须与实际源代码文件名匹配)

接下的的if语句判断源文件“dir_sources ”是否为空,不为空,即存在源代码需要编译,则调用后续foreach语句遍历所有源文件进行编译。

如何编译生成静态库?

以如下工程为例,将其中的MIRACL目录下的所有C源代码(将其添加到YCT生成的SDK/MCAL VSCode IDE应用工程中)编译成一个静态库(比如libYTM32B1M_MIRACL.a)供其他应用工程调用:

6a7ce49e-5933-11ee-939d-92fbcf53809c.png

具体步骤如下:

在应用工程根目录下的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驱动配置时被覆盖:

6a9bb4c8-5933-11ee-939d-92fbcf53809c.png

将要链接到静态库中的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驱动配置时被覆盖:

6aad8572-5933-11ee-939d-92fbcf53809c.png

保存以上修改后的CMakelist.txt,然后打开VSCode的CMake Tools扩展插件,就能够发现上面创建的静态库编译目标了,最终生成的静态库为libYTM32B1M_MIRACL.a,自动添加了前缀“lib”和后缀“.a”:

6acab5de-5933-11ee-939d-92fbcf53809c.png

Tips:如果没有安装CMake Tools扩展插件,大家可以通过VSCode的Extension(Ctrl + Shift + X), 搜索“CMake Tools”在线安装:

6afcc8e4-5933-11ee-939d-92fbcf53809c.png

在CMake Tool中选中静态库编译目标,点击右侧的编译(Build)图标,即可开始静态库的编译,

6b2a02aa-5933-11ee-939d-92fbcf53809c.png

VSCode IDE的“OUTPUT”窗口输出静态库编译链接过程log信息如下:

6b3a949e-5933-11ee-939d-92fbcf53809c.png

最终生成的静态库位于工程目录下的“build”文件夹下:

6b59bdc4-5933-11ee-939d-92fbcf53809c.png

Tips:若静态库源代码有修改,需要重新编译,则需要收到删除“build”目录,否则ninja将输出“ no work to do”:

6b6d326e-5933-11ee-939d-92fbcf53809c.png

如何使用静态库?

接下来,介绍如何在YCT生成的SDK/MCAL VSCode IDE应用工程中调用以上生成的静态库,具体步骤如下:

使用YCT配置创建一个与上面静态库编译目标MCU相同内核(比如YTM32B1Mx系列使用的CM33内核,则编译的静态库可以通用)的云途车规MCU SDK/MCAL VSCode IDE应用工程;

将需要使用的静态库文件和相应的头文件添加到VSCode IDE应用工程:

6b88a6b6-5933-11ee-939d-92fbcf53809c.png

在工程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驱动配置时被覆盖:

6b9bc548-5933-11ee-939d-92fbcf53809c.png

在工程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驱动配置时被覆盖:

6bb6f9f8-5933-11ee-939d-92fbcf53809c.png

在应用工程中,包含所需静态库接口函数的头文件,然后调用库函数即可。

以上就是今天先跟大家分享的内容,希望对大家有啥帮助和启发。

若大家在实际工作中遇到了云途车规MCU VSCode IDE工程使用和配置相关的问题,也欢迎留言指出,我将在这一系列文章的下篇文章中为大家解答。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47804

    浏览量

    409173
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343657
  • IDE
    IDE
    +关注

    关注

    0

    文章

    326

    浏览量

    46338
  • vscode
    +关注

    关注

    1

    文章

    146

    浏览量

    7373
  • 云途
    +关注

    关注

    0

    文章

    4

    浏览量

    1914

原文标题:云途车规MCU VSCode IDE工程使用和配置指南(一)

文章出处:【微信号:汽车电子expert成长之路,微信公众号:汽车电子expert成长之路】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AGM MCU IDE安装使用方法

    AGM MCU使用自有的IDE编程调试环境,使用起来按步骤安装使用即可。 1、下载、安装 VSCODE a.下载 地址: Download Visual Studio Code -Mac
    发表于 12-29 12:05

    级的器件选型

    `各位今天聊聊级的芯片选型。如果需要的芯片没有车级别的,但又工业级别的。从稳定性,可靠性方面考虑,应该要层元器件的那些特性为主要的考虑因素呢,是温度?`
    发表于 10-15 14:22

    什么是电容

    `电容会分成很多种,电解电容、钽电容等等,那什么是电容?`
    发表于 09-30 14:46

    什么是级芯片

    `  谁来阐述一下什么是级芯片?`
    发表于 10-18 10:55

    电容标准知多少?

    `汽车电子由于其涉及人身安全的特殊性,对元器件等质素都提出了更高的要求,汽车中使用的包含电容在内的元器件与手机、家电等一般消费电子有所不同,也就诞生了电容,顾名思义,为符合汽车生产规格的电容
    发表于 01-06 13:44

    MCU缺货持续2年,上海航芯助力国产市场

    MCU是传统燃油车的重要芯片之一,在电动领域,MCU也有着广泛的应用,且随着汽车电子化的持续发展,MCU的市场规模还将随之持续扩大,据
    发表于 02-03 12:00

    量产发布!国民技术首款MCU N32A455上市

    2023年2月20日,国民技术在深圳正式推出兼具通用性、硬件安全性和级高可靠性等优势特性的N32A455系列车MCU并宣布量产。这是继N32S032
    发表于 02-20 17:44

    笙泉MCU喜获AEC-Q100认证,正式在车赛道上奔驰

    笙泉MCU喜获AEC-Q100认证,正式在车赛道上奔驰 MCU需求强劲受益于汽车电动化、智慧化、网联化程度加深,汽车电子在全球MCU
    发表于 06-26 13:07

    新唐送28pin MCU开发板

    新唐送28pin MCU开发板 https://bbs.21ic.com/icview-3321412-1-1.html https://www.nuvoton.com/board/blingbling/index.htm
    发表于 08-18 09:41

    高可靠、高性能MCU, 满足车身控制多元应用

    /汽车&新兴产业深度报告(2022-7-12);电子工程专辑(2023-6-19) 从上表可看出车用MCU对工作温度要求更宽的范围,笙泉MCU
    发表于 09-15 12:04

    VSCode EIDE的AT32 MCU

    AT32 MCU With VSCode EIDE描述了VSCode开发环境中,使用Embedded IDE管理AT32项目。
    发表于 10-26 07:38

    武汉芯源半导体首款MCU,CW32A030C8T7通过AEC-Q100测试考核

    近日,武汉芯源半导体正式发布首款基于Cortex®-M0+内核的CW32A030C8T7MCU,这是武汉芯源半导体首款通过AEC-Q100 (Grade 2)
    发表于 11-30 15:47

    AT32 MCU Develop with VSCode

    电子发烧友网站提供《AT32 MCU Develop with VSCode.pdf》资料免费下载
    发表于 09-19 15:22 0次下载
    AT32 <b class='flag-5'>MCU</b> Develop with <b class='flag-5'>VSCode</b>

    使用VSCODE+GNU+J-Link开发瑞萨RA MCU(上)

    使用VSCODE+GNU+J-Link开发瑞萨RA MCU
    的头像 发表于 09-04 16:23 377次阅读
    使用<b class='flag-5'>VSCODE</b>+GNU+J-Link开发瑞萨RA <b class='flag-5'>MCU</b>(上)

    使用VSCODE+GNU+J-Link开发瑞萨RA MCU(下)

    使用VSCODE+GNU+J-Link开发瑞萨RA MCU
    的头像 发表于 09-04 16:23 215次阅读
    使用<b class='flag-5'>VSCODE</b>+GNU+J-Link开发瑞萨RA <b class='flag-5'>MCU</b>(下)