20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850
2023/12/28 12:30


开发板:Firefly的AIO-3399J【RK3399】
SDK:rk3399-android-11-r20211216.tar.xz【Android11】
Android11.0.tar.bz2.aa【ToyBrick】
Android11.0.tar.bz2.ab
Android11.0.tar.bz2.ac

https://wiki.t-firefly.com/AIO-3399J/prepare_compile_android.html
AIO-3399J产品规格书 立即购买
AIO-3399J 采用 RK3399 六核(A72x2+A53x4) 64 位处理器,主频高达1.8GHz,集成了四核 Mali-T860 GPU,性能优异。


1、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.bz2 
rootroot@rootroot-X99-Turbo:~/3TB$ mv Android11.0 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB$ cd 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 rockchip_defconfig android-11.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-firefly-aio.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ source build/envsetup.sh 
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ lunch
     42. rk3399_Android11-userdebug
Which would you like? [aosp_arm-eng] 42
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ 
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ ./build.sh -u


rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36


2、【这个不重要,可以不用修改!】
不知道是ov13850的对reset/pwdn引脚不重要,还是在驱动ov13850.c中另行配置!
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-aio.dtsi
&i2c1 {
    status = "okay";
    
    tc358749x: tc358749x@0f {
        compatible = "toshiba,tc358749x";
        #sound-dai-cells = <0>;
        reg = <0x0f>;
        power-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>; 
        reset-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
        int-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&hdmiin_gpios>;
        status = "disabled";
    };

    xc7160b: xc7160b@1b {
        status = "okay";
    };

    xc7160f: xc7160f@1b {
        status = "okay";
    };
    
    ov13850: ov13850@10 {
        status = "okay";
                avdd-supply = <&vcc_mipi>;
        power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
        pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;

        };

        //ov13850b: ov13850b@10 {
    //    status = "okay";
        //        avdd-supply = <&vcc_mipi>;
    //    power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        //        reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
        //        pwdn-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
        //};
        //
        //ov13850f: ov13850f@10 {
    //    status = "okay";
        //        avdd-supply = <&vcc_mipi>;
    //    power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        //        reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
        //        pwdn-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
        //};
};


2、
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-port.dtsi
&i2c1 {
    status = "okay";
    i2c-scl-rising-time-ns = <300>;
    i2c-scl-falling-time-ns = <15>;
    clock-frequency = <400000>;

    es8323: es8323@10 {
        compatible = "everest,es8323";
        reg = <0x10>;
        spk-ctl-gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
        clock-names = "mclk";
        clocks = <&cru SCLK_I2S_8CH_OUT>;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s_8ch_mclk>;
        #sound-dai-cells = <0>;
        extcon = <&rk_headset>;
        status = "disabled";
    };
    rt5640: rt5640@1c {
        #sound-dai-cells = <0>;
        compatible = "realtek,rt5640";
        reg = <0x1c>;
        clocks = <&cru SCLK_I2S_8CH_OUT>;
        clock-names = "mclk";
        realtek,in1-differential;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s_8ch_mclk>;
        //hp-con-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
        //hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
        io-channels = <&saradc 4>;
        hp-det-adc-value = <500>;
        status = "okay";
    };
    gti5801: gti5801@60 {
        compatible = "gyrfalcon,spr5801";
        reg = <0x60>;

        status = "disabled";
    };

    vm149c: vm149c@0c {
        compatible = "silicon touch,vm149c";
        status = "okay";
        reg = <0x0c>;
        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
    };

    ov13850: ov13850@10 {
        compatible = "ovti,ov13850";
        status = "okay";
        reg = <0x10>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        /* avdd-supply = <>; */
        /* dvdd-supply = <>; */
        /* dovdd-supply = <>; */
        reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
        pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;

        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;

        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
        rockchip,camera-module-name = "CMK-CT0116";
        rockchip,camera-module-lens-name = "Largan-50013A1";
        lens-focus = <&vm149c>;
        //flash-leds = <&sgm3784_led0 &sgm3784_led1>;

        port {
            ucam_out1: endpoint {
                //remote-endpoint = <&mipi_in_ucam0>;
                remote-endpoint = <&mipi_in_ucam1>;

                data-lanes = <1 2>;
            };
        };
    };


        xc7160b: xc7160b@1b {
                status = "disabled";
                compatible = "firefly,xc7160";
                reg = <0x1b>;
                clocks = <&cru SCLK_CIF_OUT>;
                clock-names = "xvclk";
                //avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
                //dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
                //dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
                reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "rockchip,camera_default";
                pinctrl-0 = <&cif_clkout>;
                firefly,clkout-enabled-index = <0>;
                rockchip,camera-module-index = <0>;
                rockchip,camera-module-facing = "back";
                rockchip,camera-module-name = "NC";
                rockchip,camera-module-lens-name = "NC";
                port {
                        xc7160b_out: endpoint { 
                                remote-endpoint = <&mipi_in_ucam2>;
                                data-lanes = <1 2 3 4>;
                        };
                };
        };

        xc7160f: xc7160f@1b {
                status = "disabled";
                compatible = "firefly,xc7160";
                reg = <0x1b>;
                clocks = <&cru SCLK_CIF_OUT>;
                clock-names = "xvclk";
                //avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
                //dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
                //dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
                reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "rockchip,camera_default";
                pinctrl-0 = <&cif_clkout>;
                firefly,clkout-enabled-index = <0>;
                rockchip,camera-module-index = <1>;
                rockchip,camera-module-facing = "front";
                rockchip,camera-module-name = "NC";
                rockchip,camera-module-lens-name = "NC";
                port {
                        xc7160f_out: endpoint {
                                remote-endpoint = <&mipi_in_ucam3>;
                                data-lanes = <1 2 3 4>;
                        };
                };
        };

        XC6130b: XC6130b@23{
            status = "disabled";
            compatible = "firefly,xc7022";
            reg = <0x23>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        //avdd-supply = <&vcc_mipi>;
        reset-gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;
        
        firefly,clkout-enabled-index = <0>;
        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
        rockchip,camera-module-name = "NC";
        rockchip,camera-module-lens-name = "NC";
        port {
                xc6130_out: endpoint {
                        remote-endpoint = <&mipi_in_ucam4>;
                        data-lanes = <1 2>;
                };
        };
        };
        XC7022b: XC7022b@1b{
                status = "disabled";
        compatible = "firefly,xc7022";
        reg = <0x1b>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        //avdd-supply = <&vcc_mipi>;
        reset-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;
        
        firefly,clkout-enabled-index = <0>;
        rockchip,camera-module-index = <1>;
        rockchip,camera-module-facing = "front";
        rockchip,camera-module-name = "NC";
        rockchip,camera-module-lens-name = "NC";
        port {
                xc7022_out: endpoint {
                        remote-endpoint = <&mipi_in_ucam5>;
                        data-lanes = <1 2>;
                };
        };
        };
};
&i2c1_xfer{
    rockchip,pins =
        <4 2 RK_FUNC_1 &pcfg_pull_up>,
        <4 1 RK_FUNC_1 &pcfg_pull_up>;
};

