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

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

3天内不再提示

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

痞子衡嵌入式 来源:痞子衡嵌入式 2024-08-08 15:18 次阅读

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

两年前痞子衡写过一篇《i.MXRT1170下在线联合调试双核工程的三种方法(IAR篇)》,那篇文章详细介绍了 IAR 下调试 RT1170 双核工程的几种方法。现如今,免费的 MCUXpresso IDE 用户越来越多,而且说实话,MCUXpresso IDE 也确实功能越来越完善,日常嵌入式开发的几乎所有需求都能够满足。今天痞子衡就继续给大家介绍 MCUXpresso IDE 下双核工程联调的三种方法:

一、测试准备

按 《i.MXRT1170下在线联合调试双核工程的三种方法(IAR篇)》 一文里第一节的测试准备,痞子衡这次的环境如下:

集成开发环境:MCUXpresso IDE v11.10.x,点此下载

软件开发包:SDK_2_16_000_MIMXRT1170-EVKB(Toolchain要包含MCUXpresso IDE),点此下载

软件驱动:J-Link driver v7.96k,点此下载

硬件工具:J-Link Plus调试器

硬件开发板:MIMXRT1170-EVKB (Rev.A),含板载 DAP-Link 调试器

二、在MCUXpresso IDE下调试

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

第一种方法依旧是单纯借助外部调试器来做加载,主核工程和从核工程之间无任何依赖关系(一般情况下主核是 XIP 工程,从核是 Non-XIP 工程)。我们选择 SDK 包里如下两个 hello_world 普通工程来做测试(SDK 包里并没有现成的 MCUXpresso IDE 工程文件,需要自己导出,详情参考 《MCUXpresso IDE下SDK工程导入与workspace管理机制》 一文):

主核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkbmimxrt1170demo_appshello_worldcm7
从核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkbmimxrt1170demo_appshello_worldcm4

上次测试 IAR 工具链时,SDK 版本还是 2.11,如今已经演化到了 2.16,现在配套脚本设计得更完善了,主核工程和从核工程下载先后顺序无限制。痞子衡使用了板载 DAP-Link 调试器分别调试双核工程,过程非常丝滑。这主要得益于如下两个 .scp 脚本文件(完成主从核连接与激活工作):

85f6c588-4dc4-11ef-b8af-92fbcf53809c.png

有小伙伴可能会疑惑,这两个 .scp 文件到底是放在哪里的?因为在 MCUXpresso IDE 安装目录下以及导出的 hello world 工程目录下都找不到它们的身影,其实它们就藏在安装 MCUXpresso IDE 时自动同步安装的 LinkServer 驱动里面(LinkServer_1.6.114inariesScripts),这些脚本是共用的,如果你想修改为专用脚本,可以拷贝到工程目录下,然后启用下图里的 Custom Path

8606ef76-4dc4-11ef-b8af-92fbcf53809c.png

2.2 专用方法:双核工程有关联,IDE多核组件链接,主核加载从核

第二种方法需要借助主核代码来给从核做加载,此时主核工程和从核工程之间有互相链接关系(依旧为主核 XIP 工程,从核 Non-XIP 工程),这里需要借助 MCUXpresso IDE 软件里自带的多核组件。我们首先从 SDK 里导出 hello world 多核例程:

主核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkmimxrt1170multicore_exampleshello_worldcm7
从核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkmimxrt1170multicore_exampleshello_worldcm4
86202c7a-4dc4-11ef-b8af-92fbcf53809c.png

可以分别打开主核和从核例程的工程选项,找到 Multicore 设置,可以看到从核配置为 M4SLAVE,主核勾选了 M4SLAVE 工程对应的 axf 文件路径,此为两个工程的链接关系:

863f83ae-4dc4-11ef-b8af-92fbcf53809c.png

至于从核代码加载过程,可以打开主核工程的链接文件,相比一般独立工程链接文件,其多了对从核工程编译出来的二进制数据(包含text和data)的链接处理,拷贝动作是在主核工程 startup_mimxrt1176_cm7.c 文件 ResetISR() 函数中的 data bss 段初始化过程中一起完成的,激活从核动作则是 main 函数里 MCMGR_StartCore() 函数实现的。

8643bf50-4dc4-11ef-b8af-92fbcf53809c.png

2.3 通用方法:双核工程无关联,主核激活从核

目前 v2.16 SDK 包里相比之前增加了如下两个 hello_world_secondary_core_boot 多核例程,以往的多核例程,从核均是 Non-XIP 工程,而这个新增例程里从核工程也是 XIP 例程:

主核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkmimxrt1170demo_appshello_world_secondary_core_bootcm7
从核例程导出源路径:SDK_2_16_000_MIMXRT1170-EVKBoardsevkmimxrt1170demo_appshello_world_secondary_core_bootcm4

