1.Linux驱动实现
2.Linux内核驱动测试
3.Android HAL层实现
4.Aidl实现
5.Service java实现
6.Service jni 实现
7.注册service和jni方法
8.Android App调用测试

1.linux驱动实现。

这里编写一个字符设备cdev驱动,详情请看 linux设备驱动学习(二)——字符设备编写及测试

2.Linux内核驱动测试

建立globalmemTest测试文件,代码如下所示:

#include<fcntl.h>
#include<stdio.h>

int main(void)
{
char s[] = "Linux Programmer!\n";
char buffer[80];
int fd=open("/dev/globalmem",O_RDWR);//打开globalmem设备,fd返回大于2的数则成功,O_RDWR为权限
write(fd,s,sizeof(s));          //将字符串s写入globalmem字符设备中
printf("test write %d %s\n",fd,s );  
        close(fd);  //关闭设备
fd=open("/dev/globalmem",O_RDWR);
read(fd,buffer,sizeof(buffer));   //读取globalmem设备中存储的数据
printf("test read %d %s\n",fd,buffer);  //输出结果显示

return 0;

}

结果展示:

3.在虚拟机里面测试

在Android源码目录的external下新建globalmem文件夹,将globalmemTest.c放入这里面,之后在这里面新建Android.mk

Android.mk文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES :=$(call all-subdir-c-files)
LOCAL_MODULE :=globalmemTest
include $(BUILD_EXECUTABLE)

退回至Android源码根目录下,执行source build/envsetup.sh ,再用lunch加载特定类型,选择你用的分支数字,之后再make

命令:source build/envsetup.sh

lunch

你产品分支数字

make  [模块名(Android.mk中模块名字)]

之后再目标目录可以找到编译后生成的文件,在虚拟机中进入adb shell后执行它即可。

4.HAL层可查看这篇文章

Android HAL层编写

Android 底层驱动开发步骤——linux内核层、HAL层、JNI层相关推荐

  1. 实现Android底层驱动开发并裁剪定制Android操作系统

    毕业论文 题   目实现Android底层驱动开发并裁剪定制Android操作系统 学   院电子信息与电气工程学院 姓   名牛xxx民 专   业电子信息科学与技术 学   号2012xxxxxx ...

  2. Android底层驱动开发 -驱动配置篇

    Android底层驱动开发 -驱动配置篇## 所需要的硬件及软件资源 一块Android开发板(我用的是Firefly-AIO-3288J) 开发板的系统源码 一台运行Linux系统的主机(虚拟机也行 ...

  3. Android底层驱动开发记录:01_JNI

    最近项目中需要用到了Android底层的开发,正好疫情居家所以又把韦老师的老教程第四期Android教程翻出来学习学习,手边也没有合适的板子,找了一块AIO-3288C的板子接了一块HDMI的屏来用. ...

  4. linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程

    目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...

  5. i.MX6ULL驱动开发 | 31 - Linux内核网络设备驱动框架

    一.Linux网络设备驱动整体架构 网络设备是完成用户数据包在网络媒介上发送和接收的设备,它将上层协议传递下来的数据包,以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议. Linux ...

  6. Android底层驱动开发(四)

    目录 一.Android源码编译 编译原理 编译组成 原生Android编译 二.Makefile文件 三.Android.mk文件

  7. Android底层驱动开发(十一)

    目录 一.WiFi开发流程 二.计算机网络 (一)HTTP报文格式 (二)TCP报文格式

  8. linux底层驱动内核,Linux底层驱动开发需要学习哪些内容

    Linux底层驱动开发需要学习哪些内容想必这是很多学习Linux的朋友十分头疼的问题,今天就让我来告诉大家我们到底该学习哪些内容呢? 1. 要会一些硬件知识,比如Arm接口编程 2. 学会写简单的ma ...

  9. 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...

    经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现.由于这是早期版本,代码的层次隔离做的还不是很好,这里说是从底层分 ...

最新文章

  1. IT职场常见疾病之“颈椎病”
  2. 华为Mate 30系列发布:电影级4摄,麒麟990 5G,没谷歌全家桶,售价高于iPhone11
  3. C语言求最大公约数3种方法
  4. 使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
  5. 最全.Net学习资料库上线,今日可免费下载各类资源!(附百度云链接)
  6. 华软计算机网络技术,[计算机硬件及网络]计算机网络技术专业自评报告华软.doc...
  7. LVS+ldirector实现负载均衡
  8. centos java创建文件_CentOS java生成文件并赋予权限的问题
  9. fiddler怎么过滤_Fiddler导出JMeter脚本插件详解
  10. 如何下载python模块_python中模块包的离线下载教程
  11. html5各种页面切换效果和模态对话框
  12. Docker使用redis
  13. Apple Pay如何使用?全网最完美攻略(图文教程)!
  14. Windows环境下用C语言实现CS模型(基于TCP协议)
  15. Apollo Planning决策规划算法代码详细解析 (13): RuleBasedStopDecider
  16. Openwrt Kernel panic - not syncing: Fatal exception 解决方案
  17. CAD命令栏窗口跑到屏幕外面怎么找回来
  18. 软考高项必考的PV、EV、AC、SV、CV、SPI、CPI看这就够了
  19. Tekton之二:如何使用 Tekton 创建 CICD 流水线
  20. WiFi万能钥匙万玉权:管理应该是“自下而上”

热门文章

  1. php 正则去除script,javascript正则实现php中的加入和去除反斜杠函数效果
  2. 超细节!从源代码剖析Self-Attention知识点
  3. 线下沙龙 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习
  4. 【ICCV-2019】ACNet:通过非对称卷积块增强CNN的核骨架 3*3卷积==>1*3卷积+3*1卷积=白给的精度提升
  5. Google Colab
  6. Java中Map集合类的用法(HashMap)
  7. Result Maps collection already contains value for ***的问题
  8. c语言实现循环单链表
  9. SpringAOP中通过JoinPoint获取值,并且实现redis注解
  10. 「数据库系列杂谈」数据库访问性能优化