rk3588 之启动
目录
- uboot
- 版本
- 配置修改
- 编译
- linux
- 版本
- 配置修改
- 编译
- 启动
- sd卡启动制作
- spi 烧录
- 参考
uboot
版本
v2024.01-rc2
https://github.com/u-boot/u-boot
https://github.com/rockchip-linux/rkbin
配置修改
使用这两个配置即可:
orangepi-5-plus-rk3588_defconfig
rock5b-rk3588_defconfig
再设备树 XX-u-boot.dtsi 中添加 spi_nor ,用于 spi 启动
#include "rk3588-u-boot.dtsi"/ {aliases {mmc0 = &sdmmc;};chosen {u-boot,spl-boot-order = "same-as-spl", &spi_nor, &sdmmc;};
};&sfc {bootph-all;u-boot,spl-sfc-no-dma;#address-cells = <1>;#size-cells = <0>;status = "okay";spi_nor: flash@0 {bootph-pre-ram;compatible = "jedec,spi-nor";reg = <0>;spi-max-frequency = <24000000>;spi-rx-bus-width = <4>;spi-tx-bus-width = <1>;};
};
以下为 dts 设备树中添加 gmac0 用于 uboot 种使用网络,可参考 rk3588-evb1-v10.dts 文件,此处使用的 ksz9131
{aliases {mmc0 = &sdmmc;serial2 = &uart2;ethernet0 = &gmac0;};
}
&gmac0 {phy-handle = <&rgmii_phy>;phy-mode = "rgmii-rxid";pinctrl-0 = <&gmac0_miim&gmac0_tx_bus2&gmac0_rx_bus2&gmac0_rgmii_clk&gmac0_rgmii_bus>;pinctrl-names = "default";rxc-skew-ps = <1800>;rxdv-skew-ps = <0>;txc-skew-ps = <1800>;txen-skew-ps = <0>;status = "okay";
};&mdio0 {rgmii_phy: ethernet-phy@1 {reg = <0x1>;pinctrl-names = "default";pinctrl-0 = <&phy_rst>;reset-assert-us = <20000>;reset-deassert-us = <100000>;reset-gpios = <&gpio2 RK_PC4 GPIO_ACTIVE_LOW>;};
};&pinctrl {ksz9131 {phy_rst: phy-rst {rockchip,pins = <2 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;};};
};
添加 CONFIG_ROCKCHIP_SPI_IMAGE 配置,会生成 u-boot-rockchip-spi.bin 文件,用于 spi 启动
编译
编译前,需先设置环境变量,不然会报错
export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.12.bin
export BL31=../rkbin/bin/rk35/rk3588_bl31_v1.40.elf


tee-os 无需设置,针对官方提供的 rk3588_bl32_v1.13.bin 文件,这里设置后反而会报错

使用编译命令
make CROSS_COMPILE=aarch64-linux-gnu- -j4
生成 idbloader.img、u-boot.itb、u-boot-rockchip-spi.bin、 u-boot-rockchip.bin 等文件
linux
版本
分支 orange-pi-5.10-rk35xx
https://github.com/orangepi-xunlong/linux-orangepi.git
配置修改
使用 rockchip_defconfig 文件配置即可,其他根据需求增减
使用 rk3588-orangepi-5-plus.dts 设备树,根据实际情况增减,以下为打印串口添加
&uart2 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart2m0_xfer>;
};
编译
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4
启动
rk3588 启动方式如下:

