spi flashrom

Прошивка чипов с 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 реально тестировался

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

Тэги:

 

Автор:

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

  • Chchmf
    20.09.2016 в 13:36 ответ

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

  • Chchmf
    20.09.2016 в 13:37 ответ

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

  • andr
    20.02.2019 в 08:36 ответ

    Спасибо за статью, прошил eeprom w25q64 (от телевизора). В текущей версии armbian программа есть в репозитории, т.е. для установки достаточно выполнить sudo apt-get install flashrom

  • Nick_
    14.04.2024 в 13:03 ответ

    Всем привет подскажите а смогу прошить чип типа: W25Q16JW (WINBOND)

Ваш комментарий

Авторизуйтесь для отправки комментария

© Сообщество пользователей RaspberryPi 2021