《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于μClinux的FPGA遠程更新系統(tǒng)的實現(xiàn)
基于μClinux的FPGA遠程更新系統(tǒng)的實現(xiàn)
來源:電子技術應用2014年第3期
丁 丁1,湯曉斌1,陳立德2,殷樹根2
(1.南京航空航天大學 材料科學與技術學院,江蘇 南京211106; 2.上海風格信息技術有限公司,
摘要: 針對Altera公司的Cyclone系列FPGA在特殊環(huán)境中無法使用下載電纜來重新配置芯片的問題,設計并實現(xiàn)了一個基于μClinux的FPGA遠程更新系統(tǒng)。該系統(tǒng)利用Altera的片上可編程系統(tǒng)(SoPC)技術,嵌入Nios II軟核處理器,移植μClinux系統(tǒng),通過UART串口接收升級數(shù)據(jù),通過MTD驅動將升級數(shù)據(jù)寫入配置芯片EPCS4和CFI存儲芯片。該方法利用FPGA的軟硬件可編程的特點,實現(xiàn)了系統(tǒng)軟硬件同時在線升級,完成了FPGA的遠程更新。
中圖分類號: TN47
文獻標識碼: B
文章編號: 0258-7998(2014)03-0006-03
Implementation of FPGA remote update system based on μClinux
Ding Ding1,Tang Xiaobin1,Chen Lide2,Yin Shugen2
1.College of Material Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing 211106,China;2.Shanghai Figure IT Company, Shanghai 200120,China
Abstract: Aimed at the problena of Altera′s Cyclone series FPGA which can′t be used in a special environment using the download cable to reconfigure the chip, we designed and implemented a μClinux-based FPGA remote update system. The system using Altera SoPC technology, which is embedded in a Nios II soft-core processor,to run a μClinux system and transport the data via the UART serial port. The configuration data is written to the memory chip, EPCS4 and CFI, with MTD driver. The method utilizes the hardware and software programmable features of FPGA to complete the online upgrade of FPGA.
Key words : μClinux;FPGA;remote update;UART

    隨著集成電路技術的進一步發(fā)展,FPGA因具備功能靈活、開發(fā)成本低和上市速度快等特點,而廣泛應用于數(shù)字產品設計的各個領域。目前FPGA配置數(shù)據(jù)一般使用基于靜態(tài)隨機存儲器SRAM(Static Random Access Memory)的存儲方式,掉電后數(shù)據(jù)消失。因此在實用中需要為FPGA芯片外加專用配置芯片,在上電時,由這個專用配置芯片把配置數(shù)據(jù)加載到FPGA中,之后FPGA就可以正常工作。配置芯片通常是基于Flash存儲器的器件。FPGA配置數(shù)據(jù)更新的常用做法是:通過專用的下載電纜把配置數(shù)據(jù)從PC下載到FPGA配置芯片中[1]。這種方法在早期的開發(fā)調試中顯得非常便利,然而在系統(tǒng)組裝并形成產品后,由于下載電纜接口通常不會作為系統(tǒng)的一個外部接口,此時若想更新FPGA配置數(shù)據(jù)將會很麻煩,需要把系統(tǒng)重新拆開才能進行[2]。因此,在越來越多的系統(tǒng)中希望通過以配置數(shù)據(jù)的遠程更新來提高系統(tǒng)的可擴展性和升級的靈活性。
    本文針對Altera公司Cyclone IV系列的一款低功耗、高性能的FPGA芯片EP4CE15F23C8,結合Altera公司提供的SoPC開發(fā)工具,嵌入Nios II軟核處理器技術,移植μClinux系統(tǒng),通過UART(Universal Asynchronous Receiver/Transmitter)串口獲取升級數(shù)據(jù)(包括FPGA配置文件和μClinux系統(tǒng)鏡像),并在μClinux系統(tǒng)中添加MTD驅動以完成升級數(shù)據(jù)寫入Flash存儲器的任務。該方法利用FPGA的軟硬件可編程的特點,實現(xiàn)了系統(tǒng)軟硬件同時在線升級,完成了FPGA的遠程更新。
1 FPGA遠程更新系統(tǒng)的結構與更新流程
1.1 遠程更新系統(tǒng)的系統(tǒng)結構

    FPGA遠程更新系統(tǒng)的結構如圖1所示,該系統(tǒng)主要包括本地系統(tǒng)和遠程系統(tǒng)。本地系統(tǒng)包括目標板和交換板。

    目標板的FPGA采用Altera公司Cyclone IV系列的EP4CE15F23C8芯片。該芯片采用65 nm工藝,內部包含了15 408個邏輯單元LE(Logic Elements)、504 KB片內隨機存儲器、56個嵌入式乘法器、20個全局時鐘網(wǎng)絡,具有低功耗、高性能的特點[3]。通過Altera Quartus II軟件中的SoPC Builder工具,在FPGA芯片上構建了Nios II軟核處理器、外設和外設接口,包括EPCS控制器、SDRAM控制器、三態(tài)橋、UART、通用I/O等[4]。EPCS是Altera提供的專用串行配置芯片,本系統(tǒng)使用EPCS4芯片,它支持多種可配置的時鐘源,最高支持100 MHz的外部時鐘源,并且具有4 MB的存儲空間,完全滿足此款FPGA配置數(shù)據(jù)的存儲需要。在本系統(tǒng)中,以Altera Wiki社區(qū)發(fā)布的nios2-linux-20090929.tar內核開發(fā)包為基礎,在Nios II上移植了μClinux系統(tǒng)[5]。FPGA上還外接了一個NOR型Flash芯片,用于存儲μClinux系統(tǒng)鏡像。
    交換板采用PowerPC的微處理器,運行嵌入式Linux系統(tǒng),交換板與FPGA目標板間采用UART串口通信方式。
    遠程系統(tǒng)通過網(wǎng)絡接口與交換板相連,是整個升級系統(tǒng)的控制中心。
1.2 遠程更新流程
    FPGA上電啟動時,自動產生時序從EPCS中讀取配置文件并進行配置。配置完成后,NiosII處理器硬件就已經(jīng)在FPGA內部生成,這時FPGA進入主復位狀態(tài),在內部的復位邏輯作用下,NiosII從其設定的復位地址開始執(zhí)行程序。在本系統(tǒng)中設計NiosII 處理器上電后從外部Flash開始啟動、解壓并加載μClinux的文件系統(tǒng),運行相應的應用程序。因此,F(xiàn)PGA的遠程更新主要涉及到兩個文件,分別為FPGA的配置文件和μClinux的系統(tǒng)鏡像。對于Nios II處理器,完成FPGA的遠程更新主要需要解決兩個問題:(1)遠程更新數(shù)據(jù)的獲取;(2)將配置文件寫入EPCS配置芯片。為了不影響原有系統(tǒng)的運行,這兩個任務均需在μClinux系統(tǒng)下完成。為此設計如下的更新流程。
     (1)升級文件的處理:FPGA的配置文件需在Quartus II軟件的配置文件輸出選項中添加*.rbf (Raw Binary File,原始二進制文件)格式輸出,并作MSB到LSB的字節(jié)變換得到*.img文件。在Linux下構建μClinux的開發(fā)環(huán)境,通過make交叉編譯生成elf格式的內核鏡像文件zImage,并在Nios II Command Shell中運行“nios2-elf-objcopy-O binaryzImagezImage.bin”,得到二進制格式的μClinux系統(tǒng)鏡像。
    (2)升級文件的傳輸:遠程控制系統(tǒng)完成升級文件處理后,通過LAN或Internet發(fā)送給PowerPC交換板,最后由交換板通過UART串口發(fā)送給FPGA目標板。
    (3)升級文件的寫入:目標板接收升級文件,完成數(shù)據(jù)校驗后將升級文件寫入相應的配置芯片,并在寫入完成后重啟系統(tǒng)。
2 串口文件傳輸?shù)膶崿F(xiàn)
2.1 串口文件傳輸協(xié)議

    如前所述,F(xiàn)PGA升級數(shù)據(jù)在交換板與目標板之間通過UART串口傳輸,為了順利完成升級數(shù)據(jù)的傳輸,定義了一種串口文件傳輸協(xié)議。該協(xié)議采用基于幀傳輸?shù)姆绞剑瑢⑸墧?shù)據(jù)進行分幀發(fā)送,并在傳輸過程中對單幀進行和校驗而對整個升級數(shù)據(jù)進行CRC校驗。相關的幀包括:控制幀、信息幀和數(shù)據(jù)幀[6]。
