"All orders finished data preparation, ready for PCB fabrication."Shaos wrote:Заказал 5 платок (минимум) красного цвета у китайцев на JLCPCB - получилось всего $68 с доставкой DHL
Ethernet для Timex Sinclair 2068 и пр. (Sprinternet)
Moderator: Shaos
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Попробовал кое-какие изменения из новой версии макетки навесить проводочками на старую версию:Shaos wrote:Добавил маскирование сигнала /MEMR при обращении к SPI и визнету (включается/выключается существующим управляющим битом TX/RX) - обошёлся уже имеющимися в наличии на плате неиспользованными гейтами - надо будет заказывать новую версию платы, т.к. проводочками эти изменения напаивать на существующую плату будет немного проблематично (хотя и возможно)...
но EEPROM так нормально и не заработал

при чтении регистра статуса возвращает либо все нули либо чередует 0-1-0-1
видимо в случае полной неудачи с автогенерацией клока из шины придётся EEPROM к GPIO цеплять и тупо битиками программно махать имитируя SCK и SI на выходах (/CS у меня уже подключен к регистру управления) и читая SO на входе...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Воткнул ПЗУ 8КБ - работает 
Непереключаемая область #D000...#D7FF - не переключается
Переключаемая область #D800...#DFFF - переключается путём записи номера банки в #DFFF
В последний байт каждой 2К-страницы прописан её номер (#00,#01,#02,#03) - можно прочитать значения с адреса #DFFF обратно и убедиться что банка переключилась

Непереключаемая область #D000...#D7FF - не переключается

Переключаемая область #D800...#DFFF - переключается путём записи номера банки в #DFFF

В последний байт каждой 2К-страницы прописан её номер (#00,#01,#02,#03) - можно прочитать значения с адреса #DFFF обратно и убедиться что банка переключилась

You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
видимо таки придётся - в этом случае по адресу SPI #C200 появятся 2 бита на запись:Shaos wrote:видимо в случае полной неудачи с автогенерацией клока из шины придётся EEPROM к GPIO цеплять и тупо битиками программно махать имитируя SCK и SI на выходах (/CS у меня уже подключен к регистру управления) и читая SO на входе...
бит 0 - clock
бит 7 - data out
а также 1 бит на чтение (как сейчас):
бит 0 - data in
седьмой бит т.к.в SPI данные уходят начиная от старших битов к младшим и такое расположение упростит программу записи в SPI
однако на чтение лучше начинать с бита 0 постепенно сдвигая данные влево - это также упростит программу чтения из SPI
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
как описано выше EEPROM вроде заработало - теперь надо разбираться с командами - там какая-то хитрая система разрешения-запрещения записи
возможно надо будет разнести адресные области на запись и чтение чтобы защищаться от мусорных стробов на чтение "by design", например:
#C100 - только запись в регистр управления и цифровые выходы (0-TX/RX,1-OUT1,2-OUT2,3-OUT3,4-SPI0,5-SPI1,6-SCK,7-SI)
#C200 - только чтение со SPI EEPROM, MMC и пр. (бит 0 - SO)
#C300 - только чтение с цифровых входов (IN0...IN7)
возможно надо будет разнести адресные области на запись и чтение чтобы защищаться от мусорных стробов на чтение "by design", например:
#C100 - только запись в регистр управления и цифровые выходы (0-TX/RX,1-OUT1,2-OUT2,3-OUT3,4-SPI0,5-SPI1,6-SCK,7-SI)
#C200 - только чтение со SPI EEPROM, MMC и пр. (бит 0 - SO)
#C300 - только чтение с цифровых входов (IN0...IN7)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Что-то наверное надо не ровно тоже самое прописывать, а скажем значение на #80 большее (т.е. #80 для нулевой страницы, #81 для первой, #82 для второй и #83 для третьей), а то можно по ошибке принять поведение ISA-шины когда ничего не воткнуто за присутствующее ПЗУ т.к. с пустой шины можно прочитать тот же байт, который туда только что был записан (экспериментально найденный эффект).Shaos wrote:В последний байт каждой 2К-страницы прописан её номер (#00,#01,#02,#03) - можно прочитать значения с адреса #DFFF обратно и убедиться что банка переключилась
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Разобрался я с защитой от записи у этой 25C320 - у меня она уже подключена с /WP ногой на землю, но в неё всё ещё можно записывать, пока не будет взведён один из битиков статусного регистра (а именно бит 7 WPEN), после этого часть памяти (либо всё) будет защищена от записи в зависимости от состояния двух других битиков 2 и 3 регистра статуса - BP1 и BP0 (причём будет защищено навсегда пока ногу /WP не оторвут от земли):Shaos wrote:как описано выше EEPROM вроде заработало - теперь надо разбираться с командами - там какая-то хитрая система разрешения-запрещения записи
BP1=0 BP0=0 - защищён только регистр статуса
BP1=0 BP0=1 - старшая четверть защищена от записи (0C00h...0FFFh), а также регистр статуса
BP1=1 BP0=0 - старшая половина защищена от записи (0800h...0FFFh), а также регистр статуса
BP1=1 BP0=1 - всё защищено от записи (0000h...0FFFh), включая регистр статуса
Далее битик 1 (WEL) должен быть взведён командой WREN каждый раз когда мы хотим что-то куда-то записать (даже если речь идёт о записи в регистр статуса) и после записи этот битик опять сбросится в 0. Если какая-то область защищена от записи, то запись туда не получится. Ну и последний битик номер 0 (WIP) показывает если запись всё ещё идёт - по даташиту в худшем случае на запись может уйти до 50 мс.
Я планирую защитить от записи старший 1 килобайт, в котором я на "фабрике" прошью уникальный для пользователя MAC-адрес, а также некоторую другую информацию как например имя и адрес электронной почты человека на которого была зарегистрирована сетевая карточка, а также возожно ключи для доступа к шлюзу и контрольные суммы мака и ключей. Пользователь не сможет изменить эти данные не отпаивая микросхему памяти...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Но тут получается, что любая программа (например скачанная из интернета) может эти ключи прочитать!Shaos wrote: Я планирую защитить от записи старший 1 килобайт, в котором я на "фабрике" прошью уникальный для пользователя MAC-адрес, а также некоторую другую информацию как например имя и адрес электронной почты человека на которого была зарегистрирована сетевая карточка, а также возожно ключи для доступа к шлюзу и контрольные суммы мака и ключей. Пользователь не сможет изменить эти данные не отпаивая микросхему памяти...
Наверное это надо как-то запретить - например разрешать читать из SPI только кодом, расположенным в области ПЗУ сетевой карточки.
Хотя наверное полная защита возможна только если оно спрятано от пользователя совсем, например всё шифрование и дешифровку делал бы микроконтроллер, находящийся на плате...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Вот текущее положение дел с первой макеткой:
Зелёные светодиоды слева-направо:
Зелёные светодиоды слева-направо:
- TX_LED (LED3)
- RX_LED (LED2)
- LINKLED (LED1)
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Пишу подпрограммки работы с SPI EEPROM - на максимальной скорости будучи запущенным из ПЗУ ISA-карточки Спринтера на скорости 14 МГц я могу посылать битики (при этом щёлкая SPI клоком) со скоростью 1 миллион битов в секунду - так можно посылать команды в "захардкоденном" виде. При чтении произвольных данных ещё придётся тратиться на собирание байта из битиков и сохранение в памяти со сдвигом указателя. Написал подпрограммки разрешения записи (19мкс на 14 МГц), запрещения записи (14мкс на 14 МГц) и чтения регистра статуса (41мкс на 14 МГц или примерно 58мкс на 10 МГц), чтобы проверить что запись завершена. Пока проверяю запись в регистр статуса (отдельной подпрограммки для записи в регистр статуса не будет, т.к. пользователю нет необходимости писать в регистр статуса - пользоваться записью в регистр статуса буду я, когда буду включать режим защиты от записи после прошивки MAC-адреса) и получается, что после записи в регистр статуса мне нужно вызывать подпрограмму проверки 37 раз пока бит занятости не сбросится (сейчас я запускаю тест-программку из системной памяти, которая крутится примерно на 10 МГц) - это около 2мс. Теперь буду писать подпрограммки чтения-записи байтов и буду мерять время записи там (по документации запись страницы данных может занять до 50мс, а одна страница это 32 байта).
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Написал подпрограмму засылки команды записи со стартовым адресом занимающую 88мкс на 14МГц и отдельную подпрограмму записи одного байта - 35мкс на 14МГц (которая также использовалась 2 раза для засылки адреса в первой подпрограмме). На передачу всех 32 байт одной страницы EEPROM уйдёт 88+35*32=1.2мс плюс ожидание окончания записи - до 50мс.
P.S. Чтение тоже дописал - подпрограмма засылки команды чтения со стартовым адресом также занимает 88мкс на 14МГц, а вот отдельная подпрограмма чтения одного байта потянула на 51мкс (для 14МГц), что означает чтение со скоростью 19 килобайт в секунду.
P.P.S. Развернул цикл чтения - получилось на прочитать 1 байт тоже 34мкс (для 14МГц) как и на запись, т.е. теперь скорость потокового чтения стала 29 килобайт в секунду!
P.P.P.S. Под спойлером исходники подпрограмм работы с EEPROM 25C320 и ещё более ускоренным чтением - 25.3мкс или 38 килобайт в секунду (кстати написанные полностью на Спринтере в FN и TASM - в целом оно должно быть совместимо с 8080 т.к. я никакой z80-экзотики не использовал):
Запись трёх байтов в EEPROM например будет выглядеть так:
P.S. Чтение тоже дописал - подпрограмма засылки команды чтения со стартовым адресом также занимает 88мкс на 14МГц, а вот отдельная подпрограмма чтения одного байта потянула на 51мкс (для 14МГц), что означает чтение со скоростью 19 килобайт в секунду.
P.P.S. Развернул цикл чтения - получилось на прочитать 1 байт тоже 34мкс (для 14МГц) как и на запись, т.е. теперь скорость потокового чтения стала 29 килобайт в секунду!
P.P.P.S. Под спойлером исходники подпрограмм работы с EEPROM 25C320 и ещё более ускоренным чтением - 25.3мкс или 38 килобайт в секунду (кстати написанные полностью на Спринтере в FN и TASM - в целом оно должно быть совместимо с 8080 т.к. я никакой z80-экзотики не использовал):
Запись трёх байтов в EEPROM например будет выглядеть так:
Code: Select all
call SPI_WREN ; разрешить запись
ld hl,0
call SPI_WRITE_START ; начать процедуру записи (послать код команды и адрес)
ld a,0AAh
call SPI_WRITE_BYTE ; послать первый байт
ld a,055h
call SPI_WRITE_BYTE ; послать второй байт
ld a,0
call SPI_WRITE_BYTE ; послать третий байт
call SPI_END ; закончить процедуру записи (снять /CS с EEPROM)
; теперь надо ждать пока запись внутри микросхемы не закончится - для этого берём слово состояния
call SPI_RDSR ; прочитать слово состояния
jp nc,WAITERR2 ; если флаг C не установлен, то запись не идёт - скорее всего мы забыли её разрешить командой WREN
ld bc,1 ; счётчик сколько раз спросили слово состояния, чтобы оценить как долго писалось
WAITFORIT2:
inc bc
ld a,b
cp 8 ; больше двух тысяч циклов прошло, а флаг не сбросился
jp z,WAITERR2 ; уходим по ошибке вместо зависона (маловероятно, но пусть будет)
push bc
call SPI_RDSR ; прочитать слово состояния
pop bc
jp nz,WAITFORIT2 ; если флаг Z всё ещё не ноль то повторяем процедуру проверки слова состояния
; если дошли до сюда, то значит запись закончилась (обычно 37 циклов если запускать из основной памяти, что составляет примерно 2мс)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Всё - сделали. Теперь курьер DHL должен забрать и отправить в штаты...Shaos wrote:"All orders finished data preparation, ready for PCB fabrication."Shaos wrote:Заказал 5 платок (минимум) красного цвета у китайцев на JLCPCB - получилось всего $68 с доставкой DHL
P.S. Забрал курьер - доставят в пятницу:
Estimated Delivery:
Friday, January 22, 2021
By End of Day
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
А между тем посылка уже в Сан-Хосэ - пишут уже сегодня доставят 

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
ДоставилиShaos wrote:А между тем посылка уже в Сан-Хосэ - пишут уже сегодня доставят

You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Ethernet для Timex Sinclair 2068 и пр. (SprinterNet)
Собираю:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net