1

Тема: Мост # 3

Привет!

Решил ещё один роман написать. Или прозу. Или новеллу. Блог, в общем.


Abstract

Мосты были хорошими устройствами, они много чего помогли выдернуть интересного,
но сейчас природные ресурсы свободных дисков заканчиваются, остаются только
ресурсы, недоступые лишь через доброе слово и рекламу нашего сайта.
Нам нужно решение этой проблемы. Нужен мост # 3, который позволит снимать
диски минимально включая мозги, компьютер и не отвлекаясь от телевизора.


Formulation of the problem

Были всякие идеи про расширение моста путём конверторов LPT<->USB,
я даже заказал такой на пробу, но чья-то почта его пролюбила и мы не встретились.
Может как раз вирус сожрал - я заказ делал в начале 2020.

Но это всё полумеры и многих нынешних проблем USB-мост бы не решил.
Когда мосты проектировались и вода была мокрее и здоровье наше тоже позволяло
путешествовать за дисками и девушки тоже ... чем-то отличались,
но я уже забыл - чем.

Сейчас мир изменился, компьютеры с LPT-портом есть не у всех,
BIOS-поддержка, необходимая для работы *dos ушла, пришла EFI, мы рады движняку, но мосты так не работают.
Да и сами компьютеры тоже есть не у всех. Практика показала также,
что у владельцев дисков не всегда есть даже дисководы.
А ещё у них не всегда есть желание отправить диски нам. У них не всегда
есть даже память о том, как вообще выглядят агатовкие файлы и
что иногда диски нужно было переворачивать.
Они не помнят и формат записи, могут путать спектрум, агат, ДВК и далее по списку.

Новые устройства типа флюксы и SCP спасают мало, потому что:

1) Про агат они мало знают. Катастрофически мало. А знать нужно хотя бы для того, чтобы отличить две версии
агатовских форматов (хотя можно ещё помянуть редкий, но всё же изредка встречающийся формат dos32
и это будет уже три версии формата) от других систем. И ещё чтобы хотя бы понять, сколько ещё ретрейсов
понадобиться, чтобы нормально прочитать дорогу. А желательно и сразу подсказать, на каком дисководе нужно читать
этот диск (PC-совместимом или ес5088).

2) Они требуют хотя бы подключиться к компу по USB и всё таки поставить драйвера. И потом запустить прогу.
Иногда даже с комстроки. Это уже плохо ложиться на современный user experience.
А если владелец дисков уже покинул нас, то наследники, скорее всего, знают только что через дискету
удобно на солнечное затмение смотреть.

3) Они не поддерживают ес5088. Или что-то совместимое от шугарта, тика, альпинса и т.д.
Чем ес5088 лучше 80-дорожечного тика для чтения 140кб дисков ?
a) ес5088 имеет широкий магнитопровод головы. Такой, как те дисководы, которые 25 лет назад записывали этот диск.
b) Они не гордые и могут читать перевёрнутый диск (не получая сигнал индекса).
    Тик может читать вторую сторону диска верхней головой, но только от трека 4 и выше. Более ранние
    не может захватить из-за сдвига в положении верхней головки
    (её магнитопровод сдвинут ближе к центру диска, относительно нижней).
c) Они умеют ставить голову с некоторым смещением от дорожки. Мелочь, но иногда тоже полезная.
d) Они гарантированно имеют нужную частотную полосу усилителя чтения.
Т.е. нередко прочитать сторону A у 140кб дискет можно и на PC-совместимом флопе.
Но мы уже наблюдали исключения, когда этого сделать нельзя.
При попытке чтения B стороны у 140кб сложностей ещё добавляется.

To be continue...

2

Re: Мост # 3

Жизнь то у меня похоже налаживается.

3 Отредактировано Voldemar0 (11-07-2021 19:36)

Re: Мост # 3

Proposal

С другой стороны, мир всегда меняется. Причем не так, как принято говорить в журналистике:
"если так продолжиться ещё 10 лет, то все умрут" (а некоторые, к тому же, ещё и сдохнут),
а одновременно, по многим параметрам и не взирая ни на чьи пожелания.
Так что потеряв многое, мы многое и обрели. Включая знания о контроллерах агата, снижение цен на мощные процы,
опыт разработки ПО и РЭА, а также интересные решения и предложения в области встраиваемых систем.
Да и матрицы, конечно!