2.1.1 控制幀
    控制幀由交換板在開始傳輸前發(fā)送給目標板,幀內容包括控制字(升級命令)、升級文件的參數(shù)等信息,其構成如圖2所示。其中,文件參數(shù)由升級文件號、相應的總分幀數(shù)、單幀大小、最后一幀大小及文件的CRC校驗碼構成。文件1對應為FPGA的配置文件,文件2對應為μClinux的系統(tǒng)鏡像。

2.1.2 信息幀
    信息幀由目標板反饋給交換板,用于請求分幀數(shù)據(jù)、返回FPGA升級狀態(tài)等,幀內容如圖3所示。

2.1.3 數(shù)據(jù)幀
    數(shù)據(jù)幀由交換板發(fā)送給目標板,用于完成升級數(shù)據(jù)的傳輸,幀內容包括分幀號、分幀數(shù)據(jù)等。
    在升級數(shù)據(jù)的傳輸過程中,首先由交換板向目標板發(fā)送控制幀,用于通知目標板進入升級程序,同時發(fā)送所需升級的數(shù)據(jù)類型、分幀幀數(shù)及升級數(shù)據(jù)的CRC校驗碼。目標板在接收到升級控制幀后,啟動相應的接收程序,并向交換板返回信息幀,用于請求分幀數(shù)據(jù)。目標板在接收到幀號請求信息幀后,開始向目標板發(fā)送數(shù)據(jù)幀。在傳輸中如有錯幀或漏幀,目標板均可重發(fā)請求信息幀,這樣不斷重復即可完成整個升級數(shù)據(jù)的傳輸。
