使用SEGGER Open Flashloader,制作适用于J-Link的H750内部2M Flash算法。
引言:
这个下载算法是为了配合VS Code + CMake开发使用的。个人觉得MDK添加文件极其麻烦,又用不惯Eclipse的CubeIDE,正好CubeMX更新了生成CMake工程,于是搞出了CubeMX生成,VS Code编译,J-Link下载,Ozone调试的方式。有时间的话整理成文章。
原理:
该下载算法相当于重写了一遍,与内置的STM32H750XB不同,相当于另一个设备。这时可以同时在J-Link的设备中挂在内部Flash与外部Flash。使用这种方法可以方便的使用内外部Flash混合编程的方式。
说明:
新版的J-Link驱动只能在用户目录下添加新设备(详见JLinkDevices folder),具体到Windows就是C:\Users\<USER>\AppData\Roaming\SEGGER\JLinkDevices。其中,JLinkDevices文件夹如果没有,需要手动创建。
J-Link驱动会遍历查找该目录下的xml文件,最大深度有4层(没测过)。随便添加一个xml文件,里面填入如下内容:
[XML] 纯文本查看 复制代码 <Database>
<Device>
<ChipInfo Vendor="ST" Name="STM32H750xx" WorkRAMAddr="0x24000000" WorkRAMSize="0x80000" Core="JLINK_CORE_CORTEX_M7" />
<!-- 2 MB internal code flash bank with 1 loader -->
<FlashBankInfo Name="Internal flash 2MB" BaseAddr="0x08000000" AlwaysPresent="1" >
<LoaderInfo Name="Default" MaxSize="0x200000" Loader="H750xx/STM32H750xx_2M.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</FlashBankInfo>
<!-- Max. 16 MB external QSPI flash with 1 loaders. Real size + sectorization is determined by loader at runtime -->
<FlashBankInfo Name="Exnternal flash" BaseAddr="0x90000000" AlwaysPresent="0" >
<LoaderInfo Name="External flash W25Q64JV" MaxSize="0x00800000" Loader="H750xx/H750xx W25Q64JV.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</FlashBankInfo>
</Device>
</Database>
其中,第一个FlashBankInfo 中的就是内部2M算法,第二个是外部Flash下载算法,可以替换为自己的外部Flash算法。
注意:
- ChipInfo 中的Vendor与Name可以随便写,不过Name是J-Link识别的名称,改了的话下载时要选对。
- FlashBankInfo 中的就是Flash信息,第一个是内部Flash,两个Name与JFlash识别的名称有关;MaxSize要与实际大小相符,否则会错误,此处是2M的hex码;Loader里面要填相对于xml文件的相对路径,不然会提示找不到;AlwaysPresent是JFlash识别的默认开还是默认关,比如如上述的设置在JFlash中就需要手动打开外部Flash,不然下到外部会报错(Commander下载不用管)
- 第二个FlashBankInfo 也同上,测试过FLM文件也可以,stlder没有试。
最后给一个目录结构示例:
[C] 纯文本查看 复制代码 JlinkDevices
|-- Devices.xml
`-- H750xx
|-- H750xx W25Q64JV.elf
`-- STM32H750xx_2M.elf
参考链接:
SEGGER Open Flashloader 模板 - 开发环境 - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)
|