仅作笔记。
先搭建环境。
部署AI使用到的RUHMI下载链接:
https://codeload.github.com/renesas/ruhmi-framework-mcu/zip/refs/heads/main
下载并解压RUHMI。
RUHMI的运行依赖是python3.10,下载链接(直链):
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe
如果此前电脑上有其他版本的py,建议删干净,如果有dll残留并且用火绒解除占用后依旧会快速重新生成,那是其他软件自带的py库,可以不管它。
下载完py,安装,路径为默认路径即可,记得勾选Add to path。
安装完成后记得打开cmd验证路径是否生效(输入where python或python --version都行)。
搞定之后开始为ruhmi创建一个py虚拟环境用以安装各种依赖。
打开解压后的ruhmi文件,在包含有这些东西那一层按shift+鼠标右键,打开此页面的powershell

在powershell输入python.exe的绝对路径+ -m venv .venv
例如: C:\Users\XXX\AppData\Local\Programs\Python\Python310\python.exe -m venv .venv
(当然也可以直接输入py -3.10 -m venv .venv ,前提是你的py是和RUHMI放同一路径下的)
短暂加载后跳出下一行说明虚拟环境创建完成了,输入.\.venv\Scripts\activate以打开虚拟环境:

接下来安装mera。
打开RUHMI包里面的install,例如D:\RUHMI\ruhmi-framework-mcu-main\ruhmi-framework-mcu-main\install
找到一个mera开头的whl文件,里面可能有两个长得很像的mera,注意找这个后缀的

复制这个包名,在虚拟py下输入python -m pip install .\install\+包名.whl 例如
python -m pip install .\install\mera-2.6.0+pkg.4513-cp310-cp310-win_amd64.whl
回车,就开始下载了

这样就算装好了

接下来装onnx和tflite,输入python -m pip install onnx==1.17.0 tflite==2.18.0 ,回车,
显示successfully就算装好了

然后激活一下依赖,输入.\.venv\Scripts\activate ,再输入查看版本命令验证是否可以正常使用(出现版本号就是正常的)

验证一下mera是否安装成功,输入python -c "import mera;print(dir(mera))" ,回车,长这样就是成功了

要使用e2studio的AI navigator来调用RUHMI还要手动配置RUHMI的环境变量,在系统搜索栏搜索“环境变量”,打开,在用户变量下新建一个变量,

名称为CONVERSION_TOOL_E2STUDIO_PLUGIN_PYTHON_VENV_LOC ,路径为你存放RUHMI的路径,例如D:\RUHMI\ruhmi-framework-mcu-main\ruhmi-framework-mcu-main

最后别忘了点击两个“确定”来确认更新系统变量。
添加环境变量也可以用命令行的方式,此处不多赘述。
到此可以正式开始创建工程了。
首先创建一个工程(进入e2studio,左上角 文件->新建->瑞萨C/C++项目->Renesas RA)

选C/C++ Project

project name,填一下工程的名字

下一步选择设备

本文以R7KA8P1KFLCAC为例

我们使用的工具链是GNU,调试器是J-Link

暂时不用trustzone


不用RTOS


最后点击“完成”即可创建。
边缘AI的运行对于NCU来说有两个基本要求,一个是性能,一个是内存,因此要给堆和cache预留足够多的空间。

把这两个打成enable

设置一下栈


运行一下保存设定

等右下角的进度条消失了就是保存好了

添加新的栈(Stacks->New Stack)


这里要长按这Add CMSIS-NN Kernal

然后点击生成,编译软件就可以自动为我们生成NPU的代码包了

接着开始模型转换工作(通过AI NAVIGATOR调用RUHMI转换模型)
菜单栏点Renesas AI,选择AI Navi,

然后到了这个页面,你可以选择官方给的例程模型,也可以选择自己训练好的模型,本文以后者为例

选择你想要部署AI的工程(本文以该工程为例):

导入你的AI模型文件

有弹窗,点击确定

选中你训练好的模型

会跳转到这里,再确认一遍要部署该AI的工程以及AI模型

没问题了来激活转换工具

接下来的这些配置会给该模型创建一个新的虚拟环境

(特别说明:
1、Tools那里,如果选择了RUHMI却显示Not Installed,可以看我另一篇文章进行解决e2studio的AI Navi无法识别到RUHMI解决办法(Not Installed)-优快云博客;
2、Input model file那里选择的是你要输入的AI模型,这里直接打开Browse

可以发现软件已经自动帮我们把模型的文件添加到这个工程的目录下了,直接添加

)
这一步搞定后大概是这样的

搞定后Next,量化模型。
由于作者用的是已经提前量化好了的模型,这里无需量化了,所以直接下一步(这个页面不知道为什么不支持滚轮翻页,直接用右边这个翻页拉杆拉到下面,就可以看到Next了)
然后开始转换,在此之前先再次确认你的转换模式(如果是打算部署在NPU上面最好用和作者一样的选项)
没问题了点击下面的Start Conversion开始转换,模型小的话等待几秒钟,控制台输出success to execute the command就说明转换完成了(其中还有一些关于模型的信息,可以参考下面的解释)
然后在项目资源管理器的项目的目录下就能找到转换后的AI的C语言模型
我们把这整个src文件夹内的东西全都剪切/复制,然后粘贴到工程的根目录下



那么关于这个模型的处理(输入数据的量化、模型输出数据的反量化)都可以在这个文件完成

完成后编译一下,没报错就是正常的,接下来添加一些组件方便我们实时查看模型运行状态和输出。
本文使用的是SEGGER_RTT,组件源码下载链接GitHub - SEGGERMicro/RTT: SEGGER RTT Sources · GitHub
把含有这几个文档的文件夹复制粘贴到src目录下

然后插上板子,编译并烧录,完成之后,打开事先下载好的JLinkRTTViewer.exe(这个是整个JLink包里面携带有的),如下配置即可

关于3这个地址,可以打开Debug目录下的.map文档(没有报错,正常编译后才会有的)并搜索_SEGGER_RTT的关键字来查到

右键这个文档,选择文本编辑器的方式打开

然后在文档窗口ctrl+f打开搜索框

搜索_SEGGER_RTT,这个就是我们要的地址,复制上去就好了

这样就是已经连接好了,模型的运行效果状态和输出都可以在这个窗口看到了

类似这样

727



被折叠的 条评论
为什么被折叠?



