在做線上遠端更新的時候,一般需要兩步:1、将資料寫到外挂的flash中。2重新啟動FPGA配置。 不過要做到遠端更新,一般需要在原始程式中就考慮到加入遠端更新子產品,remote updata IP, 在更新的時候才可以啟動遠端更新功能。
遠端更新之後程式加載的過程:在進行遠端更新成功以後,flash中應該會至少存儲兩個程式,出廠程式和更新程式。兩個程式在不同的位址空間中(出廠程式從0X0000開始存儲)。在FPGA上電之後,FPGA會加載出廠程式,出廠程式在運作之後,檢測到remote updata IP中的一些參數(如配置鏡像參數等,remote updata IP部分會介紹到)後,将讀取flash中更新程式内容的開始位址指向讀取位址,然後觸發重新配置(如reconfig信号有效),開始加載重新配置程式。直到無錯誤的加載完成。也就是整個過程會加載兩次程式。
一、如何将程式寫到flash中。
在程式運作過程中,可以通過控制一些IP來将程式寫到flash中,這裡有兩個IP可以使用:EPCS controller, ASMI 。
1、EPCS Controller:
該IP在Qsy系統中,一般需要配合NIOS II來使用,需要使用者對ARM的程式設計有一定的基礎。不過Altera 也提供了一些有關epcs操作的API,如讀寫,擦除等。不過在操作前會讀取一下FLASH的ID來确定是EPCS還是EPCQ,或者EPCQL,還有容量是多大的。确定好Flash的類型之後就可以調用API函數對Flash操作了。網上也有例程,如锆石科技的參考例程。不過如果使用的是第三方的flash,而讀取的ID不在官方flash的ID清單之後,則就會認為沒有flash,也就無法讀寫操作了(不敢百分百确定的,但是肯定要改程式)。是以需要操作者對ARM的操作有一定的知識。
EPCS Controller IP在cyclone IV上使用的時候是需要手動綁定那四個pin的,在cyclone V上是不需要綁定的。
2、ASMI IP
該IP在IP庫中,Qsys中也有,可以直接用verilog進行程式設計控制,網上也有中文文檔: 。該文檔會介紹如何擦除,讀寫flash等,隻要時序控制好,EPCS/EPCQ/EPCQL的空間位址控制号就可以了。網上或官方都有參考例程,可以參考一下。
二、如何打開下載下傳程式檔案
遠端燒錄,需要PC等通過序列槽或網絡将程式傳給FPGA,程式檔案一般是jic/sof/rbf等格式的檔案,那麼一般軟體不能打開也看不到裡面的内容,可以使用UltraEdit軟體來打開這些檔案,而且裡面還會有一部分提示。

但是這個檔案會很大,比如16MB,并不是所有的都是有效的資訊,我現在也不知道該寫哪一些資料到flash中,以後知道了再補充吧。 三、remote updata IP 該IP在IP庫和Qsys中都有,可以用verilog來控制,建議使用前也要先看下他的說明書,,裡面對寄存器有詳細的說明。
在使用過程其實是讀取寄存器或者寫寄存器的過程,最後一步reconfig信号就可以了。 網友給出了一個思路:read 3‘b000 (讀取reconfig的條件) --》 write 3’b101(Anf配置模式選擇:出廠or鏡像) --》 read Anf 3‘b101(确定一下) --》write 3’b011 (寫看門狗使能) --》write 3‘b010(寫看門狗溢出值) --》 write 3’b100 (寫看門狗溢出值) --》 reconfig 使能。然後就操作完成了,等待重新啟動。
責任編輯人:CC