1、近来在用 NIOS2 完成一个项目,遇到一个奇葩问题:前些天,用 Quartus II 11.0 配合 Qsys 搭建了 NIOS2 Project,程序调好了,打算用板子上的EPCS64N 固化一下代码。首先,把 NIOS2 的 Reset Vector 设置为 EPCS 基地址,EPCS 基地址则配置为 0x00,然后在 NIOS2 中导出 EPCS 的四个引脚 DCLK,SDO ,SCE,DATA0 并且连接和分配,再把 Dual-Pourpose Pin 都设置为 Regular I/O Pins。然后使用的是 EDS 11.0,用 EDS 11.0 的 NIOS2 Flash Pro
2、grammer,可以识别 CPU ID(Name ,Timestamp 都 OK) ,发现可以正常擦出和烧写程序,但是奇怪的事情是,Run as Hardware NIOS2 程序 可以正常运行。EDS11 Flash Programmer 烧写之后,FPGA 的硬逻辑部分可以正常运行,NIOS2 的软逻辑(ELF 文件生成的 flsh)部分却始终无法执行,断电重启,复位都不好使,心拔凉拔凉的按照别人帖子和 Altera 官方的 JIC 格式转化下载,同样还是 NIOS2 逻辑无法运行,以至于整个人都不好了。后来发现很多人都遇到这个奇葩问题,开始怀疑是软件的 bug(因为不少人提到) ,后来把
3、 Quartus 11,12.1,13.0 都遍历一个遍,还是没有解决今天,决定不用 Quartus 11 的 Qsys 了,随便用 SPPC Builder 配置了一个系统,发现竟然可以烧写了成功了,NIOS2 程序部分可以正常执行了这尼玛太让我抓狂了我感觉是 Qsys 有 bug,为毛 SOPC 下使用 NIOS2 IDE 就可以正常烧写,这说明我的硬件没有问题。唯一区别就是,SOPC 的 ECPS 可以正常烧写和启动,但是Qsys 搭建的系统在 EPCS 烧写下就 boot 不起来了Nios II 下载程序到串行配置芯片 EPCS 方法:1 在 SOPC Builder 内添加 epcs
4、_controller 模块,将 cpu 的 reset 地址设置在epcs_controller 上2 重新编译 Quartus3 在 Nios II IDE 里将 system library 的 Program memory(.text)和 Read_only data memory(.rodata)设置为onchip_mem 或者 sdram,编译。4 下载 sof 文件到板子5 进入 Nios II IDE,在 Tool 菜单下选择 FLASH Programmer,选择要下载的工程和与工程配套的.sof 文件一起下载到 EPCS 中,注意一定要同时选择两个一起下载,hardware
5、 image 选择 custom 即可,memory 选择 epcs controller。系统会自动分配地址。如果不选择同时下载配置文件,会出现提示。Nios II 下载程序到 CFI FLASH,配置文件到串行配置芯片 EPCS 的方法:1 在 SOPC Builder 内添加 CFI_FLASH 模块,将 cpu 的 reset 地址设置在CFI_FLASH 上2 重新编译 Quartus3 在 Nios II IDE 里将 system library 的 Program memory(.text)和 Read_only data memory(.rodata)设置为onchip_me
6、m 或者 sdram,编译。4 下载 sof 文件到板子5 进入 Nios II IDE,在 Tool 菜单下选择 FLASH Programmer,选择要下载的工程到 CFI FLASH 里,配置程序下载到 EPCS 中(也可以不加 epcs_controller 模块,通过 POF 方式固化配置程序)不用 AS 接口,用 JTAG 口配置 EPCS 器件,具体步骤如下:1 在 Quartus 中打开工程,编译生成配置文件.sof2 选择 File-Convert Programming Files,调出 Convert Programming Files 对话框3 Ouput progra
7、mming file 对话框内,Programming file type 选择 JTAG Indirect Configuration File(.jic);4 Configuration device 选择使用的配置芯片,如 EPCS165 File name 填写输出文件名称,如 output_file.jic6 Input files to convert 对话框内,选中 Flash Loader,点击 Add Device 按钮,在弹出对话框中选择你的 FPGA 芯片7 选中 SOF DATA,点击 Add file 按钮,在弹出的资源浏览器中找到并选中.sof 文件,打开它8 点击
8、 generate 按钮生成 output_file.jic9 打开 Quartus 的 Programmer 对话框,选择 JTAG 模式10 点击 add file 按钮,选择 output_file.jic 文件,并将 Program 复选框上打勾11 确定好 JTAG 电缆后,点击 start,Quartus 会先配置 FPGA,然后再对 FPGA 烧写配置芯片主动配置方式(AS)和被动配置方式(PS)和最常用的 (JTAG)配置方式:AS 由 FPGA 器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS 系列. 如EPCS1,EPCS4 配置器件专供 AS 模式,目前只支
9、持 Cyclone 系列。使用 Altera 串行配置器件来完成。Cyclone 期间处于主动地位,配置期间处于从属地位。配置数据通过 DATA0 引脚送入 FPGA。配置数据被同步在 DCLK 输入上,1 个时钟周期传送1 位数据。(见附图) PS 则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在 PS 配置期间,配置数据从外部储存部件,通过 DATA0 引脚送入 FPGA。配置数据在 DCLK 上升沿锁存,1 个时钟周期传送 1 位数据。(见附图) JTAG 接口是一个业界标准 ,主要用于芯片测试等功能 ,使用 IEEE Std
10、1149.1 联合边界扫描接口引脚,支持 JAM STAPL 标准,可以使用 Altera 下载电缆或主控器来完成。AS PS JTAG 的区别:AS 模式: 烧到 FPGA 的配置芯片里保存的,FPGA 器件每次上电时,作为控制器从配置器件 EPCS 主动发出读取数据信号,从而把 EPCS 的数据读入 FPGA 中,实现对FPGA 的编程;PS 模式:EPCS 作为控制器件,把 FPGA 当做存储器,把数据写人到 FPGA 中,实现对 FPGA 的编程。该模式可以实现对 FPGA 在线可编程;JTAG:直接烧到 FPGA 里面的,由于是 SRAM,断电后要重烧;.pof 文件可以通过 AS
11、方式下载(保证 byteblasterII/usb blaster 连接正确);.sof 文件或者转换的.jic 可以通过 JTAG 方式下载。FPGA 在正常工作时,它的配置数据存储在 SRAM 中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用 PS。在实用系统中,多数情况下必须由 FPGA 主动引导配置操作过程,这时 FPGA 将主动从外围专用存储芯片中获得配置数据,而此芯片中 fpga 配置信息是用普通编程器将设计所得的 pof 格式的文件烧录进去。 专用配置器件:epc 型号的存储器 常用配置器件:epc2,epc1,epc4,epc8,epc1441(现
12、在好象已经被逐步淘汰了 )等 对于 cyclone cycloneII 系列器件,ALTERA 还提供了针对 AS 方式的配置器件,EPCS系列. 如 EPCS1,EPCS4 配置器件也是串行配置的. 注意,他们只适用于 cyclone 系列. 除了 AS 和 PS 等单 BIT 配置外,现在的一些器件已经支持 PPS,FPS 等一些并行配置方式,提升配置了配置速度。当然所外挂的电路也和 PS 有一些区别。还有处理器配置比如 JRUNNER 等等,如果需要再 baidu 吧,至少不下十种。比如 Altera 公司的配置方式主要有 Passive Serial(PS),Active Serial
13、(AS),Fast Passive Parallel(FPP),Passive Parallel Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchronous(PSA),JTAG 等七种配置方式,其中 Cyclone 支持的配置方式有 PS,AS,JTAG 三种. 一般在做 FPGA 实验板,(如 cyclone 系列)的时候,用 AS+JTAG 方式,这样可以用JTAG 方式调试,而最后程序已经调试无误了后 ,再用 AS 模式把程序烧到配置芯片里去,关于工程中不同后缀名的文件的适用范围: sof
14、(SRAM Object File)当直接用 PS 模式下将配置数据下到 FPGA 里用到,USB BLASTER,MASTERBLASER,BBII,BBMV 适用,quartusII 会自动生成,所有其他的配置文件都是由 sof 生成的. pof(Programmer Object File)也是由 quartusII 自动生成的,BBII 适用,AS 模式下将配置数据下到配置芯片中 rbf(Raw Binary File)用于微处理器的二进制文件. 在 PS,FPP,PPS,PPA 配置下有用处 rpd(Raw Programing Data File)包含 bitstream 的二进制
15、文件,可用 AS 模式配置,只能由 pof 文件生成 hex(hexadecimal file)这个就不多说了 ,单片机里很多 ttf(Tabular Text File)适用于 FPP,PPS,PPA,和 bit-wide PS 配置方式 sbf(Serial Bitstream File)用 PS 模式配置 Flex 10k 和 Flex6000 的 基于 JTAG 和 Flash Programmer 的 NIOS II 工程代码固化烧录 2014-05-28 20:04 发表 系统分类:可编程逻辑 自定义分类:默认 标签: jtag flash基于 JTAG 和 Flash Progr
16、ammer 的 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 文件一起固化到
17、配置芯片中,它们的固化烧录则需要在 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
18、和 EPCS4 是完全兼容,不存在任何以次充好的嫌疑,Micron 和三星是存储器行业的老大,弄不好 Altera 也是买的它们的 die封装下忽悠咱们呢。好了,言归正传,回到这个 EPCS Controller 的功能上来,它的一个功能是配合 EDS 的 Flash Programmer 将我们工程产生的.sof 和.elf 烧录到配置芯片中。那么大家可就纳闷了,它既然老实现这个功能,势必它必须在 FPGA 中先跑起来。没错,在我们使用 Flash Programmer 前,我们通常都需要使用 JTAG在线烧录.sof 文件到 FPGA 中,这样我们就可以借助已经运行起来的 EPCS Con
19、troller 进行配置芯片的固化操作了。此外,已经固化好的 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 特权同学).pdf5.10 小节:http:/
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。