本文是一篇转载,虽然平台不大一样,应该差别不大。原文地址为:https://yq.aliyun.com/articles/542505?spm=a2c4e.11153940.0.0.7a522e13Y7KlEP。

1. sensor开发框图

2. 设备驱动加载及硬件系统配置

1

2

3

4

5

cd mpp/ko

# default online

./load3518e -a -sensor sc2135 -osmem 32 -total 64

# vi_vpss offline

./load3518e -a -sensor sc2135 -osmem 32 -total 64 -offline

load3518e脚本主要是用来配置硬件系统的参数(引脚复用、sensor时钟、VI时钟)加载驱动(.ko),包括访问sensor的I2C接口驱动。

离线模式时图像存入DDR中,在线模式时图像不存入DDR中。

在load3518e脚本中添加sensor的相关配置。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

insert_sns()

{

    case $SNS_TYPE in

        sc2135)

            himm 0x200f0040 0x2;              # I2C0_SCL

            himm 0x200f0044 0x2;              # I2C0_SDA

            #cmos pinmux

            himm 0x200f007c 0x1;              # VI_DATA13

            himm 0x200f0080 0x1;              # VI_DATA10

            himm 0x200f0084 0x1;              # VI_DATA12

            himm 0x200f0088 0x1;              # VI_DATA11

            himm 0x200f008c 0x2;              # VI_VS

            himm 0x200f0090 0x2;              # VI_HS

            himm 0x200f0094 0x1;              # VI_DATA9

            

            himm 0x2003002c 0xb4001;          # sensor unreset, clk 27MHz, VI 148.5MHz

#           himm 0x20030104 0x1;              # vpss 148.5MHz

            ;;

        *)

            echo "xxxx Invalid sensor type $SNS_TYPE xxxx"

            report_error;;

    esac

}

            

insert_ko()

{

    # sys config

    sys_config;

    # driver load

    insmod mmz.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error

    insmod hi_media.ko

    insmod hi3518e_base.ko

    insmod hi3518e_sys.ko vi_vpss_online=$b_arg_online sensor=$SNS_TYPE

    insmod hi3518e_tde.ko

    insmod hi3518e_region.ko

    insmod hi3518e_vgs.ko

    insmod hi3518e_isp.ko

    insmod hi3518e_viu.ko detect_err_frame=10;

    insmod hi3518e_vpss.ko rfr_frame_comp=1;

    insmod hi3518e_vou.ko

    #insmod hi3518e_vou.ko transparentTransmit=1 #enable transparentTransmit

    insmod hifb.ko video="hifb:vram0_size:1620"     # default pal

    insmod hi3518e_rc.ko

    insmod hi3518e_venc.ko 

    insmod hi3518e_chnl.ko ChnlLowPower=1

    insmod hi3518e_h264e.ko

    insmod hi3518e_jpege.ko

    insmod hi3518e_ive.ko save_power=0;

#   insmod hi3518e_ive.ko 

    insmod extdrv/sensor_i2c.ko

    echo "==== Your input Sensor type is $SNS_TYPE ===="

    insmod extdrv/pwm.ko

    insmod extdrv/piris.ko

    #insert_sns > /dev/null

    insert_sns

    insert_audio

    insmod hi_mipi.ko

    echo "==== Your input Sensor type is $SNS_TYPE ===="

}          

           

3. sensor的库文件生成(.so)

sensor的库文件需要在Linux服务器中的SDK包中编译得到,将生成的.so文件放到SDK包中的stream软件包中的Hi3518E_Stream_xxx/libs目录下。

sensor_ctl.c实现sensor的读写初始化。

sensor_cmos.c主要实现ISP需要的回调函数,包括ISP、AE、AWB等。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

//ISP function

HI_S32 cmos_init_sensor_exp_function(ISP_SENSOR_EXP_FUNC_S *pstSensorExpFunc)

