ModusToolbox for vscode使用小记

#选择modustool的原因

因为要使用infineon系列的单片机,同时舍不得vscode的丝滑体验,遂在网上寻找vscode的官方插件,最后在一些文章中找到了ModusToolbox Assiatant插件。但是关于这个插件的使用资料较少,经过几天使用,分享我的经验为后来人减轻上手时间。

#下载vscode插件

modustoolbox是官方推出的vscode插件,同时后续下载也可以在vscode上完成,避免了从官网下载的繁琐。

c/c++插件

调试插件

为arm汇编语言提供的高亮提示的插件

提供代码补全,跳转等功能的插件

#下载ModusToolbox工具

这里需要提前注册infineon账号,以便vscode登录网站验证,同时自己选择一个文件夹放置下载文件。由于已经完成下载,不进行演示。奇怪的是,下载过程十分缓慢,挂梯子也基本无法提升,比在官网下载的安装包安装要慢许多,有经验的友友可以说一下是为什么。

#建立工程

下载完成后来到modustoolbox assiatant欢迎界面,新版本点击右上角小黄可以跳转到这个界面。

可以看到内容很丰富,这里我只介绍一下我使用过的几个功能。

首先是Create New Project,顾名思义创建新的工程,选择合适的创建位置(注意最好独立一个项目一个文件夹,因为会同时创建两三个文件夹在你选择的位置)以及项目名称。

比如下图

由于在vscode上只有使用bsp(Board Support Package )创建工程,这会省去搭建框架的时间,但同时多了修改芯片和调试器的步骤,这里我使用的是traveo T2G系列单片机cyt2bl3bas,所以直接选择相近的bsp类别。

点击Next:Select Example选择示例框架(Getting Started)。由于该款单片机具有两个不同核心,所以如果工程复杂,建议选择双核空架构,工程简单可以从helloworld串口通讯开始

完成选择后开始从网络下载工程(如果没有梯子会卡在这一步)

下载部分

下载完成点击load进入工程

提示我们自动补齐vscode设置,我习惯两个都点。

这个就是主工作界面,可以看到主要的编译和重编译,清除编译文件,清除芯片flash,以及下载到flash。左边文件夹清晰地显示了工程层次

可以看到官方支持的组件有很多,熟练运用可以大幅减小工作量。

#使用教程

##1点击主界面的config Middleware进入中间层(lib)添加界面

点击add library,演示添加一个printf重定向lib

可以选择在m0+核或m4核心分别添加。

这里选择在m4添加。

可以看到正确下载在m4工程部分。

这里我们查看一下lib描述和使用方法。

进入网页端,我们使用 cy_retarget_io_init_fc();来重定向__write_输出到uart0。这个函数也是HelloWorld中重定向的函数。

##2 不过现在还需要修改芯片型号

点击主界面的bsp assiatant。

点击device选择合适的mcu并保存。

现在可以进行编译尝试,两颗内核会分别进行编译,或者可以直接点击下载program,会先检查是否编译最新固件再下载。但是此时应该是下载不进去的,原因在于我们没有选择合适的调试器。

出现如下信息提示我们使用的是daplink,而不是示例中的KitProg3。

复制代码
Open On-Chip Debugger 0.12.0+dev-5.12.0.4170 (2025-12-10-08:52)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
adapter speed: 2000 kHz
adapter srst delay: 25
adapter srst pulse_width: 25
** Auto-acquire enabled, use "set ENABLE_ACQUIRE 0" to disable
cortex_m reset_config sysresetreq
Warn : SFlash programming allowed for regions: USER, TOC, KEY
Info : Using CMSIS-DAPv2 interface with VID:PID=0x0d28:0x0204, serial=E98E6F17D2334489BC5104BB4312C906
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: Test domain timer supported
Info : CMSIS-DAP: FW Version = 2.1.0
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Error: It looks like your debug probe is in DAPLink mode. Please switch to KitProg3 mode or use CMSIS-DAP driver instead.
** OpenOCD init failed **

##3 修改Openocd调试器

openocd.tcl根据个人调试器进行选择,我将其修改为cmsis-dap.cfg并Ctrl+s保存。

继续修改openocd.tcl,

继续修改openocd.tcl。

修改Makefile中添加

override _MTB_RECIPE__OPENOCD_INTERFACE:=source [find interface/cmsis-dap.cfg];

添加override _MTB_RECIPE__OPENOCD_INTERFACE:=source [find interface/cmsis-dap.cfg];

##4 下载并进行调试

