如何做 Flash 烧写并实现脱机运行,其实我在之前的文章里有讲过,就可以用 Visual DSP++来做,鼠标 点几下,非常简单。但是很多客户用的是 21569、21565这一类的SHARC DSP,不能再用 VDSP 来做烧写了,所以我想了 一下,还是在我的 21479 板上写一下,给 21479 的用户参考,同时也给21569、21565、21563的用户做参考。
硬件准备
1)ADSP-21479EVB开发板:
2)AD-HP530ICE仿真器:ADI DSP专用仿真器
3)5V2A 外接电源(电源线)
4)USB线(MINI USB,仿真器专用)
软件准备
CCES2.10.1,自己去官网下载,不多说了。
生成 LDR
首先我们要生成可烧写的文件,LDR,怎么做,很简单:
- 选中要烧写的工程,鼠标右键,然后如下图:
- 进入配置选项,先做输出设置:
简单说一下这个什么意思,选 Loader File,意思是我要输出可烧写文件了;TEST 是我取的名 字,你可以随意取,但是取英文,别弄中文;LDR,是 ADI 自己弄的可烧写文件的尾椎,就 选他,没什么理由。
- 再做 LDR 的设置
看我怎么配置的,照着抄。
- 就这么多配置,搞完了,然后 010 进行编译,生成 ldr 文件。
显示我的 TEST.ldr 生成好了,那么这个文件在哪里,看下图:
烧写
板子上电,仿真器上电,接好硬件,我们开始烧写,先 CMD,命令提示符,怎么调出来我 就不多说了,不会这个的话去百度。
- 先 CMD 搞到下面的目录,我装的是 2.10.1,所以就走到下面的路径下。
C:\Analog Devices\CrossCore Embedded Studio 2.10.1>
- 敲烧写命令
cldp -proc ADSP-21479 -emu 1000 -driver “C:\Analog Devices\ADSP-21479_EZKIT-Rel1.0.0\21479_EZ-Board\Examples\Device_Programmer\serial\214 79_m25p16_dpia.dxe” -cmd prog -erase affected -offset () -format bin -file "C:\Analog Devices\ADSP-21479_EZKIT-Rel1.0.0\21479_EZ-Board\Examples\AD1939_Sample_Based_Talkthr u_48_Or_96kHz\Debug\TEST.ldr
这一大堆命令,可以复制粘贴,我来说一下啥意思:
1)cldp -proc ADSP-21479 : CLDP 是 CCES 软件的烧写工具,这句的意思是我要用 CLDP 来 烧写 21479 这个芯片啦。
2)-emu 1000 :AD-HP530ICE 用的是 ICE-1000 的固件,所以我们这里的意思是,我要用 ICE-1000 这个固件来对你进行烧写,请接收!
3)-driver “C:\Analog Devices\ADSP-21479_EZKIT-Rel1.0.0\21479_EZ-Board\Examples\Device_Programmer\serial\214 79_m25p16_dpia.dxe” : 这句话的意思是,我要调用板子上的 flash 的 Driver,因为我的板子就是抄的 ADI 原厂的板子,所以我用的就是他的 flash,那么我的 driver 就直接用他的,非常偷懒的行为。
4)-cmd prog -erase affected -offset () :我先擦干净了 FLASH,然后再烧写。
5)-format bin :这个 LDR 是 BIN 格式的,因为我在上面的 LDR 设置里设的就是 BIN。
6)-file "C:\Analog Devices\ADSP-21479_EZKIT-Rel1.0.0\21479_EZ-Board\Examples\AD1939_Sample_Based_Talkthr u_48_Or_96kHz\Debug\TEST.ldr
要烧写文件的路径,这一老大堆,指向了我生成的 TEST.ldr
- 回车,开始烧写
非常清楚的信息:
1) Terget:SHARC 的 Emulators/EZ-KIT Lites,意思是我正在用 SHARC 的硬件仿真模式。
2) Platform:芯片是 ADSP-21479,仿真器用的 ICE-1000 固件的 AD-HP530ICE(非常好用)。
3) Processor:芯片是 21479,又来一遍。
4) Core:我这里自己的理解是,他是单核的,核的编号是 0,ADI 还有多核的,比如 21593, 那么核有 0,1,这是我的猜测,没用双核去验证,有时间我再去跑一下 21593 试试,这个 无关大雅。
5) Driver:意思是我调用的是这个路径下的 flash 驱动,驱动一定要正确,否则就报错烧不 了。
6) Program:我要对这个路径下的 LDR 下手了。
7) …:你看到点点点的时候,就是他在烧写的进程。
8) Done:烧写完了,正确,结束。
可能出现的问题
1) 有兄弟说我的程序在线运行可以,也可以烧进去,但是 boot 不起来,我们假设硬件是 完全没问题的,只找软件问题的话,那就仔细检查你的 LDR 生成的过程,参数的配置是不 是对的,LDR 有问题,你烧进去了也起不来。
2) 有兄弟说我烧写报错,那就要具体情况具体分析,如果在线能运行,那就排除板子和仿真器的硬件问题,因为仿真器很傻,他不会自己选择说我能跑在线的程序,但是不能烧写, 没这么智能,他跑在线的程序,也是把程序 down 到板子上 DSP 的内存里运行,实际上跟烧 写的过程没什么区别。问题可能在哪里?你的命令行敲对了没有?你的 Driver 对不对?查这 2 个。
结束语
烧写完成后,把板子的开关拨到 SPI BOOT,上电就可以运行我生成的LDR,进行脱机运行了。