"Терпение и труд - все перетрут!"
Удалось решить задачу приема телеметрии с помощью не стационарного мощного компьютера, а обычного Raspberry PI3. Теперь энергопотребление снизилось настолько, что можно оставить прием телеметрии в круглосуточном режиме работы, ну а мощный компьютер использовать по назначению - для расчетных и конструкторских задач.
Чтобы было понятно, что потребовалось сделать, чтобы достичь этой цели -
В Raspberry Pi3, в отличие от 1-й и 2-й версий (архитектура ARMv5, ARMv6) используется
процессор Cortex-a53 (архитектура ARMv7), который совместим по ключевым возможностям с процессорами следующего поколения (архитектура ARMv8) - аппаратная поддержка вычислений над числами с плавающей запятой двойной точности (
Neon). В задачах, связанных с обработкой сигналов SDR - это крайне важная возможность, которая позволяет увеличить производительность в разы. Однако, для обеспечения совместимости программного обеспечения для R-Pi1, R-Pi2, RPi3, стандартные программные компоненты предлагаемой операционной системы Raspbian не поддерживают все возможности нового процессора. Более того, только в конце прошлого 2018-го года появился компилятор GCC v8.3, который позволяет реализовать все возможности Cortex-a53 (для справки - в Raspbian применяется в лучшем случае GCC v6.3). Естественно, большой разницы в работе R-Pi2 и R-Pi3 для программ, например GQRX (приемник SDR), не обнаруживалось.
Таким образом пришлось:
- собрать из исходников компилятор GCC v8.3 (одна только компиляция заняла почти сутки непрерывной работы компа) и Python v2.7.16;
- собрать с помощью нового компилятора библиотеки FFTW3 v3.3.8 (библиотека быстрого преобразования Фурье) и драйвер RTL-SDR;
- собрать с помощью нового компилятора и улучшенной библиотеки модуль OSMOSDR, необходимый в работе Gnuradio;
- собрать с помощью нового компилятора пакет Gnuradio v3.7.13.5 с оптимизацией Volk (эффект на некоторых операциях с плавающей точкой достиг 15 раз!);
- собрать оптимизированный приемник GQRX v2.7.11.5 ;
- собрать оптимизированный модуль GR-Satellites для приема BPSK400 и декодирования телеметрии с помощью Gnuradio;
В результате загрузка процессора при запущенных GQRX и декодере телеметрии составила 46% (можно использовать даже без опциональных радиаторов, но я все же все собрал с полным набором радиаторов для большей надежности). Кстати, компилировать GCC v8.3 пришлось обязательно на R-Pi3 с радиаторами, т.к. иначе процессор мог выйти из строя от перегрева.
Вообще, неделя оказалась на редкость удачной, т.к. за последние дни удалось восстановить после прямого попадания молнии поворотку AlfaSpid с контроллером, трансивер IC-910 и рабочую лошадку - компьютер под XP.