唤醒程序在多平台的运行调试总结
唤醒的本质在于关键字识别(keyword spotting),即kws。我们的工作基于GitHub上的kws开源项目。
首先进入网址https://github.com/ARM-software/ML-KWS-for-MCU/tree/master/Deployment,上面给出了在基于arm的开发板上运行kws的详细指导及源码,进入example目录可以看到,源码分为两个例程,分别为simple_test和realtime_test,二者都是kws程序,区别在于在第一个程序中,KWS是在通过.h文件提供的音频数据上运行的;后一个程序则是实时kws。
工作的第一步:编译
程序使用mbed进行编译,什么是mbed?
简而言之,mbed就是一个开发平台,一个面向ARM处理器的原型开发平台,它具体包括免费的软件库(SDK),硬件参考设计(HDK)和在线工具(Web)三部分内容,各个部分的具体介绍如下:
SDK:mbed设计了一个硬件抽象层,从而屏蔽了不同mcu厂商提供了微处理之间的差异,对于用户来说,他只需要和这个硬件抽象层打交道即可,也就是说,用户基于mbed开发的应用可以很方便地更换使用不同厂商的arm微处理器,从而留给用户更多的选择。
HDK:HDK是mbed提供的硬件参考设计,它是面向用户开发设计的,所以HDK提供了统一了程序上载接口,单步调试接口,串口调试接口,用户无需购买其它硬件就可以开始软件开发工作。
WEB:为了省去用户开发环境安装的麻烦,mbed提供了一个完备的基于浏览器的微处理器软件开发环境,包括代码编写,程序编译,版本控制等功能,用户只要上网就可以开发,编译结果只要下载保存到mbed开发板上即可工作,非常方便。
对于没接触过mbed的同学来说,听了这些,依然困惑,但是我们隐约感到,就和我们写java前需要安装jdk和eclipse,写C语言需要安装vcc一样,反正看样子想干什么总得先整个环境出来,来谁的地盘就得遵守谁的规则。同样的,使用mbed也得先安装相关环境,so,怎么装?装什么?
进入网址https://github.com/ARMmbed/mbed-cli,上面的第一个短视频就是安装教程。如果不想看视频,也可以登录mbed官网,一样有指导,走一遍:
1:点开get started

2:tutorials

3:next

4:mbed提供两种编译方式,在线和离线,选择离线方式

5: ARM mbedCLI的安装过程取决于您的操作系统。请选择您的主机操作系统。每个操作系统的安装说明将引导您了解如何在本地安装mbedCLI。选择windows

