Android 底层驱动开发步骤——linux内核层、HAL层、JNI层
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层相关推荐
- 实现Android底层驱动开发并裁剪定制Android操作系统
毕业论文 题 目实现Android底层驱动开发并裁剪定制Android操作系统 学 院电子信息与电气工程学院 姓 名牛xxx民 专 业电子信息科学与技术 学 号2012xxxxxx ...
- Android底层驱动开发 -驱动配置篇
Android底层驱动开发 -驱动配置篇## 所需要的硬件及软件资源 一块Android开发板(我用的是Firefly-AIO-3288J) 开发板的系统源码 一台运行Linux系统的主机(虚拟机也行 ...
- Android底层驱动开发记录:01_JNI
最近项目中需要用到了Android底层的开发,正好疫情居家所以又把韦老师的老教程第四期Android教程翻出来学习学习,手边也没有合适的板子,找了一块AIO-3288C的板子接了一块HDMI的屏来用. ...
- linux内核led驱动开发,从Linux内核LED驱动来理解字符设备驱动开发流程
目录 博客说明 开发环境 1. Linux字符设备驱动的组成 1.1 字符设备驱动模块加载与卸载函数 1.2 字符设备驱动的file_operations 结构体中的成员函数 2. 字符设备驱动--设 ...
- i.MX6ULL驱动开发 | 31 - Linux内核网络设备驱动框架
一.Linux网络设备驱动整体架构 网络设备是完成用户数据包在网络媒介上发送和接收的设备,它将上层协议传递下来的数据包,以特定的媒介访问控制方式进行发送,并将接收到的数据包传递给上层协议. Linux ...
- Android底层驱动开发(四)
目录 一.Android源码编译 编译原理 编译组成 原生Android编译 二.Makefile文件 三.Android.mk文件
- Android底层驱动开发(十一)
目录 一.WiFi开发流程 二.计算机网络 (一)HTTP报文格式 (二)TCP报文格式
- linux底层驱动内核,Linux底层驱动开发需要学习哪些内容
Linux底层驱动开发需要学习哪些内容想必这是很多学习Linux的朋友十分头疼的问题,今天就让我来告诉大家我们到底该学习哪些内容呢? 1. 要会一些硬件知识,比如Arm接口编程 2. 学会写简单的ma ...
- 显示驱动包含在Linux内核层,驱动程序层(上) - Linux内核--网络栈实现分析_Linux编程_Linux公社-Linux系统门户网站...
经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现.由于这是早期版本,代码的层次隔离做的还不是很好,这里说是从底层分 ...
最新文章
- IT职场常见疾病之“颈椎病”
- 华为Mate 30系列发布:电影级4摄,麒麟990 5G,没谷歌全家桶,售价高于iPhone11
- C语言求最大公约数3种方法
- 使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
- 最全.Net学习资料库上线,今日可免费下载各类资源!(附百度云链接)
- 华软计算机网络技术,[计算机硬件及网络]计算机网络技术专业自评报告华软.doc...
- LVS+ldirector实现负载均衡
- centos java创建文件_CentOS java生成文件并赋予权限的问题
- fiddler怎么过滤_Fiddler导出JMeter脚本插件详解
- 如何下载python模块_python中模块包的离线下载教程
- html5各种页面切换效果和模态对话框
- Docker使用redis
- Apple Pay如何使用?全网最完美攻略(图文教程)!
- Windows环境下用C语言实现CS模型(基于TCP协议)
- Apollo Planning决策规划算法代码详细解析 (13): RuleBasedStopDecider
- Openwrt Kernel panic - not syncing: Fatal exception 解决方案
- CAD命令栏窗口跑到屏幕外面怎么找回来
- 软考高项必考的PV、EV、AC、SV、CV、SPI、CPI看这就够了
- Tekton之二:如何使用 Tekton 创建 CICD 流水线
- WiFi万能钥匙万玉权:管理应该是“自下而上”
热门文章
- php 正则去除script,javascript正则实现php中的加入和去除反斜杠函数效果
- 超细节!从源代码剖析Self-Attention知识点
- 线下沙龙 | 小身材大能量!用英伟达智能小车Jetbot玩转深度学习
- 【ICCV-2019】ACNet:通过非对称卷积块增强CNN的核骨架 3*3卷积==>1*3卷积+3*1卷积=白给的精度提升
- Google Colab
- Java中Map集合类的用法(HashMap)
- Result Maps collection already contains value for ***的问题
- c语言实现循环单链表
- SpringAOP中通过JoinPoint获取值,并且实现redis注解
- 「数据库系列杂谈」数据库访问性能优化