CBFS: Difference between revisions

From coreboot
Jump to navigation Jump to search
m (Fixed old link to new in the current git tree)
No edit summary
Line 2: Line 2:


See [http://review.coreboot.org/gitweb?p=coreboot.git;a=blob_plain;f=documentation/cbfs.txt;hb=HEAD cbfs.txt] for details.
See [http://review.coreboot.org/gitweb?p=coreboot.git;a=blob_plain;f=documentation/cbfs.txt;hb=HEAD cbfs.txt] for details.
== CBFS master header ==
All values are big endian coded.
{| class="wikitable"
! style="width: 3em;" | Offset
! style="width: 3em;" | 0
! style="width: 3em;" | 1
! style="width: 3em;" | 2
! style="width: 3em;" | 3
! style="width: 3em;" | 4
! style="width: 3em;" | 5
! style="width: 3em;" | 6
! style="width: 3em;" | 7
! style="width: 3em;" | 8
! style="width: 3em;" | 9
! style="width: 3em;" | A
! style="width: 3em;" | B
! style="width: 3em;" | C
! style="width: 3em;" | D
! style="width: 3em;" | E
! style="width: 3em;" | F
|-
| 0x00
! colspan="4"| magic = "ORBC"
! colspan="4"| version
! colspan="4"| romsize
! colspan="4"| bootblocksize
|-
| 0x10
! colspan="4"| align
! colspan="4"| offset
! colspan="4"| architecture
! colspan="4"| padding
|-
|}
The meaning of each member is as follows:
* '''magic''' is a 32 bit number that identifies the ROM as a CBFS type.  The magic number is 0x4F524243, which is 'ORBC' in ASCII.
* '''version''' is a version number for CBFS header. cbfs_header structure may be different if version is not matched.
* '''romsize''' is the size of the ROM in bytes.  Coreboot will subtract 'size' from 0xFFFFFFFF to locate the beginning of the ROM in memory.
* '''bootblocksize''' is the size of bootblock reserved in firmware image.
* '''align''' is the number of bytes that each component is aligned to within the ROM.  This is used to make sure that each component is aligned correctly with regards to the erase block sizes on the ROM - allowing one to replace a component at runtime without disturbing the others.
* '''offset''' is the offset of the the first CBFS component (from the start of the ROM).  This is to allow for arbitrary space to be left at the beginning of the ROM for things like embedded controller firmware.
* '''architecture''' describes which architecture (x86, arm, ...) this CBFS is created for.

Revision as of 23:40, 22 January 2014

The coreboot CBFS Specification was originally announced here.

See cbfs.txt for details.

CBFS master header

All values are big endian coded.

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00 magic = "ORBC" version romsize bootblocksize
0x10 align offset architecture padding

The meaning of each member is as follows:

  • magic is a 32 bit number that identifies the ROM as a CBFS type. The magic number is 0x4F524243, which is 'ORBC' in ASCII.
  • version is a version number for CBFS header. cbfs_header structure may be different if version is not matched.
  • romsize is the size of the ROM in bytes. Coreboot will subtract 'size' from 0xFFFFFFFF to locate the beginning of the ROM in memory.
  • bootblocksize is the size of bootblock reserved in firmware image.
  • align is the number of bytes that each component is aligned to within the ROM. This is used to make sure that each component is aligned correctly with regards to the erase block sizes on the ROM - allowing one to replace a component at runtime without disturbing the others.
  • offset is the offset of the the first CBFS component (from the start of the ROM). This is to allow for arbitrary space to be left at the beginning of the ROM for things like embedded controller firmware.
  • architecture describes which architecture (x86, arm, ...) this CBFS is created for.