ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细

FMQL开发流程

整体开发流程如下:

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第1张图片

具体开发流程:

  • Vivado工程搭建
  • ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第2张图片
  1. 首先根据自己项目的功能需求,结合原理图,明确vivado工程中所需搭建的PSPL部分的资源。

搭建使用的是vivado2018.2版本的vivado

  1. 创建vivado工程:

双击vivado软件,打开后点击Create Progect选项

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第3张图片

点击next,输入工程名字,选择保存路径,勾选Create Project Subdirector,路径不能有中文,工程名字不能有“-”中横线。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第4张图片

继续点击next,选择第一个选项RTL Project,勾选Do not specify sources at this time,这个选项是添加编程文件,咱们开发zynq一般不需要自己写代码,所以勾上这个选项。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第5张图片

点击next,弹出SOC型号选择的窗口,芯片型号可以从原理图中获得,如果原理图中的芯片型号不全,可去找硬件同时询问具体型号,在search中搜索自己所需的芯片型号,选中该型号,点击next

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第6张图片

之后会弹出一个参数显示界面,确认SOC型号正确后点击finish,完成工程的创建。

工程创建完成后,会进入正式的编辑工程的界面,如下所示

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第7张图片

点击左侧菜单栏中的Create Block Design选项,弹出窗口,填写block design工程的名字,这里使用默认名字,可根据自己需求修改

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第8张图片

点击OK,然后点击左侧菜单的Create Block Design选项,如下所示,可以关掉

IP Catalog和Project Summary两个窗口,一般用不到。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第9张图片

点击右侧页面中或右侧页面上方菜单栏中的“+”,可以添加IP核,或者右击右侧空白部分,在弹出的菜单中选择Add IP选项,首先必须添加的是zynq的PS IP核,点击加号后搜索zynq出来的就是PS的IP核,选中双击即可添加。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第10张图片

可以通过双击PS IP核打开PS的配置界面,配置PS的资源等,最重要需要配置的是DDR的选型。同理PL部分的IP和也可以双击打开配置界面进行一些参数的配置。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第11张图片

其他具体搭建block design的细节这里不再赘述,工程连接如下:

https://download.csdn.net/download/qq_38584212/87924602

搭建完工程后首先一定要保存,然后点击右侧上方菜单中的对号按钮(图中红色标出),检查搭建的block design是否正确,弹出successful代表block design无连线错误。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第12张图片

右击Source菜单中的带黄色小三角的design_1,弹出菜单中选择Generate Output Products

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第13张图片

弹出窗口中选择Global选项,点击Generate,输出产品。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第14张图片

之后同样右击这个带黄色小三角的design_1,弹出菜单中选择Create HDL Wrapper,生成顶层文件,顶层文件用于后续添加约束文件使用,生成对应需要约束的管脚。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第15张图片

双击Source菜单中前面带蓝色点的design1_wrapper,可以在右侧窗口中看到已经生成的对应需要约束的一些管脚。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第16张图片

接下来需要给这些管脚添加对应的约束,右击Source菜单中的constrs_1,弹出菜单中选择Edit Constraints Sets

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第17张图片

在新弹出的窗口中点击Create File,填写约束文件.xdc的名字,点击OK,在constrs_1目录下会新增加一个后缀名为.xdc的约束文件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第18张图片

然后点击左侧菜单中的Open Elaborated Design选项,会跳出添加约束的界面(根据block design大小的不同,打开的时间也不一样,有的工程可能打开需要十几二十分钟)打开后如下图所示,需要选择对应的约束管脚和电压,直到表中没有红色字样提示,说明所有需要添加的约束的管脚都分配了对应的约束。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第19张图片

也可以选择在之前新建的xdc文件中通过手动添加代码的方式添加约束(这个方法不建议,容易出错)

自己工程中所需的PL端的约束管脚,要去原理图中查找。

例如网口的约束,可以通过从RJ45插座的位号开始查找,再找到对应的PYH芯片,PHY芯片连接的就是PL端的约束。

将约束添加完毕后,保存工程,上方会提示Reload的字样,点击Reload,对应的.xdc文件中就自动添加了约束的代码。

全部做完后,点击左侧菜单中的Generate Bitstream选项

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第20张图片

弹出界面中,选第一个选项,后面下拉可以选择编译工程所用的CPU的数量,数量越多,工程编译的越快,但是占用电脑资源会越多,点击OK,等待完成综合、实现、生成bit文件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第21张图片

成功生成bit文件后,会弹出如下窗口,点击Cancel

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第22张图片

导出hdf文件,点击File-Export-Export HardWare

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第23张图片

弹出窗口中,勾选上include bitstream,点击ok,对应vivado工程目录下会多出一个.sdk的文件夹,里面存放的是.hdf文件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第24张图片

接下来就是去vivado工程的目录下,找到FMQL移植需要的.bit,.hdf,.bd,.xci四个文件,四个文件所在的目录如下:

.bit文件

路径:\your_project\project_1.runs\impl_2\*.bit

.hdf文件

路径:\your_project\project_1.sdk\*.hdf

.bd文件

路径:\your_project\project_1.srcs\sources_1\bd\design_1\*.bd

.xci文件

路径:\your_project\project_1.srcs\sources_1\bd\design_1\ip\

design_1_processing_system7_0_1\*.xci

    1. FMQL移植部分

打开Procise软件,新建Procise工程,点击New Project,填写工程名字,点击Next

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第25张图片

选择芯片型号,可直接看芯片上印刷的型号,或看原理图以及询问硬件同事,芯片型号选错误可能会导致最终系统无法启动、卡死。

之后一直点击Next、点击fimish,完成工程新建

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第26张图片

点击上方菜单栏中的Tools-Integrated Tools Options

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第27张图片

弹出窗口中,IAR的选项中添加IAR的安装路径,这样就可以通过Procise直接自动链接打开IAR软件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第28张图片

点击最上方菜单栏中的PSOC,下拉菜单中选择第一项From Vivado

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第29张图片

弹出窗口中点击Browse,第一个选项选择之前从vivado工程中取出来的四个文件中的.bd文件,第二个选项选择.xci文件,然后点击OK。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第30张图片

点击OK后会弹出一个对话框,提示引出DDR和FIXED_IO,点击确定

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第31张图片

等待几秒钟,弹出新窗口,选中FSBL和DeviceTree两个选项,点击OK

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第32张图片

等待几秒钟Procise会自动连接打开IAR软件,点击IAR软件上方菜单中的make按钮,图中红色圈出,下面编译窗口提示errors:0,说明编译成功。

再次提醒:IAR软件不能远程使用,否则会编译失败

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第33张图片

编译成功后,会在Procise的工程目录中生成fsbl以及设备树源码文件夹

Fsbl路径:\Your Project\SDK\design_1_platform\FSBL\Debug\Exe\fsbl.out

DeviceTree路径:\ Your Project \SDK\design_1_platform\DeviceTree

取出fsbl.out文件和DeviceTree文件夹

fsbl.out、bit文件、uboot.elf三个文件用于生成BOOT.bin

DeviceTree文件夹和.hdf文件用来编译生成.dtb设备树文件

再次切换回Procise软件,选择菜单栏中的PSOC-Create Boot Image选项

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第34张图片

弹出的窗口中选择Basic,点击第一行的Browse,选择路径,用于存放生成的BOOT.bin和.bif文件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第35张图片

Lock in下拉选择BOOT.bin文件存放路径,File name填写.bif文件名字,这个文件咱们用不上,大家随意填写就好,然后点击save。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第36张图片

点击Add按钮,弹出窗口点击Browse按钮,依次选择添加fsbl、bit文件、u-boot.elf文件,添加顺序不能错,否则Linux无法启动。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第37张图片

都添加完毕后最后点击Create Image,生成BOOT.bin文件。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第38张图片

    1. 虚拟机中编译生成.dtb设备树文件

打开编译FMQL设备树使用的虚拟机

将之前IAR编译生成的在Procise工程目录下的DeviceTree文件夹拷贝到虚拟机的任意目录下(这个目录自己定义,后续在编译设备树指令中将DeviceTree所在路径修改为自己定义的路径即可)

我的放在了自己定义的一个目录下了。

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第39张图片

然后将.hdf文件拷贝到虚拟机的如下目录:

退回到编译环境目录FMQL-Linux-SDK_20201022下:

右击鼠标,选择在终端中打开

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第40张图片

执行指令:source env.sh 重新打开的控制台需要重新执行一遍该指令

执行指令:./build.sh --hw /home/fmsh/tangbojian/DeviceTree/ --hdf device-tree/xlnx-dts/design_1_wrapper.hdf dtb

编译设备树

其中/home/fmsh/tangbojian/DeviceTree/路径配置为自己存放DeviceTree文件夹的路径,design_1_wrapper.hdf改为自己viaodo工程中生成的.hdf文件的名字即可。

如果搭建的vivado工程没有PL部分,编译设备树时,不需要引入.hdf文件,执行的编译设备树指令变为:

./build.sh --hw /home/{user_name}/Downloads/DeviceTree/ --nofpga dtb

设备树编译成功后会在Image目录下生成system-top.dtb文件,使用时需要改名为devicetree.dtb使用。

修改设备树节点:

fmql与zynq修改设备树节点的方法不同,fmql添加的节点都放在一个名字叫system-user.dtsi的文件内,需要通过父节点的引用来定义新的子节点,对应目录如下所示:

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第41张图片

不要在其余四个文件中修改设备树,即便修改了,编译后也不会生效,其余四个文件是通过DeviceTree文件夹以及.hdf文件编译后生成的,里面有vivado工程搭建的资源的设备树节点的描述,大家使用时,可以先不修改system-user.dtsi文件编译一次,这样其余四个文件中的设备树节点就根据你的DeviceTree文件夹以及.hdf文件进行了更新,然后再通过其余四个文件中的设备树节点的引用名字,在system-user.dtsi文件中通过引用添加新的设备树子节点信息。

下面是添加了EMMC分区节点和网口中PYH节点的system-user.dtsi文件的例子:

ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细_第42张图片

新添加的设备树节点信息,重新编译后,在上述四个文件中是看不到的,只能反编译刚才编译出来的system-top.dtb文件才能看到新添加的节点是否生效。

反编译指令:dtc -I dtb -O dts system-top.dtb > devicetree.dts

编译出的devicetree.dts文件可以直接打开查看。

PHY节点的地址信息根据原理图和PHY芯片的手册确定。

再加上Rootfs就可以起系统了。

希望大家点赞、收藏、关注哦!!!ヾ(o◕∀◕)ノ

你可能感兴趣的:(zynq,vivado,复旦微电子,fpga开发,linux,驱动开发,单片机,mcu,stm32)