FPGA程序远程在线更新设计
4 合并程序文件
Nios II的启动要经历两个过程:
① FPGA器件本身的配置过程。如果内部逻辑中使用了Nios II,则配置完成的FPGA中包含有Nios II软核CPU。
② Nios II本身的应用过程。一旦FPGA配置成功后,Nios II就被逻辑中的复位电路复位,从reset地址开始执行代码。
Nios II IDE将FPGA的配置文件(.sof文件)和应用程序(.elf文件)转成flash格式文件,转换后的flash格式文件是一种SRecord格式数据,包含如下区域:
[6]。各字段的意思分别如下:表示记录的类型;表示数据的长度;
表示数据写入的起始地址,该字段的长度取决于的取值;表示存储的数据;表示校验位。
配置文件和应用程序可能有多个段,每个段前面都插有一个“程序记录”。一个“程序记录”由2个32位的数据构成,一个是32位的整数,另一个是32位的地址,分别表示程序段本身的长度和程序段的运行时地址。其存储布局如图3所示。

图3 Flash文件存储布局
为了在更新程序时把FPGA配置文件和Nios II应用程序一起更新,把FPGA配置文件和Nios II应用程序合并成一个文件,并且把合并后的Flash格式的文件转换成不需要地址解码就能直接执行的二进制BIN文件。具体处理流程如图4所示。

图4 合并程序文件流程
在合并程序的过程中,去掉了flash文件中的长度、目的地址等用于解析程序的信息,并且把程序映像由字符格式转换为二进制格式。合并后的BIN文件包含FPGA配置文件和Nios II应用程序,并且Nios II应用程序紧挨在FPGA配置文件的后面,其存储布局如图5所示。
…
程序文件第n个程序段映像
…
Len1~Len1+L2程序文件第1个程序段映像
…
配置文件第n个程序段映像
…
0~L1配置文件第1个程序段映像

图5 BIN文件存储布局
评论