ST意法半导体
直播中

吴湛

11年用户 807经验值
擅长:可编程逻辑
私信 关注
[问答]

请问STM32N657如何使用官方提供的model zoo services中的HEX文件?

调试中遇到一个问题,希望各位专家解惑。


请问上述问题如何解决?或者如何可以正常的加载model zoo service中的AI应用程序?
感谢!

回帖(1)

china

2025-6-20 17:40:43

如何正确使用STM32N657的Model Zoo Services中的HEX文件


在使用STM32官方提供的Model Zoo Services时,若遇到加载HEX文件或部署AI应用的问题,请按以下步骤排查和解决:




1. 确认开发环境兼容性



  • STM32CubeMX版本:确保使用 最新版本的STM32CubeMX(≥6.8.0),旧版本可能不支持N6系列。

  • X-CUBE-AI扩展包:安装与STM32N6兼容的版本(如≥7.3.0)。在CubeMX中通过Help > Manage Embedded Software Packages安装。

  • IDE支持:使用STM32CubeIDE(≥1.12.0)或IAR/Keil的最新版本。




2. HEX文件的正确加载步骤


(1) 获取HEX文件



  • ST Model Zoo官网下载与STM32N657兼容的HEX文件(确认文件名包含N6STM32N657)。

  • 示例路径:X-CUBE-AI/model_zoo/<模型名>/Applications//Binary/STM32N6XX/


(2) 烧录HEX文件


使用 STM32CubeProgrammer 烧录:


   STM32_Programmer_CLI -c port=SWD -d .hex -s


  • 关键参数

    • port=SWD:根据调试器选择(SWD/JTAG)。

    • -s:烧录后自动启动。



(3) 调试常见问题



  • 报错"Invalid HEX file"

    • 重新下载HEX文件(网络传输可能损坏文件)。

    • 检查HEX文件是否匹配STM32N657的Flash地址(起始地址0x08000000)。


  • 程序未运行

    • 确认Boot0引脚拉低(从Flash启动)。

    • 检查时钟配置:HEX文件可能依赖特定HSE频率(如25MHz),调整开发板晶振或修改时钟树。





3. 从零构建AI应用的方法


若直接加载HEX失败,建议重新生成代码:


(1) 在CubeMX中创建工程



  • 选择MCU:STM32N657xx

  • 配置时钟树、外设(如UART用于调试输出)。


(2) 集成X-CUBE-AI



  • Software Packs中启用X-CUBE-AI

  • 选择Model Zoo中的模型(如resnet50),设置输入/输出缓冲区地址。

  • 生成代码:Project > Generate Code


(3) 添加应用逻辑




  • main.c中初始化AI并运行推理:


     #include "ai_datatypes_defines.h"
    AI_ALIGNED(4) static uint8_t input_buffer[AI_RESNET50_INPUT_SIZE];
    AI_ALIGNED(4) static uint8_t output_buffer[AI_RESNET50_OUTPUT_SIZE];

    int main(void) {
       MX_X_CUBE_AI_Init(); // 初始化AI
       while (1) {
         // 填充input_buffer(例如从传感器读取)
         ai_run(input_buffer, output_buffer); // 执行推理
         // 处理output_buffer结果
       }
    }


  • 参数对齐:使用AI_ALIGNED确保数据地址对齐(避免HardFault)。


(4) 编译与烧录



  • 在STM32CubeIDE中编译,自动生成HEX文件。

  • 烧录后通过UART输出调试信息:
     printf("AI Inference Time: %d msn", ai_execution_time);




4. 高频问题解决方案


Q1: 模型推理结果异常



  • 数据预处理:确认输入数据格式(RGB888 vs. BGR)和缩放是否匹配模型要求。

  • 量化配置:若使用8位量化模型,需在CubeMX中启用INT8后重新生成代码。


Q2: 内存不足错误



  • STM32N657的Flash/RAM有限(典型配置:512KB Flash, 128KB RAM)。

  • 优化策略

    • 在CubeMX中减少输入分辨率(如224x224→128x128)。

    • 启用AI轻量库:AI_HAL > Optimized Lib > Low Latency



Q3: HardFault或总线错误



  • 栈溢出:在startup_stm32n657xx.s中增加栈大小:
     Stack_Size EQU 0x2000 ; 原值加倍

  • 数据对齐:检查缓冲区地址是否为4字节对齐(使用AI_ALIGNED(4))。




5. 官方资源



通过以上步骤,可解决大多数HEX文件加载和AI应用部署问题。如遇硬件兼容性问题(如非官方开发板),建议检查原理图或联系ST技术支持。

举报

更多回帖

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