Commit Graph

4 Commits

Author SHA1 Message Date
Che-Liang Chiou
9522b84029 Add EntryWiped to pack_firmware_image
EntryWiped takes a byte value wipe_value of range [00:ff] as one of its
arguments that pack_firmware_image uses the value to "wipe" the entry.

R=yjlou@chromium.org
BUG=chrome-os-partner:3089
TEST=emerge-tegra2_seaboard chromeos-bios

Review URL: http://codereview.chromium.org/6799009

Change-Id: Ib2265caf5cfbd6d297465684e87f5a299cd4d043
2011-04-07 15:13:30 +08:00
Che-Liang Chiou
b6a29ad339 Allow overlap between "pure" fmap areas
Firmware specification has several sections that are overlapped. This CL allows
limited overlapping that only "pure" fmap areas can be overlapped.

See also CL=6694022,6696016 for its application.

BUG=chrome-os-partner:2333
TEST=emerge vboot_reference && emerge-${ARM_BOARD} chromeos-bios

Review URL: http://codereview.chromium.org/6677040

Change-Id: I9ca34caec3665136b1babd08cd074cf733cf0d51
2011-03-16 12:58:38 +08:00
Che-Liang Chiou
31b206f218 Change pack_firmware_image::EntryBlob behavior
Old: Trim input file when it is larger than specified firmware section length

New: Raise exception when such thing happens

BUG=none
TEST=manual

$ cat > config <<EOF
OUTPUT='/dev/null'
SIZE=1024
ENTRIES = [
  EntryBlob(offset=0, length=1, name='', flags=0, path='../LICENSE')
]
EOF
$ ./pack_firmware_image config
Traceback (most recent call last):
  File "./pack_firmware_image", line 266, in <module>
    main()
  File "./pack_firmware_image", line 260, in main
    pack_firmware_image(env['ENTRIES'], env['OUTPUT'], env['SIZE'])
  File "./pack_firmware_image", line 227, in pack_firmware_image
    entry.Pack(firmware_image, entries)
  File "./pack_firmware_image", line 133, in Pack
    raise PackError('blob too large: %d > %d' % (size, self.length))
__main__.PackError: blob too large: 1566 > 1

Review URL: http://codereview.chromium.org/6459017

Change-Id: I0b0fb8af37fc3ac055164c362278f32f93944ab4
2011-02-10 14:46:21 +08:00
Che-Liang Chiou
b0310a7972 Add firmware image packing tool
BUG=chromium-os:1302
TEST=manual

(cros) $ cd vboot_reference/utility/
(cros) $ cat > test_config <<EOF
KEYDIR = '/usr/share/vboot/devkeys/'
OUTPUT = 'image.bin'
SIZE = 1 << 20 # 1 MB
ENTRIES = [
  EntryFmap(name='FMAP',
        offset=0x00000000, length=0x00001000,
        ver_major=1, ver_minor=0, base=0x00000000, size=SIZE),
  EntryKeyBlock(name='Firmware A Key',
        offset=0x00010000, length=0x00010000,
        flags=FMAP_AREA_STATIC,
        keyblock=KEYDIR + 'firmware.keyblock',
        signprivate=KEYDIR + 'firmware_data_key.vbprivk',
        version=1,
        fv=INPUT_FILE,
        kernelkey=KEYDIR + 'kernel_subkey.vbpubk'),
  EntryBlob(name='Test Data',
        offset=0x00020000, length=0x000e0000,
        flags=FMAP_AREA_STATIC | FMAP_AREA_COMPRESSED,
        path=INPUT_FILE),
]
EOF
(cros) $ ./pack_firmware_image test_config INPUT_FILE=./pack_firmware_image; echo $?
0
(cros) $ dump_fmap image.bin
opened image.bin
hit at 0x00000000
fmap_signature   __FMAP__
fmap_version:    1.0
fmap_base:       0x0
fmap_size:       0x00100000 (1048576)
fmap_name:       FMAP
fmap_nareas:     2
area:            1
area_offset:     0x00010000
area_size:       0x00010000 (65536)
area_name:       Firmware A Key
area:            2
area_offset:     0x00020000
area_size:       0x000e0000 (917504)
area_name:       Test Data

Review URL: http://codereview.chromium.org/5985009

Change-Id: I24aafc5788309adb1987035d87efac6262140c9c
2011-01-06 11:05:05 +08:00