Coreboot - Initializing DRAM

Initializing DRAM

The most difficult hardware that coreboot initializes is the DRAM controllers and DRAM. In some cases, technical documentation on this subject is NDA restricted or unavailable. RAM initialization is particularly difficult because before the RAM is initialized it cannot be used. Therefore, to initialize DRAM controllers and DRAM, the initialization code may have only the CPU's general purpose registers or Cache-as-RAM as temporary storage.

romcc, a C compiler that uses registers instead of RAM, eases the task. Using romcc, it is relatively easy to make SMBus accesses to the SPD ROMs of the DRAM DIMMs, that allows the RAM to be used.

With newer x86 processors, the processor cache can be used as RAM until DRAM is initialized. The processor cache has to be initialized into Cache-as-RAM mode as well, but this needs fewer instructions than initializing DRAM. Also, the Cache-as-RAM mode initialization is specific to CPU architectures, thus more generic than DRAM initialization, which is specific to each chipset and mainboard.

Read more about this topic:  Coreboot

Famous quotes containing the word dram:

    Let me have
    A dram of poison, such soon-speeding gear
    As will disperse itself through all the veins
    That the life-weary taker may fall dead,
    And that the trunk may be discharged of breath
    As violently as hasty powder fired
    Doth hurry from the fatal cannon’s womb.
    William Shakespeare (1564–1616)