琐碎知识点
PS端的IO分配相对固定,不能任意分配,且不需要在Vivado软件里分配管脚。但还是需要建立Vivado工程配置PS管脚。在IP生成的输出文件中已经包含了PS端引脚分配的XDC文件,绑定了PS端的IO,因此不需要再新建XDC绑定这些引脚。
本章开始使用ZYNQ的图形化方式建立工程create block design。
PS端外设配置:
ZYNQ的PS端外设端很多是复用的,相同的引脚号可以配置成不同的功能(在Peripheral I/O Pins中修改)具体端口功能需要根据核心板原理图的设计进行选择。
生成顶层文件
Generate output products 会生成block的输出文件,包括IP,例化模板,RTL源文件,XDC约束,第三方综合文件等。
在export --> export hardware 导出硬件信息,这里就包含了PS端的配置化信息。此时,在本项目文件夹下,会多出一个sdk文件夹,文件夹中有一个.hdf文件,这个文件即为图形化设计后的硬件配置信息。
**_bsp文件夹下,bsp board support package板级支持包,包含开发板所需要的驱动文件,用于应用程序开发。
在 fsbl_debug.h文件中添加宏定义#define FSBL_DEBUG_INFO 可以在启动输出FSBL的一些状态信息,有利于调试,但会导致启动时间变长。
PS端UART读写控制
实验目标:用UART进行数据传输,每隔1s向外发送一串字符,如果收到数据,产生中断,并将收到的数据再发送出去。
在UART模块中用到了 TxFIFO, RxFIFO
SDK程序开发:
(1)主程序流程
UART初始化-->设置UART模式-->设置数据格式-->设置中断-->发送UART数据-->检查是否收到数据-->若收到数据发送收到的数据,否则等待1s继续发数据
(2)中断流程数据
中断初始化-->设置接收FIFP trigger寄存器,设置为1,即收到一个数据就中断-->打开接收trigger中断EMPTY及接收FIFO空中断RTRIG
(3)中断服务程序
判断状态寄存器是trigger还是empty-->清除相应中断-->trigger状态读取RxFIFO数据,empty状态将接收标志ReceivedFlag 置为1.