ISA-8 контроллер SD карт (XT-SD) (Создалась тут меж делом железка....)
- Tronix
- Advanced Member
- Сообщения: 3625
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
-
Вклад в сообщество
ISA-8 контроллер SD карт (XT-SD)
Создалась тут меж делом железка....
В принципе, проблемы как таковой нет. Есть XT-IDE и есть китай-переходники IDE->SD. Вот и все что нужно для работы с SD-картой на XT. У меня оно так и работает.
Но решил сделать отдельную железку. Не то, что бы офигеть как надо, скорее просто нужно было куда-то утилизировать валяющуюся CPLD EPM3032 уже лет 5 как. Суть идеи проста - разгрузить процессор от ногодрыга, переложив это в CPLD. Байт в порт послали - он последовательно выдался на SPI. Из порта прочитали уже готовый байт.
На плате мы видим 2 (две) микросхемы - это 1533ИД7 в роли дешифратора порта и, собственно, CPLD EPM3032ALC44-10. Это вообщем то и все. Есть еще линейный стабилизатор 1117 (5в -> 3.3в) и немножко рассыпухи из блокировочных конденсаторов и пары-тройки сопротивлений на подтяжку SPI.
В порт данных пишутся или читаются данные. Порт управления и статуса объединен. При записи используются только 3 младших бита - бит 0 - установка скорости SPI, бит 1 - выбор CS, бит 2 - выбор CS2 или управление светодиодом. При чтении этого порта в 6 бите есть признак занятости BUSY (если CPLD сдвигает байт). В бите 7 есть признак наличия карты INSERT.
В качестве софта пока выступает слегка модифицированный драйвер SDPP .
Железяка проверена на Поиск-2, 386, Pentium 1. Полет нормальный.
В принципе, проблемы как таковой нет. Есть XT-IDE и есть китай-переходники IDE->SD. Вот и все что нужно для работы с SD-картой на XT. У меня оно так и работает.
Но решил сделать отдельную железку. Не то, что бы офигеть как надо, скорее просто нужно было куда-то утилизировать валяющуюся CPLD EPM3032 уже лет 5 как. Суть идеи проста - разгрузить процессор от ногодрыга, переложив это в CPLD. Байт в порт послали - он последовательно выдался на SPI. Из порта прочитали уже готовый байт.
На плате мы видим 2 (две) микросхемы - это 1533ИД7 в роли дешифратора порта и, собственно, CPLD EPM3032ALC44-10. Это вообщем то и все. Есть еще линейный стабилизатор 1117 (5в -> 3.3в) и немножко рассыпухи из блокировочных конденсаторов и пары-тройки сопротивлений на подтяжку SPI.
В порт данных пишутся или читаются данные. Порт управления и статуса объединен. При записи используются только 3 младших бита - бит 0 - установка скорости SPI, бит 1 - выбор CS, бит 2 - выбор CS2 или управление светодиодом. При чтении этого порта в 6 бите есть признак занятости BUSY (если CPLD сдвигает байт). В бите 7 есть признак наличия карты INSERT.
В качестве софта пока выступает слегка модифицированный драйвер SDPP .
Железяка проверена на Поиск-2, 386, Pentium 1. Полет нормальный.
- Tronix
- Advanced Member
- Сообщения: 3625
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
-
Вклад в сообщество
CF не люблю, потому что цены какие-то нереальные. И не пользую. Да и вообще зачем переходник CF -> SD, если и то и то - флешка? Где вы CF этот взяли в качестве интерфейса?
А XT-IDE, что в Поиске, что в XT прекрасно работает у меня с такого типа переходником: https://ru.aliexpress.com/item/Free-Shi ... eLevelAB=0
А XT-IDE, что в Поиске, что в XT прекрасно работает у меня с такого типа переходником: https://ru.aliexpress.com/item/Free-Shi ... eLevelAB=0
Tronix
У меня переходники несколько иные. Уж не помню откуда достались, но их много и по прямому назначению они бесполезны, ибо толще чем обычные CF - никуда не лезут
Дешевыми CF на небольшие объёмы закупился здесь же, всё-таки пассивный переходник радует - сам могу наколотить со второго раза переходник с CF на IDE
Но вот с дивайсами что по ссылке выше и с имеющимися небольшими SD (4-16MB из комплектров к старым фотикам) диск удаётся форматнуть, но не загрузиться с него нет
У меня переходники несколько иные. Уж не помню откуда достались, но их много и по прямому назначению они бесполезны, ибо толще чем обычные CF - никуда не лезут
Дешевыми CF на небольшие объёмы закупился здесь же, всё-таки пассивный переходник радует - сам могу наколотить со второго раза переходник с CF на IDE
Но вот с дивайсами что по ссылке выше и с имеющимися небольшими SD (4-16MB из комплектров к старым фотикам) диск удаётся форматнуть, но не загрузиться с него нет
- Tronix
- Advanced Member
- Сообщения: 3625
- Зарегистрирован: 15.01.2008,11:00
- Откуда: Москва
-
Вклад в сообщество
Это DOS драйвер, написанный на C. Драйвер несет сам по себе высокую избыточность в необходимых телодвижениях. Плюс код на чистом C, без ассемблерных вставок. Вызов каждой процедуры это боль и страдание для 8088. Взгляните на это:andyTh писал(а):Это потолочная скорость обмена?
Больше выжать нельзя?
Код: Выделить всё
/* Single byte SPI transaction */
static
BYTE xchg_spi (BYTE dat)
{
outp(OUTPORT,dat);
while (inp(CONTROLPORT) & 0x40);
return inp(OUTPORT); /* Get received byte */
}
Код: Выделить всё
;
; BYTE xchg_spi (BYTE dat)
;
assume cs:_TEXT
xchg_spi proc near
push bp
mov bp,sp
;
; {
; outp(OUTPORT,dat);
;
mov dx,word ptr DGROUP:_OUTPORT
mov al,byte ptr [bp+4]
out dx,al
@5@58:
;
; while (inp(CONTROLPORT) & 0x40);
;
mov dx,word ptr DGROUP:_CONTROLPORT
in al,dx
mov ah,0
test ax,64
jne short @5@58
;
; return inp(OUTPORT); /* Get received byte */
;
mov dx,word ptr DGROUP:_OUTPORT
in al,dx
;
; }
;
pop bp
ret
Но этот драйвер позволил в кратчайшие сроки проверить просто работоспособность идеи "в целом". В дальнейшем, к карте планируется собственный BIOS, естественно на ассемблере, который будет позволять загружаться с карты, работать с ней прозрачно, и не жрать память как в случае с ДОС-драйвером.
-
- Advanced Member
- Сообщения: 1460
- Зарегистрирован: 04.07.2014,16:01
- Откуда: $pb