复制代码
Open On-Chip Debugger 0.12.0+dev-5.12.0.4170 (2025-12-10-08:52)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
adapter speed: 2000 kHz
adapter srst delay: 25
adapter srst pulse_width: 25
** Test Mode acquire not supported by selected adapter
cortex_m reset_config sysresetreq
Warn : SFlash programming allowed for regions: USER, TOC, KEY
Info : Using CMSIS-DAPv2 interface with VID:PID=0x0d28:0x0204, serial=E98E6F17D2334489BC5104BB4312C906
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: Test domain timer supported
Info : CMSIS-DAP: FW Version = 2.1.0
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 2000 kHz
Info : SWD DPIDR 0x6ba02477
Info : [traveo2_be_4m.cpu.cm0] Cortex-M0+ r0p1 processor detected
Info : [traveo2_be_4m.cpu.cm0] target has 4 breakpoints, 2 watchpoints
***************************************
** Use overriden Main Flash size, kb: 4160
** Use overriden Work Flash size, kb: 128
** Silicon: 0xEA02, Family: 0x108, Rev.: 0x11 (A0)
** Detected Device: CYT2BL3CXE
** Flash Boot version: 3.1.0.556
** SFlash version: 0x59ca1
** Chip Protection: NORMAL
***************************************
Info : [traveo2_be_4m.cpu.cm0] Examination succeed
Info : [traveo2_be_4m.cpu.cm4] Cortex-M4 r0p1 processor detected
Info : [traveo2_be_4m.cpu.cm4] target has 6 breakpoints, 4 watchpoints
Info : [traveo2_be_4m.cpu.cm4] Examination succeed
Info : starting gdb server for traveo2_be_4m.cpu.cm0 on 3333
Info : Listening on port 3333 for gdb connections
Info : starting gdb server for traveo2_be_4m.cpu.cm4 on 3334
Info : Listening on port 3334 for gdb connections
Info : SWD DPIDR 0x6ba02477
Info : traveo2_be_4m.cpu.cm0: Waiting up to 0.600 sec for valid Vector Table address...
Info : traveo2_be_4m.cpu.cm0: Vector Table found at 0x10000000
Info : traveo2_be_4m.cpu.cm0: bkpt @0x10000137, issuing SYSRESETREQ
Info : SWD DPIDR 0x6ba02477
Info : [traveo2_be_4m.cpu.cm0] Examination succeed
Info : [traveo2_be_4m.cpu.cm0] halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x000000f8 msp: 0x0807f800
** traveo2_be_4m.cpu.cm4: Ran after reset and before halt...
Info : [traveo2_be_4m.cpu.cm4] halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x000001bc msp: 0x0807f800
** Programming Started **
auto erase enabled
Info : Flash write discontinued at 0x10002648, next section at 0x10080000
Info : Padding image section 0 at 0x10002648 with 440 bytes (bank write end alignment)
Warn : Adding extra erase range, 0x10002800 .. 0x10007fff
[100%] [################################] [ Erasing     ]
[100%] [################################] [ Programming ]
Info : Padding image section 1 at 0x10081430 with 464 bytes (bank write end alignment)
Warn : Adding extra erase range, 0x10081600 .. 0x10087fff
[100%] [################################] [ Erasing     ]
[100%] [################################] [ Programming ]
wrote 15872 bytes from file G:/Code/Demo-infineon/TRY_1/TRY_1/build/app_combined.hex in 0.271755s (57.037 KiB/s)
** Programming Finished **
** Verify Started **
verified 14968 bytes in 0.040930s (357.126 KiB/s)
** Verified OK **
** Resetting Target **
Info : SWD DPIDR 0x6ba02477
shutdown command invoked
Info : traveo2_be_4m.dap: powering down debug domain...
make[1]: 离开目录"/cygdrive/g/Code/Demo-infineon/TRY_1/TRY_1/proj_cm0p"
 *  终端将被任务重用,按任意键关闭。 

现在下载完成,进行代码调试。

选择m4核心。

与其他在vscode上的调试体验一致。

##测试重定向代码

找到快速示例代码

在cm4-main.c中添加头文件

复制代码
#include "cy_retarget_io.h"
--二选一
cy_retarget_io_init_fc(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, 
                         CYBSP_DEBUG_UART_CTS, CYBSP_DEBUG_UART_RTS, 
                         CY_RETARGET_IO_BAUDRATE);
--更健壮的初始化
result = cy_retarget_io_init_fc(CYBSP_DEBUG_UART_TX, CYBSP_DEBUG_UART_RX, 
                         CYBSP_DEBUG_UART_CTS, CYBSP_DEBUG_UART_RTS, 
                         CY_RETARGET_IO_BAUDRATE);
    if (result != CY_RSLT_SUCCESS)
    {
        CY_ASSERT(0);
    }
--
printf("Hello from CM4!\r\n");
        CyDelay(1000);
--  

观察vofa串口

现在完成了基本的lib库调用,官方封装freertos和lvgl库也值得尝试。

还有类似keil的班级配置

#结语

本次尝试完成了对modustoolbox的基础操作,总的来说是非常现代化的插件体验。

infineon还包含许多系列的产品,非常值得大家进行尝试。

相关推荐
芯码学徒1 小时前
vscode上如何免费使用opencode插件
ide·vscode·编辑器·opencode
播播资源1 小时前
Visual Studio Code如何接入 API 使用OpenAI、claude、Gemini等最新大模型,国内直连教程
ide·vscode·编辑器
学术小李1 小时前
VSCode上传文件到服务器
服务器·vscode·sftp·数据上传
Snooker_1461 小时前
TRAE、VSCode上进行git管理
ide·git·vscode
洋九八2 小时前
STM32 串口(USART)配置
stm32·单片机·嵌入式硬件
华科大胡子2 小时前
单片机IO不够?ULN2003A救急方案
单片机
时空自由民.2 小时前
MCU 串口 printf 耗时优化方案
单片机·嵌入式硬件
古怪今人3 小时前
项目和模块 一个目录下创建多个项目 IDEA Multi-Project Workspace插件
java·ide·intellij-idea
金色光环3 小时前
【DSP学习】增强型脉宽调制 EPWM 实验-基于普中DSP开发攻略
单片机·学习·dsp开发