本文内容学习自正点原子ZYNQ领航者FOGA视频-p41
众所周知之,所有软件的开发学习都是从Hello World开始,Zynq PS也不例外。
图为ZYNQ嵌入式最小系统。
Memory用来存储数据、RS232用来与上位机通信。
1.它是使系统工作的最小条件。
2.它是其它系统建立的基础。
上图就是PS
下面就通过创建一个Hello World工程来学习PS的开发流程。
ZYNQ的开发不论是PL还是PS端都是要从Vivado中的创建工程开始,所以和PL端开发一样,首先打开Vivado18.3。
同PL端开发一样,PS端同样需要创建工程。
创建好工程路径和工程名称后我们点击Next。
PS端的开发也是创建RTL工程,然后我们这里选择此时不指定源文件。
这里选择好对应的芯片型号。
工程创建完毕。
PS端的设计实际上会用到许多IP核然后将其组合起来,组成一个System,所以要从创建模块设计开始。
起名为system。
这里的Diagram就相当于一个“画板”,在这里添加IP。
这个就是ZYNQ的PS部分,将其双击将其添加进来。
这样就将PS添加到Diagram中了,之后我们将对他进行配置。
这里配置好存储器类型和型号。
这里我们要配置RS232协议的通信串口也就是UART来实现,在配置之前我们首先要看一下板子的设计原理图。
原理图里可以看到UART_RXD和UART_TXD对应的分别是PS_MIO14和PS_MIO15,所以接下来配置UART的时候,就要选择相对应的MIO。
这里就直接选中和原理图对应的引脚即可。
接下来配置串口通信的波特率
选择115200即可。
最后点击OK,配置完成。
注意:MIO电平的配置,要结合原理图,本实验中Bank1用的是3.3v,Bank2用的是1.8v。
M_AXI_GP0和M_AXI_GP0_ACLK这两个是PS与PL端的IO口和对应的CLK,把下图勾选取消即可。
FCLK_0就是PS提供给PL端的CLK,因为没有用到PL所以这里也取消掉。
FCLK_RESET0_N这个是PS端提供给PL的复位接口,取消掉。
未用到的接口取消掉后,我们点击Run Block Autoamtion 自动完成模块端口的创建。
之后可以验证设计,点击此图标,可以自动验证设计是否有一些错误或者警告。
无错误和警告,设计完成。
这里就是对刚才包含的每一个IP和都生成一个管脚约束or其它什么结果。
这里选择每个IP一个输出,因为我们只有一个ZYNQ PS的IP,所以也就只有一个输出。
生成后每个IP核都会有他综合、实现和仿真的一些结果,比如实现中的管脚约束等。
这个就是为我们的设计生成硬件描述文件的顶层文件,相当于用硬件描述语言将刚才的设计封装起来。
这里选择默认选项,当设计有更新的时候吗,它也会自动更新。
因为没有PL端设计,所以不需要生成Bitstream,直接导入SDK就行。
这里问你是否导入Bitstream文件,因为没有用PL所以不导入。
点击OK之后,工程文件夹下会多一个.sdk的文件夹,其中只有一个.HDF文件。
Hardware Design File这个文件就描述了硬件设计的一些信息。
然后启动SDK,后可以看到这个文件所包含的文件。
File-New-Application Project
设置好工程名其它都保持默认,会默认生成一个Board Support Package然后NEXT
这里选择一个空的例程。
然后就生成了,软件工程的一些文件。
这里的Board Support Package,应用软件是在硬件运行。最下面的文件夹就包含硬件信息,最上面文件夹就是软件应用。BSP就相当于两者的桥梁,会有一些驱动。
在src文件夹下,创建一个New Source File,命名为main.c
注意要带上.c
之后,就可以在右侧编辑代码,然后我们写入hello world的代码。保存后会自动编译。
板子也要连接好串口线,PS和上位机通信用。
连接好与串口,波特率与之前的设置对应都是115200。
这个.elf就是需要下载到板子上的可执行文件。
右键hello_world1-Run As-1Launch on Hardware,下载到板子上。
下载成功之后,可以再SDK Terminal窗口中看到打印出来的hello world
这个Hello,World!来自于我们下载到板子上的程序运行之后,通过与上位机的串口发送到上位机中。
至此Hello World实验完成!。