作为ZedBoard新手,在网上找了很多资料,感觉大神们的博客教程啥啥的,有些地方写的不是特别详细。
在下菜鸟一枚,希望写一些菜鸟式的东西,方便感兴趣的同学快速入门。
言归正传,既然第2篇文章中Linux已移植好,是时候做点简单的小实验了。
参考资料:http://www.eefocus.com/binbincool/blog/12-11/288982_736af.html
(1)新建ZYNQ工程
Vivado中新建一个工程,如图1所示:
【图1】 新建ZYNQ工程
点“Next”,选择RTL Project,勾上Do not specify sources at this time,如图2所示:
【图2】 选择RTL工程
继续点“Next”,然后就是选择板子了,如图3所示:
【图3】 选择ZedBoard
再点“Next”,可以看到工程的概况,直接点“Finish”。
(2)设计硬件
点击左边IP Generator下面的Create Block Design,如图4所示:
【图4】 Create Block Design
然后,点击Add IP,输入zynq,选择第一个,然后双击添加Process Sytem的IP。如图5所示:
【图5】 添加PS
然后,类似地,添加GPIO的IP核,如图6所示:
【图6】 添加GPIO的IP
然后点击“Run Block Automation”,选择PS,如图7所示:
【图7】 Run Block Automation
接着弹出一个图8所示的对话框,直接点“OK”即可。
【图8】
然后,点击“Run Connection Automation”,选择第一个,如图9所示:
【图9】 自动连接PS
弹出对话框,同样直接点“OK”。接着,类似地,依次点击“Run Connection Automation”->"/axi_gpio_0"/GPIO,
在弹出的对话框中,选择leds_8bits,如图10所示:
【图10】 选择leds_8bits
然后点“OK”自动连接。完了点击左边的“Sources”,在Design Sources下的.bd文件右击,选择“Create HDL Wrapper”,如图11所示:
【图11】 生成HDL文件
接着弹出一个对话框,选择“Let Vivado manage wrapper and auto-update”,点“OK”。等生成HDL文件后,Ctrl+S保存工程。
接下来就是生成比特流了,如图12所示:
【图12】 生成比特流
弹出一个图13所示的对话框,点“OK”。
【图13】 实现
生成比特流的过程比较漫长,耐心等待其完成。完成后弹出对话框询问是否要打开Hardware Manager,点击“Canel”。
(3)导出硬件
点击File->Export->Export Hardware,如图14所示:
【图14】 准备导出硬件
在弹出对话框中确保“Include bitstream”前面已勾上,如图15所示:
【图15】 导出硬件设计
到这里,Vivado的工作已经完成了。启动SDK之前,需要记下GPIO作为CPU外设的地址。
点击“Diagram”旁边的“Address Editior”,记录这个地址,如图16所示:
【图16】 记录外设地址
可以看到,Vivado自动分配的地址是0x41200000.
(4)启动SDK
Vivado菜单中,依次点击File->Launch SDK,弹出的对话框直接OK。创建一个Application Project,如图17所示:
【图17】 创建Application Project
填写工程名,点击“Next”,选择FSBL,点击“Finish”,如图18所示:
【图18】 选择FSBL
然后再创建的Application Project上右键选择Build Project,或者直接Ctrl+B也可以。
(5)生成BOOT.BIN
Build完毕后,点击Xilinx Tools->Create Zynq Boot Image,如图19所示:
【图19】准备生成BOOT.BIN
点击下面的Add按钮,添加编译U-BOOT生成的u-boot.elf和上面生成的比特流文件,点击Create Image即可。如图20所示:
注意:LED.elf、比特流文件和u-boot.elf的顺序,不能错。ZedBoard启动时,先由LED.elf利用比特流文件初始化PL,然后再由u-boot.elf启动Linux。
【图20】 生成BOOT.BIN
(6)启动Linux
将生成的BOOT.BIN连同uImage、devicetree.dtb、uramdisk.image.gz拷贝到SD卡,插到ZedBoard的SD卡槽,上电,连接串口调试工具。
可以看见上电后,过了一会,蓝色LED亮起,说明PL部分已经成功配置好。接着串口工具才收到ZedBoard发来的Linux的启动信息。如图21所示:
【图21】 启动ZedBoard的过程
(7)测试效果
登陆Linux后,在串口工具输入devmem 0x41200000 8 63,可以看到LED对应的二进制编码确实是63(左边是高位)。如图22和图23所示:
【图22】8表示数据的宽度(LED有8位,所以此参数是8);地址为上面Vivado分配的地址
【图23】 LED