Прошивка чипов с SPI интерфейсом при помощи Raspberry Pi

  • Автор
Всем привет!
Как-то раз мне потребовалось прошить чип Flash памяти типа 25x40
Если прошивка заливается в чип через SPI интерфейс, то я обычно использую дешёвый китайский программатор CH341A.
Но в этот раз чип никак не хотел прошиваться, хотя статусная полоска прогресса записи добегала до 100% без ошибок.

Тогда я решил подключить чип к SPI линии Raspberry Pi и прошить чип при помощи RasPi и программы Flashrom
Сделать это оказалось несложно. Для тех, кто захочет использовать RasPi в качестве программатора я приведу в этом блоге небольшую инструкцию.

Подключаем чип к Raspberry Pi


CS - SPI_CE0
DO - MISO
WP - 3.3V
GND - GND
VCC - 3.3V
HOLD -3.3V
CLK - SPI_CLK
DIO - MOSI

Устанавливаем Flashrom

Перед установкой активируем SPI-интерфейс через raspi-config, либо подгружаем spi-модули ядра вручную при помощи modprobe
Устанавливаем необходимые пакеты, от которых зависит успешная компиляция Flashrom:
sudo apt-get install subversion pciutils pciutils-dev libusb-0.1 libusb-1.0 libusb-1.0-dev

Скачиваем последнюю версию исходников Flashrom из SVN репозитория, компилируем, устанавливаем
$ svn co svn://flashrom.org/flashrom/trunk flashrom
$ cd flashrom
$ make
$ sudo make install


Прошиваем чип

Flashrom умеет определять тип подключенного чипа, стирать чип, записывать/считывать прошивку, верифицировать (проверять соответствие файла прошивки с записанной в чип информацией) чип
Для прошивки чипа используется команда:
sudo flashrom -w /home/pi/firmware.bin -V -p linux_spi:dev=/dev/spidev0.0
здесь -w - команда на запись прошивки (write), после неё указывается путь до файла с прошивкой (/home/pi/firmware.bin), -p - тип программатора.
Если в качестве программатора выступает Raspberry Pi, то тип будет linux_spi:dev=/dev/spidev0.0,
V - verbose режим (вывод служебных сообщений во время прошивки)

Перед записью чип желательно очистить командой
sudo flashrom -E -p linux_spi:dev=/dev/spidev0.0

Считать прошивку в файл можно командой
sudo flashrom -r /путь_до_файла/ -p linux_spi:dev=/dev/spidev0.0

Верификация
sudo flashrom -v /путь_до_файла/ -p linux_spi:dev=/dev/spidev0.0

Если запустить flashrom без параметров, то он попытается определить тип подключенного чипа
sudo flashrom -p linux_spi:dev=/dev/spidev0.0

Более подробно о командах flashrom можно прочитать тут:
man flashrom


https://www.flashrom.org/Supported_hardware - на этой странице можно найти список чипов, с которыми flashrom реально тестировался

На этом всё. Всем добра!

крэнг

Комментарии:

Chchmf
Хорошая, годная статья. За небольшим косяком с компиляцией flashrom. указанный пакет зависимостей ее не удавлетворяет.
Chchmf
Но в целом, статья помогла мне прошиться. За что огромное спасибо. Избавило меня от постройки программатора на юсб.

Для написания комментариев необходимо зарегистрироваться