YTM32系列MCU开发调试篇

YTM32系列MCU均是ARM架构,核心架构涵盖ARM Cortex-M0+, Cortex-M33, Cortex-M7系列。MCU软件开发过程中,代码的在线调试是一个必不可少的环节。YTM32系列因为采用ARM架构,所以工程师手中现有支持ARM调试的调试器都是可以支持的。在调试协议方面,YTM32L系列(采用Cortex-M0+)MCU支持SWD调试接口,M系列(Cortex-M33内核)和H系列(Cortex-M7内核)同时支持SWD和JTAG调试接口。YTM32全系列支持ARM 的DAP调试方式,可以兼容主流的ARM调试工具。

开发环境和调试工具支持

YTM32系列MCU支持主流的嵌入式开发环境和调试工具,SDK的示例工程包含KEIL,IAR和GCC三种不同的示例工程。YTMicro软件包同样包含KEIL,IAR和JLINK的补丁工具,可以方便的安装相应的补丁。

KEIL开发环境

针对KEIL开发环境我们会提供专门的补丁包,安装后就可以在KEIL环境中选择对应的芯片信号,与官方提供的补丁包使用体验相同。另外我们也会提供基于KEIL的示例工程,用户可以直接基于示例工程进行自己的软件开发。

77015-hqghf014zhs.png

上图是KEIL对调试器的支持情况,基本涵盖了目前所有主流的调试器。KEIL在使用不同的调试器时需要单独进行设置,当使用JLINK调试的时候,如果JLINK没有对应的补丁,则会出现如下的警告:

58713-gj1iovyfled.png

这种情况我们可以直接选择芯片CPU的类型,或者安装JLINK相应的补丁即可。如果硬件已经连接,则可以在设置窗口看到如下成功连接的信息。

00215-8tn5we7lnzy.png

另外当JLINK提示如下错误的时候,重新以管理员模式打开KEIL即可正常连接JLINK。

56938-ji7x8mid95q.png

IAR开发环境

IAR也是应用非常广泛的嵌入式开发工具,我们也会提供相应的补丁包和示例工程,用户可以直接修改示例工程来实现自己程序的开发。IAR对各种调试器的支持也非常广泛:

48049-46eaq9j69ts.png

因为IAR工程配置的关系,用户默认打开的工程的时候,调试器选项会恢复成Simulator状态,这个时候下载运行程序会不正常,因为程序实际是在仿真器中运行的,所以你可能发现板子压根没有任何反应,这种情况需要根据需要更换调试器的类型。

打开IAR工程时另外一个需要注意的地方是Device的类型,如下图所示,Device一定要选择对应的YTMicro芯片类型,如果选择错误可能会出现编译出错或者程序无法下载的错误提示。

10632-k4wfs920p0n.png

当使用JLINK调试的时候如果没有安装相应的JLINK补丁,同样会出现如下的警告信息,对于这种警告,我们可以直接选择对应的CPU型号或者安装对应的JLINK补丁。

71577-mte2bbb58o8.png

GCC开发环境

GCC开发环境使用的软件都是免费软件,GCC开发环境支持Windows、Linux和MacOS等操作系统,GCC编译器使用arm-none-eabi-gcc,GCC工程基于Makefile编译,可以方便的实现和版本管理系统的集成,另外可以高效地实现自动编译和测试。

使用GCC开发时,推荐使用VSCode进行软件代码编写,VSCode支持丰富的插件,可以提供比较高效的代码编写体验。VSCode还可以很好的支持git版本管理,支持内嵌终端,可以实现代码编写、编译甚至调试的整个流程。

使用GCC开发的时候,调试也有多种形式可以选择,Ozone是Segger公司提供的一个嵌入式调试工具:

34169-b4v1wimsca7.png

上图中可以看到Ozone支持嵌入式调试常用的各种功能,因为Ozone是Segger公司提供的工具,所以调试器只支持JLINK(包含JLINK-OB调试器),Ozone软件是免费的,相当于只有调试器硬件收费。

Ozone的补丁和JLINK是共享的,所以用户只需要安装JLINK补丁,然后通过JLinkDLLUpdater.exe工具更新Ozone的补丁即可,JLinkDLLUpdater.exe工具同样支持对KEIL和IAR等工具的补丁升级。

另外VScode也可以借助Cortex-Debug插件实现简单的调试,这种方式支持JLINK、pyOCD、OpenOCD等多种调试方式,本质上是借助这些工具实现GDB调试服务器,VSCode依然通过GDB调试协议实现嵌入式软件调试。

Eclipse开发环境

对于使用过S32K系列MCU的工程师,基本都是通过S32DS的工具进行软件开发的,S32DS是NXP基于Eclipse实现的一个IDE,因为S32DS是NXP MCU的专属开发工具,我们YTM32系列无法支持S32DS,不过Eclipse官方软件实际已经支持嵌入式软件开发了,并且支持arm-none-eabi-gcc 编译器和JLINK调试器,所以习惯S32DS的工程师也可以用Eclipse来实现类似的开发体验。

对于Eclipse开发环境的配置,我们会有单独的教程来描述开发环境的安装和设置。

调试工具常见问题分析

  1. 为什么我的IAR/KEIL的Device列表里面找不到对应的YTM32 系列的Device?

    因为YTM32系列MCU是云途半导体最近刚推出的比较新的MCU,在IAR、KEIL和Segger的软件中还没有相应的Device支持,用户需要通过YTMicro软件包中的补丁工具对相应的工具添加补丁,添加完补丁之后即可在列表中找到对应的Device。

    当用户使用JLINK作为调试器的时候,必须要对JLINK打相应的补丁,否则IAR和KEIL在使用过程中会出现如下的错误。对于这种情况用户需要安装JLINK的补丁,并通过JLinkDLLUpdater.exe对IAR和KEIL引用的dll进行升级。

    61403-encco7yuitw.png

  2. 我接上调试器之后感觉板子功耗变大了,芯片工作也不太正常。

    这种情况基本上是供电冲突导致的,现在市面上很多调试器都会默认在1脚上输出一个3.3V电压,这样对于很多板子来说就不需要额外供电了,但是我们开发板默认配置是外部供电的,比如使用USB或者12V电源供电,这种情况下调试器的3.3V电源和外部供电会有冲突,从而会产生比较大的电流,这也是板子发烫的原因。

    目前市面上使用比较多的JLINK调试器一般都会在1脚输出3.3V电压,为了防止调试器串电,建议采用以下三种供电方式:

    • 开发板单独供电,JLINK不对外输出电压,这种方式需要将JLINK内部供电跳帽拔掉,使用跳线连接的时候JLINK的1、7、9和GND脚和开发板连接,调试低功耗程序时需连接Reset(15脚)。
    • 使用JLINK1脚3.3V供电,这种方式需要将JLINK内部跳帽连接,开发板不要单独供电,包括外部12V和USB供电。
    • 使用JLINK19脚供电,这种方式需要在Jlink Commander.exe中运行power on [perm]指令开启供电,这种方式下开发板不需要单独供电,JLINK1脚依然需要和开发板MCU_VDD连接。
  3. 为什么调试器连接不到Device?

    如果发现调试器下载程序失败的时候,可以按照如下步骤进行排查:

    • 检查芯片供电是否正常
    • 检查调试接口连接,当使用SWD协议调试的时候,检查SWDIO和SWDCLK接线是否正确,SWD接口的接线也不要太长,最好不要超过10cm,SWD接口不要使用转接板。
    • 检查芯片是否处于低功耗模式,芯片在进入DeepSleep和Standby模式的时候,调试接口无法工作,调试器自然也无法连接,这种情况可以尝试将调试器的Reset输出和芯片的Reset接到一起,这样调试器可以通过复位来唤醒芯片。另外,最好不要在芯片上电之后立即进入低功耗模式,防止出现芯片进入低功耗模式无法唤醒,调试器也无法连接的情况,对于这种需求,可以在调试阶段加一定延时,保证调试器有足够的窗口连接到芯片。
    • 检查芯片供电电压和调试器支持的电压是否匹配,这种问题主要出现在MCU使用5V供电的情况,具体表现是MCU在3.3V供电时调试正常,切换到5V供电时无法调试或者调试不稳定。这种情况通常发生在只支持3.3V的调试器上,可以尝试更换其他调试器,或者将芯片供电电压切换为3.3V
  4. YTM32系列MCU的量产工具支持哪些?

    目前国产的戎象科技高勒康达均可支持YTM32系列MCU,YTM32系列MCU采用标准的SWD编程接口,所以只要支持SWD协议的编程器基本都可以通过软件升级实现。

  5. YTM32 可以通过串口或者其他方式下载程序吗?有没有专门的BOOT选择的接口?

    目前YTM32芯片并没有内置Boot ROM,所以不支持通过串口等外设下载数据,也没有专门的BOOT模式选择IO。

相关文章

发表新评论