DE10-Nano 的 GHRD工程(DE10_NANO_SoC_GHRD 或者 DE10_NANO_SoC_FB)的top文件都设计了一个LED灯闪烁电路:
电路如下:
这个仅仅是测试一个LED吗? 或者仅仅是演示一个计数器电路吗?其实不止这些,它的用处可大了呢!
当我们把生成的sof文件转化成rbf文件拷贝到SD卡, 系统启动的过程中如果一眼看到开发板led亮了, 说明FPGA加载成功,如果没有亮,说明加载失败。所以,这个LED可以帮助我们直观判断rbf文件加载是否成功。
在linux开发调试过程中大家会发现,rbf如果没有加载成功,系统也继续boot起来,如果没有这个LED, 经验不足的工程师可能不能第一时间判断出rbf文件加载出现了问题。
有的人说可以在开发板串口里面到处找提示,但是 串口里面的提示信息太多了,不好找。而且串口中rbf加载反馈的信息很容易被kernel启动后的打印信息覆盖掉以至于你根本都找不到。这个LED灯直观又简单,帮助定位非常方便!
MSEL设置
MSEL设置错误也会导致rbf加载失败。
当发现rbf加载失败时,可以去查看MSEL 是否设置成功。
如果像这样选择File——Convert Programming Files生成rbf:
这样生成是rbf文件是未经压缩的,那么这个rnf文件拷贝到SD卡以后,需要设置MSEL 为000000, 如果设置为01010,你会发现系统可以正常起来:
但是系统起来后,你的驱动和应用加载都看不到效果。此时查找串口打印信息里面也没有了rbf加载的反馈信息,因为被覆盖了。
如果你在start kernel 的时候拔掉DE10-Nano电源,这个时候rbf加载的反馈信息还在,这是你会看到提示如下:
altera_load: Failed with error code -4 (代表rbf加载失败),具体参考https://www.rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide
当然,点击File——Convert Programming Files后,如果继续点击Properties选择了Compression生成是rbf文件启动时要设置MSEL 为01010。
如果是通过DE10_NANO_SoC_FB文件夹下面的Makefile文件自动生成的rbf文件,则启动的时候MSEL需要设置为01010, 因为Makefile里面设置为压缩模式:
SD卡中rbf文件路径
如果rbf文件路径错了,rbf文件也加载不起来。
如果自己设置rbf文件的路径放置(boot.script文件)是这样设置:
那么rbf文件拷贝到SD卡的时候就直接放fat分区。
如果是对DE10_NANO_FB工程直接进行make all 生成boot.scr 则rbf要这样放置:
在fat分区新建一个output_files文件路径然后复制进去。
所以当rbf加载不成功,也要去检查rbf文件路径是否正确。
看,如果rbf加载成(FPGA 配置成功)了你会看到这样的现象:
DE10_NANO_SoC_FB——led
所以,这么一个小小led设计, 是不是非常妙。 您在FPGA SOC 调试的过程当中,也可以这样设计哦!