Обновить
2
0
Юрий Волков@atribolt

инженер-программист

Отправить сообщение

Так основная проблема в текущем виде - цена, даже если не заморачиваться со своей платой, то можно уложиться в сильно меньшую стоимость

Не соглашусь с ценобразованием. Одноплатник стоит 1500р-2000р с али. Сколько будет стоить разработка и поддержка ПО для МК (ПО должно выполнять все те же функции, что сейчас выполняет наш детектор)? Сколько будет стоить инженерка? Сколько будет стоить ошибка в инженерке или ПО?

заведомо отъедая одно ядро на мало эффективную работу

Это осознанный шаг. Баланс между простотой реализации и удобством поддержки. Аргументы против нашего решения:

  • ОС не может использовать это одно ядро

    В ОС нет рабочей нагрузки, которой бы это ядро было нужно. Здесь нет GUI и абсолютная отывчивость ОС ни к чему

  • малая энергоэффективность

    Это вообще мимо. Используем малошумящий линейный БП, о какой энергоэффективности может идти речь

  • на МК можно делать все то же самое, но лучше

    Жертвуем "лучшестью", ради удобства и скорости развития. Когда детектор обретет конечный функционал, можно будет переходить на МК

  • цена

    Часть ценообразования описал выше. Хорошая инженерка обойдется гораздо дороже. И если в какой-то момент нужно будет, что-то доработать или переделать, то сумму увеличиваем

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

ПО детектирования - C++

ПО WEB-консоли - Python

Тестовые утилиты для отладки - Python + C++

и что линукс не RTOS - тоже не интересно

на данном этапе развития проекта - не интересно

А создание более ответственных систем я бы Вам не доверил с таким подходом

Вы судите по прототипу о том, какую мы имеем квалификацию. Данный прототип справляется на отлично с задачами, которые на него возложены

именно что не лает, но и в дом не пускает - это у плохих програмистов :) так то никто не запрещает но как минимум для этого есть dma а проц занимается более сложным нежели байты перебрасывать

Вы так и не сказали, что плохого в том, что процессор работает. Ниже картинка нагрузки на одноплатник. Одноплатник не греется, ресурсов достаточно.

Загрузка одноплатника
Загрузка одноплатника

Дополнительно можем запускать стрим сигнала с ФНЧ и децимацией (все в одном ядре) с удаленного детектора к себе на ПК. И вот уже пара ядер в сотку. Но одноплатнику все еще норм. У него целых 2 ядра простаивает, температура не растет.

Стримминг сигнала с удаленного детектора, с одновременным отловом молний
Стримминг сигнала с удаленного детектора, с одновременным отловом молний

Трансформатроный БП с линейным стабилизатором в 2025 ? монструозно

Зато шумит меньше

Хотя, реально все впихнуть внутрь "антенны", на базе микроконтроллера со встроенным ацп, ethernet и запитать через PoE

Всё так, у нас не было такой цели

чтение gpio реализовано? userspace или драйвер ядра

userspace, лезем через /dev/mem. Пробовали писать драйвер ядра на прерываниях, получили в районе 100 кГц. Знаем, что можно быстрее, не хотелось с этим возиться, Если уж писать драйвер для такого, проще уходить на МК

какое поличество семплов получается относительно периода PPS? стабильное значение или разброс

Конечно разброс есть, так как нынче GPS поддавливают и на него сложно полагаться. А модуль свой PPS рассчитывает исходя из фиксации со спутниками и коррекцией времени по ним

Сеплы между PPS (ticks), длина импульса до спада сигнала (ticks down)
Сеплы между PPS (ticks), длина импульса до спада сигнала (ticks down)
Вывод работы модуля ядра pps-gpio
Вывод работы модуля ядра pps-gpio

MyClass::MyClass()
: m_worker{std::thread{[this]{
std::lock_guard l{m_mutex};
...
}}} {}

А что вы ожидали, когда пытались запустить в потоке лямбду с захваченным this, который не сконструирован?

Запусти вы поток внутри тела конструктора, без проблем.

Python является полным ООП

Не соглашусь. Вся инкапсуляция завязана на "ты это поле не трогай, оно начинается с _ или __ и оно не для тебя". Это просто условность, которой все следуют. При этом ты спокойно получаешь досту к "приватным" полям и методам.

А как вам такое?

class A:
  def hello(self):
    return self.b_name()
class B(A):
  def __init__(self, name):
    self._name = name
  def b_name(self):
    return self._name

b = B('Vasya')
b.hello()

Класс "А" обращается к методу дочернего класса. Можно притянуть, что тут даже функции - это инстанс типа "function", и все состоит из объектов.

Еще можно выделять столбец. Shift + Alt + Up/Down

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик
Старший
Git
Python
C++ stl
Linux
Docker
Bash
Kubernetes