176 Отредактировано Voldemar0 (02-05-2024 20:14)

Re: Мост # 3 - специализированный компьютер для чтения дискет

Запустил FTP на плате. Работает.
Количество задач растёт, но их размер/сложность стремительно уменьшается. Поэтому составил ToDo-list.
Выглядит конспектом - поэтому под катом, но это реальный список, по которому сейчас работаю, поэтому пусть будет. Знак "+" в начале строки означает, что задача решена. Знак "-" не означает ничего :)

Spoiler

0) Подключение и отключение внешних накопителей (SD, USB). Сейчас делаю вручную, но давно уже есть кнопка на плате и светодиод и они должны быть программно связаны.


почему клавиатура в инсталяторе не работает ? (не нужна, но всё таки...)


MAIN: command invalid 2 ('')


uninitialized urandom read


уменьшить число инодов на cfg и storage
на storage изменить владельца на 6502


3) Инсталятор. Сейчас ПО работает с внешней SD-карты, инсталятор должен уметь закидывать ПО внутрь SoM.
Вроде бы я его когда-то начинал делать, но так и не попробовал - работает он или нет.
Проверил: я его не доделал :)


4) На плате должен быть SSH-сервер. Вообще-то сейчас там стоит какой-то лайтовый SSH, он пускает без проблем, но он, вроде бы, не умеет строить туннели. Туннель нужен для того, чтобы техподдержка платы могла зайти на устройство даже в случае его работы за домашним NAT. Т.е. устройство само строит туннель до сервера техподдержки, а ТП заходит на сервер и затем, через туннель, ныряет на плату. И там уже можно апдейтить софт, поглядеть журналы ошибок, потестировать запуск отдельных прог вручную и даже использовать встроенный отладчик. Эта задача видится сейчас как наиболее неопределённая по времени, но, в целом, ясно, что нужно брать OpenSSH и пытаться его скомпилировать под наше железо и встроить в прошивку.
    кстати, в этом ssh как раз есть поддержка туннелей. да и openssh тоже уже скомпилирован. Осталось только настроить.



web-интерфейс: главная странциа
    + управление кнопками
    + накопители
    - синхро номера и шаблона


web-интерфейс:
    установка времени / отключение/включ ntp
    установка IP / DHCP
    удаление снятых образов
    mount/umount storages
    перезапуск операционки
    остановка операционки


спектрограмма: заголовок для web


скорость 140 - хотя бы пусть без скорости, но позиционер головки нужен
    - нужно на мелкий экран хотя бы номер трека выдавать
    + нужно отвязать фразы от 840 ("нет сигнала от датчика"...)


зависон при остановке и libtherad_db
    + ! рекурсивный вызов ui_client ! понятно почему, не ясно как избежать
Error 'UI client: lock semaphore' in ui-clientl.c: ui_client:164: Inappropriate ioctl for device
Error 'UI client: lock semaphore' in ui-clientl.c: ui_client:164: Inappropriate ioctl for device


kill -9 из web


зомби шелла


1) Всё отладить и потестить. Там сложного ничего, но само количество точек тестирования приличное (поработать с разными дисководами, проверить создание, удаление образов, с платы и с web-...) - именно не каждую отдельную часть, а в комплексе. Это тест не только на технические ошибки, но и usability.


+2) Нужно воткнуть для начала ftp-сервер. Это самый быстрый способ забирать готовые образы с платы. Либо нужно выдёргивать флешку и читать её на компе. Собранный ftp у меня уже есть, так что только слить в прошивку и прошерстить конфиги, чтобы работал анонимный доступ.

177

Re: Мост # 3 - специализированный компьютер для чтения дискет

Каждый выпуск на youtube получается длинный.  И выходят выпуски с большими интервалами.
Всё время хочется сократить и период и размер, но не получается.

Начинаю пилить фичу A. Сейчас закончу, сделаю короткий ролик по ней. Но в процессе выясняется, что для A неплохо было бы доделать фичу B. Но B тянет за собой ещё и C, D и E.

