前言
花费了将近大半天的时间,故简单记录一下,避免自己忘记,还未经更多的测试,所以仅供参考。
由于CMSIS的更新,在CMSIS v5.7.0版本之后,CMSIS-DSP 中已不再提供编译好的 lib文件。并且GitHub CMSIS仓库中的DSP部分已经独立出新的仓库,可以自行下载DSP库最新的版本,而不必在MDK安装目录下的ARM/CMSIS中进行复制,CMSIS-DSP仓库地址。
移植过程中,最关键的问题是GD32提供的CMSIS接口文件版本比较早,与目前CMSIS-DSP库不匹配。即下图所示,其中主要是core_cm4.h这个文件,如果不移植CMSIS v5.9.0中的版本,DSP库无法移植成功。
其次,是要注意下图中的2个头文件文件都需要移植,源文件当然也是必须的。
下面简述一下步骤。
1、搭建GD32F470 MDK AC6工程
这里没什么好说的,每个人的风格不同,参考GD32官方的移植就行。
2、启用浮点运算
如何CHECK浮点是否开启,可以自行搜索一下,笔者是通过DEBUG查看寄存器值和查看代码中的宏有没有定义操作的。
3、配置全局宏定义
外设库相关: USE_STDPERIPH_DRIVER,GD32F470,
DSP库相关: ARM_MATH_CM4,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING,ARM_MATH_LOOPUNROLL
这里的含义可以参考安富莱DSP教程中的移植说明,感谢下开源的教程,下载地址。
推荐Warnings选项选择AC5-like
4、移植CMSIS和CMSIS-DSP库代码,添加源文件和头文件路径
首先是更新core_cm4.h和其他相关文件,找到自己工程下存放CMSIS库的目录。
更新后如下图。
其次是DSP的库文件,包括下图中的三个文件夹。
MDK中添加源文件,要注意一下添加每个库中的主要源文件即可,文件内已经include其他相关源文件。
这里有个笔者疑惑的地方,F16的版本是什么意思,截至目前还未去了解,主要还是还是在进行库的移植测试。有了解的同学可以评论或者私信告诉我,谢谢。
接下来是添加头文件路径。
5、编译工程,测试DSP库
首先包含头文件,笔者对比测试下二者有什么精度差异
差别好像不是很明显,后续慢慢学习库的使用吧。