|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
У нас тут время роадмапов - вот моя "дорожная карта" 1) делается макетка сетевой карточки для Спринтера на базе вот этого прототипа; 2) делается набор драйверов для работы с сокетами через эту карточку (WizNET W5100); 3) пишется/портируется набор сетевых программ, начиная с браузера (Sprinternet Browser); 4) на этом этапе уже можно пользоваться простыми сайтами (см. тут); 5) пишется сервер, который делает обработку сложных случаев (HTTPS, большие JPEG/PNG, работа с большими архивами); 6) делается боевой вариант платы на продажу/раздачу дизайнов как опенсорц; 7) при наличии интереса покупаем 4096 MAC-адресов для внедрения в боевые платы. P.S. Сделал репу на гитлабе 30 января 2021 и перенёс её в раздел nedopc 7 сентября 2024:
https://gitlab.com/nedopc/net
(основная лицензия - Affero GPL)
|
05 Jan 2021 22:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Отпочковано из соседнего топика | | | | Shaos wrote: Вобщем как я и написал чуть выше, я делаю Sprinternet - Ethernet для Спринтера, который начинался в 2016 году как Ethernet для TS2068 (по идее можно сделать единую PCB от которой надо будет отпиливать лишние части, чтобы получить либо Sprinternet-ISA8, либо Sprinternet-TS2068). На борту кроме модуля WizNet (на базе W5100) есть GPIO, 2Кб ОЗУ, 8Кб ПЗУ, SPI EEPROM 25C320 на 4КБ (для хранения MAC-адреса и настроек сети - можно наверное память и побольше поставить, например 25LC1024 на 128КБ, тогда её можно как квазидиск задействовать) и, в будущем, слот для SD-карточки. ПЗУ чтобы сразу иметь "драйвера" без необходимости что-то доустанавливать в DSS, а ОЗУ - для хранения рабочей области переменных для этих самых "драйверов". Можно даже единый код иметь для Спринтера и Timex Sinclair 2068, определяя тип машины программно Минимальный набор драйверов - функции работы с BSD-сокетами, чтобы можно было программировать любые TCP/IP примеры "из книжки", а также функции работы с EEPROM (чтобы давать пользователю функции, обходящие запрещённые зоны, где хранятся MAC-адрес и настройки сети) и SD-карточкой (если будет). Внешними будут программы, использующие эти сокеты (программы естественно разные для разных машин) - HTTP сервер (я его уже писал для W5100 в 2007 году правда в кодах PIC17), HTTP клиент (браузер), а также можно скажем FTP клиента и NTP клиента ещё сделать. Вобщем как-то так... P.S. Ещё идея у меня была т.к. WizNet не хранит в себе MAC-адрес (его надо программно прописывать), можно под мою карманную корпорацию официально зарезервировать диапазон MAC-адресов, записав адреса оттуда в EEPROM-ы, которые раздавать вместе с платами. Сейчас блок из 4096 адресов стоит $780 выплаченных однократно - подробнее см. https://standards.ieee.org/products-services/regauth/oui36/index.html) P.P.S. Как альтернатива покупке блока адресов может выступать EEPROM с зашитым в него MAC-адресом типа 93AA46AE48 (1K Microwire Serial EEPROM with EUI-48), хотя по сути это тоже самое т.к. судя по документации, юзер может перезаписать байты, где записан MAC-адрес.P.P.P.S. Можно не давать пользователю API на доступ к записи в EEPROM байтов и блоков, а вместо этого выдать абстрактный API для некоего key=value persistant storage (с замахом на поддержку cookies в будущем). | | | | |
Про BSD-сокеты: https://en.wikipedia.org/wiki/Berkeley_socketshttps://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BA%D0%B5%D1%82%D1%8B_%D0%91%D0%B5%D1%80%D0%BA%D0%BB%D0%B8Предполагаемый API выполняемый из ПЗУ: http://www.nedopc.org/forum/viewtopic.php?f=60&t=20283&start=45
|
05 Jan 2021 22:39 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
По софту - хотелось бы довести браузер SNB до возможности работать с nedoPC-форумом и nedoPC-вики - для этого например надо поддержать cookies: (cжатие можно отменить) Браузер можно научить отрисовывать SCR, GIF и даже небольшие JPG (есть достаточно компактный целочисленный декодер на сях)
|
05 Jan 2021 22:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Диапазоны адресов карточки Sprinternet (описание изменено, чтобы соответствовать прототипу №3): Программно проверено, что регистры и читаются, и пишутся, как и область TX, а вот в область RX писать нельзя - оттуда только читаем. W5100 имеет четыре сокета, каждый из которых может иметь 1,2,4 или 8 килобайт отведённых под него в области RX и в области TX (размеры в разных областях задаются независимо друг от друга и могут отличаться). P.S. Описание обновлено 21 января 2021 года
|
10 Jan 2021 06:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
В связи с уже доказанной кривизной спринтеровской исы слегка изменил логику работы схемы - теперь контрольный бит TX/RX (расположенный по адресу #C100), кроме переключения областей в последних 8кб, теперь ещё и управляет установкой чтения либо записи из визнета либо SPI: TX (0) - означает, что мы пишем в визнет или SPI - при этом чтение запрещено (защита от мусорных /MEMR); RX (1) - означает, что мы читаем из визнета или SPI - при этом чтение разрешено (собственно как и запись, которая может работать нестабильно). ПЗУ разбито на 4 окна, переключемых путём записи в переключаемую область ПЗУ (0xD800...0xDFFF), но для пущей логичности можно считать адресом переключения #DFFF - это адрес последнего байта страницы ПЗУ, в который можно записать порядковый номер страницы плюс некая константа - например #A0, #A1, #A2, #A3, что позволит прочитать этот байт обратно после записи, чтобы удостовериться, что переключение произошло (описанный выше контрольный бит TX/RX не распространяется на ПЗУ, ОЗУ, триггеры и GPIO). Нулевая страница ПЗУ также всегда видна по адресам 0xD000...0xD7FF. В первых трёх байтах будет JP на инициализацию (3 байта), следом за которым (или по другому заранее известному адресу) может идти наименование платы и версия железа и прошивки - текстовая строка, завершающаяся нулём, например "SprinterNet v1.0.1 build 32 (2021-02-01)", 0 Пользователям будет рекомендовано использовать API из ПЗУ для работы с WIZNet и EEPROM, чтобы в будущем была возможность заменить сетевой модулёк или микросхему EEPROM. ПЗУ в будущем также можно увеличить в объёмах (теоретически до 512 килобайт, адресуя 2КБ-страницы полными байтами вместо теперешних двух битов). P.S. Также имея уникальные значения в последнем байте каждой страницы, можно достаточно просто узнать размер ПЗУ - пробуем переключиться на страницу #1F, записывая это число в #DFFF, и далее читаем обратно байт по адресу #DFFF: - если там #A3, то размер ПЗУ 8К (как сейчас); - если там #A7, то размер ПЗУ 16К; - если там #AF, то размер ПЗУ 32К; - если там #BF, то размер ПЗУ 64К. Большие размеры наверное нет особого смысла задействовать, хотя ничего не мешает дойти до 512К...
|
12 Jan 2021 05:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Решил ещё более усугубить разделение чтения и записи для SPI - новый дизайн платы будет иметь немного другой формат регистра управления и работы со SPI - описание выше изменено, чтобы это отразить А так же придумал добавить разъём DB15M на плату: и GND (в оплётке), а на питание вроде как места уже нету...
|
23 Jan 2021 22:08 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Попробовал написать простые PHP-скрипты для сервера, который делают перевод доменных имён в IP-адрес: и забирание HTTPS-контента с возвращением его через HTTP: Как ни странно - они работают В боевом варианте наверное надо предусмотреть работу только некоторых сайтов по списку, а то в дискорде сразу же предложили через мой сервер в порнхаб залезть P.S. Например есть очень симпатичный архив роялти-фри фоток: https://www.pxfuel.com (там иконки фоток шириной 350 пикселов, что вполне согласуется с полным разрешением графики Спринтера в 352x288, и поиск по ключевым словам через аргументы в урл, а также есть изменение размера картинки под произвольные размеры) P.P.S. Ещё есть сайт анимированных гифок (упомянут в NedoOS): https://acegif.comP.P.P.S. Ну и на спектрумовые ресурсы тоже можно так ходить - https://vtrd.in и https://worldofspectrum.net/ (в последнем случае можно добраться до SCR и ZIP-файлов через HTTP)
|
23 Jan 2021 22:23 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Вот чуть более навороченный резолвер, который возвращает IP-адрес в 16-ричном виде: Возможно надо всё объединить в один index.php, чтобы обращаться сюда как http://sprinternet:8080/?host=...&op=... и т.д. (IP-адрес имени sprinternet уже будет сохранён в hosts компьютера). Кроме того это упростит ведение учёта - каждое использование объединённого PHP-скрипта будет фиксироваться в базе данных. Возможный набор операций: op=resolv - возвращает IP-адрес по имени сервера host (операция по умолчанию); op=version - возвращает версию серверного программного обеспечения; op=unixtime - возвращает количество секунд прошедших с нуля часов 1 января 1970 года относительно сейчас либо относительно момента указанного в параметрах запроса (url-encoded param); op=https - забирает содержимое указанной веб-страницы по HTTPS и возвращает по HTTP (имя сервера указано в параметре host, а необязательный путь к файлу - в url-encoded параметре param). P.S. Вот пример получения текущего времени (если запущено без параметров) и перевода строки с датой и временем (например из куков) в unixtime (если с url-encoded параметром param, например param=Sat%2C%2029-Jan-2022%2003%3A28%3A17%20GMT вернёт 61f4b451):
|
28 Jan 2021 19:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Для управления серверной частью через браузер (например добавление разрешённых сайтов или новых пользователей и т.д.) хотелось бы прикрутить https:// для которого нужен сертификат (кроме того сертификат нужен например для вебхуков телеграм-ботов, с которыми я уже начал играться). Существует бесплатный вариант - LetsEncrypt, но там надо ставить какого-то демона и я сомневаюсь что эти сертификаты совместимы со старыми браузерами - например я этот текст пишу из Safari 4.1.3 из MacOS X 10.4 на своём стареньком PowerBook G4 и по HTTPS он мало что показывает, но кое-что таки показывет - вот хотелось бы понять какие сертификаты с ним всё ещё совместимы... P.S. Примеры HTTPS-сайтов всё ещё как-то работающих в старом сафари: https://www.cnn.com - Verified by GlobalSign nv-sa (от $249 в год), TLS 1.2, однако сам globalsign.com НЕ открывается https://www.google.com - Verified by Google Trust Services, TLS 1.3 (не нашёл способов купить такой сертификат - видимо гугл только сам для себя его печёт) https://archive.org (сам архив, но не машина времени) - Verified by GoDaddy.com, Inc. (от $64 в год), TLS 1.2, однако сам godaddy.com НЕ открывается https://hackaday.io - Verified by DigiCert Inc. (от $218 в год), TLS 1.2 (но НЕ hackaday .com который Verified by LetsEncrypt), однако сам digicert.com НЕ открывается... и сайтов уже нормально не работающих, но и не ругающихся на несовместимость сертификата: https://www.youtube.comhttps://www.gmail.comP.P.S. Вот чуть подробнее про разницу сертификатов DigiCert для hackaday.io (открывается в старом сафари) и обственно самого digicert.com (не открывается в старом сафари): а также archive.org (открывается) и godaddy.com (не открывается): видимо трюк в том, что это должен быть сертификат TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 128 bit keys, TLS 1.2 чтобы открываться в сафари 10-летней давности...
|
30 Jan 2021 18:00 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
| | | | Shaos wrote: Возможно надо всё объединить в один index.php, чтобы обращаться сюда как http://sprinternet:8080/?host=...&op=... и т.д. (IP-адрес имени sprinternet уже будет сохранён в hosts компьютера). Кроме того это упростит ведение учёта - каждое использование объединённого PHP-скрипта будет фиксироваться в базе данных. Возможный набор операций: op=resolv - возвращает IP-адрес по имени сервера host (операция по умолчанию); op=version - возвращает версию серверного программного обеспечения; op=unixtime - возвращает количество секунд прошедших с нуля часов 1 января 1970 года относительно сейчас либо относительно момента указанного в параметрах запроса (url-encoded param); op=https - забирает содержимое указанной веб-страницы по HTTPS и возвращает по HTTP (имя сервера указано в параметре host, а необязательный путь к файлу - в url-encoded параметре param). | | | | |
Возможное расширение для передачи сообщений: op=auth - в параметре user передаётся имя пользователя, в param - хэш пароля (зависит от даты, т.е. пригоден только до полуночи по гринвичу), а в ответ с сервера уходит sid (Session ID) со временем жизни скажем сутки; op=chat - вернуть все сообщения для пользователя (который идентифицируется полем sid) и если в param что-то есть, то это новое сообщение от пользователя (там в начале может быть указан идентификатор канала куда пишем), а для перемотки прочитанного можно пользоваться числовым параметром start (у каждого сообщения есть ID, который инкрементируется автоматически). Та же самая авторизация может быть использована для некоторых других операций, например op=https и может быть даже op=resolv (чтобы исключить abuse со стороны случайных интернетчиков). P.S. Добавил репу на гитлабе (лицензия будет Affero GPL)
|
30 Jan 2021 21:44 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
можно расширить ответ (попутно поменяв имя операции с unixtime на просто time) - следом за 4 байтами unixtime (8 шестнадцатиричных символов) в хексе возвращать дату и время в нулевой таймзоне (GMT): YYYYMMDDHHMMSS (7 байтов или 14 символов в BCD - т.е. всего 22 символа): это может оказаться полезным скажем для настройки часов Спринтера - надо будет в EEPROM сохранять таймзону и флаг летнего перевода времени ну или просто смещение от GMT, которое пользователю надо будет ручками менять 2 раза в год для стран, где летом время сдвигается: P.S. В мире существует целый ряд временных зон с "нецелым" смещением от GMT: https://www.worldtimeserver.com/learn/unusual-time-zones/ Самые странные из них:
Соответственно в EEPROM карточки SprinterNet надо будет сохранять таймзону с шагом в 15 минут (четверть часа) - соответственно надо уметь представлять числа от -12 до +14 с шагом в 1/4 (см. https://www.timeanddate.com/time/map/) - можно умножить количество смещаемых часов (со знаком и с дробной частью) на 4 и в пределах байта это будет значение от -48 (#D0) до +56 (#38), причём например таймзона +13:45 (сейчас на островах Chatham т.к. у них там летнее время в данный момент) будет представлено как +55 (#37).
|
01 Feb 2021 01:21 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Сделал себе сертификат Letsencrypt https://sprinternet.io даже открывается в старом Сафари из MacOS X 10.4 на моём PowerBook G4 P.S. Хотя официальная проверялка не может его проверить: https://www.ssllabs.com/ssltest/analyze.html?d=sprinternet.ioP.P.S. А на другом компе проверялка сработала CERTIFICATE
|
01 Feb 2021 04:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
С этим https:// ситуация странная довольно-таки... Когда https:// вдруг появился повсеместно, я вдруг в собственную почту не мог зайти, но потом нашел довольно интересный браузер: Он по многим https:// заходил легко и просто, как словно https:// не существует! Другое дело, что у него с HTML были большие траблы, но вот с https:// он на удивление как-то умудрялся справляться! Хотя в общем - довольно кривой браузер...
_________________ iLavr
|
02 Feb 2021 01:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23467 Location: Silicon Valley
|
Интересный браузер - корнями уходит в 90е, но последняя версия выложена в 2013 году - попробую собрать в линухе https://sourceforge.net/projects/dplus-browser/P.S. Он от кучи либ линуксовых зависит, в том числе ssh2, nghttp2 и curl (классическая тулза, которая умеет открывать https://) - ставлю по одной, чтобы собралось... P.P.S. Не, не собирается - какой-то затык с зависимостями в libcurl...
|
02 Feb 2021 04:44 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ты знаешь, у меня сложилось вот какое впечатление о проблеме с https:// для которого нужен сертификат ...
Я поначалу просматривал всякие форумы по браузеру Опера, чтобы как-то заставить его работать, так там излагали следующее: когда Опера 9.64 упирается в непонятный ей https://, она выкатывает страницу своих оправданий про сертификат и шифрование, но на этом и тормозит.
Люди пишут, что в версии чуть более ранней, чем Опера 9.64 на этой страничке была заодно и кнопочка типа: [Игнорировать и продолжить соединение] - как-то так...
Так вот мне кажется, что браузер D+ игнорирует по умолчанию: в силу своей простоты он не заморачивается на этот повод. Если всё совсем уж плохо - он просто молча висит, но не зависает - выключить его можно.
_________________ iLavr
|
02 Feb 2021 05:01 |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|