flashrom progress report #1

Getting the flashrom 0.9.2 release out of the door was a really labor-intensive process because we wanted to make 0.9.2 the 1000th commit in the repository. That worked and 0.9.2 is a really nice release with no known regressions, but a lot more features and improved reliability. Speaking from experience of the last 3 releases, acting as release manager is really a full-time job and will not leave any spare time for developing cool features.

flashrom GSoC development is right on track. So far, I have posted patches for:

  • Support for non-x86 architectures (all programmers). Right now flashrom assumes native little-endian access to everything. This assumption means a lot of code is unsafe and has to be converted to explicit-endian accesses. The first goal was to be able to compile flashrom on one big-endian platform and test the dummy programmer. Further on, programming flash on PCI cards on a bigendian platform was targeted. Finally, onboard flashing support on a non-x86 platform (MIPSel Yeeloong) had to be implemented.
  • Support for more external programmers (RayeR SPIPGM). The RayeR SPIPGM is the cheapest hardware for SPI in-circuit and external flashing. Unfortunately, this is pure bitbanging, and the original code only works under DOS. To make flashrom viable for that programmer, it was necessary to get the flashrom driver for RayeR running under Linux (as primary flashrom platform) and under DOS (to serve as replacement of the currently shipped SPIPGM code). This needs highly OS specific direct I/O port access, and you may have to unload any parallel port drivers in your OS before testing.
  • Support for Nvidia MCP6*/MCP7* series SPI. Michael Karcher supplied reverse engineered docs, and I based my implementation on these docs. This is way more complicated than any driver in the tree right now because we have to bitbang the whole SPI bus. Fortunately, the bitbanging SPI core is being tested with the RayeR support mentioned above, and that means the only possible source of errors is the MCP6*/MCP7* GPIO implementation
  • Better diagnostics in case flashing fails. flashrom should detect if nothing changed and not scare the user in that case.

Status of the patches above:

  • Non-x86 support: Patches on the mailing list, waiting for review and new tests. First tests suggest it works perfectly.
  • RayeR SPIPGM support: Patch on the mailing list. Testing in progress.
  • Nvidia MCP6*/MCP7* SPI: Patch on the mailing list. Will ask for testers once RayeR support is tested successfully and committed to the source tree.
  • Better diagnostics: Patch on the mailing list, waiting for review and tests.

Published by

Carl-Daniel Hailfinger

coreboot and flashrom developer