依次下载安装Mbed CLI,Python, Pip,GNU Arm Embedded version 6,另需安装两款版本管理工具git和mercurial即可,至此环境搭建完成。
下面编译过程:
1:下载github上的工程;
2:进入网址https://github.com/ARM-software/CMSIS_5.git下载CMSIS-5库;
什么是cmsis库呢?
ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。
软件的创建是嵌入式产品行业的一个主要成本因素。通过跨所有 Cortex-M 芯片供应商产品将软件接口标准化(尤其是在创建新项目或将现有软件迁移到新设备时),可以大大降低成本。
我们知道,不同厂家,比如FSL,ST,Energy Micro等不同厂家的内核都是使用Cortex M,但是这些MCU的外设却大相径庭,外设的设计、接口、寄存器等都不一样,因此,一个能够非常熟练使用STM32软件编程的工程师很难快速地上手开发一款他不熟悉的,尽管是Cortex M内核的芯片。而CMSIS的目的是让不同厂家的Cortex M的MCU至少在内核层次上能够做到一定的一致性,提高软件移植的效率。
CMSIS的结构,CMSIS 包含以下组件:
CMSIS-CORE:提供与 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 处理器与外围寄存器之间的接口
CMSIS-DSP:包含以定点(分数 q7、q15、q31)和单精度浮点(32 位)实现的 60 多种函数的 DSP 库
CMSIS-RTOS API:用于线程控制、资源和时间管理的实时操作系统的标准化编程接口
CMSIS-SVD:包含完整微控制器系统(包括外设)的程序员视图的系统视图描述 XML 文件
简言之,cmsis屏蔽底层硬件,开发者只需要指定具体开发板型号即可。
3:运行命令mbed deploy,此命令进行mbed部署,下载工程需要的mbed库,如果本地已经有了mbed文件包,略过此步;
4:运行形如mbed compile -m NUCLEO_F411RE -t GCC_ARM –source . \
–source ../Source/KWS –source ../Source/NN –source ../Source/MFCC \
–source ../Source/local_NN –source ../Examples/simple_test \
–source ../CMSIS_5/CMSIS/NN/Include –source ../CMSIS_5/CMSIS/NN/Source \
–source ../CMSIS_5/CMSIS/DSP/Include –source ../CMSIS_5/CMSIS/DSP/Source \
–source ../CMSIS_5/CMSIS/Core/Include \
-c -v
的命令,mbed compile为编译命令,-m指定开发板型号,如后续的rda芯片对应的板子型号为UNO_91H,-t指定编译器,我们使用的为arm编译器GCC_ARM,–source指定需要编译的目录,如–source ../Source/KWS即指定编译上层目录的Source文件夹下的KWS文件夹,其余类同,-c意为编译前擦除以前编译痕迹(我们知道,每次编译都会生成个BUILD文件夹),-v意为编译时显示详细信息。
至此编译完成。
在rda上实现唤醒程序:
由于之前曾使用mbed编译rda程序,因此适用于rda的mbed os可以拿来使用。
1:新建文件夹,拷贝mbed os到此目录下:
2:拷贝Source文件夹;
此文件夹中包含MFCC,KWS,NN等,是唤醒的具体实现函数,mfcc特征提取,kws推断等等,至关重要
3:拷贝CMSIS-5文件夹;
虽然mbed os中已有cmsis文件夹,但此程序需要用到CMSIS-5中的部分文件mbed os中没有,且二者目录结构不同整合可能繁琐,于是二者都保留
4: 拷贝唤醒主程序到此目录下;
5:运行编译命令(类似这样,source参数后的目录视具体情况而定)
mbed compile -t ARM -m UNO_91H –source simple_test –source Source/KWS –source Source/NN –source Source/MFCC –source Source/local_NN –source CMSIS_5/CMSIS/NN/Include –source CMSIS_5/CMSIS/NN/Source –source CMSIS_5/CMSIS/DSP/Include –source CMSIS_5/CMSIS/DSP/Source –source CMSIS_5/CMSIS/Core/Include –source mbed-os -DRDA_SMART_CONFIG -c -v
即可
6:将编译后的.bin文件下载到rda板子上即可运行
使用与rda配套的下载软件flashtest下载,下载前需要用别针捅一下板上的孔reset方可,而后通过串口调试助手就可以看到程序运行结果,实时唤醒也可以将唤醒结果打印到串口显示。
以上为在rda上编译运行唤醒程序的全过程。
当然难点在于正确编译,编译过程中会遇到各种error,笔者就曾经遇到,大多是由于移植产生的文件或者函数冲突,由于此文档为事后撰写,调试过程中的具体问题难以重现,见谅!
在stm32f7上实现唤醒程序
选用板子型号为DISCO_F746NG,编译过程如前所述,也可参考github上的指导

在efm32上运行唤醒程序
我们知道,支持mbed的开发板有多种,EFM32GG_STK3700就是其一,EFM32GG_STK3700基于EFM32GG990F1024芯片,cotex—m3内核,我们的板子使用的是EFM32GG330F1024芯片,使用mbed编译时目标板型号最相近只能选择EFM32GG_STK370,

