【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?

如果用户参考Intel教程

Embedded Linux Beginners Guide

制作SD卡image,那么FPGA配置文件(.rbf)是在uboot阶段被加载。

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第1张图片

当某种原因(下文会讲).rbf加载失败,系统还会继续加载内核直到显示登录界面:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第2张图片

从表面上看,此时linux系统交互正常,rbf加载失败的提示信息也早被串口其他信息覆盖掉,所以经验不足的工程师可能无法第一时间获知rbf文件加载失败,从而导致他们后期要耗费大量时间调试直到定位到此问题。

但如果用户自己的工程也像DE10-Nano GHRD工程(DE10_NANO_SoC_GHRD 或者 DE10_NANO_SoC_FB)一样设计一个简单的LED电路(这个电路是一个计数器控制LED电平每隔0.5s翻转一次,以此形成LED闪烁效果):

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第3张图片

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第4张图片

就可以在加载过程中第一时间判断出rbf文件加载是否成功。.rbf加载成功后led[0]会闪烁。

当发现LED没有闪烁,说明rbf加载失败,可以从MSEL 设置和rbf文件路径等方向去继续定位问题。

确定MSEL设置

MSEL设置错误会导致rbf加载失败。

如果像这样选择File——Convert Programming Files生成.rbf:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第5张图片

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第6张图片

这样生成是.rbf文件是未经压缩的,SD卡启动时需设置MSEL为00000, 如果设置为01010则LED[0]不会闪烁。

如果继续点击Properties并选择了Compression然后生成.rbf文件,则启动时要设置MSEL为01010。

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第7张图片

如果是通过GHRD工程文件夹下面的Makefile文件自动生成的rbf文件,则SD卡启动时MSEL需要设置为01010, 因为Makefile里面设置为压缩模式:

关于MSEL模式设置与文件压缩之间的关系请参考Cyclone V handbook:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第8张图片

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第9张图片

 确定SD卡中rbf文件路径

如果rbf文件路径错了,rbf文件也加载不起来。

如果是用GHRD工程自带的Malefile文件生成boot.scr,就要在fat分区新建一个output_files文件路径然后将.rbf复制进去:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第10张图片

如果用户自己写的boot.script文件是这样设置:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第11张图片

就可直接将.rbf文件拷贝到SD卡的fat分区:

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第12张图片

这么一个小小led设计, 现象直接,定位方便,是不是非常妙?所以初学者在SOC FPGA调试的过程当中也可以这样设计哦!

【调试小诀窍】SD卡镜像启动过程中如何第一时间获取FPGA配置状态?以及如何定位FPGA配置失败原因?_第13张图片

你可能感兴趣的:(【soc,fpga,开发】,fpga开发,arm开发,soc,fpga)