姓名:张猛
【嵌牛导读】:在海思+ov9712相机调试完成之后,便更改了比亚迪的相机BYD2013进行调试,在调试这个相机简单的更改了相机配置寄存器之后图像很容易的出来了,但是图像有很大的噪点,失真,这个问题一直在研究搞不定(感觉自己在硬件软件配置是对的),便想到用海思的Hi_ISP实现图像的在线调试,看能不能达到一些意外的收货,但是在用海思ISp工具时便遇到了问题,搞了两天终于才把这个问题解决,在这里记录一下。
【嵌牛鼻子】:ISP HiPQtools stream
【嵌牛提问】:对于海思在线调试工具,如何进行加载,加载的流程是什么,以及要要注意这里面的坑。
【嵌牛正文】:
1.首先加载设备驱动及进行系统配置
在ko目录下,执行./load3518e -i 系统便会进行加载
2.sensor库文件的生成(.ko)
sensor的库文件需要在linux服务器中的sdk包中编译得到,将生成的.so文件放到Sdk的stream软件包的libs/目录下。
这样就在上一层目录的lib/目录下生成了.so文件
3.修改stream软件包的.ini文件
sc3035_3m_4lan.ini文件在Hi3516A_Stream_xxx/configs目录下,改文件主要指定.so文件的位置、输入视频的接口(LVDS/MIPI/DVP)、视频格式(分辨率、同步方式、目标帧率等)等系统配置。
[sensor]
Sensor_type =sc3035 ;sensor name
Mode =0 ;WDR_MODE_NONE = 0
;WDR_MODE_BUILT_IN = 1
;WDR_MODE_2To1_LINE = 2
;WDR_MODE_2To1_FRAME = 3
;WDR_MODE_2To1_FRAME_FULL_RATE =4 ...etc
DllFile =libs/libsns_sc3035_4lan.so ;sensor lib path
[mode]
input_mode =0 ;INPUT_MODE_MIPI = 0
;INPUT_MODE_SUBLVDS = 1
;INPUT_MODE_LVDS = 2 ...etc
dev_attr = 0 ;mipi_dev_attr_t = 0
;lvds_dev_attr_t = 1
;NULL =2
[mipi]
;----------onlyformipi_dev---------
data_type = 1 ;raw datatype: 8/10/12/14bit
;RAW_DATA_8BIT = 0
;RAW_DATA_10BIT = 1
;RAW_DATA_12BIT = 2
;RAW_DATA_14BIT = 3
lane_id = 0| 1 | 2 | 3 |-1|-1|-1|-1| ;lane_id: -1 - disable
[isp_image]
Isp_x =0
Isp_y =0
Isp_W =2304
Isp_H =1536
Isp_FrameRate=30
Isp_Bayer =3 ;BAYER_RGGB=0, BAYER_GRBG=1, BAYER_GBRG=2, BAYER_BGGR=3
4. 运行stream软件
运行stream软件包中的HiIspTool.sh脚本,通过以太网卡与上位机的PQTools建立通信
./HiIspTools.sh -a -p ov9712_720p_line.ini
遇到的问题就出在这一块,报错是
研究其脚本文件HiIsptool.sh ,发现ISP的安装是分为板端工具和PC端安装,而板端安装是根据这个脚本进行配置的,具体分两个部分:
(1)killall ittb_control; #杀死ittb_control进程
DLL_PATH=${LD_LIBRARY_PATH}:${PWD}/libs; #指定库路径
export LD_LIBRARY_PATH=${DLL_PATH}#export 库
LD_LIBRARY_PATH即Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接
库)时除了默认路径之外的其他路径(该路径在默认路径之前查找)。
工具里使用了自己编译好的动态库,而这些动态库放在发布包的libs文件夹下。当执行函数动态
链接时,如果此文件不再缺省目录下’/lib’ and ‘/usr/lib’,那么就需要指定环境变量
LD_LIBRARY_PATH
(2)运行可执行程序
./ittb_control&
总结:
ittb_control进程是基于TCP的服务端,负责控制信号的传输,也就是负责将海思板子和PC端的工具连接起来
ittb_stream进程也是基于TCP的服务端,负责播放H.265或YUV视频流。,也就是负责将板端的数据进行传输处理
小插曲:
理论上上直接运行上面的Hi脚本就可以了,但是我在具体的操作过程中是报错的,ps一下发现并没有ittb_controls 和ittb_stream两个进程,单独运行./ittb_controls报错没有权限,运行chmod 777 ittb_controls获得权限,此时运行却发生缺少so文件,但是libs目录下是有这个文件的,仔细查看脚本文件,
这里面设计到了Makefile的一些知识,这里面的路径并不是指软件目录下的lib目录,而是指的海思板系统根目录下的lib目录,复制报错的.so到系统根目录下报错就换了一个.so 报错,这验证了我的想法
执行命令cp * /usr/lib/ 将软件路径lib下的所有.so复制到系统根目录下的.lib/目录下,此时,发现没有报错。ps查看linux进程中也有了control和stream两个进程
这个时候打开window系统的pqtools,选择sdk版本,填写海思板子的IP,port默认就可以连接上板子了