RK3568 学习笔记 : u-boot 通过 tftp 网络更新 u-boot自身

前言

  • 开发板型号: 【正点原子】 的 RK3568 开发板 AtomPi-CA1

  • 使用 虚拟机 ubuntu 20.04 收到单独 编译 RK3568 u-boot

  • 使用 rockchip Linux 内核的设备树 【替换】 u-boot 下的 rk3568 开发板设备树文件,解决 u-boot 下千兆网卡设备能识别但是无法 Ping 通 PC 问题

  • u-boot 下网络可以 ping 通了,u-boot ping 通 PC 主机。

  • 本篇记录通过 tfpt 拉取 u-boot 镜像,然后通过 u-boot mmc 命令烧写更新 u-boot 本身

u-boot 网络配置

  • 根据当前网络连接,进行 u-boot 下 网络配置(env 设置),注意当前 网段
setenv ipaddr 192.168.10.8
setenv netmask 255.255.255.0
setenv gatewayip 192.168.10.1## 设置后可以作为 tftp 服务器地址 PC 主机 IP : 192.168.10.10 
setenv serverip 192.168.10.10  

PC 端网络设置

  • 这里使用 USB 转 千兆网卡:

  • IPv4 设置: IP 地址:192.168.10.10 子网掩码:255.255.255.0 默认网关:192.168.10.1

在这里插入图片描述

在这里插入图片描述

tftp 服务器设置

  • 下载安装 Tftpd64,可以通过网址 https://bitbucket.org/phjounin/tftpd64/src/master/

  • github 上应该有源码:https://github.com/PJO2/tftpd64

  • 开启并指定 PC 端的网卡(连接开发板),并设置路径, uboot.img 的路径

在这里插入图片描述

  • rk3568 开发板 与 PC 网络连接有两种方式:网线直连 与 经过路由器中转两种,当前选择 第一种:网络直连

-【备注】:(1)即使是开发板网线直连 PC网卡,如果网段是 192.168.10.xx,网关地址依旧都设置为 192.168.10.1 即可。 (2)千兆网络,需要千兆的网线。

  • 确认网络是否 ping 通,如果 rk3568 有两个 gmac 网卡,可以切换当前的网卡,用于与 PC 进行网络连接

在这里插入图片描述

更新 u-boot 自身

  • 通过 tftp 传递 uboot.img 到开发板

  • 首先确认 DDR RAM 的地址范围,需要先把 uboot.img 传递到 DDR RAM 的某个地址(不要与使用的内存地址重叠,如设备树、uboot 加载地址等)

  • 可以通过 u-boot bdinfo 命令查看当前系统的基本信息,如 DRAM bank 的地址范围,由于uboot.img 有 4MB 大小,因此加载地址暂时定为没有使用的 0x07200000,当前 DRAM 范围: 0x0020000 ~ 0x8220000

  • DRAM bank 范围: 这里有两个 Bank

DRAM bank   = 0x00000000
-> start    = 0x00200000
-> size     = 0x08200000
DRAM bank   = 0x00000001
-> start    = 0x09400000
-> size     = 0xE6C00000
=> bdinfo
arch_number = 0x00000000
boot_params = 0x00000000
DRAM bank   = 0x00000000
-> start    = 0x00200000
-> size     = 0x08200000
DRAM bank   = 0x00000001
-> start    = 0x09400000
-> size     = 0xE6C00000
baudrate    = 1500000 bps
TLB addr    = 0xEFFF0000
relocaddr   = 0xEFEC4000
reloc off   = 0xEF4C4000
irq_sp      = 0xEDBDBBE0
sp start    = 0xEDBDBBE0
Early malloc usage: 780 / 80000
fdt_blob = 00000000edbdbbf8
  • 传递 uboot.img 的命令: tftp 0x07200000 uboot.img

  • 注意 默认的 tftp server 的 IP,来自 u-boot env : setenv serverip 192.168.10.10

=> tftp 0x07200000 uboot.img
Using ethernet@fe010000 device
TFTP from server 192.168.10.10; our IP address is 192.168.10.8
Filename 'uboot.img'.
Load address: 0x7200000
Loading: ##############################################################################################################################################################################################################################################################################################5.1 MiB/s
done
Bytes transferred = 4194304 (400000 hex)
  • 当前把 PC 端的 uboot.img 通过 tftp 命令,传递到开发板的 0x07200000 内存地址位置,接下,需要使用 mmc 命令进行烧写 uboot.img

mmc part 确认 uboot.img 的分区位置

  • 如果 专门给 uboot.img 创建分区,可以通过 u-boot mmc part 命令查看 分区信息,确认 uboot.img 的存放位置,注意 mmc 的存放地址默认是 512 字节为单位。
