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