之前一直使用的下载器是st-link,由于手头只有一个ARM仿真器,所以学习了一下j-link下载方式,记录一下。
1、驱动下载
下载链接:https://www.segger.com/downloads/jlink/。
下载完成后直接安装可以了。安装完成后你会在你的安装目录下看到如下内容:
常用的是JFlash.exe(程序烧录)和j_link RTT Viewer.exe(串口调试)
安装完成后,将J-LINK插入电脑在设备管理器中将会显示J-LINK端口。
2、硬件连接:
ARM仿真器
仿真器接口排列,使用SWD下载方式只需要接画圈的四根线到开发板
目前我常用的使用swd下载方式有两种,用keil直接下载,或者用j-flash下载
3、keil下载程序到开发板
keil魔术棒里Debug下载方式选J-LINK这个
点开setting,选择sw
设置好后点keil的load就下载好了
4、使用J_FLASH下载程序
打开JFlash.exe,第一次用就选新建一个工程
选择自己的器件
点OK
弹出界面如下
烧录过程
1、target—connect 连接硬件
2、File—Open date file 选择目标hex文件
3、Target—Manual proframming—Erase Chip 把芯片内部flash清除干净
4、Target—Manual proframming—Program &Verify
5、Target—Manual proframming—Start Application
到这里程序就在开发板上执行了
5、使用 J-Link 来串口调试
有时候我们使用的板子的硬件封装没有预留方便的调试串口,这时候J-LINK自带的串口调试非常有用,这篇文章写得很清楚,不再赘述
如何用 J-Link 来串口调试?
6、跳转到APP后jink的segger_rtt不能正常打印
我做的工作是给一个传感器APP写一个引导和升级程序,flash里有bootloader和APP两段程序,两段程序里我都使用了J-LINK的串口调试功能,但是程序跑起来时APP的就不打印,后来搜了一下这篇文章写的很好JLink - SEGGER_RTT 打印调试在 Bootloader+App 工程中的应用
解决办法:
将 Bootloader 和 App 工程中的 SEGGER_RTT 信息存储地址 设置为相同的固定地址,这样 J-Link RTT Viewer 就可以正常工作。不会因为App跳转而失效。
具体操作:在SEGGER_RTT.c 文件中,在官方注释Static data处,进行修改: