初识zcu102,第一步就是来一个hello world起航,瞎折腾了一番,总结并分享给各位,希望大家少走弯路。
希望读者,能够按图索骥,不费力气,尽快上手,以便利用此高大上的设备为祖国建设做贡献。
目录
zcu102简介
Zcu102是xilink zynq MPsoc的一款评估FPGA开发板。集成了ARM核(PS)和FPGA(PL)两部分。Ps与pl通过axi总线通信,pl可以通过硬件编程实现一些软件算法的加速(图像,通信算法,AI算法,CNN等),把结果回传给PS。
通过vivado 配置ps和编码pl算法。实现硬件设计。
通过sdk导出bsp并编写app,实现软件设计。
软件初学者,熟悉环境的第一件事,就是调试一个hello world开始的。
参考
《ZCU102-quickstart.pdf》
《ZCU102原理图.pdf》
《UG1182.pdf》
还有网上的一些优质博客。
开发环境
- vivado2017.4(包含了sdk)
- zcu102评估板
- zynq Mpsoc
xilinx工具必须要对应版本匹配才能正常工作。这点要切记。
开发流程
vivado设计硬件
sdk开发软件
测试验证
vivado硬件设计
最简设计:PS配置一个uart串口,PL do nothing
创建硬件工程
打开vivado->quick start->create project->next
填写硬件工程名:minhw 最简硬件
选择工程路径->next
选择RTL(register transfer level)
选择board,厂商,版本型号
然后finish
添加zynq mpsoc设计
然后在IP INTERGETER->Create Block Design->修改Block Design name
在sources里生成了xx.bd文件(block design),点击open block design弹出diagram 硬件模块设计图像界面
添加芯片zynq Mpsoc,点击“+”好添加IP(知识产权,别人设计好的硬件模块),输入zynq找到zynq MPsoc,双击选择
自动生成如下如的zynq mpsoc芯片。
配置芯片
双击模块图标得到芯片配置界面
配置uart:IO configuration->low speed->IO peripherals->UART->UART0,UART1
两个uart都配置
其他基础配置参考《ug1182》
配置DDR:本来DDR可以使用默认的配置,新款DDR为镁光的16bit位宽,需要重新配置
配置如下:我的新16bit位宽的镁光DDR4。先选一个镁光的DDR,然后修改为16bit位宽的配置。如果是8bit位宽的DDR则使用镁光默认的即可。其他厂商的ddr,也参考对应配置。
然后连接时钟线:不然会报错。
验证设计生成bit文件
然后在检验设计,鼠标右键validate design
执行成功:
在block design中的design source的xx.bd文件鼠标右键generate output products
执行成功:
同样在点击block design文件鼠标右键产生wapper文件
然后综合,执行(也可以直接点击generate bitstream)。在design runs可以查看综合进展。
这里我点击generate bitstream,然后默认点击。
综合成功后。点击取消即可。导出bit文件和hdf文件。
此时已经在工程目录下生成了bit文件:xx/xx.runs/imple_1/xxx_wapper.bit
生成hdf文件
然后点击vivado FILE->export ->export hardware->默认确定。此时已经生成xxproj/xx.sdk/xx_wapper.hdf文件。这个xx.hdf文件用于sdk构建硬件平台和bsp,最后基于bsp编写软件。
包bit文件拷贝到xxx.sdk目录下,方便后续生成boot.bin文件。需要用到bit文件(硬件code)。
SDK设计软件
利用hdf文件生成硬件平台软件
vivado FILE->Launch SDK->default ok生成sdk硬件平台code。
然后我们需要在sdk创建bsp和app应用。
创建hello app
SDK FILE ->NEW ->Applicant project 工程名hello
使用默认配置,然后next,不要选finish。
选择模板helloworld工程finish。
sdk自动生成hello.elf文件。如果没有,点击hello工程鼠标右键build project。生成的hello.elf文件在工程下面的debug目录下。
至此hello world工程已经建立并生成了hello.elf可执行文件。那么我们如何烧录到zcu102并调试呢。
fsbl工程
要烧录zynq mpsoc必须要生成image bin文件,需要一个fsbl.elf文件,bit文件和app hello.elf文件。
那fsbl.elf文件哪里来呢,这个需要自己建立一个fsbl工程,不要怕,这个是xilinx sdk的一个模板工程,自动生成,不用修改一行代码。毕竟我们现在还不知道怎么改代码。
fsbl是个什么东西呢?其实就是一个BootLoader。
建立fsbl工程,生成fsbl.elf文件。
SDK FILE ->NEW ->Applicant project命名fsbl-->next 选择FSBL模板工程,然后直接build project。生成fsbl.elf文件在fsbl工程目录下的debug目录下。
生成boot.bin
然后SDK xilinx->create boot image
烧录测试
生成boot.bin后,sdk xilinx program flash烧录boot.bin到zcu102板子上。
连接jtag线到zcu102上,然后点击program。大概需要几分钟。
连接串口和jtag:串口在ZCU102板子上的位置
连接串口到secureCRT,或者其他串口上位机工具。输出打印如下:
串口配置默认为115200 。com口查看设备管理器COM。
至此一个完成的zcu102的uart hello world工程就完毕了。
如果有疑问,欢迎多多交流。如有错误,请不吝指正。