CN107451023B - 一种基于uboot的内存自适配方法 - Google Patents
一种基于uboot的内存自适配方法 Download PDFInfo
- Publication number
- CN107451023B CN107451023B CN201710713674.XA CN201710713674A CN107451023B CN 107451023 B CN107451023 B CN 107451023B CN 201710713674 A CN201710713674 A CN 201710713674A CN 107451023 B CN107451023 B CN 107451023B
- Authority
- CN
- China
- Prior art keywords
- memory
- uboot
- cpu
- adaptation
- adaptation method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000006978 adaptation Effects 0.000 title claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000001514 detection method Methods 0.000 claims abstract description 7
- 238000012360 testing method Methods 0.000 claims description 10
- 238000005070 sampling Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 7
- 230000003044 adaptive effect Effects 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 230000003111 delayed effect Effects 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000002035 prolonged effect Effects 0.000 claims description 3
- 238000000151 deposition Methods 0.000 abstract 1
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种基于uboot的内存自适配方法,应用于计算机中,其实现步骤如下:在运行uboot系统进行系统引导流程时,首先对内存进行自动检测:当uboot系统第一次运行时,执行内存自适配;当uboot系统非第一次运行时,跳过内存自适配的步骤,然后再开始系统引导。本发明的一种基于uboot的内存自适配方法与现有技术相比,通过在开机过程中执行一次自动完成内存重要参数的检测和配置,提高工作效率和得到计算机精确的内存配置,适用范围广泛,实用性强。
Description
技术领域
本发明涉及计算机技术领域,具体地说是一种基于uboot的内存自适配方法。
背景技术
内存是计算机中重要的部件之一,是与CPU进行沟通的桥梁,内存的运行也决定了计算机的稳定运行,因此是计算机产品性能一个重要衡量标准。内存条是由内存芯片、电路板、金手指等部分组成的,板载内存是由表贴内存芯片、SPD芯片等直接焊接到主板上而组成的。
计算机开发厂商对于内存部分需要做硬件及软件的相应调试,以保证内存的稳定运行。在内存硬件电路调通的基础上,不论更换内存、CPU、板材、PCB设计等,都会引起物理特性的改变,从而对内存延时、供压稳定性等各种参数配置引起改变。对于大批量主板生产,内存调试完成后,鉴于每块主板的工艺差异及器件性能差异,会影响内存参数的最优选择,如果不对每块主板单独适配,也不能保证得到精确的最优配置参数。每块主板单独适配会极大增加工作量。
综上,为了满足高效、准确的实现每块主板内存的优质配置,现提出一种基于uboot的内存自适配方法。
发明内容
本发明的技术任务是针对以上不足之处,提供一种基于uboot的内存自适配方法。
一种基于uboot的内存自适配方法,应用于计算机中,其实现步骤如下:在运行uboot系统进行系统引导流程时,首先对内存进行自动检测:当uboot系统第一次运行时,执行内存自适配;当uboot系统非第一次运行时,跳过内存自适配的步骤,然后再开始系统引导。
所述内存包括内存条和板载内存贴片。
内存自适配的过程为:
首先将CPU进行热复位;
然后进行MCU初始化,读出每个与内存连接的通道中的内存SPD信息,并将SPD信息写入到配置文件中;
对CPU端和内存端的阻值进行扫描,将扫描结果写入到配置文件中;
对电压进行扫描,将扫描结果写入到配置文件中;
根据配置文件,修改内存参数,完成内存自适配。
所述CPU热复位是复位CPU相关寄存器的初始值。
读出的内存SPD信息包括内存容量,内存类型,内存颗粒的Rank数、行数、列数、DRAM宽度、是否使能ECC、是否镜像信息。
对CPU端和内存端的阻值进行扫描的过程为:每个通道,按内存端的片内终结odt与片外驱动ocd值排列组合,对CPU端的空闲、片内终结odt与片外驱动ocd阻值状态进行扫描;对扫描得出的CPU端有效值,进行数量及取值范围比较,选择最优CPU端阻值组合和对应的内存端阻值,然后将选择的内存端和CPU端的阻值转化成相应的寄存器配置值并写入相关配置文件。
所述内存端的片内终结odt的阻值状态有40Ω、34.3Ω两种情况,片外驱动ocd的阻值状态有20Ω、30Ω、40Ω、60Ω、120Ω、禁用disable六种情况,相对应的,其排列组合包括40Ω20Ω、40Ω30Ω、40Ω40Ω、40Ω60Ω、40Ω120Ω、40Ωdisable,34.3Ω20Ω、34.3Ω30Ω、34.3Ω40Ω、34.3Ω60Ω、34.3Ω120Ω、34.3Ωdisable12种状态。
根据配置文件,修改内存参数的过程为:首先根据配置文件中的内容配置内存,然后进行内存bist测试过程,将测试得出的延时值,按不同内存类型进行数据计算,修改相应的采样频率、采样步长、周期阈值、早期阈值参数。
按不同内存类型进行数据计算的过程为:首先将测试得出的延时值,按某种类型的内存进行延时,延时规律为从一端向另一端递增或递减,如果有不符合规律的则修改延迟的周期阈值,如果延时数据出现包括零的完全不在范围内的数据,则修改相应的采样频率、采样步长参数。
在内存自适配后,开始系统引导前,还包括初始化的步骤,该步骤是指在内存自适配后,通过执行函数start_armboot函数,对系统外围设备进行初始化,最终进入自动系统引导的模式,即autoboot模式下。
本发明的一种基于uboot的内存自适配方法和现有技术相比,具有以下有益效果:
本发明的一种基于uboot的内存自适配方法,通过在开机过程中执行一次自动完成内存重要参数的检测和配置,提高工作效率和得到计算机精确的内存配置,适用范围广泛,可应用于服务器、笔记本、一体机等一些计算机开发厂商,在产品出厂前做内存自适配,为开发工作带来便利,实用性强。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1为本发明的实现流程图。
附图2为本发明的具体实施流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如附图1、图2所示,本发明提供一种基于uboot的内存自适配方法,应用于计算机中,其实现步骤如下:在运行uboot系统进行系统引导流程时,首先对内存进行自动检测:当uboot系统第一次运行时,执行内存自适配;当uboot系统非第一次运行时,跳过内存自适配的步骤,然后再开始系统引导。
所述内存包括内存条和板载内存贴片。
内存自适配的过程为:
首先将CPU进行热复位;
然后进行MCU初始化,读出每个与内存连接的通道中的内存SPD信息,并将SPD信息写入到配置文件中;
对CPU端和内存端的阻值进行扫描,将扫描结果写入到配置文件中;
对电压进行扫描,将扫描结果写入到配置文件中;
根据配置文件,修改内存参数,完成内存自适配。
所述CPU热复位是复位CPU相关寄存器的初始值。
读出的内存SPD信息包括内存容量,内存类型,内存颗粒的Rank数、行数、列数、DRAM宽度、是否使能ECC、是否镜像信息。
对CPU端和内存端的阻值进行扫描的过程为:每个通道,按内存端的片内终结odt与片外驱动ocd值排列组合,对CPU端的空闲、片内终结odt与片外驱动ocd阻值状态进行扫描;对扫描得出的CPU端有效值,进行数量及取值范围比较,选择最优CPU端阻值组合和对应的内存端阻值,然后将选择的内存端和CPU端的阻值转化成相应的寄存器配置值并写入相关配置文件。
所述内存端的片内终结odt的阻值状态有40Ω、34.3Ω两种情况,片外驱动ocd的阻值状态有20Ω、30Ω、40Ω、60Ω、120Ω、禁用disable六种情况,相对应的,其排列组合包括40Ω20Ω、40Ω30Ω、40Ω40Ω、40Ω60Ω、40Ω120Ω、40Ωdisable,34.3Ω20Ω、34.3Ω30Ω、34.3Ω40Ω、34.3Ω60Ω、34.3Ω120Ω、34.3Ωdisable12种状态。
根据配置文件,修改内存参数的过程为:首先根据配置文件中的内容配置内存,然后进行内存bist测试过程,将测试得出的延时值,按不同内存类型进行数据计算,修改相应的采样频率、采样步长、周期阈值、早期阈值参数。
按不同内存类型进行数据计算的过程为:首先将测试得出的延时值,按某种类型的内存进行延时,延时规律为从一端向另一端递增或递减,如果有不符合规律的则修改延迟的周期阈值,如果延时数据出现包括零的完全不在范围内的数据,则修改相应的采样频率、采样步长参数。
在内存自适配后,开始系统引导前,还包括初始化的步骤,该步骤是指在内存自适配后,通过执行函数start_armboot函数,对系统外围设备进行初始化,最终进入自动系统引导的模式,即autoboot模式下。
具体实例:
计算机主板内存连接好,且硬件调试通过后,开机上电,在这里选用一体机主板、sodimm内存条。
运行到内存自适配流程,经过CPU热复位。
开始MCU初始化,先读出每个对应通道的SPD信,如内存容量,内存类型,内存颗粒的Rank数、row数、column数、DRAM宽度、是否使能ECC、是否mirror等;并对SPD信息进行自动检测,将SPD读取信息写入相应的配置文件。
对通道1和通道2,分别按dimm端ocd与odt值为40Ω20Ω、40Ω30Ω、40Ω40Ω、40Ω60Ω、40Ω120Ω、40Ωdisable,34.3Ω20Ω、34.3Ω30Ω、34.3Ω40Ω、34.3Ω60Ω、34.3Ω120Ω、34.3Ωdisable,等12种组合状态,对CPU端的idle、ocd和odt阻值状态进行扫描。通过计算得出在dimm端odt与ocd阻值组合为34.3Ω40Ω时,CPU端阻值有效值最多,选择其中出现频率最高的三个组合。并转化为相应的寄存器配置值分别为0x46,0x999999。完成阻值的自检测和自适配过程。
对电压Vref进行扫描,vol training 结果为b,将其写入配置文件。
根据以上配置参数配置内存后,进行内存bist过程,将扫描得出的延时值,按sodimm类型内存,延时规律为从一段向另一端递增或递减,如果有不符合规律的则修改延迟的周期阈值,如果延时数据出现零等完全不在范围内的数据,则修改相应的采样频率、采样步长等参数。至此内存自适配过程基本完成。
继续运行uboot的其他初始化过程。
进入start_armboot,对系统外围设备等进行更进一步的初始化,最终进入autoboot模式。
进入main_loop,开始系统引导、运行相关流程。
至此,带内存自适配功能的uboot引导运行过程,完成。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (9)
1.一种基于uboot的内存自适配方法,其特征在于,应用于计算机中,其实现步骤如下:在运行uboot系统进行系统引导流程时,首先对内存进行自动检测:当uboot系统第一次运行时,执行内存自适配;当uboot系统非第一次运行时,跳过内存自适配的步骤,然后再开始系统引导;
内存自适配的过程为:
首先将CPU进行热复位;
然后进行MCU初始化,读出每个与内存连接的通道中的内存SPD信息,并将SPD信息写入到配置文件中;
对CPU端和内存端的阻值进行扫描,将扫描结果写入到配置文件中;
对电压进行扫描,将扫描结果写入到配置文件中;
根据配置文件,修改内存参数,完成内存自适配。
2.根据权利要求1所述的一种基于uboot的内存自适配方法,其特征在于,所述内存包括内存条和板载内存贴片。
3.根据权利要求1所述的一种基于uboot的内存自适配方法,其特征在于,所述CPU热复位是复位CPU相关寄存器的初始值。
4.根据权利要求1所述的一种基于uboot的内存自适配方法,其特征在于,读出的内存SPD信息包括内存容量,内存类型,内存颗粒的Rank数、行数、列数、DRAM宽度、是否使能ECC、是否镜像信息。
5.根据权利要求1所述的一种基于uboot的内存自适配方法,其特征在于,对CPU端和内存端的阻值进行扫描的过程为:每个通道,按内存端的片内终结odt与片外驱动ocd值排列组合,对CPU端的空闲、片内终结odt与片外驱动ocd阻值状态进行扫描;对扫描得出的CPU端有效值,进行数量及取值范围比较,选择最优CPU端阻值组合和对应的内存端阻值,然后将选择的内存端和CPU端的阻值转化成相应的寄存器配置值并写入相关配置文件。
6.根据权利要求5所述的一种基于uboot的内存自适配方法,其特征在于,所述内存端的片内终结odt的阻值状态有40Ω、34.3Ω两种情况,片外驱动ocd的阻值状态有20Ω、30Ω、40Ω、60Ω、120Ω、disable六种情况,相对应的,其排列组合包括40Ω20Ω、40Ω30Ω、40Ω40Ω、40Ω60Ω、40Ω120Ω、40Ωdisable,34.3Ω20Ω、34.3Ω30Ω、34.3Ω40Ω、34.3Ω60Ω、34.3Ω120Ω、34.3Ωdisable12种状态。
7.根据权利要求1所述的一种基于uboot的内存自适配方法,其特征在于,根据配置文件,修改内存参数的过程为:首先根据配置文件中的内容配置内存,然后进行内存bist测试过程,将测试得出的延时值,按不同内存类型进行数据计算,修改相应的采样频率、采样步长、周期阈值、早期阈值参数。
8.根据权利要求7所述的一种基于uboot的内存自适配方法,其特征在于,按不同内存类型进行数据计算的过程为:首先将测试得出的延时值,按某种类型的内存进行延时,延时规律为从一端向另一端递增或递减,如果有不符合规律的则修改延迟的周期阈值,如果延时数据出现包括零的完全不在范围内的数据,则修改相应的采样频率、采样步长参数。
9.根据权利要求1-8任一所述的一种基于uboot的内存自适配方法,其特征在于,在内存自适配后,开始系统引导前,还包括初始化的步骤,该步骤是指在内存自适配后,通过执行函数start_armboot函数,对系统外围设备进行初始化,最终进入自动系统引导的模式,即autoboot模式下。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710713674.XA CN107451023B (zh) | 2017-08-18 | 2017-08-18 | 一种基于uboot的内存自适配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710713674.XA CN107451023B (zh) | 2017-08-18 | 2017-08-18 | 一种基于uboot的内存自适配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107451023A CN107451023A (zh) | 2017-12-08 |
CN107451023B true CN107451023B (zh) | 2019-12-03 |
Family
ID=60492559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710713674.XA Active CN107451023B (zh) | 2017-08-18 | 2017-08-18 | 一种基于uboot的内存自适配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451023B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108537044A (zh) * | 2018-04-10 | 2018-09-14 | 济南浪潮高新科技投资发展有限公司 | 一种基于U-Boot的内存自适配方法、装置及系统 |
CN109918264B (zh) * | 2019-02-27 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种自动识别内存信息的方法,系统,设备及可读存储介质 |
CN110929659B (zh) * | 2019-11-28 | 2023-04-18 | 中国人民解放军国防科技大学 | 基于自适应调整步长的大数据作业采样方法和装置 |
CN114020211B (zh) * | 2021-10-12 | 2024-03-15 | 深圳市广和通无线股份有限公司 | 存储空间管理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847104A (zh) * | 2010-05-19 | 2010-09-29 | 深圳市九洲电器有限公司 | 一种内存参数的配置方法、系统及嵌入式设备 |
CN104572365A (zh) * | 2013-10-18 | 2015-04-29 | 中国长城计算机深圳股份有限公司 | 一种内存自适配方法及装置 |
-
2017
- 2017-08-18 CN CN201710713674.XA patent/CN107451023B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101847104A (zh) * | 2010-05-19 | 2010-09-29 | 深圳市九洲电器有限公司 | 一种内存参数的配置方法、系统及嵌入式设备 |
CN104572365A (zh) * | 2013-10-18 | 2015-04-29 | 中国长城计算机深圳股份有限公司 | 一种内存自适配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107451023A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451023B (zh) | 一种基于uboot的内存自适配方法 | |
US9536590B1 (en) | System and method of memory electrical repair | |
DE102011087105B4 (de) | Verfahren zum Erzeugen einer Betriebsspannung in einem nichtflüchtigen Speicherelement und nichtflüchtiges Speicherelement | |
US8725938B2 (en) | Apparatus, system, and method for testing physical regions in a solid-state storage device | |
DE102011089889A1 (de) | Verfahren zum Booten eines Informationshandhabungssystems und Informationshandhabungssystem | |
DE102006002526B4 (de) | Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben | |
DE112009000431B4 (de) | Prozessorbasiertes system, nichtflüchtiger cachespeicher und verfahren zum nutzen eines nichtflüchtigen cachespeichers | |
EP3324411A1 (en) | A method and apparatus for dynamic memory termination | |
JP2011159380A (ja) | 可変抵抗メモリ装置、その動作方法、及びそれを含むメモリシステム | |
KR102646905B1 (ko) | 온 다이 터미네이션 회로, 이를 구비하는 메모리 장치 및 메모리 시스템 | |
WO2018075118A1 (en) | Software mode register access for platform margining and debug | |
US10055366B2 (en) | Method for data transmission and server for implementing the method | |
TWI694378B (zh) | 記憶體介面的阻抗組態方法及電腦程式產品 | |
US11495281B2 (en) | Write interamble counter | |
US9437311B1 (en) | Flash memory apparatus and initialization method for programming operation thereof | |
CN110390980A (zh) | 存储模块 | |
US7984326B2 (en) | Memory downsizing in a computer memory subsystem | |
DE102009004565B4 (de) | Vorrichtung und Verfahren zum Zwischenspeichern von Daten zwischen Speichercontroller und DRAM | |
US20170103797A1 (en) | Calibration method and device for dynamic random access memory | |
US20070118682A1 (en) | Method and apparatus for interfacing and managing NAND flash memory | |
TW201020716A (en) | Methods and apparatuses for determining quality parameters of control signals of memory modules | |
CN114783503A (zh) | 存储器接口的阻抗配置装置 | |
WO2021119194A1 (en) | Active input/output expander of a memory sub-system | |
US8001443B2 (en) | Data storage apparatus, data storage controller, and related automated testing method | |
US8249819B1 (en) | Virtual binning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20191104 Address after: 250100 Ji'nan high tech Zone, Shandong, No. 1036 wave road Applicant after: Tidal Group Co., Ltd. Address before: 250100, Ji'nan province high tech Zone, Sun Village Branch Road, No. 2877, building, floor, building, on the first floor Applicant before: Ji'nan wave high and New Technology Investment Development Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |