【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399 camera驅(qū)動開發(fā)_第1頁
【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399 camera驅(qū)動開發(fā)_第2頁
【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399 camera驅(qū)動開發(fā)_第3頁
【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399 camera驅(qū)動開發(fā)_第4頁
【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399 camera驅(qū)動開發(fā)_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】如何進行RK3399camera驅(qū)動開發(fā)

如何進行RK3399camera驅(qū)動開發(fā),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面在下將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。Androidcamera驅(qū)動開發(fā)概述目前板子上有兩路mipirx,可以接雙攝像頭。DTS配置1、Enabled

isp&isp0

{

status

=

"okay";};&isp1

{

status

=

"okay";};&isp0_mmu

{

status

=

"okay";};&isp1_mmu

{

status

=

"okay";};&isp0

{

status

=

"okay";};&isp1

{

status

=

"okay";};&isp0_mmu

{

status

=

"okay";};&isp1_mmu

{

status

=

"okay";};2、Enabledmipi對應(yīng)的i2c&i2c1

{

status

=

"okay";};&i2c1

{

status

=

"okay";};camera驅(qū)動(默認(rèn)為OV9750)1、android驅(qū)動代碼路徑hardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A2、編譯生成的libisp_isi_drv_OV9750_A.so放置于/vendor/lib/hw3、cphardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A/calib/OV9750_A.xml

/vendor/etc/4、cphardware/rockchip/camera/Config/cam_board_rk3399.xml/vendor/etc/cam_board.xmlxml配置1、根據(jù)電路圖為camera上電,并配置rst,pdn,以下按mipi0配置電壓以及相關(guān)gpio,I2C通道(1),mipiphy通道(0),IO電壓1.8v、CORE電壓1.8v、模擬電壓:3.2v,具體請看電路圖、以及OV9750datasheet。Linuxcamera驅(qū)動開發(fā)概述RK3399Protoybrick

開發(fā)板分別帶有兩個MIPI,一個DVP攝像頭接口,MIPI支持最高4K拍照,并支持1080P30fps以上視頻錄制。此外,開發(fā)板還支持USB攝像頭。本文以

OV9750

攝像頭為例,講解在該開發(fā)板上的配置過程。配置原理由以下電路圖可知,兩路MIPI攝像頭連接的是不同的ISP和I2C通道。MIPI0:使用ISP0和I2C1,還需配置MIPI_MCLK0、MIPI_PDN、MIPI_RSTMIPI1:使用ISP1和I2C2,還需配置MIPI_MCLK_T2、JMIPI_PDN2、JMIPI_RST2DTS配置配置isp節(jié)點cif_isp0:

cif_isp@ff910000

{

compatible

=

"rockchip,rk3399-cif-isp";

rockchip,grf

=

<&grf>;

reg

=

<0x0

0xff910000

0x0

0x4000>,

<0x0

0xff968000

0x0

0x8000>;

reg-names

=

"register",

"dsihost-register";

clocks

=

<&cru

ACLK_ISP0_NOC>,

<&cru

ACLK_ISP0_WRAPPER>,

<&cru

HCLK_ISP0_NOC>,

<&cru

HCLK_ISP0_WRAPPER>,

<&cru

SCLK_ISP0>,

<&cru

SCLK_DPHY_RX0_CFG>,

<&cru

SCLK_CIF_OUT>,

<&cru

SCLK_CIF_OUT>,

<&cru

SCLK_MIPIDPHY_REF>;

clock-names

=

"aclk_isp0_noc",

"aclk_isp0_wrapper",

"hclk_isp0_noc",

"hclk_isp0_wrapper",

"clk_isp0",

"pclk_dphyrx",

"clk_cif_out",

"clk_cif_pll",

"pclk_dphy_ref";

interrupts

=

<GIC_SPI

43

IRQ_TYPE_LEVEL_HIGH

0>;

interrupt-names

=

"cif_isp10_irq";

power-domains

=

<&power

RK3399_PD_ISP0>;

rockchip,isp,iommu-enable

=

<1>;

iommus

=

<&isp0_mmu>;

status

=

"disabled";

};&isp0

{

status

=

"okay";

};

&isp0_mmu

