[原创] Zynq学习笔记 (2)矿板运行SDK创建的PS简单工程

cruelfox   2023-7-22 17:38 楼主

  (接前一篇 Zynq学习笔记 (1)矿板小试FPGA开发流程 )

 

  Zynq PS部分的开发涉及到交叉编译ARM Cortex-A9 CPU运行的程序,也就是Zynq上面运行的程序。这部分工作不是由Vivado负责的,需要用另外一套软件工具:Xilinx SDK.

  SDK开发软件又需要Zynq的配置信息,也就是在Vivado工程中设置的PS时钟、DDR、外设那些。根据教程的介绍,在Vivado工程完成之后,使用Export功能,将硬件信息导出给SDK用。

173533ciu81uxyqsbib8s8.png

  在导出的时候可选择包含bit文件,也就是FPGA部分的配置码流。原因是Zynq启动是由PS部分主导的,需要PS负责PL (FPGA)的初始化,不像单纯FPGA只要将bit烧写到外部flash中就可以自动加载了。导出的文件后缀是 .hdf

 

  SDK的IDE是Eclipse风格的,操作起来和常见的MCU近似了。

  在SDK中新建工程的时候,要选择目标硬件平台,而我必须用自己的板子而非所列的硬件,于是点旁边的New按钮。

173533m9s7xd5rduzurdws.png

  然后就要用到从Vivado中导出的硬件信息了,点Browse选择之前生成的.hdf文件,软件会自动取一个名称(可能会长,自己可以修改)。

173533rwgukrggxxyrtbzb.png

  再回到上一个对话框,就看到目标硬件平台已经变成新建的了。

 

  先给新的软件工程取个名(比如我用的demo0),SDK还会同时创建一个BSP: demo0_bsp

173533htdc94k4dmk4l6ad.png

  再点Next可以看到一些工程的模板供选择。作为新手有必要看一下工程怎么写的,可以选最简单的Hello World,这里选Memory Tests,顺带测试一下DDR的配置是否能工作。

 

  确认以后,SDK就自动创建工程并编译了,可以在Project Explorer中看到源文件等内容

173533lc1mv1muscmc1v1z.png

  这看起来和开发MCU用的arm-none-eabi工具链有几分相似呢,编译结果也是得到elf文件。选中erf文件,点鼠标右键弹出菜单,就可以选择Debug或者Run来运行了。当然也类似于MCU开发环境,前提是调试器要连好了,这里需要Xilinx 下载器连到了Zynq的JTAG上面。

173533yatloi4xxlbwmh36.png

 

  我已经连好了矿板,确认FPGA可以下载bit文件的情况下,SDK中选择Debug或Run还是遇到了问题:

173533n84tcc83o25v8oy8.png

  这像是一个调试器的故障,矿板的PS部分本来已经运行起Linux了,可能不能被JTAG复位。

  关于Zynq的启动,我所知是有几种模式的。那么不让矿板的Linux启动,也许是可以解开这个问题。从电路图上分析,矿板是用的NAND flash启动方式,那么改一下 PS MIO[4]脚的上拉为下拉,就可以切换到JTAG boot模式避免板子自己启动了。

173533gbym83e9hakriaij.png

 

  矿板上的boot模式没有接死,上拉和下拉电阻都有,不用飞线直接改焊电阻就可以了。

173533e9e4om2mw9tt9nqb.png

173533ea0yiygaxwieieww.jpg

  把照片上红框中R2578电阻焊下来,改焊到旁边R2585的位置上,矿板就不会从NAND启动了。

 

  改启动模式之后,在SDK中选择Run,顺利看到了串口打印出来的信息:

173533xzvq0wtllwvvwv5q.png

 

  作为模板提供的Memtest程序是在Zynq7010的片上SRAM中运行的。这一点可以由lscript.ld脚本佐证:

173533vhli92xzgg9s977k.png

  为了分析程序怎么运行的,可以试着去反汇编一下demo0.elf 文件。使用SDK目录下面的arm-xilinx-eabi-objdump –d 来反汇编,可以看到所有代码部分。

  比如,在地址0地方是中断向量表:

173533jh3cqtp2tgnqg1p3.png

  也可以查找main函数在哪里:

173533ctk9j9j1wkwxzy3t.png

  整个程序的初始化部分比STM32 MCU还是显得代码量多,不过,想想能当成一个667MHz主频,有256MB DDR RAM可以用,还可以自己用verilog写外设的MCU板子来玩,可以发挥的地方就多了。

本帖最后由 cruelfox 于 2023-7-22 17:40 编辑

回复评论 (7)

我把我的矿板也找出来了。

跟着楼主学习了

点赞  2023-7-23 14:18

这个架构的软件部分还是好写,驱动和示例非常全。

点赞  2023-7-25 14:33

还有继续更吗?最近也打算玩一玩

 

点赞  2023-10-21 14:58

支持楼主长期分享,正在学习ZYNQ编程中,感谢

点赞  2023-12-8 19:21

现在是vitis2023.2了;建立freertos工程会报错

点赞  2024-1-15 13:26
引用: 风过不留痕 发表于 2024-1-15 13:26 现在是vitis2023.2了;建立freertos工程会报错

已搞定

点赞  2024-1-26 10:06

这个架构的软件部分还是好写,驱动和示例非常全。   thanks for you

点赞  2024-5-3 22:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复