Таким образом мы хотим (и это возможно реализовать) мост # 3.
Эскиз его особенностей и возможностей:

1) Проц imx6 от FreeScale / NPX. Скорее всего imx6ul или imx6ull. Его производительности
с крышечкой хватит для обработки трека и для других плюшек.

2) Объём набортного ОЗУ >= 256 Мб.

3) Плата будет работать автономно, без участия какого либо компьютера.
Данные будут сохраняться во встроенную flash, возможно формата eMMC или raw-NAND.
Объём >= 256 Мб.

4) На плате будут минимум три интерфейса для подключения к компьютеру:
  - debug-порт (UART). USB-UART не буду ставить.
  - USB-OTG. Устройство может изображать mass storage device (флешку) для компа либо сможет само скидывать файлы на
  подключенныю USB-флешку (после чтения данных с дисков).
  - Ethernet. Можно будет вывести устройство в проводную сеть и управлять им, а также обмениваться файлами.

5) Также на плате будет слот для SD-карт (скорее всего только для microSD, но дальше будет видно).
  Его тоже можно будет использовать для сохранеия образов, но основная задача это слота
  - обновление прошивки.

  Жирно подчеркну: такой богатый выбор интерфейсов связан не с тем, что мне охота поиграться,
  а просто потому, что imx6 является системой-на-кристале и там уже всё это есть, остаётся
  только предусмотреть на плате разъёмы и трансформатор развязки для Ethernet.

6) На плате будет минимум кнопок. Скорее всего это будут традиционные
стрелки влево-вправо-вверх-вниз, "ввод" и "отмена", а также "прочитать с дисковода A" (PC-совместимые)
и "прочитать с дисковода B" (ес5088, Apple][ - совместиые).
Ещё кнопка сброса, но это только для отладки.
Переключатель "работа" / "обновление ПО".

Сигналы выбора дисковода буду выставлять все доступные для данного интерфейса одновременно, чтобы
не было мороки с настойкой дисковода как DS0, DS1... Само собой - на кабеле будет допустим
только один дисковод.

Что делать с выбором скорости, если дисковод поддерживает 360 и 300rpm ? Вероятно,
будет автоматическое переключение: пробуем 360, если трек не читается на 10й оборот - переключаемся
на 300 и пробуем снова.

7) Индикаторы: OLED-дисплейчик мелкого размера и большая группа двухцветных и одноцветных SMD-светодиодов.
В чём смысл: дисплей - штука хрупкая, а устройство наверняка не будет храниться в металлическом
сейфе или дипломате. Поэтому делать крупный дисплей рискованно. Но мелкий дисплей плохо читается.
Поэтому дисплей оставляем для всяких тонких настроек (если нет возможности выполнить их с ноута)
и всякой вспомогательной информации.
А на светодиоды, размазанные по плате, выводим статус программы чтения:
номер текущей дороги, может быть номер прохода, а также информацию о прочитанных секторах
с текущей дороги (зелёные - успешно, красный - ошибка, оранжевый - не найден).
Драйвер светодиодов - max7219. Если одной вдруг не хватит - воткну две на отдельные i2c-шины.

Обязательно: светодиод, индицирующий отсутствие сигнала с флопа (т.е. когда висит константа
и линия никак не меняет значение. А также можно добавить какой-то режим индикации,
когда частота сигнала слишком низкая или слишком высокая (долгое время > 2 МГц или получаем константу > 100 мкс)).

8) Обязательно внешний RTC. imx имеет часы на борту, но они там объединены с подсистемой безопасности
и любят пожрать. Для LiPO-питания приемлимо, но тут его не будет,
а cr2032 будет чувствовать себя не комфортно. Так что ds1307 или что-то подобное будет отдельно.
Время нужно для того, чтобы ставить даты создаваемых файлов.

9) Питание устройства:
будет требоваться внешнее питание +5 и +12 в.
Мне не хочется делать понижайку с 12 в 5 из соображений уменьшения помех на плате.
А внешний блок питания на такие напряжения найти - не фокус.
Внутренняя схема будет питаться от 3.3в. Линейный регулятор - понижайка с 5в.
Возможно, также будет линейная понижайка с 12в в 5в для питания USB-флешки.

Можно предусмотреть на плате разъёмы "Molex" и "ATX-БП".

