|
[基于GD32F350RB的音频识别器] 1. 开发前的准备
[复制链接]
基于GD32F350RB的音频识别器
——开发前的准备
【概述】准备工作包括软件开发平台,硬件测试,以及拟实现的功能。一、关于音频识别器的功能,就是实现从音频捕捉,到傅里叶变换,计算出核心音频,对比吉他调弦应该设定的数值进行大小对比和提示的功能。实现起来,根据在ARM-M4的类似开发资料,应该在2-3周可以完成开发。
不过对于新鲜出炉的GD32F350RB,只有硬件是不够的,丰富的开发生态,以及具有前瞻的开发项目是包括STM等品牌成功的诀窍。用实际行动支持一下,就要尝试在这个平台实现更具有难度的功能,并且能开源给其他人在项目中使用,是本项目的主要目的。
这次开发准备的时间比较长,主要包括软件开发平台,硬件测试,以及项目实现功能的规划。这个项目要充分利用M4所增加的DSP功能,挑战GD320F350在计算上的性能极限,在GD320F350提供的所有资料中都没有关于类似的使用手册以及开发范例,根据移植自其他产品的项目和代码分析进行一个自我挑战。实现以下功能,使用DSP lib库实现声音的FFT变换,使用CMSIS-NN库在GD320F350实现边缘计算。因为这个工作没有参考,而且难度偏大,所以,估计按时完成的可能性不大,不过尽量提供比较详细的过程和说明,也算是搭个梯子。
二、 开发环境。
嵌入式开发的开发环境通用的就是KEIL,IAR和GCC。从GD320F350提供的开发包,最适用的应该是基于MDK5.23,最主要的原因是CMSIS的库可以很容易的嵌入到项目中,这样可以避免移植其他版本的软件库所带来的版本兼容问题,而对于MDK pro用户,还可以用GRAPHIC等高级的图形库。
本次开发中就要用到这些工具。具体安装使用过程就不再重复说明了。
对于GD320F350其实还有一个建议,一个成长中的企业,如果是基于中国这么大的用户市场,基于这么数量巨大的电子工程专业学生,一定要开发一个专用的开发工具,免费给学生使用。比如,把KEIL的Installation PACK移植到Eclipse GCC其实只需要开发时间,难度是没有的。
三、硬件
COLIBRI_GD32F350R8T6开发板是使用GD32F350R8T6芯片的资料可以从这里下载。可以看出,GD32F350R8T6还是新产品,资料相对不多。对比GD32F450系列产品,缺了LCD的显示支持,支持超过4寸的LCD屏就需要专门开发了。因为时间有些,这次就不移植GFX的图形库了,如果需要显示功能,可以使用GD32F4xx系列更适合。
GD32F3x0 系列器件是基于 ARM® Cortex™-M4 处理器的 32 位通用微控制器。存储器的 组织采用了哈佛结构,预先定义的存储器映射和高达 4 GB 的存储空间,充分保证了系统的灵活 性和可扩展性。主频108 MHz,Flash 128 KB, SRAM 4 KB以及3KB ISP loader ROM。
补充一下,总算这次可以看到完整版本的中文用户手册了,而且肯定是不是翻译的,读起来顺畅,也不要再啃英文字母,也是一件很愉快的事情。
开发板的周边设备配置,包括LED和按键等,最好都运行过范例程序,测试都可以正常工作后再开发,这个过程总体顺利。
四、拟实现的功能
这里最主要要实现的功能就是搭建一个NN网络模型,通过检测输入的频谱信息来确定属于什么类型的音乐。对应预频率分析,已经用FFT完成,那么NN网络就需要分析更复杂的信息,这个在开发的过程中选择,因为这里需要搜集足够多的采样数据,如果没有适合的类型,就需要更长的时间。
NN网络,需要确定的层数,权重值,要用深度学习模型来建立和训练。所以,这里也会有深度学习模型安装和建立的过程。目前看,虽然Tensorflow应用最广,但是在目前最低只能部署到树莓派上。而能够在边缘计算用到的模型只有Caffe,不过最新的caffe给整合到了pytorch中了,最新的pytorch1.0还没有release,不知道如何应用这个部署的过程。所以,会在这个过程中一边做一边分享。
|
|