Developer Manual/RAM init: Difference between revisions

From coreboot
Jump to navigation Jump to search
(fill in some information)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
One of the most important tasks of coreboot is to initialize your system RAM.
=== Introduction ===
One of the most important tasks of coreboot is to '''initialize your system RAM'''.
 
This initialization depends on the type of RAM in your motherboard. To detect the type of RAM the
SPD (Serial Presence Detect) must be read for each DIMM. This reading is done using I2C communication using one of the [[Developer Manual/I2C]] buses on the motherboard. The exact method of reading depends on the motherboard.
 
Coreboot supports two methods to initialize your RAM:
* native RAM init
* using the MRC blob
 
=== Main Goals ===
* Use highest clock-rate supported by the board and every DIMM installed
* Find common settings like CAS Latency
* Calibrate delay units, impedance and driver strength


=== SDRAM ===
=== SDRAM ===
Line 10: Line 23:
* http://support.intel.com/design/chipsets/datashts/290656.htm
* http://support.intel.com/design/chipsets/datashts/290656.htm
* http://download.intel.com/design/chipsets/datashts/29065602.pdf
* http://download.intel.com/design/chipsets/datashts/29065602.pdf
* http://www.intel.com/Assets/PDF/datasheet/307502.pdf
* http://www.intel.com/assets/pdf/datasheet/318463.pdf


Sample SDRAM datasheets:
Sample SDRAM datasheets:
Line 17: Line 32:


=== DDR ===
=== DDR ===
Duties:
* Configure extended mode register
* Configure load mode register


=== DDR2 ===
=== DDR2 ===
Duties:
* program Mode Registers and Extended Mode Registers
* calibrate On-Die-Termination resistors
* set output drive levels
* find working command rate (1T or 2T)


=== DDR3 ===
=== DDR3 ===
To easy PCB design the fly-by topology has been adopted. It requires additional measurements and calibration in comparison to DDR2.
Duties:
* program Mode Registers and Extended Mode Registers
* calibrate On-Die-Termination resistors and dynamic On-Die-Termination resistors
* compensate delay between DQS and DQ signals
* compensate delay between CMD and DQ signals
* find working command rate (1T or 2T)
* set output driver strength


=== Resources ===
=== Resources ===
* http://www.rampedia.org/


SDRAM:
SDRAM:
Line 38: Line 71:
DDR2 SDRAM
DDR2 SDRAM
* [http://www.jedec.org/download/search/JESD79-2C.pdf JEDEC DDR2 Standard] (PDF)
* [http://www.jedec.org/download/search/JESD79-2C.pdf JEDEC DDR2 Standard] (PDF)
* [http://www.jedec.org/download/search/4_01_02_04R13.PDF JEDEC DDR2 SPD Standard] (PDF)
* [http://www.simmtester.com/PAGE/news/showpubnews.asp?where=373939&num=139 DDR2 DIMM SPD Definition]
* [http://www.simmtester.com/PAGE/news/showpubnews.asp?where=373939&num=139 DDR2 DIMM SPD Definition]
<!-- TODO: Add datasheet links (Micron ones are very good) -->
* Micron DDR2 Datasheets: [http://download.micron.com/pdf/datasheets/modules/ddr2/HTF16C64_128_256x64AG.pdf 512MB-2GB] [http://download.micron.com/pdf/datasheets/modules/ddr2/HTF16C64_128_256x64A.pdf 512MB-4GB]


DDR3 SDRAM
DDR3 SDRAM
Line 48: Line 80:
* [http://www.simmtester.com/PAGE/news/showpubnews.asp?num=153 Understanding DDR3 Serial Presence Detect (SPD) Table]
* [http://www.simmtester.com/PAGE/news/showpubnews.asp?num=153 Understanding DDR3 Serial Presence Detect (SPD) Table]


Note: Micron lists SPD values for all the memory they produce. This really helps when trying to trouble shoot memory and SPD values. [http://www.micron.com/support/part_info/spd Micron SPD Lookup]
'''Note:''' Micron lists SPD values for all the memory they produce. This really helps when trying to trouble shoot memory and SPD values. [http://www.micron.com/support/part_info/spd Micron SPD Lookup].

Latest revision as of 07:24, 12 October 2015

Introduction

One of the most important tasks of coreboot is to initialize your system RAM.

This initialization depends on the type of RAM in your motherboard. To detect the type of RAM the SPD (Serial Presence Detect) must be read for each DIMM. This reading is done using I2C communication using one of the Developer Manual/I2C buses on the motherboard. The exact method of reading depends on the motherboard.

Coreboot supports two methods to initialize your RAM:

  • native RAM init
  • using the MRC blob

Main Goals

  • Use highest clock-rate supported by the board and every DIMM installed
  • Find common settings like CAS Latency
  • Calibrate delay units, impedance and driver strength

SDRAM

There are a number of steps you have to perform to properly initialize SDRAM. This depends on the chipset, as well as the DIMMs which are inserted into the mainboard (and their properties, such as CAS latencies, and so on).

Sample northbridge datasheets:

Sample SDRAM datasheets:

DDR

Duties:

  • Configure extended mode register
  • Configure load mode register

DDR2

Duties:

  • program Mode Registers and Extended Mode Registers
  • calibrate On-Die-Termination resistors
  • set output drive levels
  • find working command rate (1T or 2T)

DDR3

To easy PCB design the fly-by topology has been adopted. It requires additional measurements and calibration in comparison to DDR2.

Duties:

  • program Mode Registers and Extended Mode Registers
  • calibrate On-Die-Termination resistors and dynamic On-Die-Termination resistors
  • compensate delay between DQS and DQ signals
  • compensate delay between CMD and DQ signals
  • find working command rate (1T or 2T)
  • set output driver strength

Resources

SDRAM:

DDR SDRAM:

DDR2 SDRAM

DDR3 SDRAM

Note: Micron lists SPD values for all the memory they produce. This really helps when trying to trouble shoot memory and SPD values. Micron SPD Lookup.