mt6735平台兼容SE4710条码扫描头

  扫码头是用于获取一维/二维码中数据的传感器,SE4710是扫码头的一种。本次工作是,在MTK MT6735系统平台上,将原有SE4750扫码头的驱动代码兼容SE4710。SE4710与SE4750的驱动代码绝大部分是相同的,硬件接口相同,所不同的是ID号和采集图像的分辨率。

SE4710条码扫描头:



具体实施步骤:

1. 打开 vi~/mt6735/kernel-3.10/drivers/misc/se4750/se4750.c 添加读 se4710 ID 的代码


2.在 mt6735/vendor/mediatek/proprietary/custom/mt6735/hal/D1/sendepfeature/ 目录下新建一个 se4710_mipi_raw 文件夹,我选择直接复制 se4750_mipi_raw 文件夹,然后对里面的参数进行修改。

进入 config.ftbl.se4710_mipi_raw.h 文件下修改se4710采集图像的分辨率,1360*960 改为 1360*800

vi mt6735/vendor/mediatek/proprietary/custom/mt6735/hal/D1/sendepfeature/se4710_mipi_raw/config.ftbl.se4710_mipi_raw.h


3. 添加se4710_mipi_raw文件,该文件包含:Makefile se4710mipi_Sensor.c se4710mipi_Sensor.h 


在se4710mipi_Sensor.c中修改分辨率,将1360*960全部修改为1360*800。


在 Makefile 中添加 se4710mipi_Sensor.o


4. 在下列文件中添加 se4710_mipi_raw 文件,文件内容来源于 se4750_mipi_raw 的修改。
cd ~mt6573/vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/se4710_mipi_raw


5. 进入kd_camera_hw.c 对控制 se4710 的电源的GPIO口进行配置,以及代码的适配。

vi~/mt6735/kernel-3.10/drivers/misc/mediatek/mach/mt6735/p6s_65u_l1/camera/camera/kd_camera_hw.c


6.进入 vi ~/mt6735/device/raindi/p6s_65u_l1/ ProjectConfig.mk 对se4710_mipi_raw文件,进行一些必要的关联。


同样打开vi ~/mt6735/kernel-3.10/arch/arm64/configs/p6s_65u_l1_defconfig         

对se4710_mipi_raw文件,进行关联。这里p6s_65u_l1_defconfig修改比较特殊,需要打开使用menuconfig进行配置。


7.进入 vi ~/mt6735/kernel-3.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h 对SENSOR_DRVNAME_SE4710_MIPI_RAW 进行定义


同理,进入vi ~/mt6735/vendor/mediatek/proprietary/custom/common/kernel/imgsensor/inc/kd_imgsensor.h


8. 进入 vi ~/mt6735/vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor_src/sensorlist.cpp 

对se4710_mipi_raw 进行关联


9. 在makefile定义变量

vi ~/mt6735/device/raindi/p6s_65u_l1/device.mk


图中 $(findstring "$(CUSTOM_KERNEL_SUB_IMGSENSOR)","se4710_mipi_raw") 书写的ifneq 参考了以下规则。
$(findstring FIND,IN)
函数名称:查找字符串函数—findstring。
函数功能:搜索字串“IN”,查找“FIND”字串。
返回值:如果在“IN”之中存在“FIND”,则返回“FIND”,否则返回空。

函数说明:字串“IN”之中可以包含空格、[Tab]。搜索需要是严格的文本匹配。

10. 实现的效果


猜你喜欢

转载自blog.csdn.net/m0_37526672/article/details/80314613