s5pv210_gpio驱动及其在android2.3.1下jni调用~~
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                s5pv210_gpio驱动及其在android2.3.1下jni调用~~
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            1、編寫GPIO驅(qū)動并編譯為模塊
完全按照linux驅(qū)動的編寫方式,封裝為標(biāo)準(zhǔn)的linux字符驅(qū)動
 
2、使用C語言編寫測試程序
編寫、編譯一個操作led的程序進行驅(qū)動測試
以上兩步可參考《s5pv210-gpio》:
s5pv210-gpio.c
s5pv210-gpio.h
s5pv210-gpio_test.c
其編譯必須在linux環(huán)境下完成,交叉編譯測試程序時使用靜態(tài)編譯
 
3、在eclipose中設(shè)計java接口
在eclipose中新建一個android工程用于設(shè)計底層jni的操作接口(windows、linux均可)
可參考《s5pv210-gpio》:
s5pv210-gpio\src\com\edu\gpio\s5pv210_gpio_options.java
 
4、由javah 生成.h文件
我們最終的目的是要實現(xiàn)s5pv210_gpio_options.java中設(shè)計的接口
 
由jdk自帶的javah組件生成s5pv210_gpio_options.h文件
打開終端,進入剛才編譯的Java程序的目標(biāo)文件夾(如果是在Eclipse中,則進入工程的bins\classes目錄),執(zhí)行下面的命令:
javah com.edu.gpio.s5pv210_gpio_options
其中,com.edu.gpio.是package的名字,s5pv210_gpio_options是聲明了native接口的Java類。
之后,將會生成一個形如com_edu_gpio_s5pv210_gpio_options.h的頭文件。
此頭文件中便聲明了可以被Java調(diào)用的C/C++的函數(shù)形式。
 
5、由.h文件設(shè)計.c文件接口
自己根據(jù)s5pv210_gpio_options.h構(gòu)建相應(yīng)的.c文件
復(fù)制一個跟s5pv210_gpio_options.h同名的.c文件,將里面的聲明全部改為對應(yīng)的實現(xiàn)
可參考:s5pv210_gpio_options.c
注意java中數(shù)據(jù)類型與c語言數(shù)據(jù)類型之間的轉(zhuǎn)換規(guī)則
設(shè)計.c文件的實現(xiàn)時可參考第2步的測試程序設(shè)計
 
7、編寫makefile文件
C程序編寫完畢后,在文件夾中創(chuàng)建一個名為Android.mk的文件,文件名不能修改,內(nèi)容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=com_sapp_gpio.c
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
LOCAL_MODULE := libgpio
LOCAL_SHARED_LIBRARIES := libutils
LOCAL_MODULE_TAGS := eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)?
 
其中,LOCAL_SRC_FILES后面的文件是我們的C語言的源程序文件名
LOCAL_MODULE后面的名字是我們將來生成的目標(biāo)文件名
include $(BUILD_SHARED_LIBRARY)表示將來要生成動態(tài)鏈接庫。
 
OK,寫好之后,回到Android源碼的根目錄,執(zhí)行:
在android源碼目錄的external下建立libs5pv210-gpio文件夾
將com_edu_gpio_s5pv210_gpio_options.c
com_edu_gpio_s5pv210_gpio_options.h
Android.mk
libs5pv210-gpio.so
拷到此目錄下
 
回到android源碼根目錄,執(zhí)行以下命令make libgpio
其中,libgpio是我們的Android.mk文件中LOCAL_MODULE的名字。
等待編譯結(jié)束,在out/target/product/generic/system/lib/libgpio.so目錄下即可找到編譯好的文件。
 
  
 
 
相關(guān)代碼可在此處下載:http://download.csdn.net/detail/xdw1985829/4390129
 
                            
                        
                        
                        完全按照linux驅(qū)動的編寫方式,封裝為標(biāo)準(zhǔn)的linux字符驅(qū)動
2、使用C語言編寫測試程序
編寫、編譯一個操作led的程序進行驅(qū)動測試
以上兩步可參考《s5pv210-gpio》:
s5pv210-gpio.c
s5pv210-gpio.h
s5pv210-gpio_test.c
其編譯必須在linux環(huán)境下完成,交叉編譯測試程序時使用靜態(tài)編譯
3、在eclipose中設(shè)計java接口
在eclipose中新建一個android工程用于設(shè)計底層jni的操作接口(windows、linux均可)
可參考《s5pv210-gpio》:
s5pv210-gpio\src\com\edu\gpio\s5pv210_gpio_options.java
4、由javah 生成.h文件
我們最終的目的是要實現(xiàn)s5pv210_gpio_options.java中設(shè)計的接口
由jdk自帶的javah組件生成s5pv210_gpio_options.h文件
打開終端,進入剛才編譯的Java程序的目標(biāo)文件夾(如果是在Eclipse中,則進入工程的bins\classes目錄),執(zhí)行下面的命令:
javah com.edu.gpio.s5pv210_gpio_options
其中,com.edu.gpio.是package的名字,s5pv210_gpio_options是聲明了native接口的Java類。
之后,將會生成一個形如com_edu_gpio_s5pv210_gpio_options.h的頭文件。
此頭文件中便聲明了可以被Java調(diào)用的C/C++的函數(shù)形式。
5、由.h文件設(shè)計.c文件接口
自己根據(jù)s5pv210_gpio_options.h構(gòu)建相應(yīng)的.c文件
復(fù)制一個跟s5pv210_gpio_options.h同名的.c文件,將里面的聲明全部改為對應(yīng)的實現(xiàn)
可參考:s5pv210_gpio_options.c
注意java中數(shù)據(jù)類型與c語言數(shù)據(jù)類型之間的轉(zhuǎn)換規(guī)則
設(shè)計.c文件的實現(xiàn)時可參考第2步的測試程序設(shè)計
7、編寫makefile文件
C程序編寫完畢后,在文件夾中創(chuàng)建一個名為Android.mk的文件,文件名不能修改,內(nèi)容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=com_sapp_gpio.c
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
LOCAL_MODULE := libgpio
LOCAL_SHARED_LIBRARIES := libutils
LOCAL_MODULE_TAGS := eng
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)?
其中,LOCAL_SRC_FILES后面的文件是我們的C語言的源程序文件名
LOCAL_MODULE后面的名字是我們將來生成的目標(biāo)文件名
include $(BUILD_SHARED_LIBRARY)表示將來要生成動態(tài)鏈接庫。
OK,寫好之后,回到Android源碼的根目錄,執(zhí)行:
在android源碼目錄的external下建立libs5pv210-gpio文件夾
將com_edu_gpio_s5pv210_gpio_options.c
com_edu_gpio_s5pv210_gpio_options.h
Android.mk
libs5pv210-gpio.so
拷到此目錄下
回到android源碼根目錄,執(zhí)行以下命令make libgpio
其中,libgpio是我們的Android.mk文件中LOCAL_MODULE的名字。
等待編譯結(jié)束,在out/target/product/generic/system/lib/libgpio.so目錄下即可找到編譯好的文件。
8、將動態(tài)庫拷入根文件系統(tǒng)/system/lib文件
 
相關(guān)代碼可在此處下載:http://download.csdn.net/detail/xdw1985829/4390129
總結(jié)
以上是生活随笔為你收集整理的s5pv210_gpio驱动及其在android2.3.1下jni调用~~的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 关于Redmi显示器(1A 23.8英寸
- 下一篇: 给十年前手机刷Linux,一台十年前的手