采用 LEVEL7 模式, 100K 上拉,可自动进行多种启动识别
可先使用 sd 卡启动,后可针对其他进行烧录;也可用 usb 驱动,使用 瑞芯微官方软件烧录
sd卡启动制作
将 tf 卡分成 4 个区:
sudo sgdisk -z -og /dev/sdb
sudo sgdisk --resize-table=128 -a 1 \-n 1:64:16383 -c 1:idbloader \-n 2:16384:32767 -c 2:uboot \-n 3:32768:163839 -c 3:boot \-n 4:163840: -c 4:rootfs \-p /dev/sdb
将u-boot 生成的 idbloader.img 与 u-boot.itb 写入到 sd 卡的 1 和 2 分区
sudo dd if=idbloader.img of=/dev/sdb1 bs=512
sudo dd if=u-boot.itb of=/dev/sdb2 bs=512
同时,可以将 3分区格式化成 FAT32 模式,将设备树、内核等放进里面用于启动,或者通过 tftpboot 启动。
mmc dev 0 && load mmc 0:3 0x02080000 Image.gz &&load mmc 0:3 0x0a100000 rk3588-orangepi-5-plus.dtb&&load mmc 0:3 0x0a200000 uramdisk.image.gz&&setenv bootargs "root=/dev/ram0 rw init=/linuxrc console=ttyS2,1500000 " && booti 0x02080000 0x0a200000 0x0a100000
格式化 4分区,格式为 ext4 , 用于存放文件系统,启动命令
mmc dev 0
load mmc 0:3 0x02080000 Image.gz
load mmc 0:3 0x0a100000 rk3588-orangepi-5-plus.dtb
setenv bootargs "root=/dev/mmcblk0p4 rw rootfstype=ext4 rootwait init=/sbin/init console=ttyS2,1500000"
booti 0x02080000 - 0x0a100000
spi 烧录
spi 通过 tftp 加载进行烧录,先配置 ip,而后加载 bin 文件,最后写入
setenv ipaddr 192.168.1.100
setenv serverip 192.168.1.163
tftpboot 0x02080000 u-boot-rockchip-spi.bin
sf probe 5:0 8000000 0
sf update 0x02080000 0 ${filesize}
烧录完成重启即可

