作者的话
本章讲一下21569这颗芯片应该怎么去做开发,流程是怎么样的。其中硬件应该怎么链接?软件需要安装哪些?环境要怎么搭建?提供的例程要如何加载、编译、运行?就看这个文档。
21569的LED灯调试
硬件准备
ADSP-21569EVB开发板
产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.17.4e1b60feObN1HG&id=721683997705
ADS-21569开发板图示
板子我做的是核心板+底板的组合方式。
AD-HP530ICE仿真器
产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.52dfbfa3xB7JE7&id=38007242820
USBi仿真器
产品链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-5192690539.11.660c3150wSsVGk&id=38242936768
软件准备
CCES软件,这是ADI的215XX系列DSP所需要用到的开发软件。
安装CCES软件,我装的是2.11.1,官网可以下载。软件如何安装,新手请务必单独联系我的QQ:5516164。
https://www.analog.com/cn/design-center/evaluation-hardware-and-software/software/adswt-cces.html#software-overview
在这个链接里头下最新的版本。(特别注意,我发现我的2.11.1的代码在2.10.1上就运行不正常,这是ADI开发软件的老传统,不向下兼容,所以大家开发的话最好固定在某个版本就别变了,除非他有很大的BUG,我现在的所有开发都是在2.11.1上进行的,请大家先跟我的节奏走)
硬件链接
开关的调节
首先调开关,板子上只有一个三向的开关,是用来调DSP的BOOT模式的。我们先来看看21569手册里对BOOT模式的说明:
21569有很多种BOOT模式,我们板子上就做了一个SPIFLASH,所以我们用的就是SPIFLASH boot,把我的开关拨到如下图所示,就实现了SPIFLASH BOOT;
这里调的是:
BMODE0:1
BMODE1:0
BMODE0:0
但是我们现在要做的是调试程序,而不是让系统BOOT,所以我们就不能把开关调到SPIBOOT,否则有可能在你硬件上电后,板子直接BOOT flash里的程序,JTAG仿真器抢不过来,无法链接到DSP来做开发。(特别是flash里烧写了错误的程序,有可能直接上电就让DSP处于非正常状态,而导致仿真器无法链接DSP)。
问题提出来了,解决的办法是什么呢?很简单,但凡我们要调试21569,你就直接把这个开关拨到非SPI BOOT模式不就好啦,如下图:
BMODE0,1,2全部都给他调到0。
硬件链接图示
开关拨好之后,我们先把仿真器和板子插上,注意仔细观察你会发现,开发板的14针JTAG接口怎么断了一根针?是不是板子设计有问题?还是运送过程中损坏了?
答案是做的防反插设计,你看一下仿真器的接口,14PIN的母口中也有一个口是被堵上的,板子上的这个断针和仿真器被堵的眼都是无效接口,他俩已对应就正好达到了防反插的目的(防呆),你怎么都不会插反了。
这个设计不是我们创造发明的,ADI自有了DSP开始,就用这样的防呆,已经20多年了。并且写入了他的JTAG设计规范文档“EE68”中,要求用户这么设计,避免因为仿真器插反了导致烧毁硬件的情况发声。
插好之后,再给板子上电,再给仿真器上电(USB线接电脑),这一步非常关键,ADI的DSP仿真器不支持热插拔,你务必,必须,一定要在断电的情况下插或者拔JTAG,千万不要带电操作。
有兄弟说我就带电拔插了,也没出问题啊?是的这么干大概率也不会出问题,但是根据我们做了20年ADI DSP仿真器的经验来看,一旦出问题,烧毁了硬件,百分之99是因为带电拔插,为了杜绝这小概率事件的发生,我们就索性定下来规矩,严禁带电拔插JTAG头。
硬件接好后,就如下图所示:
简单说一下,正确链接后,仿真器Power灯亮,其他三个灯都不亮;开发板底板的Power灯亮,核心板的LED5亮,其他都不亮。
仿真器驱动的安装
仿真器用到了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所需要的界面,选好了我们用的21569(截图用的是21565的,效果一样,就不改图了,把问题讲清楚就好),然后点Con…
进入下一步后,点TEST:
说一下这个TEST,非常重要,新手必须掌握此项:
Type:ICE-1000;说明你的仿真器已经正确的安装驱动,并被CCES软件识别
第123步是ICE自检,点Star后通常都会打钩,如果有问题,99%都会在第一步打叉,这基本是软件问题,解决的办法就是关闭软件,断电重来,或者重装一下软件。
第四第五步是PC,仿真器,板之间的链路检测,如果有问题,99%会出现在第四步,有可能是板子没上电?板子和仿真器没插好?仿真器坏了,都有可能,就要具体问题具体分析了。
五步全部打钩,就证明硬件链路完全没问题,我们可以开始调试啦。
所以这个TEST不仅仅是开发前检测链路,也是当你调试报错的时候,检测数据链接的最有效工具,很多兄弟调试过程中报错,怀疑是不是板子坏了,仿真器坏了?就可以用他来检测一下,非常重要。
导入工程
我给这个开发板上写了一些工程,就先拿一个工程为例,详细的说一说;
把这个code文件夹拷贝出来,放到一个纯英文的,简单路径的文件夹里,比如D盘下新建一个ADI文件夹,把Code丢进去。
为什么这么做呢?ADI的老传统,软件对中文路径支持的很不好,你看我现在的路径,又是产品资料,又是刻盘资料,又是开发板例程,一堆中文文件夹嵌套,很有可能再软件编译的时候拨错,导致无法做调试,所以咱们就干脆了点,丢到D-ADI-21569里头去就完了。
回到CCES软件,在下图空白处鼠标右键,然后点Import来导入我写的例程:
Next:
选择你刚刚拷贝过去的code文件夹,选一个工程,我就选一个最简单的LED工程,然后Finish,工程就被正确导入啦。
链接仿真器,搭建软件环境
我们要用仿真器去在线调试,就需要做正确的仿真器配置,通常叫做新建Session,怎么新建很简单,我们选中工程,鼠标右键:
意思就是你这个工程的debug使用什么来做,我们看下面的界面:
双击第一个:
按图配置,然后Next:
选Emulator,然后继续Next:
选ICE-1000,然后finish:
先Apply,再Debug:
在Project这里头,会开始打印编译信息,最终编译完成后:
我们要运行程序,则需要点击下面,进入运行的界面:
点击运行程序后,我们可以从核心板上看到LED0,1,2以及LED6,7,4这6个灯一起闪烁,实现程序的运行。
红色框内的6个LED灯闪烁。
结束调试
注意,我们要下班了,结束调试,是直接关闭软件,然后板子和仿真器断电吗?不是,你需要把你的软件和硬件链接给断开,点这里:
点它就是断开软件链接,点完之后:
DEBUG这里就没有可以操作的东西了,我们可以关闭软件,并分别给板子和仿真器断电,再拔掉JTAG头,结束本次调试。
工程的简单说明
回头来看看这个工程,其实兄弟们把工程点开看看就明白。
更多的程序
上面这个LED灯的例程,这些配置是从哪里来的?我不是自己一点一点配的,是从ADI官方提供的2156X例程里摘出来的,至于官方提供的例程到底在哪里?请看2156x的SDK开发包:
官网的下载页面链接:https://www.analog.com/cn/design-center/evaluation-hardware-and-software/evaluation-boards-kits/ev-21569-ezkit.html#eb-relatedsoftware
安装完这个SDK后,在安装目录下找到它:
官方提供的例程都在这里:
按照上面讲的方式导入工程,我先导入一下Driver文件夹:
一大堆的官方提供的工程:
我们再导入一个PowerON:
划拉划拉,就划拉了LED的程序啦。大家可以好好研究一下这些官方例程,再自己划拉。
下一个文档
如何调试一个工程,相信这个文档已经讲的比较清楚了。后面还写了几个测试的工程,再详细说一说这个CCES的C编程吧!