在RDA上使用mbed编译运行KWS相关推荐

  1. vscode修改c 项目_windows 10上使用vscode编译运行和调试C/C++

    更新于2020/6/30 不值得观看的v1.x版本链接:链接 请不要转载,欢迎点赞,收藏,分享 主要讲如何在vscode上实现编译/运行/调试C以及C++,如果是初学者,就请完全按照文章的步骤进行,如 ...

  2. 怎么让termux运行Java_在安卓手机上通过 Termux 运行编译/运行 .NET 应用

    V2 上玩 Termux 的大佬挺多的,但是没有关于 .NET 的, 我来发一篇吧. Termux 简介 Termux 可谓安卓上的开发神器, 注意, 不是开发安卓应用, 是在安卓手机上做开发的神器, ...

  3. 在Win10系统上使用VScode + Cmake配置C/C++开发环境,实现一键编译运行

    1.前言 前几天在公司的Ubuntu20.04电脑上配置了VSCode + Cmake的C/C++开发环境,可以用来跑跑C/C++的代码,然后,现在住的地方用的Windows,开发环境用的是 Visu ...

  4. 使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行

    标题使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行 1.在电脑桌面使用快捷键win+r打开 2.打开cmd命令界面之后使用md d ...

  5. ACE6.2.0在vs2010上编译运行(win7)

    官网下载源码 vs2010打开解决方案 VC10.sln 选择ace点生成 dubug版和release版 使用时注意: debug版的应用程序使用dubug版的ace库 release版的使用rel ...

  6. Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)

    之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...

  7. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  8. 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能

    以往的Android开发有一个头疼的且拖慢速度的问题,就是你每改一行代码要想看到结果必须要编译运行到手机或者模拟器上,而且需要从头(可能是登录界面)一直点击到你修改的界面为止.开发一个完整的Andro ...

  9. 【Android 插件化】VirtualAppEx 编译运行 ( VirtualAppEx 简介 | 配置 VirtualAppEx 编译环境 | 编译运行 VirtualAppEx 代码 )

    文章目录 一.VirtualAppEx 简介 二.配置 VirtualAppEx 编译环境 1.Android Studio 3.0 2.NDK 版本 ( Android NDK r10e ) 3.配 ...

最新文章

  1. 页面上一些小icon的制作方法及技术选择
  2. junit jumpstart
  3. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试
  4. my batis plus 小数没有0_大黄蜂3号Plus,妈咪保贝的强劲对手!
  5. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法
  6. 百度再显管理变革决心 副总裁郑子斌离职
  7. python上传钉钉媒体文件_钉钉媒体文件上传
  8. MySQL常用数据字典表设计
  9. 免费注册 上传html,一些可以免费上传文件的网站
  10. Golang开发环境LiteIDE的设置
  11. 刚入职的程序员小白你该如何提升自己?(新手看)
  12. Agens Graph常用语法总结
  13. b2b2c电商平台系统
  14. 计算机论文怎样投稿sci,计算机集成论文怎么投稿sci期刊
  15. Oracle备份与恢复
  16. mqtt协议之Apache Apollo 安装和配置
  17. 聊聊高效的与第三方合作方沟通的一些技巧
  18. 云付注册推荐人怎么填?云付新手怎么操作
  19. java 仿百度文库源码_java开发_模仿百度文库_OpenOffice2PDF_源码下载
  20. h5游戏接入googleplay时遇到的问题总结

热门文章

  1. 【Tyvj3500】【BZOJ1031】字符加密,后缀数组
  2. 电脑小写字母怎么切换_苹果电脑双系统如何切换?苹果电脑双系统切换方法
  3. bzoj3192 [JLOI2013]删除物品 树状数组
  4. [SDOI2007] 单词接龙游戏 dp
  5. 2017.3.15 余数之和sum 失败总结
  6. 【英语学习】【WOTD】trivial 释义/词源/示例
  7. python为什么没有指针_Python中有指针吗?
  8. python 勒索病毒 源码_python生成的exe被360识别为勒索病毒原因及解决方法
  9. tomcat加上了https后访问不了_西部数码使用指南:部署https后访问提示存在安全隐患的排查解决方法...
  10. Qt ToolBar工具栏里同时显示图标和文字