在上一次修改了GPIO例程后,也验证了调试运行是没问题的。固化程序首先要有编译后的程序文件,其次需要运行在DDR中。所以以LTDC_Display_2Layers_A为例制作量产卡。在工程内的STM32CubeIDE文件夹下的Debug目录内,找到了目标程序文件如下,这里也有调试用的elf文件和程序map文件。 从SD卡加载程序需要做一些工作,首先要有以下文件 以上文件可以简化理解为分区描述,引导程序、用户程序、SD卡驱动和ST串行接口驱动。固化程序就是烧录一个可以给CPU使用的SD启动卡,只不过是运行裸机程序,不是加载Linux系统。接下来使用CubeProgrammer来制作SD卡, 依然是要通过开发板对其操作。 & a; e5 a* z5 X6 c+ s. x5 G9 \开发板要把boot配置到编程模式,和USB DFU一样,不过这次使用串口连接。 然后使用上位机连接到开发板,能读取到一些CPU的信息和内置BL版本。下图就可以看到已经和内部BL通信成功。 打开分区描述文件后如下 选择到SD卡驱动的文件目录,然后就点击下载按钮等待完成 以上就完成了烧录,可以切换BOOT开关运行程序。但以上是默认的测试程序,执行后串口打印如下 需要替换用户程序,而用户程序需要自己制作,就是添加header的bin文件。 怎么制作,看下面过程,,, : t5 e) I. {+ `2 X9 N从文档总结出来就是可以通过添加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的例子,主要是替换外部存储设备的驱动文件。 |
【NUCLEO-C0评测】硬件OLED显示
STM32开发板推荐 | 支持裸跑的米尔STM32MP135开发板,响应硬实时需求
[NUCLEO-C031C6评测] 驱动LCD 第三步 显示颜色块
【STM32C0评测】4、驱动Lorasx126x,实现透传
[NUCLEO-C031C6评测] 驱动LCD 第二步 初始化屏幕
[NUCLEO-C031C6评测] 驱动LCD第一步
【STM32C0评测】3、串口BUG修正,PWM呼吸灯
【STM32C0评测】2、工程建立,点灯,按键,串口使用
【STM32C031 评测】I2C 接口读取KX224传感器数据
【STM32C031评测】挂载液晶显示
现在我用其他开发板,使用SD卡烧录,屏幕没有显示。估计是DDR没有跑起来