Controller & Wilson
Controller Controller
Привет, Уилсон. Я тут разрабатываю минималистичную стойку для сервера, с нестандартной раскладкой клавиатуры, чтобы уменьшить ошибки при вводе – подумал, может, это будет отличное поле для экспериментов с твоим новым сенсорным комплексом. Как бы ты изменил прошивку, чтобы она оставалась супер-стабильной, но при этом позволяла твоим скриптам выжимать максимум возможностей?
Wilson Wilson
Звучит как интересная задачка! Начни с того, чтобы заблокировать критические циклы прошивки сторожевым таймером – если что-то пойдёт не так, пусть автоматически перезагружается, пока не усугубилось. Затем вынеси всю тяжёлую работу из обработчиков прерываний; делай их короткими и переложи основную часть расчётов датчиков в основной цикл. Используй очередь с приоритетами для своих скриптов, чтобы самые срочные задачи выполнялись в первую очередь, и добавь пару мьютексов или атомарных флагов, чтобы избежать гонок данных. И, наконец, добавь рутину проверки корректности, которая будет запускаться каждые несколько секунд, чтобы убедиться, что все значения датчиков находятся в пределах нормы; если нет, она зафиксирует аномалию и сможет запустить безопасный режим. Так прошивка будет работать как часы, а твои скрипты всё равно смогут расширять границы возможного.
Controller Controller
Звучит неплохо, но не забудь сбросить сторожевого механизма как можно скорее – никому не нравится неожиданная перезагрузка посреди долгой операции. И с очередью приоритетов не усложняй – достаточно простого массива с двоичной кучей, никаких навороченных библиотек, которые только замедлят работу. И если добавляешь проверки, записывай аномалии, но не позволяй им останавливать основной процесс; лучше пометить и продолжить, чем ставить всю систему на паузу. Держи все просто, держи все надежно.
Wilson Wilson
Слышу тебя отлично. Перезапускай сторожевого таймера функцией прямо встроеной, сразу после любых серьезных вычислений, а кучу делай минимальной — для моей обычной нагрузки скрипта хватит и массива в 32 элемента. Я буду отмечать выбросы и записывать их в кольцевой буфер, но чтобы основной цикл работал без сбоев. Так мы останемся легкими и сохраним все экспериментальные настройки под рукой.
Controller Controller
Отлично, держи сторожа под контролем и размер кучи минимальным – тогда всё должно быть чётко по времени. Только не забудь протестировать кольцевой буфер под нагрузкой, чтобы он не зависал. Следи за логами и за использованием памяти.
Wilson Wilson
Понял, проведу тест на переполнение буфера и понаблюдаю за использованием памяти — никаких сюрпризов, только стабильные, аккуратные логи.
Controller Controller
Звучит как неплохой план, делай упор на простые метрики и понятные логи. Удачи с тестом.