0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中如何修改ddr的分配容量

jf_44130326 来源:Linux1024 2026-01-30 16:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在 U-Boot 中修改 DDR 容量通常涉及以下几个步骤,尤其是在嵌入式系统中,当更换或升级DDR内存芯片后:

硬件配置更新:

如果你实际更换了物理DDR模块以增大容量,首先要确保新的DDR模块与SoC兼容,并且主板的电路设计能够支持新内存的规格。

2. 设备树(Device Tree)调整:

对于基于Device Tree的Linux内核系统,需要在设备树(DTS或DTB文件)中正确描述DDR内存的大小和参数。这意味着要更新内存节点中的大小信息和其他相关属性,以便内核能识别并使用全部的新内存。

3. U-Boot 配置及编译:

在U-Boot源代码中,如果存在DDR初始化相关的代码或者宏定义,需要检查并根据实际情况修改这些配置,如DDR控制器的设置、时序参数等。

重新编译U-Boot,确保它包含对更大容量DDR的支持。

4. 启动参数调整:

在某些情况下,可能需要通过U-Boot环境变量来传递给内核正确的内存大小参数,例如修改bootargs环境变量中的mem=部分来指定系统的总内存大小。

5. 保存环境变量:

修改完启动参数后,务必用saveenv命令将新的环境变量保存到非易失性存储器中,比如SPI Flash上的环境变量分区。

以下介绍rk是如何修改DDR容量的:

开机时DDR初始化代码会把DDR容量传递给U-Boot,U-Boot会去除一些安全内存后再传递给内核。用户可以在U-Boot阶段修改传递给内核的DDR容量。 传递范例:

......// 传递给内核的可用内存块(已去除安全内存块)。Adding bank: 0x00200000 - 0x08400000 (size: 0x08200000)Adding bank: 0x0a200000 - 0x40000000 (size: 0x35e00000)Total: 895.411 msStarting kernel ...[ 0.000000] Booting Linux on physical CPU 0x0

代码位置:

arch/arm/mach-rockchip/param.c

修改位置:

struct memblock *param_parse_ddr_mem(int *out_count){......// 这里就是ddr传递给U-Boot的容量信息。// 因为可能出现不连续的地址,所以会分块传递,分别指明各个内存块的起始地址和大小。// PS: 一般情况下都是连续内存,不会需要分块。for (i = 0, n = 0; i < count; i++, n++) {// 比如2GB容量(连续地址),则:count=1, base = 0,size = 0x80000000。// 用户调试时可以在这里按需修改。base = t->u.ddr_mem.bank[i];size = t->u.ddr_mem.bank[i + count];/* 0~4GB */if (base < SZ_4GB) {mem[n].base = base;mem[n].size = ddr_mem_get_usable_size(base, size);if (base + size > SZ_4GB) {n++;mem[n].base_u64 = SZ_4GB;mem[n].size_u64 = base + size - SZ_4GB;}} else {/* 4GB+ */mem[n].base_u64 = base;mem[n].size_u64 = size;}assert(n < count + MEM_RESV_COUNT);}......}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR
    DDR
    +关注

    关注

    11

    文章

    764

    浏览量

    69676
  • Linux
    +关注

    关注

    88

    文章

    11860

    浏览量

    219834
  • 内存
    +关注

    关注

    9

    文章

    3258

    浏览量

    76597
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    容量与性能兼备,绫龙DDR5 6000 C28 24GB内存评测

    内存容量历来是DIY热议话题,本以为随着DDR5的普及,大家终于能告别“万年16GB”时代,谁成想一波猛涨直接“梦回DDR4”。尤其预算吃紧、打算先买单条过渡的小伙伴,面对重新摆回台面的“容量
    的头像 发表于 04-17 14:54 375次阅读

    瑞芯微DDR Bin工具详解:轻松配置DDR参数,助力系统稳定运行

    在瑞芯微(Rockchip)平台的嵌入式开发DDR(双倍数据率存储器)是系统性能的 “基石”—— 它的稳定性直接影响设备启动、数据吞吐与整体流畅度。为了让复杂的 DDR 参数配置变得更简单,瑞芯
    的头像 发表于 02-03 15:58 1837次阅读
    瑞芯微<b class='flag-5'>DDR</b> Bin工具详解:轻松配置<b class='flag-5'>DDR</b>参数,助力系统稳定运行

