亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于i.MX6Q+FPGA平臺Android下EIM總線接口設(shè)計(jì)

        2016-06-08 06:49:03陳崇森
        現(xiàn)代計(jì)算機(jī) 2016年13期
        關(guān)鍵詞:嵌入式定義系統(tǒng)

        陳崇森

        (廣州海格通信集團(tuán)股份有限公司,廣州510663)

        ?

        基于i.MX6Q+FPGA平臺Android下EIM總線接口設(shè)計(jì)

        陳崇森

        (廣州海格通信集團(tuán)股份有限公司,廣州510663)

        摘要:

        關(guān)鍵詞:

        0 引言

        i.MX6Q平臺是Freescale公司推出的新一代面向多媒體設(shè)備的高性能低功耗應(yīng)用處理器,在手持、車載終端,平板電腦等通信、工業(yè)、醫(yī)療及消費(fèi)類電子領(lǐng)域獲得廣泛應(yīng)用?;谒暮薃RM Cortex-A9架構(gòu),運(yùn)行頻率可高達(dá)1.2GHz,外設(shè)接口豐富,可運(yùn)行Android系統(tǒng),為用戶提供流暢的使用體驗(yàn)。大規(guī)模FPGA可實(shí)現(xiàn)專屬復(fù)雜算法運(yùn)算及片上系統(tǒng)的定制,兩者結(jié)合可為數(shù)字業(yè)務(wù)處理提供完美的平臺解決方案。i.MX6Q與FPGA采用EIM總線接口連接可實(shí)現(xiàn)高速通信,此種連接具有通信可靠,F(xiàn)PGA時(shí)序邏輯易于實(shí)現(xiàn)等優(yōu)點(diǎn),但是此類接口在Android 4.2.2下驅(qū)動開發(fā)沒有先例可參考,實(shí)現(xiàn)從Android的App到FGPA的頂層到底層的數(shù)據(jù)貫通成為了設(shè)備研發(fā)的關(guān)鍵。

        1 i.MX6Q的特點(diǎn)及EIM接口

        i.MX6Q的特點(diǎn)[1]如下:

        ①4個(gè)ARM Cortex-A9內(nèi)核,每個(gè)內(nèi)核運(yùn)行頻率高達(dá)1.2 GHz,1 MB L2緩存,32 KB指令和數(shù)據(jù)緩存NEON SIMD媒體加速器。

        ②GPU 3D為Vivante GC2000,200Mtri/s 1000Mpxl /s,OpenGL ES 3.0 & Halti,CL EP;GPU 2D(矢量圖形)為Vivante GC355,300Mpxl/s,OpenVG 1.1;GPU 2D(復(fù)合)為Vivante GC320,600Mpxl/s,BLIT;支持1080p60 h. 264視頻解碼,1080p30 H.264 BP/雙720p視頻編碼;攝像頭接口支持1x 20位并行,MIPI-CSI2(4通道),三路同時(shí)輸入。

        ③存儲器支持兩個(gè)32 LP-DDR2,1個(gè)64 DDR3 / LV-DDR3;NAND支持SLC/MLC,40位ECC,ONFI2.2,DDR。

        ④數(shù)據(jù)連接支持4個(gè)USB2.0,1 Gbps + IEEE1588以太網(wǎng)接口,3個(gè)SD/MMC 4.4,1個(gè)SDXC5x SPI,5x UART,3x I2C,MIPI-HIS,PCIe 2.0(單通道)。

        ⑤支持2 x 4XGA(2048x1536)或2 x[1080p + WXGA(1280x720)]顯示。

        ⑥電源管理PMU集成恩智浦PF100電源管理單元。

        i.MX6Q的EIM總線接口用于為片外設(shè)備和存儲器提供帶片選、時(shí)鐘和控制邏輯的總線接口,既提供如SRAM等設(shè)備的異步訪問功能,又具備對NOR-Flash 或PSRAM等設(shè)備的同步訪問功能。EIM總線具備異步模式、異步頁面模式、多路復(fù)用地址數(shù)據(jù)模式、突發(fā)時(shí)鐘模式、低功耗模式及啟動模式等六種工作模式[2],該嵌入式平臺EIM總線采用異步控制模式,EIM總線功能框圖如圖1所示。

        EIM總線提供多達(dá)4個(gè)片選分區(qū),每個(gè)片區(qū)支持128MB的尋址空間,具備寫保護(hù)引腳,支持多路復(fù)用配置成x8、x16、x32數(shù)據(jù)接口。支持大端及小端模式訪問,具備外部中斷功能。

        該嵌入式平臺大規(guī)模FPGA采用ALTERA公司Cyclone III系列的EP3C40F324芯片。EP3C40F324芯片內(nèi)部含39600個(gè)邏輯單元,1161216 bit片內(nèi)RAM,324個(gè)管腳[3]。i.MX6Q與EP3C40F324通過EIM總線接口連接進(jìn)行數(shù)據(jù)傳輸,具體連接如圖2所示。

        圖1 EIM總線功能框圖

        2 Android系統(tǒng)下EIM總線接口設(shè)計(jì)

        Android是一種基于Linux的操作系統(tǒng),最早由Google等30多家科技公司和手機(jī)公司組成的“開放手機(jī)聯(lián)盟”共同研發(fā),而且完全免費(fèi)開源,主要應(yīng)用于移動設(shè)備,如智能手機(jī)及平板電腦[4]。Android系統(tǒng)的總體框架主要分為四層:Kernel、Libraries、Framework、Applications。其中Kernel、Libraries采用C語言或匯編語言實(shí)現(xiàn),使用JNI連接Libraries和Framework。各層描述如下:

        圖2 i.MX6Q與EP3C40F324的連接

        ①最底層為Linux Kernel,主要負(fù)責(zé)內(nèi)存管理、進(jìn)程調(diào)度等系統(tǒng)管理以及終端的硬件驅(qū)動。其中的Binder driver為Google為Android設(shè)計(jì)的一個(gè)增強(qiáng)系統(tǒng)的進(jìn)程間通信能力模塊。

        ②Kernel的上一層為Libraries,包含了核心庫、第三方庫和Android虛擬機(jī)。Android并沒有直接采用傳統(tǒng)的J2SE或J2ME的Java虛擬機(jī),而是自己建立了一個(gè)稱為dalvik的虛擬機(jī),號稱更節(jié)省字節(jié)碼的空間,性能更好。

        ③Framework為Android為應(yīng)用開發(fā)者設(shè)計(jì)的一套軟件框架,提供了豐富的組件,簡化了程序開發(fā)的架構(gòu)設(shè)計(jì),封裝了SDK,提供API供上層調(diào)用。

        ④Application為在Framework基礎(chǔ)上開發(fā)的各種應(yīng)用。

        HAL層(硬件抽象層)是位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的是在于將硬件抽象化。它隱藏了特定平臺的硬件接口細(xì)節(jié),為操作系統(tǒng)提供虛擬的硬件平臺[5]。HAL層與Android系統(tǒng)框架的關(guān)系如圖3所示:

        圖3 HAL層與Android系統(tǒng)框架結(jié)構(gòu)圖

        要實(shí)現(xiàn)i.MX6Q的EIM總線接口從Android的應(yīng)用程序到FPGA的貫通,自底向上需要開發(fā)的驅(qū)動及添加的接口包括:

        ①Android的Linux內(nèi)核源代碼工程中編寫EIM總線驅(qū)動程序。

        ②Android的HAL層增加接口模塊以訪問EIM總線驅(qū)動程序。

        ③Android系統(tǒng)中編寫JNI方法為應(yīng)用程序框架層提供Java接口。

        ④Android系統(tǒng)的應(yīng)用程序框架層增加EIM總線服務(wù)接口。

        從Android的應(yīng)用程序到FPGA的接口分層調(diào)用關(guān)系如圖4所示:

        圖4 EIM總線接口的分層調(diào)用關(guān)系圖

        3 Android系統(tǒng)下EIM總線接口實(shí)現(xiàn)

        按照EIM總線接口設(shè)計(jì)方法,第一步完成Linux內(nèi)核源代碼工程中編寫EIM總線驅(qū)動程序。EIM總線驅(qū)動在該嵌入式平臺上的應(yīng)用本質(zhì)上屬于字符設(shè)備驅(qū)動,驅(qū)動程序需實(shí)現(xiàn)Linux驅(qū)動接口函數(shù),為應(yīng)用程序與FPGA通信提供標(biāo)準(zhǔn)接口。EIM總線的時(shí)序配置關(guān)系到通信速率的設(shè)置及與FPGA交換數(shù)據(jù)的穩(wěn)定性,涉及的EIM總線配置寄存器如表1所示。

        表1 EIM總線配置寄存器

        圖5 EIM總線在異步模式讀寫時(shí)序圖

        EIM總線在異步模式下的讀寫時(shí)序如圖5所示。

        針對Linux3.0.35內(nèi)核的EIM總線接口驅(qū)動設(shè)計(jì),程序主體為各個(gè)文件操作函數(shù)的具體實(shí)現(xiàn),文件操作結(jié)構(gòu)體eimbus_fops中的成員函數(shù)定義如下:

        其中eimbus_read提供CS1片區(qū)基于物理地址偏移的數(shù)據(jù)讀取接口,eimbus_write提供CS1片區(qū)基于物理地址偏移的數(shù)據(jù)寫入接口,eimbus_mmap提供物理地址空間到應(yīng)用空間的高效片區(qū)映射;驅(qū)動程序加載及卸載時(shí)執(zhí)行eimbus_init及eimbus_exit函數(shù),eimbus_init完成EIM總線CS1片區(qū)的物理地址空間到虛擬地址空間映射、EIM總線時(shí)序配置等初始化工作,而eimbus_exit則執(zhí)行卸載時(shí)相關(guān)資源的釋放。通過修改Kernel相關(guān)目錄的Kconfig文件,將此驅(qū)動編譯進(jìn)內(nèi)核。

        第二步在HAL層增加接口模塊以訪問EIM總線驅(qū)動程序。按照Android硬件抽象層規(guī)范要求,在Android開發(fā)包頂層目錄的hardware/libhardware/ include/hardware下創(chuàng)建eimbus.h用于定義模塊ID、硬件模塊結(jié)構(gòu)體eimbus_module_t、硬件接口結(jié)構(gòu)體eimbus_device_t。在硬件接口結(jié)構(gòu)體中,fd表示設(shè)備文件描述符,對應(yīng)驅(qū)動設(shè)備文件"/dev/eimbus",eim_write_data及eim_real_data為HAL層向上層提供的函數(shù)接口。在hardware/libhardware/modules下創(chuàng)建eimbus目錄,在eimbus目錄下建立eimbus.c源程序,定義模塊實(shí)例變量,實(shí)現(xiàn)設(shè)備打開和關(guān)閉接口eimbus_device_open及eimbus_device_close,設(shè)備訪問接口eimbus_device_t及eim_write_data。模塊實(shí)例變量定義如下:

        其中eimbus_device_open調(diào)用系統(tǒng)open函數(shù)打開/dev/eimbus,eimbus_device_close調(diào)用系統(tǒng)close函數(shù)關(guān)閉/dev/eimbus;eim_write_data調(diào)用系統(tǒng)write函數(shù)使用驅(qū)動定義的標(biāo)準(zhǔn)接口函數(shù),eim_read_data調(diào)用系統(tǒng)read函數(shù)使用驅(qū)動定義的標(biāo)準(zhǔn)接口函數(shù)。在hardware/libhardware/modules/eimbus目錄下新建Android.mk文件用于編譯此接口模塊,最終生成eimbus.default.so目標(biāo)文件。

        第三步,編寫JNI方法為應(yīng)用程序框架層提供Java接口。在frameworks/base/services/jni目錄,創(chuàng)建com_Android_server_EimbusService.cpp源程序,定義eimbus_init、eimbus_readData和eimbus_writeData三個(gè)JNI方法。其中eimbus_readData調(diào)用硬件抽象層定義的硬件訪問接口對FPGA進(jìn)行讀操作,eimbus_writeData調(diào)用硬件抽象層定義的硬件訪問接口對FPGA進(jìn)行寫操作。JNI方法表定義如下:

        通過修改對應(yīng)目錄的Android.mk文件,將此JNI方法編譯進(jìn)Android系統(tǒng)鏡像。

        最后一步,在Android系統(tǒng)的應(yīng)用程序框架層增加EIM總線服務(wù)接口。在Android系統(tǒng)中,應(yīng)用程序通過代理來調(diào)用硬件服務(wù)。在frameworks/base/core/java/ android/os目錄,創(chuàng)建IEimbusService.aidl文件定義IEimbusService接口,分別通過writeData和readData兩個(gè)函數(shù)來實(shí)現(xiàn)通過EIM總線訪問FPGA。通過修改對應(yīng)目錄的Android.mk文件,編譯IEimbusService.aidl生成IEimbusService.Stub接口。在frameworks/base/ services/java/com/Android/server目錄,創(chuàng)建EimbusService.java文件,定義EimbusService調(diào)用JNI方法init_native、writeData_native和readData_native提供EIM總線訪問服務(wù)。通過修改SystemServer.java文件,在系統(tǒng)啟動時(shí)自動加載EimbusService。

        最后可編寫Android應(yīng)用程序來測試EIM總線對FPGA片內(nèi)RAM讀寫。應(yīng)用程序App通過ServiceM-anager.getService("eimbus")來獲得EimbusService,服務(wù)名稱“eimbus”在系統(tǒng)啟動加載EimbusService時(shí)指定。然后通過IEimbusService.Stub.asInterface函數(shù)將EimbusService轉(zhuǎn)換為IEimbusService接口,IEimbusService接口在Android.os.IEimbusService中定義。App通過IEimbusService.readData和IEimbusService.writeData兩個(gè)接口實(shí)現(xiàn)對FGPA片內(nèi)RAM的讀寫。

        通過在i.MX6Q側(cè)編寫Android應(yīng)用程序,并在FPGA側(cè)編程實(shí)現(xiàn)符合EIM總線時(shí)序的被讀寫邏輯,通過FPGA集成開發(fā)環(huán)境Quartus II的SignalTap II邏輯分析工具觀測讀寫時(shí)序波形與回環(huán)數(shù)據(jù)測試表明,Android應(yīng)用程序與FPGA通過EIM總線可實(shí)現(xiàn)穩(wěn)定快速通信。

        4 結(jié)語

        本文詳細(xì)介紹了Android系統(tǒng)下i.MX6Q與FPGA通過EIM總線實(shí)現(xiàn)可靠通信的接口分層設(shè)計(jì)及實(shí)現(xiàn)方法,實(shí)現(xiàn)FPGA芯片這種非標(biāo)準(zhǔn)接口在Android系統(tǒng)下的數(shù)據(jù)互通,可用于終端、平板等通信、工業(yè)領(lǐng)域,對需要使用FPGA編程實(shí)現(xiàn)專用算法的Android系統(tǒng)嵌入式平臺具有很好的參考價(jià)值。

        參考文獻(xiàn):

        [1]Freescale Semiconductor. http://www.nxp.com,2016.

        [2]Freescale Semiconductor. i.MX 6Dual/6Quad Applications Processor Reference Manual,2013.

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

        [4]李寧.Android開發(fā)權(quán)威指南[M].北京:人民郵電出版社,2011.

        [5]王振麗.Android底層開發(fā)技術(shù)實(shí)戰(zhàn)詳解[M].北京:電子工業(yè)出版社,2015.

        Design of EIM Bus Interface Based on i.MX6Q+FPGA Platform under Android

        CHEN Chong-sen
        (Guangzhou Haige Communications Group Incorporated Company,Guangzhou 510663)

        Abstract:

        Keywords:

        以Freescale公司的i.MX6Q四核處理器及ALTERA EP3C40F324 FPGA為核心的嵌入式硬件平臺,介紹i.MX6Q與FPGA基于EIM總線通信接口設(shè)計(jì),基于Linux 3.0.35內(nèi)核開發(fā)此接口的驅(qū)動程序方法以及基于Android 4.2.2下從應(yīng)用到驅(qū)動程序的通信實(shí)現(xiàn)。該技術(shù)已應(yīng)用到某終端設(shè)備研制,實(shí)現(xiàn)FPGA芯片與Android系統(tǒng)的連接,實(shí)際測試其與Android應(yīng)用程序可靠通信,對同類型嵌入式平臺的驅(qū)動接口設(shè)計(jì)及開發(fā)有借鑒意義。

        i.MX6Q;EIM總線;FPGA;Android

        文章編號:1007-1423(2016)13-0060-06

        DOI:10.3969/j.issn.1007-1423.2016.13.016

        作者簡介:

        陳崇森(1983-),男,廣東廣州人,碩士,研究方向?yàn)榍度胧较到y(tǒng)、驅(qū)動程序設(shè)計(jì)等

        收稿日期:2016-03-18修稿日期2016-04-18

        Applies Freescale i.MX6Q quad core processor and Altera EP3C40F324 FPGA as the core components for the embedded platform. The communication interface design is based on EIM bus between I.MX6Q and FPGA,the development method of this interface driver is based on Linux 3.0.35 kernel,and the implementation of communication from the application to the driver is based on android 4.2.2. The technology has been applied to a terminal equipment. The connection between FPGA chip and the Android system is successful. Tests show that the communication between Android application and FPGA is reliable. The design of the interface is a reference to the same type of embedded platform.

        i.MX6Q;EIM Bus;FPGA;Android

        猜你喜歡
        嵌入式定義系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        搭建基于Qt的嵌入式開發(fā)平臺
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        Altera加入嵌入式視覺聯(lián)盟
        倍福 CX8091嵌入式控制器
        自動化博覽(2014年4期)2014-02-28 22:31:15
        修辭學(xué)的重大定義
        亚洲国产大胸一区二区三区| 88久久精品无码一区二区毛片| √天堂中文官网8在线| 99久久超碰中文字幕伊人| 狼人狠狠干首页综合网| 人妻少妇不满足中文字幕| 久久久国产乱子伦精品作者 | 无码人妻品一区二区三区精99 | 国产在线精品亚洲视频在线| 在线中文字幕一区二区| 中文字幕人妻无码视频| 亚洲国产精品久久亚洲精品| 天堂av一区二区在线观看| 91精品蜜桃熟女一区二区| 爽爽影院免费观看| 国产亚洲精品aaaa片小说| 无遮挡十八禁在线视频国产制服网站 | 午夜精品久久久久久久99热| 免费人成视频x8x8| 草莓视频在线观看无码免费| 91久久精品一区二区| 亚洲中文字幕久久精品无码a | 日本福利视频免费久久久| 蜜臀av一区二区三区免费观看| 成人无码α片在线观看不卡| 国产丝袜在线精品丝袜不卡| 亚洲一区有码在线观看| 无码精品人妻一区二区三区漫画| 国产亚洲精品久久久久久| 福利网在线| 国产精品一区久久综合| 免费黄色影片| 夜夜综合网| 国产精品丝袜美腿诱惑| 精品无码久久久久久久久| 无码精品a∨在线观看十八禁| 国产极品美女到高潮视频| 国产91久久麻豆黄片| 18禁黄久久久aaa片| 亚洲午夜精品久久久久久抢| 91国产熟女自拍视频|