高通挂载bp侧驱动bringup流程_高通平台sensor bringup-程序员宅基地

技术标签: linux  

BP侧修改

(1)添加供应商给的驱动

添加到vendor\qcom\non-hlos\ADSP.VT.5.4.3.c1\adsp_proc\ssc_drivers

(2)添加编译

\vendor\qcom\non-hlos\ADSP.VT.5.4.3.c1\adsp_proc\ssc\chipset\divar\por.py

 if 'SSC_TARGET_X86' not in env['CPPDEFINES']:
        #POR sensors list
        include_sensor_vendor_libs.extend(['lsm6dso',         #ACCEL/GYRO/MD/TEMP
                                           'sns_ak0991x',     #MAGNETOMETER
                                           'sns_tmd2725',     #ALS/PROX 
                                           'sns_bmp285',      #PRESSURE
                                           'sns_bu52053nvx', #HALL
                                           'sns_sc7a20',
                                           'sns_ltr569'])    

/*此处id为供应商给的驱动文件中LTR-569ALS-WA\build\sns_ltr569.scons,.scons的前缀*/      

 (3)修改通讯协议

-3.1vendor\qcom\

non-hlos\ADSP.VT.5.4.3.c1\adsp_proc\core\settings\buses\qup_fw\config\divar\fw_devcfg.c

根据DATA SHEET选择对应SE设备修改通信协议

-3.2vendor\qcom\non-hlos\

ADSP.VT.5.4.3.c1\adsp_proc\core\settings\buses\i2c\config\divar\i2c_devcfg.c

 (4)查看是否编译成功:

1.编译成功会adsp_proc下生成obj文件夹,里面有所有的镜像

2.或在驱动文件的build下生成/sensor.img/所有.o文件

可以直接在编译目录下$:find -name "xxxx.o"以快捷搜索有无.o生成

AP侧修改

添加.json文件在

vendor\qcom\proprietary\sensors-see\registry\config\lahaina(项目名)

{
  "config":
  { 
    "hw_platform": ["QRD"], //  cat /sys/devices/soc0/hw_platform获取
    "soc_id": ["497"] //cat /sys/devices/soc0/soc_id 获取

  },
  "bmi160_0":{
    "owner": "sns_bmi160",
    ".accel":{
      "owner": "sns_bmi160",
      ".config":{
        "owner": "sns_bmi160",
        "is_dri":{ "type": "int", "ver": "0",
          "data": "1"
        },//配置中断模式或者轮训模式(“0”轮训模式,“1”中断模式)
        "hw_id":{ "type": "int", "ver": "0",
          "data": "0"
        },//用来区分同一硬件多个传感器
        "res_idx":{ "type": "int", "ver": "0",
          "data": "2"
        },
        "sync_stream":{ "type": "int", "ver": "0",
          "data": "0"
        }
      }
    },
    ".gyro":{
      "owner": "sns_bmi160",
      ".config":{
        "owner": "sns_bmi160",
        "is_dri":{ "type": "int", "ver": "0",
          "data": "1"
        },
        "hw_id":{ "type": "int", "ver": "0",
          "data": "0"
        },
        "res_idx":{ "type": "int", "ver": "0",
          "data": "4"
        },
        "sync_stream":{ "type": "int", "ver": "0",
          "data": "0"
        }
      }
    },
    ".md":{
      "owner": "sns_bmi160",
      ".config":{
        "owner": "sns_bmi160",
        "is_dri":{ "type": "int", "ver": "0",
          "data": "1"
        },
        "hw_id":{ "type": "int", "ver": "0",
          "data": "0"
        },
        "res_idx":{ "type": "int", "ver": "0",
          "data": "0"
        },
        "sync_stream":{ "type": "int", "ver": "0",
          "data": "0"
        }
      }
    },
    ".temp":{
      "owner": "sns_bmi160",
      ".config":{
        "owner": "sns_bmi160",
        "is_dri":{ "type": "int", "ver": "0",
          "data": "0"
        },
        "hw_id":{ "type": "int", "ver": "0",
          "data": "0"
        },
        "res_idx":{ "type": "int", "ver": "0",
          "data": "2"
        },
        "sync_stream":{ "type": "int", "ver": "0",
          "data": "0"
        }
      }
    }
  },
  "bmi160_0_platform":{
    "owner": "sns_bmi160",
    ".config":{
      "owner": "sns_bmi160",
      "bus_type":{ "type": "int", "ver": "0",
        "data": "0"
      },//I2C 写 0、 SPI 写 1、 I3C 写 3
      "bus_instance":{ "type": "int", "ver": "0",
        "data": "2"
      },//bus_instance: = SE 数 + 1(平台datasheet)

      "slave_config":{ "type": "int", "ver": "0",
        "data": "104"
      },//I2C 地址,参考规格书
      "min_bus_speed_khz":{ "type": "int", "ver": "0",
        "data": "400"
      },//最小 COM 总线时钟速度,默认配置 400khz
      "max_bus_speed_khz":{ "type": "int", "ver": "0",
        "data": "400"
      },//最大 COM 总线时钟速度,默认配置 400khz
      "reg_addr_type":{ "type": "int", "ver": "0",
        "data": "0"
      },//寄存器地址类型( 寄存器地址位数,“ 0” 8 bit “ 1” 16 bit “ 2” 32bit)
      "dri_irq_num":{ "type": "int", "ver": "0",
        "data": "102"
      },//中断引脚

      "irq_pull_type":{ "type": "int", "ver": "0",
        "data": "2"
      },//配置中断引脚内部电平类型
      "irq_is_chip_pin":{ "type": "int", "ver": "0",
        "data": "1"
      },//配置 MSM_GPIO 由于中断模式
      "irq_drive_strength":{ "type": "int", "ver": "0",
        "data": "0"
      },//配置 MSM_GPIO 由于中断模式
      "irq_trigger_type":{ "type": "int", "ver": "0",
        "data": "0"
      },//中断触发类型,这里我们配置为低电平触发
      "num_rail":{ "type": "int", "ver": "0",
        "data": "2"
      },//中断触发类型,这里我们配置为低电平触发
      "rail_on_state":{ "type": "int", "ver": "0",
        "data": "2"
      },//低功耗供电模式 LPM 还是常规供电模式 NPM
      "vddio_rail":{ "type": "str", "ver": "0",
        "data": "/pmic/client/sensor_vddio"
      }, 
      "vdd_rail":{ "type": "str", "ver": "0",
        "data": "/pmic/client/sensor_vdd"
      }, 
      "rigid_body_type":{ "type": "int", "ver": "0",
      "data": "0"
      }
    }

将sensor器件添加到高通island(低功耗模式)

【不同平台特性不同,此操作需和平台确认清楚能不能去掉!并非所有平台都能去掉这三行!】

vendor\qcom\non-hlos\ADSP.VT.5.4.3.c1\adsp_proc\ssc\chipset\divar\por.py

(1)先在在此文件中注释掉以下三行,以释放island空间来添加新器件进island空间:

    #env.AddUsesFlags(['SNS_DYNLIB_LOCAL_HEAPMGR'])
    #env.AddUsesFlags(['SNS_DYNLIB_LSM6DSO'])
    #env.Append(CPPDEFINES = ['SNS_DYNLIB_NUM_OF_ISLAND_PAGES = 11'])

(2) 在此处添加驱动名

     # 1. Island drivers
    env.AddUsesFlags(['SNS_ISLAND_INCLUDE_HX32062SE'])
    #env.AddUsesFlags(['SNS_ISLAND_INCLUDE_AK0991X'])
    #env.AddUsesFlags(['SNS_ISLAND_INCLUDE_TMD2725'])
    #env.AddUsesFlags(['SNS_ISLAND_INCLUDE_BMP285'])

island驱动名获取方法:打开驱动文件中的build文件(后缀.scons),找到以下句段,

if 'SNS_ISLAND_INCLUDE_HX32062SE' in env:
  hx32062se_island_enable = True

其中引号中的id就是添加到por.py的id。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qqqq_ffff/article/details/129988468

智能推荐

IDEA左侧project模式下,不显示项目工程目录,只有几个配置文件_idea左侧为什么没有显示项目文件框架-程序员宅基地

文章浏览阅读6k次。I、问题原因一般为配置文件*.iml 出错了II、解决办法 方法1:找到 出错位置,修复 方法2:清除配置,重新导入 1)关闭IDEA, 2)删除项目文件夹下的.idea文件夹 3)重新用IDEA工具打开项目I、问题原因一般为配置文件*.iml 出错了..._idea左侧为什么没有显示项目文件框架

嵌入式系统网络socket套接字经常使用的网络通信协议?_socket 嵌入式c-程序员宅基地

文章浏览阅读471次。它提供可靠的、面向连接的通信,并确保数据按照正确的顺序和不丢失地传输。TCP/IP协议适用于对数据传输的可靠性和顺序有要求的场景,例如网页浏览、文件传输等。HTTP协议:HTTP(Hypertext Transfer Protocol)是一种基于TCP/IP的应用层协议,用于传输超文本数据,即网页数据。它适用于资源有限的嵌入式设备和传感器之间的通信,并具有低功耗和带宽效率高的特点。TCP/IP和UDP协议是最常见和通用的选择,HTTP协议适用于Web数据交互,而MQTT协议则适合物联网领域的通信需求。_socket 嵌入式c

