Your flash chip is in an unknown state. - ch341a
Hi Dennis, looks like an issue with your physical setup. More below... On 21.09.24 22:41, Dennis Schneck via Flashprog wrote:
$ ./flashprog -p ch341a_spi -w ~/w541/coreboot-bottom.rom --progress [...] Erasing... [> ] 0% FAILED at 0x000038ff! Expected=0xff, Found=0xfe, failed byte count from 0x00003000-0x00003fff: 0x28a
This means everything from 0x3000 to 0x38fe seems erased. So it's actually likely that the erase worked, but the read to verify that it worked failed. When reading fails, you could say all bets are off. There's two common issues: 1. wiring could be too long, we recommend <20cm total lengths from programmer to flash chip. 2. powering could be insufficient which can be very tricky with in-system program- ming (when the flash chip is on a mainboard). And there's a peculiarity about the W541 ThinkPad. It has two flash chips and you have to account for both even if you want to flash only one. I found this in the libreboot documentation [1]: When you wire the clip, to flash one of the ICs, the same voltage rail also turns on the other IC and the other IC’s own chip-select is in a floating state, which in practise means random logic state; in other words, the other flash may or may not be active, randomly. This means that external flashing would not ordinarily work, unless you use the following trick: Use a test hook wired to VCC (+3.3v), to pull the other flash’s chip- select high. So: when flashing one of the two ICs, the other chip must have pin 1 connected to VCC. You can do this with the same 3.3v power source that you use on pin 8 of the chip that you’re flashing. Ideally you should pull the other chip select high via 47ohm resistor, which should be enough to prevent damage in the case of accidentally shorting the wrong pin. I hope this helps you to get into the right direction. If you seem out of options, don't hesitate to ask again. Nico [1] https://libreboot.org/docs/install/w541_external.html
participants (2)
-
Dennis Schneck
-
Nico Huber