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文件存儲布局
評論