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

        ?

        基于JNI技術的3G模塊控制研究和實現(xiàn)

        2015-05-15 06:57:20王百青付永慶
        應用科技 2015年3期
        關鍵詞:內核調用底層

        王百青,付永慶

        哈爾濱工程大學信息與通信工程學院,黑龍江哈爾濱 150001

        基于JNI技術的3G模塊控制研究和實現(xiàn)

        王百青,付永慶

        哈爾濱工程大學信息與通信工程學院,黑龍江哈爾濱 150001

        為了研究Android系統(tǒng)的應用程序如何通過JNI技術實現(xiàn)對底層設備的操作,文中以3G模塊實驗為例,介紹了Android系統(tǒng)的Linux內核對3G模塊常用控制引腳的驅動實現(xiàn)。結合JNI和Android NDK技術調用本地方法,并在E-clipse下編程實現(xiàn)Android應用程序對3G模塊的常用操作(如復位、飛行模式等)。實踐證明通過JNI技術可實現(xiàn)An-droid應用程序操作底層設備。

        Android系統(tǒng);Linux內核;3G模塊;JNI技術;Android NDK

        作為基于Linux內核的操作系統(tǒng),Android系統(tǒng)自推出以來,就以“開源”特性逐漸占據(jù)了嵌入式設備操作系統(tǒng)的主要市場份額,成為現(xiàn)有主要的嵌入式系統(tǒng)如iOS、Windows Phone、Android等市場占有率最高的操作系統(tǒng)。Android SDK(software develop-ment kit)中指定使用Java作為第三方應用開發(fā)語言[1],且Java應用程序運行在Dalvik虛擬機中。運行在虛擬機中的Java代碼可以充分利用Java語言的平臺無關性,但是一定程度上造成了Android應用程序很難操作底層硬件的缺點。為此Android系統(tǒng)中引入了JNI機制——利用Java的JNI機制,使用Android NDK(native development kit)編譯環(huán)境,應用程序可以透過Android系統(tǒng)的應用框架層,直接在Linux的文件系統(tǒng)對設備進行操作[2]。文中討論了在Android系統(tǒng)中通過應用程序控制3G模塊的常用接口——復位、飛行模式等,討論了JNI技術在Android系統(tǒng)中的應用價值和意義。

        1 Android JNI和NDK介紹

        Android系統(tǒng)架構采用了分層結構,保證了層與層之間相互分離,當某一層發(fā)生變化時,其他層受影響很少[3]。如圖1所示,從底層到頂層分別是Linux內核層、系統(tǒng)庫和Android運行時庫、應用框架層和應用程序層[4]。

        JNI是JDK(Java native kit)的一部分,可以允許Java代碼和其他語言寫的代碼進行交互,以實現(xiàn)代碼在不同的平臺上移植。通過JNI,可以使得運行于JVM(Java virtualmachine)的代碼調用C、C++等[5]語言編寫的應用程序或庫[6],同時也可以通過調用相應的接口函數(shù)將Java虛擬機內嵌到本地應用程序中[7]。JNI機制調用本地的C/C++代碼庫,可以充分利用C/C++代碼的高效性,來提高應用程序的運行效率。

        Android NDK本質上是一系列的工具集,用來完善Android應用更加便捷的使用本地代碼,如C或C++代碼[8]。因此,用戶可以使用NDK將要求高性能的應用邏輯使用C開發(fā),從而提高應用程序的執(zhí)行效率,而且可避免Java包都是可以反編譯的不安全性[9]。Android系統(tǒng)的層次結構如圖1所示。

        2 MU739模塊控制引腳及驅動實現(xiàn)

        MU739為華為公司推出的支持WCDMA、HSPA+的LGA 3G模塊,采用USB接口。在HSPA+模式下,上行速率可以達到5.76 Mbit/s,下行速率可以達到21.6 Mbit/s。在Linux內核中,對USB 3G模塊的驅動位于USB設備驅動層[10-11],如圖2所示。

        圖2 USB 3G模塊的驅動在Linux內核中的位置

        在3G模塊的驅動移植完成后,為實現(xiàn)對3G模塊的控制,文中選取了MU739模塊的上電控制引腳(ON1、ON2_N)、復位控制引腳(PWRDWN_N)、飛行模式控制引腳(W_DISABLE_N)和休眠控制引腳(WAKEUP_IN)來實現(xiàn)控制3G模塊的工作狀態(tài)。下面依次介紹這幾個引腳的主要功能。

        1)ON1和ON2_N引腳用于打開3G模塊,其中ON1引腳設置為默認高電平,ON2_N通過控制引腳提供開機時序,使3G模塊在上電之后處于工作狀態(tài);

        2)PWRDWN_N引腳用于復位整個模塊系統(tǒng),使基帶、電源管理單元、RF單元進入初始狀態(tài);

        3)W_DISABLE_N引腳用于使模塊進入飛行模式,關閉模塊的RF單元;

        4)WAKEUP_IN引腳用于CPU來控制3G模塊的睡眠狀態(tài),當設置為高電平時,CPU喚醒MU739,當電平為低時,CPU使MU739進入睡眠模式。

        2.1 配置控制引腳為GPIO模式

        設計中采用的CPU為飛思卡爾公司的iMX536多媒體處理器,該處理器采用ARMCortexTM-A8內核,在車載環(huán)境中可以實現(xiàn)800 Hz的工作頻率。為了實現(xiàn)對片內多種功能模塊的支持,iMX53x系列處理器采用IOMUX機制實現(xiàn)對IO引腳的復用分配。

        對3G模塊的控制,主要通過iMX536處理器的IO控制實現(xiàn)。為此,需要在平臺設備的配置文件中,配置對應的IO引腳為GPIO模式:

        MX53_PAD_GPIO_19__GPIO4_5, //ON2

        MX53_PAD_PATA_DA_2__GPIO7_8, //PWRDWN

        MX53_PAD_PATA_CS_0__GPIO7_9, //W_DISABLE

        MX53_PAD_PATA_CS_1__GPIO7_10, //WAKEUP_IN

        并給與ON2_N的控制引腳實現(xiàn)模塊的開啟時序(見圖3所示)。

        圖3 開啟3G模塊的時序圖

        gpio_direction_output(ON2,1);

        udelay(40);

        gpio_direction_output(ON2,0);

        其中,ON2為宏定義——#define ON2(3×32+5) /?GPIO_4_5?/

        2.2 控制驅動程序的編寫

        為實現(xiàn)對底層設備的操作,需要編寫對應的控制驅動程序。因此,為實現(xiàn)對上述IO引腳的控制,需要編寫對應的驅動代碼,即字符型設備驅動。需要首先實例化Linux內核中描述設備文件操作的結構體file_operations(位于Linux內核include/linux/下的Fs.h文件),其中定義了操作驅動設備的主要操作接口函數(shù)指針。下面所示代碼為在本驅動代碼中實例化結構體file_operations:

        上述函數(shù)指針中,主要實現(xiàn)功能的函數(shù)為mu739_cont_ioctl,該函數(shù)的實現(xiàn)原理是通過獲取打開設備時傳入的參數(shù)值,來執(zhí)行對應的IO控制輸出,以實現(xiàn)對應控制引腳的控制時序(見圖4)。

        圖4 3G模塊控制時序

        static int mu739_cont_ioctl(struct inode?inode,struct file?file,unsigned int cmd,unsigned long arg){

        在驅動代碼最后,實現(xiàn)模塊的初始和注銷函數(shù)如下:

        最后,將該驅動靜態(tài)添加進內核中。編譯燒寫后,會在Android系統(tǒng)的dev/目錄下查看到該設備mu739_cont_dev。

        3 應用程序編寫

        在Eclipse開發(fā)環(huán)境中新建一個Android應用工程mu739_control,用來作為控制3G模塊的Android應用程序。

        3.1 編寫調用本地方法

        在mu739_control工程目錄下新建包com.exam-ple.myjni,用于聲明native方法以及給應用程序調用的靜態(tài)庫名字:

        其中native關鍵字用于告知編譯器該方法為本地方法;static關鍵字包括的語句System.loadLibrary("ContModule"),表示調用本地庫文件為libCont-Module.so(其命名規(guī)則是libFileName.so)。

        之后,在工程目錄中,新建空文件夾jni,用于存放jni文件。并通過終端進入工程的根目錄下,運行命令javah,生成JNI頭文件:

        $javah-classpath bin/classes-d jni/com.exam-ple.myjni.MyNative

        其中,javah命令為NDK開發(fā)環(huán)境中帶有的工具,其用法如圖5所示。

        圖5 javah命令的使用方法

        javah命令生成的頭文件名字為com_example_myjni_MyNative.h,其中包含了上述本地方法的聲明方式:

        然后,在jni/目錄下編寫Android.mk文件,用來指導編譯工具編譯上述C文件:

        最后,在終端運行命令#ndk-build編譯,即可在libs/armeabi/目錄下生成.so庫文件libCont-Modu le.so。即為System.loadLibrary()中引用的靜態(tài)庫文件。

        3.2 JAVA代碼實現(xiàn)

        編寫Android應用代碼,實現(xiàn)對上述本地方法的調用。

        在Android應用工程中開發(fā)一個Android應用界面(如圖6所示),界面上的按鍵采用監(jiān)聽的方式處理對3G設備的操作。

        圖6 Android應用程序控制界面

        在代碼中,實現(xiàn)對上述按鍵的監(jiān)聽,為減少函數(shù)調用時引起的延時,響應按鍵的函數(shù)在新建的線程中實現(xiàn)。監(jiān)聽按鍵的onClick函數(shù)代碼如下:

        4 結束語

        通過介紹Android系統(tǒng)應用層代碼對3G模塊復位等控制引腳的操作,討論了Android應用中使用JNI技術控制底層設備的實現(xiàn)方法和步驟,對于涉及到底層設備操作(如串口等)的應用設計具有指導意義。在下一步的研究中,可以結合硬件抽象層實現(xiàn)底層和應用層的隔離,討論及實現(xiàn)應用層對底層設備的操作。

        [1]金智義,張戟.基于Android平臺的串口通信實現(xiàn)[J].電腦知識與技術,2011,7(13):2983-2990.

        [2]高海彬.JNI在Android系統(tǒng)下串口控制的應用[J].信息技術,2013(10):173-176.

        [3]李剛.瘋狂Android講義[M].2版.北京:電子工業(yè)出版社,2011:78-79.

        [4]高海彬.JNI在Android系統(tǒng)下串口控制的應用[J].信息技術,2011(10):173-176

        [5]丁海洋,姚佳楠,王明飛.基于移動平臺的印刷網點檢測技術[J].北京印刷學院學報,2014(8):50-65.

        [6]張華平,玄光哲,于貴平,等.基于JNI技術應用框架的分析和實現(xiàn)[J].吉林大學學報:信息科學,2003,21(2):188-191.

        [7]任俊偉,林東岱.JNI技術實現(xiàn)跨平臺開發(fā)的研究[J].計算機應用研究,2005(7):180-184.

        [8]Google.Android Developer website[EB/OL].[2012-09-02].http://developer.android.com.

        [9]王二偉.基于Android平臺人臉檢測與識別研究[D].西安:西安電子科技大學,2013:11-22.

        [10]劉淑峰.基于Android的多媒體與3G上網子系統(tǒng)設計與實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學,2012:63-64.

        [11]宋世磊,劉曉平,應懷樵.基于ARM-Linux的USB 3G模塊設備驅動的研究[J].計算機工程與應用,2011:175-178.

        Research and imp lementation of 3G module control based on JNI technology

        WANG Baiqing,F(xiàn)U Yongqing
        College of Information and Communication Engineering,Harbin Engineering University,Harbin 150001,China

        In order to get the way by which the application of Android system can control the bottom devices through JNI technology,the 3Gmodule is used for the experiment.The driver implementation of3Gmodule controlling pins in Linux kernel of Android operating system was introduced.Besides,using JNIand Android NDK technology,and calling the nativemethods,it achieves the Android application which is developed in the IDE of Eclipse to operate 3G module,such as reset,flightmode,and so on.It is verified that the bottom equipment can be operated by An-droid application program through JNI technology.

        Android operating system;Linux kernel;3G module;JNI technology;Android NDK

        TP311.52

        A

        1009-671X(2015)03-035-05

        10.3969/j.issn.1009-671X.201410002

        2014-10-13.

        日期:2015-04-20.作者簡介:王百青(1988-),男,碩士研究生;付永慶(1956-),男,教授,博士生導師.

        王百青,E-mail:1027486374@qq.com.

        http://www.cnki.net/kcms/detail/23.1191.U.20150420.1012.003.html

        猜你喜歡
        內核調用底層
        萬物皆可IP的時代,我們當夯實的IP內核是什么?
        航天企業(yè)提升采購能力的底層邏輯
        強化『高新』內核 打造農業(yè)『硅谷』
        核電項目物項調用管理的應用研究
        基于嵌入式Linux內核的自恢復設計
        Linux內核mmap保護機制研究
        LabWindows/CVI下基于ActiveX技術的Excel調用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于系統(tǒng)調用的惡意軟件檢測技術研究
        回到現(xiàn)實底層與悲憫情懷
        小說林(2014年5期)2014-02-28 19:51:47
        利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
        国产精品日本一区二区三区| 欧美寡妇xxxx黑人猛交| 亚洲第一黄色免费网站| 少妇被猛烈进入到喷白浆| 国产极品美女高潮无套| 男女猛烈xx00免费视频试看| 中出内射颜射骚妇| 精品少妇人妻av免费久久久| 色噜噜狠狠色综合欧洲| 一区二区三区av资源网| 亚洲精品中文字幕一二 | 国产二区中文字幕在线观看| 国产午夜视频在线观看免费| 精品一区二区三区在线视频| 国产午夜精品一区二区| 丰满人妻妇伦又伦精品国产| 亚洲国产精品嫩草影院久久| 亚洲精彩视频一区二区| 一区二区高清免费日本| 国产精品天干天干| 亚洲国产成人av在线观看| 欧美尺寸又黑又粗又长| 99re国产电影精品| 被驯服人妻中文字幕日本| 九九精品国产亚洲av日韩| 粉嫩av国产一区二区三区| 国产69精品久久久久999小说| 久久精品无码一区二区2020| 中文字幕亚洲无线码a| av有码在线一区二区三区| 亚洲av无码国产精品色| 成人毛片一区二区| 欧美与黑人午夜性猛交久久久| 中文字幕亚洲人妻系列| 伊人影院成人在线观看| 欧美午夜理伦三级在线观看| 尤物视频在线观看| 抽插丰满内射高潮视频| 91久久精品人妻一区二区| 男女激情视频网站在线| 少妇真人直播免费视频|