Всё это вырастает параллельно, в итоге ролик оказывается загружен от A до E.
И даже в сюжете их сложно разъединить, чтобы набранный материал оформить как два отдельных ролика.

--

Закончил главную страницу web-сайта, сделал страницу управления временем (часами) платы.

Не стал делать поддержку ntp (синхронизация часов по сервисам Интернет). В ПО платы есть ntp, но ntp получает универсальное скоординированное время (UTC), чтобы из UTC получить локальное время нужны файлы тайм-зон (описатели часовых поясов), нужно управление ими (т.е. селектор на web-интерфейсе) и т.д. Решил пока на это не заморачиваться.

Инсталлятор тоже работает уже. Инсталлятор здесь - это возможность залить на новую плату всё ПО устройства без программаторов и паяльников, за пару минут.

178 Отредактировано Voldemar0 (08-05-2024 21:19)

Re: Мост # 3 - специализированный компьютер для чтения дискет

Сделал управление накопителями, можно подключать-отключать.
Из визуально-видного: пока нельзя просмотреть список снятых образов (на web "Файлы на Мосту").

А так, для этапа 0, всё выглядит окончательно. Можно смотреть тут:
http://95.191.5.55:6502/
Будет доступно до 11 мая примерно.

Заметки:
1) Скорость на 140ке считается неправильно: висит константа около 195 мс/оборот: там сама архитектура измерения неправильная, позднее буду переписывать, но там будет много работы.

2) Можно менять IP-шник, но после смены верните обратно :) Иначе после перезагрузки устройство исчезнет из вида.

3) Операционку можно перезагружать, но только если IP-ник правильный. Иначе после перезагрузки устройство исчезнет из вида.

4) Устройсво нельзя выключать. Сам обратно не включится.

Остальное можно. Даже отключать-подключать накопители (отключение тут - операция обратимая без механических действий).

USB-флешка воткнута, но она тормозная и, возможно, с ней съём будет идти медленнее.
Но можете поэкспериментировать :)

Часики идут по томскому времени, можете перевести на своё, если хотите.

Текущий ToDo:

Spoiler

почему клавиатура в инсталяторе не работает ? (не нужна, но всё таки...)


4) На плате должен быть SSH-сервер. Вообще-то сейчас там стоит какой-то лайтовый SSH, он пускает без проблем, но он, вроде бы, не умеет строить туннели. Туннель нужен для того, чтобы техподдержка платы могла зайти на устройство даже в случае его работы за домашним NAT. Т.е. устройство само строит туннель до сервера техподдержки, а ТП заходит на сервер и затем, через туннель, ныряет на плату. И там уже можно апдейтить софт, поглядеть журналы ошибок, потестировать запуск отдельных прог вручную и даже использовать встроенный отладчик. Эта задача видится сейчас как наиболее неопределённая по времени, но, в целом, ясно, что нужно брать OpenSSH и пытаться его скомпилировать под наше железо и встроить в прошивку.
    кстати, в этом ssh как раз есть поддержка туннелей. да и openssh тоже уже скомпилирован. Осталось только настроить.


web-интерфейс:
    +установка времени
    +установка IP / DHCP
    удаление/список снятых образов
    +mount/umount storages
    +перезапуск операционки / остановка операционки


зависон при остановке и libtherad_db
    + ! рекурсивный вызов ui_client ! понятно почему, не ясно как избежать
Error 'UI client: lock semaphore' in ui-clientl.c: ui_client:164: Inappropriate ioctl for device
Error 'UI client: lock semaphore' in ui-clientl.c: ui_client:164: Inappropriate ioctl for device


kill -9 из web


порезать раздать всем внутренним файлам права и удалить _хвосты


? глюки у дисплейчика ?


ftp проверить особо


1) Всё отладить и потестить. Там сложного ничего, но само количество точек тестирования приличное (поработать с разными дисководами, проверить создание, удаление образов, с платы и с web-...) - именно не каждую отдельную часть, а в комплексе. Это тест не только на технические ошибки, но и usability.


----


