Присоединяйтесь!
Авторизация
spi    flashrom   

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

01 June 2016 - Автор dym

Всем привет!

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

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

01 June 2016
dym
автор статьи

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

  1. Chchmf

    20 September 2016 - Ответить

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

  2. Chchmf

    20 September 2016 - Ответить

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

  3. andr

    20 February 2019 - Ответить

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

Отправить комментарий

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

Присоединяйтесь
Новые сообщения

Новые комментарии к блогам
  • Чёт дорого

    Raspberry Pi 400
  • Как её программировать?

    Raspberry Pi Pico
  • Зря Wi-Fi не вколхозили, как они с esp32 конкурировать собрались, который и по характеристикам...

    Raspberry Pi Pico
  • "будет вылетать из материнкой платы без дополнительного прижима" Для умных - там есть...

    Raspberry Pi Compute Module 4 (CM4)
  • Это интересно. По цене как китайские клоны ардуин, а возможности и мощность намного больше....

    Raspberry Pi Pico
  • Пиши по-русски, ты в национальном домене, а не на коме.

    GPIO для чайников (часть 1)
  • Смотри ссылку в конце статьи "Руководство по программированию Pico на C/С++"

    Raspberry Pi Pico
  • Слабовато конечно, но на замену всяким ардуинам вполне себе пойдёт

    Raspberry Pi Pico
  • Как раз очевидно, что не знающие вообще никакого языка или знающие их плохо, будут искать не...

    GPIO для чайников (часть 1)