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工程使用和配置相关的问题,也欢迎留言指出,我将在这一系列文章的下篇文章中为大家解答。

审核编辑:汤梓红

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

    关注

    456

    文章

    51157

    浏览量

    426710
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17316

    浏览量

    352425
  • IDE
    IDE
    +关注

    关注

    0

    文章

    341

    浏览量

    46846
  • vscode
    +关注

    关注

    1

    文章

    157

    浏览量

    7829
  • 云途
    +关注

    关注

    1

    文章

    4

    浏览量

    1971

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

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

收藏 人收藏

    评论

    相关推荐

    半导体:基于Arm Cortex-M33的高端MCU,对标NXP域控制器

    在8月5日第十二届松山湖中国IC创新高峰论坛,面向“智慧出行”的创新IC新品推介会上,苏州半导体有限公司带来了其今年量产的高端32位MCU
    的头像 发表于 08-07 14:35 7757次阅读
    <b class='flag-5'>云</b><b class='flag-5'>途</b>半导体:基于Arm Cortex-M33的高端<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>,对标NXP域控制器

    高可靠、高性能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的技术难点

    近日,四维图新旗下全资子公司AutoChips杰发科技对外宣布,其MCU产品线又添重量级新成员——AC7801X,这是杰发科技继2018年底量产的国内首颗
    发表于 02-16 09:34 1.1w次阅读

    完成数亿元A+轮融资,打造全系列高端芯格局

    时间,获得众多一线资本青睐,完成5轮融资,并率先实现产品量产出货,充分证明了其作为顶尖芯片选手的实力,吸引了众多投资者与行业相关企业的目光。     凭实力出圈力争产品达到国际一线水准  
    发表于 07-29 10:44 502次阅读
    <b class='flag-5'>云</b><b class='flag-5'>途</b>完成数亿元A+轮融资,打造全系列高端<b class='flag-5'>车</b><b class='flag-5'>规</b>芯格局

    国民技术MCU型号应用与参数

    国民技术MCU型号应用与参数
    发表于 11-30 14:17 1707次阅读
    国民技术<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>型号应用与参数

    贞光科技:什么是MCU

    MCU也被称为微控制单元,是将CPU、SRAM、Flash、计数器及其它数字和模拟模块集成到一颗芯片上,构成一个小而完善的微型计算机系统。MCU主要可以分为消费级、工业级、级和军用
    的头像 发表于 10-13 17:47 1417次阅读
    贞光科技:什么是<b class='flag-5'>车</b><b class='flag-5'>规</b>级<b class='flag-5'>MCU</b>?

    ​国民技术MCU型号应用与参数

    国民技术作为新晋MCU厂家,除了通用MCU市场,目前面向汽车电子领域,已全面发展全系列车MCU、安全芯片、电池管理芯片等核心器件,并协同合作伙伴为汽车电子行业市场与客户提供
    的头像 发表于 11-22 10:46 3792次阅读
    ​国民技术<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>型号应用与参数

    2022MCU的发展趋势及国产替代分析

    贞光科技深耕汽车电子、工业及轨道交通领域十余年,为客户提供MCU电容、
    的头像 发表于 12-30 15:57 1082次阅读
    2022<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>的发展趋势及国产替代分析

    国产MCU发展趋势

    贞光科技深耕汽车电子、工业及轨道交通领域十余年,为客户提供MCU电容、
    的头像 发表于 12-30 16:00 773次阅读
    国产<b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>发展趋势

    MCU软件开发环境搭建及使用详解

    MCU的嵌入式软件开发领域,过去很长一段时间都是以基于Eclipse框架开发的IDE为主,典型此类IDE包括:NXP的CodeWarrior 10.x/11.xIDE, S32DS IDE
    的头像 发表于 08-22 10:12 7382次阅读
    <b class='flag-5'>云</b><b class='flag-5'>途</b><b class='flag-5'>车</b><b class='flag-5'>规</b><b class='flag-5'>MCU</b>软件开发环境搭建及使用详解

    AT32 MCU Develop with VSCode

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

    基于YCT的SDK配置工程升级方法

    配置工具(YCT - Yuntu Config Tool)自去年Q4推出以来,已经有不少
    的头像 发表于 11-14 11:16 1728次阅读
    基于YCT的<b class='flag-5'>云</b><b class='flag-5'>途</b>SDK配置<b class='flag-5'>工程</b>升级方法

    战略合作 | IAR全面支持MCU

    与知名国产汽车芯片公司江苏半导体有限公司(以下简称“半导体”)联合宣布,两家公司达成战略合作,最新发布的IAR Embedded Workbench for Arm 9.50版
    发表于 01-29 17:03 554次阅读
    战略合作 | IAR全面支持<b class='flag-5'>云</b><b class='flag-5'>途</b><b class='flag-5'>车</b><b class='flag-5'>规</b>级<b class='flag-5'>MCU</b>

    MCU设计厂商半导体完成新一轮融资

    半导体,一家专注于MCU设计的公司,近日宣布完成了数亿元人民币的B2轮融资。本轮融资由国调基金领投,锡创投等机构跟投。
    的头像 发表于 02-05 09:40 819次阅读