【地平线X3M平台点亮sensor出现问题的分析】
转自地平线论坛经验
1. I²C通讯失败的问题以及排查方法。
外界的图像数据一般是通过sensor感知,然后通过mipi接口进入到地平线X3M这款AI芯片的视频处理模块,模块对视频图像做比如放大、缩小、旋转等处理。
问题:I²C通讯失败,错误log如下:
run_time = 100000
cam_index = 0
pipe_num = 1
loop = 4
need_m_thread = 0
need_free = 0
need_get = 0
need_display = 0
unable open camera with addr 0xaa ioctl I2C_SLAVE_FORCE error
[ERROR]["LOG"][imx415_utility.c:101] 101 : init imx415 -- 2:0xaa 0: 0x3000 = 0x1 fail
[ERROR]["LOG"][imx415_utility.c:421] 421 : init imx415 fail
[ERROR]["LOG"][utility/hb_cam_utility.c:909] sensor_init fail
出现 I²C 通讯失败错误,一般需要从如下三种情况来排查:
1、检查sensor是否需要gpio拉低拉高
针对有些sensor配置有gpio的拉低拉高的管脚需要复位后才能写sensor的I²C寄存器,点亮sensor时候需要跟硬件工程师或者自行查看硬件原理图check清楚,X3系统支持GPIO子系统,因此可以通过操作sys节点的方式来做,以gpio111为例,命令如下:
echo 111 > /sys/class/gpio/exportecho out > /sys/class/gpio/gpio111/directionecho 0 > /sys/class/gpio/gpio111/value
sleep 0.2echo 1 > /sys/class/gpio/gpio111/value
2、hb_x3player.json文件对于sensor I²C bus配置错误,检查bus_num字段,以imx415 sensor为例,参考如下:
"config_0":{"interface_type":"mipi","port_number":1,"port_0":{"bus_type":0,"bus_num":2,"entry_num":1,"sensor_addr":"0x1a","sensor_name":"imx415","reg_width":16,"sensor_mode":1,"fps":30,"resolution":2160,"gpio_pin":[ 118 ],"gpio_level":[ 0 ],"deserial_index":0,"deserial_port":0,"config_path":"hb_mipi_imx415_raw10_%dfps_%dP.json"}},
3、sensor没有正确接入,需要检测I²C是否能够探测到,包括是否给sensor的mclk和mipiclk给时钟,对于sensor使用X3提供mclk时,需要先开启mclk,使用I²C命令才能正常探测到sensor, X3系统可以通过如下命令给mipi host0 mclk 24Mhz时钟,注意检查使用的mipi rx是0,1,还是2,对应需要修改命令为mipi_host0,mipi_host1,mipi_host2示波器实际量下在X3端的mclk和mipiclk波形是否跟配置的一致:
echo 1 > /sys/class/vps/mipi_host0/param/snrclk_enecho 24000000 > /sys/class/vps/mipi_host0/param/snrclk_freq
2. mipi初始化时序问题以及排查方法
地平线X3M与sensor通过mipi接口连接,时钟由X3M提供,一般情况下是24Mhz,硬件上需要确保时钟线和数据线的连接正常,这是后面sensor能点亮的前提。
[INFO][][mipi/mipi_group.c:269] mipiclk 442
[INFO][][mipi/mipi_group.c:270] settle 65
[INFO][][mipi/mipi_group.c:271] entry_info->host_enable 1
[INFO][][mipi/hb_mipi_host.c:384] entry_info->host_path /dev/mipi_host0
[INFO][][mipi/hb_mipi_host.c:385] entry_info->dev_path /dev/mipi_dev-1
[INFO][camera][src/hb_vin_mipi_host.c:256] mipi host0 init begin
[ERROR][camera][src/hb_vin_mipi_host.c:273] !!! host1 MIPIHOSTIOC_START error, ret = -1
[ERROR][camera][src/hb_vin.c:112] mipi_host 0 init error!
[ERROR][][mipi/hb_mipi_api.c:388] hb_vin_init fail
[ERROR][][vio_vin.cpp:(hb_vin_init:506)] HB_MIPI_SetMipiAttr error!
hb_vin_init failed, -37
对于上图的报错,需要做如下几步的配置自查:
1、因为X3对mipi stop状态检查默认在mipi init阶段进行的,但并非所有sensor上电后都默认处于stop状态,对于此类sensor(例如sony系列),需要在sensor init中将sensor配置为stop状态,并将mipi stop check配置到mipi start阶段。配置命令如下,注意使用的是mipi rx是0,1,还是2,对应需要修改命令为mipi_host0,mipi_host1,mipi_host2:
echo 1 > /sys/class/vps/mipi_host1/param/stop_check_instart
2、检查settle值(范围是0-127),以imx415 sensor为例,settle值是10,如代码块1
3、检查sensor的lane数是否配置的跟mipi里面的lane一致,sensor的lane数需要从厂家的初始化配置里面获取,如果没有需要咨询sensor厂家获得,以imx415 sensor为例,如下图是sensor厂家给出的初始化的lane数,lane数如代码块2
4、sensor的输出宽高是否跟mipi配置的宽高一致。
5、sensor init后状态必须是stop,不能有流输出,等sensor start后才可以输出流(kernel的报错日志 会有wait phy stop state error!!!错误)
6、确定sensor的时钟是否正常,mipi参数里面的mclk跟sensor时钟是否填的一致。
7、sensor的framelenth和linelength是否配置正常。
3. mipi启动报错的错误log以及排查方法。
出现该错误时,说明mipi LP to HS切换失败,一般有如下两种情况:
1、hb_x3player.json文件中对于mipi host的通道配置错误,需要检查entry_num字段,以imx415 sensor为例,entry_num字段如代码块1所示:
2、检查下硬件的mipi接线有没有搞错,硬件接口对应如下图
3、sensor开流失败,没有进入HS模式,串口会出现mipi的hs reception check error 0x10000 hs reception state error!!!错误,可能的原因是sensor写寄存器初始化序列没有写对,导致sensor没有正常出流,可以使用i2ctransfer命令把写到sensor的寄存器读出来跟写入对比是否一致,i2ctransfer读命令如下截图,如果sensor寄存器初始化读出和写入一致,需要检查下硬件接线和模组是否有异常,可以使用示波器量下X3端对应得mipiclk,mclk和数据的波形是否正常:
4. 串口无任何报错,应用程序报错(ipu get buf failed type(0) !!! )
嵌入式开发过程中会碰到各种问题,软件方面的问题一般是通过查看log打印信息来分析。本文介绍地平线SOC X3M开发板在点亮sensor过程中碰到的问题。
错误log如下:
此种情况一般是由于VIO配置文件中对于mipi host通道号配置有误,确认mipi_rx_index字段,以imx415 sensor为例,配置如代码块1和代码块3:
- 代码块1
"config_0":{"interface_type":"mipi","port_number":1,"port_0":{"bus_type":0,"bus_num":2,"entry_num":1,"sensor_addr":"0x1a","sensor_name":"imx415","reg_width":16,"sensor_mode":1,"fps":30,"resolution":2160,"gpio_pin":[ 118 ],"gpio_level":[ 0 ],"deserial_index":0,"deserial_port":0,"config_path":"hb_mipi_imx415_raw10_%dfps_%dP.json"}},
- 代码块3
"mipi": {"enable": 1,"ipi_channels": 1,"mipi_rx_index": 1,"width": 3840,"height": 2160,"format": 0,"pix_length": 1,/*需要跟代码块1的entry_num保持一致*/"enable_mux_out": 1,"enable_pattern": 0,"enable_frame_id": 1,"enable_bypass": 0,"enable_line_shift": 0,"enable_id_decoder": 0,"set_init_frame_id": 0,"set_line_shift_count": 0,"set_bypass_channels": 1,"set_mux_out_index": 0},
4.1 Hobotplayer注意事项
如上图所示,如果ipu_ds_config
下面的ds0_roi_en
设置1,hobotplayer
需要使用的channel_id
是0,如果是ds1_roi_en
设置1,那hobotplayer需要使用的channel_id
是1,如果ds2_roi_en
设置的是1,那么hobotplayer需要使用的channel_id
是2,如下图
5. 图像锯齿感(isp->online->ipu)
现象:
地平线X3M SoC系统平台能正常点亮sensor,调试工作就已经成功了一半,剩下的工作就是对图像细节做优化。下面介绍出图后图像部分地方出现锯齿状现象及解决方法。
sensor出图后,一般是通过hobotplayer这款软件来显示图像,yuv图像有锯齿的现象,如下图所示:
原因分析:
IPU输入需要16字节对齐,因为是 isp->online->ipu,如果是sensor输入的宽度不是16字节对齐,到ipu后因为字节不对齐所以出现锯齿
解决方法:
建议sensor端宽度输入改成16字节对齐,比如1080改成1088
可以把isp->online->ipu改成isp->offline->ipu,以1080对齐到1088为例,cfg_size改成如下
"cfg_size": { "source_width": 1088, "source_height": 1280, "source_stride_y": 1088, "source_stride_uv": 1088,
如果改成offline,对pipeline通路的带宽和延时性能方面都有影响
【地平线X3M平台点亮sensor出现问题的分析】相关推荐
- MTK平台点亮sensor以及mtk开机初始化
MTK点亮sensor Probe:上电–>matach id–>下电 Driver:Kernel部分和Hal部分 dtsi:主要配置GPI的上电逻辑,把camera的上电管脚与平台管脚相 ...
- 展锐平台的camera sensor驱动代码设计解析(2)
展锐平台的camera sensor驱动代码设计解析(1) 展锐平台的camera sensor驱动代码设计解析(2) 展锐平台的camera sensor驱动代码设计解析(3) Camera驱动的基 ...
- 三:Sensor SLPI层代码分析---
三:Sensor SLPI层代码分析 在学习SLPI侧代码前我们先了解下SEE的registry&config. registry 放在/persist/sensors/registry/re ...
- Android6.0 Sensor架构和问题分析
本文在借鉴网友的资料后再重新梳理了一遍,都是站在前人的基础.巨人的肩膀上再次总结分析出来的,仅供大家参考! 本文主要描述了在Android 6.0系统.MTK6755平台上sensor相关软硬件的体系 ...
- 利用好手头的资源解决海量语料资源收集以及利用哈工大的LTP云平台解决依存句法和语义依存分析
一.利用好手头的资源解决海量语料资源 基于语料做机器学习需要海量数据支撑,如何能不存一点数据获取海量数据呢?我们可以以互联网为强大的数据后盾,搜索引擎为我们提供了高效的数据获取来源,结构化的搜索结果展 ...
- 【报告分享】小红书平台2021 11.11期间行业投放分析报告-千瓜数据(附下载)
摘要:随着平台多元化发展,用户体量增加,小红书逐渐拥抱了更多的年轻用户群体,也给更多的品牌带来了增长机会.据小红书方透露,2021年小红书平台的单日笔记曝光已经超100亿次,且男性用户占比已经达到了3 ...
- 20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析
20189200余超 2018-2019-2 移动平台应用开发实践作项目代码分析 项目名称 小说阅读器 项目功能 注册登录 用户信息.用户密码.用户图像修改 书籍分类 书架 书籍搜索(作者名或书籍名) ...
- 平台梯子行业调研报告 - 市场现状分析与发展前景预测
平台梯子市场的企业竞争态势 该报告涉及的主要国际市场参与者有Louisville Ladder.TB Davies (CARDIFF).Tri-Arc Manufacturing.Werner Ent ...
- Https/Tcp抓包工具Charles、fiddler,ping (网络诊断工具),Android平台HTTPS抓包解决方案及问题分析HttpCanary
市面上已经有一些弱网络模拟工具,比如微软的Network Emulator for Windows Toolkit(NEWT),Facebook的Augmented Traffic Control(A ...
最新文章
- 一位中科院自动化所博士毕业论文的致谢:二十二载风雨求学路,他把自己活成了光.........
- logback1.1.11日志无法自动删除
- JBox2D和JavaFX:事件与力量
- 实验1 熟悉实验环境
- 如何打开Cookies网页
- Servlet快速入门和工作原理
- 中小企业电子商务如何发展?
- python列表购物
- docker安装redis提示没有日记写入权限_Docker 从入门到掉坑
- 计算机学课毕业论文,计算机专业毕业论文(精选5篇)
- 对话夏琳·查布利斯:Primer.AI机器学习工程师是怎样炼成的?
- 上行带宽,下行带宽;上传速度,下载速度
- 【记录】读《你在天堂里遇见的五个人》有感
- 在上海创业的日子之了解银行企业对公基础账户收费情况
- 华为“天才少女”年薪156万:她靠什么改写了普通女孩的人生?
- Unity3D 协程
- 贪心算法之 活动安排(Java代码实现)
- location选择收货地址
- 您应该购买哪款Apple Watch?
- matlab导出图片背景_matlab美化图片之添加背景颜色