今天给大侠带来今天带来FPGA 之 SOPC 系列第八篇,程序固化,希望对各位大侠的学习有参考价值,话不多说,上货。
本篇主要讲解在完成软件与硬件开发之后,如果利用flash烧写工具对工程的固化,达到产品级自动配置。
以下为本篇的目录简介:
8.1 IDE Flash Programmer介绍
8.2 用户程序引导
8.3 使用IDE Flash Programmer 编程
8.1 IDE Flash Programmer介绍
Nios II IDE 提供了Flash Programer工具来对目标板上遵守CFI(common flash interface)规范的Flash进行编程。IDE的Flash Programer通过使用Altera的下载电缆能够方便的对目标板上连接在FPGA上的Flash进行编程。
IDE的Flash Programer除了能对连接在FPGA上的Flash进行编程外,还能对连接在FPGA上的串行配置器件EPCS进行编程。
IDE Flash Programmer编程工作过程
IDE Flash Programmer通过2个过程将数据写入Flash。
第一步:使用Flash编程设计对FPGA进行配置
第二步:传送编程内容到Flash器件
Flash编程设计
Flash编程设计实际就是一个由SOPC Builder系统生成的最小FPGA设计。Flash编程设计是IDE Flash Programmer的关键组成部分。除此之外,还必须包括:
1、与主机(PC机)通讯的JTAG接口;
2、由主机提供的写入Flash的编程数据。
不同的电路板(目标板)往往使用不同的Flash器件,并且Flash与FPGA的管脚连接及FPGA型号也不相同。因此,每个Flash编程设计都与具体的目标板相联系,不能用于其它的目标板。
目标板Flash编程设计
一个目标板Flash编程设计是一组SOPC Builder文件,这些文件包含了用户使用电路板的一些特有信息,其中必须指明FPGA与Flash的连接关系。包含下列信息:
1、每一个连接到电路板FPGA上的Flash的参考元件标号,如U7;
2、Flash器件在Flash编程设计中的基地址;
3、主机上用于配置电路板上FPGA的Flash编程设计的SOF文件。
参考元件标号用于区分设计中不同的Flash器件。电路板上的Flash器件在设计时的命名和基地址可能不同。
Flash编程内容的类型
1、用户软件;
2、FPGA的配置数据;
3、任意内容。
Flash文件
所有要通过IDE Programmer写入Flash中的数据文件都要转换为能被Flash Programmer读取的.flash文件。Flash文件通过其后缀.flash来识别,尽管它们与工业标准SREC文件相同。
IDE Flash Programmer在后台提供了elf2flash、sof2flash、bin2flash三个命令来分别将这三种文件转换为flash文件,这三个命令在IDE Flash Programmer后台自动调用执行而不需用户干预,当然用户也可以在Nios II SDK shell中通过命令行来执行文件转换。
8.2 用户程序引导
用户程序可以存放在Flash中,也可以存放在EPCS,因此用户程序可以从Flash引导,也可以从EPCS中引导。
用户引导程序
从CFI Flash引导
FPGA上电或复位配置成功后,如果配置中包含的Nios II处理器复位地址指向Flash的地址空间,那么程序将从Flash引导。
SOPC Builder指定复位地址为Flash
从串行配置器件EPCS引导
如果使用串行配置器件EPCS,且配置数据的容量小于EPCS的容量,那么剩余的存储空间可用来存放用户程序。
EPCS控制器结构框图
IDE的Flash Programmer能将配置数据文件(.sof)和用户程序(.elf)写入到EPCS中。
当用户程序存放在EPCS中时,如果想从EPCS中引导程序,在SOPC Builder中必须添加EPCS控制器,且必须在SOPC Builder中指定NiosII处理器的复位地址指向EPCS控制器(epcs_controller)。
SOPC Builder指定复位地址为epcs_controller
引导复制程序
Alter提供了引导复制程序,它能根据用户在IDE中设置的用户程序文件(.elf)连接地址来重新装载程序,然后跳过.elf文件的连接地址执行程序。
引导复制程序是IDE Flash Programmer在后台执行elf2flash命令时判断并自动加入完成的。
加入Boot Copier 示意图
用户程序ELF文件连接设置
在Nios II IDE中工程的属性页控制了工程中的程序与硬件系统的相互影响关系以及IDE怎样编译连接该应用工程。
用户程序引导小结
通过SOPC Builder和IDE用户工程库属性页中的不同设置,可实现用户程序的不同引导和在不同存储空间运行,现总结于下表。
8.3 使用IDE Flash Programmer 编程
选择目标板Flash编程设计:
选择目标板Flash编程设计图
从SOPC Builder启动 Nios II IDE
编译连接用户工程
打开IDE Flash Programmer
Flash Programmer 对话框
Flash Programmer 对话框
操作实验
- 采用IDE Flash Programmer 配置软件
- 采用AS配置硬件
FPGA 之 SOPC 系列第八篇就到这里结束,下一篇将带来第九篇,也是最后一篇,SOPC 补充altera与xilinx对比相关内容。各位大侠,明天见!
END
后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!