在全志A64平台点亮GC2145 V1.0(分色排版)录像有问题

在全志A64平台点亮GC2145

 

 

大文实验室出品

2017/5/25 15:13

版本:V1.0

 

 

小技巧,直接在全志A64的SDK中搜索ov5640(默认是几乎通的),全部替换为gc2145即可。

rootroot@rootroot-E400:~/wyb$ cd gc2145_bpi_a64_android/

rootroot@rootroot-E400:~/wyb/gc2145_bpi_a64_android$ grep ov5640 . -R

 

 

1、

R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\configs\camera.cfg

;-------------------------------------------------------------------------------

; 用于camera的配置

;

; 采用格式:

; key = key_value

; 注意: 每个key需要顶格写;

; key_value紧跟着key后面的等号后面, 位于同一行中;

; key_value限制大小为256字节以内;

;

;-------------------------------------------------------------------------------

 

;-------------------------------------------------------------------------------

; exif information of "make" and "model"

;-------------------------------------------------------------------------------

key_camera_exif_make = MAKE_A64

key_camera_exif_model = MODEL_A64

 

;-------------------------------------------------------------------------------

; 1 for single camera, 2 for double camera

;-------------------------------------------------------------------------------

number_of_camera = 1

 

;-------------------------------------------------------------------------------

; CAMERA_FACING_BACK

; ov5640 gc2145

;-------------------------------------------------------------------------------

camera_id = 0

 

;-------------------------------------------------------------------------------

; 1 for CAMERA_FACING_FRONT

; 0 for CAMERA_FACING_BACK

;-------------------------------------------------------------------------------

camera_facing = 0

 

;-------------------------------------------------------------------------------

; 1 for camera without isp(using built-in isp of Axx)

; 0 for camera with isp

;-------------------------------------------------------------------------------

use_builtin_isp = 0

 

;-------------------------------------------------------------------------------

; camera orientation (0, 90, 180, 270)

;-------------------------------------------------------------------------------

camera_orientation = 180

 

;-------------------------------------------------------------------------------

; driver device name

;-------------------------------------------------------------------------------

camera_device = /dev/video0

 

;-------------------------------------------------------------------------------

; device id

; for two camera devices with one CSI

;-------------------------------------------------------------------------------

device_id = 0

 

used_preview_size = 1

key_support_preview_size = 640x480

key_default_preview_size = 640x480

 

used_picture_size = 1

key_support_picture_size = 1600x1200, 1280x720, 800x600, 640x480

;key_support_picture_size = 1600x1200, 640x480

key_default_picture_size = 640x480

 

used_flash_mode = 0

key_support_flash_mode = on,off,auto

key_default_flash_mode = on

 

used_color_effect = 1

key_support_color_effect = none,mono,negative,sepia,aqua

key_default_color_effect = none

 

used_frame_rate = 1

key_support_frame_rate = 30

key_default_frame_rate = 30

 

used_focus_mode = 1

key_support_focus_mode = auto,infinity,macro,fixed,continuous-video,continuous-picture

key_default_focus_mode = auto

 

used_scene_mode = 0

key_support_scene_mode = auto,portrait,landscape,night,night-portrait,theatre,beach,snow,sunset,steadyphoto,fireworks,sports,party,candlelight,barcode

key_default_scene_mode = auto

 

used_white_balance = 1

key_support_white_balance = auto,incandescent,fluorescent,warm-fluorescent,daylight,cloudy-daylight

key_default_white_balance = auto

 

used_exposure_compensation = 1

key_max_exposure_compensation = 3

key_min_exposure_compensation = -3

key_step_exposure_compensation = 1

key_default_exposure_compensation = 0

 

key_horizonal_view_angle = 48.6

key_vertical_view_angle = 37.0

 

used_zoom = 1

key_zoom_supported = true

key_smooth_zoom_supported = false

key_zoom_ratios = 100,120,150,200,230,250,300

key_max_zoom = 30

key_default_zoom = 0

 

 

 

 

2、

R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\init.sun50iw1p1.rc

# csi module

    insmod /system/vendor/modules/videobuf2-core.ko

    insmod /system/vendor/modules/videobuf2-memops.ko

    insmod /system/vendor/modules/videobuf2-dma-contig.ko

    insmod /system/vendor/modules/vfe_io.ko

    insmod /system/vendor/modules/actuator.ko

    insmod /system/vendor/modules/dw9714_act.ko

    #insmod /system/vendor/modules/ov5640.ko

    insmod /system/vendor/modules/gc2145.ko

    insmod /system/vendor/modules/vfe_v4l2.ko

 

 

 

 

3、(可选操作:)

R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\ueventd.sun50iw1p1.rc

/dev/video0                 0770    media       media

#/dev/video1                 0770    media       media

 

 

 

 

4、

R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\arch\arm64\boot\dts\sun50iw1p1.dtsi

csi0:vfe@0 {

device_type= "csi0";

compatible = "allwinner,sunxi-vfe";

interrupts = <GIC_SPI 84 4>;/*SUNXI_IRQ_CSI0 (SUNXI_GIC_START + 84 ) = 116*/

pinctrl-names = "default","sleep";

pinctrl-0 = <&csi0_pins_a>;

pinctrl-1 = <&csi0_pins_b>;

cci_sel = <0>;

csi_sel = <0>;

mipi_sel = <0>;

isp_sel = <0>;

csi0_sensor_list = <0>;

csi0_mck = <&pio PE 1 1 0 1 0>; /*PE1 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/

status = "okay";

csi0_dev0:dev@0{

csi0_dev0_mname         = "ov5640";

修改为:

csi0_dev0_mname         = "gc2145";

csi0_dev0_twi_addr      = <0x78>;

csi0_dev0_pos = "rear";

csi0_dev0_isp_used      = <1>;

csi0_dev0_fmt           = <0>;

csi0_dev0_stby_mode     = <0>;

csi0_dev0_vflip         = <0>;

csi0_dev0_hflip         = <0>;

csi0_dev0_iovdd         = "iovdd-csi";

csi0_dev0_iovdd_vol     = <2800000>;

csi0_dev0_avdd          = "avdd-csi";

csi0_dev0_avdd_vol      = <2800000>;

csi0_dev0_dvdd          = "dvdd-csi-18";

csi0_dev0_dvdd_vol      = <1500000>;

csi0_dev0_afvdd         = "";

csi0_dev0_afvdd_vol     = <>;

csi0_dev0_power_en = <>;

csi0_dev0_reset = <&pio PE 14 1 0 1 0>; /*PE14 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/

csi0_dev0_pwdn = <&pio PE 15 1 0 1 0>; /*PE15 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/

csi0_dev0_flash_used = <1>;

csi0_dev0_flash_type = <2>;

csi0_dev0_flash_en = <>;

csi0_dev0_flash_mode = <>;

csi0_dev0_flvdd         = "vdd-csi-led";

csi0_dev0_flvdd_vol     = <3300000>;

csi0_dev0_af_pwdn = <>;

csi0_dev0_act_used      = <0>;

csi0_dev0_act_name      = "ad5820_act";

csi0_dev0_act_slave = <0x18>;

status = "okay";

};

……

};

 

 

 

 

5、

R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\device\Makefile

(小技巧,可以除了gc2145之外的全部的摄像头驱动都用#注释掉,以减少编译时间和生成的IMG的体积!)

obj-m+= ov5640.o

obj-m+= ov2640.o

#obj-m+= ov7736.o

#obj-m+= s5k4ec.o

#obj-m+= s5k4ec_mipi.o

#obj-m+= gc2035.o

#obj-m+= gt2005.o

#obj-m+= gc0307.o

obj-m+= gc0308.o

#obj-m+= gc0328.o

#obj-m+= gc0328c.o

obj-m+= gc2145.o

#obj-m+= gc0329.o

#obj-m+= gc0311.o

#obj-m+= hi253.o

#obj-m+= sp2518.o

#obj-m+= sp2519.o

#obj-m+= sp0718.o

#obj-m+= sp0838.o

#obj-m+= ov16825.o

#obj-m+= ov5650.o

#obj-m+= ov5647.o

#obj-m+= ov5647_mipi.o

#obj-m+= t8et5.o

#obj-m+= s5k4e1.o

#obj-m+= s5k4e1_mipi.o

#obj-m+= sp2518.o

#obj-m+= sp0718.o

#obj-m+= gc5004.o

#obj-m+= gc5004_mipi.o

#obj-m+= ov5648.o

#obj-m+= ar0330.o

#obj-m+= ov5648.o

#obj-m+= sp5408.o

#obj-m+= ov12830.o

#obj-m+= ov8825.o

#obj-m+= ov8850.o

#obj-m+= gc2155.o

#obj-m+= ov8858.o

#obj-m+= ov13850.o

#obj-m+= imx214.o

#obj-m+= ov8858_4lane.o

#obj-m+= sp5409.o

#obj-m+= s5k5e2yx.o

#obj-m+= ov2710_mipi.o

#obj-m+= ov2686.o

 

 

 

 

6、

R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\utility\sensor_info.c

struct sensor_item sensor_list_t[] =

{

//         name                  i2c_addr               sensor type               sensor size          sensor max pclk

{ "ov2640" , 0x60, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "ov5640" , 0x78, SENSOR_YUV ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ov5647" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ov5647_mipi" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ov5650" , 0x50, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ov5648" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ov8825" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},

{ "ov8850" , 0x20, SENSOR_RAW ,  PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},

{ "ov12830" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_12M , CORE_CLK_RATE_FOR_16M},

{ "ov16825" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_16M , CORE_CLK_RATE_FOR_16M},

{ "gc0329" , 0x62, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0309" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0307" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0308" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc2035" , 0x78, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "gt2005" , 0x78, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "gc2015" , 0x60, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "gc2235" , 0x78, SENSOR_RAW ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "sp0838" , 0x30, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "sp0718" , 0x6c, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "sp2518" , 0x6c, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "hi253" , 0x40, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "hi257" , 0x40, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "s5k4ec" , 0x5a, SENSOR_YUV ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "s5k4ec_mipi" , 0x5a, SENSOR_YUV ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "s5k4e1" , 0x20, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "s5k4e1_mipi" , 0x20, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "t4k05" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M},

{ "t8et5" , 0x78, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "ar0330" , 0x20, SENSOR_RAW ,  PIXEL_NUM_3M , CORE_CLK_RATE_FOR_3M},

{ "bf3a03" , 0xDC, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0311" , 0x66, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0311" , 0x66, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc5004" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "gc5004_mipi" , 0x6c, SENSOR_RAW ,  PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M},

{ "nt99252" , 0x6c, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "ov7736" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{"gc2145",0x78,SENSOR_YUV, PIXEL_NUM_2M, CORE_CLK_RATE_FOR_2M},

{ "gc2155" , 0x78, SENSOR_YUV ,  PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M},

{ "gc0328c" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

{ "gc0328" , 0x42, SENSOR_YUV ,  PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M},

};

 

 

 

 

7、

R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\config.c

struct ccm_config ccm0_def_cfg[] = {

{

.ccm = "ov5640",

修改为:

.ccm = "gc2145",

.twi_id = 1,

.i2c_addr = 0x78,

.is_isp_used = 0,

.is_bayer_raw = 0,

.vflip = 0,

.hflip = 0,

.iovdd_str = "",

.avdd_str = "",

.dvdd_str = "",

.afvdd_str = "",

.flvdd_str = "",

.power = {

.stby_mode = 1,

.iovdd_vol =2800000, /* voltage of sensor module for interface */

.avdd_vol =2800000,  /* voltage of sensor module for analog */

.dvdd_vol =1500000,  /* voltage of sensor module for core */

.afvdd_vol =2800000, /* voltage of sensor module for vcm sink */

.flvdd_vol = 3300000,/* voltage of sensor module for flash led */

},

