展锐T820平台Android11开发:kernel设备树编译问题

server/2024/9/23 10:46:09/

一.kernel多board自适应

        展锐平台的kernel具有多board自适应功能,即相同体系架构的两个不同的board间,boot.img、socko.img/odmko(vendorboot.img)、dtbo.img是可替换的,这些镜像文件称为R-img(Replaceable images,可替换的镜像)。

        要实现这样的效果,R-img都要满足一个共性条件就是SOC级的。

        针对R-img设备树相关成员的策略如下:

(1)dtb.img

        它是SoC级的,即同一款芯片同体系架构的不同board共用一个dtb。

(2)dtbo.img

         它包含多个board级的dtbo,通过uboot来匹配选择加载其中一个dtbo。

二.多dtb/dtbo架构

        kernel多board自适应实现后,dtb是SoC级的,dtbo是board级的。这就意味着:

(1)所有第三方及board特有的设备节点,只允许在dtbo中定义并使用。

(2)所有SoC级公用的设备节点在dtb中定义并使用。

2.1 dtb对应的源文件

        在arch/arm64/boot/dts/sprd/目录下,除了xxx-overlay.dts文件外,其余设备树文件将被编译打包成dtb文件,并打包到boot.img中。

2.2 dtbo文件对应的源文件

        在arch/arm64/boot/dts/sprd/目录下,xxx-overlay.dts文件将被打包编译成dtbo文件。

三.如何快速编译设备树

3.1 SoC级修改

        若修改了SoC级的设备树文件,则在Android源码根目录下依次执行以下命令:

source build/envsetup.shlunch  xxxx(选择产品)make bootimage

        编译成功后,将在以下目录生成boot.img:

out/target/product/<board name>/

        然后,在 ResearchDownload 工具中点击“下载设置”, 找到 Boot 分区选择 boot.img路径更新即可。

3.2 Board级修改

        若修改了xxx-overlay.dts文件,则切换到bsp目录下,进行单独编译即可。具体步骤如下:

cd  bsp/
source build/envsetup.sh
lunch xxx(产品名称)
make dtboimage -j4

         编译成功后,将在以下目录生成 dtbo.img:

bsp/out/androidr/<product_name>/dist/kernel 

        然后,在 ResearchDownload 工具中点击“下载设置”, 找到dtbo分区选择 dtbo.img路径更新即可。

 


http://www.ppmy.cn/server/52910.html

相关文章

Vscode 中launch.json与tasks.json文件

Vscode 中launch.json与tasks.json文件 launch.json文件基本结构主要属性示例配置PythonCNode.js 常见配置项1. Python2. C3. Node.js 使用示例 tasks.json基本结构主要属性示例配置C 编译任务Python 运行任务Node.js 运行任务 常见配置项使用示例 tasks.json与launch.json文件…

Java测试类

在Java中&#xff0c;为了编写测试类&#xff0c;通常使用JUnit框架。 1. 首先&#xff0c;创建一个名为Calculator的简单Java类&#xff0c;它包含一个方法add用于计算两个整数的和&#xff1a; public class Calculator {public int add(int a, int b) {return a b;} } 2.…

基于redisson实现tomcat集群session共享

目录 1、环境 2、修改server.xml 3、修改context.xml 4、新增redisson配置文件 5、下载并复制2个Jar包到Tomcat Lib目录中 6、 安装redis 7、配置nginx负载均衡 8、配置测试页面 9、session共享测试验证 前言&#xff1a; 上篇中&#xff0c;Tomcat session复制及ses…

golang封装一个执行命令行的函数(return stderr/stdout/exitcode)

启动shell来执行命令行 在 Go 语言中&#xff0c;您可以使用 os/exec 包来执行外部命令&#xff0c;不通过调用 shell&#xff0c;并且能够获得进程的退出码、标准输出和标准错误输出。下面是一个封装好的函数 runCommand&#xff0c;它符合您的需求&#xff1a; package mai…

element-ui侧边栏:default-openeds

element-ui侧边栏实现路由跳转后展开对应侧边栏&#xff1a;default-openeds 当菜单是在本地写死时&#xff0c;如果想展开第一块内容、里面就只写1 :default-openeds"[‘1’]" 当菜单是动态获取时&#xff0c;点击跳转之后如何展开对应的菜单&#xff0c;在watch中监…

小公司全栈是归宿吗?

在软件开发领域&#xff0c;特别是在小公司或初创公司中&#xff0c;全栈开发者的角色确实相对普遍和重要。然而&#xff0c;说“全栈是归宿”可能过于绝对&#xff0c;因为每个开发者的职业路径和兴趣点都是不同的。 以下是关于全栈开发在小公司的一些考虑&#xff1a; 需求…

深度解析RocketMq源码-高可用存储组件(四)Dledger框架日志同步流程

1.绪论 在深度解析RocketMq源码-高可用存储组件&#xff08;一&#xff09; raft协议详解-CSDN博客 中讲过&#xff0c;raft协议中&#xff0c;日志同步主要有两个地方&#xff0c;一个是leader会跟follower同步数据&#xff0c;另一个是在新leader诞生的时候&#xff0c;会与…

Python 设计模式(第2版) -- 第一部分(创建型模式)

Python 设计模式(第2版) 设计模式的主要特点如下所示&#xff1a; 它们是语言无关的&#xff0c;可以用多种语言实现。它们是动态的&#xff0c;随时会有新的模式引入。它们可以进行定制&#xff0c;因此对开发人员非常有用。 设计模式的优点如下所示&#xff1a; 它们可以…