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

前段时间写过一篇《双核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 调试器)。
下面将两个hello world 工程主函数稍稍修改了一下,打印出不同内容,并且增加了一些延时,从结果来看,两个核都在正常跑。 不过这里要提醒一句,i.mx rt1170内部大部分外设对于两个核都是共享的,建议合理分配资源,尽量不要像本次测试这样,两个核都通过同一个uart来打印信息(除非代码里刻意做了资源共享设计)。
2.2 专用方法:双核工程无关联,iar多核组件加载
第二种方法依然是借助外部调试器来做加载,主核工程和从核工程之间还是无需依赖关系。
不过这一次我们要借助iar软件里自带的多核组件,具体设置在工程选项 debugger/multicore 里面,在这里填上另外一个核工程(也叫 partner 工程)文件(.eww)路径以及 build 即可,然后点击菜单栏 download and debug 按钮,iar 会自动完成全部加载工作并返回给用户两个工程的调试界面:
note1: 多核组件的设置既可以在主核工程里,也可以在从核工程里。我们既可以从主核工程开始调试,也可以从从核工程开始调试。
note2: 多核组件仅仅是自动去打开 partner 工程完成下载调试,并不包含从核激活功能,因此从核工程还是需要保留从核激活脚本。
note3: 多核组件功能仅在 dap-link 调试器(或者 i-jet)下有效,在 j-link 调试器下不适用。
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 文件里)。
多核示例主要是为了展示双核通信交互,而本文主要介绍双核调试,因此我们可以将原始工程里关于 mcmgr 相关代码全部去掉(主核工程代码里要添加从核激活语句),主核工程里多核组件的设置也去掉。
note1: 此方法不依赖从核工程的激活脚本,因为激活工作在主核工程代码里做掉了。
note2: 此方法适用 j-link 调试器,不适用 dap-link 调试器,原因与 2.1 节 note 3 类似。
两个工程修改完之后,先调试主核工程(菜单栏 download and debug 按钮),跑到从核激活语句全部执行完毕,然后再调试从核工程(菜单栏 attach to running target 按钮),至此也可以愉快地进行双核调试。


基于构件的网络ERP系统框架研究
浅谈安科瑞电力在生物制药企业变配电系统自动化改造的应用
锁闭电流吸收器可响应窄的触发脉冲
美国的盟友国家由于安全考虑都纷纷将华为的5G技术排除在外
科普|除颤器类型及如何测试除颤仪
IAR开发环境下双核工程联调的三种方法
诺基亚一款功能机原型机曝光,运行Android 8.1 Oreo Go版本
你的手机被中情局监视怎么办?
华为走向5G打造C-RAN前传网络
IGBT模块常规测量以及故障维修方法
阿里云混合云、IoT等产品解决方案帮助东风日产及北汽新能源增产增收
总结一下OpenCV遍历图像的几种方法
清洁维护有讲究 拆装板卡要谨慎
IC Park执行“IC 合伙人”计划 打破传统科技园区招商困局
为什么机器人过程自动化是智能数据中心的前进方向
紫外线特性检测电路(纸币鉴伪系统电路)
数字电位器在单片机控制变频器中的应用
低压差稳压器关键参数的了解
虹科资讯 | 虹科工业物联网产品荣获中国物联网行业创新产品奖!
创新产品 | 引领医疗产业革新,润和软件打造智慧环控快速微生物检测终端新品