36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
|
# mrc.bin
|
||
|
|
||
|
All Haswell boards supported by coreboot currently require a proprietary
|
||
|
blob in order to initialise the DRAM and a few other components. The
|
||
|
blob, named `mrc.bin`, largely consists of Intel's memory reference code
|
||
|
(MRC), but it has been tailored specifically for Chrome OS. It is just
|
||
|
under 200 KiB in size. Another name for `mrc.bin` is the system agent
|
||
|
binary.
|
||
|
|
||
|
Having a replacement for `mrc.bin` using native coreboot code is very
|
||
|
much desired, but it is not an easy task.
|
||
|
|
||
|
## Obtaining mrc.bin
|
||
|
|
||
|
Unfortunately, it is not currently possible to distribute `mrc.bin` as
|
||
|
part of coreboot. Though, it can be obtained from a Haswell Chromebook
|
||
|
or Chromebox firmware image, and you might find one online. `mrc.bin`
|
||
|
can be extracted with the following command. If extracting from a
|
||
|
"standard" coreboot image, omit `-r RO_SECTION`.
|
||
|
|
||
|
```bash
|
||
|
cbfstool coreboot.rom extract -f mrc.bin -n mrc.bin -r RO_SECTION
|
||
|
```
|
||
|
|
||
|
Now, place `mrc.bin` in the root of the coreboot directory.
|
||
|
Alternatively, place `mrc.bin` anywhere you want, and set `MRC_FILE` to
|
||
|
its location when building coreboot.
|
||
|
|
||
|
## ECC DRAM
|
||
|
|
||
|
When `mrc.bin` has finished executing, ECC is active on the channels
|
||
|
populated with ECC DIMMs. However, `mrc.bin` was tailored specifically
|
||
|
for Haswell Chromebooks and Chomeboxes, none of which support ECC DRAM.
|
||
|
While ECC likely functions correctly, it is advised to further validate
|
||
|
the correct operation of ECC if data integrity is absolutely critical.
|