程序员程序园

EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 J

2019-04-30  本文已影响27人  kuree

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

建议参考:https://hhuysqt.github.io/zynq1/

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启动。

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

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

4. MIO配置,按照下图:

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

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

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

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

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

引脚约束,xdc文件内容:

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文件:

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

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三个文件组成。

同样的方法加入top_pl.bit 和 app.elf,请务必按顺序。

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

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

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

以上

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

上一篇下一篇

猜你喜欢

热点阅读