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.hqwc.cn/news/625272.html

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

相关文章

C++笔记:类和对象

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量,类型就像是定义了数据的规则,而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型,而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

【数据结构与算法】用两个栈实现一个队列

题目 用两个栈,实现一个队列功能 add delete length 队列 用数组可以实现队列,数组和队列的区别是:队列是逻辑结构是一个抽象模型,简单地可以用数组、链表实现,所以数组和链表是一个物理结构,队列是一个逻…

Servlet-Filter实现反爬虫

以前用DotNetCore实现过反爬虫功能。在tomcat里面可以利用Servlet的Filter类实现请求的控制来达到反爬虫功能,进而增强JRT的web安全。 实现黑名单过滤器,对在黑名单列表的IP的所有请求都跳转到警告页面,业务各种请求自行定义加入黑名单 /* …

爆肝3k字!掌握Spring与Redis的高效交互:从Jedis到Spring Data Redis

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

数字孪生技术的应用场景

数字孪生技术是一种新兴技术,具有广阔的应用前景。目前,数字孪生技术已经在以下几个领域得到了广泛应用。数字孪生技术是一种具有革命性的技术,它将深刻改变我们的生活和工作方式。随着数字孪生技术的不断发展,我们可以期待在未来…

Javascript中的this关键字指向,2024年最新阿里前端开发面试解答

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

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

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

设计模式——2_9 模版方法(Template Method)

人们往往把任性也叫做自由,但是任性只是非理性的自由,人性的选择和自决都不是出于意志的理性,而是出于偶然的动机以及这种动机对感性外在世界的依赖 ——黑格尔 文章目录 定义图纸一个例子:从文件中获取信息分几步?Rea…

Adobe AE(After Effects)2017下载地址及安装教程

Adobe After Effects是一款专业级别的视觉效果和动态图形处理软件,由Adobe Systems开发。它被广泛用于电影、电视节目、广告和其他多媒体项目的制作。 After Effects提供了强大的合成和特效功能,可以让用户创建出令人惊艳的动态图形和视觉效果。用户可以…

MapReduce 机理

1.hadoop 平台进程 Namenode进程: 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log)&#xff…

vscode编译c++报错解决方案

1,xxxx cl.exe 一大串什么非程序员的(应该是这些),就是看一些谁的,调用了Visual Studio的编译软件去运行。建议,不要这样搞。 解决方案1:每次用就看这个文章(个人觉得很麻烦):仅当…

java正则表达式教程

什么是正则表达式: 正则表达式是一种用来描述字符串模式的语法。在 Java 中,正则表达式通常是一个字符串,它由普通字符(例如字母、数字、标点符号等)和特殊字符(称为元字符)组成。这些特殊字符可…