AndroidドライバによるLED-NDKプログラムの作成

2109 ワード

1.まずLINUXカーネルモジュールLEDを作成する

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


MODULE_LICENSE("GPL");

#define GPM4CON 0X110002E0
#define GPM4DAT 0X110002E4

#define LED_ON _IOW(‘G‘,0,int)

#define LED_OFF _IOW(‘G‘,1,int)

static struct cdev dev;//1.1   cdev  

static dev_t dev_no;
struct class *led_class;

static unsigned int *led_con;
static unsigned int *led_dat;

long led_ioctl( struct file *file, unsigned int cmd, unsigned long arg )
{
  switch( cmd )
  {
    case LED_ON:
      writel((readl(led_dat)&(~(0x1< 
 

 2. ヘッダファイルを生成する必要があります.
ヘッダファイルを生成するにはアプリケーションが必要です.そのため、国で提供されたappソフトウェアを埋め込む.解凍後にlocalを変更します.propertiesファイルに対応するアドレス.
studioを開きます.sh,再コンパイル工事.
プロジェクトをコンパイルした後、appのプロジェクトファイルのフォルダでコマンドを実行します.
javah -d jni -classpath/opt/android-sdk-linux/platforms/android-23/android.jar:/home/my_Android/led\/NDK/NDK_APP/app/build/intermediates/classes/debug/com.android.jack.ndk.happy.MainActivity
そのうち/opt/android-sdk-linux/platforms/android-23/android.jarはアンドロイドsdkのアドレスです.
/home/my_Android/led/NDK/NDK_APP/app/build/intermediates/classes/debug/は、対応するアンドロイドappソースファイルエンジニアリングのアドレスです.
com.android.jack.ndk.happy.MainActivityはアンドロイドのプロジェクト名です.
コマンドを実行すると、ディレクトリにjniフォルダが生成されます.そのうちcom_android_jack_ndk_happy_MainActivity.hは私たちに必要なヘッダファイルです.
ファイルは、実装する必要がある関数として宣言されます.
jniファイルにndk_を作成するled.cソースファイルとmakefileファイルAndroid.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk_test_myled
LOCAL_SRC_FILES := ndk_led.c
include $(BUILD_SHARED_LIBRARY)

静的ライブラリを生成するにはSHAREDをSTATICに変更すればよい.
次に、前のレベルのディレクトリ実行コマンドndk-buildに戻ります.libs/armeabi/libndk_が生成されます.test_myled.soライブラリファイル.
以上、AndroidドライバによるLED-NDKプログラムの作成に関する資料を整理しました.