yuanyangliu 发表于 2013-2-27 21:38:09

在线升级CPLD程序,遇到不能重复升级两次的问题。

各位好:

我现在用Intel 的一款CPU上的几个IO口模拟一个Jtag,对端连在CPLD Jtag控制器上。
port了 Altera的 Jam STAPL Player程序,Linux系统。

现在能够实现Linux系统下通过CPU在线升级CPLD,但是遇到一个问题,只能升级一次,如果系统不重启,第二次就无法升级,返错为“Unrecognized Device ...”,不知道各位有遇到这种问题么?

我对Jtag时序不是很懂,完全是凑合着能用。Altera的 Jam STAPL Player实现有点复杂,tap状态机写在一个函数里,2300多行,实在不好分析。而且我也不怀疑是人家的程序有问题。

是不是我在第一次升级完成之后,对Jtag的复位不到位?

各位有什么看法,请多指教,搞了好几天了,毫无头绪。。。。

多谢。

wye11083 发表于 2013-2-28 00:38:58

JTAG复位非常简单,直接对TMS写1,写1个字节就到复位了(最多只需要5个比特,但是写1个字节比写5个比特更方便)。

yuanyangliu 发表于 2013-2-28 08:45:25

wye11083 发表于 2013-2-28 00:38 static/image/common/back.gif
JTAG复位非常简单,直接对TMS写1,写1个字节就到复位了(最多只需要5个比特,但是写1个字节比写5个比特更方 ...

复位是成功了,因为升级完成后,已经跑的是新程序了。
只是不掉电就不能第二次升级,不知道哪里拉住了。

硬件上就是CPU的4个IO管脚,在升级完成之后,我把这4个IO Disable了。

wye11083 发表于 2013-2-28 09:00:36

yuanyangliu 发表于 2013-2-28 08:45 static/image/common/back.gif
复位是成功了,因为升级完成后,已经跑的是新程序了。
只是不掉电就不能第二次升级,不知道哪里拉住了。
...

你把CPLD的这4个管脚DIS了?这样肯定不行。DIS CPU的控制脚也不行。重新启用,然后复位JTAG,我说的TMS为1是复位JTAG,不是复位CPLD或CPU!

yuanyangliu 发表于 2013-2-28 14:30:03

wye11083 发表于 2013-2-28 09:00 static/image/common/back.gif
你把CPLD的这4个管脚DIS了?这样肯定不行。DIS CPU的控制脚也不行。重新启用,然后复位JTAG,我说的TMS为 ...

我是复位完了Jtag之后,把CPU用来模拟Jtag的那4个pin给Disable了。
Jtag复位过程是正常完成的。

yuanyangliu 发表于 2013-2-28 15:56:35

解决了。

每次升级之前,把Jtag复位一遍。

sara-he 发表于 2013-4-5 21:06:33

楼主,你好
我现在也在研究关于CPLD的在线升级问题,遇到点问题
看到你已经成功移植了,想向你请教下!

yuanyangliu 发表于 2013-7-24 15:42:11

sara-he 发表于 2013-4-5 21:06 static/image/common/back.gif
楼主,你好
我现在也在研究关于CPLD的在线升级问题,遇到点问题
看到你已经成功移植了,想向你请教下!


哎呀,来晚了。你遇到什么问题,在这里说吧。

sara-he 发表于 2013-8-13 16:51:01

yuanyangliu 发表于 2013-7-24 15:42 static/image/common/back.gif
哎呀,来晚了。你遇到什么问题,在这里说吧。

谢谢!已经解决了。。好久没来阿莫了,现在开始研究zigbee了,希望以后能多交流
页: [1]
查看完整版本: 在线升级CPLD程序,遇到不能重复升级两次的问题。