RK3568 Android12 RK628编译报错问题

2023-11-19

Platform: RK3568
OS: Android 12
Kernel: v4.19.206
SDK Version:android-12.0-mid-rkr1


问题

在dts中配置rk628时遇到编译报错,提示找不到rk628的label:

scripts/kconfig/conf --syncconfig Kconfig
DTC arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtb
CALL scripts/checksyscalls.sh
Error: ./scripts/dtc/include-prefixes/arm/rk628.dtsi:25.1-7 Label or path rk628 not found
Error: arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi:393.7-17 syntax error

FATAL ERROR: Unable to parse input tree
scripts/Makefile.lib:307: recipe for target ‘arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtb’ failed
make[1]: *** [arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtb] Error 1
arch/arm64/Makefile:145: recipe for target ‘rockchip/rk3568-evb1-ddr4-v10.dtb’ failed
make: *** [rockchip/rk3568-evb1-ddr4-v10.dtb] Error 2

解决方法

#include <arm/rk628.dtsi> 必须要放在rk628的定义之后

&i2c3 {
        clock-frequency = <400000>;
        status = "okay";

        rk628: rk628@50 {
                reg = <0x50>;
                interrupt-parent = <&gpio0>;
                interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
                enable-gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
                reset-gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;
                status = "okay";
        };  
};

#include <arm/rk628.dtsi>

