[coreboot] C720 swapparoo
Aaron Durbin
adurbin at chromium.org
Wed Jan 29 23:49:13 CET 2014
On Wed, Jan 29, 2014 at 4:44 PM, John Lewis <jlewis at johnlewis.ie> wrote:
> On 29/01/14 22:27, Aaron Durbin wrote:
>>
>> On Wed, Jan 29, 2014 at 4:25 PM, Aaron Durbin <adurbin at google.com> wrote:
>>>
>>> On Wed, Jan 29, 2014 at 4:16 PM, John Lewis <jlewis at johnlewis.ie> wrote:
>>>>
>>>> On 29/01/14 22:03, Aaron Durbin wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> This is where we reach the crux of the matter - In the stock/shellball
>>>>>> firmware, extracting BOOT_STUB doesn't yield a file which cbfstool in
>>>>>> upstream coreboot or CrOS coreboot can decipher. Looking at the file
>>>>>> in
>>>>>> hexedit it appears to be almost identical to a CBFS that is
>>>>>> recognised,
>>>>>> but
>>>>>> that's it. I have managed to extract the SVGA binary from the CBFS in
>>>>>> the
>>>>>> RW_LEGACY slot, and I've made an educated guess as to where the
>>>>>> system-agent
>>>>>> begins and ends in the unrecognised CBFS (section beginning "LARCHIVE
>>>>>> mrc.bin" or similar with the binary itself following, surrounded by
>>>>>> FF's)
>>>>>> copying and pasting it to a file. I would like to know if I am correct
>>>>>> in
>>>>>> my
>>>>>> assumptions about extracting that file manually and what size it
>>>>>> should
>>>>>> be,
>>>>>> in bytes?
>>>>>>
>>>>>
>>>>> That's interesting. It is just a regular 'ol cbfs. The images that
>>>>> shipped with your device is an 8MiB SPI. First 2MiB Duncan covered.
>>>>> The next 5 have nothing to do w/ coreboot proper -- all the extra
>>>>> vboot firmware bits. The last 1MiB is the cbfs.
>>>>>
>>>>
>>>> Okay, well I extracted the attached file using:
>>>>
>>>> eval `./fmap_decode bios.bin | grep BOOT_STUB`
>>>> dd if=c720.rom ibs=$((area_offset)) skip=1 | dd bs=$((area_size))
>>>> iflag=fullblock of=c720-coreboot.bin
>>>>
>>>> and:
>>>>
>>>> ../coreboot/build/cbfstool c720-coreboot.bin print
>>>>
>>>> produces:
>>>>
>>>> c720-coreboot.bin:
>>>> 1024 kB, bootblocksize 3144, romsize 8388608, offset 0x700000
>>>> alignment: 64 bytes
>>>>
>>>> Name Offset Type Size
>>>>
>>>> zippo.
>>>>
>>>
>>> Try cherry-picking this one:
>>> https://chrome-internal-review.googlesource.com/153037
>>
>>
>> Ugh. If only my copy/past worked. Try this one instead:
>> http://review.coreboot.org/#/c/4771/
>>
>
> Okay. I ran:
>
> git fetch http://review.coreboot.org/coreboot refs/changes/71/4771/1 && git
> checkout FETCH_HEAD
>
> then ran make, which updated the binary, but still no change in reading the
> file.
>
> I also compiled and ran the cbfstool in ./util in case that was somehow
> different, but same result.
I did this w/ the ChromeOS coreboot:
$ dd if=/dev/zero of=spi.bin bs=1M count=7
$ cat spi.bin c720-coreboot.bin > c720-coreboot-8MiB.bin
$ cbfstool c720-coreboot-8MiB.bin print
c720-coreboot-8MiB.bin: 8192 kB, bootblocksize 3144, romsize 8388608,
offset 0x700000
alignment: 64 bytes, architecture: x86
Name Offset Type Size
cmos_layout.bin 0x700000 cmos_layout 1164
pci8086,0406.rom 0x7004c0 optionrom 65536
cpu_microcode_blob.bin 0x710500 microcode 41024
config 0x71a5c0 raw 5541
fallback/vboot 0x71bbc0 stage 15081
(empty) 0x71f700 null 2136
fallback/romstage 0x71ff80 stage 42497
fallback/coreboot_ram 0x72a600 stage 91421
fallback/payload 0x740b80 payload 54921
u-boot.dtb 0x74e280 (unknown) 7923
(empty) 0x7501c0 null 327128
mrc.bin 0x79ffc0 (unknown) 190180
(empty) 0x7ce700 null 120984
spd.bin 0x7ebfc0 (unknown) 1792
(empty) 0x7ec700 null 76888
The file you use with cbfstool needs to match the header rom size. In
this case it is 8MiB.
Hope that helps.
-Aaron
More information about the coreboot
mailing list