RK3568 学习笔记 : 更改 u-boot spl 中的 emmc 的启动次序

环境

  • 开发板: 【正点原子】 的 RK3568 开发板 ATK-DLRK3568

  • u-boot 版本:来自 【正点原子】 的 RK3568 开发板 Linux SDK,单独复制出来一份,手动编译

  • 编译环境:VMware 虚拟机 ubuntu 20.04

问题描述

  • RK3568 默认 u-boot 的 SPL 有个启动次序,比如 MMC2 -> MMC1,而开发板是 MMC1,所以是否可以更改这个次序,这样就不会产生 MMC2 启动报错的信息

在这里插入图片描述

  • 也就是想去掉 MMC2 启动失败的信息,直接优先从 MMC1 启动

  • 查看启动 的 MMC 信息:启动时 CTRL+C 进入 u-boot 的控制台,然后输入 mmc info

=> mmc info
Device: sdhci@fe310000
Manufacturer ID: d6
OEM: 103
Name: A3A56
Timing Interface: HS200
Tran Speed: 200000000
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 57.6 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 57.6 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 16 MiB ENH
  • 这里的MMC1 或者 MMC2,可以通过具体的设备树节点信息获取到,比如 mmc info 中的 Device: sdhci@fe310000,可以在 u-boot 中 搜索 sdhci@fe310000,找到启动的 emmc 设备,当前别名是:
    sdhci

修改启动的次序

  • 修改设备树 arch/arm/dts/rk3568-u-boot.dtsichosen 节点,把启动的 emmc 设备放在最前面,这里使用 &sdhci

在这里插入图片描述

	chosen {stdout-path = &uart2;u-boot,spl-boot-order = &sdhci, &sdmmc0, &nandc0, &spi_nand, &spi_nor;};
  • 重新编译 u-boot 及 u-boot spl,使用 u-boot 下的 ./make.sh --spl 可以更新新的 u-boot spl,这样启动信息中发现,优先从 MMC1 启动,不再打印 MMC2 的报错信息。

  • 应该可以加快一下启动的速度。

在这里插入图片描述

单独编译 rk3568 u-boot

  • 首先需要获取 配置文件 defconfig 与 设备树,当前 【正点原子】 的 RK3568 开发板 ATK-DLRK3568 默认的 设备树文件使用 arch/arm/dts/rk3568-evb.dts

  • 配置文件 defconfig 的生成,我的做法是 :重新编译过 Linux SDK 后,会在 u-boot 目录下产生 .config,设置一下交叉编译工具链的路径,然后使用:

make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- savedefconfig 生成默认文件 defconfig

  • 然后复制 defconfig 到 configs 目录下,比如 cp defconfig configs/atk_dlrk3568_defconfig

  • 编译方法:使用 ./make.sh atk_dlrk3568,需要先更改编译脚本的 make.sh 中gcc 交叉编译工具链的路径

在这里插入图片描述

  • 其实设备树文件:arch/arm/dts/rk3568-evb.dts 可以复制一份,用于开发板独立使用,比如

  • cp arch/arm/dts/rk3568-evb.dts arch/arm/dts/atk_dlrk3568.dts

  • 更改 u-boot 默认的 设备树 dtb 方法

  • 设置交叉编译工具链路径 export PATH=$PATH:/home/zhangsz/tools/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin

  • make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- menuconfig 进入图形界面

  • Device Tree Control
    在这里插入图片描述

(atk-dlrk3568) Default Device Tree for DT control                                                     		(atk-dlrk3568) List of device tree files to include for DT control 

在这里插入图片描述

小结

  • 本篇尝试单独编译 rockchip 平台 rk3568 的 u-boot,解决 emmc 启动次序问题

  • rockchip rk3568 平台 u-boot 官方改动的比较大,所以建议使用 rockchip 官方的 u-boot 即可,也可以尝试部分修改,满足自己需求。

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

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

相关文章

浅谈线程的生命周期

Java线程的生命周期是一个从创建到终止的过程,经历了多种状态的转变。在Java中,线程的生命周期可以划分为以下几个主要状态: 新建(New): 当使用 new Thread() 创建一个新的线程对象但尚未调用 start() 方法…

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言:我们已经知道了在CSS中,选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗?显然是没有的,这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

【linux】mobaterm如何kill pycharm进程

【linux】mobaterm如何kill pycharm进程 【先赞后看养成习惯】求点赞关注收藏😀 使用云服务器时,pycharm在打开状态下,不小心关了mobaxterm,然后再输入pycharm.sh就会打不开pycharm,显示已经打开报错:Com…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性,软件工程中,用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量,其中 MTTF 为平均无故障时间…

Java单源最短路径知识点(含面试大厂题和源码)

