作者的话
这个系列文章,我想起个头,讲一下ADI的ADSP-21565,这颗用的非常多的新音频DSP的开发应该怎么去做,包括硬件设计,软件开发。
硬件准备
ADSP-2156X-CB开发板
产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.13.1d10422a9Tojob&id=712012628342
AD-HP530ICE仿真器
产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.1f4cbfa3YPRXQh&id=38007242820
MINI USB接口的USB线 两条,一条给板,一条给仿真器
软件准备
CCES软件,这是ADI的215XX系列DSP所需要用到的开发软件。
安装CCES软件,我装的是2.11.1,官网可以下载。软件如何安装,新手请务必单独联系。
在这个链接里头下最新的版本。(特别注意,我发现我的2.11.1的代码在2.10.1上就运行不正常,这是ADI开发软件的老传统,不向下兼容,所以大家开发的话最好固定在某个版本就别变了,除非他有很大的BUG,我现在的所有开发都是在2.11.1上进行的,请大家先跟我的节奏走)
硬件链接
开关的调节
首先调开关,板子上只有一个两向的开关,是用来调DSP的BOOT模式的。我们先来看看2156X手册里对BOOT模式的说明:
2156x有很多种BOOT模式,我们板子上就做了一个SPIFLASH,所以我们用的就是SPIFLASH boot,把我的开关拨到1 OFF,2 ON,系统就会从SPIFLASH BOOT;
但是我们现在要做的是调试程序,而不是让系统BOOT,所以我们就不能把开关调到SPIBOOT,否则有可能在你硬件上电后,板子直接BOOT flash里的程序,JTAG仿真器抢不过来,无法链接到DSP来做开发。(特别是flash里烧写了错误的程序,有可能直接上电就让DSP处于非正常状态,而导致仿真器无法链接DSP)。
问题提出来了,解决的办法是什么呢?很简单,但凡我们要调试21565,你就直接把这个开关拨到非SPI BOOT模式不就好啦,如下图:
硬件链接图示
开关拨好之后,我们先把仿真器和板子插上,注意仔细观察你会发现,开发板的14针JTAG接口怎么断了一根针?是不是板子设计有问题?还是运送过程中损坏了?
答案是做的防反插设计,你看一下仿真器的接口,14PIN的母口中也有一个口是被堵上的,板子上的这个断针和仿真器被堵的眼都是无效接口,他俩已对应就正好达到了防反插的目的(防呆),你怎么都不会插反了。
这个设计不是我们创造发明的,ADI自有了DSP开始,就用这样的防呆,已经20多年了。并且写入了他的JTAG设计规范文档“EE68”中,要求用户这么设计,避免因为仿真器插反了导致烧毁硬件的情况发声。
插好之后,再给板子上电,再给仿真器上电(USB线接电脑),这一步非常关键,ADI的DSP仿真器不支持热插拔,你务必,必须,一定要在断电的情况下插或者拔JTAG,千万不要带电操作。
有兄弟说我就带电拔插了,也没出问题啊?是的这么干大概率也不会出问题,但是根据我们做了20年ADI DSP仿真器的经验来看,一旦出问题,烧毁了硬件,百分之99是因为带电拔插,为了杜绝这小概率事件的发生,我们就索性定下来规矩,严禁带电拔插JTAG头。
硬件接好后,就如下图所示:
简单说一下,正确链接后,仿真器Power灯亮,其他三个灯都不亮;开发板Power灯亮,其他都不亮。
仿真器驱动的安装
仿真器用到了AD-HP530ICE,这个仿真器接上电脑后(电脑里已经安装好了CCES软件),就会自动识别并安装好驱动,在设备管理器里看到的是这样的:
绝大多数就会直接装好了,立即可用,但是也有很少的情况,有兄弟发现插入后不能够自动安装驱动,是一个问号,那么我们就需要手动指定一下驱动位置:
驱动就在你的CCES软件安装目录下,Setup文件夹里,具体是哪一个不用知道,你只需要在手动安装驱动的那个界面下,选择到这个目录就可以了,选择完之后他会帮你装好驱动。
如果不会操作,可以看看我在CSDN上写的这篇文章:
https://blog.csdn.net/ADI_OP/article/details/128575709
硬件链路测试
实际上我们把软件装好了,硬件连好了,驱动也OK,正确上电后,就可以直接开干了,但是我觉得对于完全没有用过ADI DSP的新手,有必要先做这一步,就是硬件链路测试,也叫TEST,来检测一下PC,仿真器,DSP板之间的数据通讯是否正常。
首先硬件环境搭建好了,上电正常后,打开CCES软件,他会让你设一个工作组,因为CCES是基于Eclips来做的,所以你会发现跟它非常像:
我们就默认,点Lanch进入:
然后我们来做检测,在RUN菜单里,选Debug Con…(单词太长了懒得打,看图):
进入后,我们开始测试:
双击他,跳出TEST所需要的界面,选好了我们用的21565,然后点Con…
进入下一步后,点TEST:
说一下这个TEST,非常重要,新手必须掌握此项:
Type:ICE-1000;说明你的仿真器已经正确的安装驱动,并被CCES软件识别。
第123步是ICE自检,点Star后通常都会打钩,如果有问题,99%都会在第一步打叉,这基本是软件问题,解决的办法就是关闭软件,断电重来,或者重装一下软件。
第四第五步是PC,仿真器,板之间的链路检测,如果有问题,99%会出现在第四步,有可能是板子没上电?板子和仿真器没插好?仿真器坏了,都有可能,就要具体问题具体分析了。
五步全部打钩,就证明硬件链路完全没问题,我们可以开始调试啦。
所以这个TEST不仅仅是开发前检测链路,也是当你调试报错的时候,检测数据链接的最有效工具,很多兄弟调试过程中报错,怀疑是不是板子坏了,仿真器坏了?就可以用他来检测一下,非常重要。
导入工程
我给这个核心板写了一个按键控制灯的工程,在这里:
把这个code文件夹拷贝出来,放到一个纯英文的,简单路径的文件夹里,比如D盘下新建一个ADI文件夹,把Code丢进去。
为什么这么做呢?ADI的老传统,软件对中文路径支持的很不好,你看我现在的路径,又是产品资料,又是刻盘资料,又是开发板例程,一堆中文文件夹嵌套,很有可能再软件编译的时候拨错,导致无法做调试,所以咱们就干脆了点,丢到D-ADI里头去就完了。
回到CCES软件,在下图空白处鼠标右键,然后点Import来导入我写的例程:
Next:
选择你刚刚拷贝过去的code文件夹,然后Finish,工程就被正确导入啦。
链接仿真器,搭建软件环境
我们要用仿真器去在线调试,就需要做正确的仿真器配置,通常叫做新建Session,怎么新建很简单,我们选中工程,鼠标右键:
意思就是你这个工程的debug使用什么来做,我们看下面的界面:
按图配置,然后Next:
选Emulator,然后继续Next:
选ICE-1000,然后finish:
先Apply,再Debug:
在Project这里头,会开始打印编译信息,最终编译完成后:
我们要运行程序,则需要点击下面,进入运行的界面:
点击运行程序后,我们按下开发板上的按键,对应的LED灯就亮起,实现这个按键控制LED灯的简单功能。