本人才疏浅学,写一篇文档总结自己在msm8916平台上移植自己编写的简单的字符设备驱动开发的整个流程。这个小项目的主要功能是开发一个简单的APP,APP通过JNI去调用位于kernel的字符设备驱动。
APP的设计,开发平台Android Studio
主要的文件是下面的三个文件:
MainActivity.java文件的内容如下:
1 package com.example.administrator.myled;
2
3 import android.nfc.Tag;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.util.Log;
7 import android.view.View;
8 import android.widget.Button;
9 import android.widget.Toast;
10
11
12 import com.zbahuang.led.lowlevel.LedNative;
13
14 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
15 private final static String TAG = "zbzhuang";
16 Button btn_led_on;
17 Button btn_led_off;
18 LedNative myled;
19
20
21 @Override
22 protected void onCreate(Bundle savedInstanceState) {
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.activity_main);
25
26 initUI();
27
28 myled = new LedNative();
29 myled.openDev();
30 Log.d(TAG,"app:open Dev");
31 }
32
33 private void initUI() {
34 btn_led_on = (Button) findViewById(R.id.btn_led_on);
35 btn_led_on.setOnClickListener(this);
36
37 btn_led_off = (Button) findViewById(R.id.btn_led_off);
38 btn_led_off.setOnClickListener(this);
39 }
40
41 @Override
42 public void onClick(View v) {
43 switch (v.getId()){
44 case R.id.btn_led_on:
45 Toast.makeText(MainActivity.this,"拉灯-->",Toast.LENGTH_SHORT).show();
46 Log.d(TAG,"app:LED on");
47 myled.devOn();
48 break;
49 case R.id.btn_led_off:
50 Toast.makeText(MainActivity.this,"灭灯-->",Toast.LENGTH_SHORT).show();
51 Log.d(TAG,"app:LED off");
52 myled.devOff();
53 break;
54 default:
55 break;
56 }
57
58 }
59
60 @Override
61 protected void onDestroy() {
62 super.onDestroy();
63 myled.closeDev();
64 Log.d(TAG,"app:close Dev");
65 }
66 }
LedNative.java文件的内容如下:
在这个文件中所声明的方法是在jni中实现的啊。使用了特殊的关键字表示该方法是在JNI当中实现的啊。
1 package com.zbahuang.led.lowlevel;
2
3 /**
4 * Created by Administrator on 2017/3/29 0029.
5 */
6
7 public class LedNative {
8
9 static {
10 System.loadLibrary("led_jni");
11 }
12
13 public native int openDev();
14 public native int devOn();
15 public native int devOff();
16 public native int closeDev();
17 }
18 package com.zbahuang.led.lowlevel;
19
20 /**
21 * Created by Administrator on 2017/3/29 0029.
22 */
23
24 public class LedNative {
25
26 static {
27 System.loadLibrary("led_jni");
28 }
29
30 public native int openDev();
31 public native int devOn();
32 public native int devOff();
33