经过10几个小时的找资料、实验,终于搞通了NUCLEO-H7S3L8-ND开发板的程序下载。
NUCLEO-H7S3L8-ND开发板使用的是STM32J7S3L8单片机。该单片机是一款工作主频达到600MHz的单片机,性能强悍。刚把这块开发板拿到手的时候,我也没有多想,按照以往其他STM32开发板的操作习惯,在CubeMX中下载相关的SDK、例程库,然后打开CubeIDE,导入一个示例工程(最常用的是GPIO_TOGGLE,就是著名的点灯程序),编译、下载、运行。
然后这个习惯在NUCLEO-H7S3L8-ND开发板上栽了跟头。经查资料才知,这个系列的单片机的Flash不大,像STM32J7S3L8只有64K的Flash,在烧录程序时,这个Flash里只保存必要的BOOT用代码,用户实际的APP代码是保存在外部Flash中的。这样的话,烧录程序时,需要做一些特别的工作。至于正确的操作流程,我还没总结出来,官方的英文资料我又懒得看,实际看是不喜欢看,也不想费时间翻译。一下是我搞通烧录的整个操作过程,仅供参考。
1、首先使用CUbeMX中下载的STM32H7RS代码仓库中的Template_XIP例程,生成BOOT程序。
2、在配置RUN/Debug配置中,指定外部Flash用的stldr文件。对于NUCLEO-H7S3L8-ND开发板,选择MX2UW25645G_NUCLEO-H7S3L8.stldr

3、在Starup选项中,在正常APP的斌文件后追加boot用的BIN文件。

一定要注意前后顺序。
4、按照这个设置,运行程序。完成烧录。到了这一步,我感觉boot和app应该是完成了烧录到开饭的处理。但还不够,还需要使用CubeProgrammer修改一个选项,我觉得这一步实际上是在程序运行阶段打开外部Flash的访问通道,使外部程序能执行起来。这个理解不一定对。
在这一步中,需要CubeProgramme通过板载的stlink连接上开发板。之后找到UserConfiguration1中的XSPI2_HSLV选项。

勾选这个选项后,点击“Apply”,使之生效。
接下来,点击开发板的复位按钮,你就应该能看到你的程序运行起来了。
经过了这些操作以后,后面你再编写其他APP程序的时候,就不需要在重新烧录boot的那部分处理了,只需正常烧录你的APP程序到外部Flash即可,也就是说,不需要执行第三步的操作了。不过,这个推论我也是简单用GPIO_TOGGLE工程验证了,是否有普适性,没有做进一步验证。
我要赚赏金