setTimeout出错的解决方法_settimeout expects a function as first argument bu-程序员宅基地

文章浏览阅读6.6k次,点赞3次,收藏3次。计算器setTimeout(that.fun(),3000),运行时显示出错。setTimeout expects a function as first argument but got undefined.;at pages/limited-sale/limited-sale onReady function;at setTimeout callback functionTypeErr..._settimeout expects a function as first argument but got undefined.

python 如何穷举多个列表的组合?_python 穷举法变量组合-程序员宅基地

文章浏览阅读5.0k次,点赞4次,收藏7次。在机器学习的模型验证阶段,需要超参数进行调整,这时候就需要把多个参数的候选值列举出来,遍历参数的所有组合._python 穷举法变量组合

Python 的 complex() 函数:处理复数数据类型_python complex数据类型-程序员宅基地

文章浏览阅读1.5k次,点赞22次,收藏23次。complex()函数是 Python 中的一个内置函数,用于创建复数对象。复数由实部和虚部组成,形式上表示为a + bi,其中a是实部,b是虚部,i是虚数单位,满足i^2 = -1。complex()real是一个数字或表达式,表示复数的实部。如果省略,实部默认为 0。imag是一个数字或表达式,表示复数的虚部。如果省略,虚部默认为 0。complex()函数是 Python 中一个非常有用的工具,用于创建复数对象。复数在数学、工程、科学和计算机等领域都有着广泛的应用,通过合理地应用complex()_python complex数据类型

Linux和Windows系统使用脚本操作jar包_windows jar包启动脚本详解-程序员宅基地

文章浏览阅读1.6k次。Linux和Windows系统使用脚本启动ar包、停止jar包运行、重启jar包_windows jar包启动脚本详解

随便推点

OpenCV Learning: IplImage三个单通道与单个通道的转换_iplimage 通道转换-程序员宅基地

文章浏览阅读1.1k次。#include "stdafx.h" #include #include using namespace std; using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { //从文件中读入图像 clock_t start,finish; start=clock_iplimage 通道转换

最优化方法:拉格朗日乘数法-程序员宅基地

文章浏览阅读344次。http://blog.csdn.net/pipisorry/article/details/52135854 解决约束优化问题——拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程。 拉格朗日乘数法的基本思..._优化问题的数学模型 拉格朗日 标准型

三维高斯积分点坐标及权系数表_高斯积分法 权系数表-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏6次。Point x y z Weight 1 0 0 0 8 Point x y z Weight 1 -0.5773502692 -0.5773502692 0.5773502692 1.0000000000 2 0.5773502692 -0.5773502692 0.5773502692 1.0000000000 3 0.5773502692 0.5773_高斯积分法 权系数表

Python实战1-9例:变量、运算、字符串等综合训练_python字符串和变量练习题-程序员宅基地

文章浏览阅读822次。笔者:风起怨江南出处:https://blog.csdn.net/JackMengJin笔者原创,文章欢迎转载,转载请注明出处。如果喜欢请点赞+关注,感谢支持!《Python实战系列》所有实例训练题都是从Python各个知识点精挑细选出来的,大部分实例会在注释里给出解题思路,希望能对大家有所帮助。Python实战系列每周日更新,数量不等,但质量必须杠杠的!不多废话,直接上干货!..._python字符串和变量练习题

Unity Shader - shader lab 的 SRP Batcher compatible 兼容性(未使用 RenderDoc 验证 API)_srp batcher 兼容性-程序员宅基地

文章浏览阅读1.5k次。文章目录Inspector 中的 SRP Batcher : compatible or notSRP Batcher 的合批原理怎么 Quickly UpdateShader 变体数量尽可能少总结ReferencesInspector 中的 SRP Batcher : compatible or notBuilt-in RP 下,shader 的 Inspector 视图中是不会显示此项内容的必须是在基于 SRP 的才会显示如果将当前项目设置为 SRP 呢:Editor/Project Se_srp batcher 兼容性

ValueError: Negative dimension size caused by subtracting 3 from 1 for 'conv2d_6/convolution' (op: '-程序员宅基地

文章浏览阅读1.2w次,点赞8次,收藏16次。原因一:keras的后端是theano,默认channels_first,即他的图像形状是input_shape=(img_channels,img_rows, img_cols )。而在tensorflow中则是默认channels_last,即input_shape=(img_rows, img_cols, img_channels)。解决方法:可添加这两行代码,使其变为ch..._valueerror: negative dimension size caused by subtracting 3 from 2 for '{{no

推荐文章

热门文章

相关标签