EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法

简书 https://www.jianshu.com/p/b83c663ecaaa

EBAZ4205 是ebit的控制板,价格便宜。EBAZ4205使用XILINX XC7Z010-1CLG400I soc 包含两个硬核ARM A9,以及ARTIX-7逻辑。板子有一颗128M x 16 bit DDR3 CLK800Mhz,一块128M字节 NAND FLASH,PS 33.333Mhz osc,MII PHY、两个LED、三个排针坐接在PL上。PS上接了两个按键、SDIO、NAND、UART等。注意PHY接在FPGA上。板子电源使用12v,默认板子从三个排针接入电,J4排座没有焊二极管,可以短路后使用J4供电。板子还需要把UART JTAG排针坐焊上。暂时不用SD卡和PHY。

原理图和PCB:https://github.com/Elrori/EBAZ4205

如果使用PHY,参考:https://hhuysqt.github.io/zynq1/ 的方法在第4步建立PHY的EMIO,并把IO引出,再约束。

ZYNQ SOC启动过程以ARM为主,上电后硬件读取PS端IO口确定从NAND、QSPI-FLASH、SD Card还是JTAG启动。板子默认从NAND启动,为了软件调试和下载NAND,须从JTAG启动。

0. 准备板子,接上UART,XILINX JTAG

1. 从JTAG启动:上电前将 电阻R2578靠近NAND的一端接到地,再接上电源没有打印输出或者config done led不亮就说明从JTAG启动。

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第1张图片

2. 新建该器件的vivado工程,创建原理图、点击“+” 检索zynq7 processing system添加,去掉AXI:

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第2张图片

3. 外设IO设置使用NAND UART1,按照下图:

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第3张图片

4. MIO配置,默认:(如使用PHY需勾选ENET0,并使用EMIO从PL引出,参见 githubio)

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第4张图片

5. 时钟配置,使用FCLK_CLK0用于PS给PL时钟,按照下图:

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第5张图片

6. DDR3配置,    DDR3使用镁光128M16的代替,有效数据宽16bits(单DDR3),数据线PCB延迟设置为0.106,按照下图:

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第6张图片

7. SMC时序,NAND时序按照下图:

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第7张图片

8. 点击OK,右击原理图zynq7 点create ports,再检查可用性。右键source中的设计创建封装和输出,按照下图:

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第8张图片

9. 新建verilog 顶层top_pl.v用于点灯。设计包含如下:

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第9张图片

引脚约束,xdc文件内容:(PHY引脚参见 githubio)

set_property PACKAGE_PIN W13 [get_ports {led_r}]

set_property PACKAGE_PIN W14 [get_ports {led_g}]

set_property IOSTANDARD LVCMOS33 [get_ports {led_r}]

set_property IOSTANDARD LVCMOS33 [get_ports {led_g}]

10. generate bitstream 产生 .bit文件

11. file->export hardware,勾上.bit文件:

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第10张图片

12.  file->launch SDK,在SDK中新建如下,然后设置工程名fsbl,点next选择FSBL模板

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第11张图片

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第12张图片

13. 同样的方法在SDK中再新建一个工程 名为app并使用hello world模板,裸机程序就在这个工程中,而fsbl工程用于初始化ddr等。保存编译产生两个elf即 app.elf fsbl.elf

14. 制作BOOT.bin用于固化到NAND。BOOT.bin由fsbl.elf top_pl.bit app.elf三个文件组成。

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第13张图片

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第14张图片

同样的方法加入top_pl.bit 和 app.elf,partition type选择数据文件,请务必按顺序。

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第15张图片

点击创建镜像完成产生BOOT.bin

15. 下载BOOT.bin到NAND,按照下图设置:

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第16张图片

 

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法_第17张图片

16. 断电在上电可以看到最后一个行打印输出Hello World说明裸机程序运行成功,LED交替闪烁说明FPGA配置完成。如果需要软件调试上电必须按照步骤1做一遍,然后直接debug app工程,注意debug 选项中ps初始化选上。

以上

操作省略较多 仅参考备忘用途

你可能感兴趣的:(EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法)