流程
为了用ZYNQ实现CAN总线功能,分为多个阶段:
1学习小梅哥视频,了解zynq简单工作搭建的流程,比如点亮LED。
GPIO 功能
按照小梅哥的视频搭建ZYNQ-PS应用系统时,vitis没有出现ps7_gpio_0这个硬件。这导致vitis软件编程时无法识代码中的XPAR_GPIO_0_BASEADDR 。现在考虑重新梳理流程,即在vivado搭建流程时,发现到底是哪个流程出现的问题。
问题1:问题是在搭建流程时,没有添加PS端的GPIO。在点击vivado diagram中的zynq时,会出现这个框图。如果GPIO选中,相应的位置会打上钩。此外,不同于stm32,需要在配置GPIO时明确位置。在ZYNQ时,需要用到GPIO时,所有的MIO与GPIO是对应的。
问题2:更新zynq系统的硬件文件后,已经可以在hardware specification看见ps7_gpio_0。但是,现在出现system wrapper的out-of-date问题。右键点击update没有效果,直到点出build project。
问题3:编绎之后,出现error错误,内容如下图。由于前面主要是针对include-xgpiops.h出现引用问题,但是现在这个警告消失,因此暂时不处理error问题。问题在于,当准备run configuration 时,配置菜单缺少xilinx C/C++ Application(GDB)选项。这直接导致无法运行程序。后来发现,这个错误似乎是之前编绎产生的问题,重新更新系统、编绎软件之后,没有这个问题。
针对缺少GDB问题,在xilinx SDK do not have GDB中发现,原来system debugger本身就是选择项。【这说明很多软件问题,不能陷入其中,有些问题可以直接跳过】
问题4:在使用system debugger时,出现DONE pin no high错误。这篇文章提醒我先在vivado 下载bit流,测试成功。这个问题说明SDK与vitis的软件差异会导致不少额外问题发生。
问题5:在能够下载程序后,LED可以闪烁。但是随后发现,即使改变了程序之后,LED的闪烁频率也不变。最后调整C语言逻辑为只点亮不闪烁,下载程序后LED仍然闪烁,说明程序下载出现其它问题。后来发现,可能是下载配置问题,小梅哥板子在刚开始作用时,需要设置为QSPI模式,方便测试板子功能。但是实际使用时,需要调整到JTAG模式。