因为主从核工程均是 XIP 工程,在调试时需要先将从核工程下载进 Flash,然后再下载主核工程进 Flash 并且沿用主核工程里的 XIP 头做启动配置。因为代码加载是调试器完成的,所以两个工程间并无直接关联,不过因为最终还是需要主核执行代码去完成从核激活工作,因此从核程序存放地址(CORE1_BOOT_ADDRESS)是需要 hardcode 在主核代码里的。

8659f4aa-4dc4-11ef-b8af-92fbcf53809c.png

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

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

    关注

    0

    文章

    334

    浏览量

    46538
  • 调试器
    +关注

    关注

    1

    文章

    297

    浏览量

    23565
  • J-Link
    +关注

    关注

    0

    文章

    83

    浏览量

    22049
  • mcuxpresso
    +关注

    关注

    1

    文章

    38

    浏览量

    4112

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

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

收藏 人收藏

    评论

    相关推荐

    启动Redis的三种方法

    Redis笔记(1)——安装、卸载、三种方法启动Redis,Redis命令使用(干货十足),Redis两种方法设置密码,时间复杂度(更完善哦~)
    发表于 06-08 16:09

    MCUXpresso IDE下在线调试时使用不同复位策略的现象分享

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结。  本篇实际上是《IAR
    发表于 01-25 07:37

    不同复位类型设置对MCUXpresso IDE在线调试的影响是什么

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结。本篇实际上是《IAR
    发表于 02-07 06:10

    分享MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法

    重定向到RAM中执行的三种方法》,有读者在文章下面留言,希望也讲一讲 MCUXpresso IDE 下函数重定向到 RAM 中执行的方法。我们知道函数重定向的实现需要借助
    发表于 02-10 06:44

    记录一下MCU存在ROM中的bootloader的三种方法

    网上查到的直接进入TIVA系列MCU存在ROM中的bootloader的三种方法,记录一下。使用 TM4C ROM bootloader 的種方式:Flash Empty當 MCU
    发表于 02-14 06:45

    噪声系数测量的三种方法

    噪声系数测量的三种方法 本文介绍了测量噪声系数的三种方法:增益法、Y
    发表于 05-07 13:38 2114次阅读

    解决电池问题有三种方法

    解决电池问题有三种方法      对于手机电池问题如何解决,业内人士指出有以下三种方法:   一、发明新型电池。目前有日本生产商已经展示了概念性的燃
    发表于 11-10 14:26 942次阅读

    MCUXpresso IDE在Flash调试的注意事项

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 MCUXpresso IDE 下使用 J-Link 下载算法在 Flash 调试注意事项。 介绍一下如何使用新生成的 flash
    的头像 发表于 12-23 13:53 917次阅读

    实体关系联合抽取取得SOTA的三种方法

    三种方法,以做总结。   先总体对三种方法做个比较:*表示Exact Matching 以下将对上面提到的篇文章依次进行详细解读。 CasRel 论文:A Novel Cascade Binary
    的头像 发表于 02-10 17:08 1.2w次阅读
    实体关系<b class='flag-5'>联合</b>抽取取得SOTA的<b class='flag-5'>三种方法</b>

    python统计词频的三种方法

    python统计词频的三种方法方法
    发表于 05-25 14:33 2次下载

    痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结。  本篇实际上是《IAR
    发表于 11-30 18:06 14次下载
    痞子衡嵌入式:<b class='flag-5'>MCUXpresso</b> <b class='flag-5'>IDE</b><b class='flag-5'>下在线</b><b class='flag-5'>调试</b>时使用不同复位策略的现象总结

    不同复位类型设置对MCUXpresso IDE在线调试有何影响?

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结。本篇实际上是《IAR
    发表于 12-04 12:21 8次下载
    不同复位类型设置对<b class='flag-5'>MCUXpresso</b> <b class='flag-5'>IDE</b><b class='flag-5'>在线</b><b class='flag-5'>调试</b>有何影响?

    痞子衡嵌入式:MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法

    重定向到RAM中执行的三种方法》,有读者在文章下面留言,希望也讲一讲 MCUXpresso IDE 下函数重定向到 RAM 中执行的方法。我们知道函数重定向的实现需要借助
    发表于 12-06 19:36 9次下载
    痞子衡嵌入式:<b class='flag-5'>MCUXpresso</b> <b class='flag-5'>IDE</b>下将关键函数重定向到RAM中执行的几<b class='flag-5'>种方法</b>

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

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170下在线联合调试工程方法(基于IAR)。
    的头像 发表于 06-20 11:32 3593次阅读

    噪声系数测量的三种方法

    本文介绍了测量噪声系数的三种方法:增益法、Y系数法和噪声系数测试仪法。这三种方法的比较以表格的形式给出。
    的头像 发表于 05-18 11:02 1145次阅读
    噪声系数测量的<b class='flag-5'>三种方法</b>