RK3588 android12 DDR开发指南相关记录

一,DDR打印信息

DDR 打印信息包括 loader 中的打印和 kernel 中的打印,loader 中打印的解析如下:

DDR Version 1.05 20170712// DDR 初始化代码的版本信息,用于核对版本。从这行开始,已经进入DDR初始化代码
In
SRX // 有SRX,说明是热重启;没有SRX,说明是冷开机。有的芯片没加这个功能,一直都是没有SRX的
Channel a: DDR3 400MHz // 下面都是DDR容量的详细信息,具体解析可以看"如何查看DDR的容量"章节
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Channel b: DDR3 400MHz
Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB
Memory OK // DDR自测的结果,第一个Memroy OK是Channel a的自测结果
Memory OK // 是Channel b的自测结果。有报错,说明焊接有问题;没报错,说明当前自测没问题,整个DDR是否能稳定工作,还得看后续阶段的运行结果。
OUT // 这行打印之后,就退出了DDR初始化代码

二,将DDR bin 合成成完整可用的 loader

  1. 将 DDR bin 放在 U-Boot 工程的 rk\rkbin\bin\对应目录下;
    在这里插入图片描述

  2. 删除原有的 DDR bin 文件;

  3. 将新的 DDR bin 改名为删除掉的名字;

  4. 编译 U-Boot(编译前make distclean),就会生成对应的loader文件;
    在这里插入图片描述

  5. 根据 DDR bin 打印的串口信息,确认 loader 已经更新正确;

三,修改DDR bin文件

可以使用rkbin/tools/ddrbin_tool命令行工具,说明文档是 rkbin/tools/ddrbin_tool_user_guide.txt
在这里插入图片描述

1. 官方说明help如下:

~/Rockchip/RK3588_Android12/rkbin/tools$ ./ddrbin_tool -h
version v1.17 20230725
chip name error
For more details, please refer to the ddrbin_tool_user_guide.txt
This tools support two functions
for example:
function 1: modify ddr.bin file from ddrbin_param.txt.1) modify 'ddrbin_param.txt', set ddr frequency, uart info etc what you want.If want to keep items default, please keep these items blank.like: ./ddrbin_tool px30 ddrbin_param.txt px30_ddr_333MHz_v1.13.binfunction 2: get ddr.bin file config to gen_param.txt fileIf want to get ddrbin file config, please run like that:./ddrbin_tool px30 -g gen_param.txt px30_ddr_333MHz_v1.15.binThe config will show in gen_param.txt.Note:   The function 1 and function 2 are two separate functions
The gen_param.txt file which is generated by function 2 is no need used in function 1.For more details, please refer to the ddrbin_tool_user_guide.txt

2. 如何修改DDR频率?

RK3588在loader初始化DDR时,会一起初始化4个DDR频率,供后续的kernel使用,且默认以最高频退出loader,继续后面的程序。如下的F1,F2,F3,F0就是这4个频率,默认以F0退出。
DDR V1.12 52218f4949 cym 23/07/06-19:46:50
LPDDR4X, 1848MHz      /* 当前DDR频率 */
channel[0] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[1] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[2] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
channel[3] BW=16 Col=10 Bk=8 CS0 Row=16 CS=1 Die BW=16 Size=1024MB
Manufacturer ID:0x13
CH0 RX Vref:28.9%, TX Vref:22.8%,0.0%
CH1 RX Vref:29.7%, TX Vref:22.8%,0.0%
CH2 RX Vref:29.3%, TX Vref:23.8%,0.0%
CH3 RX Vref:31.4%, TX Vref:21.8%,0.0%
change to F1: 528MHz        /* 4个DDR频率 */
change to F2: 1068MHz
change to F3: 1560MHz
change to F0: 1848MHz
out

步骤1:确定当前的ddr.bin文件
具体文件名可在rkbin/RKBOOT/RK3588MINIALL.ini中查看:
在这里插入图片描述
步骤2:查看当前ddr.bin配置

./ddrbin_tool rk3588 -g gen_param.txt ../bin/rk35/rk3588_ddr_lp4_1848MHz_lp5_2736MHz_v1.12.binversion v1.17 20230725
chip rk3588
version 4
generate info from bin file ok.

