The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Поиск:  Каталог документации

Создание программатора EEPROM

Что это такое?

Заметка: Эта глава написана Abhijit Dasgupta. Его email адрес: takdoom@yahoo.com

Проект называется EEP и может быть получен с:

Пожалуйста, не пользуйтесь старым URL для EEP.

EEP - имеющий открытый аппаратный дизайн (вы можете свободно его копировать, использовать, и модифицировать) программатор EEPROM для 24-контактных и 28-контактных 5-вольтовых EEPROM. Есть много разных разработок, но главной целью было получить нечто

Последняя версия - EEP-0.2.

Микросхемы в EEP из распространенной 74HCT серии, используется интерфейс параллельного порта. Я написал код драйвера только для Linux, но этот код под лицензией GPL, и вы можете его модифицировать для других операционных систем.

Я использую EEP для создания загрузочных PROM для сетевых карт, эти карты я использовал для создания бездисковых компьютеров на linux. Более детально о том, как это делается, смотрите в пакете netboot/etherboot. Также вы можете использовать его для программирования систем на микроконтроллерах с внешним ПЗУ (например, 8031).

Поддерживаемые EEPROM

Большинство программируемых 5-вольтовых 24-контактных и 28-контактных EEPROM должны работать с EEP-0.2. Вот список EEPROM, которые точно работают:

Эти EEPROM производятся различными производителями. Вот некоторые из них: Microchip, Atmel, Xicor, Catalyst, и STM.

Схема и номера контактов

Схема в PostScript (schematic.ps), но к ней прилагается рисунок GIF (schematic.gif). Версия в ascii устарела. На схеме, номера контактов показаны вне каждой микросхемы. В большом прямоугольнике справа приведены номера контактов для 28-контактного ZIF сокета.

Файл pinouts.txt содержит информацию о номерах контактов используемых микросхем.

Для используемых микросхем 74HCT, контакты Питания (Vcc) и Земли (Ground) не показаны на схеме. Разумеется, эти контакты должны быть правильно подключены. Полный список контактов (включая Vcc/Ground) приведен в файле pinouts.txt.

Конструкция

ВНИМАНИЕ: Параллельный порт вашего ПК можно запросто повредить, что-либо к нему подключая. Также возможно повредить весь ваш ПК, периферию, и окружающих людей в результате неправильного подключения и несчастных случаев с электричеством. БУДЬТЕ ПРЕДЕЛЬНО ОСТОРОЖНЫ.

Отречение: Используйте на свой риск. Не дается абсолютно никакой гарантии, смотрите ниже COPYING/LICENSE.

Программатор может быть создан на макете, но для более постоянной версии используйте печатную плату. Для шунтирования шины питания используйте 0.1uF конденсаторы. Питание 5V может быть взято из PC, но будьте с ним осторожны. 28-контактный ZIF сокет, вероятно, самый дорогостоящий компонент. Если вы используете макет, можете обойтись без него (не рекомендуется).

Резистор 180 Ом соединяет контакт 10 (Y6) верхней микросхемы 74HCT259 и контакт 1 ZIF сокета - ограничительный резистор для защиты микросхемы 74HCT259 в случае использования 28-контактной EEPROM с контактом RDY/BSY. При использовании 32 килобайтных (256 килобит) EEPROM таких как 28256, для более надежного функционирования рекомендуется, чтобы этот резистор был закорочен.

Установки джамперов

J1 и J2 - однорядные 3-контактные разъемы для джамперов. При использовании 28-контактных EEPROM, замкните пару ножек справа как на J1 так и на J2. Для 24-контактных EEPROM, замкните пару ножек слева на J1 и J2.

Нижнее выравнивание 24-контактных EEPROM

При подключении 24-контактных EEPROM (таких как 2816) в 28-контактный ZIF сокет, проверьте, что 24-контактное устройство выровнено по нижнему краю ZIF сокета. Это значит, что ножки 1, 2, 27, и 28 ZIF сокета должны остаться неиспользуемыми, и ножка земли соответственно подключена (т.е. ножка 12 24-контактного устройства должна сидеть в контакте 14 ZIF сокета).

Список компонентов

