Android 字符驱动#4#总结

字符驱动架构图

前面几节已经将完整的例子讲完了,下面给出整体的架构图

[字符设备驱动demo架构图]
1JsCe6o.png

Linux内核源代码目录结构

  • 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(设置设备访问权限)

你可能感兴趣的:(Android 字符驱动#4#总结)