生成的gen_param.txt会包含DDR.bin的配置信息。
在这里插入图片描述
步骤3:修改gen_param.txt,设置DDR频率
修改lp5_freq的值,保存退出。

./ddrbin_tool rk3588 gen_param.txt ../bin/rk35/rk3588_ddr_lp4_1848MHz_lp5_2736MHz_v1.12.bin

步骤4:编译烧录
修改完成后,需要重新编译U-Boot,并烧录u-boot下新生成的rk3588_spl_loader_v1.19.113.bin。在这里插入图片描述

3.修改完成

串口可看见DDR频率已更新成功。
在这里插入图片描述

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

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

相关文章

Docker 部署 GitLab 并开启 SSH 使用详解

在日常使用 GitLab 时,很多人习惯通过 SSH 协议 而不是 HTTPS 来拉取与推送代码。但是在使用 Docker 部署 GitLab 的过程中,经常遇到 SSH 端口未开放、只能本地访问、客户端无法连接 等问题。本文将从零开始,详细讲解如何在 Docker 中正确开启…

C/C++---前缀和(Prefix Sum)

在C算法与数据结构领域,前缀和是一种时间复杂度优化利器,尤其适用于频繁查询数组区间和的场景。它通过预先计算“前缀累积和”,将原本O(n)时间的区间和查询压缩至O(1),是面试、竞赛及工程开发中高频使用的基础技巧。 一、前缀和的…

[n8n] 全文检索(FTS)集成 | Mermaid图表生成

第5章:全文检索(FTS)集成 在前一章中,我们构建了REST API服务作为数据访问入口。 本章将介绍全文检索(FTS)集成,它如同智能搜索引擎,为工作流系统提供高效灵活的检索能力。 核心架构 前文传送: 技术选型 SQLite …

用户模式与内核模式:操作系统的“权限双轨制”

要理解用户模式与内核模式,首先需要明确一个核心概念——进程(Process)。我们日常用C语言编译生成的.exe文件,本质是“存储在磁盘上的静态程序”;当它被加载到内存并开始运行时,就转化为“动态活动的进程”…

探索 Vertex AI 与 Elasticsearch

作者:来自 Elastic Jhon Guzmn 了解如何将 Vertex AI 与 Elasticsearch 集成来创建 RAG 应用。按照本教程配置一个 Gemini 模型并在 Kibana 的 Playground 中使用它。 更多阅读: Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG …

[新启航]白光干涉仪在微透镜阵列微观 3D 轮廓测量中的应用解析

引言微透镜阵列作为由数百至数千个微米级透镜单元组成的光学元件,在成像系统、光通信、传感器等领域应用广泛,其表面微观 3D 轮廓参数(如曲率半径、面型误差、中心厚度等)直接影响光学性能。白光干涉仪凭借非接触、高精度、三维成…

MTK Linux DRM分析(十四)- Mediatek KMS实现mtk_drm_drv.c(Part.2)

一、MTK KMS分析 mtk_drm_kms_init 函数分析 mtk_drm_kms_init 是 MediaTek DRM 驱动程序中的一个静态函数(static int mtk_drm_kms_init(struct drm_device *drm)),位于 mtk_drm_drv.c 文件中。该函数的主要作用是初始化 DRM 设备的 Kernel Mode Setting (KMS) 子系统,包…

大模型RAG(Retrieval-Augmented Generation)

RAG检索增强生成 一种结合了检索与生成能力的人工智能技术,主要用于增强大型语言模型在特定任务中的表现。 含义 RAG 将检索系统与生成模型相结合,当接收到一个查询或问题时,模型首先通过检索模块从大规模知识库中寻找与查询相关的信息片段&a…

企业版Idea 无快捷键的启动方式

在没有快捷键的情况下启动 IntelliJ IDEA 企业版,可以通过以下几种方式进行操作: 1. 通过应用程序菜单启动(适用于 macOS) 在 macOS 系统中,可以打开 Launchpad,在应用程序列表中找到 IntelliJ IDEA&#x…

智慧清洁革命:有鹿机器人如何重塑三大行业未来

作为有鹿智能巡扫机器人,每天清晨当城市还未苏醒,我已悄然完成数万平方米的清洁工作。搭载254TOPS算力的具身智能大脑,我正重新定义保洁、环卫和物业行业的清洁标准。技术赋能:智慧清洁的全面突破我搭载的Master2000通用具身大脑和…

