Компиляция во время выполнения

Я хочу скомпилировать скетч на Arduino Uno, пока Arduino работает и не подключен ни к чему другому, а затем автоматически запустить скомпилированный скетч.

Возможно ли это?

Как?

, 👍1

Обсуждение

может да, погуглите arduino forth.... вот один из результатов поиска https://arduino-forth.com/, @jsotola

Хотя ответ отрицательный, предложение jsotola может быть обходным путем. Форт является интерпретируемым языком. Python был бы еще одним вариантом., @Duncan C


2 ответа


0

Нет. Это невозможно.

Uno не может скомпилироваться. Uno не может запускать код из оперативной памяти. Uno — это не компьютер.

Вы можете найти какой-нибудь небольшой язык сценариев, который мог бы работать на Uno, но TBH, Uno настолько слаб, что вы могли бы сделать немного больше, чем моргнуть светодиодом...

,

Конечно это компьютер. Это просто компьютер с ограниченными функциями. Как однофункциональный микроконтроллер, он идеально подходит для множества целей, а не только для мигания светодиодов., @Dougie

Это может быть вычислительное устройство, но это не «компьютер» — как в той большой коробке на вашем столе с экраном и клавиатурой., @Majenko

@Dougie и «немного больше, чем мигание светодиода» в контексте попытки использовать язык сценариев. Знаешь, тебе действительно стоит научиться читать *ответ целиком*, а не просто выделять отдельные короткие фразы и ковыряться в них, как полный педант *****., @Majenko


1

Нет, невозможно, невозможно.

Ардуино запускает машинный код, и ему не хватает места или вычислительной мощности для компилятора (также по понятным причинам просто нет версии компилятора avr C++ для платформы AVR). Также он внутренне зашит для запуска кода из флэш-памяти. Вы не можете выполнять код из оперативной памяти. Arduino — это микроконтроллер, а не компьютер. (Здесь я имею в виду компьютер как что-то вроде: имеет микропроцессор для выполнения кода из ОЗУ; имеет ОС; имеет огромное количество ресурсов по сравнению со средним микроконтроллером)

Также: "не подключен ни к чему другому" --> Тогда как бы вы взаимодействовали с Arduino, писали код, запускали компиляцию?

Если речь идет о кабельном соединении, вы можете реализовать программирование через bluetooth через модуль HC-05 (погуглите, там должно быть много руководств). Или откажитесь от Arduino и перейдите на ESP, чтобы вы могли выполнять обновления по воздуху (OTA) через Wi-Fi.

Или вы можете перейти на мини-компьютер, такой как Raspberry Pi Zero, который немного больше, чем Arduino Nano, и меньше, чем Uno. (Хотя это вряд ли зависит от цели, которую вы пытаетесь достичь. Микроконтроллеры иногда лучше использовать для конкретных задач, в отличие от миникомпьютеров)

,