FPGA程序遠(yuǎn)程在線更新設(shè)計
4 合并程序文件
Nios II的啟動要經(jīng)歷兩個過程:
① FPGA器件本身的配置過程。如果內(nèi)部邏輯中使用了Nios II,則配置完成的FPGA中包含有Nios II軟核CPU。
② Nios II本身的應(yīng)用過程。一旦FPGA配置成功后,Nios II就被邏輯中的復(fù)位電路復(fù)位,從reset地址開始執(zhí)行代碼。
Nios II IDE將FPGA的配置文件(.sof文件)和應(yīng)用程序(.elf文件)轉(zhuǎn)成flash格式文件,轉(zhuǎn)換后的flash格式文件是一種SRecord格式數(shù)據(jù),包含如下區(qū)域:
[6]。各字段的意思分別如下:表示記錄的類型;表示數(shù)據(jù)的長度;
表示數(shù)據(jù)寫入的起始地址,該字段的長度取決于的取值;表示存儲的數(shù)據(jù);表示校驗位。
配置文件和應(yīng)用程序可能有多個段,每個段前面都插有一個“程序記錄”。一個“程序記錄”由2個32位的數(shù)據(jù)構(gòu)成,一個是32位的整數(shù),另一個是32位的地址,分別表示程序段本身的長度和程序段的運(yùn)行時地址。其存儲布局如圖3所示。
圖3 Flash文件存儲布局
為了在更新程序時把FPGA配置文件和Nios II應(yīng)用程序一起更新,把FPGA配置文件和Nios II應(yīng)用程序合并成一個文件,并且把合并后的Flash格式的文件轉(zhuǎn)換成不需要地址解碼就能直接執(zhí)行的二進(jìn)制BIN文件。具體處理流程如圖4所示。
圖4 合并程序文件流程
在合并程序的過程中,去掉了flash文件中的長度、目的地址等用于解析程序的信息,并且把程序映像由字符格式轉(zhuǎn)換為二進(jìn)制格式。合并后的BIN文件包含F(xiàn)PGA配置文件和Nios II應(yīng)用程序,并且Nios II應(yīng)用程序緊挨在FPGA配置文件的后面,其存儲布局如圖5所示。
…
程序文件第n個程序段映像
…
Len1~Len1+L2程序文件第1個程序段映像
…
配置文件第n個程序段映像
…
0~L1配置文件第1個程序段映像
圖5 BIN文件存儲布局
評論