基于JTAG和Flash Programmer的NIOS II工程代码固化烧录
0赞基于JTAG和Flash Programmer的 NIOS II工程代码固化烧录
5.10.1 概述
Quartus II硬件工程会产生一个.sof的下载文件,通常用于JTAG在线下载调试。如果把这个文件转化为.pof文件可通过AS接口对FPGA的配置芯片(通常是一片FLASH,小规模器件的FLASH一般会选择接口简单、体积较小的SPI FLASH)进行固化;也可以将.sof转化为.jic,仍然使用JTAG接口进行配置芯片的固化。而NIOS II软件工程会产生一个.elf文件,由于软件必须依赖于硬件.sof文件的配置才能够运行,因此软件工程产生的.elf通常必须和.sof文件一起固化到配置芯片中,它们的固化烧录则需要在Qsys中添加一个名为EPCS Controller的组件来完成。
这个EPCS Controller顾名思义就是EPCS芯片的控制器,这是由于Altera原厂提供的SPI FLASH就命名为EPCS,如1Mbits容量的EPCS1、4Mbits容量的EPCS4等。而这个EPCS芯片其实和市场上各种SPI FLASH其实完全兼容,出于采购方便和成本考虑,一般设计应用会选择购买兼容的SPI FLASH来提到EPCS芯片,如我们SF-CY3板载的就是一颗Micron的M25P40。大家不要担心,M25P40和EPCS4是完全兼容,不存在任何以次充好的嫌疑,Micron和三星是存储器行业的老大,弄不好Altera也是买的它们的die封装下忽悠咱们呢。
好了,言归正传,回到这个EPCS Controller的功能上来,它的一个功能是配合EDS的Flash Programmer将我们工程产生的.sof和.elf烧录到配置芯片中。那么大家可就纳闷了,它既然老实现这个功能,势必它必须在FPGA中先跑起来。没错,在我们使用Flash Programmer前,我们通常都需要使用JTAG在线烧录.sof文件到FPGA中,这样我们就可以借助已经运行起来的EPCS Controller进行配置芯片的固化操作了。此外,已经固化好的EPCS Controller也在整个NIOS II系统软件启动过程中扮演Boot-Loader的角色。如图所示,我们可以先了解一下基于NIOS II应用的FPGA系统的启动过程,由于我们已经使用 Flash Programmer将FPGA的.elf软件和.sof硬件配置bits流固化在了配置芯片中。当FPGA上电时,和没有软件的FPGA器件一样,FPGA本身会加载逻辑部分的配置数据,即我们的.sof配置数据;FPGA逻辑允许起来后,EPCS Controller也就准备就绪,那么它里面的Boot-Loader代码就会去执行从配置芯片搬运软件代码的工作,这样软件代码就在已经运行起来的硬件系统中跑起来了。整个过程大体就是这样。
……
5.10.1 软件工程移植设置和Flash Programmer下载操作
……
由于图片较多,文件较大,请大家到以下的百度网盘下载:
《SF-CY3 FPGA套件开发指南Ver7.04 (by特权同学).pdf》5.10小节:
http://pan.baidu.com/s/1sjLMvm9