.gpio = {

[MCLK_PIN] = {.gpio = GPIOE(1)/*129*/, .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0,},

[RESET] = {GPIOE(14)/*142*/, 1, 0, 1, 0,},

[PWDN] = {GPIOE(15)/*143*/, 1, 0, 1, 0,},

[POWER_EN] = {GPIO_INDEX_INVALID,    0, 0, 0, 0,},

[FLASH_EN] =  {GPIO_INDEX_INVALID,   0, 0, 0, 0,},

[FLASH_MODE] =  {GPIO_INDEX_INVALID,  0, 0, 0, 0,},

[AF_PWDN] =  {GPIO_INDEX_INVALID,  0, 0, 0, 0,},

},

.flash_used = 0,

.flash_type = 0,

.act_used = 0,

.act_name = "ad5820_act",

.act_slave = 0x18,

},

};

 

 

 

 

8、

R:\wyb\gc2145_bpi_a64_android\lichee\tools\pack\chips\sun50iw1p1\configs\bpi-m64-lcd\sys_config.fex

;--------------------------------------------------------------------------------

;csi (COMS Sensor Interface) configuration

;csi(x)_dev(x)_used: 0:disable 1:enable

;csi(x)_dev(x)_isp_used 0:not use isp 1:use isp

;csi(x)_dev(x)_fmt: 0:yuv 1:bayer raw rgb

;csi(x)_dev(x)_stby_mode: 0:not shut down power at standby 1:shut down power at standby

;csi(x)_dev(x)_vflip: flip in vertical direction 0:disable 1:enable

;csi(x)_dev(x)_hflip: flip in horizontal direction 0:disable 1:enable

;csi(x)_dev(x)_iovdd: camera module io power handle string, pmu power supply

;csi(x)_dev(x)_iovdd_vol: camera module io power voltage, pmu power supply

;csi(x)_dev(x)_avdd:    camera module analog power handle string, pmu power supply

;csi(x)_dev(x)_avdd_vol:        camera module analog power voltage, pmu power supply

;csi(x)_dev(x)_dvdd:    camera module core power handle string, pmu power supply

;csi(x)_dev(x)_dvdd_vol:        camera module core power voltage, pmu power supply

;csi(x)_dev(x)_afvdd:   camera module vcm power handle string, pmu power supply

;csi(x)_dev(x)_afvdd_vol:       camera module vcm power voltage, pmu power supply

;fill voltage in uV, e.g. iovdd = 2.8V, csix_iovdd_vol = 2800000

;fill handle string as below:

;axp22_eldo3

;axp22_dldo4

;axp22_eldo2

;fill handle string "" when not using any pmu power supply

;--------------------------------------------------------------------------------

 

[csi0]

csi0_used               = 1

csi0_sensor_list        = 1

修改为:

csi0_sensor_list        = 0

csi0_pck                = port:PE00<2><default><default><default>

csi0_mck                = port:PE01<0><0><1><0>

修改为:

csi0_mck                = port:PE01<2><default><default><default>

csi0_hsync              = port:PE02<2><default><default><default>

csi0_vsync              = port:PE03<2><default><default><default>

csi0_d0                 = port:PE04<2><default><default><default>

csi0_d1                 = port:PE05<2><default><default><default>

csi0_d2                 = port:PE06<2><default><default><default>

csi0_d3                 = port:PE07<2><default><default><default>

csi0_d4                 = port:PE08<2><default><default><default>

csi0_d5                 = port:PE09<2><default><default><default>

csi0_d6                 = port:PE10<2><default><default><default>

csi0_d7                 = port:PE11<2><default><default><default>

csi0_sck                = port:PE12<2><default><default><default>

csi0_sda                = port:PE13<2><default><default><default>

 

[csi0/csi0_dev0]

csi0_dev0_used          = 1

csi0_dev0_mname         = "ov5640"

修改为:

csi0_dev0_mname         = "gc2145"

csi0_dev0_twi_addr      = 0x78

csi0_dev0_pos           = "rear"

csi0_dev0_isp_used      = 1

csi0_dev0_fmt           = 0

csi0_dev0_stby_mode     = 0

csi0_dev0_vflip         = 1

csi0_dev0_hflip         = 1

csi0_dev0_iovdd         = "avdd-csi"

csi0_dev0_iovdd_vol     = 2800000

csi0_dev0_avdd          = "avdd-csi"

csi0_dev0_avdd_vol      = 2800000

csi0_dev0_dvdd          = "dvdd-csi-18"

csi0_dev0_dvdd_vol      = 1500000

csi0_dev0_afvdd         = "avdd-csi"

csi0_dev0_afvdd_vol     = 2800000

csi0_dev0_power_en      =

csi0_dev0_reset         = port:PE16<0><0><1><0>

csi0_dev0_pwdn          = port:PE17<0><0><1><0>

csi0_dev0_flash_used    = 0

csi0_dev0_flash_type    = 2

csi0_dev0_flash_en      =

csi0_dev0_flash_mode    =

csi0_dev0_flvdd      = ""

csi0_dev0_flvdd_vol =

csi0_dev0_af_pwdn       =

csi0_dev0_act_used      = 1

csi0_dev0_act_name      = "dw9714_act"

csi0_dev0_act_slave     = 0x18

 

 

 

 

小缺陷:

本文的方法是可以点亮gc2145,并且可以以VGA分辨率预览,以1600x1200, 1280x720, 800x600, 640x480拍照正常。但是录像出错(480P/720P)。愿意不明。

 

 

出错的logcat:

01-01 09:30:51.417  8118  8118 I CAM_VideoModule: startVideoRecording: Thread[main,5,main]

01-01 09:30:51.418  8118  8118 V CAM_VideoUI: mFocusRing.stopFocusAnimations()

01-01 09:30:51.418  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:51.423  8118 12119 D CAM_Storage: External storage state=mounted

01-01 09:30:51.435  8118  8118 I CAM_VideoModule: initializeRecorder: Thread[main,5,main]

01-01 09:30:51.440  3592  6982 W StagefrightRecorder: Max file duration is not positive: 0 us. Disabling duration limit.

01-01 09:30:51.440  3592  6982 W StagefrightRecorder: Target duration (0 us) too short to be respected

01-01 09:30:51.440  8118  8118 D CAM_LcyLocProvider: No location received yet.

01-01 09:30:51.441  8118  8118 D CAM_LcyLocProvider: No location received yet.

01-01 09:30:51.441  8118  8118 V CAM_VideoModule: New video filename: /storage/emulated/0/DCIM/Camera/VID_20100101_093051.mp4.tmp

01-01 09:30:51.449  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:51.452  3592  7016 D awplayer: <get_omx_component_factory_fn:276>: ----get_omx_component_factory_fn

01-01 09:30:51.452  3592  7016 D awplayer: <getCallingProcessName:263>: Calling process is: com.android.camera2

01-01 09:30:51.452  3592  7016 D awplayer: <omx_venc:353>: omx_enc Create!

01-01 09:30:51.452  3592  7016 D awplayer: <component_init:433>:  COMPONENT_INIT, name = OMX.allwinner.video.encoder.avc

01-01 09:30:51.452  3592  7016 E OMXNodeInstance: getParameter(48:allwinner.encoder.avc, ParamVideoProfileLevelQuerySupported(0x600000f)) ERROR: BadParameter(0x80001005)

01-01 09:30:51.452  3592  7016 W ACodec  : do not know color format 0x7f000789 = 2130708361

01-01 09:30:51.452  3592  7016 D awplayer: <component_deinit:2055>: component_deinit

01-01 09:30:51.453  3592 23420 D awplayer: <ComponentThread:2989>: x stop command.

01-01 09:30:51.453  3592 23421 D awplayer: <ComponentVencThread:3895>: vencThread detect nStopFlag[1], exit!

01-01 09:30:51.454  3592  7016 D awplayer: <check_lib_unload:394>:  Unloading the dynamic library for OMX.allwinner.video.encoder.avc

01-01 09:30:51.454  3592  7016 W StagefrightRecorder: Intended video encoding bit rate (8000000 bps) is too large and will be set to (3000000 bps)

01-01 09:30:51.455  3592  7016 E CameraSource: Video dimension (1280x720) is unsupported

01-01 09:30:51.456  8118  8118 E MediaRecorder: start failed: -19

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: Could not start media recorder.

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: java.lang.RuntimeException: start failed.

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.media.MediaRecorder.start(Native Method)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at com.android.camera.VideoModule$11.onStorageUpdateDone(VideoModule.java:1384)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2449)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2444)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.os.AsyncTask.finish(AsyncTask.java:651)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.os.AsyncTask.-wrap1(AsyncTask.java)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.os.Handler.dispatchMessage(Handler.java:102)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.os.Looper.loop(Looper.java:148)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at android.app.ActivityThread.main(ActivityThread.java:5417)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at java.lang.reflect.Method.invoke(Native Method)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:742)

01-01 09:30:51.456  8118  8118 E CAM_VideoModule: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:632)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: Handling Camera Access Failure:

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: java.lang.Exception

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.camera.FatalErrorHandlerImpl.onGenericCameraAccessFailure(FatalErrorHandlerImpl.java:84)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.camera.VideoModule$11.onStorageUpdateDone(VideoModule.java:1387)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2449)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.camera.CameraActivity$22.onPostExecute(CameraActivity.java:2444)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.os.AsyncTask.finish(AsyncTask.java:651)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.os.AsyncTask.-wrap1(AsyncTask.java)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.os.Handler.dispatchMessage(Handler.java:102)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.os.Looper.loop(Looper.java:148)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at android.app.ActivityThread.main(ActivityThread.java:5417)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at java.lang.reflect.Method.invoke(Native Method)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:742)

01-01 09:30:51.457  8118  8118 E CAM_FatalErrorHandler: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:632)

01-01 09:30:51.457  8118  8118 E CAM_CameraUtil: Show fatal error dialog

01-01 09:30:51.479  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:51.495  8118  8118 I CAM_VideoModule: Releasing media recorder.

01-01 09:30:51.495  8118  8118 V CAM_VideoModule: Empty video file deleted: /storage/emulated/0/DCIM/Camera/VID_20100101_093051.mp4.tmp

01-01 09:30:51.512  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:51.523  1662  1711 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 460800 Bytes uncached buffer successfully, usage = 0x00000102

01-01 09:30:51.542  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:51.560  1662  6985 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 372992 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:51.567  1662  3540 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 372992 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:51.569  1662  3540 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 372992 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:51.570  1662  3540 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 372992 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:51.572  3592 23109 W CameraHardware: unknow focus status: -1

……