&mipi_dphy_rx0 {
        status = "okay";

        ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        //mipi_in_ucam0: endpoint@1 {
                        //        reg = <1>;
                        //        remote-endpoint = <&ucam_out0>;
                        //        data-lanes = <1 2>;
                        //};

                        mipi_in_ucam2: endpoint@2 {
                                reg = <2>;
                                remote-endpoint = <&xc7160b_out>;
                                data-lanes = <1 2 3 4>;
                        };
                        mipi_in_ucam4: endpoint@3 {
                                reg = <3>;
                                remote-endpoint = <&xc6130_out>;
                                data-lanes = <1 2>;
                        };
                };

                port@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        dphy_rx0_out: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&isp0_mipi_in>;
                        };
                };
        };
};

&mipi_dphy_tx1rx1 {
        status = "okay";

        ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        mipi_in_ucam1: endpoint@1 {
                                reg = <1>;
                                remote-endpoint = <&ucam_out1>;
                                data-lanes = <1 2>;
                        };

                        mipi_in_ucam3: endpoint@2 {
                                reg = <2>;
                                remote-endpoint = <&xc7160f_out>;
                                data-lanes = <1 2 3 4>;
                        };
                        mipi_in_ucam5: endpoint@3 {
                                reg = <3>;
                                remote-endpoint = <&xc7022_out>;
                                data-lanes = <1 2>;
                        };
                };

                port@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        dphy_tx1rx1_out: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&isp1_mipi_in>;
                        };
                };
        };
};


参考资料:
http://www.friendlyelec.com.cn/agent.asp
http://www.friendlyelec.com.cn/
https://download.friendlyelec.com/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4/zh#.E4.B8.8B.E8.BD.BDAndroid10.E6.BA.90.E4.BB.A3.E7.A0.81


https://item.taobao.com/item.htm?spm=a1z09.2.0.0.37562e8dcotDm6&id=570312633249&_u=7ju3ku004a
友善NanoPC-T4瑞芯微RK3399开发板ROS双摄4K播放开源AI智能安卓10

WiKi维基教程(固件介绍,使用说明,操作步骤等)
http://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
系统固件下载
https://dl.friendlyelec.com/nanopct4
原理图(pdf格式)
http://wiki.friendlyelec.com/wiki/images/e/e0/NanoPC-T4-1902-Schematic.pdf
尺寸图(dxf格式)
http://wiki.friendlyelec.com/wiki/images/b/bc/NanoPC-T4_1802_Drawing%28dxf%29.zip


http://www.friendlyelec.com.cn/nanopi-m4.asp
NanoPi M4 | NanoPi M4V2

https://wiki.friendlyelec.com/wiki/index.php/NanoPi_M4/zh
15.3 编译Android10源代码
15.3.1 下载Android10源代码
有以下两种途径获取 Android10 的源代码,都需要联网:

使用网盘里的git repo压缩包
网盘下载地址: 点击进入

https://download.friendlyelec.com/NanoPiM4
https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311342.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1入门C++编程——01 C++基础知识

