DSP

CSR8675的DSP学习笔记——离线调试与仿真

2019-07-13 10:29发布

为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板【淘宝链接:思度科技CSR开发板】。 技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠PPT、项目源码、视频教程)
——————————正文分割线———————————– #1. 引言
CSR8675的DSP之于我,是一片美丽而充满诱惑的原始森林,等待被探索和征服。多少次有冲动深入其中揭开他的秘密,却因手头有要专注的项目,只能让demo板静静地躺在角落。最近主攻项目接近尾声,决定立即开始DSP的学习。 在学习CSR8675的DSP之前,需要准备合适的学习工具和学习资料。学习资料无疑是官网下载的开发文档和示例工程,但学习工具只有一块demo板。demo板需要外部设备提供信号输入,也需要外部设备检测信号输出,不是理想的试验和验证环境。因此实现一种不依赖外部设备的调试与仿真方法成了提高学习效率、降低学习门槛的关键。 经过一周的学习和实践,终于搭建了一套可以在纯软件环境下设计和验证DSP的程序和算法的工具集,并摸索出了调试与仿真的方法。 #2. 工具集
系统环境:windows 7
安装软件:matlab 2015a, CSR ADK4.2 CSR ADK4.2安装完成后,需要用到其中的几个组件:
  • xIDE
  • kalsim
  • matlab kalsim api interface
##2.1. xIDE
QTIL xIDE软件开发环境可用于:
  • 阅读
  • 编译
  • 调试
  • 运行
  • 重配置
  • 修改
##2.2. Kalsim
Kalsim是一种运行在PC主机上的指令集仿真器,用来仿真kalimba DSP的运行。 Kalsim的特性如下:
  • 完整的精确到位的指令集仿真。
  • 与真实硬件完全相同的运行调试接口,与标准Kalimba调试工具(xIDE, Matlab, Python)完整兼容。
  • Kalimba外围设备仿真,包括MMU端口,flash文件系统,中断控制和定时器。
  • 高性能Kalimba I/O主控。
  • 执行再现。包括包括运行时的中断和流,即时是调试工具正在运行。
  • 检测未映射的存储访问。
  • 支持CSR8670(Kalimba 架构3)和CSR8675(Kalimba 架构5)。
  • 指令追踪。
##2.3. matlab kalsim api interface
一个用来集成Kalimba DSP和Matlab的工具集。这个工具集可以通过调试传输接口连接Kalimba DSP,也可以通过Kalimba工具链生成的ELF或KLO文件。 这个工具集可以完成多种调试动作,例如查询处理器的状态,读写存储器内的变量,生成栈跟踪等。
#3. 离线调试
##3.1. 主要用途
当DSP工程运行发生异常或不符合预期,且不能通过log trace手段获取运行信息时,需要进入调试模式以定位问题的根源。 ##3.2. 进入调试
以C:ADK_CSR867x.WIN4.2appsexamplesmy_first_dsp_appmy_first_dsp_app_kalimba工程为例。
  1. 用xIDE打开工程my_first_dsp_app_kalimba.xiw,配置工程属性。
    这里写图片描述
  2. 编译工程,生成my_first_dsp_app_kalimba.kap文件。
    这里写图片描述
  3. 进入C:ADK_CSR867x.WIN4.2 oolskalsim路径,shift+右键,选择“在此处打开命令窗口”,输入下列命令:
kalsim_csr8675 c:ADK_CSR867x.WIN4.2appsexamplesmy_first_dsp_appmy_first_dsp_app_kalimba.kap -d
输入命令后,Kalsim加载了kap文件并进入调试模式。
这里写图片描述
  1. 回到xIDE工程界面,选择debug->transport->kalsim localhost:31400,xIDE将使用kalsim localhost: 31400端口作为调试接口。
    这里写图片描述
此时Kalsim界面提示如下信息:
这里写图片描述 在xIDE界面选择 debug->attach,进入调试模式。
这里写图片描述 ##3.3. 常见问题
  1. 调试过程中,如果程序执行异常,PC指针会跳到地址0并停止运行。此时需要先按“q”键让Kalsim退出调试模式并重新加载kap,否则DSP RAM中的值不会是芯片正常复位时的值,影响程序正常运行。
#4. 离线仿真 ##4.1. 主要用途
当需要验证DSP的工程内的算法和DSP的性能时,需要给定DSP的输入,并记录和观察DSP的输出。 ##4.2. Kalsim仿真
Kalsim仿真可以在给定输入后快速获取输出。比对输入和输出文件后,即可验证DSP的算法和性能。 Kalsim仿真支持多种音频格式的的输入和输出文件,可以是PCM, MP3, AAC等。 Kalsim仿真支持输入和输出文件的脚本控制,方便验证无线传输时的帧传输速率对DSP的影响。 下面结合C:ADK_CSR867x.WIN4.2appsexamplesmy_first_dsp_appmy_first_dsp_app_kalimba工程,给出两种方式的运行步骤和结果。 ###4.2.1. 无脚本仿真 ####4.2.1.1. 输入指令
执行章3.2中的步骤1-3。打开命令窗口后,输入如下指令:
kalsim_csr8675 c:ADK_CSR867x.WIN4.2appsexamplesmy_first_dsp_appmy_first_dsp_app_kalimba.kap -i 0 c:ADK_CSR867x.WIN4.2appsexamplesmy_first_dsp_app