第4季5:图像sensor的驱动源码的编译
创始人
2024-03-24 08:26:48
0

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

本文演示如何修改sensor的驱动源码,修改之后如何编译与运行。

一、sensor的注册接口分析

这部分内容见第4季4:图像sensor的驱动源码解析。

二、黑电平

关于黑电平的概念,见博客:技术科普丨黑电平:你真的懂“黑”吗?

简单点理解,就是LCD显示为黑色时所对应的电平。黑色对应的RGB数值是000,但这里的000并不是说在LCD上施加的电平为0时LCD显示为黑色。LCD要显示黑色的话,实际上需要施加一定的电压,这个电压我们就叫做“黑电平”。

三、sensor驱动编译实验

1、修改黑电平对应的数值

AR0130的黑电平设置函数是cmos_get_isp_black_level,位于mpp/component/isp/sensor/ar0130/ar0130_cmos.c文件中717行附近。

sensor_register_callback                //位于ar0130_cmos.c文件文件cmos_init_sensor_exp_function       //位于ar0130_cmos.c文件文件cmos_get_isp_black_level        //位于ar0130_cmos.c文件文件

cmos_get_isp_black_level函数内容如下,可知给AR0130设置的黑电平数值是0xC8。这个数值是sensor工程师多次调试得到的最佳数值。我们可以修改这个数值,来看看修改之后的图像质量,这里修改为0x00。

HI_U32 cmos_get_isp_black_level(ISP_CMOS_BLACK_LEVEL_S *pstBlackLevel)
{HI_S32  i;if (HI_NULL == pstBlackLevel){printf("null pointer when get isp black level value!\n");return -1;}/* Don't need to update black level when iso change */pstBlackLevel->bUpdate = HI_FALSE;switch (genSensorMode){default :case WDR_MODE_NONE :for (i=0; i<4; i++){pstBlackLevel->au16BlackLevel[i] = 0xC8;//pstBlackLevel->au16BlackLevel[i] = 0x00;//修改这个数值}break;}

2、生成库形式的“应用层驱动”

这一步主要是编译(进行上述更改后的)sensor层驱动源码,以生成库形式的“应用层驱动”。

首先在mpp/component/isp下执行make(不用执行make clean,因为Makefile感知到源码的修改,会自动更新目标文件(这里的目标是库文件))。

然后可以通过修改时间来确认一下mpp/lib目录下的libsnsxxx.a/so已经被更新。

3、编译sample并运行查看效果

接着我们在mpp/sample_ortp_ar0130/venc目录下执行make clean再执行make(这里就需要先执行make clean,因为之前的操作,没有修改源码sample_venc.c,而只是修改了库文件,该目录下的Makefile不会感知到库文件的更新,从而不会更新sampl_venc。如果不make clean,执行make的时候将不进行任何操作),生成samp_venc这个可执行程序。

接着将sample_venc文件拷贝到虚拟机/home/xjh/iot/hisi_development/hisi_rootfs/目录中,然后将该目录挂载到板载系统的/mnt目录,在/mnt目录下执行“./sample_venc 0”,输入c。

接着在VLC播放器中,选择媒体,打开文件,选择sdp文件(提取码ms4a)(注意这文件里的设置要与实际对应)。此时可以看到实时画面,我们截图进行对比。

黑电平设置为0xC8时的画面:

 黑电平设置为0x00时的画面:

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...