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

基于JNI技術的3G模塊控制研究和實現

2015-05-15 06:57:20王百青付永慶
應用科技 2015年3期
關鍵詞:設備系統

王百青,付永慶

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

基于JNI技術的3G模塊控制研究和實現

王百青,付永慶

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

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

Android系統;Linux內核;3G模塊;JNI技術;Android NDK

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

1 Android JNI和NDK介紹

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

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

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

2 MU739模塊控制引腳及驅動實現

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

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

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

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

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

2.1 配置控制引腳為GPIO模式

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

對3G模塊的控制,主要通過iMX536處理器的IO控制實現。為此,需要在平臺設備的配置文件中,配置對應的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的控制引腳實現模塊的開啟時序(見圖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 控制驅動程序的編寫

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

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

圖4 3G模塊控制時序

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

在驅動代碼最后,實現模塊的初始和注銷函數如下:

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

3 應用程序編寫

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

3.1 編寫調用本地方法

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

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

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

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

其中,javah命令為NDK開發環境中帶有的工具,其用法如圖5所示。

圖5 javah命令的使用方法

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

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

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

3.2 JAVA代碼實現

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

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

圖6 Android應用程序控制界面

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

4 結束語

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

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

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

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

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

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

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

[7]任俊偉,林東岱.JNI技術實現跨平臺開發的研究[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上網子系統設計與實現[D].哈爾濱:哈爾濱工業大學,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,FU 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

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 韩国自拍偷自拍亚洲精品| 亚洲日韩国产精品综合在线观看| 国产高清无码第一十页在线观看| 亚洲无线视频| 丰满少妇αⅴ无码区| 在线观看91香蕉国产免费| 亚洲欧州色色免费AV| 国内精品小视频福利网址| 波多野结衣爽到高潮漏水大喷| 亚洲一区黄色| 久久久久久久久久国产精品| 久热re国产手机在线观看| 亚洲色欲色欲www网| 91在线无码精品秘九色APP| 91美女视频在线| 午夜性爽视频男人的天堂| 九色视频线上播放| 成年午夜精品久久精品| 中文字幕有乳无码| 极品av一区二区| 99这里只有精品免费视频| 性做久久久久久久免费看| 国产精品99一区不卡| 成人欧美日韩| 波多野结衣第一页| 亚洲AV无码乱码在线观看代蜜桃 | 在线观看免费黄色网址| 97se亚洲综合在线天天| 国产亚洲视频中文字幕视频| 制服丝袜 91视频| 欧美日韩免费观看| 国产产在线精品亚洲aavv| 欧美日韩第二页| 狠狠干欧美| 国产女人爽到高潮的免费视频| 精品黑人一区二区三区| 制服丝袜一区二区三区在线| 国产91精品最新在线播放| 亚洲第一成年免费网站| 亚洲高清无码久久久| 日本在线免费网站| 亚洲精品天堂在线观看| 自慰网址在线观看| 日本AⅤ精品一区二区三区日| 国产精品视频猛进猛出| 亚洲成a∧人片在线观看无码| www.亚洲国产| 亚洲VA中文字幕| 久久精品国产电影| 成人福利在线看| 尤物视频一区| A级毛片无码久久精品免费| 97se亚洲| 亚洲美女一区二区三区| 亚洲,国产,日韩,综合一区| 午夜久久影院| 日韩欧美中文字幕在线韩免费| 久久综合成人| 国产亚洲高清在线精品99| 狠狠色狠狠综合久久| 国产免费观看av大片的网站| 亚洲精品视频免费| 色婷婷电影网| 中文字幕永久视频| 色综合久久综合网| 国产福利一区视频| 人妻出轨无码中文一区二区| 亚洲免费毛片| 97综合久久| 91精选国产大片| 一级一毛片a级毛片| 国产麻豆aⅴ精品无码| 亚洲欧美日韩另类| 国产不卡在线看| 色哟哟色院91精品网站| 青青国产视频| 经典三级久久| 午夜高清国产拍精品| 精品一区二区无码av| 香蕉久人久人青草青草| 久久国产免费观看| 国产菊爆视频在线观看|