IDE/плагин/компилятор/язык: какая комбинация наиболее близка к лучшим практикам разработки встраиваемых систем на C или C++?
В настоящее время я довольно далеко оторвался от комбинации Visual Studio Code, расширения Platform.io и написания нового кода на C++ с использованием avr-gcc.
Я надеюсь на комбинацию, которая будет предлагать наибольшую перекрестную образовательную ценность, в случае, если я потенциально экспериментирую (хотя бы для того, чтобы доказать превосходство платформы Arduino перед любые сомневающиеся) со встроенной разработкой, не относящейся к Arduino.
Среда IDE по умолчанию, похоже, предоставила мне меньше информации о поразительно надежной основе и изумительном общем мастерстве, с которым они сплели воедино множество различных методов проектирования и языков. В основном меня интересуют другие (уступающие по сравнению с Arduino, заметьте), более широко используемые комбинации/цепочки инструментов в мире встроенного программирования.
@Withnail, 👍-3
Обсуждение1 ответ
Лучший ответ:
Многое из того, что вы изучаете в любой комплексной среде IDE, при необходимости будет перенесено в другую. Среди IDE, которые приходят на ум, — Eclipse (первая в списке только потому, что это мой личный выбор и широкий спектр приложений), Visual Studio и другие, с которыми у меня нет опыта.
Среда разработки Arduino IDE настолько же ограничена, насколько вы ее обнаружили, в первую очередь потому, что она была написана как (1) инструмент обучения для (2) Arduino на основе AVR и делает все возможное, чтобы упростить вход в программирование встроенных систем для любители-непрограммисты. С этой целью он очень хорошо достигает своей цели. Но, как вы уже заметили, вы быстро сталкиваетесь с его ограничениями, особенно когда ваша цель — перейти на другие процессоры и другие наборы инструментов.
Как только кто-то преодолеет базовое программирование и отладку, более продвинутые инструменты, такие как полноценная IDE, устранят большинство этих ограничений за счет меньшего количества ручного труда, но к тому времени вы, вероятно, свобода нужна гораздо больше, чем помощь!
Я не хочу прямо говорить вам: «Вам нужно использовать FiddleFoo 18.4, иначе вы ничего не добьетесь» — одна (или пара) IDE промышленного уровня будет соответствовать вашему взгляду на программирование и вашей личной работе. -стиль. Попробуйте несколько из них, обращая внимание на то, какие наборы инструментов и процессоров каждый из них может использовать с OEM или сторонней поддержкой для процессоров, которые, по вашему мнению, могут вас заинтересовать. Вполне вероятно, что подходящая вам IDE будет выделяться среди остальных. .
Обновление:
Eclipse потребуется подключаемый модуль для работы с Arduino и другими встраиваемыми системными платами. Тот, который я использую — и единственный, который поддерживается, насколько я знаю, — это Sloeber от Яна Байенса, который иногда пишет здесь как jantje. Он довольно всеобъемлющий, включая возможность писать и импортировать новые дескрипторы платы.
Ограничения памяти накладываются на аппаратное обеспечение, и, хотя усовершенствования компилятора могут помочь в этом, в значительной степени это определяется цифрами. Arduino Uno по-прежнему имеет только 2 КБ ОЗУ и 32 КБ флэш-памяти за вычетом того, что использует загрузчик (если вы решите использовать загрузчик). Куча по-прежнему проблематична по всем обычным причинам — фрагментация свободной памяти (расположенной, как она есть, между статической областью и нижней частью стека) и уменьшение доступного стека и/или пространства данных. Конечно, доступно больше встроенных плат с большей памятью, но это просто помогает вам отсрочить неизбежное. Я рассматриваю использование кучи во встроенной системе как вопрос надежности даже больше, чем как ограничение памяти; Фрагментация и утечка памяти слишком легко могут привести к выходу вашей системы из строя, а "синий экран смерти" - это серьезная проблема во встроенных системах.
Я ценю ваш вклад, Джей Роберт. Прошло несколько лет с тех пор, как я использовал Eclipse, и единственная причина, по которой я тогда остановился, заключалась в нехватке оперативной памяти, что в наши дни не должно быть проблемой. Я так понимаю, никаких плагинов/расширений не требуется? Кроме того, после публикации исходного вопроса вчера вечером я смог найти более старую, но интересную дискуссию, касающуюся использования языка и ограничений памяти на различных платах. Изменили ли эти последние пять лет этот консенсус (избегайте кучи, C лучше всего) с увеличением доступной встроенной памяти?, @Withnail
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат](https://chat.stackexchange.com/rooms/100644/discussion-on-question-by-withnail-ide-plugin-compiler-language-what-com)., @VE7JRO