ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
953725 Топик полностью
Mahagam (18.10.2019 18:31, просмотров: 1262) ответил PlainUser на Делал пяток подходов за 20лет.Для себя сделал вывод , ЭТО нужно только для разделения труда нескольких программеров одного большого проекта.Причем они должны быть больными на голову и не суметь сами среди себя выделить ведущего который родит
ну вот смотри, делал я как-то несколько лет назад проект средних размеров. вертолёт беспилотный. небольшой такой, в 120кг веса. вместо богомерзкого фриртоса я там использовал CTL. поскольку памяти было дохренищща, то на потоки я не скупился особо: 1) поток обработки данных с инерциалки, наивысший приоритет. мы обязаны были посчитать каким боком и куда мы летим. результат потока - структура, показывающая все текущие скорости и все углы. 2) поток стабилизации. он брал данные от предыдущего потока, смотрел задание от потока управления и рулил сервомашинками. тут было море ПИДов и всякие разглаживатели управляющих воздейстий, алгоритмы разгона, поворота и т.д. 3) управление, бизнес-логика. в этом потоке обрабатывали команды с земли и смотрели другие состояния и статусы систем. тут была огромная стейт-машина. 4) 5) потокИ обмена с толстым блоком питания и другими мелкими блоками, который был частично управляемым, и выдавал всякую телеметрию. кроме него, на 485-ом интерфейсе висели всякие мелкие модули, типа датчика уровня топлива, которые надо было опрашивать и местами выдавать им разные команды 6) поток приёма и разбора команд с земли, разгребались команды перехода между состояниями вертолёта, принимались положения джойстиков от пилотов, квитировался обмен сообщениями и статусами с наземной станцией. 7) поток обработки эзернета. тут чисто обрабатывался uIP стек. 8) телеметрия. всё собранное знание (обороты и температуры двигателя, положения сервомашинок, их температуры, все напряжения на борту, данные с ЖПС, и прочее прочее прочее) разбивалось в пакеты различных размеров и с различной частотой пихалось в два канала - быстрый, где можно было пихать вообще всё, и медленный, где всякая вспомогательная инфа отсекалась 9) потоки взаимодействующие с ЖПС навигаторами. модули ЖПС на старте работали на 9600 и гнали пургу, надо было каждый перенастроить на 115200 и рассказать что мы от него хотим получить. удобно, что код был один, просто запускался в два потока. 10) были и ещё пара потоков, но к чему такие подробности. собственно, добавить поток в работающую систему - дело трёх минут. и когда многозадачность вытесняющая - то никаких головных болей про переключение и задержки. у меня там в свободной памяти была файловая система с доступом через ftp. и можно было сливать файлы логов и прочую шнягу, не думая про то, что это как-то сломает систему. как такое запустить без задачепереключалки? разделения труда на тучу программеров тут не было. только математики писали свои хитромудрые вычисления по ориентации. я уже все эти кватернионы и калманы сам не тянул.