Если у вас уже есть EEP-0.1

Если у вас уже есть программатор EEP-0.1, для преобразования его в программатор EEP-0.2 вы можете сделать следующие модификации:

  1. удалите соединение между 74HCT157 ножкой 1 (SEL) и верхней 74HCT259 ножкой 11 (Y6)

  2. удалите 1K резистор, соединяющий ножку 1 ZIF-сокета с Vcc

  3. добавьте соединение между ножкой 1 (SEL) микросхемы 74HCT157 и ножкой 9 разъема параллельного порта DB-25

  4. добавьте новое соединение между ножкой 10 верхней микросхемы 74HCT259 и неиспользуемой ножкой J1

  5. добавьте 180 Ом резистор между ножкой 11 верхней микросхемы 74HCT259 и ножкой 1 ZIF-сокета

Как создать программное обеспечение

Загрузите и распакуйте программное обеспечение http://metalab.unc.edu/pub/Linux/apps/circuits/EEP-0.2.tar.gz. Затем зайдите в каталог src и наберите `make'.

Использование

Для создания и считывания eeprom используется программа eep. Она читает данные из stdin и записывает их в eeprom. Данные должны быть в двоичном (чистом) формате. Обычные hex и/или ascii форматы (Intel, Motorola srecord, и т.п.) не поддерживаются, так что если ваш ассемблер выводит данные только в формате hex/ascii, вам следует преобразовать их в двоичный формат (смотрите, например, Hex2bin и srecord, доступные в архиве metalab.unc.edu/pub/Linux). При чтении, вывод также в виде необработанных двоичных данных на stdout (если не указана опция -t).

Использование:        eep  -0|-1|-2  -r|-w  -b|-t  offset  size  где:      -0|-1|-2  -0 выбирает порт lp0, -1 порт lp1, и -2 порт lp2,     -r|-w     -r считывает eeprom в stdout, и -w записывает его данными из stdin,     -b|-t     -b обычный (двоичный) режим, и -t режим отладки (ascii hex),     offset    стартовый адрес в eeprom, 0..32767, и,     size      количество считываемых/записываемых байт, 0..32768.  offset и size могут указываться в виде строк цифр в десятичной записи, но будут рассматриваться в шестнадцатеричной записи, если предваряются префиксом ``0x'', и в восьмеричной записи, если предваряются ``0''.  Примеры --------  # Считывание содержимого 2864 в двоичном (чистом) виде и запись его в файл eep -1 -r -b 0 8192 > contents.bin # То же самое: eep -1 -r -b 0 0x2000 > contents.bin   # Список 16 байт, начиная со смещения 128 eep -1 -r -t 128 16 # Same as: eep -1 -r -t 0x80 0x10   # Запись 16384 байт из файла nepci.lzrom в первую половину  # 28C256 eeprom, через lp0: cat nepci.lzrom | eep -0 -w -b 0 16384

