zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    python运行提示缺少模块 No module named 'XX'
    shell脚本删除redis集群中的key
    pytest运行后生成测试报告
    python初级(302) 7 列表(排序练习)
    解决一个右下角图标闪烁,点击图标就会弹出游戏网页的流氓广告
    python初级(302) 7 列表(二)冒泡排序
    python初级(302) 7 列表
    python初级(302) 6 对象(五)
    生命游戏(python实现,pygame显示图形)
    python初级(302) 6 对象(四)
  • 原文地址:https://www.cnblogs.com/ynxf/p/6902549.html
Copyright © 2011-2022 走看看