В настоящее время мы занимаемся модернизацией нашего встроенного программного обеспечения и переходим с 8-битных на 32-битные микроконтроллеры Cortex-M. Память довольно ограничена (128 КБ Flash и 32 КБ RAM).
В другая нить библиотека встроенного программного обеспечения (www.redblocks.de) было рекомендовано. Кажется, он очень хорошо отвечает моим потребностям, но требует использования C ++.
У кого-нибудь есть опыт работы с C ++ на встраиваемых платформах, подобных нашей? Мне интересно, с какими накладными расходами я имею дело, по сравнению с С.
В зависимости от того, какие функции C ++ вы используете, накладные расходы практически отсутствуют, по сравнению с C.
Вот некоторые особенности по сравнению:
Я думаю, что самая сложная проблема — это знания разработчиков. C ++, особенно при частом использовании шаблонов, является гораздо более сложным языком, чем C. Поэтому вам нужна группа довольно хороших разработчиков.
Однако, если вы хотите получить чистый и многократно используемый объектно-ориентированный дизайн, C ++, безусловно, является лучшим выбором, чем C.
Я сам не являюсь разработчиком встраиваемых систем, но у меня есть несколько коллег, использующих c ++ для микроконтроллеров, на которые вы ориентируетесь.
Язык сам по себе не добавляет много накладных расходов, но использование стандартной библиотеки (контейнеры, алгоритмы …) не рекомендуется, если вы ограничены во Flash / RAM.
Если выступления являются проблемой, вы также можете избежать RTTI и исключения.
Больше информации о Эта бумага или на эта страница.
Книга Эффективный C ++ во встроенной среде Форма Скотта Мейерса также является очень хорошим источником информации.