{

status

=

"okay";

};&cif_isp0{rockchip,camera-modules-attached=<&camera0>;

status="okay";};cif_isp0:

cif_isp@ff910000

{

compatible

=

"rockchip,rk3399-cif-isp";

rockchip,grf

=

<&grf>;

reg

=

<0x0

0xff910000

0x0

0x4000>,

<0x0

0xff968000

0x0

0x8000>;

reg-names

=

"register",

"dsihost-register";

clocks

=

<&cru

ACLK_ISP0_NOC>,

<&cru

ACLK_ISP0_WRAPPER>,

<&cru

HCLK_ISP0_NOC>,

<&cru

HCLK_ISP0_WRAPPER>,

<&cru

SCLK_ISP0>,

<&cru

SCLK_DPHY_RX0_CFG>,

<&cru

SCLK_CIF_OUT>,

<&cru

SCLK_CIF_OUT>,

<&cru

SCLK_MIPIDPHY_REF>;

clock-names

=

"aclk_isp0_noc",

"aclk_isp0_wrapper",

"hclk_isp0_noc",

"hclk_isp0_wrapper",

"clk_isp0",

"pclk_dphyrx",

"clk_cif_out",

"clk_cif_pll",

"pclk_dphy_ref";

interrupts

=

<GIC_SPI

43

IRQ_TYPE_LEVEL_HIGH

0>;

interrupt-names

=

"cif_isp10_irq";

power-domains

=

<&power

RK3399_PD_ISP0>;

rockchip,isp,iommu-enable

=

<1>;

iommus

=

<&isp0_mmu>;

status

=

"disabled";

};&isp0

{

status

=

"okay";

};

&isp0_mmu

{

status

=

"okay";

};&cif_isp0{rockchip,camera-modules-attached=<&camera0>;

status="okay";};設(shè)置CPUMCLK引腳功能&pinctrl

{/*

*/

cam_mclk

{

cam_default_pins:

cam-default-pins

{

rockchip,pins

=

<2

11

RK_FUNC_3

&pcfg_pull_none>;

};

};

};&pinctrl

{/*

*/

cam_mclk

{

cam_default_pins:

cam-default-pins

{

rockchip,pins

=

<2

11

RK_FUNC_3

&pcfg_pull_none>;

};

};

};在i2c上配置camera節(jié)點,mipi0camera連接到i2c1上&i2c1

{

status

=

"okay";

/*

使能i2c1

*/

/*

*

一般寫成cameraX:camera-module@ID,其中X為序號,ID為camera的7bit

I2C地址

*

camera0表示節(jié)點名,綁定isp節(jié)點時,將camera0

attach到isp0

*/

camera0:

camera-module@10

{

status

=

"okay";

compatible

=

"omnivision,ov9750-v4l2-i2c-subdev";

reg

=

<0x10>;

/*

7bit

I2C地址

*/

device_type

=

"v4l2-i2c-subdev";

/*

無需修改

*/

clocks

=

<&cru

SCLK_CIF_OUT>;

/*

無需修改,時鐘源選擇

*/

clock-names

=

"clk_cif_out";

/*

無需修改,時鐘源名字

*/

pinctrl-names

=

"default";

/*

無需修改,通過pinctrl配置MCLK引腳

*/

pinctrl-0

=

<&cam_default_pins>;

/*

無需修改,與上文的pinctrl定義一致

*/

rockchip,pd-gpio

=

<&gpio4

RK_PD1

GPIO_ACTIVE_LOW>;

/*

PD管腳分配及有效電平

*/

rockchip,rst-gpio

=

<&gpio4

RK_PD2

GPIO_ACTIVE_LOW>;

/*

RST管腳分配及有效電平

*/

rockchip,camera-module-mclk-name

=

"clk_cif_out";

/*

無需修改

*/

rockchip,camera-module-facing

=

"back";

//前后置配置

rockchip,camera-module-name

=

"MDG001";

//Camera

模組名稱

rockchip,camera-module-len-name

=

"NONE";

//Camera

模組鏡頭

rockchip,camera-module-fov-h

=

"80";

//模組水平可視角度配置

rockchip,camera-module-fov-v

=

"65";

//模組垂直可視角度配置

rockchip,camera-module-orientation

=

<0>;

//模組角度設(shè)置

rockchip,camera-module-iq-flip

=

<0>;

//IQ

上下翻轉(zhuǎn)

rockchip,camera-module-iq-mirror

=

<0>;

//IQ

左右鏡像

//以上

2

個屬性控制攝像頭的效果參數(shù)鏡像配置,一般都是設(shè)置成

0,但是發(fā)現(xiàn)以下現(xiàn)象:拍攝白墻,圖片的上半部偏色與下半部偏色不一致,或者左右半部偏不一致,即可以將這2個屬性置成1。

rockchip,camera-module-flip

=

<1>;

rockchip,camera-module-mirror

=

<1>;

//以上

2

個屬性控制攝像頭驅(qū)動中的鏡像配置,如果圖像旋轉(zhuǎn)

180

度,可以將這

2

個屬性修改成相反的值即可旋轉(zhuǎn)

180。

rockchip,camera-module-defrect0

=

<1280

960

0

0

1280

960>;

//根據(jù)攝像頭分辨率進行設(shè)置

rockchip,camera-module-flash-support

=

<0>;

//閃光燈支持

rockchip,camera-module-mipi-dphy-index

=

<0>;

//mipi口配置,根據(jù)物理連接定義

as-master

=

<0>;

};};&i2c1

