Глюки

Feb. 17th, 2017 06:05 pm
Поставил на кубитрак армбиан (нет уже сил с гентой: собирать пакеты можно лишь на компьютере, несерьезно это). Почти час убил в попытках понять, почему же у меня перестало работать считывание изображения с all-sky. Затык обнаружился здесь:
size_t read_tty(uint8_t *buff, size_t length){
    ssize_t L = 0;
    fd_set rfds;
    struct timeval tv;
    int retval;
    FD_ZERO(&rfds);
    FD_SET(comfd, &rfds);
    tv.tv_sec = 0; tv.tv_usec = 50000; // wait for 50ms
    retval = select(comfd + 1, &rfds, NULL, NULL, &tv);
    if (!retval) return 0;
    if(FD_ISSET(comfd, &rfds)){
        if((L = read(comfd, buff, length)) < 1) return 0;
    }
    return (size_t)L;
}

Строчка "wait for 50ms". Функция эта выполняется до тех пор, пока полностью нужное количество байт не считается, или не выйдет таймаут. Почему-то на компьютере все нормально работало, а на кубитраке стали "теряться" данные. Пришлось увеличить tv.tv_usec до 500мс.

А еще я намучился с форматом для printf: на компьютере uint64_t выводится как %lu, а кубитрак хочет %llu. Неужто нет нормальных обозначений printf, общих для любых архитектур? Идиотизм какой-то...
Точнее — о полной неготовности.

Я уже писал о том, как пытался на кубитрак водрузить генту. Да, гента водрузилась, но иксы запустить у меня так и не удалось. Не говоря уже об аппаратном ускорении!

Нытье )

Итак, вывод: на основе работы с Raspberry Pi (полное дерьмо) и Cubietruck (для десктопа однозначно не годится, как насчет нормальной поддержки всей GPIO'шной периферии пока точно сказать не могу) можно сказать, что ARM как был "мощным микроконтроллером", так им и остался. Для десктопа не годится однозначно, для управления железками — серединка на половинку. Скажем, Raspberry слишком слаб для обработки видео и годится лишь как слабый веб-сервер, на котором крутится один-единственный демон, позволяющий через внешний микроконтроллер управлять разнообразной периферией.

Как ни прославлял я ARM, но увы, пока лучше x86_64 ничего не придумали! Возможно, MIPS мог бы заменить устаревший x86_64, но его по сути закопали во младенчестве!
Я уже потихоньку ковырялся в "малинке", но теперь вот настала пора собрать все воедино и сделать простую систему управления с веб-мордой. Система позволит при помощи локального корректора ставить интересующий объект на щель спектрографа. Возможно, там еще и будет управление ПЗС-матрицей (но вряд ли, т.к. проще из командной строки скриптовать, чем кнопки тыкать).
Пока что реализован только интерфейс управления локальным корректором: гитхаб, сосфорж. Простая панелька, позволяющая менять скорость шаговых двигателей корректора, двигать его по XY в +/- и возвращать в ноль. Видео с камеры подсмотра тоже будет транслироваться через вебсокеты (получается где-то 5-7 кадров в секунду, что вполне приемлемо для этой задачи). Пока вместо видео — заглушка (чередуются 2 картинки), заготовка интерфейса к видеозахвату через ffmpeg у меня уже реализована, но возникла проблема с китайскими "фреймграбберами" ("под капотом" у них оказался совершенно дурацкий чипсет, под который нет работающего модуля ядра, так что, надо будет либо взять старый одноканальный фреймграббер и релюшкой переключать видео, либо пилить устаревший много версий назад модуль ядра).
Заодно вчера дома начал пилить заготовку, чтобы в будущем можно было быстро развернуть любой проект с веб-мордой на вебсокетах (кстати, надо бы еще с аутентификацией разобраться, а также с сегфолтами в случае отключения клиента во время передачи очередного кадра видео).
Итак, пользователь ЛОРа vromanov любезно скинул мне эдакий stage4 генты для кубиборды. Вчерашний день я промучился с псевдовосьмигиговой флешкой. Флешку выкинул (она вообще дряной оказалась), взял из сломанного GPS-навигатора 4-гиговую. Залил на нее образ: просто при помощи fdisk -l посмотрел размер первого раздела — чтобы и /boot влез, и загрузчик, затем при помощи dd это дело закинул на флешку, вынул ее, вставил заново, при помощи fdisk "отрихтовал" второй раздел (чтобы все оставшееся на флешке место занимал), подмонтировал второй раздел флешки и через -o loop,offset=... примонтировал второй раздел образа; затем просто скопировал все содержимое с образа на второй раздел. Загрузился:
S6302506
Кубитрак и терминал генты

Надо сказать, флешка тоже плохонькая: всего-то класс 4. Очень медленная. Я попытался сделать emerge-webrsync, через час пыхтения место на флешке кончилось, и emerge попытался повторить. Я плюнул.
Буду искать способ обновления генты на нормальном компьютере. А то и ядро пересобрать надо (на том, что есть, даже поддержка веб-камер отсутствует!), доустановить что нужно...

P.S. Вайфая почему-то на борде не обнаружил: то ли не настроен, то ли отсутствует. Буду разбираться.

July 2017

S M T W T F S
      1
23 4 5 6 78
9 101112 131415
16171819 202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 02:42 pm
Powered by Dreamwidth Studios