Костерок

eddy_em


Емельянов Эдуард Владимирович


[sticky post]Содержание
Костерок
eddy_em
Здесь - краткое содержание моего графоманстваCollapse )

promo eddy_em january 20, 00:02 22
Buy for 10 tokens
В попытке выяснить, кто же виноват, и что с этим делать, я собрал в кучу заголовочные файлы от ST с инициализацией от opencm3 и сделал "безбиблиотечную" среду. Для проверки деления набросал «мыргалку», которая либо равномерно мигает диодом с периодом 4 секунды (если надета перемычка между землей и…

SBIG all-sky
Костерок
eddy_em
Благодаря помощи [profile] alextutubalin, код утилиты для работы с all-sky теперь полностью свободен. Я добавил дебайеризацию посредством libraw. Вот такие jpeg'и теперь может генерировать сетевой клиент (помимо сохранения "сырых данных" в tiff, fits и raw dump):

Камеру можно будет водрузить на ее законное место, временная заглушка для информационных панелей уже будет работать, останется настроить сервер БД для хранения данных (чтобы иметь возможность оценить небо в любой момент времени из архивных данных).
Еще остается подключить болтвудовский датчик, но это не так критично, как нормальный all-sky.

Вот это поворот!
Костерок
eddy_em
Выжимка из man 3 daemon (кстати, в армбиан почему-то отсутствует, читал в генте):
daemon(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Так что, оказывается, _BSD_SOURCE и _XOPEN_SOURCE не эквивалентны, и указывать нужно обе! Потому как некоторые вещи требуют _XOPEN_SOURCE > 600, из-за чего у меня в Makefile значится -D_XOPEN_SOURCE=1111.

Но, честно говоря, такого поворота, чтобы нужно было меньше определенного числа feature_test_macros выставлять, я не ожидал!

В догонку:
/usr/include/features.h:148:3: предупреждение: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"

Я ваш дом труба шатал!!! Еще и в Makefile делать проверку версии gcc?

Ну, вроде бы все заработало. Сейчас запустил на кубитраке серверный процесс, работающий с all-sky, а на ноутбуке из дома — клиент. Если что-то отвалится, увижу. Пока вроде слаженно работает.
Обновил репозитории на гитхабе-сосфорже-битбакете-гитлабе.

Выжимка
Костерок
eddy_em
Вывод таков: одноплатники на ARM — шлак. Надо ждать, пока они станут хотя бы 64-битными. Только тогда их можно будет в своих поделках использовать. А сейчас, пока они 32-битные, да еще и содержат уйму огороженного железа, не работающего в линуксе (привет, аппаратное ускорение графики!), не стоит тратить на них деньги.

Трудно представить себе сферу применимости этой гадости: реального времени в них нет, да и GPIO никакущее — как замену микроконтроллерам их нельзя использовать. Огороженное железо не позволяет использовать их как медиа-плеер (интернет, фильмы, музыка). Узкая ниша — замена крупногабаритного компутера в вещах, где не требуются вычислительные мощности — ограничена особенностями архитектуры, не позволяющей напрямую портировать код с полноценных компьютеров на это.

Глюки
Костерок
eddy_em
Поставил на кубитрак армбиан (нет уже сил с гентой: собирать пакеты можно лишь на компьютере, несерьезно это). Почти час убил в попытках понять, почему же у меня перестало работать считывание изображения с 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, общих для любых архитектур? Идиотизм какой-то...

Я обнимаю батарею…
Костерок
eddy_em
На улице жуткий морозняк (-12°C), чертов снег за день опять нападал. Дома 21°C, но Шакира, похоже, мерзнет:

3D чертилка под VirtualBox
Костерок
eddy_em
Итак, SpaceClaim в виртуалбоксе ничего не отображает в поле вида.
Попробовал поставить Solidworks, не вышло. Оказывается, ему нужна VMWare. Попробовал поставить — модули ядра не собрались (видимо, нужно более древнее ядро).
И тут на помощь пришел старый добрый Компас-3D. Нормально установился и работает. Не знаю еще, как у него с импортом деталек (та же Standa имеет и спокойно дает скачивать чертежи/модели полного набора своих железок), но уже прогресс налицо: теперь будет в чем рисовать железки. А то у LibreCAD с 3D вообще никак.

Светоприемники. Лекция 1.
Костерок
eddy_em
Добил наконец-то первую лекцию курса "Астрономические светоприемники". Думал еще какого-нибудь исторического материала добавить, но сил уже нет!
А еще три штуки впереди. Боюсь, минимум еще дней 10 надо будет убить на оставшиеся лекции.
Курс, кстати, назван не очень корректно: я решил посвятить его всеволновой астрофизике, т.е. "светоприемники" здесь уже как-то не к месту.

Морзянка на STM32F030
Костерок
eddy_em
В рамках бодания с таймером на STM32F030 родил морзянку: фразы, пришедшие по USART1 (до '\n') выпискиваются в коде Морзе пищалкой, висящей на PA6 (TIM3CH1). Короткое видео паршивого качества.


P.S. Кросспост с dreamwidth.org сработал. Правда, встроенное видео не прошло.

Spaceclaim в виртуалбоксе
Костерок
eddy_em
Собственно, что нужно, чтобы эта гадость заработала в виртуалбоксе?
Если вариантов нет, то есть ли истории успеха запуска, скажем, солидворкса или чего-то подобного?
Нужна утилита для "твердотельного" 3D черчения с генерацией чертежей для мех. мастерских. В мире свободного ПО, увы, ничего такого нет. Что несвободного можно на семерку в виртуалбоксе воткнуть?

P.S. Пытался эту запись в dreamwidth.prg опубликовать. Получил "Bad Unicode Input". Видимо, на русскоязычный сектор оно вообще не рассчитано.

?

Log in