10) ПО: u-boot -> linux kernel (4.x или 5.x) -> busybox в качестве основы операционки.
Для ethernet web-интерфейс (Скорее всего только для настройки, не для управления съёмом.
Хотя тут как пойдёт). ftp/samba для обмена файлами, но возможно это будет тоже через web-интерфейс.
dhch-сервер, управляемый из меню на плате: можно будет включить для работы, например,
с ноутом через cross-кабель или выключить при подключении к локалке (тогда адрес устройство
будет получать от внешнего dhcp и выводить на экранчик).

Что-то надо будет подобрать для работы с USB-otg для режима Device.
Пока не имел дела с этим режимом.

ПО для обработки дисков: буду писать либо на C либо на Pascal либо на их смеси.
C хорош когда нужно много общаться с операционкой, но Pascal выигрывает
по встроенным в прогу self check. Или пойти совсем другим путём и изучать что-то другое ? Go ?

Скорее всего, диск нужно будет ставить в 840ку и логика ПО будет пытаться применить различные
алгоритмы к RAW-данным очередной дорожки и определить её формат.
Если на диске будут обнаружены следы формата Disk][,
то устройство будет явно просить переснять диск на ес5088, указывая какой именно стороной нужно установить диск.
Сохраняться будет, как обычно, максимум данных от обеих дисководов.
Вероятно, надо будет также поддержать формат PC-совместимых контроллеров.
Для декодеров будет какой-то api, позволяющих легко их дописывать по мере необходимости.

Запись на диски будет второстепенной задачей и появиться не сразу.
Вероятно, на плате будет переключатель, аппаратно запрещающий выдачу сигнала !WRITE на дисководы.

10) Интерфейс с флопами через 3.3в <-> 5в преобразователь, скорее всего SN74LVC4245DW.
Вероятно, оба флопа будут подключаться независимо, т.е. если по процу вывезу, то можно будет
снимать одновременно двумя. Если нет - значит только один в одно время. Но точно, что подключить
можно будет оба флопа одновременно.

11) Для заливки RAW-потока от флопика попробую задействовать SPI-интерфейсы на скорости 8 МГц.
Если он будет работать без разрывов синхронизации - самое то. !! Но вот это ещё предстоит проверить !!

Если нет - запахнет верилогом. Но возможно есть готовые микрухи с интерфейсами spi или i2c
(что-то вроде непрерывно работающих сдвиговых регистров, которые можно асинхронно читать и писать) ?

12) Возможно, предусмотрю "обратные" разъёмы для подключения устройства в качестве эмулятора флопиков.
Но это второстепенно, софт явно не будет поддерживать этого решения изначально.
Кроме того это потребует большего числа 5-3.3в преобразователей.

13) Печатку рисую сам, если уложусь - два слоя, если нет - 4.
Буду пробовать. Хотя могу и передать это кому-то.
Проц буду брать сразу на модуле вместе с памятью и обвесом, что-то вроде MYC-Y6ULX от MYiR.
Импонирует пайка модуля сразу на плату и широкий шаг выводов, дизайн mainboard попроще.

4

Re: Мост # 3

Notes:

1) Я понимаю, что этот проект не будет дешевым с точки зрения комплектухи.
Думаю, можно было бы выбрать и проц попроще и более тонко подобрать другие составляющие.
Но так как решение узкоспециализированное, то и число экземпляров вряд ли
превысит 10. Следовательно, R&D будет всё равно стоить больше чем комплектуха.
Очень приблизительно разработка+отладка вечерами займёт около года.
В общем-то, два моста # 2 потребовали сопоставимого времени.
Преимущество же imx6 для меня в том, что я достаточно хорошо знаю этот SoC.


2) Этот проект не будет showstopper'ом, подобно тому, как это планировалось для w5100 и как планируется для проекта, который я сейчас заканчиваю (там всё просто: ATMega128 + max240).
Возможно, я выпущу ролик по мосту # 3, но всё же основные подробности буду равномерно публиковать здесь, подобно тому как это было во время работы над "простым текстовым редактором" или адаптером ps/2-клавиатуры.

5

Re: Мост # 3

Володя, мы тут для своего MSX проекта откопали интересный SOM:

https://www.mouser.de/ProductDetail/MYI … jtzapkOQ==

Посмотри - может тебе пригодится.

6

Re: Мост # 3

Спасибо, но он чуть дороже и двухядерник. А два ядра тут, мне кажется, бессмысленны.
Ну и другой производитель проца. Хотя, может быть, это и не очень важно.