Xilinx社区
首页 > 技术专栏 > 骁龙820A车载系统(2)--820A上Vehicle HAL主要接口
骁龙820A车载系统(2)--820A上Vehicle HAL主要接口
来源:技术专家 时间:2017-08-07

  据目前公开的统计,全球有超过2000万辆汽车搭载了骁龙调制解调器。在全球移动处理器的市场发展趋势趋于饱和状态下,Qualcomm与Google公司合作,开发了基于骁龙820A新一代的车载信息娱乐系统。除了单纯将我们的汽车与互联网连接以外,骁龙820A处理器旨在通过软件更新支持信息娱乐系统升级,帮助汽车升级最新特性和差异化体验。

  令人可喜的是,国内众多厂商也紧跟时代潮流,跟进高度集成的新技术,为汽车的更新换代添砖加瓦。2017年6月28日,高通和吉利汽车集团在MWC上海2017宣布,吉利汽车集团选择高通骁龙汽车平台集成在其汽车的下一代信息娱乐系统中。

  在上一篇中,小编初步介绍了车载的软件框架基础。这篇是关于车载系统的Vehicle HAL方面的有关技术细节。

  Vehicle HAL接口

  之前我们也提到过,HAL接口定义可以实现的属性和包含的元数据,接口给予可实现的属性例如读,写,和提交等,这些属性是特定功能的抽象。下面这张图可以很形象的展现HAL接口实现的层次关系。

  HAL支持的属性list_properties

  vehicle_prop_config_t const *(*list_properties)

  (struct vehicle_hw_device* device, int* num_properties);

  这个接口列出了车载的HAL层的支持属性的配置,只有支持的属性,车载网络系统才会使用它。

  具体实现如下

  获取属性值 get

  int (*get)

  (struct vehicle_hw_device* device, vehicle_prop_value_t *data);

  这个接口是读取属性的当前值。对于分区属性,每个区域可能具有不同的值。

  具体实现如下:

  设置属性值set

  int (*set)

  (struct vehicle_hw_device* device, const vehicle_prop_value_t *data);

  设置一个属性值。写入的结果是根据属性定义的。具体实现如下:

  释放内存release_memory_from_get

  void (*release_memory_from_get)

  (struct vehicle_hw_device* device, vehicle_prop_value_t *data);

  释放从get调用分配的内存,具体实现如下:

  监控属性值subscribe

  int (*subscribe)

  (struct vehicle_hw_device* device, int32_t prop, float sample_rate, int32_t zones);

  监控属性值的改变,对于zoned属性,所有的回调都是基于请求的,如果zoned=0,则可以请求所有的支持特性。

  程序会通过线程来监控具体模块的车载状态,例如驾驶状态、排档位置、制动状态等等。

  #define VEHICLE_PROPERTY_GEAR_SELECTION (0x00000400)

  #define VEHICLE_PROPERTY_CURRENT_GEAR (0x00000401)

  #define VEHICLE_PROPERTY_PARKING_BRAKE_ON (0x00000402)

  #define VEHICLE_PROPERTY_DRIVING_STATUS (0x00000404)

  #define VEHICLE_PROPERTY_FUEL_LEVEL_LOW (0x00000405)

  ... ...

  #define VEHICLE_PROPERTY_HVAC_FAN_SPEED (0x00000500)

  #define VEHICLE_PROPERTY_HVAC_FAN_DIRECTION (0x00000501)

  Android的Vehicle HAL层,简单来说,就是对Linux内核驱动程序的封装,向上提供稳定的接口,屏蔽低层的实现细节。也就是说820A的车载系统的HAL层是需要Qualcomm实现的,这样可以保证软件的移植性。对于不同配置的车辆来说,具体功能是不同的。

  Qualcomm汽车技术讨论组 QQ群号:566131670

more汽车电子市场动态
more技术专栏
more专家答疑
问:配置高通pmd9607的mpp管脚, 设置为模拟输入一直量不到电压,请教。
答:需要注意,MPP管脚并不是所有MPP管脚都可以配置的,请参考spec说明,你需要配置的pin有没有限制。通常模拟输入的话,还要配置ANA_IN_CTL等寄存器,需要外接模拟量,然后读取该pin的值的寄存器中HKADC值。
问:专家请指导: sensor厂家给的sensor相关资料(chromatix + lib)是支持前置摄像头的,“支持”主要是我这边验证过前置已经点亮。 后置摄像也用同sensor, 但用这套相关资料就点不亮了。 kernel层确认已经PROBE, 同时在/dev下有media0 media1,请协助该如何完成后置的点亮. p.s: 1. 该板后置如果使用其他sensor,可以点亮前后置摄像头; 2. 将后置摄像头拆卸, 可点亮前置, 不拆卸后置,同样可以点亮前置; 3. 如果前置后置一样, 前后置都点不亮, 但kernel层确认都probe, dev下有camera0,camera1,camera2; 4. 拆卸前置,仅后置, 依然无法点亮, kernel已经probe,dev下有camera0,camera1 针对前后置同sensor, 在sensor_init.c增加2sensor, 分别命名为: sensor, sensor_rear,同时在sensor_Libs目录下增加sensor,sensor_rear目录,主要是针对lib部分, 同时对lib中camera_id和position做对应修改(前:CAMERA_1,1,后: CAMERA_0,0) 写的太多, 一句话说明下问题: 前后置同sensor如何同时点亮前后置sensor, 是否需要修改lib中的参数,如何修改?还是其他问题?
答:从现象描述看,可以从以下几点排查。 1,sensor的配置,通常后置sensor 4lanes,而前置sensor 2lanes。换不同型号的sensor可以点亮,说明这些配置可能没有修改 导致一些问题。 2,重点看下,“拆卸前置,仅后置, 依然无法点亮,dev下有camera0,camera1,”,对比下前后置不同型号 枚举dev也是这样,看看HAL层dumpimage检查图像是否正常。 3,camera id枚举冲突,无法区分两颗相同的sensor,tuning参数调用是否正确。
问:请教专家,UE 链路层怎么样才能主动和NODE B断开。 设备和基站没有OTA log,也不太清楚是什么原因导致的连接断开。
答:可以通过AT命令CREG可以离线和在线网络。不知道是否是您需要的情况。 http://blog.chinaunix.net/uid-149881-id-2780145.html
问:有没有懂高通平台root 和解网络锁的高手?
答:eng和userdebug版本上通过adb root。你是否需要如下的方法么, https://zhidao.baidu.com/question/557640730.html
Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052