单源最短路径问题是指在加权图中,找到从单个源点到其他所有点的最短路径的问题。这是图论和网络优化中的一个经典问题,具有广泛的应用,如网络路由、交通规划、社交网络分析等。解决单源最短路径问题的算法有很多,其中最著名的包括…

PHP一句话木马

一句话木马 PHP 的一句话木马是一种用于 Web 应用程序漏洞利用的代码片段。它通常是一小段 PHP 代码,能够在目标服务器上执行任意命令。一句话木马的工作原理是利用 Web 应用程序中的安全漏洞,将恶意代码注入到服务器端的 PHP 脚本中。一旦执行&#xf…

Java 分页查询

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Docker Container (容器) 常见命令

Docker 容器的生命周期 什么是容器? 通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容 器有初建、运行、停止、暂停和删除…

OpenXR API概览与核心组件解析

在虚拟现实(VR)和增强现实(AR)领域,OpenXR API提供了一个重要的开放标准,使得开发者能够跨多种硬件和软件平台创建兼容的应用。本文将详细解释OpenXR中的核心组件和数据结构,并探讨它们如何共同…

智能商品计划系统如何提升鞋服零售品牌的竞争力

国内鞋服零售企业经过多年的发展,已经形成了众多知名品牌,然而近年来一些企业频频受到库存问题的困扰,这一问题不仅影响了品牌商自身,也给长期合作的经销商带来了困扰。订货会制度在初期曾经有效地解决了盲目生产的问题&#xff0…

蓝桥杯刷题-计算系数

本文自用&#xff0c;用作记录。 211. 计算系数 - AcWing题库 #include <bits/stdc.h>using namespace std;int a, b, k ,n ,m; const int mod 10007; int qmi(int a, int k) {a % mod;int res 1;while (k){if (k & 1) res res * a % mod;a a * a % mod;k >…

机器学习方法在测井解释上的应用-以岩性分类为例

机器学习在测井解释上的应用越来越广泛&#xff0c;主要用于提高油气勘探和开发的效率和精度。通过使用机器学习算法&#xff0c;可以从测井数据中自动识别地质特征&#xff0c;预测岩石物理性质&#xff0c;以及优化油气储层的评估和管理。 以下是机器学习在测井解释中的一些…

OpenHarmony南向开发实例:【游戏手柄】

介绍 基于TS扩展的声明式开发范式编程语言&#xff0c;以及OpenHarmony的分布式能力实现的一个手柄游戏。 完成本篇Codelab需要两台开发板&#xff0c;一台开发板作为游戏端&#xff0c;一台开发板作为手柄端&#xff0c;实现如下功能&#xff1a; 游戏端呈现飞机移动、发射…

Windows 安装 Node.js 开发环境

一、简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;主要功能是编写像 web 服务器一样的网络应用。它使用事件驱动、非阻塞式 I/O 模型&#xff0c;可以优化应用程序的传输量和规模&#xff0c;非常适合在分布式设备上运行数据密集型的实时应用。 …

【C++】适配器· 优先级队列 仿函数 反向迭代器

目录 适配器&#xff1a;适配器的应用&#xff1a;1. 优先级队列&#xff1a;仿函数&#xff1a;更深入的了解仿函数&#xff1a;一个关于不容易被注意的知识点&#xff1a; 2. 反向迭代器&#xff1a;&#xff08;list为例&#xff09; 适配器&#xff1a; 我们先来谈来一下容…

【网络编程】如何创建一个自己的并发服务器?

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之如何创建一个自己的并发服务器&#xff0c;在这篇文章中&#xff0c;你将会学习到在Linux内核中如何创建一个自己的并发服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家…

素描石膏像:写实与抽象的美学对话

正文&#xff1a; 素描&#xff0c;作为绘画艺术的基础&#xff0c;承载着艺术家对世界的独特理解和表达。在素描石膏像的创作中&#xff0c;写实与抽象两种风格的碰撞&#xff0c;不仅展现了艺术家的技巧&#xff0c;更是一场美学的对话。 一、写实风格&#xff1a;细节的捕…

基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练&#xff0c;使用训练后的模型进行预测。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运…

CentOS 7 文件权限管理详解

CentOS 7 文件权限管理详解 在 CentOS 7 系统中,文件权限管理是一项至关重要的任务,它确保了系统安全、数据完整性和用户隐私。本文将详细介绍 CentOS 7 中的文件权限管理,包括相关文件和命令的使用。 一、文件权限基础 在 Linux 系统中,每个文件和目录都有与之关联的权…

简单工厂模式抽象工厂模式

一.简单工厂模式 1.什么是工厂模式 工厂模式的核心就是把对象的生产过程交给工厂来完成&#xff0c;当外部需要一个对象时&#xff0c;由工厂提供接口来获取对象&#xff0c;这样一来即使生产对象的过程变了&#xff0c;仍然不影响外部对对象的获取和使用。 2.举个栗子 定义…