Arduino flasher 3.3v

From flashrom
Revision as of 15:56, 16 March 2017 by GNUtoo (talk | contribs)
Jump to: navigation, search

Introduction

This explains how to:

  • Easily lower the voltage of an arduino
  • Use that arduino to flash a coreboot image on a GM45 Thinkpad with a SOIC16 chip

It requires:

  • An AVR Arduino at 5v
  • An USB<->Serial adapter capable of providing enough current to power up:
    • The arduino
    • The flash chip
    • The circuits around the flash chip

It was tested with:

  • An Arduino.org "nano version 3.3"
  • A Sparkfun "FTDI Basic 3v3" (Uses an FTDI FT232R)

HOWTO

  • Flash the Arduino with frser-duino and lower the serial port speed to 115200
# make u2
# BLBAUD=57600 SERIAL_DEV=/dev/ttyUSB0 make program
  • Connect the FTDI adapter to RX and TX of the arduino
  • Connect the 3V3 of the FTDI adapter to the 5V pin of the Arduino
  • Connect the GND of the FTDI adapter to the GDN of the arduino.
  • Get an USB cable and don't connect it to the computer
  • Connect it to the FTDI adapter
  • If you use a clip (Like a SOIC-8 or SOIC16 Pomona clip), connect it to the arduino
  • Connect the chip to the clip, or if you don't use a clip, the chip to the arduino
  • Connect the USB cable to the computer.

Flashing

  • Run flashrom like that:
flashrom -p serprog:dev=/dev/ttyUSB0:115200

Research and thanks

  • At 3.3V setup doesn't work with frser-duino default settings (make ftdi && make flash-ftdi)
  • Thanks a lot to SwiftGeek on IRC (#libreboot on Freenode) for finding and explaning to me how to workaround it
  • I still need to understand why it works when lowering the clock, it is probably related to the crystal. I need to look in the atmega328P datasheet to understand.