安宝特方案丨AR异地专家远程支持平台,适合:机电运维、应急处置、监造验收

随着车间设备智能化程度的不断提高,其复杂性越来越高,故障维修难度越来越大,严重依赖设备原厂的技术支持和上门服务。但设备厂家受制于地理远近和专业人才数量的限制,服务的及时性和服务质量均很难保证。鉴于市场现有的通信聊天软…

QT应用层项目20250822

01.服务器端代码1.dbhelper.cpp#include "dbhelper.h" #include <iostream> #include <cstring>using std::string; using std::cerr; using std::cout; using std::endl;template <typename T> std::vector<T>& operator<<(std::…

【Linux】Linux基础开发工具从入门到实践

前言&#xff1a;学了Linux的指令&#xff0c;再就是Linux基础开发工具&#xff0c;熟练掌握基础开发工具是提升效率的关键。本文学习Linux的基础开发工具&#xff0c;无论是软件安装、代码编辑&#xff0c;还是编译调试、版本控制&#xff0c;一套顺手的工具链能让你在开发路上…

黑马点评|项目日记(day02)

目录 一. 全局id生成器 1.为什么需要全局id生成器 2.传统方式的缺陷: 3.典型全局 ID 生成方案的设计思路 二.优惠券秒杀-Redis实现全局唯一id 三.优惠券秒杀-添加优惠券 四.优惠券秒杀-实现秒杀下单 五. 一人一单问题 1.单体项目下 1,超卖问题思路分析 2.乐观锁解决问…

shell脚本编程规范与变量

文章目录Shell编程文档整理一、Shell介绍1.1 简介1.2 Shell解释器二、快速入门2.1 编写Shell脚本2.1.1 创建脚本示例2.1.2 赋予执行权限2.2 执行Shell脚本三、Shell程序&#xff1a;变量3.1 语法格式3.2 变量使用3.3 变量类型四、字符串4.1 单引号4.2 双引号4.3 获取字符串长度…

【AGI使用教程】Coze 搭建智能体(1)

欢迎关注【AGI使用教程】 专栏 【AGI使用教程】GPT-OSS 本地部署&#xff08;1&#xff09; 【AGI使用教程】GPT-OSS 本地部署&#xff08;2&#xff09; 【AGI使用教程】Coze 搭建智能体&#xff08;1&#xff09; 【AGI使用教程】Coze 搭建智能体&#xff08;2&#xff09; 【…

(二分查找)Leetcode34. 在排序数组中查找元素的第一个和最后一个位置+74. 搜索二维矩阵

首先要明确二分查找算法如何实现&#xff0c;是采用左闭右闭还是左闭右开 左闭右闭 第⼀种写法&#xff0c;我们定义 target 是在⼀个在左闭右闭的区间⾥&#xff0c;也就是[left, right] &#xff08;这个很重要⾮常重要&#xff09;。 区间的定义这就决定了⼆分法的代码应…

损失函数,及其优化方法

什么是损失函数&#xff1f;损失函数&#xff0c;也称为代价函数&#xff0c;是一个用来​​衡量机器学习模型预测结果与真实值之间差距​​的函数。损失函数的优化方法有哪些&#xff0c;各自优缺点是什么&#xff0c;他们的应用范围是什么&#xff1f;方法类别代表算法核心思…

pyqt+Python证件号智能校验工具

目录 一、引言 二、GUI界面设计 1.相关提示 2.效果演示 3.界面设计.py 三、主要程序详解 1.导入相关模块 2.初始化设置 3.校验过程 四、总程序代码 一、引言 在数字化转型加速的背景下&#xff0c;证件信息核验已成为金融、政务、安防等领域的刚需。传统人工校验存在…

主流技术栈 NestJS、TypeScript、Node.js版本使用统计

&#x1f4ca; 2024年主流技术栈版本使用统计&#x1f527; TypeScript 采用情况全球采用率: 38.5% 的开发者使用 TypeScript&#xff08;Stack Overflow 2024&#xff09;增长趋势: 从 2017年的 12% 增长到 2024年的 35%&#xff08;JetBrains 调研&#xff09;TypeScript vs …