返回首頁
當前位置: 主頁 > 網絡編程 > Ajax實例教程 >

cyclone iii 器件遠程升級(Remote Update)小結

時間:2017-09-30 20:50來源:知行網www.aotfjk.live 編輯:麥田守望者

由于項目需要,前段時間做了ALTERA cyclone iii FPGA的遠程升級功能,由于項目時間緊迫,在最初的時候考慮做的簡單一些,不加bootloader代碼,只在主程序中加一個函數接收上位機的升級數據,然后刷FLASH,由于有之前在ARM上做的經驗,這樣實現起來相對簡單很多,但是有很大隱患,萬一升級過程中掉電、通信線纜出現問題、或者其他不可控因素,很容易導致設備OVER,不能用了,只能拆開板子重新連jtag口燒寫程序,這樣對于后期設備維護很是不方便,所以決定將EPCS分為兩個區域,Bootloader區及App區,Bootloader代碼編寫調試完成之后燒到EPCS中就固定了,以后需要更新功能真是通過Bootloader刷App區的代碼,這樣就算出現掉電或其他不可能因素,某一次升級失敗了,下次還可以連接上Bootloader重新進行App區的代碼更新,這樣設備的可維護性可以大大提高。

由于之前沒有在FPGA平臺上做過Remote Update,所以剛開始只是了解個大概,很多技術細節都不清楚,所以一邊搜資料一邊寫代碼測試,前前后后差不多折騰了一個星期才把功能實現穩定,包括寫了一個小上位機軟件,具體細節另開文章來寫,這里只記錄一下遇到的幾個問題吧:

1、通信部分的代碼:數據接收一定要做好,不能丟字節,這樣數據幀校驗不成功的話重傳會大大增加升級時間;

2、自己寫的啟動文件(BootRom)的運行及加載位置:控制好程序的代碼段及只讀數據段的位置,此部分可以修改連接腳本來實現;

3、Cache問題:確定NIOS中是否開了數據Cache,我在此部分折騰了兩天多時間,查看了無數次代碼,調試了不下一百次程序,Flash中的程序重定位到Sram之后就是不對,導致跳轉過去程序就飛了,因為我打印出FLASH中的程序與燒寫文件進行過對比,已經確認燒寫過程是正確的,很是郁悶,不經意間我想到cache問題,打開SOPC Builder Nios中果然開了D Cache,關不掉D Cache,重新編譯果然正常了。(此處可以不關閉d cache,只要記得有cache數據寫回也可以)。

大問題差不多就這么多吧,附上一張上位機升級界面,可單獨升級軟件及硬件配置文件:

cyclone iii 器件遠程升級(Remote Update)小結
cyclone iii 器件遠程升級(Remote Update)小結

 

------分隔線----------------------------
標簽(Tag):cyclone
------分隔線----------------------------
推薦內容
猜你感興趣
湖南刘雪龙黑彩