{

    memset(pstSensorExpFunc, 0, sizeof(ISP_SENSOR_EXP_FUNC_S));

    pstSensorExpFunc->pfn_cmos_sensor_init = sensor_init;

    pstSensorExpFunc->pfn_cmos_sensor_exit = sensor_exit;

    pstSensorExpFunc->pfn_cmos_sensor_global_init = sensor_global_init;

    pstSensorExpFunc->pfn_cmos_set_image_mode = cmos_set_image_mode;

    pstSensorExpFunc->pfn_cmos_set_wdr_mode = cmos_set_wdr_mode;

    

    pstSensorExpFunc->pfn_cmos_get_isp_default = cmos_get_isp_default;

    pstSensorExpFunc->pfn_cmos_get_isp_black_level = cmos_get_isp_black_level;

    pstSensorExpFunc->pfn_cmos_set_pixel_detect = cmos_set_pixel_detect;

    pstSensorExpFunc->pfn_cmos_get_sns_reg_info = cmos_get_sns_regs_info;

    return 0;

}

//AE function

HI_S32 cmos_init_ae_exp_function(AE_SENSOR_EXP_FUNC_S *pstExpFuncs)

{

    memset(pstExpFuncs, 0, sizeof(AE_SENSOR_EXP_FUNC_S));

    pstExpFuncs->pfn_cmos_get_ae_default    = cmos_get_ae_default;

    pstExpFuncs->pfn_cmos_fps_set           = cmos_fps_set;

    pstExpFuncs->pfn_cmos_slow_framerate_set= cmos_slow_framerate_set;    

    pstExpFuncs->pfn_cmos_inttime_update    = cmos_inttime_update;

    pstExpFuncs->pfn_cmos_gains_update      = cmos_gains_update;

    pstExpFuncs->pfn_cmos_again_calc_table  = cmos_again_calc_table;

    pstExpFuncs->pfn_cmos_get_inttime_max   = cmos_get_inttime_max; 

    return 0;

}

//AWB function

HI_S32 cmos_init_awb_exp_function(AWB_SENSOR_EXP_FUNC_S *pstExpFuncs)

{

    memset(pstExpFuncs, 0, sizeof(AWB_SENSOR_EXP_FUNC_S));

    pstExpFuncs->pfn_cmos_get_awb_default = cmos_get_awb_default;

    return 0;

}

4. 修改stream软件包的.ini文件

sc2135_1080p_line.ini文件在Hi3518E_Stream_xxx/configs目录下,改文件主要指定.so文件的位置、输入视频的接口(LVDS/MIPI/DVP)、视频格式(分辨率、同步方式、目标帧率等)等系统配置。

5. 运行stream软件

运行stream软件包中的HiIspTool.sh脚本,通过以太网卡与上位机的PQTools建立通信。

1

2

3

cd /Hi3518E_Stream_V1.0.2.0

./HiIspTool.sh -a -p sc2135_1080p_line.ini

ittb_control进程是基于TCP的服务端,负责控制信号的传输。

ittb_stream进程也是基于TCP的服务端,负责播放H.264或YUV视频流。

6. 运行PQ Tools

双击PQ Tools图片,弹出如下对话框,设置IP地址。

在下拉菜单中选择TTP_Stream.exe选项

7. 最终结果

