概述
前几天有个朋友需要调imx385 在海思3516DV300 平台的驱动,找我帮忙点图,把调试好的驱动发他之后,他点图竟然需要将静态库链接到自己的项目中进行调试。这一点我有点匪夷所思。我点图的方法一直都是使用海思SDK 中的 Stream 工具,这个很方便,只需要配置相关的参数,加载动态库就可以出图,屡试不爽。
这篇文章就简单说一下我点图的过程,记录一下自己的调试经验,感谢大佬们的指正。
1. 在验证sensor 驱动前, 需要先配置好ini 参数。 以我项目中用到的SDK 为例: Hi3516CV500_PQ_V2.0.2.0/configs/ 目录中放一些sensor 的配置,如果需要调新的sensor , 先把原有的文件拷贝一份以snesor 命名。 再讲 编译好的sensor 动态库拷贝到 Hi3516CV500_PQ_V2.0.2.0/libs/ 。
2. 在这些sensor的配置目录中,有一些ini文件, 其中有一个为 config_entry.ini 。 这个配置中有些索引项。如下:
config_entry.ini
[video_mode]
ModeNum = 4 // ModeNum 对应下列的 mode.x
UseMode = 0
[mode.0]
ModeName = 1080p30
IniFilename = imx327_1080p30.ini // IniFilename 则对应与 config_entry.ini 同级目录下的一些模式的 ini 文件 每个 ini 文件各有不同, 可以是实现编码, wdr , 抓拍 // 等功能 , 具体的配置其实就是 MPP 库中 数据流的走向,相当于一个缩小的项目工程。
[mode.1]
ModeName = 1080p30_wdr
IniFilename = imx327_1080p30_wdr.ini
[mode.2]
ModeName = 1080p30_bas
IniFilename = imx327_1080p30_bas.ini[mode.3]
ModeName = 1080p30_snap_doublepipe
IniFilename = imx327_1080p30_snap_doublepipe.ini
3. 如果只是简单的为了验证点图, 则只需要修改 其中一个 ini 文件中的配置项即可。 我以 imx385 的 linear 为例, 将 imx327_1080P30.ini 进行修改。
imx385_1080P30.ini
[isp]
IspNum = 1 // 这里指 你需要几个 isp pipeline , 简单说就是需要同时点几个 snesor
IntBotHalf = 0
[isp.0] // 如果需要两个, isp.0 就是第一个sensor
DevId = 0
SensorType =stSnsImx385Obj // 这个sensor Type 对应着 sensor 驱动中 coms.c 文件中的回调函数句柄。
;sensor name
SensorLibFile = ./libs/libsns_imx385.so // 这个是 与 configs 目录同级的 libs 目录中添加的 libsns_imx385.so , 会进行动态链接。
WdrModeNum = 2
UseWdrMode = 0
Isp_Bayer = 2 // 这个配置需要根据sensor datasheet 中进行匹配, 是 RGGB 还是 BGGR 等 CFA 。 具体也需要根据soc 看是否支持别的 CFA 来选择。
;BAYER_RGGB=0
;BAYER_GRBG=1
;BAYER_GBRG=2
;BAYER_BGGR=3
SnsMode = 0
SnsType = 0 // 选择 I2C / SPI sensor 与 SOC 通信方式
;ISP_SNS_I2C_TYPE = 0
;ISP_SNS_SSP_TYPE = 1
;ISP_SNS_TYPE_BUTT = 2 /*do not set anything, use default setting*/
I2cDev = 0
SspDev = -1
SspCs = -1
[mipi_mode.0]
input_mode =1 // 这里就看你是使用什么样的协议格式来传输信号, 常用的就是 mipi 。 当然也有使用热成像sensor 使用 BT656等
;INPUT_MODE_MIPI = 0x0, /* mipi */
;INPUT_MODE_SUBLVDS = 0x1, /* SUB_LVDS */
;INPUT_MODE_LVDS = 0x2, /* LVDS */
;INPUT_MODE_HISPI = 0x3, /* HISPI */
;INPUT_MODE_CMOS = 0x4, /* CMOS */
;INPUT_MODE_BT601 = 0x5, /* BT601 */
;INPUT_MODE_BT656 = 0x6, /* BT656 */
;INPUT_MODE_BT1120 = 0x7, /* BT1120 */
;INPUT_MODE_BYPASS = 0x8, /* MIPI Bypass */。。。。。。
raw_data_type = 2 // 这里选择 Raw 数据的精度, 具体根据sensor 序列来配置
;DATA_TYPE_RAW_8BIT = 0
;DATA_TYPE_RAW_10BIT = 1
;DATA_TYPE_RAW_12BIT = 2
;DATA_TYPE_RAW_14BIT = 3
;DATA_TYPE_RAW_16BIT = 4
;DATA_TYPE_YUV420_8BIT_NORMAL = 5
;DATA_TYPE_YUV420_8BIT_LEGACY = 6
;DATA_TYPE_YUV422_8BIT = 7
;DATA_TYPE_YUV422_PACKED=8
;----------only for mipi_dev--------- // 这里选择 是否为 wdr 模式, 以及wdr 的合成方式
mipi_wdr_mode =0
;HI_MIPI_WDR_MODE_NONE =0
;HI_MIPI_WDR_MODE_VC = 1
;HI_MIPI_WDR_MODE_DT = 2
;HI_MIPI_WDR_MODE_DOL =3
mipi_lane_id = 0|1|-1|-1|-1|-1|-1|-1| // 这里至关重要, 看mipi lane 是怎么连接的, 与硬件连接强相关, 也需要看sensor 驱动初始化序列是配置的几lane 。
;lane_id: -1 - disable // 也有可能是 lvds , 那么只需要修改 sync code 即可。
上面这些基本步骤就可以简单的配置出图, 将sensor 到 Vi 之间的配置全部完成,剩余Vi - Vpss - Venc 等之间的绑定通道信息, 使用默认即可出图, 也可以自己进行配置修改, 与开发MPP相同的流程。
4. 修改完配置文件后,就完成了 90% 的工作, 接下来只需要在板端执行如下命令: ./HiIspTool.sh -a imx385 0 , -a 表是开启全部功能 imx385 是 configs 目录中拷贝出的文件 0 表示 config_entry.ini
中选择 mode.0. 就是执行第3步中修改的 imx382_1080P30.ini 。
5. 在PC端打开 stream 工具, 链接板端 ip 就可以查看是否出图。
如果顺利的话,通过以上5步就可以验证点图。
当然也可以不用这么繁琐, 使用工具链接到板端之后, 可以手动加载 ini 文件, 将配置好的ini 文件可以手动发送到stream 中。 具体的使用方法我在之前的文章有介绍到。
以上内容就可以简单粗暴进行点图验证。虽然未必有从工程项目中验证是否出图块, 但是这个办法是最快速有效的方法。 也是海思文档中提倡的方法。
以上内容也是根据海思的文档学习, 简单总结出的一个使用方法, 有兴趣的朋友可以仔细阅读海思的文档。 欢迎阅读到的此文的朋友进行指正。
转载请标明出处。
最后
以上就是羞涩网络为你收集整理的海思平台ISP系列从零开始:如何验证点图的全部内容,希望文章能够帮你解决海思平台ISP系列从零开始:如何验证点图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复