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


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-app 前后端调用实例 基于Springboot

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

怎么解决 Nginx反向代理加载速度慢?

Nginx反向代理加载速度慢可能由多种原因引起&#xff0c;以下是一些可能的解决方法&#xff1a; 1&#xff0c;网络延迟&#xff1a; 检查目标服务器的网络状况&#xff0c;确保其网络连接正常。如果目标服务器位于不同的地理位置&#xff0c;可能会有较大的网络延迟。考虑使用…

win10系统请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!的解决办法

很多学习网络的小伙伴&#xff0c;在下载安装eNSP后&#xff0c;打开程序跳出&#xff1a;请将eNSP相关应用程序添加到windows firewall的允许程序列表&#xff0c;并允许其在公用网络上运行! 是不是挺闹心的! 其实&#xff0c;原因是很简单&#xff0c;就是win10系统防火墙访…

本地git服务器的使用

Windows上使用&#xff1a; 首先要在windows开发机上生成密钥&#xff1a; 1.安装git&#xff0c;首先去git官网下载git&#xff0c;https://git-scm.com/downloads&#xff0c;下载.exe格式并安装。 2.从程序目录启动“Git Bash” 3.键入命令&#xff1a;ssh-keygen -t rsa -…

快速上手:探索Spring MVC的学习秘籍!

SpringMVC概述 1&#xff0c;SpringMVC入门案例1.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解…

YOLOv8主干改进 更换柱状神经网络RevCol

一、Reversible Column Networks论文 论文地址:2212.11696.pdf (arxiv.org) 二、Reversible Column Networks结构 Reversible Column Networks 是一种用于量子计算的新型结构。它由一系列可逆操作组成,可以在量子计算中进行高效的信息传递和处理,具有可扩展性、灵活性、…

HTML教程(2)——基础标签

一、HTML的元数据 <meta>标签定义关于 HTML 文档的元数据。元数据是关于数据的数据&#xff08;信息&#xff09;,其始终位于<html>元素内&#xff0c;通常用于指定字符集、页面描述、关键词、文档作者和视口设置&#xff1b; 元数据不会显示在页面上&#xff0c…

回顾2023在CSDN的足迹与2024展望

目录 一、关于博主 二、2023的历程 1、博客分类 2、年度创作数据 3、解锁勋章 4、主要的方向 二、技术感悟 1、技术深入 2、还是实践 三、展望2024 今天是2024年的第一天&#xff0c;告别2023年&#xff0c;让我们以全新的姿态&#xff0c;去迎接新的一年的挑战。2023年…

尝试读取挪威 3d radar数据

1 原因 挪威的三维探地雷达很有特色&#xff0c;步进频率采样&#xff0c;与传统的GPR很不同&#xff0c;一个天线就拥有N个天线的功能。很想看看他们采集的数据是否清晰。 之前浙大学报审稿审到华南理工用的他们这个雷达。 图像来自知乎&#xff1a;若侵权&#xff0c;请告…

Windows反调试技术学习

Windows反调试 前言元旦快乐&#xff01;&#xff01;&#xff01;通过 API 调用IsDebuggerPresentCheckRemoteDebuggerPresent&#xff08;NtQueryInformationProcess&#xff09;OutputDebugStringZwSetInformationThread&#xff08;ThreadHideFromDebugger&#xff09; 手动…

【华为机试】2023年真题B卷(python)-喊七的次数重排

一、题目 题目描述&#xff1a; 喊7是一个传统的聚会游戏&#xff0c;N个人围成一圈&#xff0c;按顺时针从1到N编号。 编号为1的人从1开始喊数&#xff0c;下一个人喊的数字为上一个人的数字加1&#xff0c;但是当将要喊出来的数字是7的倍数或者数字本身含有7的话&#xff0c;…

windows无命令升级降级node版本

1. node最新版本下载链接 点击最新下载链接&#xff0c;找到对应版本下载并解压 2. 通过命令where node找到node.exe位置 3. 将该位置的node.exe替换为下载解压的最新node.exe 4. 重新执行node -v查看版本 --------------------------------------------------------------…

ETLCloud X 明道云实现无缝数据连接

明道云作为一款云端协作工具&#xff0c;为企业提供高效的沟通、协作和数据分析服务。它可以实现企业内部沟通和协作的高效性和一体化&#xff0c;并提供数据分析功能&#xff0c;让企业能够更好地理解业务和决策。 一、传统方式同步数据的痛点 传统方式同步数据需要手动进行…

C语言学习----存储类别

存储类别 &#x1f33f;本文是C Primer Pluse 中文版第12章的部分内容整理 &#x1f331;主要是围绕C中作用域 链接 存储期 展开 &#xff0c;是后面进行多文件管理的基础~ &#x1f308;概要 &#x1f34e;明确对象 变量名 标识符的基本概念和含义 &#x1f350;作用域和链接描…

【LLM+RS】LLM在推荐系统的实践应用(华为诺亚)

note LLM用于推荐主要还是解决推荐系统加入open domain 的知识。可以基于具体推荐场景数据做SFT。学习华为诺亚-技术分享-LLM在推荐系统的实践应用。 文章目录 note一、背景和问题二、推荐系统中哪里使用LLM1. 特征工程2. 特征编码3. 打分排序 三、推荐系统中如何使用LLM四、挑…

Nexus私服简介及搭建(Linux3.62版本)

文章目录 一、Nexus的安装1、运行程序2、查看运行日志和初始密码3、启动配置文件的修改 二、Nexus的使用1、Nexus使用流程说明2、库类型说明2.1、maven-public库配置说明2.2、maven-central库配置说明 3、用户本地配置使用maven-public库3.1、禁用了匿名访问&#xff0c;额外需…

【JavaScript】复制文本到剪切板

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

鸿蒙 DevEco Studio 3.1 入门指南

本文主要记录开发者入门&#xff0c;从软件安装到项目运行&#xff0c;以及后续的学习 1&#xff0c;配置开发环境 1.1 下载安装包 官网下载链接 点击立即下载找到对应版版本 下载完成&#xff0c;按照提示默认安装即可 1.2 下载SDK及工具链 运行已安装的DevEco Studio&…

【Redis-02】Redis数据结构与对象原理 -上篇

Redis本质上是一个数据结构服务器&#xff0c;使用C语言编写&#xff0c;是基于内存的一种数据结构存储系统&#xff0c;它可以用作数据库、缓存或者消息中间件。 我们经常使用的redis的数据结构有5种&#xff0c;分别是&#xff1a;string(字符串)、list(列表)、hash(哈希)、s…

SparkStreaming与Kafka整合

1.3 SparkStreaming与Kafka整合 1.3.1 整合简述 kafka是做消息的缓存&#xff0c;数据和业务隔离操作的消息队列&#xff0c;而sparkstreaming是一款准实时流式计算框架&#xff0c;所以二者的整合&#xff0c;是大势所趋。 ​ 二者的整合&#xff0c;有主要的两大版本。 kaf…