海思Hi3518EV100开发(1)——Sensor驱动相关推荐

  1. Hi3559av100安装linux,海思hi3559AV100开发板参数规格介绍

    海思hi3559AV100开发板调试参数资料介绍: 处理器内核: 双核 arm Cortex A73@1.8GHz,32KB I-Cache, 64KB D-Cache /512KB L2 cache ...

  2. 海思SD3403开发板学习(一)

    海思SD3403开发板学习系列:一 简介 文章目录 海思SD3403开发板学习系列:一 简介 一.3403开发板 二.性能介绍 1.简介 2.主要特点 3.性能参数 一.3403开发板 SD3043标 ...

  3. 海思系统开发——linux下挂载SD卡

    海思系统开发--linux下挂载SD卡 (1)通过#fdisk -l命令确认板子上的linux系统是否识别SD卡 [/]# fdisk -l /mnt/mmc # fdisk -l Disk /dev ...

  4. (1)海思Hi3531DV100开发环境搭建

    海思Hi3531DV100开发环境搭建(1) (本方案在linkpi开发板Hi3531Dv100上测试) 一 安装SDK 1.Hi3531DV100 SDK包位置 在"Hi3531DV100 ...

  5. 海思软件开发入门篇 (一)

    标题 海思软件开发入门篇 (一)   (第一次写博客,有错别字与写的不好的地方敬请谅解.)   加过很多群,也逛过很多论坛,很多人在问,第一次接触海思不知道从而入手,的确,现在一个SDK动不动上G,还 ...

  6. 海思SD3403开发板学习(二)

    海思SD3403开发板学习系列:二 配置基础环境 文章目录 海思SD3403开发板学习系列:二 配置基础环境 前言 一.交叉编译工具安装 1. 工具链名 1. 安装 二.NFS挂载 1.安装NFS 2 ...

  7. 海思Hi3516EV200开发第一天

    海思Hi3516EV200开发第一天 开发环境 测试开发板 开发环境 采用虚拟环境开发板自带的虚拟环境,内置Ubuntu10.04. 测试开发板 开发板为Hi3516EV200,根据自带的资料可以看到 ...

  8. 海思SD3403开发板学习(三)

    海思SD3403开发板学习系列:三 CANN和MindStudio安装 文章目录 海思SD3403开发板学习系列:三 CANN和MindStudio安装 前言 一.CANN安装 1.安装依赖项 2.C ...

  9. 海思SD3403开发板学习(五)

    海思SD3403开发板学习系列:五 模型初始化与反初始化 文章目录 海思SD3403开发板学习系列:五 模型初始化与反初始化 前言 一.初始化 二.反初始化 前言 本文使用yolox模型进行目标检测任 ...

最新文章

  1. go连接Kafka报错kafka: client has run out of available brokers to talk to
  2. leetcode--无重复字符的最长子串--python
  3. Nodejs+express+jade配置
  4. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...
  5. 9.1 mnist_softmax 交叉熵多分类器
  6. python填写excel内容_python实现数据写入excel表格
  7. 银河麒麟通过命令行安装软件没有安装上
  8. 小米大杀器稳了?队友泄露小米MIX4 5G预售页面...
  9. SpringMVC Java config freemarker
  10. 1.OAuth 简介
  11. [实验]一个小的局域网
  12. 做Data Mining,其实大部分时间都花在清洗数据
  13. 【Python建模环境搭建】PyCharm的安装配置以及建模插件Matplotlib的安装
  14. WPF窗体更换背景颜色
  15. 弘辽科技:为什么手淘推荐流量突然增加?
  16. DXP导入网络报表的方法
  17. 一个留学中介的CRM案例
  18. Debussy软件简介及仿真教程
  19. qtabwidget设置表头_Qt GUI图形图像开发之QT表格控件QTableView,QTableWidget复杂表头(多行表头) 及冻结、固定特定的行的详细方法与实例...
  20. Python爬取百度文库并存储为word文档

热门文章

  1. Nginx 常用操作的总结
  2. Studio One6最新版免费的电脑DAW宿主音乐软件
  3. 编程好学吗,学完能做什么,怎么学才好?
  4. Arduino基础入门篇17—四位数码管的驱动
  5. 将doc文件批量转为pdf文件
  6. Android 12.0修改系统默认设备类型的平板电脑类型为设备类型
  7. 关联规则--Apriori算法
  8. 高等数学 第四章 第一类换元法
  9. java面试题库收集 - 7(面试必问)
  10. HTML5怎么输入特殊符号,html5特殊符号