2.2 串口傳輸過程中的數(shù)據(jù)丟失現(xiàn)象

 


    在完成了上述串口傳輸協(xié)議相關代碼的編寫后,在實際測試中卻發(fā)現(xiàn),傳輸過程中會頻繁發(fā)生數(shù)據(jù)丟失的現(xiàn)象。在分析各種可能原因后,確定為目標板的UART串口FIFO深度過低所導致。FIFO緩沖區(qū)的深度直接影響通過UART傳輸數(shù)據(jù)所需的CPU開銷,是影響UART性能的關鍵因素。FIFO的深度越低,在傳輸過程中就需要越多的CPU中斷,尤其在短時大數(shù)據(jù)量的傳輸過程中就可能出現(xiàn)CPU無法響應中斷而發(fā)生數(shù)據(jù)丟失的現(xiàn)象。
    然而Altera的SoPC Builder工具默認所添加的UART設備沒有配帶FIFO,僅有1 B的深度,為此參考Altera Wiki社區(qū)所發(fā)布了帶FIFO的UART組件。這里為FPGA重新配置了FIFOed Uart設備[7],并將其接收FIFO的深度設為256 B。
    在使用FIFOed Uart設備并配置相關的驅動后,串口傳輸過程中的數(shù)據(jù)丟失的問題得以解決。
3 μClinux下Flash的寫入操作
    在接收完升級數(shù)據(jù)后,需要完成升級數(shù)據(jù)寫入相應配置芯片的操作。由于配置芯片是基于Flash的設備,在μClinux下可以通過調用內存技術設備MTD(Memory Technology Device)驅動完成相應的寫入操作。MTD驅動是Linux下標準的Flash驅動器,它支持大多數(shù)Flash存儲設備,兼有功能強大的分區(qū)定義和映像工具。MTD在硬件與內核之間提供一個抽象的接口,可理解為 Flash的設備驅動程序。通過該接口,可像讀寫普通文件一樣對Flash設備進行讀寫操作。
    Altera Wiki社區(qū)發(fā)布的μClinux基礎開發(fā)包中MTD驅動的分區(qū)配置文件為linux-2.6/arch/nios2/kernel/config.c,根據(jù)相應的硬件芯片修改此文件并運行“make menuconfig”修改內核編譯設置后,完成MTD驅動的添加[8]。添加驅動成功后,會在μClinux的dev目錄下生成字符設備mtd0或塊設備mtdblock0,通過系統(tǒng)調用dd命令,“dd if=/tmp/zImage.bin of=/dev/mtdblock0”,即可完成Flash的寫入操作。
    在完成升級數(shù)據(jù)寫入Flash的操作后,還需要對寫入的數(shù)據(jù)進行CRC校驗,校驗完成后即可重啟系統(tǒng),從而完成了整個FPGA升級的任務。
    本文介紹了一種基于μClinux的FPGA遠程更新系統(tǒng)的實現(xiàn)方法,使用該方法不用打開機箱即可隨時更新FPCA配置程序,方便了產品在客戶端維護升級,具有靈活方便、配置時間短、易于操作的特點。通過長期的實際運行驗證了這種升級方式的正確性和穩(wěn)定性。另外,雖然本文是針對Altera公司Cyclone系列的FPGA器件而設計,但也可適用于Altera其他系列的FPGA器件,故其有一定的通用性,并為其他廠商的FPGA器件的遠程升級提供參考。
參考文獻
[1] 李蘭英.Nios II嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2006.
[2] 李鵬,蘭正龍.用CPLD和Flash實現(xiàn)FPGA配置[J].電子技術應用,2006,32(6):101-3.
[3] Altera Conproation.Cyclone IV device data sheet[EB/OL]. (2013-05-01)[2013-10-20].http://www.altera.com.cn/literature/hb/cyclone-iv/cyiv53001.pdf,2012.
[4] Altera Conproation.Cyclone IV device handbook[EB/OL]. (2013-05-01)[2013-10-20].http://www.altera.com.cn/lit erature/hb/cyclone-iv/cyclone4handbook.pdf,2012.
[5] Altera Wiki.Install Nios II Linux[EB/OL].(2013-01-14)[2013-10-20].http://www.alterawiki.com/wiki/Install_Nios_II_Linux,2013.
[6] 王媛媛,劉樹林.基于FPGA的串行通信控制系統(tǒng)的設計[J].微型機與應用,2011,30(5):57-59.
[7] Altera Wiki.FIFOed Avalon Uart[EB/OL].(2013-06-11)[2013-10-20].http://www.alterawiki.com/wiki/FIFOed_Avalon_Uart,2012.
[8] Altera Wiki.Memory technology device[EB/OL].(2011-11-07)[2013-10-20].http://www.alterawiki.com/wiki/MTD,2013.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一区精品| 亚洲欧美国产一区二区三区| 亚洲一区二区av电影| 亚洲人成在线影院| 在线观看成人一级片| 国内精品亚洲| 国内精品国语自产拍在线观看| 国产美女精品视频| 国产日产亚洲精品系列| 国产精品麻豆成人av电影艾秋| 国产精品久久国产愉拍| 欧美日韩亚洲综合一区| 欧美日韩一区二区视频在线观看| 欧美日韩国产综合一区二区| 欧美另类人妖| 欧美色视频一区| 国产精品第13页| 国产精品久久久久久久久久妞妞| 国产精品日本精品| 国产精品综合不卡av| 国产午夜精品一区理论片飘花| 国产一区二区三区四区在线观看 | av成人激情| 国产精品99久久久久久人| 亚洲专区免费| 久久国产精品久久w女人spa| 欧美在线免费看| 久久综合久久久久88| 欧美大秀在线观看| 欧美日韩中文在线观看| 国产精品一区二区在线观看网站| 国产亚洲精品aa午夜观看| 在线播放中文一区| 999亚洲国产精| 午夜一区在线| 亚洲精品一区二区三| 亚洲午夜一区二区| 久久国产视频网站| 欧美第十八页| 国产精品女主播| 韩日欧美一区二区| 亚洲精品影视| 欧美亚洲视频| 亚洲激情网站免费观看| 一本色道久久综合精品竹菊| 午夜精品999| 美女主播视频一区| 欧美视频在线播放| 国产一区二区三区不卡在线观看 | 欧美日韩成人综合| 国产九九精品视频| 亚洲国产精品嫩草影院| 亚洲天堂第二页| 亚洲二区免费| 亚洲视频在线免费观看| 久久久水蜜桃| 欧美午夜激情在线| 国产有码在线一区二区视频| 亚洲日本中文字幕区| 午夜精彩国产免费不卡不顿大片| 亚洲精品欧美日韩专区| 亚洲香蕉在线观看| 蜜臀99久久精品久久久久久软件| 国产精品久久波多野结衣| 在线观看欧美成人| 亚洲欧美国产高清va在线播| 亚洲另类一区二区| 欧美在线观看一二区| 欧美日韩精品免费观看| 国产亚洲欧美另类一区二区三区| 亚洲精品乱码久久久久| 欧美一区二区三区视频在线观看 | 亚洲精品在线一区二区| 久久er99精品| 欧美日韩性生活视频| 影音先锋久久| 性欧美video另类hd性玩具| 亚洲开发第一视频在线播放| 久久久精彩视频| 国产精品久久久久9999吃药| 亚洲日本成人| 亚洲国产精品一区二区www在线| 亚洲欧美激情在线视频| 欧美美女日韩| 尤物精品在线| 欧美一区二区日韩| 亚洲综合成人在线| 欧美人与性禽动交情品 | 日韩亚洲综合在线| 美女91精品| 国产一区自拍视频| 亚洲影视在线| 亚洲一区二区毛片| 欧美精品激情在线| 亚洲电影免费| 亚洲国产va精品久久久不卡综合| 欧美亚洲三级| 欧美亚韩一区| 日韩一二三在线视频播| av不卡在线| 欧美精品观看| 亚洲欧洲日产国产网站| 亚洲精品少妇30p| 蜜桃久久av一区| 在线成人欧美| 最新国产の精品合集bt伙计| 久久中文字幕导航| 激情久久五月天| 久久精品国产久精国产爱| 亚洲欧美久久久| 国产精品乱人伦一区二区| 一区二区av在线| 亚洲一级免费视频| 欧美性猛片xxxx免费看久爱| 99成人在线| 亚洲网站视频| 欧美视频一区二区三区…| 亚洲乱码久久| 亚洲午夜一区| 国产精品久久久久久久久久妞妞| 中文国产一区| 午夜精品久久| 国产日韩欧美二区| 欧美在线观看视频一区二区三区| 久久国产视频网站| 狠狠色丁香久久综合频道| 亚洲国产日韩欧美一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 韩国av一区二区| 亚洲激情偷拍| 亚洲国产精品成人va在线观看| 亚洲视频axxx| 欧美理论电影在线观看| 亚洲三级影院| 中文精品视频| 国产精品嫩草99av在线| 亚洲欧美在线视频观看| 久久精品中文字幕免费mv| 国产亚洲毛片在线| 久久精品国产第一区二区三区| 美脚丝袜一区二区三区在线观看 | 欧美在线观看视频一区二区| 国产专区欧美专区| 亚洲人成网站色ww在线| 欧美日韩在线大尺度| 亚洲欧美日韩视频二区| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲二区精品| 亚洲一区二区三区在线看| 国产日韩欧美亚洲| 亚洲欧洲精品一区二区精品久久久| 欧美激情国产精品| 亚洲午夜在线视频| 久久久中精品2020中文| 最新日韩中文字幕| 午夜综合激情| 激情文学一区| 亚洲视频在线观看免费| 国产午夜精品麻豆| 亚洲日本精品国产第一区| 国产精品扒开腿做爽爽爽视频| 性久久久久久久| 欧美成ee人免费视频| 在线一区日本视频| 久久久久久亚洲精品杨幂换脸| 亚洲人成在线影院| 欧美一区二区精品久久911| 黄色另类av| 亚洲图片在区色| 韩日在线一区| 国产精品99久久久久久www| 国产日韩欧美另类| 99一区二区| 国产综合视频在线观看| 亚洲一区久久| 精品动漫3d一区二区三区免费 | 国产精品成人一区二区| 久久精品女人的天堂av| 欧美日韩专区在线| 亚洲高清久久久| 国产精品国产一区二区| 亚洲国产福利在线| 国产精品久久久久久亚洲调教| 亚洲国产欧美一区| 国产精品网站在线| 日韩午夜免费| 韩国精品在线观看| 午夜精品久久久99热福利| 91久久极品少妇xxxxⅹ软件| 久久精品一区四区| 亚洲视频一区在线| 欧美国产日韩视频| 午夜在线一区二区| 欧美色精品在线视频| 亚洲三级国产| 国模叶桐国产精品一区| 欧美亚洲视频| 一区二区三区日韩欧美精品| 欧美成人综合| 亚洲高清久久|