{

status

=

"okay";

/*

使能i2c1

*/

/*

*

一般寫成cameraX:camera-module@ID,其中X為序號,ID為camera的7bit

I2C地址

*

camera0表示節(jié)點名,綁定isp節(jié)點時,將camera0

attach到isp0

*/

camera0:

camera-module@10

{

status

=

"okay";

compatible

=

"omnivision,ov9750-v4l2-i2c-subdev";

reg

=

<0x10>;

/*

7bit

I2C地址

*/

device_type

=

"v4l2-i2c-subdev";

/*

無需修改

*/

clocks

=

<&cru

SCLK_CIF_OUT>;

/*

無需修改,時鐘源選擇

*/

clock-names

=

"clk_cif_out";

/*

無需修改,時鐘源名字

*/

pinctrl-names

=

"default";

/*

無需修改,通過pinctrl配置MCLK引腳

*/

pinctrl-0

=

<&cam_default_pins>;

/*

無需修改,與上文的pinctrl定義一致

*/

rockchip,pd-gpio

=

<&gpio4

RK_PD1

GPIO_ACTIVE_LOW>;

/*

PD管腳分配及有效電平

*/

rockchip,rst-gpio

=

<&gpio4

RK_PD2

GPIO_ACTIVE_LOW>;

/*

RST管腳分配及有效電平

*/

rockchip,camera-module-mclk-name

=

"clk_cif_out";

/*

無需修改

*/

rockchip,camera-module-facing

=

"back";

//前后置配置

rockchip,camera-module-name

=

"MDG001";

//Camera

模組名稱

rockchip,camera-module-len-name

=

"NONE";

//Camera

模組鏡頭

rockchip,camera-module-fov-h

=

"80";

//模組水平可視角度配置

rockchip,camera-module-fov-v

=

"65";

//模組垂直可視角度配置

rockchip,camera-module-orientation

=

<0>;

//模組角度設(shè)置

rockchip,camera-module-iq-flip

=

<0>;

//IQ

上下翻轉(zhuǎn)

rockchip,camera-module-iq-mirror

=

<0>;

//IQ

左右鏡像

//以上

2

個屬性控制攝像頭的效果參數(shù)鏡像配置,一般都是設(shè)置成

0,但是發(fā)現(xiàn)以下現(xiàn)象:拍攝白墻,圖片的上半部偏色與下半部偏色不一致,或者左右半部偏不一致,即可以將這2個屬性置成1。

rockchip,camera-module-flip

=

<1>;

rockchip,camera-module-mirror

=

<1>;

//以上

2

個屬性控制攝像頭驅(qū)動中的鏡像配置,如果圖像旋轉(zhuǎn)

180

度,可以將這

2

個屬性修改成相反的值即可旋轉(zhuǎn)

180。

ro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論