美文网首页Android OS
Android 字符驱动#4#总结

Android 字符驱动#4#总结

作者: 古风子 | 来源:发表于2019-05-06 09:42 被阅读0次

    字符驱动架构图

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

    [字符设备驱动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#总结

        本文链接:https://www.haomeiwen.com/subject/auwloqtx.html