色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 基于SoC+FPGA平臺快速動態(tài)加載驅(qū)動開發(fā)及實現(xiàn)

          基于SoC+FPGA平臺快速動態(tài)加載驅(qū)動開發(fā)及實現(xiàn)

          作者:陳崇森 時間:2016-05-26 來源:電子產(chǎn)品世界 收藏
          編者按:以TI公司的OMAP-L138型號雙核處理器單片系統(tǒng)(SoC)與ALTERA公司 EP3C80F484型號FPGA為核心的嵌入式硬件平臺,介紹了SoC與FPGA通過高速SPI接口實現(xiàn)固件動態(tài)加載的方法,以及基于Linux的SoC對FPGA快速動態(tài)加載驅(qū)動程序開發(fā)的原理及步驟。實際測試基于高速SPI接口的FPGA固件動態(tài)加載功能快速穩(wěn)定,對同類型嵌入式平臺的FPGA固件動態(tài)加載驅(qū)動開發(fā)具有借鑒意義。

          摘要:以TI公司的OMAP-L138型號雙核處理器單片系統(tǒng)()與ALTERA公司 EP3C80F484型號為核心的嵌入式硬件平臺,介紹了通過高速接口實現(xiàn)固件的方法,以及基于Linux的快速驅(qū)動程序開發(fā)的原理及步驟。實際測試基于高速接口的FPGA固件功能快速穩(wěn)定,對同類型嵌入式平臺的FPGA固件動態(tài)加載驅(qū)動開發(fā)具有借鑒意義。

          本文引用地址:http://cafeforensic.com/article/201605/291764.htm

          引言

            OMAP-L138雙核處理器是TI公司推出的新一代低功耗單片系統(tǒng)(SoC),廣泛應用于通信、工業(yè)、醫(yī)療診斷和音視頻嵌入式設備,其內(nèi)部集成的ARM核與DSP核協(xié)同工作,既能滿足基于嵌入式操作系統(tǒng)的通用應用程序開發(fā),又能滿足專屬復雜算法的高效實時運行,再加上大容量FPGA芯片做數(shù)字信號的前端處理,可作為較高速率的綜合通信數(shù)據(jù)業(yè)務處理通用數(shù)字平臺。實現(xiàn)對FPGA芯片的固件動態(tài)加載,既可以去掉FPGA芯片外掛用于存儲其固件的FLASH芯片以降低成本,又可以滿足動態(tài)改變FPGA運行程序以實現(xiàn)多種應用場合快速靈活的切換要求。

          1 OMAP-L138及Cyclone III系列FPGA的特點

            采用OMAP-L138與EP3C80F484為核心的嵌入式平臺,能為寬帶通信設備提供完美的平臺解決方案。OMAP-L138的特點[1]如下:

            (1)內(nèi)部集成RISC MPU,即主頻為375/456MHz的ARM926EJ-S,以及定/浮點兼容的VLIW DSP,即主頻為375/456MHz 的C674x,可滿足系統(tǒng)的非實時、多任務及實時、高強度數(shù)據(jù)處理的應用需求;

            (2)強大豐富的外設資源。主要包括:1個EMAC控制器;1個USB2.0接口和1個USB1.1接口;2個I2C接口;1個McASP;2個McBSP;2個接口;4個64位通用定時器;1個實時時鐘(RTC);1個可配置的16位HPI;144個可配置的GPIO管腳;3個UART接口;2個eHRPWM和3個eCAP;1個EMIFA口,可接16位SDRAM/NOR Flash/NAND Flash;1個EMIFB口,可接16位的DDR2(最高頻率150MHz)或16位 MDDR (最高頻率133MHz);2個MMC/SD/SDIO;1個 LCD控制器;1個SATA控制器;1個UPP接口;1個VPIF接口;眾多外設可以通過PSC(電源及睡眠控制)和管腳復用控制,根據(jù)系統(tǒng)需求靈活配置;

            (3)高效的緩存機制。其中ARM核內(nèi)部有16KB的L1程序Cache和16KB的數(shù)據(jù)Cache,以及8KB中斷向量表存儲RAM;DSP核采用二級緩存結(jié)構(gòu),包括32KB 的L1程序Cache、32KB 的數(shù)據(jù)Cache和高達256KB可靈活配置的L2 Cache,L2可以被ARM核訪問;此外在兩核之間還有128KB的片內(nèi)SHARE RAM,可用于ARM核和DSP核高速交換數(shù)據(jù),而不影響各自的運行;

            (4)低功耗設計。采用1.2V內(nèi)核電壓,1.8V或3.3V 可配置I/O接口電壓。

            FPGA芯片EP3C80F484為ALTERA公司推出的Cyclone III系列FPGA的一員,其特點[2]如下:

            1)Cyclone III滿足高性能、低功耗、低成本的應用需求;

            2)提供容量為5000至200000個邏輯單元、0.5MB至8MB片內(nèi)RAM的系列芯片選擇,其低功耗設計更易于滿足設計預算,其中EP3C80F484內(nèi)部集成81264個邏輯單元,2810880 比特內(nèi)部RAM,484個管腳;

            3)提供高、中、低I/O管腳封裝以滿足不同應用場合;

            4)多達4個PLL(鎖相環(huán))為片內(nèi)時鐘、片外時鐘及I/O接口,提供穩(wěn)定的時鐘管理及同步;

            5)支持32位Nios II嵌入式處理器,可在單片上集成Nios II軟核、片上外設及內(nèi)存、片外內(nèi)存接口[3],提供低成本可定制的嵌入式處理解決方案;

            6)提供多種高速內(nèi)存接口,例如DDR、DDR2、SDR、 SDRAM以及 QDRII SRAM。

          2 OMAP-L138對EP3C80F484實現(xiàn)快速動態(tài)加載的方法

            Cyclone III系列FPGA的程序加載運行主要通過以下幾種方式:主動串行(AS)、主動并行(PS)、被動并行 (FPP)、被動串行(PS)以及通過JTAG接口采用USB下載線進行加載。當OMAP-L138對EP3C80F484進行動態(tài)加載時,采用的是被動串行(PS)模式,因此對應的EP3C80F484的4位MSEL配置管腳接地。為提高加載的速度及準確性,采用OMAP-L138的SPI0接口的SPI0_CLK及SPI0_SIMO管腳與EP3C80F484配置口的DCLK及DATA0管腳連接,EP3C80F484配置口的其它控制管腳與OMAP-L138的GPIO管腳連接,遵從Cyclone III系列FPGA的PS模式加載時序要求實現(xiàn)對FPGA的快速動態(tài)加載。OMAP-L138與EP3C80F484的連接如圖1所示。

            EP3C80F484在被動串行(PS)模式下的動態(tài)加載時序要求如圖2所示。

            采用OMAP-L138的SPI0接口與EP3C80F484連接,可以使用其高達50Mbit/s的高速數(shù)據(jù)傳輸能力,實現(xiàn)EP3C80F484的快速動態(tài)加載。OMAP-L138的SPI功能模塊框圖如圖3所示。

            SPI控制器包含收發(fā)移位寄存器、緩存以及控制邏輯,數(shù)據(jù)在傳輸開始時寫入發(fā)送移位寄存器,在數(shù)據(jù)傳輸結(jié)束時讀取接收緩存。SPI控制器可工作在主模式和從模式,工作在主模式時由SPI控制器發(fā)起傳輸并驅(qū)動SPIx_CLK管腳產(chǎn)生時鐘。支持多種數(shù)據(jù)格式配置,四種相位及極性配置選項[4]。

          3 EP3C80F484動態(tài)加載基于Linux內(nèi)核的驅(qū)動開發(fā)

            動態(tài)加載驅(qū)動本質(zhì)上屬于字符設備驅(qū)動,動態(tài)加載的驅(qū)動開發(fā)主要包含兩個部分: (1)根據(jù)EP3C80F484的動態(tài)加載時序要求配置OMAP-L138的SPI0及其它控制邏輯GPIO,實現(xiàn)固件程序的比特流正確灌入EP3C80F484的配置口;(2)實現(xiàn)EP3C80F484的.rbf格式固件加載文件的讀取及解析,并傳遞給底層SPI控制驅(qū)動程序?qū)崿F(xiàn)比特流的傳輸,完成字符設備各個操作函數(shù)的具體實現(xiàn),并編譯成可動態(tài)加載的模塊驅(qū)動文件。

            與驅(qū)動開發(fā)密切相關的主要SPI控制器寄存器說明如表1所示。

            根據(jù)EP3C80F484在被動串行(PS)模式下的動態(tài)加載時序要求,SPI控制器工作在POLARITY = 0 ,PHASE = 1,SHIFTDIR=1模式,POLARITY、PHASE及SHIFTDIR設置位于SPIFMT0寄存器,工作時序如圖4所示。

            動態(tài)加載字符設備的操作函數(shù)中的成員函數(shù)實現(xiàn)成為了驅(qū)動程序開發(fā)的關鍵,file_operations[5]定義如下:

            static const struct file_operations load_fpga_fops =

            { .owner = THIS_MODULE,

            .read = load_fpga_read,

            .write = load_fpga_write,

            .ioctl = load_fpga_ioctl,

            .open = load_fpga_open,

            .release = load_fpga_release,

            };

            驅(qū)動模塊的初始化函數(shù)load_fpga_init除完成字符設備的設備號及內(nèi)存申請和設備注冊外,還要完成SPI0控制器的所有初始化配置及GPIO管腳配置;load_fpga_write成員函數(shù)實現(xiàn)存放于文件系統(tǒng)的.rbf固件加載文件從用戶空間到內(nèi)核空間的數(shù)據(jù)拷貝,并將基于SPI的動態(tài)加載驅(qū)動實現(xiàn)封裝成功能函數(shù)spi_down_load供load_fpga_write函數(shù)調(diào)用;load_fpga_ioctl成員函數(shù)提供SPI通信速率等相關配置。spi_down_load函數(shù)流程圖如圖5所示。

            EP3C80F484配置口DCLK最大支持133MHz的比特流,將OMAP-L138的SPI0_CLK配置成50MHz的時鐘頻率,加上操作系統(tǒng)、文件處理及控制邏輯等開銷,對于2MB左右的.rbf固件程序?qū)崪y動態(tài)加載完成耗時小于1.2秒。測試應用程序與驅(qū)動程序交互流程如圖6所示。

          4 結(jié)語

            本文詳細介紹了在Linux環(huán)境下,采用型號為OMAP-L138的SOC的SPI接口及邏輯GPIO實現(xiàn)對EP3C80F484的快速動態(tài)加載的驅(qū)動程序開發(fā)的具體方法。該方法可靠、快速且穩(wěn)定,比純粹使用GPIO模擬加載時序快一個數(shù)量級以上,并在苛刻的使用條件下仍然表現(xiàn)出良好的穩(wěn)定性??捎糜谑殖纸K端、車載、船載系統(tǒng)等通信和工業(yè)領域,對動態(tài)加載嵌入式系統(tǒng)開發(fā)具有重要意義。

          參考文獻:

            [1]OMAP-L138 C6-Integra DSP+ARM Processor (Rev. D) . Texas Instruments, 2011.

            [2]Cyclone III Device Handbook. Altera Corporation, 2012.

            [3]Nios II Processor Reference Handbook. Altera Corporation, 2011.

            [4]TMS320C674x/OMAP-L1x Processor Serial Peripheral Interface (SPI) User's Guide. Texas Instruments.2010.

            [5]宋寶華. Linux設備驅(qū)動開發(fā)詳解[M]..北京:人民郵電出版社:2008.

          本文來源于中國科技期刊《電子產(chǎn)品世界》2016年第5期第40頁,歡迎您寫論文時引用,并注明出處。



          評論


          相關推薦

          技術專區(qū)

          關閉