999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于i.MX6Q+FPGA平臺(tái)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平臺(tái)Android下EIM總線接口設(shè)計(jì)

陳崇森

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

摘要:

關(guān)鍵詞:

0 引言

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

③存儲(chǔ)器支持兩個(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è)備和存儲(chǔ)器提供帶片選、時(shí)鐘和控制邏輯的總線接口,既提供如SRAM等設(shè)備的異步訪問功能,又具備對(duì)NOR-Flash 或PSRAM等設(shè)備的同步訪問功能。EIM總線具備異步模式、異步頁面模式、多路復(fù)用地址數(shù)據(jù)模式、突發(fā)時(shí)鐘模式、低功耗模式及啟動(dòng)模式等六種工作模式[2],該嵌入式平臺(tái)EIM總線采用異步控制模式,EIM總線功能框圖如圖1所示。

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

該嵌入式平臺(tái)大規(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)用于移動(dòng)設(shè)備,如智能手機(jī)及平板電腦[4]。Android系統(tǒng)的總體框架主要分為四層:Kernel、Libraries、Framework、Applications。其中Kernel、Libraries采用C語言或匯編語言實(shí)現(xiàn),使用JNI連接Libraries和Framework。各層描述如下:

圖2 i.MX6Q與EP3C40F324的連接

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

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

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

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

HAL層(硬件抽象層)是位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的是在于將硬件抽象化。它隱藏了特定平臺(tái)的硬件接口細(xì)節(jié),為操作系統(tǒng)提供虛擬的硬件平臺(tái)[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ū)動(dòng)及添加的接口包括:

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

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

③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ū)動(dòng)程序。EIM總線驅(qū)動(dòng)在該嵌入式平臺(tái)上的應(yīng)用本質(zhì)上屬于字符設(shè)備驅(qū)動(dòng),驅(qū)動(dòng)程序需實(shí)現(xiàn)Linux驅(qū)動(dòng)接口函數(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所示。

針對(duì)Linux3.0.35內(nèi)核的EIM總線接口驅(qū)動(dòng)設(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ū)動(dòng)程序加載及卸載時(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ū)動(dòng)編譯進(jìn)內(nèi)核。

第二步在HAL層增加接口模塊以訪問EIM總線驅(qū)動(dòng)程序。按照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è)備文件描述符,對(duì)應(yīng)驅(qū)動(dòng)設(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ū)動(dòng)定義的標(biāo)準(zhǔn)接口函數(shù),eim_read_data調(diào)用系統(tǒng)read函數(shù)使用驅(qū)動(dòng)定義的標(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)用硬件抽象層定義的硬件訪問接口對(duì)FPGA進(jìn)行讀操作,eimbus_writeData調(diào)用硬件抽象層定義的硬件訪問接口對(duì)FPGA進(jìn)行寫操作。JNI方法表定義如下:

通過修改對(duì)應(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。通過修改對(duì)應(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)啟動(dòng)時(shí)自動(dòng)加載EimbusService。

最后可編寫Android應(yīng)用程序來測(cè)試EIM總線對(duì)FPGA片內(nèi)RAM讀寫。應(yīng)用程序App通過ServiceM-anager.getService("eimbus")來獲得EimbusService,服務(wù)名稱“eimbus”在系統(tǒng)啟動(dòng)加載EimbusService時(shí)指定。然后通過IEimbusService.Stub.asInterface函數(shù)將EimbusService轉(zhuǎn)換為IEimbusService接口,IEimbusService接口在Android.os.IEimbusService中定義。App通過IEimbusService.readData和IEimbusService.writeData兩個(gè)接口實(shí)現(xiàn)對(duì)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邏輯分析工具觀測(cè)讀寫時(shí)序波形與回環(huán)數(shù)據(jù)測(cè)試表明,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)域,對(duì)需要使用FPGA編程實(shí)現(xiàn)專用算法的Android系統(tǒng)嵌入式平臺(tái)具有很好的參考價(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為核心的嵌入式硬件平臺(tái),介紹i.MX6Q與FPGA基于EIM總線通信接口設(shè)計(jì),基于Linux 3.0.35內(nèi)核開發(fā)此接口的驅(qū)動(dòng)程序方法以及基于Android 4.2.2下從應(yīng)用到驅(qū)動(dòng)程序的通信實(shí)現(xiàn)。該技術(shù)已應(yīng)用到某終端設(shè)備研制,實(shí)現(xiàn)FPGA芯片與Android系統(tǒng)的連接,實(shí)際測(cè)試其與Android應(yīng)用程序可靠通信,對(duì)同類型嵌入式平臺(tái)的驅(qū)動(dòng)接口設(shè)計(jì)及開發(fā)有借鑒意義。

i.MX6Q;EIM總線;FPGA;Android

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

DOI:10.3969/j.issn.1007-1423.2016.13.016

作者簡(jiǎn)介:

陳崇森(1983-),男,廣東廣州人,碩士,研究方向?yàn)榍度胧较到y(tǒng)、驅(qū)動(dòng)程序設(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)
搭建基于Qt的嵌入式開發(fā)平臺(tái)
連通與提升系統(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嵌入式控制器
修辭學(xué)的重大定義
主站蜘蛛池模板: 亚洲女人在线| 91精品福利自产拍在线观看| 91精品伊人久久大香线蕉| 亚洲国产亚综合在线区| 99精品国产自在现线观看| 精品自拍视频在线观看| 亚洲成人在线免费| 人妻丰满熟妇AV无码区| 国产午夜精品鲁丝片| 青青草国产在线视频| 国产精品自拍露脸视频| 亚洲欧美日韩另类| 亚洲欧美在线综合一区二区三区 | 久久一色本道亚洲| 亚洲欧美成人在线视频| 免费a级毛片视频| 亚洲美女一级毛片| 网久久综合| 国产丝袜91| 国产乱子伦视频三区| 日本日韩欧美| 国产精品无码AV中文| 国内精品一区二区在线观看| 亚洲色偷偷偷鲁综合| 国产精品嫩草影院av| 亚洲欧美一级一级a| 欧美成人aⅴ| 97视频在线精品国自产拍| 亚洲国产中文在线二区三区免| 日韩免费视频播播| 国产欧美精品专区一区二区| 99免费在线观看视频| 99精品国产自在现线观看| 在线精品欧美日韩| 亚洲欧洲综合| 亚洲精品少妇熟女| 免费国产好深啊好涨好硬视频| 在线看AV天堂| 国产欧美日韩免费| 高清无码一本到东京热| 国产激爽大片在线播放| 在线看片国产| 91国内视频在线观看| 久久国产免费观看| 2021国产精品自产拍在线| 国产视频欧美| www.国产福利| 日韩成人在线一区二区| 中文字幕调教一区二区视频| 亚洲第一视频免费在线| 亚洲国产欧美国产综合久久 | 日韩高清一区 | 欧美视频免费一区二区三区| 日韩人妻无码制服丝袜视频| 免费在线国产一区二区三区精品| 国产你懂得| 色成人综合| 欧洲日本亚洲中文字幕| 国产香蕉97碰碰视频VA碰碰看| 亚洲av成人无码网站在线观看| 伊人久综合| 原味小视频在线www国产| 不卡国产视频第一页| 欧美日韩第二页| 老司机久久99久久精品播放 | 国产一区二区三区视频| 亚洲精品无码AⅤ片青青在线观看| 久久这里只有精品国产99| 亚洲—日韩aV在线| 国产香蕉在线| 91成人免费观看| 91网红精品在线观看| 国产香蕉在线| 国产一级二级在线观看| 小蝌蚪亚洲精品国产| 国产一区二区免费播放| 91成人免费观看| 在线国产欧美| 国产一区二区人大臿蕉香蕉| 99视频在线看| 国产91无码福利在线| 午夜爽爽视频|