&rk628_hdmi {
        status = "okay";

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

                port@0 {
                        reg = <0>;

简单分析

这个小问题却困扰了挺久,后来还是靠这篇文章1才解惑。
报错的主要原因是我把#include <arm/rk628.dtsi>放在dts头部位置了。
打开arch/arm/boot/dts/rk628.dtsi,可以看到这里是引用了&rk628节点,而该节点的定义是在我们dts的&i2c节点中实现的,根据dts的规范,节点要先定义后引用,是有顺序要求的,否则就会出现编译报错。

&rk628 {
        compatible = "rockchip,rk628";

        rk628_cru: cru {
                compatible = "rockchip,rk628-cru";
                #clock-cells = <1>;
                #reset-cells = <1>;
                status = "okay";
        };

        rk628_efuse: efuse {
                compatible = "rockchip,rk628-efuse";
                clocks = <&rk628_cru CGU_PCLK_EFUSE>;
                clock-names = "pclk";
                resets = <&rk628_cru RGU_EFUSE>;
                #phy-cells = <0>;
                status = "disabled";
        };

其实在rk 的参考dts中(如: rk3568-evb6-ddr3-v10-rk628-rgb2hdmi.dts)就是这么配置的,如果老老实实参考该配置就没有问题。但是我却自作主张,为了格式整洁把include写在了文件头部,自己造出了bug。还以为已经对dts的配置已经很熟悉了,看来还是要多修炼啊。

关于dts设备树的详细说明我找到了这些资料234,多看看还是很有收获的!


如有谬误欢迎指正,感谢阅读~

参考资料


  1. [RK3568 Android11] 开发之RK628D HDMI IN 显示一 ↩︎

  2. [RK3568 Android11] 教程之设备树DTS讲解 ↩︎

  3. Device Tree Usage ↩︎

  4. devicetree-specification-v0.4-rc1.pdf ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RK3568 Android12 RK628编译报错问题 的相关文章

  • 有关 OpenCL 内核编程的教程或书籍? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我认为这个问题足够具体 只是为了说清楚 我不是在寻找参考 而是在寻找教程 我对内核编程方面特别感兴趣 市
  • 内核:如何从进程的task_struct中找到所有线程?

    给定一个进程或线程的任务结构 迭代属于同一进程的所有其他线程的习惯用法是什么 Linux 不区分进程 任务 和线程 库调用 fork 和 pthread create 使用相同的系统调用 clone fork 和 pthread creat
  • 以内核模式运行的进程和以 root 身份运行的进程之间的区别?

    我知道在用户模式下运行的进程和在内核模式下运行的进程之间的区别 基于访问限制 对硬件的访问等 但出于好奇 以内核模式运行的进程与以 root 身份运行的进程有什么区别 内核模式和根是两个独立的概念 彼此之间并不真正相关 以 root 身份运
  • 如何在内核程序(内核上下文)中访问用户程序创建的bpf映射?

    假设有两个程序 用户程序和内核程序 用户程序通过api制作bpf图bpf create map name 返回 fd 有了这个 fd 我可以通过系统调用访问地图 例如 bpf map update FD 但我只能在用户空间程序中执行此操作
  • 内存映射 IO - 它是如何完成的?

    我已经了解了端口映射 IO 和内存映射 IO 之间的区别 但我无法弄清楚内存映射 Io 在现代操作系统 windows 或 linux 中是如何实现的 我所知道的是 物理内存的一部分被保留用于与硬件通信 并且有一个 MMIO 单元负责处理总
  • Linux调度程序需要上下文切换吗?

    我有一个关于 linux 调度程序和其他一些类似的内核系统调用的一般问题 Linux调度程序是否被视为一个 进程 并且对调度程序的每次调用都需要像另一个进程一样进行上下文切换 假设我们有一个时钟滴答声 它会中断当前正在运行的用户模式进程 现
  • 如何以编程方式动态管理 iptables 规则?

    我需要查询现有规则 以及能够轻松添加和删除规则 我还没有找到任何 API 来执行此操作 我缺少什么吗 我最接近的解决方案是使用iptables save iptables xml用于查询并手动调用 iptables 命令本身来添加 删除规则
  • BIOS 是否将 512 字节引导加载程序复制到 0x7c00

    我正在编写内核 在写这么复杂的东西之前 我认为对内核 引导加载程序 寄存器 BIOS 等进行一些理论阅读不仅会有所帮助 而且是必要的 本文 http lennartb home xs4all nl bootloaders node3 htm
  • 如何测量 Linux 中的真实 CPU 使用率?

    我知道有类似的工具top and ps用于测量 CPU 使用率 但他们测量 CPU 使用率的方法是测量空闲任务未运行的时间 因此 例如 即使 CPU 由于缓存未命中而出现停顿 这些工具仍然会认为 CPU 被占用 然而 我想要的是分析工具在停
  • 什么是 kthreadd 进程和子进程以及它与 init 和子进程有何不同

    我想知道什么是kthread以及为什么它不占用任何内存并且没有打开的文件 我编写了一些代码 它将简单地以父子树格式打印当前正在运行的进程的 PID 以及一些附加信息 例如使用的 VMZ RSS 线程 打开文件 PID 2 的所有子进程命名为
  • 定义新的套接字选项以在 TCP 内核代码中使用

    我正在尝试向 TCP 内核代码添加一些功能 在tcp input c 我希望我实现的代码仅在某些情况下运行 我想添加一个控制标志 可以从用户空间应用程序设置它 我 认为我 需要添加一个新的套接字选项 以便我可以完成以下操作setsockop
  • 来自task_struct的完整进程名称

    我想从中获取完整的进程名称struct task struct The comm字段仅存储 16 个字符 而进程名称可以更长 有没有办法获得完整的进程名称 这可以通过获取来完成struct vm area struct from task
  • 如何从内核空间读取/写入 linux /proc 文件?

    我正在编写一个由用户程序和内核模块组成的程序 内核模块需要收集数据 然后将其 发送 到用户程序 这必须通过 proc 文件来完成 现在 我创建了文件 一切都很好 并且花了很长时间在互联网上寻找答案 但仍然找不到 如何读 写 proc 文件f
  • 对内核模块代码进行单元测试是否可行?

    如果是这样我应该使用什么技术 我正在考虑使用 hippomock 因为它们可以用来模拟 C 方法 还有更好的方法吗 如果是这样 任何人都可以提供建议 或者您认为内核的单元测试是否太过分了 从 Linux 内核版本 5 5 开始KUnit可用
  • 如何在 Windows 中拦截 DNS 查询

    我正在研究如何在 Windows 中拦截 DNS 查询 以一种不需要将 DLL 注入到每个进程中的方式 并且理想情况下能够根据发出查询的进程做出决策 因此简单的 DNS 代理服务器是不够的 从表面上看 DNS 查询所采用的路径如下所示 某些
  • Linux 内核:Spinlock SMP:为​​什么 spin_lock_irq SMP 版本中有 preempt_disable()?

    Linux内核中的原始代码是 static inline void raw spin lock irq raw spinlock t lock local irq disable preempt disable spin acquire l
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直
  • 从 Linux 内核模块的文件描述符获取文件名/路径?

    在Linux内核模块中 有没有一种方法可以从文件名 路径中获取文件名 路径 unsigned int fd 我知道这个答案 如何从内核模块内的文件描述符获取文件名 https stackoverflow com questions 8250
  • 每个进程是否都存在内核堆栈?

    每个用户空间进程是否都存在一个内核堆栈和一个用户空间堆栈 如果两个堆栈都存在 那么每个用户空间进程应该有 2 个堆栈指针 对吗 在 Linux 中 每个任务 用户空间或内核线程 都有一个 8kb 或 4kb 的内核堆栈 具体取决于内核配置
  • 当IRQL下降时,Windows中如何触发软件中断?

    我知道对于硬件中断 当 KeAcquireInterruptSpinLock 调用 KeLowerIrql 时 HAL 会调整 LAPIC 中的中断掩码 这将允许自动服务排队的中断 可能在 IRR 中 但是对于软件中断 例如 ntdll d

随机推荐

  • 林木的第一篇博客——A New Beginning

    大家好 我是一名就读于TAYLOR S UNIVERSITY 的学生 大学主专业是计算机科学 很高兴认识大家 从今天开始我将开始学习C语言 以及跟计算机有关的一切 并在每周天把心得和知识分享出来 和大家一起学习进步 很荣幸跟大家一起学习 1
  • “千年虫”,计算机的巨大BUG!

    作者 十三侃娱乐 说起来 现在社会科技中 除了真正学过计算机专业的人 大部分人对于 千年虫 这个称号都有些陌生 甚至有些人连听都没听过 不知道的网友听到 虫 这个字可能还会脑补出一大堆不明生物的样子 但其实 千年虫 并不是一种生物 而是一种
  • LitCTF部分题目WP(Virginia,ping,SQL)

    目录 校外 Virginia ping 这是什么 SQL 注一下 校外 Virginia 维吉尼亚 想到维吉尼亚解码但没有key就爆破key Vigenere Solver guballa de key flag 发现解码出来的还有一部分是
  • 六边形地图生成(1)——基础地形

    看了大佬的六边形地图教程 跟着原教程敲了一遍代码 使用的引擎是unity 想把六边形地形的生成思路记录下来 1 基础六边形网格 基础网格很容易绘制 六个边缘点 一个中心点 如何在引擎中绘制动态网格网上一搜一大把 这里就不介绍了 2 边缘扰动
  • maya中adv插件绑定1

    一 导入模型 复制ctrl D 添加名称前缀 创建混合变形 平行选项 二 摆放adv骨骼 最好模型单独创建一个层 导入adv骨骼 1 对齐骨骼 腿部 最好是在正交视图下操作 2 对齐手臂部分 对齐到手腕即可 手指不用对 3 对齐头部 小技巧
  • Qt 实现鼠标拖动控件

    在QT项目中 窗口设置 setWindowFlags Qt FramelessWindowHint 之后 就无法拖动 所以会自定义一个menubar控件 并实现窗口拖动 效果如上图 上代码 include
  • 经典C语言程序之 C/C++:计算两个整数的和

    经典C语言程序之 C C 计算两个整数的和 在C C 编程中 计算两个整数的和是一个经典的问题 本文将介绍如何使用C语言编写一个简单的程序来实现这一功能 首先 我们需要定义两个整数变量来存储用户输入的值 并用scanf函数从用户处获取这些值
  • VSCode如何设置终端工作目录

    文章目录 前言 固定工作目录 Terminal Here 注意 前言 相信大家在使用VSCode的时候 都会有如下难受的感觉 每次打开终端的时候工作目录都是用户目录 如果要执行命令还得cd到当前文件夹 十分麻烦 为了提高工作效率 有必要设置
  • 算法------大整数

    大整数 1 大整数加法 include
  • freebsd 做文件服务器,freebsd文件服务器

    freebsd文件服务器 内容精选 换一换 FTP SFTP连接适用于从线下文件服务器或ECS服务器上迁移文件到OBS或数据库 当前仅支持Linux操作系统的FTP 服务器 连接FTP或SFTP服务器时 他们的连接参数相同 如表1所示 FT
  • <Linux开发>linux开发工具- 之-开发使用linux命令记录

    Linux开发 linux开发工具 之 开发使用linux命令记录 本文章主要记录开发过程中涉及使用的linux命令 1 查看磁盘大小分区情况 命令 df hl 可查看分区的路径 及空间大小使用情况 以及挂在点位置 2 查看指定目录文件的大
  • unity点击按钮,弹出image和Text做的弹出框

    让弹出框开始不显示 点击按钮后显示 在Hierarchy面板上新建Image 下面我命名为win 再在上面放置Image和Text组成弹出框 如下图 建立一个Message脚本 using System Collections using
  • [毕业设计]C++程序类内聚度的计算与存储

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • PLSQL 基础语法

    01 PLSQL 语法 变量 if loop cursor exception 1 语法 在数据库服务器上保存的打断可执行方法 供其他开发人员调用 可以有效的减少数据库端和服务端的数据交互 提高效率 降低带宽消耗 语法格式 declare
  • 网络工程毕业设计题目100例

    文章目录 0 简介 1 如何选题 2 最新网络工程选题 2 1 Java web SSM 系统 2 2 大数据方向 2 3 人工智能方向 2 4 其他方向 4 最后 0 简介 丹成学长 搜集分享最新的网络工程专业毕设毕设选题 难度适中 适合
  • Microsemi Libero系列教程(七)——SmartDebug的使用

    SmartDebug简介 SmartDebug的使用 ActiveProbe使用
  • VMware无法创建共享文件夹

    1 Linux安装VM 1 chmod x VMware Workstation Full 14 1 3 9474260 x86 64 1 bundle 赋予执行权限 2 VMware Workstation Full 14 1 3 947
  • 二面字节被问到VARCHAR(M) 到底占用多少个字节?我跟面试官硬刚了半小时

    前言 这个问题其实很有迷惑性 问的是字节 不是字符 我们知道在计算机中只能存储二进制数据 所以要搞清楚这个问题 就要搞清楚下面2个问题 1 字节和字符的对应关系 2 varchar 到底能存多少个字节 为了搞清楚上面两个问题 又必须搞清楚m
  • jenkins中使用git遇到的坑

    error src refspec master does not match any root c32e20fd20e8 var jenkins home workspace DataPlatform git push u DataPla
  • RK3568 Android12 RK628编译报错问题

    Platform RK3568 OS Android 12 Kernel v4 19 206 SDK Version android 12 0 mid rkr1 问题 在dts中配置rk628时遇到编译报错 提示找不到rk628的label