Можем ли мы записать загрузчик Arduino в любой чип микроконтроллера?

Я новичок в этом сообществе Arduino Я заметил на ютубе, что пока прототип готов, люди покупают новые чипы ATmega328p и прошивают в них загрузчики с помощью внутрисистемных программистов, чтобы чип действительно мог понимать и интерпретировать инструкции, написанные на языке высокого уровня, если я прав. (Нет, я ошибся, на самом деле это компилятор, который находится на Arduino). поэтому я подумал, что если бы мы могли записать загрузчик atmega328p в любой другой микроконтроллер. Чтобы мы могли запрограммировать его на языке программирования Arduino (C/C++). Это возможно? извините, если я туплю, но я хотел знать. И может ли кто-нибудь сказать мне, можно ли использовать ATmega328p для производственных целей (бытовая электроника)? Заранее спасибо.

, 👍6

Обсуждение

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

спасибо @Juraj, это действительно имеет смысл, @Ravikiran

Сам компилятор не загружается и не запускается микроконтроллером. Для компилируемых языков, таких как C, компилятор создает машинный код, который микроконтроллер может выполнять сам. Вы, вероятно, думаете об интерпретируемых языках, таких как Python, которые требуют наличия интерпретатора на любом оборудовании, используемом для запуска кода., @cat40

Вы понимаете, что довольно просто запрограммировать ATmega328p на C и других языках *без* Arduino, верно? Это часть [семейства megaAVR](https://www.microchip.com/design-centers/8-bit/avr-mcus), и доступ к нему можно получить с помощью [Atmel Studio](https://www.microchip. com/mplab/avr-support/atmel-studio-7)., @Mast


2 ответа


Лучший ответ:

11

Ответ должен состоять из нескольких частей:

Да, в принципе, вы можете создать загрузчик для любого микроконтроллера, который действует как Arduino.

Обратите внимание, что существуют разные загрузчики, а не только стандартный, совместимый с STK500. Каждый из этих загрузчиков реализует определенный протокол для передачи двоичного кода в целевую систему.

Кроме того, некоторые протоколы также включают команды для перезапуска микроконтроллера, установки регистров конфигурации и, возможно, многого другого.

Вам необходимо прочитать документацию по загрузчику, чтобы ознакомиться с его возможностями.

Но вам решать, подходит ли вам такой загрузчик в системе без AVR или в системе без Arduino-AVR.

Нет, загрузчик не позволяет микроконтроллеру «понимать» язык высокого уровня.

Стандартная среда разработки Arduino использует специальный компилятор для целевого микроконтроллера для преобразования исходного кода C++ в машинный язык. Полученный двоичный файл обычно работает только на этом целевом микроконтроллере.

Загрузчик просто реализует протокол. В общем, совершенно не подозревает о значении передаваемых данных.

Микроконтроллеры обычно используют разные процессоры с, возможно, разными машинными языками, содержат разные типы памяти разного размера, включают разные наборы разных периферийных устройств. Но ты это точно знаешь. Вам нужно написать и скомпилировать исходный код для конкретной части, на которую вы ориентируетесь.

Да, вы можете использовать ATmega328P для потребительских товаров, как уже сказал Мишель.

Однако вам необходимо принять общие меры, которые вы принимаете с любой частью вашего продукта.

,

Большое спасибо @the busybee . Теперь я полностью понимаю, что такое загрузчики и для чего они предназначены. Ваш ответ окончательный..., @Ravikiran

Проголосовал за ваш (лучший/подробный) ответ. Я предполагал (и до сих пор делаю), что он хотел загрузить загрузчик AtMega328 в любой другой MCU. Вы можете (как вы говорите) создать загрузчик для любого MCU, действующего как Arduino, но это будут разные типы загрузчиков для каждого MCU (типа)., @Michel Keijzers

Большое спасибо! Пожалуйста, сохраните свой ответ из-за подробностей о выборе MCU для производственных целей. -- Ваше предположение об ОП может быть правильным. ;-) Но кто знает, кто еще придет из-за названия вопроса., @the busybee


3

Вы не можете просто загрузить скетч в любой микроконтроллер, потому что каждый микроконтроллер имеет разную структуру памяти, периферийные устройства, способы загрузки, размер FLASH и т. д.

Тем не менее, вы можете использовать atMega (или любой другой микроконтроллер) для производственных целей. Конечно, у каждого типа MCU есть условия эксплуатации (например, минимальная/максимальная температура), поэтому, например, в автомобильной или военной среде разрешено использовать не все MCU, но для бытовой электроники, на самом деле, можно использовать все MCU (это означает, что они пройдут сами по себе). необходимые сертификаты, которые могут быть неверны для добавленных компонентов и получающихся из них схем/корпусов).

,

Примечание. Не Atmel будет мешать вам использовать все микроконтроллеры для всех приложений, а *ваши клиенты* остановят вас. А для потребительского продукта, возможно, законы о том, чего должны ожидать клиенты (то есть, в основном, ваши клиенты)., @user253751

@ user253751 Спасибо за это дополнение., @Michel Keijzers