为了让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.2\apps\examples\my_first_dsp_app\my_first_dsp_app_kalimba工程为例。
-
用xIDE打开工程my_first_dsp_app_kalimba.xiw,配置工程属性。
-
编译工程,生成my_first_dsp_app_kalimba.kap文件。
-
进入C:\ADK_CSR867x.WIN4.2\tools\kalsim路径,shift+右键,选择“在此处打开命令窗口”,输入下列命令:
kalsim_csr8675 c:\ADK_CSR867x.WIN4.2\apps\examples\my_first_dsp_app\my_first_dsp_app_kalimba.kap -d
输入命令后,Kalsim加载了kap文件并进入调试模式。
- 回到xIDE工程界面,选择debug->transport->kalsim localhost:31400,xIDE将使用kalsim localhost: 31400端口作为调试接口。
此时Kalsim界面提示如下信息:
在xIDE界面选择 debug->attach,进入调试模式。
##3.3. 常见问题
- 调试过程中,如果程序执行异常