Android 字符驱动#4#总结
字符驱动架构图
前面几节已经将完整的例子讲完了,下面给出整体的架构图
[字符设备驱动demo架构图] 1JsCe6o.pngLinux内核源代码目录结构
-
arch:该目录包含与CPU硬件系统结构相关的代码。每个CPU系列都独自占有一个目录,如ARM、MIPS、AVR32、x86、ia64等
-
block:该目录包含块设备驱动程序中进程I/O调度的功能代码
-
crypto:该目录包含加密/解密算法,以及压缩和校验等功能代码
-
documentation:该部分是一些文档,在该文档中对内核的各个部分进行了一般性的阐述
-
drivers:该目录包含各设备程序的功能代码。每种类型的设备驱动常占有一个独立的子目录,如char、block、net、input、power等
-
fs:该目录包含Linux内核所支持的各种文件系统,如ext、jffs2、yaffs2、fat、ntfs等
-
include:该目录包含一些头文件,其中与Linux系统相关的头文件就放置在该目录下的linux子目录中
-
init:该目录包含Linux内核的初始化功能代码
-
ipc:该目录包含进程间通信的功能代码
-
kernel:该目录包含进程调度、定时器等功能代码
-
lib:该目录包含库或用于生产库的代码
-
mm:该目录包含内存管理功能代码
-
net:该目录包含网络相关的功能代码,其实现了各种常见的网路协议
-
scripts:该目录包含了一些脚本文件,用于配置内核
-
security:该目录包含Linux安全管理方面的代码,如账号等
-
sound:该目录包含ALSA、OSS音频子系统的核心代码,以及一些常用的音频驱动
-
usr:该目录包含实现cpio工具的功能代码
显示kernel日志:
cat /dev/kmsg | grep HelloHal
cat /proc/kmsg | grep HelloHal
报错问题处理
问题1:
问题描述
../android/xxx/kernel-4.9 is not clean, please run 'make mrproper'
处理方法
https://blog.csdn.net/qidi_huang/article/details/53031488
问题2
问题描述
frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:190: error: cannot access RemoteControlClient
return mController != null ? mController.getRemoteControlClient() : null;
^
class file for android.media.RemoteControlClient not found
frameworks/support/v4/java/android/support/v4/media/TransportMediator.java:240: error: cannot access OnPlaybackPositionUpdateListener
mController.refreshState(mCallbacks.onIsPlaying(),
^
class file for android.media.RemoteControlClient$OnPlaybackPositionUpdateListener not found
处理方法:
You are using JDK8, for Android 6 you need JDK7.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
问题3
HelloServer不能访问/dev/hello设备,设置方法见 开发硬件访问服务-》修改SePolicy的权限
HelloHal fail open /dev/hello -- Permission denied
参考文档:
https://www.cnblogs.com/zhaobinyouth/p/6227644.html
https://www.cnblogs.com/liam999/p/5933827.html(系统service添加方法,包括权限声明)
https://blog.csdn.net/zrf1335348191/article/details/54907228
https://blog.csdn.net/wh_19910525/article/details/45170755(设置设备访问权限)