    【「Linux 设备驱动开发(第 2 版)」阅读体验】+读深入理解Linux内核内存分配

    每个内存地址是虚拟的,不是直接指向RAM的任何地址。当用户访问内存的存储单元时,都会进行地址转换以匹配相应的物理内存。书籍的第10章讨论了五个主题,对Linux内核内存分配进行详细
    发表于 01-16 20:05

    高速DDR开关TS3DDR4000的技术解析与应用实践

    高速DDR开关TS3DDR4000的技术解析与应用实践 在电子工程师的日常设计工作,高速DDR开关的选择与应用至关重要。今天,我们就来深入剖析德州仪器(TI)的TS3
    的头像 发表于 01-14 09:50 515次阅读

    Hbirdv2移植到Nexys4 DDR和Nexys Video开发板

    的接口,添加访问DDR接口等。在我们的项目中暂时只需要两个uart接口,即GPIO的16、17位,为了避免在约束文件中分配过多接口,将system.v的顶层接口中的GPIO修改为以下
    发表于 10-31 07:26

    如何为蜂鸟添加DDR内存扩展

    ,蜂鸟本身提供了外部存储器的访问接口,在e203_subsys_mems.v文件可以找到: 同时在这个源文件实现了一主多从的总线系统,可以看到sysmem被分配到0x80000000到
    发表于 10-31 06:07

    DDR存储拓展教程

    的MIG控制器,将DDR控制器的DDR通道引出到IO,并根据自己开发板的原理图,完成DDR到FPGA IO bank的引脚分配和约束。 芯来科技的D
    发表于 10-28 07:25

    DDR200TDDR的使用与时序介绍

    SD卡和OV5640的数据搬运进DDR。 Setting Value Memory Type DDR3 SDRAM Max. clock period 3000ps Clock ratio 4
    发表于 10-28 07:24

    E203分享之DDR扩展方案实施流程(下)

    3下载程序,需要修改链接文件) 该扩展方案支持程序的下载方式两种: (1)ILM下载方式,程序先下载到ITCM,溢出的部分则下载到DDR3里头。 在链接文件gcc_hbirdv2_ilm.ld
    发表于 10-23 06:16

    DDR200TDDR3的使用配置

    蜂鸟DDR200TDDR3的ip配置案列,提供DDR3引脚配置。具体参数可更具项目实际更改。 这里选用的axi接口 在赛灵思的IP配置
    发表于 10-21 11:19

    如何利用 DDR 参数文件生成 Linux 映像?

    如何利用 DDR 参数文件生成 Linux 映像
    发表于 09-02 06:39

    AD设计DDR3时等长设计技巧

    的讲解数据线等长设计。      在另一个文件《AD设计DDR3时等长设计技巧-地址线T型等长》着重讲解使用AD设计DDR地址线走线T型走线等长处理的方法和技巧。
    发表于 07-28 16:33 5次下载

    涨价!部分DDR4与DDR5价差已达一倍!

    ,近期同样规格的16Gb产品DDR4 16Gb(1GX16)与DDR5 16G(2Gx8)的价格差距已达到1倍。   CFM闪存市场表示,去年三
    的头像 发表于 06-27 00:27 5653次阅读

    Linux系统查看及修改设备型号信息,触觉智能RK3562开发板演示

    本文介绍Linux系统如何查看及修改设备型号信息的方法,适用于想查看设备型号信息或者想将设备型号信息修改为自己项目的名称的情况。触觉智能RK3562开发板演示。查看设备信息命令如下:cat/proc
    的头像 发表于 06-19 15:58 1280次阅读
    <b class='flag-5'>Linux</b>系统查看及<b class='flag-5'>修改</b>设备型号信息,触觉智能RK3562开发板演示

    Linux修改uboot启动延时方法详细攻略,触觉智能RK3568开发板演示

    本文介绍Linux系统修改uboot启动延时方法,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持开源鸿蒙
    的头像 发表于 06-06 18:07 1217次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>修改</b>uboot启动延时方法详细攻略,触觉智能RK3568开发板演示