一句话概括:MDK烧录后隐性占用端口造成板端验证(Validate on target)失败,解决办法是完成烧录后关闭MDK和CubeMX进程,然后断开USB与电脑的串口连接后再重新接入,再重新打开CubeMX重新进行板端验证即可
这两天在研究如何在32上部署卷积神经网络,所以买了正点原子的f407的开发板学习,教程参考的的是
我在STM32单片机上跑神经网络算法—CUBE-AI
过程中遇到了E200(ValidationError): TARGET: Unable to bind the ST.AI runtime with "network" c-model: [] 和 E801(HwIOError): Invalid firmware – COM7:115200报错,来看一下我是怎么解决的
首先前面几部跟着教程,但原文是2023年的文章所以安装的AI扩展包版本什么的我用的是最新版,其他串口、晶振这些配置什么的全部跟教程,一直到Analyze这一步,这一步首先会因为你的中文文件路径报错,事实上CubeMX的很多功能都会因为你的路径含有中文字符或标点造成错误,这是第一个错误,如果电脑账户用户名是中文的要另外改一个英文的,以及资源包和工程文件路径等等都设置为全英文路径

资源包路径
Analyze分析结果完毕后为绿色勾表明可用,然后跟着教程生成代码,通过MDK生成固件并烧录到单片机里面去,若烧录完毕,注意这时候在Validate on target的时候可能会报E200(ValidationError): TARGET: Unable to bind the ST.AI runtime with "network" c-model: [] 和 E801(HwIOError): Invalid firmware – COM7:115200两个错误,当然,如果你进行Validate on target的时候板子没上电则报错应该是E801(HwIOError): No SERIAL COM port detected (Board is not connected!)
原文中用来测试的XCOM实际上是测试板子“发”指令,而板端测试是“收发”指令,如果XCOM和教程里面如下图所示在打开串口的时候能接收到这些东西说明“发”是没问题的,也就是代码产生的固件(烧录到板子里的东西)是没问题的

而产生这两个报错说明是“收”出了问题,也就是开发板接收电脑数据出了问题,因此才考虑到可能是某些进程占用了串口端口导致开发板接收不到电脑产生的测试数据才产生这些报错,而这里我找到两个问题:一是正点原子开发板上USART1的两个跳线帽没接,二是MDK烧录后隐形占用串口端口,所以接上跳线帽后关闭其他进程,断开USB串口再重新连接,再重新打开CubeMX进行板端验证(Validate on target)即可

接好跳线帽

板端验证(Validate on target)成功后的结果
网硕互联帮助中心




评论前必须登录!
注册