ZedBoard--(4)嵌入式Linux下的LED实验(PS + PL)

2019-07-13 01:37发布

作为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卡槽,上电,连接串口调试工具。 可以看见上电后,过了一会,蓝 {MOD}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