【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
最近学习zynq较多,这里做一个笔记,供日后参考使用。zynq是xilinx公司出的一款soc,上面包含有双核arm9+fpga,arm9可以运行裸机程序或者是linux,fpga可以做一些定制化的硬件开发,比如说10个以上的串口等等。
1、开发板
目前学习zynq使用zedboard较多,淘宝上可以购买黑金的版本,只需要使用两根usb线+一个电源就可以开始开发和调试了。当然,如果需要开发网络,还需要一根网线。
2、开发软件
开发zynq需要安装vivado。注意在安装的时候一定要选择安装sdk。vivado主要是负责硬件环境的搭建,而sdk主要负责软件的开发。
3、开发过程
zynq的启动程序是这样的,一般内置的rom代码启动fsbl,fsbl然后加载bitfile和app程序。通常fsbl、bitfile、app会生成一个大的BOOT.bin,将BOOT.bin烧录norflash或者是sd卡,这样就可以程序就可以永久地驻留在开发板中了。
4、调试方法
目前调试方法主要是jtag调试+sdk单步调试。zedboard有两根usb线,一根usb负责串口打印,另外一根usb负责jtag烧录。注意,这两个usb线连接的都是usb2uart芯片,但是是不同厂家的芯片,所以需要安装不同的驱动。
5、fsbl和app区别
fsbl是系统提供的启动代码,主要功能就是加载bitfile和app。fsbl由user code和bsp构成,这和app的构成是一样的。所以fsbl和app其实可以共享一个bsp程序。不过稍有不同的是,fsbl会调用ps7_init.c里面的函数,这个文件需要对ddr、时钟做一些初始化,其他部分没有太大的差异。
6、vivado提供了哪些ip core
vivado提供的ip core还是很多的,常见的gpio、uart、dma、fifo、hdmi等都可以轻松找到,但是复杂一点的算法,恐怕就需要自己写了。zynq上面使用的是axi总线,最后将ip core bind到总线、分配一个地址空间就可以了。如果是定制的ip,那么后期就需要综合、实现、构建bitfile了。
7、app有哪些自带程序
vivado提供了很多程序,不管是fatfs、lwip、rsa这些函数库,还提供了freertos、peripheral test、bootloader、linux、roofs这些复杂程序的代码,大家可以根据自己的实际情况灵活使用。
8、zynq应该怎么学
市面上关于zynq的中文学习资料还是有一些的,但是还是建议大家多看看英文原版资料、边看边练,总能找到办法解决的。不管是复杂的网络、声卡、hdmi,还是简单的gpio、uart,事实上都是前人已经犯过的错误,问题不是很大。此外,zynq学习的曲线很高,既要懂硬件、还要精通软件和fpga,熟悉实时系统、编译器、链接文件和驱动开发,或许这才是它的有趣之处。
9、zynq的最佳应用场合
个人觉得图像和定制化场景是zynq的最佳战场。比如如果有一个场景需要10个串口,那么一般soc是很难满足的,zynq就不存在这个问题。我们可以自己在fpga实现,此外如果是图像开发,把一些简单的算法直接用fpga实现,用arm来做调度和开发,其实这也是非常合适的。此外,用zynq学习一下fpga,也是很不错的,一举两得。