On Thu, Jul 22, 2021 at 3:56 PM James Feeney <ja...@nurealm.net> wrote:
>
> On 7/3/21 8:22 AM, Matt DeVillier wrote:
>
> Thanks for that.
>
> > I don't see the command you used to flash -- what was that? You also
> > didn't clear the WP range (flashrom --wp-range 0,0) which has
> > historically been needed on small core/Atom boards, but if you didn't
> > get an error flashing/erasing then you're probably fine.
>
> >> $ flashrom -p host -l layout.txt -i BIOS  -w coreboot.rom
>
> The write-protect range was already 0,0, so I didn't bother with setting that.
>
> > display backlight means it's booted to ramstage, since that's where
> > FSP-S will init the backlight. It most likely means coreboot ran
> > successfully and the payload is the issue.
> >
> > How to debug? Get yourself a Suzy-Q cable, rebuild with the serial
> > console enabled, flash via Suzy-Q, and then monitor via the
> > /dev/ttyUSB1 serial port (CPU UART)
> >
> > see:
> > https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md
> > https://wiki.mrchromebox.tech/Unbricking#Unbricking.2FFlashing_with_a_Suzy-Q_cable
> >
>
> I finally received a SuzyQable.  There was a supply issue.
>
> And, after lots of reading at
>
> https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_cr50.md
>
> and related, followed by a bit of trial and error, and then observing the AP 
> console, the boot sequence ends with
>
> ...
> CBFS: Found 'fallback/payload' @0xf2d00 size 0x3ce03
> Checking segment from ROM address 0xffc3402c
> Checking segment from ROM address 0xffc34048
> Loading segment from ROM address 0xffc3402c
>   code (compression=1)
>   New segment dstaddr 0x01110000 memsize 0x8ccd4 srcaddr 0xffc34064 filesize 
> 0x3cdcb
> Loading Segment: addr: 0x01110000 memsz: 0x000000000008ccd4 filesz: 
> 0x000000000003cdcb
> using LZMA
> Loading segment from ROM address 0xffc34048
>   Entry Point 0x01110015
> BS: BS_PAYLOAD_LOAD run times (exec / console): 147 / 46 ms
> CSE FWSTS1: 0x80000245
> CSE FWSTS2: 0x30850000
> CSE FWSTS3: 0x00000000
> CSE FWSTS4: 0x00080000
> CSE FWSTS5: 0x00000000
> CSE FWSTS6: 0x40000000
> ME: Manufacturing Mode      : NO
> ME: FPF status              : fused
> Putting xHCI port 0 into host mode.
> xHCI port 0 host switch over took 0 ms
> BS: BS_PAYLOAD_LOAD exit times (exec / console): 17 / 28 ms
> mp_park_aps done after 0 msecs.
> Jumping to boot code at 0x01110015(0x79b38000)
>
>
> And then - nothing - other than that the screen backlight comes on.
>
> So yes, as you say, seems like coreboot works, and my u-boot does not.
>
>
> > if you want to try a tested/verified prebuilt image w/Tianocore
> > payload, you can use:
> > https://mrchromebox.tech/test/fw/coreboot_tiano-bluebird-mrchromebox_20210621.rom
> > https://mrchromebox.tech/test/fw/coreboot_tiano-bluebird-mrchromebox_20210621.rom.sha1
> >
>
>
> Compiling flashrom from from both
>
> git clone https://chromium.googlesource.com/chromiumos/third_party/flashrom
> WARNERROR=no CONFIG_MEC1308=no CONFIG_ENE_LPC=no make
>
> and
>
> git clone 
> https://chromium.googlesource.com/chromiumos/platform/standalone-hdctools
> flashrom install
>
> which seem to act the same, and then running
>
> sudo ./flashrom -p raiden_debug_spi:target=AP
>
> I get "No EEPROM/flash device found".  Running with -V, I see flashrom is 
> just reading all 1's.

you need to open the CCD first. With the battery disconnected, from a
terminal attached to /dev/ttyUSB0, run:
ccd open
ccd reset factory
ccd

