• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 消費電子 > 設計應用 > 基于SoC+FPGA平臺快速動態加載驅動開發及實現

    基于SoC+FPGA平臺快速動態加載驅動開發及實現

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

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

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

    引言

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

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

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

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

      (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(電源及睡眠控制)和管腳復用控制,根據系統需求靈活配置;

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

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

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

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

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

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

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

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

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

    2 OMAP-L138對EP3C80F484實現快速動態加載的方法

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

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

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

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

    3 EP3C80F484動態加載基于Linux內核的驅動開發

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

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

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

      動態加載字符設備的操作函數中的成員函數實現成為了驅動程序開發的關鍵,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,

      };

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

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

    4 結語

      本文詳細介紹了在Linux環境下,采用型號為OMAP-L138的SOC的SPI接口及邏輯GPIO實現對EP3C80F484的快速動態加載的驅動程序開發的具體方法。該方法可靠、快速且穩定,比純粹使用GPIO模擬加載時序快一個數量級以上,并在苛刻的使用條件下仍然表現出良好的穩定性。可用于手持終端、車載、船載系統等通信和工業領域,對動態加載嵌入式系統開發具有重要意義。

    參考文獻:

      [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設備驅動開發詳解[M]..北京:人民郵電出版社:2008.

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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 巫山县| 宜兰市| 龙岩市| 丹阳市| 怀安县| 白水县| 额济纳旗| 万盛区| 英德市| 漳平市| 贵州省| 潼南县| 西峡县| 无锡市| 玉环县| 青川县| 开远市| 阳春市| 绥滨县| 北辰区| 锡林郭勒盟| 观塘区| 通许县| 铜梁县| 宜川县| 昭平县| 萍乡市| 鄂托克前旗| 连平县| 太保市| 福鼎市| 大安市| 商洛市| 莫力| 连云港市| 道真| 黑龙江省| 嵊州市| 普兰店市| 永修县| 林周县|