ST意法半导体
直播中

李玲

8年用户 1314经验值
私信 关注
[问答]

STM32MP135 Nor Flash启动,MX25L51245G_STM32MP135C-CUSTOM_HW_A7.bin如何修改?

在官方例程中:STM32Cube_FW_MP13_V1.1.0ProjectsSTM32MP13XX_CUSTOM_HWExternal_LoaderSNOR_Ext_Loader下的MX25L51245G_STM32MP135C-CUSTOM_HW_A7.bin文件源码有人知道在哪么,该如何修改,我把Nor Flash的型号换了下,换成MT25QL02GCBB芯片,在启动流程这一步,不知道怎么修改这个bin文件了,是不是通过STM32MP13XX_CUSTOM_HWApplicationsXSPI_NOR_Programmer这个项目生成的?有人了解的话,十分感谢!

回帖(2)

潘晓明

2025-3-14 14:50:26
在STM32MP13XX_CUSTOM_HW项目的外部存储器(如NOR Flash)的启动流程中,通常需要一个引导程序(bootloader)来初始化系统并加载主程序。这个引导程序可能会被烧录到NOR Flash中,并且可能以二进制文件(.bin)的形式提供。
MX25L51245G_STM32MP135C-CUSTOM_HW_A7.bin文件是一个特定于STM32MP135C-CUSTOM_HW板和MX25L51245G NOR Flash的引导程序二进制文件。如果你更换了NOR Flash型号为MT25QL02GCBB,可能需要重新生成这个二进制文件,以确保新的Flash芯片能够被正确识别和使用。
举报

郭大

2025-3-20 18:09:16

针对你提到的STM32MP135更换Nor Flash型号(MX25L51245G → MT25QL02GCBB)后需要修改外部加载器的问题,以下是详细的解决方案:




1. 理解外部加载器(External Loader)的作用



  • External Loader 是STM32CubeProgrammer或U-Boot在启动时用来初始化外部存储器的二进制文件。它包含SPI控制器配置、Flash芯片指令集、时序参数等。

  • 你提到的 MX25L51245G_STM32MP135C-CUSTOM_HW_A7.bin 是专为MX25L51245G生成的,必须根据新Flash型号(MT25QL02GCBB)重新适配。




2. 源码位置与修改步骤


2.1 定位源码



  • External Loader源码路径
    STM32Cube_FW_MP13_V1.1.0/Projects/STM32MP13XX_CUSTOM_HW/External_Loader/SNOR_Ext_Loader/

    在该目录下,通常会有以下关键文件:



    • Inc/main.h:包含Flash芯片参数(容量、页大小、擦除块大小等)。

    • Src/flash_*.c:Flash操作函数(擦除、写入、读取等)。

    • Src/main.c:SPI/QSPI控制器初始化代码。



2.2 修改关键参数


根据MT25QL02GCBB的数据手册调整以下参数:




  • Flash容量与地址模式


    // MX25L51245G: 64MB (24-bit地址)
    #define FLASH_SIZE       0x4000000    // MT25QL02GCBB需改为256MB (32-bit地址)
    #define ADDRESS_MODE     ADDRESS_32BIT // 可能需要启用4字节地址模式



  • 指令集调整


    // MX25L51245G的典型指令(参考原代码)
    #define WRITE_ENABLE_CMD  0x06
    #define READ_CMD          0x03        // MT25QL可能需要0x6B(Fast Read Quad I/O)
    #define PAGE_PROG_CMD     0x02        // MT25QL可能需要0x32(Quad Input Page Program)
    #define SECTOR_ERASE_CMD  0x20        // MT25QL可能需要0xDC(4KB擦除)



  • SPI/QSPI控制器配置


    // 修改时钟频率(MT25QL支持更高频率)
    hqspi.Init.ClockPrescaler = 2;  // 原值可能是4或更高,需根据Flash规格调整



  • 厂商ID检测


    // 原代码可能通过读取JEDEC ID识别Flash
    if (jedec_id != MX25L51245G_ID) { /* 错误处理 */ }
    // 需改为MT25QL02GCBB的JEDEC ID(参考数据手册)
    #define MT25QL02GCBB_JEDEC_ID  0xBA20  // 示例值,需确认实际值



2.3 重新编译生成新Loader




  • 使用STM32CubeIDE



    1. 导入 SNOR_Ext_Loader 项目。

    2. 修改代码后,编译生成新的 .bin 文件。

    3. 输出文件位于 Debug/Release/ 目录。




  • 命令行编译(如果支持Makefile):


    cd SNOR_Ext_Loader
    make clean && make





3. 使用XSPI_NOR_Programmer烧录验证



  • XSPI_NOR_Programmer的作用:用于将新的外部加载器(.bin)烧录到开发板。

  • 烧录步骤

    1. 将生成的 MT25QL02GCBB_STM32MP135C-CUSTOM_HW_A7.bin 替换原文件。

    2. 通过ST-Link连接开发板,运行 XSPI_NOR_Programmer 项目。

    3. 使用STM32CubeProgrammer加载新Loader并测试Flash读写。





4. 验证与调试



  • 关键检查点

    • JEDEC ID识别:确保新Loader能正确读取MT25QL的ID。

    • 擦除/写入时序:测试4KB扇区擦除和页写入是否成功。

    • 启动流程:通过UART调试输出确认是否成功从新Flash启动。





5. 参考资源



  • MT25QL02GCBB数据手册:查找时序图、指令集和电气参数。

  • ST应用笔记AN5361:详细说明如何开发External Loader。

  • STM32CubeMP1示例代码:参考 Drivers/BSP/Components/mt25ql512abb 中的驱动实现。




通过以上步骤,你可以为MT25QL02GCBB生成适配的外部加载器,确保STM32MP135正常启动。如果遇到编译错误或硬件不响应,建议逐步调试SPI通信,并确认硬件连接(如CS引脚、QSPI DQS信号等)。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分