原理图如下图,板卡FPGA同时使用2片flash配置芯片,左侧M25P64即EPCS64。2片flash配置芯片使用相同的SPI总线。
在不使用nios的quartus工程中,使用jtag烧写jic的方式固化程序到EPCS64,始终正常。
近期使用含有nios的quartus工程,发现无论是使用Nios® II Flash Programmer还是shell的方式均无法烧写程序,解决方法是直接焊掉U2 N25Q128。
焊掉U2前后使用Nios® II Flash Programmer烧写信息对比如下图(仅显示差异部分)
其中焊掉U2前 EPCS identifier is 0x20BA1F / EPCS status is 0x02 应该是U2
其中焊掉U2后 EPCS identifier is 0x202017 / EPCS status is 0x00应该是U3 EPCS FLASH
【为什么优先访问U2呢,求大佬指点】
使用Nios® II Flash Programmer烧写报错如下图
根据 Unable to use EPCS device Leaving target processor paused_Michael-H的博客-CSDN博客提示,新建一个文本文档,命名为nios2-flash-override.txt,将其复制到nios的安装程序的bin目录下面altera\13.1\nios2eds\bin
报错为:"No EPCS layout data - looking for section [EPCS-20BA1F]"
那么应该添加的代码则为
[EPCS-20BA1F] # EPCS64N (lead-free)
sector_size = 65536
sector_count = 128
修改后Nios® II Flash Programmer烧写提示正常,但是固化失败。
于是手动修改Nios® II Flash Programmer生成的sh文件,添加校验命令--verify,命令行执行,发现校验失败,如下图
使用sh脚本转换hex,生成jic的方式烧写,发现重启板卡后,FPGA内确实有nios核,但是c代码不执行。【我也很困惑,求大佬指点】