Прочее - От разработчика о программе SPIPGM

Доктор Мао


В начало.Раздел Прочее.

Раздел Прочее

О программе SPIPGM

Это вольный перевод оригинальной статьи размещённой по адресу: SPIPGM

SPIPGM.ZIP ver. 2.17 [103 kB] (DOS/Win9x/NT/2k/XP/Vista/7/Linux) - это инструмент для программирования серийной памяти SPI FlashROM, подключенной к ПК через параллельный порт. Позволяет определять, читать, программировать, проверять, очищать и разблокировать память. Больше информации о необходимом оборудовании здесь.

9.6.2008 Добавлено обнаружение FlashROM памяти SST25VFxxx и SST26VFxxx. К сожалению у меня нет такой памяти, чтобы проверить её, но согласно спецификации всё должно работать.

1.8.2008 Добавлено обнаружение FlashROM памяти Macronix MX25L1005/1006E, MX25L2005/2006E, MX25L4005/4006E, MX25L8005/8006E, MX25L1605/1606E, MX25L3205/3206E, MX25L6405/6406E/6435E/6445E/6473E - проверено с MX25L1605, MX25L8005 и MX25L6435E.

25.8.2008 Добавлено обнаружение FlashROM памяти Atmel AT26DF041 - AT26DF321 - не проверено.

28.10.2008 Добавлено обнаружение FlashROM памяти Winbond W25X16 - W25X64 - проверено с W25X32 и W25X80.

10.1.2009 Добавлено обнаружение FlashROM памяти Spansion S25FL004A - S25FL128P - проверено с S25FL032A.

21.1.2009 Добавлено обнаружение FlashROM памяти Intel QB25F016S33B8, QB25F032S33B8, QB25F064S33B8 - не проверено.

11.10.2010 Добавлено обнаружение FlashROM памяти EON EN25F16, EN25F32, EN25F64, EN25F128 - не проверено. Улучшены функции управления LPT-портом, поэтому чтение памяти сейчас должно быть примерно в 1,6 раз быстрее.

22.12.2010 Исправлено обнаружение FlashROM памяти Intel и добавлено обнаружение памяти AMIC A25L05PU/PT, A25L10PU/PT, A25L20PU/PT, A25L40PU/PT, A25L80PU/PT, A25L16PU/PT, A25L32PU/PT, A25L64PU/PT, A25L512, A25L010, A25L020, A25L040, A25L080 - проверено с A25L080. Добавлен контроль четности JEDEC ID Байта, что должно помочь в самом начале выявить проблемы со связью (плохой кабель, неправильное питание и тд.).

31.1.2011 Добавлено обнаружение FlashROM памяти EON EN25F20, EN25F40, EN25F80 - проверено с EN25F80.

5.2.2011 Добавлено обнаружение FlashROM памяти Winbond W25Q10, W25Q20BV, W25Q40BV, W25Q80BV - проверено с W25Q80BV.

22.2.2011 Добавлено обнаружение FlashROM памяти Atmel AT26F004 - проверено, ESMT F25L004A и F25S04PA - проверено, F25L08PA, F25L16PA, F25L32PA, F25L32QA.

20.3.2011 Добавлено обнаружение FlashROM памяти Winbond W25Q16BV - проверено, W25Q32BV - проверено, W25Q64BV, W25Q128BV; PMC Pm25LV512A - проверено, Pm25LV010A - проверено, Pm25LV020, Pm25LV040 - проверено, Pm25LV080B, Pm25LV016B, Pm25LV032B, Pm25LV064B.

30.1.2012 В новой версии 2.0 переписал большую часть кода. Принципиально была переделана функция обнаружения FlashROM памяти расширившая возможности. В настоящее время поддерживаются и некоторые старые памяти, которые не имеют идентификации через JEDEC ID, хотя они поддерживают другие команды. Были расширены функции за счет добавления Auto Address Increment (AAI) режим программирования байт/слово, который используется в старых FlashROM от SST и ESMT. Спасибо Frantovi Ryšánkovi, который любезно предоставил мне одну SST25VF080B, чтобы я мог использовать её для тестирования в процессе разработки. Для памяти серии ST M45PExx мне пришлось добавить функции стереть блок. Кроме того, также добавил команду проверить, чтобы сравнить объём памяти с файлом. Теперь можно прописывать и графические файлы, размер которых меньше, чем размер оперативной памяти. Программа выводит предупреждение, но позволяет нормально продолжать. Наконец я модифицировал функции низкого уровня для SPI, на основе рекомендаций Helge Wagnera, благодаря чему чтение памяти ускорилось на 25% и записи на 41%. Добавлено обнаружение FlashROM памяти Atmel AT25F512B, AT25DF021, AT26DF161, AT25DQ161, AT25DQ321A; EON EN25B10, EN25B20, EN25B40(T), EN25B80, EN25B16; ESMT F25L008A/08PA, F25L016A/16PA, F25L32PA, F25L64PA, F25L016QA; Macronix MX25L512E, MX25L12835E/12836E, MX25L25635E/25735E/25835E; Spansion S25FL256S, S25FL512S, S25FL01GS; ST/Numonyx M25P05, M45PE10, M45PE20, M45PE40, M45PE80, M45PE16, M25PX80, M25PX16, M25PX32, M25PX64, N25Q032A13E, N25Q032A11E, N25Q064A13E, N25Q064A11E, N25Q128A13E, N25Q128A11E, N25Q256A13E, N25Q256A11E, N25Q512A13G, N25Q512A11G, N25Q00AA13GB; SST25VF512(B) - проверено, SST25VF010(B), SST25VF020(B), SST25VF040(B), SST25VF080(B) - проверено, SST25VF016(B) - проверено, SST25VF032(B), SST25VF064C, SST25VF128(B); Winbond W25Q256F.

