MYC-C7Z01020 JTAG下载仿真问题以及解决办法

来自米尔科技Wiki
跳转至: 导航搜索

启动模式

ZYNQ 7000启动模式由MIO[5-2]来决定,选择JTAG启动时,MIO[5-3]必须都是0,而MIO2,决定了JTAG 的Cacade和 Independent模式

Zynq bootmode.png

我们先说明如何启用JTAG,关于JTAG 的Cascade mode和Independent mode的区别,要知道ZYNQ 7000 有两个调试相关的端口,分别是DAP和TAP。

Zynq DAP TAP.png

所以呢,TAP是属于PL端的;DAP是属于PS端的 我们开发板提供的JTAG端口是接在PL_JTAG这个端口上,如果你需要在这个端口上访问PS端的DAP,则必须使用Cascade mode。

如何启用/使能JTAG端口

要使能JTAG端口,最简单的就是,选择JTAG boot,也就是将MIO[5-3]拉低,然后重新上电即可进入JTAG引导模式,此时JTAG端口已经启用/使能。需要注意,当改变了启动模式之后,必须重新上电才能将启动模式改变生效。这是因为,ZYNQ 7000只有在上电复位时刻才去sample采集boot mode pin,也就是MIO[5-3]

如果不是JTAG启动模式,那么JTAG端口是否使能取决于ZYNQ当前的安全模式。如果ZYNQ是安全启动,ZYNQ芯片会禁止JTAG端口,你是不可能通过JTAG端口进行下载和调试;如果ZYNQ非安全启动,则JTAG端口是使能的;那么,我们要使能JTAG端口,就要求ZYNQ是非安全启动模式。要ZYNQ是非安全启动模式,则需要在BootRom Header中的Encrypted status字段填写0xA5C3C5A3 或者 0x3A5C3C5A。这涉及到FSBL的制作了,这里不展开来讲。

MYC-C7Z010/20的JTAG启动模式

我们的核心板MYC-C7Z010/20提供2中启动模式,SD卡启动模式和QSPI启动模式。那JTAG启动模式呢?Sorry,在我们的核心板上,因为设计考虑其他原因以及方便SD卡和QSPI启动之间的切换,在核心板上已经将MIO5固定拉高了,所以我们使用者不可能通过“选择JTAG启动模式来启用/使能JTAG端口”。但是我们还有其他办法,就是将FSBL设置成非启动模式,此时JTAG端口就能访问了。所以,我们要在MYC-C7Z010/20使用JTAG,就需要制作非安全模式的FSBL,让FSBL跑起来之后,就可以通过JTAG端口下载调试其他应用程序了。

使用JTAG下载调试需要的条件

  1. 制作非安全模式的FSBL,此时只能选择制作SD卡的FSBL了;
  2. 选择从SD卡;
  3. 重新上电,JTAG使能,

注意事项:

  1. 如果ZYQN启动时,在SD卡或者QSPI启动设备中没有找到有效的FSBL,JTAG也是禁止的;
  2. 改变了启动模式时,必须重新上电;
  3. 如果SD卡启动的是linux系统,则不能再linux系统下进行JTAG访问,因为此时MMU已经启动,会导致MMU错误。

解决方法

MYD-C7Z010/20 开发板配套的光盘例子工程中的helloworld没有fsbl,所以要借助于Z-turn实验中EMIO的那一个工程,如果是7z010的芯片,可以在这里下载,如果是7z020的芯片,请点击这里下载。

下载之后,解压,进入\gpio_emio\gpio_emio.sdk\gpio_emio\bootimage\目录,将其中的BOOT.bin文件拷贝到可引导的TF卡上。

将开发板启动跳线设置在TF卡模式,连上JTAG,给开发板上电,因为这个bin是zturn的端口不一样,所以串口看不到任何信息,但是我们只是借助它设置一下进入非安全模式,这个目的已经达到了,现在使用Vivado SDK 连接开发板即可。

注意:核心板上的看门狗使能跳线帽必须“断开”。

Zynq sdk dbg.jpg


附录

核心板BOOT pin 配置图:

C7020 BOOT.jpg