文章目录 一、工具安装二、新建项目三、设置字体、注释、行号四、C基础知识1.数据类型2.输入输出3.运算符4.选择、循环结构5.跳转语句6.数组7.函数8.指针9.结构体 一、工具安装 学习C使用到的工具是Visual Studio&#xff0c;Visual Studio 2010旗舰版下载链接&#xff1a;点此…

【实用工具】Gradio快速部署深度学习应用1:图像分类

前言 在AI快速发展的今天&#xff0c;我们作为算法开发人员&#xff0c;也应该有一些趁手的工具帮助我们快速开发并验证自己的想法&#xff0c;Gradio可以实现快速搭建和共享的功能&#xff0c;能够展示出一个前端界面&#xff0c;把我们的算法包裹起来&#xff0c;快速验证算…

七、Redis 缓存 —— 超详细操作演示!

七、Redis 缓存 —— 超详细操作演示&#xff01; 七、Redis 缓存7.1 Jedis 客户端7.1.1 Jedis 简介7.1.2 创建工程7.1.3 使用 Jedis 实例7.1.4 使用 JedisPool7.1.5 使用 JedisPooled7.1.6 连接 Sentinel 高可用集群7.1.7 连接分布式系统7.1.8 操作事务 7.2 金融产品交易平台7…

2022.07.25 C++下使用opencv部署yolov7模型(五)

0.写在最前 此篇文字针对yolov7-1.0版本。 最近粗略的看了一遍yolov7的论文&#xff0c;关于yolov7和其他yolo系列的对比&#xff0c;咱就不多说了&#xff0c;大佬们的文章很多很详细。关于opencv部署方面&#xff0c;其实yolov7和yolov5的初期版本&#xff08;5.0以前的版本…

多维时序 | MATLAB实现SSA-CNN-GRU-SAM-Attention麻雀算法优化卷积网络结合门控循环单元网络融合空间注意力机制多变量时间序列预测

多维时序 | MATLAB实现SSA-CNN-GRU-SAM-Attention麻雀算法优化卷积网络结合门控循环单元网络融合空间注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现SSA-CNN-GRU-SAM-Attention麻雀算法优化卷积网络结合门控循环单元网络融合空间注意力机制多变量时间序列预测预测效…

费曼学习法应用:谈自私和教育的引导

今天这个还是来源于我和九迁的对话&#xff0c;起因是中午吃饭的时候&#xff0c;九迁在学校与班主任老师和数学老师对话中带来的思考。 先听音频&#xff1a; 对话内容&#xff08;以下内容可以边听边看&#xff0c;属于语音转换过来的文字&#xff0c;最后有个总结&#xff0…

【Java进阶篇】SimpleDateFormat是线程安全的吗? 使用时应该注意什么?

SimpleDateFormat是线程安全的吗?使用时应该注意什么? ✔️ 典型解析✔️拓展知识仓✔️SimpleDateFormat用法✔️日期和时间模式表达方法✔️输出不同时区的时间✔️SimpleDateFormat线程安全性✔️问题重现✔️线程不安全原因✔️如何解决✔️使用局部变量✔️加同步锁✔️…

HTML标签基础入门

HTML 基本语法概述标签关系HTML基础结构HTML常用标签标题标签示例 段落和换行标签示例 文本格式化标签示例 div和span标签示例 图像标签和路径示例 超链接标签示例 注释 ctrl/特殊字符示例 表格标签 表头单元格标签表格属性示例 合并单元格示例 列表标签无序列表有序列表自定义…

GRNdb:解码不同人类和小鼠条件下的基因调控网络

GRNdb&#xff1a;解码不同人类和小鼠条件下的基因调控网络 摘要introduction数据收集和处理Single-cell and bulk RNA-seq data collection and processing 单细胞和bulk RNA-seq 数据收集和处理Cell cluster identification for scRNA-seq datasets &#xff08;scRNA-seq 数…

Docker之镜像上传和下载

目录 1.镜像上传 1) 先上百度搜索阿里云 点击以下图片网站 2) 进行登录/注册 3) 使用支付宝...登录 4) 登录后会跳转到首页->点击控制台 5) 点击左上角的三横杠 6) 搜索容器镜像关键词->点击箭头所指 ​ 编辑 7) 进入之后点击实例列表 8) 点击个人实例进入我们的一个…

软件测试/测试开发丨Linux进阶命令(curl、jq)

1、 curl 接口请求 curl是一个发起请求数据给服务器的工具curl支持的协议FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSPcurl是一个非交互的工具 2、 curl 发起 get 请求 -G&#xff1a;使用get请求-d&#xf…

我在Vscode学OpenCV 图像处理四(轮廓查找 cv2.findContours() cv2.drawContours())-- 待补充

图像处理四&#xff08;轮廓查找&#xff09; 一、前言1.1 边缘检测和轮廓查找的区别是什么1.1.1 边缘检测&#xff1a;1.1.2 轮廓查找&#xff1a; 1.2 边缘检测和轮廓查找在图像处理中的关系和流程 二、查找并绘制轮廓2.1 cv2.findContours()&#xff1a;2.1.1 详细介绍&…