第一次用SDK,记录一下遇到的问题。
system_wrapper_hw_platform_0
第二节,zynq新建工程,调试及加载_design_1_wrapper_hw_platform_1-CSDN博客
1.再次Launch SDK,会出现system_wrapper_hw_platform_1,然后之前用的时候就把0删掉了。
但是发现0和1好像指的是ARM的两个核,所以不能改,因此要删除1,重新生成0。
ZYNQ PS工程选择 hw_platform0(解决SDK新生成的 hw_platform1)_zynq bsp重新定向 hw_platform0-CSDN博客
debug选择无串口调试
2.debug时没有连接串口。
使用的程序是RTC芯片显示实时时钟,但是电脑端没有连接串口,因此需要修改debug方式。
【JokerのZYNQ7020】SDK无串口DEBUG。-CSDN博客
stdin和out都要选择ps_..._0而不是uart。
run
3.run的不同选择有什么区别?
在main中加了断点,但是之前run时一直没停在断点,可能是没有进入main。所以想单步调试。
print与printf
在main中写了print函数,但是console并没有打印。
也有一种可能是程序并没有被下载到zynq。(因为没有找到fsbl)
FSBL
zedboard 程序固化到sd卡和QSPI(vivado sdk 2018.1)_vivado 下载到sd卡-CSDN博客
ZYNQ-Linux开发之(三)Vivado SDK使用,裸机开发调试,不带linux-CSDN博客
也不是。上述是程序固化并烧写到flash需要的。一般的下载就是run。
Board Support Package Settings
(之后的几小时就在看别的程序了)然后再打开SDK后发现可以配置:
https://www.cnblogs.com/YangGuangPu/p/14805024.html
上午的列表里没有这些。 开启xilffs才能构建后面的FSBL(First-Stage BootLoader)即BootLoader工程。
这个FSBL工程是随便New->Application Project就可以吗,只要main实现上述的功能即可。还是说FSBL是Project的一种特定的类型?
FPGA系统性学习笔记连载_Day20【xilinx ZYNQ7000系列基本开发流程】 之 《PS端程序固化》篇 - 知乎
好家伙,新建project时需要选择FSBL模板:
vivado版本不同还是什么原因,我打开的没有templates(好吧其实是需要Next后才会出现该界面)。
(但是提示报错了,没有xilffs library)
vitis2019.2: This application requires xilffs library in the Board Support Package._this application requires lwip library in the boar-CSDN博客
那么问题来了,对于已建好/代码写好的project,如何看它是不是FSBL呢?(因为程序不是我写的,但我要会用&看懂)
看知乎里人家的工程,是在ps_uart_hello工程中新建了FSBL工程:
并且FSBL工程会自动编译,也就是说,FSBL的代码不需要自己写,作者也只在main中添加调试宏定义 FSBL_DEBUG_INFO。
Boot Image
原来打开Create Boot Image的方式不同,出来的页面也不同?
这是我右键.bsp选择的Create:
可以看到都是空白。
这是我右键工程打开的Create:
出现了.bif !!
所以为什么找到的很多教程都是让右键bsp呢?还是说其实并没有什么区别?
总而言之,不会代码而要学会使用,并不简单。。。有种站在大佬肩膀但是站不稳的感觉
生成了!
QSPI程序固化
两种方式烧写程序:SDK软件烧写、或者Vivado软件烧写。
第一步,调至JTAG模式。在 SDK 菜单 Xilinx -> Program Flash。
啊这,完全空白,是因为没接板子?(JTAG不在我手里,只能暂且等等) 而且也没有参数可配置。
好吧,不是Program FPGA,而是Flash!!
第二步,配置参数。
第三步,调至QSPI模式。
串口连接
4.串口连接
zynq-7000系列基于zynq-zed的vivado初步设计之使用jtag->uart(MDM)_vivado sdk jtag 打印-CSDN博客
XMD Console
在sdk的xmd console.输入命令 connect mdm -uart
(没有JTAG的本人。。。)
只能先看理论知识了。
虽然每天都学的很慢,但至少在进步(PUA自己)
就是每周的组会被问上周做了什么的时候,有点张不开嘴。。。
思考
现在对于代码(main.c,其他的更看不懂)以及SDK的使用有了一个初步的了解。那么在下次烧录程序&调试的时候,需要怎么做,做什么?
首先,希望程序烧录不报错。所以如何看程序是否正确烧录?要在main.c里写print?如何才能给Concole一个信号?
其次,调试要通过串口。在波特率等配置正确、串口成功连接的情况下,应该会通过串口显示zynq发送的信息。但是串口如何给zynq发送信息?程序里是否包含接收串口数据的内容?