自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 android底层开发学习笔记十(Android系统定制)

在Android目录(fspad-733-6.0/androidM)中执行pack命令,生成boot-resource.fex文件(./tools/pack/out/boot-resource.fex)存放路径:fspad-733-6.0/androidM/out/target/product/astar-fspad_733/system/media。1、添加目录:~ /fspad-733-6.0/androidM/device/farsight/farsight-733。

2025-04-28 22:23:58 1792

原创 android底层开发学习笔记九(hal层架构-2)

2、点击app,可以看到c_open,c_ioctl,c_close和hal_open,hal_ioctl,hal_close的日志都打印了,说明c库层能通过stub调用hal层代码。2、定义结构体struct led_device_t,封装hal_open,hal_ioctl, hal_close等函数,并且集成 struct hw_device_t;2、修改c_open,c_ioctl,c_cloae代码,通过代理人调用hal层接口。二、编译hal层库代码:编写Android.mk。

2025-04-27 20:51:25 273

原创 android底层开发学习笔记八(hal层架构-1)

封装这些函数,同时第一个成员包含struct hw_device_t (继承struct hw_device_t ),这样可以通过返回给上层c库的struct hw_device_t 地址访问自定义的结构体led_device_t(struct hw_device_t 指针强转成led_device_t指针,结构体第一个变量的地址就是结构体的地址),进而调用led_device_t中的ioctl, read, wirte函数。1). 并不是所有的硬件设备都有标准的Linux Kernel的接口;

2025-04-26 18:37:06 706

原创 android底层开发学习笔记七(JNI机制下-2)

上一篇在x86架构的虚拟机上实现了一个java程序,调用底层驱动,接下来要实现一个java应用,可以调用底层驱动,在arm设备上运行。6)将libnative.so放到平板的/vendor/lib或/system/lib目录中。2)声明本地实现的方法:java_open, jaca_ioctl, java_close。5、修改c代码库对led设备文件进行操作,并重新编译,放到设备的/system/lib目录中。1、创建一个LedService类,实现控制Led灯的方法,以便LED-APP调用。

2025-04-20 22:30:20 465 1

原创 android底层开发学习笔记六(JNI机制下-1)

文件系统中可以看到/dev/myled0 已经生成,在c实现的代码中通过这设备文件控制驱动。b、字符设备注册:初始化注册字符设备,并绑定字符设备的操作方法fops。一、目标:实现三层调用--java调用上层c代码,上层c代码调用底层驱动。1、目标:java代码调用驱动的open, ioctl,close函数。以上实现了java对c代码的调用,和c代码对驱动的调用。二、三个层次:Java代码,c代码,底层driver代码。4、修改c代码,c中对以上设备节点进行操作。a、实现c代码对应的函数。

2025-04-19 21:18:22 347

原创 android底层开发学习笔记五(JNI机制上)

JNI 是 Java 语言的一个重要特性,它使得 Java 程序能够调用和被 C/C++ 程序调用,从而充分利用 Java 的跨平台特性和 C/C++ 的高性能特性。3)java如何调用c库中的Jni_onload函数,或者c库中的Jni_onload函数怎么知道是哪个类调用了Jni_onload函数。通过javah,利用.class文件生成JNI的.h文件(生成后的JNI头文件包含了java函数在JNI层的声明)1)实现原理:直接告诉native函数其在JNI中对应函数的指针(Jni_onload);

2025-04-17 14:26:04 1657

原创 android底层开发学习笔记四(Android启动流程)

rcS中调用mount -s 挂载内存文件系统(fstab中所有设备),内存文件系统有/dev或者/proc,它们是能显示内存信息的文件,这些文件在fstab中记录。init进程的路径:linux@ubuntu:~/fspad-733-6.0/androidM/system/core/init$ vi init.cpp。~/fspad-733/androidM/system/core/rootdir/init.zygote32.rc,用于启动zygote服务。

2025-04-07 00:42:50 421

原创 android底层开发学习笔记三(Android系统代码下载、编译和烧写)

工具链:linux@ubuntu:~/fspad-733-6.0/lichee/out/sun8iw5p1/android/common/buildroot/external-toolchain。sudo vi /etc/environment,将:/home/linux/external-toolchain/bin添加到path变量。将external-toolchain复制到家目录中:/home/linux/external-toolchain/bin。2、设备进入到fastboot模式,有两个方法。

2025-04-06 01:29:07 1595

原创 android底层开发学习笔记二(Android模块的编译)

LOCAL_MODULE_PATH:=$(LOCAL_PATH)/lib(编译静态库的路径不能指定,只能存放在默认编译输出的路径中)#LOCAL_LDFLAGS:=-L $(LOCAL_PATH)/lib -ladd(-l+add库名)LOCAL_MODULE_PATH:= $(LOCAL_PATH) 指定编译生成文件存放的路径。LOCAL_LDFLAGS:=$(LOCAL_PATH)/lib/libadd.so (写全路径)LOCAL_SRC_FILES := hello-jni.c 指定源文件。

2025-04-05 16:39:25 550

原创 android底层开发学习笔记一(Android系统软件架构)

2025-04-04 20:14:28 528

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除