参考
http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_5_Plus
https://blog.csdn.net/qq_41544116/article/details/131863063
https://www.cnblogs.com/yangdinshan/p/17592105.html
https://opensource.rock-chips.com/wiki_Boot_option
https://gitlab.collabora.com/hardware-enablement/rockchip-3588/notes-for-rockchip-3588/-/blob/main/upstream_uboot.md
https://github.com/axlrose/rkdocs
相关文章:
rk3588 之启动
目录 uboot版本配置修改编译 linux版本配置修改编译 启动sd卡启动制作spi 烧录 参考 uboot 版本 v2024.01-rc2 https://github.com/u-boot/u-boot https://github.com/rockchip-linux/rkbin 配置修改 使用这两个配置即可: orangepi-5-plus-rk3588_defconfig r…...
ARM GIC (五)gicv3架构-LPI
在gicv3中,引入了一种新的中断类型。message based interrupts,消息中断。 一、消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断。 这样的一个好处是,可以减少中断线的个数。 为了支持消息中断,gicv3,增加了LPI,来支持消息中断。并且…...
sql-labs服务器结构
双层服务器结构 一个是tomcat的jsp服务器,一个是apache的php服务器,提供服务的是php服务器,只是tomcat向php服务器请求数据,php服务器返回数据给tomcat。 此处的29-32关都是这个结构,不是用docker拉取的镜像要搭建一下…...
【小沐学写作】Docsify制作在线电子书、技术文档(Docsify + Markdown + node)
文章目录 1、简介2、安装2.1 node2.2 docsify-cli 3、配置3.1 初始化3.2 预览效果3.3 加载对话框3.4 更多页面3.5 侧 栏3.6 自定义导航栏 结语 1、简介 https://docsify.js.org/#/?iddocsify 一个神奇的文档网站生成器。 简单轻巧没有静态构建的 html 文件多个主题 Docsify…...
电脑完全重装教程——原版系统镜像安装
注意事项 本教程会清除所有个人文件 请谨慎操作 请谨慎操作 请谨慎操作 前言 本教程是以系统安装U盘为介质进行系统重装操作,照着流程操作会清除整个硬盘里的文件,请考虑清楚哦~ 有些小伙伴可能随便在百度上找个WinPE作为启动盘就直接…...
【智慧办公】如何让智能会议室的电子标签实现远程、批量更新信息?东胜物联网硬件网关让解决方案更具竞争力
近年来,为了减少办公耗能、节能环保、降本增效,越来越多的企业开始从传统的办公模式转向智慧办公。 以智能会议室为例,会议是企业业务中不可或缺的一部分,但在传统办公模式下,一来会议前行政人员需要提前准备会议材料…...
面向对象设计与分析40讲(16)静态工厂方法模式
前面我们介绍了简单工厂模式,在创建对象前,我们需要先创建工厂,然后再通过工厂去创建产品。 如果将工厂的创建方法static化,那么无需创建工厂即可通过静态方法直接调用的方式创建产品: // 工厂类,定义了静…...
【贪心】买卖股票的最佳时机含手续费
/** 贪心:每次选取更低的价格买入,遇到高于买入的价格就出售(此时不一定是最大收益)。* 使用buy表示买入股票的价格和手续费的和。遍历数组,如果后面的股票价格加上手续费* 小于buy,说明有更低的买入价格更新buy。如…...
Altium Designer入门到就业【目录】
🏡《AD目录》 欢迎大家来到《Altium Designer入门到就业》该专栏包括【电路设计篇】【PCB设计篇】【电路仿真篇】【PCB仿真篇】四个部分,以供大家参考。大家直接点击大纲中蓝色标题即可轻松传送。 【电路设计篇】 Altium Designer(AD24&#…...
cmake 查看编译命令,以及在vscode中如何使用cmke
通过设置如下配置选项,可以生成compile_commands.json 文件,记录使用的编译命令 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)获得现有模块列表 cmake --help-module-list查看命令文档 cmake --help-command find_file查看模块的详细信息 cmake --help-mo…...
玩转 Scrapy 框架 (一):Scrapy 框架介绍及使用入门
目录 一、Scrapy 框架介绍二、Scrapy 入门 一、Scrapy 框架介绍 简介: Scrapy 是一个基于 Python 开发的爬虫框架,可以说它是当前 Python 爬虫生态中最流行的爬虫框架,该框架提供了非常多爬虫的相关组件,架构清晰,可扩…...
node.js mongoose index(索引)
目录 简介 索引类型 单索引 复合索引 文本索引 简介 在 Mongoose 中,索引(Index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作 索引类型 单索引、复合索引、文本索引、多键索引、哈希索引、地理…...
谷歌推大语言模型VideoPoet:文本图片皆可生成视频和音频
Google Research最近发布了一款名为VideoPoet的大型语言模型(LLM),旨在解决当前视频生成领域的挑战。该领域近年来涌现出许多视频生成模型,但在生成连贯的大运动时仍存在瓶颈。现有领先模型要么生成较小的运动,要么在生…...
ES-mapping
类似数据库中的表结构定义,主要作用如下 定义Index下的字段名( Field Name) 定义字段的类型,比如数值型、字符串型、布尔型等定义倒排索引相关的配置,比如是否索引、记录 position 等 index_options 用于控制倒排索记录的内容,有如…...
Centos 7.9安装Oracle19c步骤亲测可用有视频
视频介绍了在虚拟机安装centos 7.9并安装数据库软件的全过程 视频链接:https://www.zhihu.com/zvideo/1721267375351996416 下面的文字描述是安装数据库的部分介绍 一.安装环境准备 链接:https://pan.baidu.com/s/1Ogn47UZQ2w7iiHAiVdWDSQ 提取码&am…...
.NET中的Swagger使用
目录 前言 一、Swagger是什么? 二、如何Swagger文档说明的信息 1.在AddSwaggerGen方法中写入文档信息 2.运行效果 二、文档UI界面标题、路由设置 1.在中间件UseSwaggerUI方法中配置 三、文档UI界面添加接口注释 1.在 .csproj中配置 2.在AddSwaggerGen方法中配置Incl…...
结构屈曲分析
结构屈曲分析主要用于判定结构受载后是否有失稳风险,作为工程应用,一般分为线性屈曲分析和非线性屈曲分析。 线性屈曲分析需要具备较多的前提条件,如载荷无偏心、材料无缺陷等,在实际工程应用中结构制作过程和加载方式很难达到线性…...
Flink 客户端操作命令及可视化工具
Flink提供了丰富的客户端操作来提交任务和与任务进行交互。下面主要从Flink命令行、Scala Shell、SQL Client、Restful API和 Web五个方面进行整理。 在Flink安装目录的bin目录下可以看到flink,start-scala-shell.sh和sql-client.sh等文件,这些都是客户…...
csrf自动化检测调研
https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md CSRF 攻击者在钓鱼站点,可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求: <form action"https://my.site.com/me/something-destructive" metho…...
记录一个Python鼠标自动模块用法和selenium加载网页插件的设置
写爬虫,或者网页自动化,让程序自动完成一些重复性的枯燥的网页操作,是最常见的需求。能够解放双手,空出时间看看手机,或者学习别的东西,甚至还能帮朋友亲戚减轻工作量。 然而,网页自动化代码编写…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
