Pingvin, спасибо, буду рад воспользоваться бутлоадером, чтобы не изобретать велосипеда! А можете посоветовать какую-нибудь ссылку, где лучше про его программирование почитать? всё-таки хочется понимать, что там как работает.
Но шифровать прошивку я точно не планирую, как у же говорил, это излишне.
Насчёт хотфиксов - это, безусловно, хорошо, что пользователь легко перепрошьётся, но всё-таки не нужно в продакшн выкатывать версию, в которой сам же нахожу существенные баги
Вчера вот, наконец, закрыл один баг, который давно причинял головную боль. Внешне это проявлялось так: в какой-то момент переставала работать беспроводная связь. Это происходило чаще при интенсивном радиообмене, но иногда - и при слабом. Могло быть на 20-м пакете, а могло не проявиться и на 1000-м. Как будто просто "ломался" радиомодуль.
Я перепроверил всё. В итоге, оказалось, что происходит следующее: nrf24l01 иногда (но крайне редко!) "забывает" поставить флаг во внутреннем регистре и поднять прерывание (прижать к земле ножку "IRQ") о том, что пакет отправлен. Моя программа ждет этого флага, и не дожидается. Я исследовал свой код вдоль и поперек. Сам я флаг не сбрасываю, и ничего подозрительного не делаю. Либо есть какие-то неочевидные (или недокументированные) особенности радиомодуля, вызывающие изменение регистра состояния, либо у меня какая-то глючная версия чипа. В итоге я запилил workaround для такого случая (благо, его легко детектить - просто по таймауту, если флаг не поднялся сам за некоторое время, я как-бы поднимаю его вручную).
Теперь всё работает стабильно, сотни пакетов в секунду на девайс обрабатываются легко и непринужденно