that should show the ccd state as open, with all capabilities in
column 1 set to 'Y'.

then flashrom will be able to detect / read / write the flash chip

>
> Hmm.  Nothing I can do until this is made to work.
>
> While waiting for the SuzyQable, I had tried reading the flash memory with 
> the TUMPA flash programmer.  No joy.  I suppose it is possible that I may 
> have burned-out something on the Chromebook board.  However, this seems 
> highly unlikely, because the AP can still boot from the flash memory, and 
> because of the apparent circuit layout.  While I do not have a schematic for 
> this Samsung Chromebook 4, listening to
>
> OSFC 2018 - Google Secure Microcontroller and CCD | Vadim Bendebury
> Oct 2, 2018
> https://www.youtube.com/watch?v=gC-lbMNmIsg
>
> and noting particularly the block diagram in slide 9, from
>
> https://2018.osfc.io/talks/google-secure-microcontroller-and-ccd-closed-case-debugging.html
> https://2018.osfc.io/uploads/talk/paper/7/gsc_copy.pdf
>
> - the "AP PROG" AND "EC PROG" labels on H1 are backwards - it very much 
> appears that both the AP and the Google H1 security chip access the AP flash 
> through a separate multiplexer chip of some kind.  As best as I can tell, 
> there is a kind of multiplexer *internal* to the H1, as seen in slide 2, 
> which connects the GPIO pins to the internal hardware protocol blocks, and 
> another *external* multiplexer that separates the AP and EC SPI buses.  Any 
> overloads, applied from attaching a flash programmer to the flash memory, 
> would seem likely to have effected access to flash memory equally, by *both* 
> the H1 and the AP.  And that is not the case here.  It also seems unlikely 
> that the SPI circuitry would have been built without any kind of circuit 
> protection.  But again, I have not seen the actual circuit schematic.  Still, 
> it would be a very odd kind of circuit failure to have damaged the opposite 
> end of only one multiplexer port.  I also note that the operation of the 
> Cr50, AP, and EC consol
 es seems entirely as might be expected.
>
> So Matt - question:  Have you been able read the AP flash memory of an actual 
> Samsung Chromebook 4, model XE350XBA-K01US, using a SuzyQable?

see above, the ccd being closed w/default capabilities set is
preventing the flash chip from being visible/read/written.

I've used ccd to read/write many an AP flash, including APL/GLK Chromebooks.

>
> If you have actual experience with the Samsung Chromebook 4, then I must 
> infer that I've broken the hardware.  That would be possible if the GoldLake 
> CPU and H1 SPI bus lines were really connected together directly, without any 
> separate multiplexer chip.  Otherwise, I am inclined to question this version 
> of flashrom.  For instance, I notice that the Cr50 console reports explicitly
>
> [10398.332186 enable_spi_pinmux: AP]
>
> and, after access,
>
> [10398.445490 usb_spi_board_disable]
> [10399.512358 AP UART on]
> [10399.514036 CCD state: UARTAP+TX UARTEC+TX I2C SPI USBEC+TX]
>
> but never explicitly says "usb_spi_board_enable" - though I have no idea if 
> that means anything.
>
> Still, it seems possible that Cr50 may be able to read the AP flash memory, 
> but then "hides" the output because of some "security" mechanism, or that 
> this version of flashrom is having some kind of Cr50 communication problem, 
> giving all 1's.  It is also remotely possible that Cr50 has an SPI software 
> bug.  SPI is a little weird in that the clock polarity and the clock phase, 
> with respect to reading data, varies from manufacturer to manufacturer.  The 
> clock has to be exactly right for this GD25LQ128D chip.
>
> Clearly, coreboot itself is having no trouble reading boot flash memory.  I 
> wonder if the same is true for my version of u-boot.  I expect that u-boot 
> has to have its own SPI driver for AP flash memory?  Or, does coreboot just 
> load the payload to RAM, and then that's the end of boot flash access?

the latter :)

>
> Any thoughts?
>
> Thanks
> James
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to