=> mmc partPartition Map for MMC device 0  --   Partition Type: EFIPart    Start LBA       End LBA         NameAttributesType GUIDPartition GUID1     0x00004000      0x00005fff      "uboot"attrs:  0x0000000000000000type:   05660000-0000-4873-8000-5a20000035d8guid:   b4250000-0000-4628-8000-7544000002ba2     0x00006000      0x00085fff      "boot"attrs:  0x0000000000000000type:   7c180000-0000-4f18-8000-50a800001445guid:   3b690000-0000-4079-8000-2a4a00007a873     0x00086000      0x0733bfbf      "rootfs"attrs:  0x0000000000000000type:   0e110000-0000-461a-8000-5c66000022cdguid:   614e0000-0000-4b53-8000-1d28000054a9
  • 也就是 uboot 分区: 起始地址 0x00004000,结束地址 0x00005fff,注意 mmc 地址可以认为是以 512 字节作为一个块的块(block)个数的偏移

  • 这里 0x00004000 在 rk3568 平台是固定的,mmc 8M 字节 偏移位置,大小是 4M 字节

  • 擦除 原有的 uboot:uboot 工作时默认已经读取到内存,因此可以直接更新 mmc 中 uboot 分区

  • 擦除命令 mmc erase 0x4000 0x2000

  • 烧写命令:mmc write 0x0720000 0x4000 0x2000

  • 重启,如果 uboot 更新了(比如修改了,增加一些打印信息),说明操作成功

在这里插入图片描述

小结

  • 本篇记录 u-boot 下通过 网络的方法更新 u-boot 自身镜像的方法(mmc 存储),需要注意一些细节,便于问题的排查与解决

  • u-boot 网络调通后,除了更新自己外,还可以更新 Linux kerenl、rootfs 根文件系统等,设置可以直接通过 nfs 挂载远程镜像的方式启动

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

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

相关文章

Spring(下)

