二、在IAR EW for Arm下使用步骤 2.1 将超级下载算法包打进J-Link驱动
第一步其实跟 IAR 无关,因为是基于 J-Link 的超级下载算法,所以要给 J-Link 软件驱动先打个更新包,具体参照 《超级下载算法RT-UFL v1.0发布,附J-Link下安装教程》 一文。
Note: IAR 安装过程中会顺便在 \IAR Systems\Embedded Workbench 8.50.6\arm\bin\ 路径下安装一个默认的 J-Link 驱动(版本不可控,应该是跟 IAR 版本匹配的),但为了避免不可预见的问题发生,最好自己手动安装一个明确的 J-Link 驱动版本来使用(痞子衡安装在了 C:\tools_mcu\SEGGER\JLink_V686f)。 2.2 为IAR指定包含超级下载算法的J-Link驱动
在默认情况下,所有 IAR 工程都统一使用 IAR 安装目录下自带的 J-Link 软件驱动及其下载算法(假定 App 工程选项设置里仿真器选择的是 J-Link,且不用 IAR 下载算法),但是我们为了超级下载算法额外安装了一个指定版本的 J-Link 软件驱动(v6.86f),因此我们需要指定 IAR 去使用包含超级下载算法的 J-Link 驱动,这里不是在 App 工程选项里设置,而是需要借助 JLinkDLLUpdater.exe 工具。
在我们额外安装的包含超级下载算法的 C:\tools_mcu\SEGGER\JLink_V686f 目录下,有一个名为 JLinkDLLUpdater.exe 的小工具,双击这个工具,便可看到其搜索到了当前 PC 环境下安装的 IDE 列表,有我们正在使用的 IAR v8.50.6,勾选上 IAR 便能完成 J-Link 驱动的指定。
其实痞子衡当前 PC 上安装了两个版本的 IAR,分别是 v8.50.6 和 v9.10.2,不过 J-Link v6.86f 版本下的 JLinkDLLUpdater.exe 仅识别出了 IAR v8.50.6,这意味着,如果你安装的是 IAR v9.10.2,可能无法去指定使用 额外安装的 J-Link v6.86f 版本驱动。后来痞子衡安装了最新的 J-Link v7.56b,它下面的 JLinkDLLUpdater.exe 能将两个版本的 IAR 都识别出,这就是文章前面提及的 J-Link 驱动版本与 IAR 版本的关联限制。
然后就来到了全文中最关键的设置了,工程选项 Debugger/ Download 下的 Use flash loader(s) 这个选项默认是勾选的,即代表不管外面连接的是哪种硬件仿真器,统一使用 IAR 目录下自带的 .out 下载算法,但是我们一定要将这个勾选给去掉,因为我们要用指定的 J-Link 软件驱动下的超级下载算法。
Note: IAR 安装目录 \IAR Systems\Embedded Workbench 8.50.6\arm\config\flashloader\NXP 下自带的 .out 格式下载算法同时适用 CMSIS-DAP 型和 J-Link 型硬件仿真器,因此哪怕连接的是 J-Link 仿真器,也可以有两种不同类型下载算法选择,这点上 IAR 与上一篇介绍的 MCUXpresso IDE 算法使用设计不太一样。
2.6 选择合适的超级下载算法进行在线下载调试
还差最后一步就可以愉快地在 Flash 调试了,我们将 J-Link 仿真器连接上板卡,点击 IAR 菜单栏 Download and Debug 按钮进行调试,发现竟然报错了,似乎有下载过程,但无法单步跑。这其实是可以理解的,因为我们还没有选择合适的超级下载算法,至少在 IAR 工程选项里没有显式的去选。
其实 IAR 工程设置里并没有给我们主动选择 J-Link 下载算法的机会,它自己偷偷通过工程选项里的 General Options/Target 下的 Device 设置,根据 MIMXRT1052xxx6B 值到 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 文件中做了匹配,自动选择了第一个匹配到的 MIMXRT1050_UFL_L0 算法,但其实本次测试我们需要的是 MIMXRT1050_UFL_L1 算法。