Электрическая схема в ASCII символах


                       +-------+                      J1               +5-------|RST    |               +5---o o o----+   +-----------+               +5--o----|/CLR1  |         10K          |      |   |           |                   |    |       |-----o--/VVV\-- +5    +------|---|26 A13(+5V)|       +------+    |    |1/2 123|     |              +--------|-->|27 /WE(NC) |  16 o-|/CS2  |    |    |       |--||-+              | +------|-->|23 A11(/WE)|       |   CS1|----o----|B1     | 100pF              | | J2   |   |           |       |      |         |    /Q1|---------->---------o o o    |   |  ZIF28    |       |    Y1|---------|/A1    |                        |    |   |  socket   |       | 138  |         +-------+         _ 1/2 74HCT132 |    |   |   for     |       |      |                     +5 --| \   __        |    |   |  EEPROM   |       |    Y2|--------------------------|  O--| \       |    |   |           |   8 o-|A2    |                +-------+ |_/   |  O-----------|-->|22 /OE     |   7 o-|A1  Y4|--------------->|EN   Y7|-----o-|_/       |    |   |           |   6 o-|A0  Y3|----+    +5-----|RST    |     |   180 ohm |    |   |           |       |    Y0|-+  |           |     Y6|-----|---/VVV\---|----|---|1 A14(NC)  |       |  /CS3| |  |           | 259 Y5|-----|-----------|----+   |           |       +------+ |  |           |     Y4|-----|-----------|------->|2 A12(NC)  |             |  |  |           |     Y3|-----|-----------+        |           |   5 o--->---|--|--|--------o--|D    Y2|-----|------------------->|21 A10     |   4 o--->---|--|--|------o-|--|A2   Y1|-----|------------------->|24 A9      |   3 o--->---|--|--|----o-|-|--|A1   Y0|-----|------------------->|25 A8      |   2 o--->---|--|--|--o-|-|-|--|A0     |     |                    |           |             |  |  |  | | | |  +-------+     |      +5------------|28 +5V(NC) |             |  |  |  | | | |                |                    |           |             |  |  |  | | | |  +-------+     |                    |           |             |  |  |  | | | |  |     Y7|-----|------------o------>|3  A7      |             |  |  +---------->|EN     |-----|-----------o|------>|4  A6      |             |  |     | | | |  |       |-----|----------o||------>|5  A5      |             |  |     | | | |  | 259   |-----|---------o|||------>|6  A4      |             |  |     | | | |  |       |-----|--------o||||------>|7  A3      |             |  |     | | | |  |       |-----|-------o|||||------>|8  A2      |             |  |     | | | +--|D      |-----|------o||||||------>|9  A1      |             |  |     | | +----|A2   Y0|-----|-----o|||||||------>|10 A0      |             |  |     | +------|A1     |     |     ||||||||       |           |             |  |     +--------|A0  RST|     |     ||||||||       | ZIF28     |             |  |              +-------+     |   +------------+   | socket    |             |  |                    |       |   |   data in  |   |  for      |             |  |                   +5       +-->|/OE         |   | EEPROM    |             |  |                                |     574    |   |           |             |  +------------------------------->|CLK         |   |           |             +----+                              |   data out |   |           |                  |                              +------------+   |           |                  |              +------------+     ||||||||      |           |   9 o-------------------------->| SEL        |     ||||||||      |           |                  |              |          B3|<----|||||||o------|19 D7      |  11 o---<-----------------------|Y3        B2|<----||||||o-------|18 D6      |  12 o---<-----------------------|Y2        B1|<----|||||o--------|17 D5      |  13 o---<-----------------------|Y1  157   B0|<----||||o---------|16 D4      |  15 o---<-----------------------|Y0        A3|<----|||o----------|15 D3      |                  |              |          A2|<----||o--- data---|13 D2      |                  |              |          A1|<----|o---- bus ---|12 D1      |                  |       GND----|/OE       A0|<----o-------------|11 D0      |   +5--o--+       |              +------------+                   |           |       |  |  __   o---------------------------------------------->|20 /CE   14|     100K +-|  \  |  __                                           +---------+-+   sw1 |    |   O-o-|  \ 1/2 74HCT132                                       |   o-->o----|__/    |   O---390ohm--+                                       |   |   |          +-|__/            |                                  GND -+   |  --- 1uF     |                LED   |  ---     +5--+                 |   |   |                            |   +---o----------------------------o- GND  Заметки:  1. номера контактов разъема параллельного порта DB25 с левого угла. 3. 24-контактные микросхемы (например, 2816) должны быть выровнены по нижнему краю 28-контактного ZIF сокета. 2. Номера ножек справа для ZIF-28 сокета, не для микросхем. 7. Названия сигналов в ZIF-28 сокете для 28-контактных EEPROM ( для 24-контактных EEPROM они приведены в приложениях). 4. J1 и J2 однорядные 3-контактные разъемы для джамперов (или используйте DPDT переключатель). 5. Для 28-контактных EEPROM, замкните левую пару контактов как на J1, так и на J2. 6. Для 24-контактных EEPROM, замкните левую пару контактов и на J1, и на J2. 8. Переключатель SPST sw1 должен быть открыт для разрешения функционирования программатора. 9. Полный список контактов микросхем смотрите в файле pinouts.txt
Abhijit Dasgupta takdoom@yahoo.com




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру