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

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

3天内不再提示

IAR开发环境下调试双核工程的方法

痞子衡嵌入式 来源:痞子衡嵌入式 作者:痞子衡 2022-06-20 11:32 次阅读

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170下在线联合调试双核工程的方法(基于IAR)

前段时间痞子衡写过一篇《双核i.MXRT1170之单独在线调试从核工程的方法》,那篇文章介绍了如何单独在线调试从核工程的方法。当我们把主核工程和从核工程分别调稳定之后,底下便开始需要双核联调,验证双核通信交互相关功能。今天痞子衡就给大家介绍下 IAR 开发环境下双核工程联调的三种方法:

一、测试准备

首先需要准备好测试环境,包含必要的软件和硬件,痞子衡的环境如下:

  • 集成开发环境:IAR EW for Arm v9.10.2,点此下载
  • 软件开发包:SDK_2.11.0_MIMXRT1170-EVK(Toolchain要包含IAR),点此下载
  • 软件驱动:J-Link driver v7.56b,点此下载
  • 硬件工具:J-Link Plus调试器
  • 硬件开发板:MIMXRT1170-EVK (Rev.C),含板载 DAP-Link 调试器

我们知道 i.MXRT1170 其实主从核是在 Fuse 里可配的,我们就以默认配置(Cortex-M7 为主,Cortex-M4 为从)为例来介绍。

二、在IAR下调试

2.1 通用办法:双核工程无关联,调试器分别加载

第一种方法就是单纯借助外部调试器来做加载,主核工程和从核工程之间无依赖关系。我们选择 SDK 包里如下两个 hello_world 普通工程来做测试:

主核工程:SDK_2.11.0_MIMXRT1170-EVKoardsevkmimxrt1170demo_appshello_worldcm7iar
从核工程:SDK_2.11.0_MIMXRT1170-EVKoardsevkmimxrt1170demo_appshello_worldcm4iar

首先将 hello_world_demo_cm7 工程(选择 flexspi_nor_debug build)调试起来(菜单栏 Download and Debug 按钮),断点停在 main 即可。然后继续将 hello_world_demo_cm4 工程(选择 debug build)也调试起来(菜单栏 Download and Debug 按钮),过程很顺利,底下在两个工程下可以分别单步或者设断点进行调试。

  • Note1: 调试顺序不一定非要主核工程在先,从核工程在后,调换顺序一样可以,但是后调试的工程复位类型必须选 Core 复位(建议两个工程均选择这种复位)。
  • Note2: 调试从核工程 hello_world_demo_cm4 需借助 《双核i.MXRT1170之单独在线调试从核工程的方法》 一文里的脚本激活从核,并且脚本里不要挂起主核。
  • Note3: 对于 J-Link 调试器,双核工程分别调试没有问题;但是对于 DAP-Link 调试器,当第一个工程正在调试时,第二个工程无法直接调试(会提示找不到可用的 DAP-Link 调试器)。
f295439c-eea6-11ec-ba43-dac502259ad0.png

痞子衡将两个 hello world 工程主函数稍稍修改了一下,打印出不同内容,并且增加了一些延时,从结果来看,两个核都在正常跑。不过这里要提醒一句,i.MXRT1170 内部大部分外设对于两个核都是共享的,建议合理分配资源,尽量不要像本次测试这样,两个核都通过同一个 UART 来打印信息(除非代码里刻意做了资源共享设计)。

f2b42334-eea6-11ec-ba43-dac502259ad0.png

2.2 专用方法:双核工程无关联,IAR多核组件加载

第二种方法依然是借助外部调试器来做加载,主核工程和从核工程之间还是无需依赖关系。不过这一次我们要借助 IAR 软件里自带的多核组件,具体设置在工程选项 Debugger/Multicore 里面,在这里填上另外一个核工程(也叫 Partner 工程)文件(.eww)路径以及 build 即可,然后点击菜单栏 Download and Debug 按钮,IAR 会自动完成全部加载工作并返回给用户两个工程的调试界面:

  • Note1: 多核组件的设置既可以在主核工程里,也可以在从核工程里。我们既可以从主核工程开始调试,也可以从从核工程开始调试。
  • Note2: 多核组件仅仅是自动去打开 Partner 工程完成下载调试,并不包含从核激活功能,因此从核工程还是需要保留从核激活脚本。
  • Note3: 多核组件功能仅在 DAP-Link 调试器(或者 I-Jet)下有效,在 J-Link 调试器下不适用。
f2c8f304-eea6-11ec-ba43-dac502259ad0.png

2.3 通用方法:双核工程有关联,主核加载从核

前两种方法本质上都是借助调试器完成从核工程加载的,其实除了调试器,我们也可以利用主核工程里的代码来加载从核,步骤都在《双核i.MXRT1170之Cortex-M7与Cortex-M4互相激活之道》 一文里,我们以 SDK 包里如下两个 hello_world 多核例程来做测试:

主核工程:SDK_2.11.0_MIMXRT1170-EVKoardsevkmimxrt1170multicore_exampleshello_worldcm7iar
从核工程:SDK_2.11.0_MIMXRT1170-EVKoardsevkmimxrt1170multicore_exampleshello_worldcm4iar

在多核示例里,从核工程选项 Output Converter / Output 里会指定生成 hello_world_cm4.bin,然后主核工程选项 Linker / Input 里会输入 hello_world_cm4.bin 的路径,这样主核工程直接把从核可执行机器码当作源文件数组,用于后续复制加载从核程序(具体代码在主核工程 hello_world_core0.c 文件里)。

f2e0bdc2-eea6-11ec-ba43-dac502259ad0.png

多核示例主要是为了展示双核通信交互,而本文主要介绍双核调试,因此我们可以将原始工程里关于 MCMGR 相关代码全部去掉(主核工程代码里要添加从核激活语句),主核工程里多核组件的设置也去掉。

  • Note1: 此方法不依赖从核工程的激活脚本,因为激活工作在主核工程代码里做掉了。
  • Note2: 此方法适用 J-Link 调试器,不适用 DAP-Link 调试器,原因与 2.1 节 Note 3 类似。

两个工程修改完之后,先调试主核工程(菜单栏 Download and Debug 按钮),跑到从核激活语句全部执行完毕,然后再调试从核工程(菜单栏 Attach to Running Target 按钮),至此也可以愉快地进行双核调试。

至此,i.MXRT1170下在线联合调试双核工程的方法痞子衡便介绍完毕了,掌声在哪里~~~


原文标题:IAR下在线联合调试双核MCU工程的三种方法

文章出处:【微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

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

    关注

    0

    文章

    37

    浏览量

    15065
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • IAR
    IAR
    +关注

    关注

    5

    文章

    319

    浏览量

    36282
  • 开发环境
    +关注

    关注

    1

    文章

    203

    浏览量

    16460

原文标题:IAR下在线联合调试双核MCU工程的三种方法

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问LAUNCHXL-CC1310开发板可以在IAR下调试开发吗?支持CJTAG吗?

    想买LAUNCHXL-CC1310这个板子,是否支持在IAR下调试开发?是否支持CJTAG?
    发表于 05-15 07:08

    TMS320C6678基于SYSBIOS的核工程该如何通过SPI Boot?

    各位大神好,小弟在自己的板子上建立了一个sy***ios的核工程,但是现在在烧写到Nor Flash里的时候遇到问题。我是把工程里的.out文件分别命名两次(simple0和simple1),然后
    发表于 12-17 09:19

    请问有在IAR5.5环境下调试STM32的文档说明吗?

    有在IAR5.5环境下调试STM32的文档说明吗?怎么设置IAR5.5?
    发表于 05-22 02:19

    讲解IAR单片机编程软件的工程调试使用方法

    IAR单片机编程软件的工程调试使用方法是什么?如何对IAR单片机编程软件的工程进行
    发表于 01-27 06:45

    基于K32L3A6核工程的创建与转换过程

    基于K32L3A6核工程的创建与转换
    发表于 12-08 07:34

    IAR调试中不同复位类型的介绍

    IAR调试中不同复位类型的介绍在IAR 环境下调试有不同的复位类型,其中一些只复位内核不复位MCU 外设的复位方式在特定情况下可能会造成仿真
    发表于 10-19 07:54

    最新IAR集成开发环境文件下载

    最新IAR集成开发环境文件下载
    发表于 08-12 11:18 223次下载

    Kinetis实战开发--用IAR创建工程

    IAR 开发环境中可以使用两种方法新建工程。一是 开发环境中可以使用两种
    发表于 09-25 14:52 31次下载

    IAR 在线调试查看各种变量的不同方法

    IAR在线调试查看各种变量的不同方法
    的头像 发表于 03-12 10:00 1.2w次阅读

    IAR ARM集成开发环境学习教程

    IAR Embedded Workbench for ARM 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境(下面简
    发表于 08-24 16:47 31次下载
    <b class='flag-5'>IAR</b> ARM集成<b class='flag-5'>开发</b><b class='flag-5'>环境</b>学习教程

    JLinkScript文件基础及其在IAR下调方法的PDF文件

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是 JLink Script 文件基础及其在 IAR 下调方法。 JLink 可以说是 MCU 开发者最熟悉的
    发表于 12-11 00:02 5次下载
    JLinkScript文件基础及其在<b class='flag-5'>IAR</b><b class='flag-5'>下调</b>用<b class='flag-5'>方法</b>的PDF文件

    IAR for 8051 开发环境的安装

    IAR for 8051 开发环境的安装
    发表于 12-03 11:21 16次下载
    <b class='flag-5'>IAR</b> for 8051 <b class='flag-5'>开发</b><b class='flag-5'>环境</b>的安装

    IAR 开发环境下调试核工程方法(IAR篇)

    我们先来看一下工程选项里处理器选择 Cortex-M4,并且不使能任何额外脚本时调试情况。也就是说在明知主核Cortex-M7 处于激活状态而 Cortex-M4 处于未激活状态时,IAR C-SPY
    的头像 发表于 05-26 17:27 7450次阅读

    IAR下调试信息输出机制之硬件UART外设

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是IAR下调试信息输出机制之硬件UART外设。
    的头像 发表于 08-24 10:03 1612次阅读

    IAR下调试信息输出机制之半主机

    软件上 PC 这边就需要 IAR 开发环境即可,这里在编译目标板 MCU 应用程序时,除了需要包含打印输出相关代码(标准 I/O 库接口),底层接口实现必须选用 IAR 的 Semih
    发表于 08-24 11:30 551次阅读