1. ST-LINK 与 J-LINK 的区别
相信大家对 ST-LINK 和 J-LINK 都不陌生. ART-Pi 板载了
STM32F103CBT6 ,出厂默认是烧录的 ST-LINK V2-1 的固件,它还可以直接使用 SEEGGER 公司提供的工具,直接刷成 J-LINK OB。
ST-LINK 在烧写程序的时候会通过 MCU 寄存器来获取 MCU 的信息,所以 ST 不会让你使用超过 128K 的 。
J-LINK 不会主动读取 MCU 的信息,所以我们可以使用 J-LINK 来薅 ST 的 FLASH 羊毛。
注意 J-LINK ob无法使用J-FLASH等工具
2.ST-LINK 刷成 J-LINK
下载Segger STLinkReflash小工具。
启动STLinkReflash.exe,后按下图操作(a - a - 1) 选择升级为J-LINK。
注意任何时候:不要选择2.Update J-LINK firmware,这将导致你永远无法刷回 ST-LINK,只能通过背面焊点重新烧录固件

等待升级完成后退出。
查看 ART-Pi 调试器的指示灯变成蓝色。
设备管理器能看到 J-LINK 的设备。
3. 修改 ART-Pi 工程配置
本文已 art-pi-blinkled 工程为例来讲解。
1.找到 link.lds 链接脚本文件
修改rom的起始地址 0x90000000改为0x08000000,修改大小为2048k.我们知道 STM32 的上电之后是从 0x0800000 开始运行,因为 STM32h750 的片内 FLASH 只有 128K, 刚好是一个最小擦除粒度,这块 FLASH 只能存放一个 bootloader 用来跳转到 XIP 的0x90000000,RT-Thread 出厂前烧写好了.现在我们要使用 2M FLASH 所以我们不再需要这个 bootloader 所以我们要把这个 ROM 的起始地址改掉。
改完之后如下图所示:

2.选择调试器为 j-link

3.修改工程配置
前面说到 J-LINK 不会主动读取 MCU 信息,但是需要用户指定具体的芯片信号,这里要把芯片芯片型号修改外 STM32H743XIHx, ST 的命名规则有兴趣的人可以直接去查找资料研究一下。

4. 修改中断向量表
因为程序已经不从 0x90000000 启动了,这个就要注释掉了,不然程序就无法正常启动了.这里直接注释掉就可以了。

5.编译&下载
编译完成后,将
开发板的 ST-Link USB 口与 PC 机连接,然后将固件下载至开发板。

运行效果
正常运行后,蓝色 LED 会周期性闪烁。
注意事项
STLinkReflash.exe 还可以把 J-LINK 刷回 ST-LINK ,但是需要 cube programmer 升级 ST-LINK 固件后才能正常使用。
确保 RT-Tread studio 在资源管理器中已经安装 J-LINK 驱动。
原作者:MVRK_2680