搜索
bottom↓
回复: 6

如何用DSP模拟lattice的JTAG下载程序?

[复制链接]

出0入0汤圆

发表于 2019-3-11 23:20:02 | 显示全部楼层 |阅读模式
我现有一块DSP+CPLD的板子,DSP是28335,cpld是lattice的LAMXO640。CPLD的JTAG端口直接连接到了DSP的GPIO,并且JTAG没有预留出来,所以我猜测CPLD的程序是通过DSP下载进去的,那么DSP就要模拟JTAG才能实现。我查找资料,找到lattice的官方嵌入式编程手册《Programming Tools User Guide》,了解到可以通过
JTAG Full VME Embedded;
JTAG Slim VME Embedded;
Slave SPI Embedded;
I2C Embedded;
sysCONFIG Embedded;
这几种方式进行编程,其中能实现的可能有JTAG Full VME Embedded和JTAG Slim VME Embedded,查看安装目录下embedded_source提供的源码,发现vmembedded类型要读取lattice的嵌入式系统.VME文件,但是DSP是不支持文件IO的,所以用JTAG Full VME Embedded方法行不通。
  1. if ( cRetCode < 0 ) {

  2.         /***************************************************************
  3.         *
  4.         * VME file version failed to match the supported versions.
  5.         *
  6.         ***************************************************************/

  7.         fclose( g_pVMEFile );
  8.         g_pVMEFile = NULL;
  9.         return VME_VERSION_FAILURE;
  10.     }
复制代码

接着我想用JTAG Slim VME Embedded方法,使用其中的slim_vme_8051程序进行移植,此方法要求用Deployment Tool工具将lattice的.xcf配置文件生成HEX(.C)文件,我按照步骤生成了.c文件




得到了impl1_algo.c算法文件和impl1_data.c数据文件


通过查看源代码slim_pro.c发现生成的算法数组和数据数组是对应的

  1. xdata const unsigned char g_pucAlgoArray[]= {0};
  2. xdata const unsigned char g_pucDataArray[]= {0};
  3. xdata const int g_iAlgoSize = 0;
  4. xdata const int g_iDataSize = 0;
复制代码

但是调试程序的时候发现出错,在解析算法数组的时候发现前面部分数组的元素都符合程序的解析,直到g_pucAlgoArray[ 483 ] 数组出现多个连续的0xFF便出错

在slim_pro.c里面连续多个0xFF是错误的,根本不能解析数组。

请问一下:
1、我用slim_vme_8051的程序移植到28335的DSP上能否实现?
2、将.VME文件转换得到的.C算法文件是正确的还是错误的?为什么根本解析不了?
3、有没有其他方式能实现DSP模拟JTAG,通过GPIO下载程序到CPLD,读取CPLD的文件是像Lattice一样转换成数组还是通过串口下载进去,如果DSP没有预留串口只有CAN接口能实现吗?
望有经验的人或做过的人能提供思路或解答,万分感谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-3-11 23:36:32 | 显示全部楼层
帮顶,希望有人知道。

出615入1076汤圆

发表于 2019-3-12 00:17:28 | 显示全部楼层
本帖最后由 dukelec 于 2019-3-12 00:41 编辑

只用過 iCE40UL, 燒錄代碼全部是通過類似 SPI 的接口(說類似是因爲不發數據的時候依然要發時鐘),非常簡單,手冊結尾給的參考代碼不依賴其它庫就 10 幾行,比 JTAG 協議簡單很多,非常適合 MCU 上電後給 FPGA 發送配置。

我後來用 Altera 的 MAX10, 估計是因爲 JTAG 太麻煩,官方貌似就不支持 MCU 通過 JTAG 口配置,只能在 FPGA 裏面做一個用戶 bootloader, 然後再 IAP, 好麻煩。。。

你的這個確認沒法用 SPI ? 不過看你這個簡化版本的 JTAG 倒也不是很複雜,應該也可以用。

至於你的程序報錯,我想說一定是 TI 的 DSP 不支持 byte 導致的。

TI 的 DSP 如果要用一些第 3 方的庫,都要改動很多,因爲 TI 所謂的 byte 是 16 bit, 不兼容標準 C 的各種程序。
你順這個方向仔細查查。

建議你先用 STM32 或 STM8 或 AVR 或 PIC 或 51 等任何一款正常一點的 MCU 測試一下,應該是不會有問題的,然後再對比着改軟件生成的 C 代碼,使之能支持不支持 byte 的 CPU.

P.S. 我無法忍受 TI 不支持 byte 的 DSP, 之前我接手的產品改版時都換成 STM32F4 了。

出0入442汤圆

发表于 2019-3-12 07:07:04 来自手机 | 显示全部楼层
dukelec 发表于 2019-3-12 00:17
只用過 iCE40UL, 燒錄代碼全部是通過類似 SPI 的接口(說類似是因爲不發數據的時候依然要發時鐘),非常簡 ...

jtag下载在xilinx上不太复杂,好久之前干过mips的,实现了用jtag以4.5kb/s速度烧uboot。xilinx的jtag手册我研究过很长时间,而且我找到了一份下载bitstream的文档,就是先进bs模式,然后把bin文件移位进去,然后再update dr,就亮了,不过远远比slave serial复杂。

出0入0汤圆

 楼主| 发表于 2019-3-12 20:13:48 | 显示全部楼层
dukelec 发表于 2019-3-12 00:17
只用過 iCE40UL, 燒錄代碼全部是通過類似 SPI 的接口(說類似是因爲不發數據的時候依然要發時鐘),非常簡 ...

刚好LAMXO640芯片不支持SPI和IIC下载,只能通过JTAG接口。只能先拿其他支持byte 的MCU测试,在进行移植了,谢谢。

出0入0汤圆

发表于 2019-3-25 18:02:59 | 显示全部楼层
搭车问一下:TI的DSP要专门的下载器下载程序吗?还是说像串口一样直接就可以下载。

出150入640汤圆

发表于 2019-3-25 20:18:05 | 显示全部楼层
感觉楼主把问题复杂化了,DSP用来搞JTAG,就如同汽车用来飞黄河一样!
业界要么用用FTDI的USB转FIFOJTAG的方案,要么用带USB的单片机来做。
十七年前用xilinx的CPLD做过MIPS的EJTAG仿真器。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 10:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表