7.2.2012 Добавлено обнаружение FlashROM ST M25P10AV - проверено.

19.4.2012 Добавлено обнаружение FlashROM памяти GigaDevice GD25Q512, GD25Q10, GD25Q20, GD25Q40, GD25Q80, GD25Q16 - проверено, GD25Q32 и GD25Q64.

8.4.2013 Исправлена ошибка обнаружения FlashROM памяти Spansion S25FL128P, S25FL128S, S25FL129P, S25FL129S.

14.4.2013 Добавлено обнаружение FlashROM памяти EON EN25Q40, EN25Q80, EN25Q16, EN25Q32, EN25Q64, EN25Q128 - не проверено.

27.6.2013 Добавлена функция для контроля очистки FlashROM памяти (параметр /b).

3.7.2013 Добавлено обнаружение FlashROM памяти PMC Pm25LD512 - проверено, Pm25LD010 - проверено и Pm25LD020.

15.8.2013 Добавлена функция для записи состояний Байт в FlashROM (параметр /s status). С помощью BP и SRP бит можно установить защиту от записи в соответствии с состоянием pin WP#. Эти биты могут быть разными, в зависимости от типа памяти, см. datasheet.

17.8.2013 Добавлено обнаружение FlashROM памяти EON EN25T10, EN25T20, EN25T40, EN25T80, EN25T16, EN25T32, EN25T64 - не проверено.

1.10.2013 Добавлено обнаружение FlashROM памяти EON EN25QH16, EN25QH32 - проверено, EN25QH64, EN25QH128, EN25QH256.



FAQ:

Я получаю электронные письма, связанные с SPIPGM из многих стран Мира. Похоже, что это самая загружаемая программа с 1-го выпуска. Спасибо за отчеты тестов памяти, которые я до сих пор не имел возможности проверить. Некоторые вопросы и проблемы часто повторяются, поэтому я решил упомянуть о них здесь.

  • SPIPGM не общается с FlashROM.
    Эта проблема может иметь целый ряд причин. В большинстве случаев это проблема программатора. Например: пропущен блокировочный конденсатор между +3,3 в и GND (или он расположен слишком далеко от микросхемы FlashROM), слабые или с высоким уровнем пульсаций +3,3V питания, слишком длинные провода, опущены резисторы или ненадлежащего значения резисторы на данных линиях MISO, MOSI, SCK и CS# (оптимальное значение резисторов зависит от выходного импеданса конкретного LPT-порта, иногда оно должно быть подобрано вручную), слишком слабые драйвера LPT порта (может быть в некоторых ноутбуках) и др. Вы можете попробовать увеличить длительность импульсов SCK через параметр /d=delay, где delay это число в µs, на которое увеличивается импульс SCK. Еще одной полезной мерой является интеграция в линию передачи данных буферов (например, 74HC04, 74LS125, 74HC244), которые понижают уровни напряжения до 3,3 В, что будет лучше для FlashROM. Обратите внимание, если вы используете порт, отличный от LPT1 или дополнительную карту, у которой имеется LPT порт на другой адрес ввода / вывода (на работе у меня есть PCI-E адаптер, который использует E800h адрес), не забудьте указать адрес изменив параметр /l=lpt_base_io_address, где lpt_base_io_address базовый адрес ввода/Вывода в десятичном или шестнадцатеричном (с префиксом 0x) формате.
  • SPIPGM с памятью общается плохо, сообщает parity error или произошла ошибка позже при сравнении запрограммированных данных.
    Здесь же то же самое, что было сказано выше. Если не помогает замедление или замены резисторов, я рекомендую установить буфер. По крайней мере 2 людям это точно помогло.
  • Возможно ли перепрошить FlashROM память на материнской плате через SPI разъём.
    Я лично не пробовал, но мой друг Franta Ryšánek опробовал это на материнской плате MSI, его описание вы можете прочитать здесь. Он отключил питание от материнской платы и принудительно подал 3,3 V через SPI разъём от внешнего источника питания. Если FlashROM не опознана, вы можете попытаться осторожно увеличить напряжение питания до 3,6 V и в случае опознавания вернуть медленно 3,3 V. Мне сообщили , что в одном случае это помогло. В другом случае, если datasheet позволяет это, можно попробовать снизить напряжение питания на более низкий уровень.
  • SPIPGM без проблем читает память, но при программировании не прописывается ни один Байт.
    В некоторых случаях вы можете столкнуться с памятью, которая не поддерживает некоторые SPI команды. До сих пор я на такой встречал, поэтому не могу отладить программу. Попробуйте программу flashrom с параметром -p rayer_spi, которая поддерживает больше чипов.
  • Будет ли работать SPIPGM в 64-битных Windows?
    В настоящее время нет. Сначала я должен был бы переписать и перекомпилировать мой драйвер режима ядра для доступа LPT-портов. Я не имею никакого опыта программирования для 64-битных ОС. Кроме того, существует проблема с подписыванием драйверов, так как для меня это хобби вряд ли я получу от кого-то сертификат. Поэтому я бы рекомендовал использовать другую операционную систему, которая не ставит никаких препятствий для программиста, например Linux Live CD или FreeDOSu образ.



Опубликовано
16.02.2014
⇐ ⇐ ⇐ Пётр Анатольевич ⇒ ⇒ ⇒ Редактировано
16.02.2014

© Copyright