Заметка: Эта глава написана Abhijit Dasgupta. Его email адрес: takdoom@yahoo.com
Проект называется EEP и может быть получен с:
Главный сайт (загрузка только исходных кодов): http://metalab.unc.edu/pub/Linux/apps/circuits/. Ищите файлы с именем EEP-0.2.tgz и eprom.html.
Просмотрите или загрузите: http://members.nbci.com/abhijit_dasgupta/eep/index.html
EEP - имеющий открытый аппаратный дизайн (вы можете свободно его копировать, использовать, и модифицировать) программатор EEPROM для 24-контактных и 28-контактных 5-вольтовых EEPROM. Есть много разных разработок, но главной целью было получить нечто
простое в построении и содержащее широко распространенные компоненты,
дешевое и
управляемое Linux.
Микросхемы в EEP из распространенной 74HCT серии, используется интерфейс параллельного порта. Я написал код драйвера только для Linux, но этот код под лицензией GPL, и вы можете его модифицировать для других операционных систем.
Я использую EEP для создания загрузочных PROM для сетевых карт, эти карты я использовал для создания бездисковых компьютеров на linux. Более детально о том, как это делается, смотрите в пакете netboot/etherboot. Также вы можете использовать его для программирования систем на микроконтроллерах с внешним ПЗУ (например, 8031).
Большинство программируемых 5-вольтовых 24-контактных и 28-контактных EEPROM должны работать с EEP-0.2. Вот список EEPROM, которые точно работают:
24-контактная 2816/28C16, 2048 байт (16 килобит)
28-контактная 2817/28C17, 2048 байт (16 килобит)
28-контактная 2864/28C64, 8192 байт (64 килобит)
28-контактная 28256/28C256, 32768 байт (256 килобит)
Схема в 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 (таких как 2816) в 28-контактный ZIF сокет, проверьте, что 24-контактное устройство выровнено по нижнему краю ZIF сокета. Это значит, что ножки 1, 2, 27, и 28 ZIF сокета должны остаться неиспользуемыми, и ножка земли соответственно подключена (т.е. ножка 12 24-контактного устройства должна сидеть в контакте 14 ZIF сокета).
Микросхемы:74HCT123, 74HCT132, 74HCT138, 74HCT157, 74HCT574 (1 шт. ), и 2 74HCT259s.
Резисторы: 100K, 10K, 1K, 180 Ом, и 390 Ом (1 шт.).
Конденсаторы:100пФ, 1uF, (1 шт.) и 3 0.1uF конденсатора на шине питания.
Прочее: 1 Светодиод, 1 SPST переключатель, 25-контактный ленточный кабель с DB25 разъемом ("папой"), 28 контактный ZIF сокет (вместо него может использоваться макет), контактные ножки для джамперов.
Если у вас уже есть программатор EEP-0.1, для преобразования его в программатор EEP-0.2 вы можете сделать следующие модификации:
удалите соединение между 74HCT157 ножкой 1 (SEL) и верхней 74HCT259 ножкой 11 (Y6)
удалите 1K резистор, соединяющий ножку 1 ZIF-сокета с Vcc
добавьте соединение между ножкой 1 (SEL) микросхемы 74HCT157 и ножкой 9 разъема параллельного порта DB-25
добавьте новое соединение между ножкой 10 верхней микросхемы 74HCT259 и неиспользуемой ножкой J1
добавьте 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
|
+-------+ 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 |