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

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

3天内不再提示

IAR开发环境下双核工程联调的三种方法

恩智浦MCU加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2022-06-16 09:13 次阅读

前段时间写过一篇《双核i.MX RT1170之单独在线调试从核工程的方法》,那篇文章介绍了如何单独在线调试从核工程的方法。 当我们把主核工程和从核工程分别调稳定之后,接着便开始需要双核联调,验证双核通信交互相关功能。今天就给大家介绍下 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.MX RT1170其实主从核是在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.MX RT1170之单独在线调试从核工程的方法》 一文里的脚本激活从核,并且脚本里不要挂起主核。

Note3: 对于J-Link调试器,双核工程分别调试没有问题;但是对于DAP-Link调试器,当第一个工程正在调试时,第二个工程无法直接调试(会提示找不到可用的 DAP-Link 调试器)。

8d856024-ed0f-11ec-ba43-dac502259ad0.png

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

8da095ba-ed0f-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 调试器下不适用。

8dc8e54c-ed0f-11ec-ba43-dac502259ad0.png

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

前两种方法本质上都是借助调试器完成从核工程加载的,其实除了调试器,我们也可以利用主核工程里的代码来加载从核,步骤都在《双核i.MX RT1170之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 文件里)。

8df0fcd0-ed0f-11ec-ba43-dac502259ad0.png

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

Note1: 此方法不依赖从核工程的激活脚本,因为激活工作在主核工程代码里做掉了。

Note2: 此方法适用 J-Link 调试器,不适用 DAP-Link 调试器,原因与 2.1 节 Note 3 类似。

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

审核编辑 :李倩

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

    关注

    5

    文章

    350

    浏览量

    36662
  • 调试器
    +关注

    关注

    1

    文章

    303

    浏览量

    23716

原文标题:双核i.MX RT1170之在线联合调试双核工程的三种方法(IAR篇)

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么用Clion开发APM32

    APM32 官方 SDK 中提供了三种开发环境:Keil、IAR 和 Eclipse。不否认这三种环境
    的头像 发表于 12-17 09:19 528次阅读
    怎么用Clion<b class='flag-5'>开发</b>APM32

    三种封装形式的400G光模块概述

    本文主要就三种封装形式(QSFP-DD、OSFP、QSFP112)的400G光模块做了简单的梳理,从为什么会有400G光模块问世?400G光模块在三种封装形式的各个具体型号(以短距离为主,最远2km),
    的头像 发表于 11-11 11:35 355次阅读
    <b class='flag-5'>三种</b>封装形式<b class='flag-5'>下</b>的400G光模块概述

    简述三种esp32的开发方式是什么

    ESP32是一款由乐鑫(Espressif)推出的低功耗、高性能的Wi-Fi和蓝牙双模无线通信芯片,广泛应用于物联网、智能家居、智能硬件等领域。本文将详细介绍三种ESP32的开发方式:Arduino
    的头像 发表于 08-20 09:11 2760次阅读

    MCUXpresso IDE下在线联合调试核MCU工程三种方法

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线联合调试i.MXRT1170核工程三种方法
    的头像 发表于 08-08 15:18 541次阅读
    MCUXpresso IDE下在线联合调试<b class='flag-5'>双</b>核MCU<b class='flag-5'>工程</b>的<b class='flag-5'>三种方法</b>

    数字示波器的测量方法有哪三种

    数字示波器是一广泛应用于电子测量领域的仪器,它能够实时显示电压波形,帮助工程师和技术人员对电子信号进行分析和测量。数字示波器的测量方法有很多种,不同的测量方法适用于不同的应用场景。以
    的头像 发表于 07-17 18:02 1598次阅读

    信号调制的三种基本方法

    号调制的三种基本方法:调幅(AM)、调频(FM)和调相(PM),并分析它们的优缺点及应用场景。 调幅(AM) 2.1 调幅原理 调幅(Amplitude Modulation,AM)是一将低频信号的幅度变化映射到高频载波信号的
    的头像 发表于 06-03 09:38 3677次阅读

    芯海通用 MCU应用笔记 :在 IAR 及 MDK 开发环境使用 printf 函数重定向移植差异指南

    9.x 版本的通用重定向代码。*附件:应用笔记:在IAR及MDK开发环境使用printf函数重定向移植差异指南.pdf
    发表于 05-16 11:56

    芯海应用笔记:通用 MCU 基于 IAR 芯片包 IAR9 开发指南

    MCU 芯片。芯海科技基于 IAR 环境开发芯片包,给用户更多的编译选择,提高用户开发灵活性。本应用笔记从芯片包结构、DEMO 例程下载使用、工程
    发表于 05-16 11:52

    菱M70 PLC增加注解的三种方法简析

    菱M70 PLC增加注解的三种方法
    的头像 发表于 02-26 09:59 1077次阅读
    <b class='flag-5'>三</b>菱M70 PLC增加注解的<b class='flag-5'>三种方法</b>简析

    3控开关的接线方法

    详尽、详实、细致地介绍三种常见的控开关的接线方法。 第一接线方法是直连法。直连法是最简单的
    的头像 发表于 02-05 13:46 5376次阅读

    求助,在TASKING软件里如何建立多核工程并能实现3个核运行?

    论坛里看到有基于BaseFramework框架的多核工程,但是怎么在TASKING里直接创建工程?我在TASKING里新建多核工程,并通过SoftwarePlatform插件代码生成来生成完整的各种
    发表于 02-05 09:09

    嵌入式Linux开发三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发
    的头像 发表于 01-22 14:22 958次阅读

    传统激光功率衰减的三种方法

    传统激光功率衰减通常使用以下三种方法,分别为中性密度衰减片衰减法、偏振衰减法、镀膜光学镜片衰减法。
    的头像 发表于 01-20 10:42 1734次阅读
    传统激光功率衰减的<b class='flag-5'>三种方法</b>

    异步电机主要的三种调速方法解析

    异步电机主要的三种调速方法解析
    的头像 发表于 01-07 17:50 2367次阅读
    异步电机主要的<b class='flag-5'>三种</b>调速<b class='flag-5'>方法</b>解析

    无人机测深的三种方法总结

    无论是陆地测绘还是海洋测绘,测绘行业都是朝着航空方向发展。下面结合搜索到的论文和相关网页,总结下无人机测深的方法,总共有三种:1)机载激光雷达;2)机载探地雷达(GPR);3)机载高精度测深仪。
    的头像 发表于 01-05 11:24 1828次阅读
    无人机测深的<b class='flag-5'>三种方法</b>总结