第8章 让开发板发出声音,蜂鸣器驱动 心得体会
Posted fanjieyun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第8章 让开发板发出声音,蜂鸣器驱动 心得体会相关的知识,希望对你有一定的参考价值。
第8章让开发板发出声音,蜂鸣器驱动
心得体会
通过学习android深度探索(卷1)HAL与驱动开发的第8章 让开发板发出声音,蜂鸣器驱动,我加深对驱动的认识。以下主要是我对本节实验和参考在Linux驱动开发中使用PWM控制蜂鸣器中的一些见解。
先编写一个简单的蜂鸣器驱动程序,根据开发板上的硬件IO接口和Android驱动规范,在kernel中的driver目录中新建一个Buzzer文件,新建一个buzzer.c的源文
在目录下创建一个Makefile文件
先运行make clean命令清楚到编译生成的一些工程文件,执行make命令,重新编译驱动程序。将编译生成的buzzer.ko内核镜像文件拷贝出来,adb push buzzer.ko /fpga/moudles
然后插入内核镜像文件到系统中,insmod buzzer.ko,并且装载设备驱动程序,mknod /dev/buzzer c 248 0
现在就可以在库层直接编写C/C++文件来调用这个驱动程序,这个可以在ubuntu中安装NDK编译环境,新建buzzer文件,编译生成一个库文件,那样就可以直接在应用层使用这个库提供的JNI方法,那样调用会显得更加的简单,当然这个调用方式google并不提倡,我在这里只是想展示这种调用方式而已
构建一个jni工程,新建一个buzzer.c的源文件
进行NDK编译,生成libbuzzer.so,这个库就可以直接在应用层进行调用
在eclipse中编写应用程序直接调用这个库,实现对底层驱动的调用!!
主要源代码:
- package com.fantasy.buzzer;
- //@ canjianfantasy 2013.6.22
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.View;
- import android.widget.Button;
- public class BuzzerActivity extends Activity {
- 10. Button BuzzerButton;
- 11. int BuzzerData =0;
- 12.
- 13. @Override
- 14. protected void onCreate(Bundle savedInstanceState) {
- 15. super.onCreate(savedInstanceState);
- 16. setContentView(R.layout.activity_buzzer);
- 17.
18. // BuzzerControl(BuzzerData);
- 19. BuzzerButton =(Button)findViewById(R.id.On);
- 20.
- 21. BuzzerButton.setOnClickListener(new Button.OnClickListener() {
- 22.
- 23. public void onClick(View v) {
- 24. // TODO Auto-generated method stub
- 25. if(BuzzerData == 0){
- 26. BuzzerData = 1;
- 27. BuzzerButton.setText("Buzzer off");
- 28. }
- 29. else{
- 30. BuzzerData = 0;
- 31. BuzzerButton.setText("Buzzer On");
- 32. }
33. // BuzzerControl(BuzzerData);
- 34. }
- 35. });
- 36.
- 37. }
- 38. static{
- 39. System.loadLibrary("buzzer");
- 40. }
- 41. public native int BuzzerControl(int Value);
- 42.
- 43. @Override
- 44. public boolean onCreateOptionsMenu(Menu menu) {
- 45. // Inflate the menu; this adds items to the action bar if it is present.
- 46. getMenuInflater().inflate(R.menu.activity_buzzer, menu);
- 47. return true;
- 48. }
- 49.
50. }
然后运行,在开发板上查看运行结果。。。
http://www.cnblogs.com/yun123456/
以上是关于第8章 让开发板发出声音,蜂鸣器驱动 心得体会的主要内容,如果未能解决你的问题,请参考以下文章