接上篇,从第八个问题讲起 八.Spring工厂创建复杂对象 1.什么是复杂对象 简单对象就是可以直接new出来的,也就是直接调用构造方法创建 所以复杂对象就是不能直接通过调用构造方法创建。就比如JDBC中的Connection 2.三种方法 (1&#xff…

【华为 ICT HCIA eNSP 习题汇总】——题目集18

1、SSH默认工作使用的TCP端口号是()。 A、20 B、21 C、22 D、23 考点:①传输层 ②应用层 解析:(C) SSH为建立在应用层和传输层上的安全协议,是对TCP/IP协议的传输层以上的SSH会话流程进行加密的…

必应搜索广告与谷歌搜索广告对比那个更好?

搜索引擎广告作为企业获取潜在客户的重要渠道之一,其效果直接关系到营销策略的成功与否。两大搜索引擎巨头——谷歌(Google)和必应(Bing)各自提供了广告平台,即谷歌广告(Google Ads)…

【Web】2022DASCTF X SU 三月春季挑战赛 题解(全)

目录 ezpop calc upgdstore ezpop 瞪眼看链子 fin#__destruct -> what#__toString -> fin.run() -> crow#__invoke -> fin#__call -> mix.get_flag() exp <?php class crow {public $v1;public $v2;}class fin {public $f1; }class what {public $a; }…

力扣hot100(python解析)

文章目录 13. 合并区间14. 轮转数组 13. 合并区间 合并区间 数组 排序 思路&#xff1a; 代码&#xff1a; class Solution:def merge(self, intervals):result []if len(intervals) 0:return result # 区间集合为空直接返回intervals.sort() # 默认按照区间的左边界进…

z3求解器脚本(CTF-reverse必备)

CTF-reverse中有一类题目是通过约束方程求解变量的值&#xff0c;然后转化为对应的ASCII码&#xff0c;最终获得flag&#xff0c;约束方程以及要求解的未知数往往非常多&#xff0c;因此手算十分不现实&#xff0c;借助python中的z3模块可以很快完成求解&#xff01; 下面是某道…

开始Java之旅

1.Java语言 java是一门优秀的程序设计语言&#xff0c;并且是一种半编译型&#xff0c;半解释型语言。 Java 语言源于 1991 年 4 月&#xff0c;Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动&#xff0c;此计划最初的目标是开发一种能够在各种消费性电…

【分治算法】Hanoi塔问题Python实现

文章目录 [toc]问题描述Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python基础 学习指南&#xff1a;Python学习指南 问题描述 设 a a a、 b b b、 c c c是三个塔座&#xff0c;开始时&#xff0c;在塔座 a a a上有一叠共 n n n个圆盘&#xff0c;这些圆盘…

最新免费 ChatGPT、GPTs、AI换脸(Suno-AI音乐生成大模型)

&#x1f525;博客主页&#xff1a;只恨天高 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容…

虚良SEO怎么有效的对百度蜘蛛权重优化?

人们交换链接通常首先要问的是你BR值是多少&#xff1f;国内搜索引擎来说以百度马首是瞻&#xff0c;无论seo还是竞价都看重的是百度&#xff0c;那么针对百度权重的优化就特别重要了。其实&#xff0c;百度权重是民间的一种说法&#xff0c;百度官方并没有认同这个数值&#x…

(回溯)记忆化搜索和dp

动态规划的核心就是 状态的定义和状态的转移 灵神 的 回溯改递归思路 首先很多动态规划问题都可以采用 回溯 的思想 回溯主要思想就是把 一个大问题分解成小问题 比如 采用子集类回溯问题中的核心思想-> 选或不选 或者 选哪个 记忆化搜索之后 我们可以发现 每个新节点依…

Oracle故障处理:ORA-00600错误处理思路

提前说明&#xff1a; 该故障&#xff0c;我只是旁观者。 但处理该故障的DBA工程师&#xff0c;思路很清晰&#xff0c;我非常受教&#xff01;在此也将经验分享。 目录 项目场景 问题分析 优化建议 项目场景 在某项目数据库运维群&#xff0c;有现场同事发了张报错截图如下…

代码学习记录49---单调栈

随想录日记part49 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.04.20 主要内容&#xff1a;今天开始要学习单调栈的相关知识了&#xff0c;今天的内容主要涉及&#xff1a;柱状图中最大的矩形 84.柱状图中最大的矩形 Topic184.柱状图中最大的矩形 题目&…

Scikit-Learn支持向量机分类

Scikit-Learn 支持向量机分类 1、支持向量机&#xff08;SVM&#xff09;1.1、SVM概述1.2、SVM原理1.3、SVM的损失函数1.4、支持向量机分类的优缺点 2、Scikit-Learn支持向量机分类2.1、Scikit-Learn支持向量机分类API2.2、支持向量机分类初体验&#xff08;手写数字识别&#…

四川易点慧电子商务抖音小店:安全正规,购物新选择

在当今互联网高速发展的时代&#xff0c;电子商务已经成为人们日常购物的重要组成部分。四川易点慧电子商务抖音小店作为新兴的电商平台&#xff0c;凭借其安全正规的经营理念和便捷高效的购物体验&#xff0c;正逐渐赢得消费者的信赖和喜爱。 一、平台背景实力雄厚 四川易点慧…

Windows11+Ubuntu20.04系统重装(升级为Ubuntu22.04)

事情起因是标题所对应的双系统中&#xff0c;Ubuntu老自动断电关机&#xff0c;一开始是跑大型程序才会关机&#xff0c;这两天愈演愈烈变成运行一个远程控制或者VSCode就会关机。一怒之下找了Dell在线客服&#xff0c;在对方引导下检测了硬件系统&#xff0c;发现没有明显故障…

STM32单片机C语言模块化编程实战:按键控制LED灯详解与示例

一、开发环境 硬件&#xff1a;正点原子探索者 V3 STM32F407 开发板 单片机&#xff1a;STM32F407ZGT6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F4 V1.27.1 之前介绍了很多关于点灯的方法&#xff0c;比如…

4.20 IO流

IO流结构 InputStream&#xff08;字节输入流&#xff09; public static void main(String[] args) {// byteInputStream();// byteInputStream1();// byteInputStream2();byteInputStream3();}// 使用字节流时对于中文汉字基本都会出现乱码问题&#xff0c;因此对中文乱码问…

mininet+odl安装

安装环境 ubuntu-18.04.2-desktop-amd64 Java version: 1.8.0_362 Apache Maven 3.6.0 opendaylight: distribution-karaf-0.6.0-Carbon(csdn中应该是已有资源&#xff0c;不让上传) opendaylight的官网下载链接一直打开失败&#xff0c;我使用的是别人的Carbon版本。 在安…

yml文件解析

.yml 后缀的文件可以有多个application.yml # 项目相关配置 用于 RuoYiConfig.java ruoyi:# 名称name: RuoYi# 版本version: 3.8.5# 版权年份copyrightYear: 2023# 实例演示开关demoEnabled: true# 文件路径 示例&#xff08; Windows配置D:/ruoyi/uploadPath&#xff0c;Lin…