01-01 09:30:54.283  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:54.290  3592  4390 V audio_hw_primary: out_set_parameters: routing=2

01-01 09:30:54.291  3592  4390 V audio_hw_primary: out_set_parameters, line: 1561

01-01 09:30:54.291  3592  4390 V audio_hw_primary: >>>>>>>> adev->mode:0,adev->out_device is: 2, val is : 2

01-01 09:30:54.297  1662  6985 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 293760 Bytes cached buffer successfully, usage = 0x00000333

01-01 09:30:54.303  3592  4390 V audio_hw_primary: start_output_stream, line: 1230

01-01 09:30:54.303  3592  4390 D audio_hw_primary: >>>>>> select_device

01-01 09:30:54.304  3592  4390 V audio_hw_primary: active_output, ****LINE:1050,FUNC:select_device, adev->out_device:2

01-01 09:30:54.304  3592  4390 V audio_hw_primary: ****LINE:1056,FUNC:select_device, headset_on:0, headphone_on:0, speaker_on:2, earpiece_on:0, bt_on:0

01-01 09:30:54.304  3592  4390 V audio_hw_primary: ****LINE:1083,FUNC:select_device, output_device_id:6

01-01 09:30:54.304  3592  4390 V audio_hw_primary: NORMAL mode, ****LINE:1087,FUNC:select_device, adev->out_device:2

01-01 09:30:54.305  3592  4390 V audio_hw_primary: start_output_stream: card:0, port:0, rate:44100, period_count:3, period_size:1024

01-01 09:30:54.305  3592  4390 V audio_hw_primary: do not use out resampler

01-01 09:30:54.313  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:54.334  8118  8118 V CAM_QuickActivity: START onPause: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.334  8118  8118 V CAM_QuickActivity: onPause --> onPauseTasks()

01-01 09:30:54.334  8118  8118 V CAM_Profiler: [  0.000ms][ui] GUARD: CameraActivity.onPause - START

01-01 09:30:54.334  8118  8118 V CAM_VideoModule: stopPreview

01-01 09:30:54.335  3592  7019 D V4L2CameraDevice: V4L2CameraDevice::stopDevice

01-01 09:30:54.335  3592  3845 W CameraHardware: CMD_QUEUE_STOP_FACE_DETECTE failed, mFaceDetection not opened.

01-01 09:30:54.335  3592  7019 W V4L2CameraDevice: wait until capture thread pause or exit

01-01 09:30:54.343  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:54.373  3592 23109 W CameraHardware: unknow focus status: -1

01-01 09:30:54.387  3592  3840 W V4L2CameraDevice: should stop capture now

01-01 09:30:54.388  8118  8118 I CAM_VideoModule: closeCamera

01-01 09:30:54.388  8118  8118 I CAM_VideoModule: Releasing media recorder.

01-01 09:30:54.389  8118  8118 W OrientationEventListener: Cannot detect sensors. Invalid disable

01-01 09:30:54.389  8118  8118 V CAM_LcyLocProvider: stopping location updates

01-01 09:30:54.390  8118  8118 D CAM_LcyLocProvider: stopReceivingLocationUpdates

01-01 09:30:54.390  8118  8118 V CAM_CameraActivity: onPause closing camera

01-01 09:30:54.390  8118  8118 V CAM_CameraController: Closing camera

01-01 09:30:54.391  3592  3845 W CameraHardware: CMD_QUEUE_STOP_FACE_DETECTE failed, mFaceDetection not opened.

01-01 09:30:54.391  3592  6916 W CameraHardware: wait for auto focus thread exit

01-01 09:30:54.403  3592 23109 D CameraHardware: autoFocusThread exited

01-01 09:30:54.426  3592  4390 D AudioFlinger: mixer(0xf23c0000) throttle end: throttle time(33)

01-01 09:30:54.574  3592 23110 D CallbackNotifier: savePictureThread exit, line: 1515

01-01 09:30:54.576  3592  6916 I CameraFlashlight: Destroying camera 0

01-01 09:30:54.680  3592  6916 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras

01-01 09:30:54.682  3592  6916 I CameraService: disconnect: Disconnected client for camera 0 for PID 8118

01-01 09:30:54.683  8118  8118 I CAM_Profiler: [348.659ms][ui] GUARD: CameraActivity.onPause - STOP

01-01 09:30:54.683  8118  8118 V CAM_QuickActivity: END onPause: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.683  3592  6787 D NuPlayerDriver: reset(0xf2223900)

01-01 09:30:54.683  3592  6787 D NuPlayerDriver: notifyListener_l(0xf2223900), (8, 0, 0)

01-01 09:30:54.684  3592 23091 D NuPlayerDriver: notifyResetComplete(0xf2223900)

01-01 09:30:54.685  3592  6787 D NuPlayerDriver: reset(0xf22233c0)

01-01 09:30:54.685  3592  6787 D NuPlayerDriver: notifyListener_l(0xf22233c0), (8, 0, 0)

01-01 09:30:54.686  3592 23096 D NuPlayerDriver: notifyResetComplete(0xf22233c0)

01-01 09:30:54.686  1663  1674 D Sayeye  : current scense is (Normal)

01-01 09:30:54.686  3592  6787 D NuPlayerDriver: reset(0xf2223420)

01-01 09:30:54.686  3592  6787 D NuPlayerDriver: notifyListener_l(0xf2223420), (8, 0, 0)

01-01 09:30:54.687  1663  1674 E Sayeye  : failed to open /sys/devices/soc.0/1c2ac00.twi/i2c-0/0-0040/runtime_suspend, No such file or directory

01-01 09:30:54.687  1663  1674 D Sayeye  : Scense (Normal) state set succeed

01-01 09:30:54.689  5340  5422 I DynamicPManagerService: Current Scense:normal

01-01 09:30:54.689  3592 23098 D NuPlayerDriver: notifyResetComplete(0xf2223420)

01-01 09:30:54.725  1662  1711 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 1536000 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:54.734  1662  6985 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 1536000 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:54.736  1662  6985 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 1536000 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:54.739  1662  6985 I [Gralloc]: ion_alloc from ion_client:19 via heap type DMA(mask:16) for 1536000 Bytes uncached buffer successfully, usage = 0x00000f02

01-01 09:30:54.792  8118  8118 V CAM_CameraAppUI: SurfaceTexture is destroyed

01-01 09:30:54.792  8118  8118 V CAM_VideoModule: Skip stopPreview since it's not mPreviewing

01-01 09:30:54.792  8118  8118 D CAM_VideoUI: surfaceTexture is destroyed

01-01 09:30:54.892  5340  5431 I ActivityManager: Timeline: Activity_windows_visible id: com.android.launcher3 time:3917412

01-01 09:30:54.896  5340  5419 I ActivityManager: Killing 7908:com.android.calendar/u0a20 (adj 15): empty for 3819s

01-01 09:30:54.955  8118  8118 V CAM_QuickActivity: START onStop: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.955  8118  8118 D CAM_LcyLocProvider: disconnect

01-01 09:30:54.955  8118  8118 V CAM_QuickActivity: END onStop: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.956  8118  8118 V CAM_QuickActivity: START onDestroy: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.961  8118  8118 V CAM_QuickActivity: END onDestroy: Activity = com.android.camera.CameraActivity@849fdfb

01-01 09:30:54.968  1663  1674 D Sayeye  : current scense is (Normal)

01-01 09:30:54.969  1663  1674 E Sayeye  : failed to open /sys/devices/soc.0/1c2ac00.twi/i2c-0/0-0040/runtime_suspend, No such file or directory

01-01 09:30:54.969  1663  1674 D Sayeye  : Scense (Normal) state set succeed

01-01 09:30:54.969  5340  5422 I DynamicPManagerService: Current Scense:normal

^C

130|shell@bpi-m64-lcd:/ $

 


VGA分辨率:




800x600分辨率:




1280x720分辨率:





1600x1200分辨率:





全志R16的android4.4.2平台点亮gc2145(evb30) 版本:V1.1 1、配置ov2640在android层配置的分辨率为vga(预览/拍照/录像) 注意:系统自带的快拍APP就在这里查找分辨率参数发送到camera的HAL层。 这里得分辨率设置为:拍照1600x1200,预览640x480 驱动里面搜索可以设置为:1600x1200, 1280x720(花屏), 800x600(分辨率不能切换到这里), 640x480 提取分辨率的小知识: R:\wyb\gc2145_parrotv1.1_r16m\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\gc2145.c 搜索:_regs[] static struct regval_list sensor_default_regs[] = { (默认分辨率是VGA分辨率:640x480) /* 1600X1200 UXGA capture */ static struct regval_list sensor_uxga_regs[] ={ /* 800X600 SVGA,30fps*/ static struct regval_list sensor_svga_regs[] = //1280*720---init---/// static struct regval_list gc2145_hd720_regs[] = { R:\wyb\gc2145_parrotv1.1_r16m\android\device\softwinner\astar-evb30\configs\camera.cfg ;------------------------------------------------------------------------------- ; 用于camera的配置 ; ; 采用格式: ; key = key_value ; 注意: 每个key需要顶格写; ; key_value紧跟着key后面的等号后面, 位于同一行中; ; key_value限制大小为256字节以内; ; ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; exif information of "make" and "model" ;------------------------------------------------------------------------------- key_camera_exif_make = MAKE_A31S key_camera_exif_model = MODEL_A31ST ;------------------------------------------------------------------------------- ; 1 for single camera, 2 for double camera ;------------------------------------------------------------------------------- number_of_camera = 1 ;------------------------------------------------------------------------------- ; CAMERA_FACING_BACK ; gc0307 gc2145 ;------------------------------------------------------------------------------- camera_id = 0 ;------------------------------------------------------------------------------- ; 1 for CAMERA_FACING_FRONT ; 0 for CAMERA_FACING_BACK ;------------------------------------------------------------------------------- camera_facing = 0 ;------------------------------------------------------------------------------- ; 1 for camera without isp(using built-in isp of Axx) ; 0 for camera with isp ;------------------------------------------------------------------------------- use_builtin_isp = 0 ;------------------------------------------------------------------------------- ; camera orientation (0, 90, 180, 270) ;------------------------------------------------------------------------------- camera_orientation = 90 ;------------------------------------------------------------------------------- ; driver device name ;------------------------------------------------------------------------------- camera_device = /dev/video0 ;------------------------------------------------------------------------------- ; device id ; for two camera devices with one CSI ;------------------------------------------------------------------------------- device_id = 0 used_preview_size = 1 key_support_preview_size = 640x480 key_default_preview_size = 640x480 used_picture_size = 1 ;key_support_picture_size = 1600x1200, 1280x720, 800x600, 640x480 key_support_picture_size = 1600x1200, 640x480 key_default_picture_size = 640x480 used_flash_mode = 0 key_support_flash_mode = on,off,auto key_default_flash_mode = on used_color_effect=0 key_support_color_effect = none,mono,negative,sepia,aqua key_default_color_effect = none used_frame_rate = 1 key_support_frame_rate = 10 key_default_frame_rate = 10 used_focus_mode = 0 key_support_focus_mode = auto,infinity,macro,fixed,continuous-video,continuous-picture key_default_focus_mode = auto used_scene_mode = 0 key_support_scene_mode = auto,portrait,landscape,night,night-portrait,theatre,beach,snow,sunset,steadyphoto,fireworks,sports,party,candlelight,barcode key_default_scene_mode = auto used_white_balance = 0 key_support_white_balance = auto,incandescent,fluorescent,warm-fluorescent,daylight,cloudy-daylight key_default_white_balance = auto used_exposure_compensation = 1 key_max_exposure_compensation = 3 key_min_exposure_compensation = -3 key_step_exposure_compensation = 1 key_default_exposure_compensation = 0 2、在init.rc(init.sun8i.rc)中加载gc2145.ko这个驱动模块。 R:\wyb\gc2145_parrotv1.1_r16m\android\device\softwinner\astar-evb30\init.sun8i.rc #csi module insmod /system/vendor/modules/videobuf-core.ko insmod /system/vendor/modules/videobuf-dma-contig.ko insmod /system/vendor/modules/cam_detect.ko #insmod /system/vendor/modules/actuator.ko #insmod /system/vendor/modules/ad5820_act.ko insmod /system/vendor/modules/cci.ko insmod /system/vendor/modules/vfe_os.ko insmod /system/vendor/modules/vfe_subdev.ko #insmod /system/vendor/modules/gc0307.ko #insmod /system/vendor/modules/gc0308.ko #insmod /system/vendor/modules/ov2035.ko #insmod /system/vendor/modules/ov2640.ko #insmod /system/vendor/modules/ov5640.ko insmod /system/vendor/modules/gc2145.ko insmod /system/vendor/modules/vfe_v4l2.ko 启动之后实际加载的摄像头的驱动模块: shell@astar-evb30:/ $ shell@astar-evb30:/ $ lsmod gt82x 9849 0 - Live 0x00000000 sunxi_schw 12559 0 - Live 0x00000000 (O) rtl8150 9023 0 - Live 0x00000000 sunxi_keyboard 3021 0 - Live 0x00000000 sw_device 13916 0 - Live 0x00000000 uvcvideo 61212 0 - Live 0x00000000 videobuf2_vmalloc 2600 1 uvcvideo, Live 0x00000000 videobuf2_memops 2366 1 videobuf2_vmalloc, Live 0x00000000 videobuf2_core 18902 1 uvcvideo, Live 0x00000000 vfe_v4l2 445492 1 - Live 0x00000000 gc2145 12782 0 - Live 0x00000000 vfe_subdev 4523 2 vfe_v4l2,gc2145, Live 0x00000000 vfe_os 3951 2 vfe_v4l2,vfe_subdev, Live 0x00000000 cci 21775 2 vfe_v4l2,gc2145, Live 0x00000000 videobuf_dma_contig 5567 1 vfe_v4l2, Live 0x00000000 videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000 bcm_btlpm 7442 0 - Live 0x00000000 bcmdhd 629907 0 - Live 0x00000000 mali 210546 20 - Live 0x00000000 (O) lcd 41263 0 - Live 0x00000000 disp 992816 8 mali,lcd, Live 0x00000000 nand 282782 0 - Live 0x00000000 (O) shell@astar-evb30:/ $ 3、(可选操作)没有/dev/video1,只有/dev/video0 R:\wyb\gc2145_parrotv1.1_r16m\android\device\softwinner\astar-evb30\ueventd.sun8i.rc /dev/video0 0666 media media #/dev/video1 0666 media media 4、驱动程序:gc2145.c及其V4L2的适配层。 配置gc2145.c的编译选项,只需要修改device目录中的Makefile打开gc2145即可: R:\wyb\gc2145_parrotv1.1_r16m\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\gc2145.c (请严重注意,全志R16的parrotv1.1/android4.4.2的SDK里面是没有,只有android6.0下有) R:\wyb\gc2145_parrotv1.1_r16m\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\Makefile obj-m += gc2145.o obj-m += gc2155.o (这两个不用修改:) R:\wyb\test_ov2640_r16\lichee\linux-3.4\drivers\media\video\sunxi-vfe\Kconfig R:\wyb\test_ov2640_r16\lichee\linux-3.4\drivers\media\video\sunxi-vfe\Makefile R:\wyb\gc2145_parrotv1.1_r16m\lichee\linux-3.4\drivers\media\video\sunxi-vfe\sensor_info.c struct sensor_item sensor_list_t[] = { // name i2c_addr sensor type sensor size sensor max pclk (请参照OV2640/GC2155配置) { "gc2145" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "ov2640" , 0x60, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, …… }; 5、 R:\wyb\gc2145_parrotv1.1_r16m\lichee\tools\pack\chips\sun8iw5p1\configs\evb-30\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo2_vol = 2500 aldo3_vol = 3000 dldo3_vol = 3300 eldo1_vol = 2800 eldo2_vol = 1800 eldo3_vol = 1800 ;gldo1_vol = 3300 ldoio0_vol = 2800 ldoio1_vol = 3300 ;-------------------------------------------------------------------------------- ;vip (video input port) configuration ;vip_used: 0:disable 1:enable ;vip_mode: 0:sample one interface to one buffer 1:sample two interface to one buffer ;vip_dev_qty: The quantity of devices linked to capture bus ; ;vip_define_sensor_list: If you want use sensor detect function, please set vip_define_sensor_list = 1, and ; verify that file /system/etc/hawkview/sensor_list_cfg.ini is properly configured! ; ;vip_dev(x)_pos: sensor position, "rear" or "front", if vip_define_sensor_list = 1,vip_dev(x)_pos must be configured! ; ;vip_dev(x)_isp_used 0:not use isp 1:use isp ;vip_dev(x)_fmt: 0:yuv 1:bayer raw rgb ;vip_dev(x)_stby_mode: 0:not shut down power at standby 1:shut down power at standby ;vip_dev(x)_vflip: flip in vertical direction 0:disable 1:enable ;vip_dev(x)_hflip: flip in horizontal direction 0:disable 1:enable ;vip_dev(x)_iovdd: camera module io power handle string, pmu power supply ;vip_dev(x)_iovdd_vol: camera module io power voltage, pmu power supply ;vip_dev(x)_avdd: camera module analog power handle string, pmu power supply ;vip_dev(x)_avdd_vol: camera module analog power voltage, pmu power supply ;vip_dev(x)_dvdd: camera module core power handle string, pmu power supply ;vip_dev(x)_dvdd_vol: camera module core power voltage, pmu power supply ;vip_dev(x)_afvdd: camera module vcm power handle string, pmu power supply ;vip_dev(x)_afvdd_vol: camera module vcm power voltage, pmu power supply ;x indicates the index of the devices which are linked to the same capture bus ;fill voltage in uV, e.g. iovdd = 2.8V, vip_devx_iovdd_vol = 2800000 ;fill handle string as below: ;axp22_eldo3 ;axp22_dldo4 ;axp22_eldo2 ;fill handle string "" when not using any pmu power supply ;-------------------------------------------------------------------------------- [csi0] vip_used = 1 vip_mode = 0 vip_dev_qty = 1 vip_define_sensor_list = 0 vip_csi_pck = port:PE00<2><default><default><default> vip_csi_mck = port:PE01<2><default><default><default> vip_csi_hsync = port:PE02<2><default><default><default> vip_csi_vsync = port:PE03<2><default><default><default> vip_csi_d0 = port:PE04<2><default><default><default> vip_csi_d1 = port:PE05<2><default><default><default> vip_csi_d2 = port:PE06<2><default><default><default> vip_csi_d3 = port:PE07<2><default><default><default> vip_csi_d4 = port:PE08<2><default><default><default> vip_csi_d5 = port:PE09<2><default><default><default> vip_csi_d6 = port:PE10<2><default><default><default> vip_csi_d7 = port:PE11<2><default><default><default> vip_csi_sck = port:PE12<2><default><default><default> vip_csi_sda = port:PE13<2><default><default><default> vip_dev0_mname = "gc2145" vip_dev0_pos = "rear" vip_dev0_lane = 1 vip_dev0_twi_id = 2 vip_dev0_twi_addr = 0x78 vip_dev0_isp_used = 0 vip_dev0_fmt = 0 vip_dev0_stby_mode = 0 vip_dev0_vflip = 0 vip_dev0_hflip = 0 vip_dev0_iovdd = "" vip_dev0_iovdd_vol = 2800000 vip_dev0_avdd = "axp22_ldoio0" vip_dev0_avdd_vol = 2800000 vip_dev0_dvdd = "axp22_ldoio1" vip_dev0_dvdd_vol = 1800000 vip_dev0_afvdd = "" vip_dev0_afvdd_vol = 2800000 vip_dev0_power_en = vip_dev0_reset = port:PE14<1><default><default><0> vip_dev0_pwdn = port:PE15<1><default><default><1> vip_dev0_flash_en = vip_dev0_flash_mode = vip_dev0_af_pwdn = (可选配置:) ;---------------------------------------------------------------------------------- ;usb configuration ;usb_used: usb controller enable, 0-disable, 1-enable ;usb_port_type: usb mode: 0-device, 1-host, 2-otg ;usb_detect_type: usb hotplug detect mode, 0-none, 1-vbus/id detect, 2-id/dpdm detect ;usb_id_gpio: usb id detect IO ;usb_det_vbus_gpio: usb vbus detect IO, "axp_ctrl" for axp ;usb_drv_vbus_gpio: usb dirve vbus IO ;usb_restrict_gpio: usb current restrict IO ;usb_restric_flag: usb current restrict flag ;---------------------------------------------------------------------------------- [usbc0] usb_used = 1 usb_port_type = 0 power_start = 3 6、开发板上摄像头的I2C挂载在TWI2上面了,逻辑是需要打开的(但是不打开也能够用,很奇怪!): ;---------------------------------------------------------------------------------- ;i2c configuration ; twi_used = twix enable ;---------------------------------------------------------------------------------- [twi0] twi_used = 1 twi_scl = port:PH02<2><default><default><default> twi_sda = port:PH03<2><default><default><default> [twi1] twi_used = 1 twi_scl = port:PH04<2><default><default><default> twi_sda = port:PH05<2><default><default><default> [twi2] twi_used = 0 twi_scl = port:PE12<3><default><default><default> twi_sda = port:PE13<3><default><default><default> 直接配置摄像头的I2C了: vip_csi_sck = port:PE12<2><default><default><default> vip_csi_sda = port:PE13<2><default><default><default> 不过奇怪的是,摄像头并没有向其它平台那样生成设备节点: shell@astar-evb30:/ $ shell@astar-evb30:/ $ cd /sys/class/i2c-adapter shell@astar-evb30:/sys/class/i2c-adapter $ shell@astar-evb30:/sys/class/i2c-adapter $ shell@astar-evb30:/sys/class/i2c-adapter $ ll lrwxrwxrwx root root 1970-01-01 08:00 i2c-0 -> ../../devices/platform/twi.0/i2c-0 lrwxrwxrwx root root 1970-01-01 08:00 i2c-1 -> ../../devices/platform/twi.1/i2c-1 shell@astar-evb30:/sys/class/i2c-adapter $ 可能是全志R16的驱动程序不太规范吧!没有通过i2c_detect来注册2-003C这个节点。 直接在驱动程序中读取I2C,还是对的。0xF0/0xF1 device ID = 0x2145。 #define V4L2_IDENT_SENSOR 0x2145 /* * The gc2145 sits on i2c with ID 0x78 */ #define I2C_ADDR 0x78 #define SENSOR_NAME "gc2145"
全志A64平台点亮GC2145 2017/5/25 14:39 小技巧,直接在全志A64的SDK中搜索ov5640(默认是几乎通的),全部替换为gc2145即可。 1、 R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\configs\camera.cfg ;------------------------------------------------------------------------------- ; 用于camera的配置 ; ; 采用格式: ; key = key_value ; 注意: 每个key需要顶格写; ; key_value紧跟着key后面的等号后面, 位于同一行中; ; key_value限制大小为256字节以内; ; ;------------------------------------------------------------------------------- ;------------------------------------------------------------------------------- ; exif information of "make" and "model" ;------------------------------------------------------------------------------- key_camera_exif_make = MAKE_A64 key_camera_exif_model = MODEL_A64 ;------------------------------------------------------------------------------- ; 1 for single camera, 2 for double camera ;------------------------------------------------------------------------------- number_of_camera = 1 ;------------------------------------------------------------------------------- ; CAMERA_FACING_BACK ; ov5640 gc2145 ;------------------------------------------------------------------------------- camera_id = 0 ;------------------------------------------------------------------------------- ; 1 for CAMERA_FACING_FRONT ; 0 for CAMERA_FACING_BACK ;------------------------------------------------------------------------------- camera_facing = 0 ;------------------------------------------------------------------------------- ; 1 for camera without isp(using built-in isp of Axx) ; 0 for camera with isp ;------------------------------------------------------------------------------- use_builtin_isp = 0 ;------------------------------------------------------------------------------- ; camera orientation (0, 90, 180, 270) ;------------------------------------------------------------------------------- camera_orientation = 180 ;------------------------------------------------------------------------------- ; driver device name ;------------------------------------------------------------------------------- camera_device = /dev/video0 ;------------------------------------------------------------------------------- ; device id ; for two camera devices with one CSI ;------------------------------------------------------------------------------- device_id = 0 used_preview_size = 1 key_support_preview_size = 640x480 key_default_preview_size = 640x480 used_picture_size = 1 key_support_picture_size = 1600x1200, 1280x720, 800x600, 640x480 ;key_support_picture_size = 1600x1200, 640x480 key_default_picture_size = 640x480 used_flash_mode = 0 key_support_flash_mode = on,off,auto key_default_flash_mode = on used_color_effect = 1 key_support_color_effect = none,mono,negative,sepia,aqua key_default_color_effect = none used_frame_rate = 1 key_support_frame_rate = 30 key_default_frame_rate = 30 used_focus_mode = 1 key_support_focus_mode = auto,infinity,macro,fixed,continuous-video,continuous-picture key_default_focus_mode = auto used_scene_mode = 0 key_support_scene_mode = auto,portrait,landscape,night,night-portrait,theatre,beach,snow,sunset,steadyphoto,fireworks,sports,party,candlelight,barcode key_default_scene_mode = auto used_white_balance = 1 key_support_white_balance = auto,incandescent,fluorescent,warm-fluorescent,daylight,cloudy-daylight key_default_white_balance = auto used_exposure_compensation = 1 key_max_exposure_compensation = 3 key_min_exposure_compensation = -3 key_step_exposure_compensation = 1 key_default_exposure_compensation = 0 key_horizonal_view_angle = 48.6 key_vertical_view_angle = 37.0 used_zoom = 1 key_zoom_supported = true key_smooth_zoom_supported = false key_zoom_ratios = 100,120,150,200,230,250,300 key_max_zoom = 30 key_default_zoom = 0 2、 R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\init.sun50iw1p1.rc # csi module insmod /system/vendor/modules/videobuf2-core.ko insmod /system/vendor/modules/videobuf2-memops.ko insmod /system/vendor/modules/videobuf2-dma-contig.ko insmod /system/vendor/modules/vfe_io.ko insmod /system/vendor/modules/actuator.ko insmod /system/vendor/modules/dw9714_act.ko #insmod /system/vendor/modules/ov5640.ko insmod /system/vendor/modules/gc2145.ko insmod /system/vendor/modules/vfe_v4l2.ko 3、(可选操作:) R:\wyb\gc2145_bpi_a64_android\android\device\softwinner\bpi-m64-lcd\ueventd.sun50iw1p1.rc /dev/video0 0770 media media #/dev/video1 0770 media media 4、 R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\arch\arm64\boot\dts\sun50iw1p1.dtsi csi0:vfe@0 { device_type= "csi0"; compatible = "allwinner,sunxi-vfe"; interrupts = ;/*SUNXI_IRQ_CSI0 (SUNXI_GIC_START + 84 ) = 116*/ pinctrl-names = "default","sleep"; pinctrl-0 = ; pinctrl-1 = ; cci_sel = ; csi_sel = ; mipi_sel = ; isp_sel = ; csi0_sensor_list = ; csi0_mck = ; /*PE1 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/ status = "okay"; csi0_dev0:dev@0{ csi0_dev0_mname = "ov5640"; 修改为: csi0_dev0_mname = "gc2145"; csi0_dev0_twi_addr = ; csi0_dev0_pos = "rear"; csi0_dev0_isp_used = ; csi0_dev0_fmt = ; csi0_dev0_stby_mode = ; csi0_dev0_vflip = ; csi0_dev0_hflip = ; csi0_dev0_iovdd = "iovdd-csi"; csi0_dev0_iovdd_vol = ; csi0_dev0_avdd = "avdd-csi"; csi0_dev0_avdd_vol = ; csi0_dev0_dvdd = "dvdd-csi-18"; csi0_dev0_dvdd_vol = ; csi0_dev0_afvdd = ""; csi0_dev0_afvdd_vol = ; csi0_dev0_power_en = ; csi0_dev0_reset = ; /*PE14 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/ csi0_dev0_pwdn = ; /*PE15 .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0*/ csi0_dev0_flash_used = ; csi0_dev0_flash_type = ; csi0_dev0_flash_en = ; csi0_dev0_flash_mode = ; csi0_dev0_flvdd = "vdd-csi-led"; csi0_dev0_flvdd_vol = ; csi0_dev0_af_pwdn = ; csi0_dev0_act_used = ; csi0_dev0_act_name = "ad5820_act"; csi0_dev0_act_slave = ; status = "okay"; }; csi0_dev1:dev@1{ csi0_dev1_mname = ""; csi0_dev1_twi_addr = ; csi0_dev1_pos = "rear"; csi0_dev1_isp_used = ; csi0_dev1_fmt = ; csi0_dev1_stby_mode = ; csi0_dev1_vflip = ; csi0_dev1_hflip = ; csi0_dev1_iovdd = "iovdd-csi"; csi0_dev1_iovdd_vol = ; csi0_dev1_avdd = "avdd-csi"; csi0_dev1_avdd_vol = ; csi0_dev1_dvdd = "dvdd-csi-18"; csi0_dev1_dvdd_vol = ; csi0_dev1_afvdd = ""; csi0_dev1_afvdd_vol = ; csi0_dev1_power_en = ; csi0_dev1_reset = ; csi0_dev1_pwdn = ; csi0_dev1_flash_used = ; csi0_dev1_flash_type = ; csi0_dev1_flash_en = ; csi0_dev1_flash_mode = ; csi0_dev1_flvdd = "vdd-csi-led"; csi0_dev1_flvdd_vol = ; csi0_dev1_af_pwdn = ; csi0_dev1_act_used = ; csi0_dev1_act_name = "ad5820_act"; csi0_dev1_act_slave = ; status = "disabled"; }; }; 5、 R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\device\Makefile obj-m += ov5640.o obj-m += ov2640.o #obj-m += ov7736.o #obj-m += s5k4ec.o #obj-m += s5k4ec_mipi.o #obj-m += gc2035.o #obj-m += gt2005.o #obj-m += gc0307.o obj-m += gc0308.o #obj-m += gc0328.o #obj-m += gc0328c.o obj-m += gc2145.o #obj-m += gc0329.o #obj-m += gc0311.o #obj-m += hi253.o #obj-m += sp2518.o #obj-m += sp2519.o #obj-m += sp0718.o #obj-m += sp0838.o #obj-m += ov16825.o #obj-m += ov5650.o #obj-m += ov5647.o #obj-m += ov5647_mipi.o #obj-m += t8et5.o #obj-m += s5k4e1.o #obj-m += s5k4e1_mipi.o #obj-m += sp2518.o #obj-m += sp0718.o #obj-m += gc5004.o #obj-m += gc5004_mipi.o #obj-m += ov5648.o #obj-m += ar0330.o #obj-m += ov5648.o #obj-m += sp5408.o #obj-m += ov12830.o #obj-m += ov8825.o #obj-m += ov8850.o #obj-m += gc2155.o #obj-m += ov8858.o #obj-m += ov13850.o #obj-m += imx214.o #obj-m += ov8858_4lane.o #obj-m += sp5409.o #obj-m += s5k5e2yx.o #obj-m += ov2710_mipi.o #obj-m += ov2686.o 6、 R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\utility\sensor_info.c struct sensor_item sensor_list_t[] = { // name i2c_addr sensor type sensor size sensor max pclk { "ov2640" , 0x60, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "ov5640" , 0x78, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ov5647" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ov5647_mipi" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ov5650" , 0x50, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ov5648" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ov8825" , 0x6c, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M}, { "ov8850" , 0x20, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M}, { "ov12830" , 0x6c, SENSOR_RAW , PIXEL_NUM_12M , CORE_CLK_RATE_FOR_16M}, { "ov16825" , 0x6c, SENSOR_RAW , PIXEL_NUM_16M , CORE_CLK_RATE_FOR_16M}, { "gc0329" , 0x62, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0309" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0307" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0308" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc2035" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "gt2005" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "gc2015" , 0x60, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "gc2235" , 0x78, SENSOR_RAW , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "sp0838" , 0x30, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "sp0718" , 0x6c, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "sp2518" , 0x6c, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "hi253" , 0x40, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "hi257" , 0x40, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "s5k4ec" , 0x5a, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "s5k4ec_mipi" , 0x5a, SENSOR_YUV , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "s5k4e1" , 0x20, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "s5k4e1_mipi" , 0x20, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "t4k05" , 0x6c, SENSOR_RAW , PIXEL_NUM_8M , CORE_CLK_RATE_FOR_8M}, { "t8et5" , 0x78, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "ar0330" , 0x20, SENSOR_RAW , PIXEL_NUM_3M , CORE_CLK_RATE_FOR_3M}, { "bf3a03" , 0xDC, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0311" , 0x66, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0311" , 0x66, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc5004" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "gc5004_mipi" , 0x6c, SENSOR_RAW , PIXEL_NUM_5M , CORE_CLK_RATE_FOR_5M}, { "nt99252" , 0x6c, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "ov7736" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc2145" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "gc2155" , 0x78, SENSOR_YUV , PIXEL_NUM_2M , CORE_CLK_RATE_FOR_2M}, { "gc0328c" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, { "gc0328" , 0x42, SENSOR_YUV , PIXEL_NUM_0_3M , CORE_CLK_RATE_FOR_2M}, }; 7、 R:\wyb\gc2145_bpi_a64_android\lichee\linux-3.10\drivers\media\platform\sunxi-vfe\config.c struct ccm_config ccm0_def_cfg[] = { { .ccm = "ov5640", 修改为: .ccm = "gc2145", .twi_id = 1, .i2c_addr = 0x78, .is_isp_used = 0, .is_bayer_raw = 0, .vflip = 0, .hflip = 0, .iovdd_str = "", .avdd_str = "", .dvdd_str = "", .afvdd_str = "", .flvdd_str = "", .power = { .stby_mode = 1, .iovdd_vol =2800000, /* voltage of sensor module for interface */ .avdd_vol =2800000, /* voltage of sensor module for analog */ .dvdd_vol =1500000, /* voltage of sensor module for core */ .afvdd_vol =2800000, /* voltage of sensor module for vcm sink */ .flvdd_vol = 3300000,/* voltage of sensor module for flash led */ }, .gpio = { [MCLK_PIN] = {.gpio = GPIOE(1)/*129*/, .mul_sel = 1, .pull = 0, .drv_level = 1, .data = 0,}, [RESET] = {GPIOE(14)/*142*/, 1, 0, 1, 0,}, [PWDN] = {GPIOE(15)/*143*/, 1, 0, 1, 0,}, [POWER_EN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,}, [FLASH_EN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,}, [FLASH_MODE] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,}, [AF_PWDN] = {GPIO_INDEX_INVALID, 0, 0, 0, 0,}, }, .flash_used = 0, .flash_type = 0, .act_used = 0, .act_name = "ad5820_act", .act_slave = 0x18, }, }; R:\wyb\gc2145_bpi_a64_android\lichee\tools\pack\chips\sun50iw1p1\configs\bpi-m64-lcd\sys_config.fex ;-------------------------------------------------------------------------------- ;csi (COMS Sensor Interface) configuration ;csi(x)_dev(x)_used: 0:disable 1:enable ;csi(x)_dev(x)_isp_used 0:not use isp 1:use isp ;csi(x)_dev(x)_fmt: 0:yuv 1:bayer raw rgb ;csi(x)_dev(x)_stby_mode: 0:not shut down power at standby 1:shut down power at standby ;csi(x)_dev(x)_vflip: flip in vertical direction 0:disable 1:enable ;csi(x)_dev(x)_hflip: flip in horizontal direction 0:disable 1:enable ;csi(x)_dev(x)_iovdd: camera module io power handle string, pmu power supply ;csi(x)_dev(x)_iovdd_vol: camera module io power voltage, pmu power supply ;csi(x)_dev(x)_avdd: camera module analog power handle string, pmu power supply ;csi(x)_dev(x)_avdd_vol: camera module analog power voltage, pmu power supply ;csi(x)_dev(x)_dvdd: camera module core power handle string, pmu power supply ;csi(x)_dev(x)_dvdd_vol: camera module core power voltage, pmu power supply ;csi(x)_dev(x)_afvdd: camera module vcm power handle string, pmu power supply ;csi(x)_dev(x)_afvdd_vol: camera module vcm power voltage, pmu power supply ;fill voltage in uV, e.g. iovdd = 2.8V, csix_iovdd_vol = 2800000 ;fill handle string as below: ;axp22_eldo3 ;axp22_dldo4 ;axp22_eldo2 ;fill handle string "" when not using any pmu power supply ;-------------------------------------------------------------------------------- [csi0] csi0_used = 1 csi0_sensor_list = 1 修改为: csi0_sensor_list = 0 csi0_pck = port:PE00 csi0_mck = port:PE01 修改为: csi0_mck = port:PE01 csi0_hsync = port:PE02 csi0_vsync = port:PE03 csi0_d0 = port:PE04 csi0_d1 = port:PE05 csi0_d2 = port:PE06 csi0_d3 = port:PE07 csi0_d4 = port:PE08 csi0_d5 = port:PE09 csi0_d6 = port:PE10 csi0_d7 = port:PE11 csi0_sck = port:PE12 csi0_sda = port:PE13 [csi0/csi0_dev0] csi0_dev0_used = 1 csi0_dev0_mname = "ov5640" 修改为: csi0_dev0_mname = "gc2145" csi0_dev0_twi_addr = 0x78 csi0_dev0_pos = "rear" csi0_dev0_isp_used = 1 csi0_dev0_fmt = 0 csi0_dev0_stby_mode = 0 csi0_dev0_vflip = 1 csi0_dev0_hflip = 1 csi0_dev0_iovdd = "avdd-csi" csi0_dev0_iovdd_vol = 2800000 csi0_dev0_avdd = "avdd-csi" csi0_dev0_avdd_vol = 2800000 csi0_dev0_dvdd = "dvdd-csi-18" csi0_dev0_dvdd_vol = 1500000 csi0_dev0_afvdd = "avdd-csi" csi0_dev0_afvdd_vol = 2800000 csi0_dev0_power_en = csi0_dev0_reset = port:PE16 csi0_dev0_pwdn = port:PE17 csi0_dev0_flash_used = 0 csi0_dev0_flash_type = 2 csi0_dev0_flash_en = csi0_dev0_flash_mode = csi0_dev0_flvdd = "" csi0_dev0_flvdd_vol = csi0_dev0_af_pwdn = csi0_dev0_act_used = 1 csi0_dev0_act_name = "dw9714_act" csi0_dev0_act_slave = 0x18
UNICODE 全志R16平台TINAV2.1下的CSI接口摄像头ov5640的配置v1.2.txt R16_Camera模块开发说明文档_V1.8.pdf 所有步骤请按照这个说明书执行 1、驱动的编译配置: R:\wyb\gc2145_tinav2.1\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\gc2145.c R:\wyb\gc2145_tinav2.1\lichee\linux-3.4\drivers\media\video\sunxi-vfe\device\Makefile (可选操作,除了gc2145之外,其它的摄像头驱动都关闭,肯定可以减小最终生成的IMG的大小!) obj-m += ov5640.o obj-m += ov2640.o #obj-m += ov7736.o #obj-m += s5k4ec.o #obj-m += s5k4ec_mipi.o #obj-m += gc2035.o #obj-m += gt2005.o #obj-m += gc0307.o obj-m += gc0308.o #obj-m += gc0328.o #obj-m += gc0328c.o #obj-m += gc0329.o #obj-m += gc0311.o #obj-m += hi253.o #obj-m += sp2518.o #obj-m += sp2519.o #obj-m += sp0718.o #obj-m += sp0838.o #obj-m += ov16825.o #obj-m += ov5650.o #obj-m += ov5647.o #obj-m += ov5647_mipi.o #obj-m += t8et5.o #obj-m += s5k4e1.o #obj-m += s5k4e1_mipi.o #obj-m += sp2518.o #obj-m += sp0718.o #obj-m += gc5004.o #obj-m += gc5004_mipi.o #obj-m += ov5648.o #obj-m += ar0330.o #obj-m += ov5648.o #obj-m += sp5408.o #obj-m += ov12830.o #obj-m += ov8825.o #obj-m += ov8850.o #obj-m += gc2155.o obj-m += gc2145.o obj-m += gc2145d.o #obj-m += ov8858.o #obj-m += ov13850.o #obj-m += imx214.o #obj-m += ov8858_4lane.o #obj-m += sp5409.o #obj-m += s5k5e2yx.o #obj-m += ov2710_mipi.o #obj-m += siv121d.o #obj-m += ov2710_mipi.o #obj-m += bg0703.o #obj-m += gc1014_mipi.o #obj-m += imx219.o #obj-m += imx224.o #obj-m += imx322.o #obj-m += ov8858_r2a_4lane.o #obj-m += ov8865_4lane.o #obj-m += ps1210.o #obj-m += imx291.o 2、R:\wyb\gc2145_tinav2.1\lichee\linux-3.4\drivers\media\video\sunxi-vfe\vfe.c 这里修正之后就一切正常了。不然摄像头在系统启动之后就永远休眠了。 static void probe_work_handle(struct work_struct *work) { …… #ifdef CONFIG_ES dev->early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB + 1; dev->early_suspend.suspend = vfe_early_suspend; dev->early_suspend.resume = vfe_late_resume; // [hawkview_err]xxxxcan't open /dev/video0(Resource temporarily unavailable) // 2016/10/25 14:33 wenyuanbo cloase suspend. // register_early_suspend(&dev->early_suspend); vfe_print("register_early_suspend @ probe handle!\n"); #endif …… } 3、请严重注意:全志原生提供的cameratest有点错误(和tinav1.0对比得知:保存获取图片的文件名有小错误) R:\wyb\gc2145_tinav2.1\package\allwinner\cameratest\src\common\hawkview.c int fetch_sub_cmd(const char* buf,int buf_len,char** cmd,int* cmd_num,int lenght) { int i = 0,j = 0,n = 0; while(buf[i] != '#'){ //the sub cmd end by '#' while(buf[i] != 'x' && buf[i] != ':' && buf[i] != '#') { if((i+1) > buf_len) return 0; *((char*)cmd + n*lenght + j++) = buf[i++]; …… } R:\wyb\gc2145_tinav2.1\package\allwinner\cameratest\src\common\video.c static int capture_frame(void* capture,int (*set_disp_addr)(int,int,unsigned int*),pthread_mutex_t* mutex) { …… //sync capture info perp x second #define M_SECOND 200 if(is_x_msec(M_SECOND,(long long)(buf.timestamp.tv_sec),(long long)(buf.timestamp.tv_usec))){ getExifInfo(&(cap->frame.exif)); (建议关闭这里) // set_cap_info((void*)cap); } …… } R:\wyb\gc2145_tinav2.1\package\allwinner\cameratest\src\common\video_helper.c int set_cap_info(void* capture) { …… (修改这里) //strcpy(file_path, "dev/info"); sprintf(file_path, "%s/%s.info", PATH, cap->picture.path_name); …… } int do_save_sub_image(void* capture,int buf_index) { …… (增加这里) set_cap_info(capture); set_exif_info(capture); hv_dbg("--------set_exif_info end\n"); …… } 4、配置为在系统启动的时候加载gc2145.ko(SDK默认加载的是gc0308.ko) R:\wyb\gc2145_tinav2.1\target\allwinner\astar-common\modules.mk define KernelPackage/sunxi-vfe SUBMENU:=$(VIDEO_MENU) TITLE:=sunxi-vfe support FILES:=$(LINUX_DIR)/drivers/media/video/videobuf-core.ko FILES+=$(LINUX_DIR)/drivers/media/video/videobuf-dma-contig.ko FILES+=$(LINUX_DIR)/drivers/media/video/sunxi-vfe/csi_cci/cci.ko FILES+=$(LINUX_DIR)/drivers/media/video/sunxi-vfe/vfe_os.ko FILES+=$(LINUX_DIR)/drivers/media/video/sunxi-vfe/vfe_subdev.ko (修改这里) FILES+=$(LINUX_DIR)/drivers/media/video/sunxi-vfe/device/gc2145.ko FILES+=$(LINUX_DIR)/drivers/media/video/sunxi-vfe/vfe_v4l2.ko (修改这里) AUTOLOAD:=$(call AutoLoad,90,videobuf-core videobuf-dma-contig cci vfe_os vfe_subdev gc2145 vfe_v4l2) endef 5、直接使用了tinav1.0上调通ov5640后的sys_config.fex (请注意:这里修改的电源部分,其他没有用到的设备都请关闭掉。请参照您的原理图修改摄像头的供电部分!!!!) R:\wyb\gc2145_tinav2.1\target\allwinner\astar-parrot\configs\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo2_vol = 2500 aldo3_vol = 3000 (这里是增加的电源部分:) dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 [csi0] vip_used = 1 vip_mode = 0 vip_dev_qty = 1 vip_define_sensor_list = 0 vip_csi_pck = port:PE00 vip_csi_mck = port:PE01 vip_csi_hsync = port:PE02 vip_csi_vsync = port:PE03 vip_csi_d0 = port:PE04 vip_csi_d1 = port:PE05 vip_csi_d2 = port:PE06 vip_csi_d3 = port:PE07 vip_csi_d4 = port:PE08 vip_csi_d5 = port:PE09 vip_csi_d6 = port:PE10 vip_csi_d7 = port:PE11 ;vip_csi_sck = port:PE12 ;vip_csi_sda = port:PE13 ;vip_dev0_mname = "gc0308" ;vip_dev0_mname = "ov5640" vip_dev0_mname = "gc2145" vip_dev0_pos = "rear" vip_dev0_lane = 1 vip_dev0_twi_id = 2 ;vip_dev0_twi_addr = 0x42 vip_dev0_twi_addr = 0x78 vip_dev0_isp_used = 0 vip_dev0_fmt = 0 (2017/4/6 11:41 wenyuanbo 调试的时候这里设置为0方便测量摄像头的供电部分^_) ;vip_dev0_stby_mode = 1 vip_dev0_stby_mode = 0 vip_dev0_vflip = 0 vip_dev0_hflip = 0 vip_dev0_iovdd = "axp22_dldo3" vip_dev0_iovdd_vol = 2800000 vip_dev0_avdd = "" vip_dev0_avdd_vol = 2800000 vip_dev0_dvdd = "" vip_dev0_dvdd_vol = 1800000 vip_dev0_afvdd = "" vip_dev0_afvdd_vol = 2800000 vip_dev0_power_en = vip_dev0_reset = port:PE14 vip_dev0_pwdn = port:PE15 vip_dev0_flash_en = vip_dev0_flash_mode = vip_dev0_af_pwdn = (这个可以不改。不需要支持OTG功能。) ;usb_port_type: usb mode: 0-device, 1-host, 2-otg …… [usbc0] usb_used = 1 ;usb_port_type = 2 usb_port_type = 0 (!!!!解决重启的问题) [pmu1_para] …… ;power_start = 0 power_start = 3 pmu_temp_enable = 0 6、第一次编译之后,再次配置: 10、在menuconfig中打开sunxi-vfe support rootroot@rootroot-E400:~/wyb/gc2145_tinav2.1$ pwd /home/rootroot/wyb/gc2145_tinav2.1 rootroot@rootroot-E400:~/wyb/gc2145_tinav2.1$ source build/envsetup.sh including target/allwinner/tulip-d1/vendorsetup.sh including target/allwinner/octopus-dev/vendorsetup.sh including target/allwinner/azalea-perf3/vendorsetup.sh including target/allwinner/octopus-sch/vendorsetup.sh including target/allwinner/azalea-evb/vendorsetup.sh including target/allwinner/azalea-perf2/vendorsetup.sh including target/allwinner/astar-parrot/vendorsetup.sh including target/allwinner/generic/vendorsetup.sh including target/allwinner/astar-spk/vendorsetup.sh including target/allwinner/azalea-perf1/vendorsetup.sh including target/allwinner/astar-evb/vendorsetup.sh rootroot@rootroot-E400:~/wyb/gc2145_tinav2.1$ lunch You're building on Linux Lunch menu... pick a combo: 1. tulip_d1-tina 2. tulip_d1-dragonboard 3. octopus_dev-tina 4. octopus_dev-dragonboard 5. azalea_perf3-tina 6. azalea_perf3-dragonboard 7. octopus_sch-tina 8. octopus_sch-dragonboard 9. azalea_evb-tina 10. azalea_evb-dragonboard 11. azalea_perf2-tina 12. azalea_perf2-dragonboard 13. astar_parrot-tina 14. astar_parrot-dragonboard 15. astar_spk-tina 16. astar_spk-dragonboard 17. azalea_perf1-tina 18. azalea_perf1-dragonboard 19. astar_evb-tina Which would you like?13 ============================================ PLATFORM_VERSION_CODENAME=Neptune PLATFORM_VERSION=2.0.0 TARGET_PRODUCT=astar_parrot TARGET_BUILD_VARIANT=tina TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon TARGET_CPU_VARIANT=cortex-a7 TARGET_2ND_ARCH= TARGET_2ND_ARCH_VARIANT= TARGET_2ND_CPU_VARIANT= HOST_ARCH=x86_64 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=57513AA3 OUT_DIR= ============================================ rootroot@rootroot-E400:~/wyb/gc2145_tinav2.1$ make -j8 rootroot@rootroot-E400:~/wyb/gc2145_tinav2.1$ make menuconfig Kernel modules ---> Video Support ---> kmod-sunxi-vfe......................................... sunxi-vfe support 7、编译打包刷机之后的串口(debug口的)打印信息:: rootroot@cm-System-Product-Name:/home/rediron/r16/gc2145_tinav2.1$ cp .config bak2_vfe.config rootroot@rootroot-virtual-machine:~/wyb/opencv3.1_r16_tinav2.1$ make -j8 rootroot@rootroot-virtual-machine:~/wyb/opencv3.1_r16_tinav2.1$ pack -d 验证gc2145的驱动是否正常加载: Xshell 5 (Build 0964) Copyright (c) 2002-2016 NetSarang Computer, Inc. All rights reserved. Type `help' to learn how to use Xshell prompt. [c:\~]$ Connecting to COM3... Connected. BusyBox v1.24.1 () built-in shell (ash) _____ _ __ _ |_ _||_| ___ _ _ | | |_| ___ _ _ _ _ | | _ | || | | |__ | || || | ||_'_| | | | || | || _ | |_____||_||_|_||___||_,_| |_| |_||_|_||_|_| Tina is Based on OpenWrt! ---------------------------------------------- Tina Linux (Neptune, 57513AA3) ---------------------------------------------- root@TinaLinux:/# root@TinaLinux:/# cd /dev root@TinaLinux:/dev# ll v* crw-r--r-- 1 root root 7, 0 Jan 2 08:02 vcs crw-r--r-- 1 root root 7, 1 Jan 2 08:02 vcs1 crw-r--r-- 1 root root 7, 128 Jan 2 08:02 vcsa crw-r--r-- 1 root root 7, 129 Jan 2 08:02 vcsa1 crw-r--r-- 1 root root 10, 54 Jan 2 08:02 vhci crw-r--r-- 1 root root 81, 0 Jan 2 08:02 video0 root@TinaLinux:/# lsmod bcmdhd 534841 0 cci 19880 2 gc2145 gc2145 11234 0 snd_mixer_oss 11252 1 snd_pcm_oss snd_pcm_oss 29795 0 snd_seq_device 3927 0 vfe_os 3065 2 vfe_v4l2 vfe_subdev 3941 2 vfe_v4l2 vfe_v4l2 335707 0 videobuf_core 12030 2 vfe_v4l2 videobuf_dma_contig 2553 1 vfe_v4l2 root@TinaLinux:/# root@TinaLinux:/dev# cd /sys/class/i2c-adapter/i2c- i2c-0/ i2c-1/ i2c-2/ root@TinaLinux:/dev# cd /sys/class/i2c-adapter/i2c-2 root@TinaLinux:/sys/devices/platform/twi.2/i2c-2# ll drwxr-xr-x 4 root root 0 Jan 2 08:02 . drwxr-xr-x 4 root root 0 Jan 2 08:02 .. drwxr-xr-x 3 root root 0 Jan 2 08:04 2-003c --w------- 1 root root 4096 Jan 2 08:04 delete_device lrwxrwxrwx 1 root root 0 Jan 2 08:04 device -> ../../twi.2 -r--r--r-- 1 root root 4096 Jan 2 08:04 name --w------- 1 root root 4096 Jan 2 08:04 new_device drwxr-xr-x 2 root root 0 Jan 2 08:04 power lrwxrwxrwx 1 root root 0 Jan 2 08:04 subsystem -> ../../../../bus/i2c -rw-r--r-- 1 root root 4096 Jan 2 08:04 uevent root@TinaLinux:/sys/devices/platform/twi.2/i2c-2# cd 2-003c root@TinaLinux:/sys/devices/platform/twi.2/i2c-2/2-003c# ll drwxr-xr-x 3 root root 0 Jan 2 08:04 . drwxr-xr-x 4 root root 0 Jan 2 08:02 .. lrwxrwxrwx 1 root root 0 Jan 2 08:04 driver -> ../../../../../bus/i2c/drivers/ov5640 -r--r--r-- 1 root root 4096 Jan 2 08:04 modalias -r--r--r-- 1 root root 4096 Jan 2 08:04 name drwxr-xr-x 2 root root 0 Jan 2 08:04 power lrwxrwxrwx 1 root root 0 Jan 2 08:04 subsystem -> ../../../../../bus/i2c -rw-r--r-- 1 root root 4096 Jan 2 08:04 uevent root@TinaLinux:/sys/devices/platform/twi.2/i2c-2/2-003c# cat name gc2145 root@TinaLinux:/sys/devices/platform/twi.2/i2c-2/2-003c# 获取YUV格式的图片: [ 19.184637] dhd_open: Exit ret=0 [ 22.716117] sndpcm_startup,l:1688,pa_vol:40 BusyBox v1.24.1 () built-in shell (ash) _____ _ __ _ |_ _||_| ___ _ _ | | |_| ___ _ _ _ _ | | _ | || | | |__ | || || | ||_'_| | | | || | || _ | |_____||_||_|_||___||_,_| |_| |_||_|_||_|_| Tina is Based on OpenWrt! ---------------------------------------------- Tina Linux (Neptune, 57513AA3) ---------------------------------------------- root@TinaLinux:/# root@TinaLinux:/# root@TinaLinux:/# pwd / root@TinaLinux:/# root@TinaLinux:/# root@TinaLinux:/# root@TinaLinux:/# cameratest [hawkview_dbg]hawkview_init set_w 1280 [hawkview_msg]----sunxi9iw1p1 capture register sucessfully! [hawkview_dbg]hawkview_init 2 [hawkview_dbg]video pthread_create ret:0 [hawkview_dbg]video thread status 0 --> 101 [hawkview_dbg]command pthread_create ret:0 (等待输入需要获取的YUV图片的分辨率:) [hawkview_dbg]read cmd [ 181.303764] [VFE]vfe_open 146:0:1:1600x1200# [hawkview_[ 181.308582] [VFE]..........................vfe clk open!....................... dbg]cmd 0: 146 [hawkview_dbg]cm[ 181.319592] [VFE]vfe_open ok d 1: 0 [hawkview_dbg]cmd 2: 1 [hawkview_dbg]cmd 3: 1600 [hawkview_dbg]cmd 4: 1200 [hawkview_dbg]send command 146 [hawkview_dbg]video thread cmd: 0 --> 146 [hawkview_dbg]reset video capture [hawkview_msg]----open /dev/video0 [hawkview_msg]----get sensor type: 0 [ 182.325602] [VFE_ERR]set input i(1)>dev_qty(1)-1 error! [hawkview_err]xxxxVIDIOC_S_INPUT[ 182.331594] [VFE]Set vfe core clk = 108000000, after Set vfe core clk = 99000000 failed! s_input: 1 [ 182.366903] [VFE]mclk on [ 182.393862] [CSI][GC2145]enable oe! [ 182.398584] [CSI][GC2145]V4L2_IDENT_SENSOR=2145[hawkview_msg]----the tried size [ 182.875861] [VFE]buffer_setup, buffer count=10, size=2884096 is 1600x1200,the supported size is 1600x1200! [hawkview_dbg]map buffer index: 0, mem: b6bc8000, len: 2c0200, offset: 0 [hawkview_dbg]map buffer index: 1, mem: b6907000, len: 2c0200, offset: 2c1000 [hawkview_dbg]map buffer index: 2, mem: b6646000, len: 2c0200, offset: 582000 [hawkview_dbg]map buffer index: 3, mem: b6385000, len: 2c0200, offset: 843000 [hawkview_dbg]map buffer index: 4, mem: b60c4000, len: 2c0200, offset: b04000 [hawkview_dbg]map buffer index: 5, mem: b5e03000, len: 2c0200, offset: dc5000 [hawkview_dbg]map buffer index: 6, mem: b5b42000, len: 2c0200, offset: 1086000 [hawkview_dbg]map buffer index: 7, mem: b5881000, len: 2c0200, offset: 1347000 [hawkview_dbg]map buffer index: 8, mem: b55c0000, len: 2c0200, offset: 1608000 [hawkview_dbg]map buffer index: 9, mem: b52ff000, len: 2c0200, offset: 18c9000 [hawkview_dbg]video thread status 101 --> 102 [hawkview_dbg]capture frame command -1 --> 161 [hawkview_dbg]capture frame status -1 --> 0 [hawkview_dbg]capture start streaming [hawkview_dbg]capture frame command 161 --> 0 [hawkview_dbg]capture frame status 0 --> 1 [ 183.030025] [VFE]capture video mode! [ 183.132659] [VFE]capture video first frame done! (等待输入希望获取的YUV图片的文件名:) [hawkview_dbg]read cmd 149:color1013.yuv# [hawkview_dbg]cmd 0: 149 [hawkview_dbg]cmd 1: color1013.yuv [hawkview_dbg]send command 149 [hawkview_dbg]index: 3 buffers[buf.index].start = 0xb6385000 [hawkview_dbg]image_name: /tmp/color1013.yuv [hawkview_err]xxxxOpen sync file error[hawkview_dbg]image exif info: image_name = color1013.yuv width = 1600 height = 1200 exp_time_num = 0 exp_time_den = 0 sht_speed_num = 0 sht_speed_den = 0 fnumber = 0 exp_bias = 0 foc_length = 0 iso_speed = 0 flash_fire = 0 brightness = 0 # [hawkview_dbg]--------set_exif_info end (全志没有设置结束按键,只有按ctrl+C组合按键结束程序) ^C[ 270.859423] [VFE]vfe_close [ 270.862589] [CSI][GC2145]disalbe oe! [ 270.878791] [VFE]mclk off [ 270.893865] [VFE]..........................vfe clk close!....................... [ 270.902299] [VFE]vfe_close end root@TinaLinux:/# 8、在电脑的命令行中使用adb shell: Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>adb shell BusyBox v1.24.1 () built-in shell (ash) _____ _ __ _ |_ _||_| ___ _ _ | | |_| ___ _ _ _ _ | | _ | || | | |__ | || || | ||_'_| | | | || | || _ | |_____||_||_|_||___||_,_| |_| |_||_|_||_|_| Tina is Based on OpenWrt! ---------------------------------------------- Tina Linux (Neptune, 57513AA3) ---------------------------------------------- root@TinaLinux:/# cd tmp cd tmp root@TinaLinux:/tmp# ll ll drwxrwxrwt 9 root root 300 Jan 2 20:15 . drwxr-xr-x 1 root root 1024 Jan 2 20:15 .. drwx------ 2 root root 40 Jan 2 20:15 .uci -rw-r--r-- 1 root root 6 Jan 2 20:15 TZ -rw-r--r-- 1 root root 5 Jan 2 20:15 booting_state drwxrwxrwx 2 root root 40 Jan 2 20:15 lock drwxr-xr-x 2 root root 80 Jan 2 20:15 log lrwxrwxrwx 1 root root 21 Jan 2 20:15 resolv.conf -> /tmp/res olv.conf.auto -rw-r--r-- 1 root root 0 Jan 2 20:15 resolv.conf.auto drwxrwxrwx 2 root root 100 Jan 2 20:15 run drwxrwxrwt 2 root root 40 Jan 2 20:15 shm drwxrwxrwx 2 root root 60 Jan 2 20:15 state drwxr-xr-x 2 root root 40 Jan 2 20:15 tmp srwxr-xr-x 1 root root 0 Jan 2 20:15 wpa_ctrl_254-32 srwxr-xr-x 1 root root 0 Jan 2 20:15 wpa_ctrl_254-33 root@TinaLinux:/tmp# root@TinaLinux:/tmp# (1600x1200为您所希望获取的图片的分辨率,请根据您的需要来设置) root@TinaLinux:/tmp# echo "146:0:1:1600x1200#" > command echo "146:0:1:1600x1200#" > command (color1013.yuv为您希望保存yuv图像的文件名) root@TinaLinux:/tmp# echo "149:color1013.yuv#" > command echo "149:color1013.yuv#" > command root@TinaLinux:/tmp# ll ll drwxrwxrwt 9 root root 360 Jan 2 20:19 . drwxr-xr-x 1 root root 1024 Jan 2 20:15 .. drwx------ 2 root root 40 Jan 2 20:15 .uci -rw-r--r-- 1 root root 6 Jan 2 20:15 TZ -rw-r--r-- 1 root root 5 Jan 2 20:15 booting_state -rw-r--r-- 1 root root 1000 Jan 2 20:19 color1013.yuv.exif -rw-rw-rw- 1 root root 19 Jan 2 20:19 command drwxrwxrwx 2 root root 40 Jan 2 20:15 lock drwxr-xr-x 2 root root 80 Jan 2 20:15 log lrwxrwxrwx 1 root root 21 Jan 2 20:15 resolv.conf -> /tmp/res olv.conf.auto -rw-r--r-- 1 root root 0 Jan 2 20:15 resolv.conf.auto drwxrwxrwx 2 root root 100 Jan 2 20:15 run drwxrwxrwt 2 root root 40 Jan 2 20:15 shm drwxrwxrwx 2 root root 60 Jan 2 20:15 state drwxr-xr-x 2 root root 40 Jan 2 20:15 tmp srwxr-xr-x 1 root root 0 Jan 2 20:15 wpa_ctrl_254-32 srwxr-xr-x 1 root root 0 Jan 2 20:15 wpa_ctrl_254-33 -rw-r--r-- 1 root root 2880000 Jan 2 20:19 yuvcolor1013.yuv 可以再开一个adb窗口,adb可以开很多个的^_ Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>cd C:\tmp_gc2145 C:\tmp_gc2145>dir 驱动器 C 中的卷是 WIN7B64 卷的序列号是 C43E-FFB3 C:\tmp_gc2145 的目录 2017/05/23 17:04 . 2017/05/23 17:04 .. 0 个文件 0 字节 2 个目录 21,963,571,200 可用字节 获取图片:(这里使用了简单粗暴的方法,全部拿出来了。) C:\tmp_gc2145>adb pull /tmp/ . pull: building file list... skipping special file 'wpa_ctrl_254-33' skipping special file 'wpa_ctrl_254-32' skipping special file 'resolv.conf' skipping special file 'ubus.sock' pull: /tmp/log/wtmp -> ./log/wtmp pull: /tmp/log/lastlog -> ./log/lastlog pull: /tmp/state/network -> ./state/network pull: /tmp/run/config.md5 -> ./run/config.md5 pull: /tmp/run/ntpd.pid -> ./run/ntpd.pid pull: /tmp/booting_state -> ./booting_state pull: /tmp/resolv.conf.auto -> ./resolv.conf.auto pull: /tmp/TZ -> ./TZ pull: /tmp/command -> ./command pull: /tmp/color1013.yuv.exif -> ./color1013.yuv.exif pull: /tmp/yuvcolor1013.yuv -> ./yuvcolor1013.yuv 11 files pulled. 0 files skipped. 8820 KB/s (2881342 bytes in 0.319s) C:\tmp_gc2145> (可选操作:) C:\tmp_gc2145>adb pull /tmp/yuvcolor1013.yuv c:\ 现在激动人心的时刻到来了,你可以使用yuv看图工具:yuvplayer.exe 来查看你所获取的YUV格式的图片:yuvtest1013.yuv 请注意需要设置: YUV的格式设置:(NV12) 分辨率设置(1600x1200):请以您的实际分辨率为准。 9、可能会用到的调试命令: dmesg ps -aux ps -e 10、可选的改进(可以不修改的): R:\wyb\gc2145_tinav2.1\target\allwinner\generic\configs\env-3.4.cfg (uboot启动的时候延迟3秒钟) bootdelay=3 (SDK中已经修改了。调低打印等级,以便尽可能多的看到打印信息) loglevel=8
在Proteus平台上,使用8255A驱动发光二极管,可以实现来回双向流水点亮的效果。 首先,我们需要将8255A芯片添加到Proteus的工程中,通过连接相应的引脚。将发光二极管连接到8255A的输出引脚,以便控制其点亮。 然后,我们需要编写相应的程序来控制8255A芯片。我们可以通过数据线在程序中设置8255A芯片的模式和控制字。设置8255A的模式为模式1(单个8位I/O端口),控制字设置为使得8255A的端口A和端口B为输出端口。 接下来,我们需要编写一个循环程序来控制发光二极管的点亮。我们可以使用一个变量来控制LED灯的状态,从而实现来回双向流水点亮的效果。 首先,我们将LED灯的状态设置为点亮状态。然后,我们将LED灯的状态传送到8255A芯片的输出端口A上,使其点亮。接着,我们等待一段时间,以保持LED灯点亮的状态。 然后,我们将LED灯的状态设置为熄灭状态。再次将LED灯的状态传送到8255A芯片的输出端口A上,使其熄灭。同样,我们等待一段时间,以保持LED灯熄灭的状态。 重复上述步骤,我们可以实现LED灯来回流水点亮的效果。通过调整等待时间的长短和传送给芯片的控制字,我们可以控制流水点亮的速度和节奏。 最后,我们可以在Proteus中仿真运行程序,观察发光二极管的点亮效果。通过调整程序和参数,我们可以实现不同的效果和模式,从而满足不同的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值