NiOS II从EPCQ256的自启动设置

软件:Quartus 18.1,FPGA:Cyclone 5cgxfc5c6,配置芯片:ECPQ256

1.硬件设置

我们将Reset vector memory指向EPCQ flash,将Reset vector offset设置为大于sof大小的一个值,这里从jic转换后的map文件可得到sof大小为0x0041f013,所以设置offset为0x41f060,offset更改后,Reset vector memory从原来的0x0400_0000变为0x0400_0000+0x41f060=0x441f060.

2.SBT设置

必要文件的生成:

  • 右击NIOS software工程,选择Make Targets > Build,在工程文件夹下生成elf文件。
  • 选择mem-init-generate,点击build,生成memory初始化hex文件,该文件在NIOS software工程mem_init文件夹下。

在控制台中可以看到生成hex文件的命令: Post-processing to create mem_init/epcq_controller_0.hex... alt-file-convert -I elf32-littlenios2 -O hex --input=LED_blink.elf --output=mem_init/epcq_controller_0.hex --base=0x04000000 --end=0x05ffffff --reset=0x0441f060 --out-data-width=8

--boot="C:/intelfpga/18.1/nios2eds/components/altera_nios2/boot_loader_cfi.srec"

  • 注意,mem-init-generate生成的hex文件开始地址可能与预想的不一致,比如,在BSP根据execute in place from EPCQ模式设置各选项时,本来开始地址应该为0x41f060,但生成的hex文件却是0x01f060.比如下面的hex文件: :020000040001F9

:20F06000140084003A48011004F8BF1016FDBF007410410014A97C083A6800080000000018

但boot copier方式启动时,生成的hex文件没问题。

3. 编程文件转换(.jic的生成)

  • 编程文件类型选择.jic文件;配置芯片选择EPCQ256。
  • 点击Add Sof Page,选中SOF Data,点击Add File;
  • .sof文件的地址设置:选中SOF Data,点击Properties,set the start address to 0x0 to avoid a "size exceeds memory capacity" error.

  • .hex文件的选择:点击Add Hex Page,如果是boot copier方式启动,选择绝对地址。

如果是execute in place from epcq启动方式,选择相对地址,在开始地址里填入合适的值,使hex的起始地址对应硬件里的起始地址。

  • 点击generate,成功生成.jic文件。

4.烧写程序后,上电后软核代码总是不运行,clock模块复位后才运行。

参考文档

1.AN736_ Nios II Processor Booting From Altera Serial Flash (EPCQ)

2.Generic Serial Flash Interface Intel FPGA IP Core User Guide

3.Embedded Peripherals IP User Guide

4.Embedded Design Handbook

一个信号处理工程师的学习总结----纳万物于芥子,锺流水之可复
原文地址:https://www.cnblogs.com/atc001/p/12854595.html