+2) Нужно воткнуть для начала ftp-сервер. Это самый быстрый способ забирать готовые образы с платы. Либо нужно выдёргивать флешку и читать её на компе. Собранный ftp у меня уже есть, так что только слить в прошивку и прошерстить конфиги, чтобы работал анонимный доступ.
+зомби шелла

+3) Инсталятор. Сейчас ПО работает с внешней SD-карты, инсталятор должен уметь закидывать ПО внутрь SoM.
+Вроде бы я его когда-то начинал делать, но так и не попробовал - работает он или нет.
+Проверил: я его не доделал :)

+MAIN: command invalid 2 ('')
+уменьшить число инодов на cfg и storage
+на storage изменить владельца на 6502

+uninitialized urandom read

+скорость 140 - хотя бы пусть без скорости, но позиционер головки нужен
    + нужно на мелкий экран хотя бы номер трека выдавать
    + нужно отвязать фразы от 840 ("нет сигнала от датчика"...)

+web-интерфейс: главная странциа
    + управление кнопками
    + накопители
    + синхро номера и шаблона

+спектрограмма: заголовок для web

+0) Подключение и отключение внешних накопителей (SD, USB). Сейчас делаю вручную, но давно уже есть кнопка на плате и светодиод и они должны быть программно связаны.
    +переписать cgi-bin/storage , чтобы он понимал маски, а не точные имена устройств
    +не забыть про кнопку и светодиод

179

Re: Мост # 3 - специализированный компьютер для чтения дискет

Снятие образа 840К:

Работа программы завершена
Не удалось определить главный формат диска :((
Bridge3: get floppy image
Package version 0.97 (Trollholmsund)
DRIVE CONTROL: 0.008 ms for move the head to the zero track
DRIVE CONTROL: wait for 991556 mks for drive up
Open /dev/spidev1.0 device
SPI mode 0x0, 32 bits per word, 20000000 Hz max
Control keys: 's' - skip track / phase, 'q' - skip phase / quit.
DRIVE CONTROL: 199.46 ms per turn
DRIVE CONTROL: this drive has 87 cylinders
Check '/storages/internal/Bridge3/' access... Success
Config variable only140 not found !
FIN

Печалька :(
Снятие образа 140К ведет себя так же.
Но спектрограммы показываются.

Управление позиционером:

0 трек, 72 оборотов, время мгновенное: 199.55 мс, время среднее: 202.2558 мс

Уровень на линии Density - низкий (пин 2), примерная скорость - 360 об/мин

Кажется, значение "примерная скорость" не зависит от снимаемых показаний. Но если потыкать кнопки, то 360 меняется на 300. Я не понял, как это должно работать :(

Там же:

The head is on the track   0,   30 turn(s), instant time 199.48 ms, average time 199.4710 ms
The head is on the track   0,   31 turn(s), instant time 398.94 ms, average time 205.9055 ms
The head is on the track   0,   32 turn(s), instant time 199.48 ms, average time 205.7045 ms
The head is on the track   0,   33 turn(s), instant time 199.47 ms, average time 205.5156 ms
The head is on the track   0,   34 turn(s), instant time 199.47 ms, average time 205.3379 ms
The head is on the track   0,   35 turn(s), instant time 199.48 ms, average time 205.1704 ms
The head is on the track   0,   36 turn(s), instant time 398.94 ms, average time 210.5529 ms
The head is on the track   0,   37 turn(s), instant time 199.47 ms, average time 210.2535 ms
The head is on the track   0,   38 turn(s), instant time 199.48 ms, average time 209.9700 ms

Кажется, по-прежнему есть пропуски сигнала индекса.

После перезагрузки попытка снять образ показывает вот это.

Ошибка подключения к статусу 840кб
Ошибка подключения к журналу 840кб

Спустя какое-то время работа восстанавливается. Видимо, до этого момента операционка просто не готова, но понять это нельзя (интерфейс-то работает!).

180 Отредактировано avivanov76 (11-05-2024 00:27)

Re: Мост # 3 - специализированный компьютер для чтения дискет

Пара мелких замечаний по английскому:

0.042 ms for move the head to the zero track

Тут нужен предлог to: 0.042 ms to move

It is successfull final.

Тут пропущен артикль, плюс в слове successful только одна буква l. Но главное - фраза какая-то странная. Не понятно, а что тут по-русски должно было быть? Final - это последняя серия в сериале, последняя игра в турнире. А тут финал чего?
Если имелось в виду "Обработка завершена успешно", то можно было написать "Processing completed successfully".

181 Отредактировано Voldemar0 (11-05-2024 18:58)

Re: Мост # 3 - специализированный компьютер для чтения дискет

Английский поправлю, спасибо!
Для меня использование for вместо by или to - не редкость. Я не совсем понимаю разницу между for (для ?) и to (у которого куча значений направления, включая и "для")...

It is successfull final.
Я имел ввиду: "Это успешное завершение."

В программе есть ещё два варианта:
It's final. But I couldn't detect a main format :((
It is successfull final. The main format detected and read without errors.
It is good final. The main format detected, but %d error(s) encountered while reading.

--

По прогам:

> Config variable only140 not found !

Это мне пару раз встречалось - ошибка странная, я пока не понял, в каких случаях она возникает.
В файле конфига нет одной переменной (или почему-то её не находит процедура поиска).
Надо чинить.

Workaround: щёлкнуть галочку "Использовать такой же шаблон для образов 840кб дисков:"
Само значение галочки не важно, но при её изменении этот параметр пересоздаётся.


> Снятие образа 140К ведет себя так же.
Прога одна и та же (снятие 840 и 140), переменная тоже одна. Т.е. это та же ошибка.

> "примерная скорость"

Это такая величина, которая измеряется при запуске привода 840 (для 140ки она - константа) и при смене уровня Density. Измеряется по сигналам индекса, но используется не для программы "скорость", а для сохранения в eim3-файл, чтобы потом декодеры могли понимать, какую поправку на скорость чтения делать. Важно, что эта величина может быть только либо 300 либо 360.
Примерно так: if RealSpeed > 330 then speed = 360 else speed = 300.

А дальше уже играет эта проблема:

> The head is on the track   0,   36 turn(s), instant time <b>398.94</b> ms, average time 210.5529 ms

И вот откуда эта штука возникает - я пока не понял. Выглядит так, как будто пропущен один index.
Вроде бы, это бывает не с любыми дисководами. Это надо будет проверять и искать причину.
Сейчас подключен привод 3.25'', но бОльшую часть отладки я вел на разных 5.25''. Вроде бы там не было этой проблемы.

> Ошибка подключения к статусу 840кб

Это не совсем ошибка, тут причина вот в чём:
журналы и статусы - это просто файлы на RAM FS.
Т.е. после перезагрузки ОС они теряются. Пока не запустишь какую нибудь программу, журналов нет.
После запуска любой из прог журнал появляется.
Каждый новый запуск прог журнал переписываются.


{
...можно создавать пустые журналы при запуске ОС...
Или с какой нибудь фразой, вроде "Информации пока нет"....
}

182

Re: Мост # 3 - специализированный компьютер для чтения дискет

Voldemar0 пишет:

to (у которого куча значений направления, включая и "для")

To еще используется для обозначения результата действия или процесса. У for такого значения нет.

Voldemar0 пишет:

Я имел ввиду: "Это успешное завершение."

Я вот думаю - это все какие-то расплывчатые формулировки: "успешное", "хорошее". Может, указать конкретный результат, типа "образ создан/не создан"?

Voldemar0 пишет:

It's final. But I couldn't detect a main format :((

Немного выбивается из общего стиля. В остальных фразах местоимений нет, а тут вдруг "Я".
Предлагаю так:

The disk image has not been created. The main format could not be detected.

И остальные фразы (passive voice тут обязателен, потому что не "формат определил", а "формат был определен"):

The disk image has been created. The main format was detected and read without errors.
The disk image has been created. The main format was detected, but %d error(s) were encountered while reading.