
在上一次修改了GPIO例程后,也验证了调试运行是没问题的。固化程序首先要有编译后的程序文件,其次需要运行在DDR中。所以以LTDC_Display_2Layers_A为例制作量产卡。在工程内的STM32CubeIDE文件夹下的Debug目录内,找到了目标程序文件如下,这里也有调试用的elf文件和程序map文件。 ![]() 从SD卡加载程序需要做一些工作,首先要有以下文件 ![]() 以上文件可以简化理解为分区描述,引导程序、用户程序、SD卡驱动和ST串行接口驱动。固化程序就是烧录一个可以给CPU使用的SD启动卡,只不过是运行裸机程序,不是加载Linux系统。接下来使用CubeProgrammer来制作SD卡, 依然是要通过开发板对其操作。 开发板要把boot配置到编程模式,和USB DFU一样,不过这次使用串口连接。 ![]() 然后使用上位机连接到开发板,能读取到一些CPU的信息和内置BL版本。下图就可以看到已经和内部BL通信成功。 ![]() 打开分区描述文件后如下 ![]() 选择到SD卡驱动的文件目录,然后就点击下载按钮等待完成 ![]() 以上就完成了烧录,可以切换BOOT开关运行程序。但以上是默认的测试程序,执行后串口打印如下 ![]() 需要替换用户程序,而用户程序需要自己制作,就是添加header的bin文件。 ![]() 怎么制作,看下面过程,,, $ G5 v7 c y* n" J8 @) H( C. w从文档总结出来就是可以通过添加IDE的编译后脚本,也可以使用CubeProgrammer的签名工具。我试验后发现,直接使用Utilities文件夹中的可执行程序最为简单。因为给IDE配置编译后执行的脚本也是调用的这个可执行文件,不修改postbuild文件的情况下,手动运行下exe也能达到目的。如下,给Stm32ImageAddHeader.exe这个程序输入文件和输出文件的路径就可以了。 ![]() 然后烧录的时候需要注意,修改下TSV文件中用户APP的名字 ![]() 按照烧录的方法连接到bootloader通过串口写入文件到SD卡就行了。完成后BOOT调整到SD卡启动方式,就可以看到屏幕还是之前的双图层移动画面了。断电后再次上电直接就运行了。 ![]() 其实看这个问题好几天了,卡在烧录不成功。明明CubeProgrammer提示成功,SD卡就是没有任何东西,也想过SD卡格式话问题,试了FAT也不行。终于在今天从ST官方论坛找到了答案 这个人的SD卡格式化为GDB,这个我不懂,但是我知道我的卡原来是GUID分区,改成了MBR分区表就可以了。说到底还是兼容性问题。这里的详细区别我也去整太清楚。提供的经验就是SD卡要格式化为FAT文件系统,转为MBR分区表。 ![]() 以上就是STM32MP135的裸机代码量产方式,当然,SD卡只是一种介质。还可以选择NOR FLASH或者EMMC等,大致的思路是一样的。在STM32MP13XX_CUSTOM_HW文件内就提供了烧录到FLASH的例子,主要是替换外部存储设备的驱动文件。 1 C+ ?0 ~$ z, Mz9 j- a l) _/ D) S |
【STM32N6570-DK评测】7.探索STM32 ISP IQTune
【STM32N6570-DK评测】1.你好N6
【STM32N6570-DK评测】摄像头video encoder
【STM32N6570-DK评测】开发环境及LED debug
拷打cubemx【001】——艰难的选型路
【STM32N6570-DK评测】4.800MHz的点灯
【STM32N6570-DK评测】2.最简点灯
【STM32N6570-DK评测】3.从外部flash启动
linux eclipse编译后自动更新程序
eclipse编写stm32mp135配置
* @1 s' g% r. \! N* R( }: y7 d, r
现在我用其他开发板,使用SD卡烧录,屏幕没有显示。估计是DDR没有跑起来