Как Arduino UNO различает данные программы/флэш-памяти и данные последовательного терминала
Я рад узнать, как Arduino UNO или nano различают программные данные
, которые должны быть записаны во флэш-память, когда мы нажимаем Загрузить скетч
, и последовательный терминал. данные
, когда мы нажимаем Отправить
? Есть ли какая-то особая последовательность для их идентификации? Как он будет идентифицирован загрузчиком?
И я так понимаю, кто-нибудь может исправить, если я ошибаюсь, или что-то, что вы хотите добавить, будет полезно:
- Когда мы нажимаем «Загрузить скетч», отправляется сигнал RST.
- Контроллер ATmega, когда он получает сигнал RST, переходит к разделу Bootloader флэш-памяти и ожидает определенной последовательности от UART
- Если он получает, то начинает записывать данные, буферизованные из UART, во флэш-память. Этот процесс обрабатывается загрузчиком.
- Если он не получает последовательность, она ожидает тайм-аута, затем переходит к разделу флэш-памяти и начинает выполнение с 0x0000.
@Next-93, 👍1
Обсуждение1 ответ
В отличие от наших детей, он делает то, что ему говорят, а не то, что, как мы думали, мы ему сказали. Разные инструкции делают разные вещи. Serial.print("Привет"); хранится в ОЗУ, будет печатать из ОЗУ, однако, если вы наберете Serial.print(F("Hi"); он будет печатать из флэш-памяти. Макрос "F" указывает, откуда печатать. Serial.print(" Привет"); хранится во флэш-памяти, но перемещается в ОЗУ и хранится там, пока ваша программа запущена и работает, независимо от того, распечатываете вы ее или нет. Макрос "F" сохраняет ее во флэш-памяти, не используя ОЗУ. Все, что происходит при запуске Либо в вашем коде, либо в загрузчике есть код, который был запрограммирован и хранится во флеш-памяти.Загрузчик декодирует поток данных кода при загрузке и сохраняет его в указанном месте.Он не знает, что это, он просто читает хранит его, я не знаю, как он здесь называется, но раньше был программный модуль под названием «CSTART», который после перезагрузки получал управление, инициализировал всю память и устанавливал переменные перед тем, как передать управление пользовательской программе. делает то же самое, данные должны быть помещены в нужное место перед запуском.
Вы читали вопрос?, @Edgar Bonet
Привет Гил. Спасибо за длинный ответ, объясняющий все, но это не ответ на мой вопрос. Вы создали другую тему или ответили не на тот пост. Мой вопрос не связан с оперативной памятью и флэш-памятью. Arduino использует avrdude для записи во Flash, верно? Я хочу знать последовательность байтов или обмен данными, который происходит при программировании оборудования Arduino. И как различаются флэш-данные и последовательные данные., @Next-93
Вы можете найти это в исходном коде загрузчика. Для начала попробуйте эту ссылку: https://www.electronicwings.com/arduino/basics-to-developing-bootloader-for-arduino., @Gil
- Как настроить ATTiny861A-PU для прошивки с помощью Arduino Uno?
- Usbasp Arduino Uno Bootloader Flash Error - Win 10
- Не удается снова загрузиться после смены платы
- Что происходит, когда код загружается с помощью загрузчика?
- Пытаюсь прошить ESP8266 с помощью Arduino UNO
- Ошибка при записи загрузчика
- Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?
- Arduino EEPROM сохраняет старые данные после прошивки новой программой
Это в значительной степени подводит итог последовательности, да., @Majenko