我是靠谱客的博主 羞涩网络,最近开发中收集的这篇文章主要介绍海思平台ISP系列从零开始:如何验证点图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        前几天有个朋友需要调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系列从零开始:如何验证点图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部