Я завжди був вбудованим програмним інженером, але зазвичай на рівні 3 або 2 стеку OSI. Я насправді не апаратний хлопець. Як правило, я завжди робив телекомунікаційні продукти, як правило, ручні / стільникові телефони, що, як правило, означає щось на зразок процесора ARM 7.
Зараз я опиняюсь у більш загальному вбудованому світі, в невеликому стартапі, де я міг би перейти до "не таких потужних" процесорів (є суб'єктивний біт) - я не можу передбачити, який.
Я читав досить багато про дебати щодо використання STL у C ++ у вбудованих системах, і однозначної відповіді немає. Є кілька невеликих проблем з приводу переносимості, і деякі з приводу розміру коду або часу роботи, але у мене є дві основні проблеми:
1 - обробка винятків; Я досі не впевнений, чи використовувати його (див. Вбудований С ++: використовувати винятки чи ні? )
2 - Мені дуже не подобається динамічне розподіл пам'яті у вбудованих системах через проблеми, які він може створити. Зазвичай у мене є пул буферів, який статично виділяється під час компіляції і який обслуговує лише буфери фіксованого розміру (якщо буфер відсутній, скидання системи). STL, звичайно, робить багато динамічного розподілу.
Тепер я повинен прийняти рішення, використовувати чи відмовитись від STL - для всієї компанії назавжди (це входить до деяких основних s / w).
У який бік мені стрибати? Супер безпечний і втрачає більшу частину того, що становить C ++ (imo, це більше, ніж просто визначення мови), і можливо, пізніше натрапляє на проблеми або доводиться додавати багато обробки винятків і, можливо, якогось іншого коду зараз?
У мене є спокуса просто скористатися Boost , але 1) я не впевнений, чи буде він перенесений на кожен вбудований процесор, який я, можливо, захочу використовувати, і 2) на своєму веб-сайті вони кажуть, що не гарантують / рекомендують певні його частини. для вбудованих систем (особливо FSM, що здається дивним). Якщо я піду на Boost і пізніше ми знайдемо проблему ....