[信息] 实战经验 | 基于STM32N6-AI Image Classification使用git bash命令行示例

[复制链接]
742|2
STM新闻官 发表于 2025-9-28 22:33 | 显示全部楼层 |阅读模式
本帖最后由 STM新闻官 于 2025-9-28 22:57 编辑

01引言
STM32N6正式发布后,STM32N6-AI方案引起了很多客户的兴趣。STM32N6-AI例程readme中除了使用IDE外还提供了很多命令行操作,客户使用过程中有时会遇到一些小问题,本文以x-cube-n6-ai-getstarted-v1.0.0中image_classification为例,使用git-bash进行命令行实操,供客户入门参考。

02Image Classification工程简介
Image Classification工程包含在STM32N6-AI方案包中,客户可以用其作为STM32N6开发的入门工程。该工程提供了一个STM32N6嵌入式实时环境,用于执行ST Edge AI生成的图像分类模型。该工程是一个独立的工程,不做任何修改就可以直接使用,也可以在硬件上部署应用程序。用到的模型也是ST ModelZoo的一部分。
本文重点不在于模型的介绍,而是介绍如何step-by-step使用命令行操作完成整个工程的编译,调试,并烧录到STM32N6-DK板的过程。
2.1. 硬件准备

STM32N6-DK开发板(见下图1,$CR5以上)。该板需要使用USB-C转USB-C电缆连接到板载ST-LINK调试适配器CN6,以确保有足够的电压、电流。这里我们需要将板子设置为Dev模式(BOOT1切换到右侧,即BOOT1为高,BOOT0开关位置无关紧要)。
7308768d9476b8f42e.png
图 1. STM32N657-DK板

2.2. 软件准备

STM32CubeIDE(不低于STM32CubeIDE v1.17.0)安装目录:C:\Apps\STM32CubeIDE_1.17.0STM32CubeProgrammer(不低于v2.18.0)安装目录:C:\Apps\STM32CubeProgrammerSTEdgeAI(不低于v2.0.0)C:\ST\STEdgeAIGit Bash (v2.45.x.windows.x)Image Classification工程安装目录:C:\STM32N6\AI_Package\x-cube-n6-ai-getstartedv1.0.0\image_classification文中使用的是上面的安装目录为,具体参考时需要以实际安装路径为准。

03命令行操作
我们假定客户已经对工程目录及内容有了基本了解,让我们从命令行直接开始。3.1. 编译

工程目录下如果已有build文件夹,请先删除(让我们从头一步步操作)。
Step 1. 首先我们启动git bash并进入当前工程目录(目录下已经有Makefile)。
7934768d947861ee00.png
Step 2. 如果系统环境变量PATH中未添加make的路径,我们在当前git bash会话中添加其路径,客户可以根据自己的实际路径进行调整。
4693868d94791f2c45.png
Step 3. 编译整个工程
1051368d947a2f3fe0.png

等到编译完成,会生成Project.elf,下面我们就可以用其进行gdb调试了。
3.2. gdb调试

在调试前请先将Binary目录下的ai_fsbl.hex与network_data.hex烧录到DK板上。对于FSBL我们这里不多做赘述,请见工程readme等相关资料。关于gdb调试原理,也请参考相关资料,本文注重实操。
Step 1. 打开gdb server连接到STM32N6板。
如果ST-LINK_gdbserver在系统环境变量PATH中没有添加路径,则需要添加(见下面示例)。

9103668d947bd57c14.png
Step 2. 在另外一个git bash终端中加载gdb client进行调试。
8839768d947ca1a87b.png
至此,程序在STM32N6-DK板上已经运行了起来,屏幕上会有来自摄像头的视频以及图像分类模型推理的输出信息。下面介绍一些使用GDB调试常用功能,供客户参考。
3.2.1. 断点设置与管理
gdb设置断点有几种方法,可以以文件行号,函数设置,也可以添加条件断点。例子见下。在实操前先让我们熟悉一下main.c中的一段代码,如下图2。 7660068d947d743fb8.png 图2. Network_Postprocess在main.c中的示例代码
下面演示断点使用的常见命令,可以参考黄色字体部分的说明。
4329268d947e4142cc.png
删除断点的命令如下:
5795168d947f114a1f.png
3.2.2. 执行控制

软件debug时,一般需要下一步执行(next),单步执行(step in进入函数),跳出函数(执行当前函数并返回),连续执行等。具体的命令见下面示例。
316268d94800bc68f.png
3.2.3. 变量,内存,寄存器内容的查看
4890968d9481ee75d9.png


3.2.4. 监控寄存器变化
例程中(main.c)中使用了lcd,本文以LTDC寄存器查询为例,对于其它外设寄存器的查看,可以参考该方法。这里我们依据hlcd_ltdc句柄查看相关寄存器,并轮询。
2592568d94bff2fb52.png

关于数据监控,也可以使用外置python脚本实现,由于不同的gdb环境对python的支持不尽相同,也牵涉到python脚本的编写,展开内容较多,这里就不再赘述,有兴趣的客户可以自行实现。
gdb调试命令丰富,想深入的客户可以参考相应文档进行更多尝试。

04外部Flash执行
前面我们介绍了工程的git bash命令行编译与调试,对于烧录到外部flash,需要先找到STM32签名工具路径,Dev模式下复位STM32N6-DK板,命令如下。

5227368d94c10adc28.png
3531168d94c1939afa.png
7980868d94c20c78dd.png

至此,烧录完成,将STM32N6-DK板上Boot0,Boot1开关拨到外部Flash启动位置,Reset,即可在板上测试AI Image Classification模型的性能了。
05小结
本文介绍了STM32N6 AI Image Classification例程使用git bash命令行的hands-on过程,介绍了命令行中使用的基本命令。供对git bash命令行进行编译、调试、烧录感兴趣的客户参考。


 楼主| STM新闻官 发表于 2025-9-28 22:57 | 显示全部楼层
 楼主| STM新闻官 发表于 2025-9-28 22:58 | 显示全部楼层
查看更多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1385

主题

1669

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部