2017-01-02 9 views
-4

У микроконтроллеров atmega есть внутренняя программируемая память. Так что устройство флэш-памяти usb записывает данные во внутреннюю память atmega через spi или хранит программу и работает как подчиненный? Я также хочу знать, может ли atmega получить программу, файл в MicroSD и работать без внутренней памяти или нужно запустить программу на внутреннем диске, а затем включить программу в MicroSD? Я не знаю, как этот процесс работает в atmega-микроконтроллере.Как USB-устройство для прошивки usb записывает программу в atmega?

ответ

1

Есть несколько способов запрограммировать AVR:

  • Использование внешнего программатора. Чип находится в состоянии сброса во время этого. Затем программист использует специальный специальный протокол для прямой записи на вспышку внутри контроллера. Вот как ваше устройство программирования USB, вероятно, записывает код в AVR. Для этого существует несколько протоколов, но наиболее распространенный использует те же контакты, которые используются SPI. Вы не должны путать их просто из-за этого ;-).

  • Контроллер записывает саму программу. Чип активно выполняет программу. Эта программа на чипе извлекает инструкции, например. SD-карту и использовать инструкцию SPM, чтобы скопировать ее на локальную вспышку.

AVR может извлекать инструкции только из собственной флэш-памяти - вы не можете выполнять непосредственно из ОЗУ или из любого другого внешнего источника.

0

Лучший ответ на этот вопрос вы можете найти в конце или в середине таблицы данных для устройства AVR (например, ATMEGA 328P-PU). Если вы используете некоторое мигающее устройство, подключенное к компьютеру, после запуска есть некоторая последовательность инициализации, а затем отправляются некоторые 4 байтовых команды, которые обрабатывают микроконтроллеры, где хранятся значения для вспышки и/или eeprom, биты предохранителей или заботы об удалении и т. Д. . Также возможно прочитать идентификатор чипа. Микроконтроллер Atmega также может быть запрограммирован в параллельном режиме, где используются некоторые биты для отправки команд, которые обрабатываются, что делать с данными на бит данных.

Если вы спрашиваете о загрузке программы с SD-карты или любого другого устройства, можно записать на вспышку через SPM, как сказано выше. Некоторые устройства не имеют части Flash для загрузчика - если я помню ATMEGA 48 и устройства, которые имеют настраиваемую часть памяти, которую можно использовать и для загрузчика, которая может справиться с этим, например. ATMEGA 88, 168, 328. Поэтому, если вы хотите загрузить программу из SPI, USART, TWI и т. Д., Вам нужно настроить биты плавких предохранителей и создать загрузчик, который сделает это за вас. Я не уверен, как это делает ATMEGA 48, но там возможно написать всю флешку с помощью инструкции SPM.

Однако лучший ответ можно найти в техническом описании. На страницах ниже 255 вы можете найти дополнительную информацию. http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf