本帖最后由 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开关位置无关紧要)。
图 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)。
Step 2. 如果系统环境变量PATH中未添加make的路径,我们在当前git bash会话中添加其路径,客户可以根据自己的实际路径进行调整。
Step 3. 编译整个工程
等到编译完成,会生成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中没有添加路径,则需要添加(见下面示例)。
Step 2. 在另外一个git bash终端中加载gdb client进行调试。
至此,程序在STM32N6-DK板上已经运行了起来,屏幕上会有来自摄像头的视频以及图像分类模型推理的输出信息。下面介绍一些使用GDB调试常用功能,供客户参考。
3.2.1. 断点设置与管理
gdb设置断点有几种方法,可以以文件行号,函数设置,也可以添加条件断点。例子见下。在实操前先让我们熟悉一下main.c中的一段代码,如下图2。
图2. Network_Postprocess在main.c中的示例代码
下面演示断点使用的常见命令,可以参考黄色字体部分的说明。 删除断点的命令如下: 3.2.2. 执行控制
软件debug时,一般需要下一步执行(next),单步执行(step in进入函数),跳出函数(执行当前函数并返回),连续执行等。具体的命令见下面示例。 3.2.3. 变量,内存,寄存器内容的查看
3.2.4. 监控寄存器变化
例程中(main.c)中使用了lcd,本文以LTDC寄存器查询为例,对于其它外设寄存器的查看,可以参考该方法。这里我们依据hlcd_ltdc句柄查看相关寄存器,并轮询。
关于数据监控,也可以使用外置python脚本实现,由于不同的gdb环境对python的支持不尽相同,也牵涉到python脚本的编写,展开内容较多,这里就不再赘述,有兴趣的客户可以自行实现。
gdb调试命令丰富,想深入的客户可以参考相应文档进行更多尝试。
04外部Flash执行
前面我们介绍了工程的git bash命令行编译与调试,对于烧录到外部flash,需要先找到STM32签名工具路径,Dev模式下复位STM32N6-DK板,命令如下。
至此,烧录完成,将STM32N6-DK板上Boot0,Boot1开关拨到外部Flash启动位置,Reset,即可在板上测试AI Image Classification模型的性能了。
05小结
本文介绍了STM32N6 AI Image Classification例程使用git bash命令行的hands-on过程,介绍了命令行中使用的基本命令。供对git bash命令行进行编译、调试、烧录感兴趣的客户参考。
|