情况如下: 通过TouchGFX设计好一些界面后,可以直接通过F6(Run Target)去烧录程序到板子里面 然后在C:\TouchGFXProjects\MyApplication_3\TouchGFX\build\bin\路径下面可以找到intflash.hex和target.hex 我尝试通过STM32CubeProgrammer去把这两个hex文件download进去,但是都会报错 17:28:58 : Error: failed to download Segment[1] 17:28:58 : Error: failed to download the File 回到TouchGFX Designer里面的控制台 ST-LINK SN : 003F003B3137511333333639 ST-LINK FW : V3J7M2 Board : STM32H750B-DK Voltage : 3.27V SWD freq : 24000 KHz Connect mode: Normal Reset mode : Software reset Device ID : 0x450 Revision ID : Rev V Device name : STM32H7xx Flash size : 128 KBytes Device type : MCU Device CPU : Cortex-M7 BL Version : 0x90 Memory Programming ... Opening and parsing file: target.hex File : target.hex Size : 290.36 KB Address : 0x08000000 Erasing memory corresponding to segment 0: Erasing memory corresponding to segment 1: Erasing external memory sectors [0 1] Erasing memory corresponding to segment 2: Erasing external memory sectors [16 17] Download in Progress: 北北北北北北北北北北北北北北北北北北北北北北北北北 0% 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹 100% File download complete Time elapsed during download operation: 00:00:05.772 Hard reset is performed Done 发现它除了擦出 sgment 0 1 2 之外,还会擦出外部的特定的memory sector 所以到底intflash.hex 和 target.hex 到底是要烧录到哪里??? 再仔细看了一下TouchGFX Designer里面的控制台 Compile make -f ../gcc/Makefile -j8 Middlewares/ST/touchgfx Reading TouchGFX/application.config Video Objects: Linking TouchGFX/build/bin/target.elf Producing additional output formats... target.hex - Combined internal+external hex intflash.elf - Internal flash, elf debug intflash.hex - Internal flash, hex Done 最后写着target.hex是包含了 internal + external 的hex文件,也就是说包含了intflash.hex??? 如果我不想通过TouchGFX Designer去下载程序到板子里面,想通过STM32CubeProgrammer去下载的话,需要怎样操作呢? 请各位大神指教一下小弟,谢谢。 |
如需获得 STM32H750B 等器件的更多信息,请点击链接或 点击此处 联系在线客服!
因为用到了外部的spi flash存储素材,你需要加载外部的烧写算法才行 点左侧有 EL 的图标,按需选择就行
在网上查了一下,有帖子说要用TouchGFX Environment去make生成hex文件再烧录,但是只有一句话带过了,有人知道怎么操作吗???
make了,发现说有头文件没找到,又说有变量undefine 但是为什么TouchGFX它自己又能够编译并且通过呢。。。。
Administrator@RB46HHN5HNJHQ2F /c/TouchGFXProjects/MyApplication_3/TouchGFX/simulator/gcc $ make -j6 Reading ./application.config Compiling gui/src/screen1_screen/Screen1View.cppCompiling gui/src/model/Model.cpp Compiling generated/gui_generated/src/screen1_screen/Screen1ViewBase.cppCompiling gui/src/common/FrontendApplication.cpp Compiling generated/simulator/src/video/SoftwareMJPEGDecoder.cpp gui/src/model/Model.cpp:3:10: fatal error: main.h: No such file or directory #include "main.h" ^~~~~~~~Compiling generated/simulator/src/mainBase.cpp compilation terminated. generated/simulator/gcc/Makefile:196: recipe for target 'build/MINGW32_NT-6.2/gui/src/model/Model.o' failed make[2]: *** [build/MINGW32_NT-6.2/gui/src/model/Model.o] Error 1 make[2]: *** Waiting for unfinished jobs.... gui/src/screen1_screen/Screen1View.cpp: In member function 'virtual void Screen1View::ChangeText()': gui/src/screen1_screen/Screen1View.cpp:22:19: error: operation on '((Screen1View*)this)->Screen1View::resourceIndex' may be undefined [-Werror=sequence-point] resourceIndex = (++resourceIndex % 4); ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ cc1plus.exe: all warnings being treated as errors generated/simulator/gcc/Makefile:196: recipe for target 'build/MINGW32_NT-6.2/gui/src/screen1_screen/Screen1View.o' failed make[2]: *** [build/MINGW32_NT-6.2/gui/src/screen1_screen/Screen1View.o] Error 1 generated/simulator/gcc/Makefile:155: recipe for target 'generate_assets' failed make[1]: *** [generate_assets] Error 2 Makefile:32: recipe for target 'all' failed
因为用到了外部的spi flash存储素材,你需要加载外部的烧写算法才行 点左侧有 EL 的图标,按需选择就行 ...
谢谢大佬的回复
因为用到了外部的spi flash存储素材,你需要加载外部的烧写算法才行 点左侧有 EL 的图标,按需选择就行 ...
按照您的方法确实可以了 我发现如果用intflash.hex烧录进去的话图片是不包含的所以会有空缺,需要烧录target.hex 所以这就是说明target.hex是包含了internal和external的信息了。
应该是有部分内容要写到外部存储器了,这时就要用到外部加载算法。在CubeIDE和STM32CubeProgrammer里面一般都有针对现有ST开发板外扩存储的准备了 现存算法文件,你针对性地选择后进行烧录。 另外,这个板子按理也有现存的例程,你可以先基于现有例程跑跑,找找流程,然后再自己来会更高效些。