• Android硬件访问服务中的HAL-查看打印的信息


    JNI  向上提供本地函数,向下加载HAL文件并调用HAL的函数

    HAL 负责访问驱动程序执行硬件操作。

    externalchromium_org hird_partyhwcplussrchardware.c
    hw_get_module("led")

      1. 模块名==>文件名
      hw_get_module_by_class("led", NULL)
       name = "led"
        property_get     xxx是某个属性
        hw_module_exists 判断是否存在led.xxx.so
        
       

      2. 加载
        load
          dlopen(filename)
          dlsym("HMI") 从SO文件中获得名为HMI的hw_module_t结构体
          strcmp(id, hmi->id) 判断名字是否一致(hmi->id, "led")
          

    JNI 怎么使用 HAL
    a. hw_get_module 获得一个hw_module_t结构体
    b. 调用 module->methods->open(module, device_name, &device)
       获得一个hw_device_t结构体
       并且把hw_device_t结构体转换为设备自定义的结构体
      

    HAL 怎么写
    a. 实现一个名为HMI的hw_module_t结构体
    b. 实现一个open函数, 它会根据name返回一个设备自定义的结构体
       这个设备自定义的结构体的第1个成员是 hw_device_t结构体
       还可以定义设备相关的成员
       

    hw_module_exists(char *path, size_t path_len, const char *name,
                                const char *subname)

    led.tiny4412.so
    led.exynos4.so
    led.default.so
                              
    它用来判断"name"."subname".so文件是否存在
    查找的目录:
    a. HAL_LIBRARY_PATH 环境变量
    b. /vendor/lib/hw
    c. /system/lib/hw


    property_get : 属性系统
    属性<键,值> <name, value>

    打印信息简介:
    a. 有三类打印信息: app, system, radio
       程序里使用 ALOGx, SLOGx, RLOGx来打印
    b. x表示6种打印级别,有:
      V    Verbose
      D    Debug
      I    Info
      W    Warn
      E    Error
      F    Fatal

    比如:
    #define LOG_TAG "LedHal"
    ALOGI("led_open : %d", fd);

    c. 打印出来的格式为:
          I/LedHal  ( 1987): led_open : 65
     (级别) LOG_TAG  进程号   打印信息 

    d. 使用 logcat 命令查看 
       logcat LedHal:I *:S

  • 相关阅读:
    oracle连接命令
    oracle Wrap加密
    oracle copy
    oracle loader
    oracle一些常见的问题
    python-cn(华蟒用户组,CPyUG 邮件列表)
    代理服务器验证工具
    多线程中的信号/槽
    【多线程】python界面阻塞,白屏,not responding解决的简单例子
    vi命令
  • 原文地址:https://www.cnblogs.com/ynxf/p/6902549.html
Copyright © 2020-2023  润新知