首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏linux驱动个人学习

    高通HAL层之Sensor HAL

    高通的HAL层其实分为两种,一种是直接从kernel这边报数据上来的,由sensor HAL层来监听,另一种是走ADSP的模式,HAL层是通过qmi的形式进行监听的; 走ADSP架构的可以看下面的博客: http://blog.csdn.net/u011006622/article/details/54598426 而msm8909架构下的便是以HAL层来监听数据的; 简介: Google为Sensor 提供了统一的HAL接口,不同的硬件厂商需要根据该接口来实现并完成具体的硬件抽象层,Android中Sensor的HAL接口定义在:hardware/libhardware/include/hardware /sensors.h: 为了了解HAL层的sensor,我们必须理解几个结构体:分别是sensor_type,sensor_t,sensors_module_t; 从下面可以看到此文件定义了sensor : 现在回到高通定制的sensor HAL层来:(代码位于hardware\qcom\sensors:) Sensor HAL: 首先sensor这个模块这个id的定义,主要实现了sensors_module_t

    3.7K120发布于 2018-03-07
  • 来自专栏全栈程序员必看

    STM32F0x HAL库学习笔记(3)使用HAL库延时函数(HAL_Delay())

    HAL_Delay()函数延时单位的调整 虽然毫秒级的延时可能是应用最广泛的,但这个函数没有被命名为HAL_DelayMs()也可能正是考虑到用户会修改延时数的单位。 接着我们来看HAL_Delay()函数的定义: __weak void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart = HAL_GetTick HAL_GetTick()获取当前uwTick的值。 HAL_Delay()函数的注意事项 特别注意,在中断中使用 HAL_Delay() 很容易造成程序异常,原因是 HAL_Delay() 使用 滴答定时器的中断,如果在高于滴答定时器中断的中断函数中使用这个函数 ,程序将会锁死在 HAL_delay() 中,原因是,滴答定时器无法别调用, HAL_delay() 就无法跳出函数内部的 while 循环。

    9.1K10编辑于 2022-08-28
  • 来自专栏Android Framework

    Android Vehicle HAL架构

    VehicleHAL启动流程 1.1. vehicleHal类图 1.1.1. types.hal/IVehicle.hal/IVehicleCallback.hal 2. 参考 文档内容:1.vehicle HAL架构介绍、详细的启动流程;2.部分车辆属性类型名称说明;3.上层carservice和hal层数据subscribe/set/get流程梳理;4.dbus和vehicle /IVehicle.hal/IVehicleCallback.hal 均在/hardware/interfaces/automotive/vehicle/2.0/目录下 types.hal定义的是一些数据结构 IVehicle.hal定义的是从CarService往HAL调用的接口 IVehicleCallback.hal则是HAL往CarService上报回调的接口 ---- 2. 车辆属性类型types.hal 3.1.

    8.4K33编辑于 2022-09-28
  • 来自专栏python3

    Android HAL 开发 (3)

     在上一篇文章中我们分析了jni的led service代码,该代码通过调用led的HAL层代码,实现了mokoid_init, mokoid_setOn, mokoid_setOff三个C/C++接口

    66231发布于 2020-01-06
  • 来自专栏fjal

    Android HAL 开发 (2)

    在上一篇文章中,我们看到了如何撰写HAL层的用户硬件驱动程序,我们每也知道,最终该代码会被编译成动态链接库提供给service(jni)使用,那么我们下面来看看service(jni)是如何与HAL通信的

    60240编辑于 2021-11-27
  • 来自专栏fjal

    Android HAL 开发 (1)

    最近开始看Android的HAL开发方面的东东,发现现在国内研究这个的并不多,来自台湾的Jollen可能是走在Android HAL研究的最前沿,这也和他以前专注做嵌入式linux(openmoko) linux kernel以及基于C/C++的app开发,现在转作Android,发现它的HAL比较有意思,也是可以研究的一个很好的方向。 的HAL,也有一些心得,下面总结一下: 首先,Android的HAL是为了一些硬件提供商提出的“保护proprietary”的驱动程序而产生的东东,简而言之,就是为了避开linux kernel的GPL 然后,Android的HAL的实现需要通过JNI(Java Native Interface),JNI简单来说就是java程序可以调用C/C++写的动态链接库,这样的话,HAL可以使用C/C++语言编写 const struct led_module_t HAL_MODULE_INFO_SYM = { 35. common: { 36.

    99630编辑于 2021-11-26
  • 来自专栏算法微时光

    Android上GNSS Hal服务解析

    GPS HAL实现 源码路径:hardware/libhardware/include/hardware/gps.h gps.h定义了各种常量和信息,包括定位模式、状态等,并同时给JNI层调用的接口。 GNSS HAL实现 源码路径:/hardware/interfaces/gnss GnssConstellationType /** * 卫星信息 */ @export(name="", value_prefix 参考 android HAL框架

    3.3K20发布于 2020-06-03
  • 来自专栏韦东山嵌入式

    C 语言使用 HAL 库开发

    C 语言使用 HAL 库开发 ST公司先后推出了两套主要库:标准外设库(Standard Peripherals Library)和HAL库(Hardware Abstraction Layer)。 HAL库是ST公司这几年极力推荐的官方库,目前支持STM32全系产品,可以说HAL库就是用来取代之前的标准外设库的。 此外还有LL库(Low Layer),相比其它固件库更接近硬件层,一般和HAL库结合使用,可以看作是HAL库的补充。 LED 灯 while(1) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); HAL_Delay(1000); HAL_GPIO_WritePin 后续的实验会以HAL库为主,但读者也应理解HAL库的本质也是操作寄存器,因此理解如何操作寄存器,对以后学习、调试,都会有帮助。

    2.1K20编辑于 2022-05-05
  • 来自专栏程序员互动联盟

    【android开发】Android HAL模块实现

    不同的平台厂商可在遵循HAL调用接口的前提下实现自己的HAL,不会影响到上层的调用者,这样降低了模块间的耦合度,可以让平台开发者只关心HAL本身的实现即可。 HAL的两种实现方式 下图分别为旧的HAL实现与新的HAL实现框图: ? ? 对于目前的HAL,可以认为Android定义了HAL层结构框架,通过几个接口访问硬件从而统一了调用方式。 由上可大致看出这两种实现方式的优劣: HAL_legacy方式的HAL是一个模块,采用共享库形式,在编译时会调用到。 而新式的HAL采用HAL module和HAL stub结合形式,HAL stub不是一个share library,编译时上层只拥有访问HAL stub的函数指针,并不需要HAL stub。

    3.1K80发布于 2018-03-13
  • 来自专栏linux驱动个人学习

    海思屏幕HAL代码解析

    HI_HAL_SCREEN_Register(HI_HAL_SCREEN_IDX_0, &stHALSCREENObj); //HI_HAL_SCREEN_IDX_0是指枚举,是指第一个屏幕, 初始化重复注册一次 PDT_APP_CHECK_RET(s32Ret, "HI_HAL_SCREEN_Register"); s32Ret = HI_HAL_SCREEN_Init(HI_HAL_SCREEN_IDX HI_HAL_SCREEN_Init 在HI_HAL_SCREEN_Register中: HI_S32 HI_HAL_SCREEN_Register(HI_HAL_SCREEN_IDX_E enScreenIndex 函数 HI_S32 HI_HAL_SCREEN_Init(HI_HAL_SCREEN_IDX_E enScreenIndex) { HAL_SCREEN_CHECK_IDX(enScreenIndex = HAL_SCREEN_ST7789_SetLuma, .pfnGetLuma = HAL_SCREEN_ST7789_GetLuma, .pfnSetSaturature = HAL_SCREEN_ST7789

    2.4K20发布于 2019-07-08
  • 来自专栏Android Camera开发

    Camera HAL3 内存优化

    ,提升系统流畅度; 缺点:高光感下的图像噪点略高,影响图片质量,有些可以通过tuning 其他nr参数弥补回来; /vendor/mediatek/proprietary/custom/mtXXXX/hal capture_frame_number; //mfnr张数,最低3张,默认4张; 对应的参数tunning的同事会较清楚,或者在/vendor/mediatek/proprietary/custom/mtxxxx/hal /imgsensor/ver1/sensorname 下全搜mfll_iso_th即可. 5.关闭ZSL 优点:拍照的 buffer不再受preview处理效率的影响,同时节省buffer; 缺点:与Hal1 上关闭zsd不同的是,关闭zsl仅拍照瞬间画面略有停顿.而Hal1上关闭zsd是整个拍照未完成期间均停顿. Control.capture.zsl.mode configure和request时,均需设定为off,否则会出现re-configuresesion的问题,影响启动时间; 6.拍照相关限制 原理:限制同时在 hal

    35310编辑于 2025-05-13
  • 来自专栏影像技术栈

    Android FWK-HAL相机框架简介

    HAL组件 HAL3主要接口如下: ICameraService 是相机服务的接口 ICameraDeviceUser 是已打开的特定相机设备的接口 ICameraDeviceSession活跃的相机设备会话接口 相机 HAL 的 HIDL 接口在 hardware/interfaces/camera 中定义。 该实现封装了仍在使用旧版 API 的旧 HAL。从 Android 8.0 开始,相机 HAL 实现必须使用 HIDL API;不支持使用旧版接口。 旧版Camera HAL 组件 此部分介绍了旧版 HAL 组件的架构以及如何实现 HAL。搭载 Android 8.0 或更高版本的设备上的相机 HAL 实现必须改用 HIDL API(如上所述)。 如需查看 HAL 实现的示例,请参阅 hardware/ti/omap4xxx/camera 中的 Galaxy Nexus HAL 实现。 下列图表和列表说明了旧版相机 HAL 组件。

    2K11编辑于 2022-07-14
  • 来自专栏linux驱动个人学习

    高通 sensor 从native到HAL

    ,定义在hardware.h头文件中 /** * Name of the hal_module_info */ #define HAL_MODULE_INFO_SYM HMI / ** * Name of the hal_module_info as a string */ #define HAL_MODULE_INFO_SYM_AS_STR "HMI" 这里为什么要去取名字为 HMI的地址,我猜想它应该是HAL模块的入口了。 QualComm Sensor HAL 因此我们接着看sensor_hal层,高通的Sensor实现了自己的HAL,其源码在hardware\qcom\sensors路径下,通过Android.mk我们也可以确定他确实是我们前面 到这里native到hal层的逻辑其实已经基本上分析完了。

    3.3K20发布于 2018-08-23
  • 来自专栏Android Framework

    Android 系统架构及HAL层概述

    硬件抽象层(HAL层) 1.2.1. HAL类型 1.3. HAL接口定义语言 (AIDL/HIDL) 1.3.1. HIDL 1.4. AIDL 1.4.1. AIDL接口示例 1.4.2. 搭载Android8.0或更高版本的设备必须支持使用HIDL语言编写的HAL,下面列出了一些例外情况。这些HAL可以是绑定式HAL也可以是直通式HAL。 Android11也支持使用AIDL编写的HAL。所有AIDLHAL均为绑定式。 绑定式HAL:以HAL接口定义语言(HIDL)或Android接口定义语言(AIDL)表示的HAL。 这些HAL取代了早期Android版本中使用的传统HAL和旧版HAL。在绑定式HAL中,Android框架和HAL之间通过Binder进程间通信(IPC)调用进行通信。 所有在推出时即搭载了Android8.0或后续版本的设备都必须只支持绑定式HAL。 直通式HAL:以HIDL封装的传统HAL或旧版HAL

    13K76编辑于 2022-09-28
  • 来自专栏全栈程序员必看

    【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)

    函数库讲解 在正常使用中,除了STM32CubeMX配置之外,我们有时候还需要自己配置一些东西,学习并理解HAL库,也是我们必须要学习的一个地方 首先打开stm32f4xx_hal_gpio.h 发现一共定义有 (GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16 _t GPIO_Pin); void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); void HAL_GPIO_EXTI_Callback(uint16_t ,即各个寄存器复位时的值 实例:HAL_GPIO_Init(GPIOC, GPIO_PIN_4); GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, ,清除中断标志位 实例:HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

    3K11编辑于 2022-06-30
  • 来自专栏有价值炮灰

    Android HAL 与 HIDL 开发笔记

    HAL HAL 是 Hardware Abstraction Layer 的缩写,即硬件抽象层。 现在的时间已经来到了 Android 11,其实早在 Android 8 之后就已经弃用了曾经的 HAL 方式,不过由于碎片化原因,现在还有许多 IoT 设备等还是使用传统的 HAL 模式。 另外出于对历史进展的研究,了解传统 HAL 也是有必要的。 创建 HAL 接口 首先是创建 HAL 硬件抽象描述文件。 其中 HAL 在 Android 8 中弃用,取而代之的是基于 IPC 的 HIDL 方案,后者同时支持 passthrough 模式兼容传统的 HAL,这也是很多厂商移植前的临时过渡方案。

    2.3K21编辑于 2023-02-12
  • 来自专栏想到什么就分享

    【STM32】CubeMX+HAL 点亮LED

    只需添加一行代码即可: HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET); 下面贴出主要的生成代码: 2.1 gpio.c /** **** (); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); (); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /** Initializes the CPU, AHB and /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL 总结 CubeMX+HAL 不需要理解底层寄存器的定义,使用起来非常方便 要理解生成的代码之间的逻辑联系,熟悉常用的 hal 函数 建议学完标准库后上手 CubeMX

    1.3K22发布于 2020-11-05
  • 来自专栏TECH flower

    HAL-超文本应用语言

    精益超媒体类型 总结 HAL 是一种简单的格式,它提供了一种一致且简便的方法在 API 的资源之间进行超链接。 采用 HAL 将使您的 API 易于探索,并且其文档很容易从 API 本身中发现。 下面的图像大致说明了HAL表示的结构: ? HAL 在 API 中的使用方式 HAL 旨在构建 API,其中客户端通过以下链接围绕资源进行导航。 链接通过链接关系标识。 HAL鼓励将链接关系(rel)用于: 识别表示中的链接和嵌入资源 推断目标资源的预期结构和意义 向目标资源发出哪些请求和表示信号 如何为 HAL 服务 HAL 具有 JSON 和 XML 变体的介质类型 application/hal+json和application/hal+xml 在 HTTP 上提供 HAL 时,响应应包含相关的媒体类型名称。 Content-Type HAL 文档的结构 最低有效文件 HAL 文档必须至少包含空资源。

    1.3K40发布于 2020-08-06
  • 来自专栏想到什么就分享

    【STM32】CubeMX+HAL 输出PWM

    配置STM32CubeMX 前面的一些基础步骤可参见:【STM32】CubeMX+HAL 点亮LED 的【1.1】~【1.6】步骤。 余下步骤可参见:【STM32】CubeMX+HAL 点亮LED 的【1.10】~【1.13】步骤。 2. 添加代码 ? ? (); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin : PA6 */ = HAL_OK) { Error_Handler(); } if (HAL_TIM_PWM_Init(&htim2) ! = HAL_OK) { Error_Handler(); } HAL_TIM_MspPostInit(&htim2); } void HAL_TIM_Base_MspInit(TIM_HandleTypeDef

    3.2K41发布于 2020-11-05
  • 来自专栏物联网知识

    STM32之HAL、LL和标准库

    HALHAL库(Hardware Abstraction Layer)是STMicroelectronics为了提供更高级别的抽象和简化开发而引入的库。 HAL库提供了一种更易用和可移植的编程模型,并减少了编写底层代码的工作量。它还支持多种开发板和外设,提供了一致的接口,简化了代码移植和复用。HAL库适用于大多数应用程序,尤其是中等复杂性的项目。 这几种库的比较官方介绍如下图: HAL库虽然移植性最好,但问题也最多。比如在串口收发的时候,由于HAL库中的中断接收和串口发送使用的互斥锁是一个,所以会造成好好的全双工变成了半双工。 诸如此类的问题还有很多,但HAL库确实开发效率最高。具体使用效果因人而异吧。 总结 ST提供的标准库、HAL库和LL库各有其优势和特点,如果是移植很久前的项目,大概率要使用标准库。 个人建议,现在最好是使用HAL库+LL库进行开发,因为这是官方主推的库,并且CubeMX确实是个很好用的工具,而里面只有HAL库和LL库。HAL库开发迅速,LL库开发稳定,大家可以结合着用。

    9.8K30编辑于 2023-09-02
领券