Оглавление:

Программирование Arduino по воздуху (OTA) - Ameba Arduino: 4 шага
Программирование Arduino по воздуху (OTA) - Ameba Arduino: 4 шага

Видео: Программирование Arduino по воздуху (OTA) - Ameba Arduino: 4 шага

Видео: Программирование Arduino по воздуху (OTA) - Ameba Arduino: 4 шага
Видео: ESP8266 - Прошивка 2024, Ноябрь
Anonim
Программирование Arduino по воздуху (OTA) - Ameba Arduino
Программирование Arduino по воздуху (OTA) - Ameba Arduino

На рынке существует множество микроконтроллеров Wi-Fi, многие производители с удовольствием программируют свои микроконтроллеры Wi-Fi с помощью Arduino IDE. Однако одна из самых крутых функций, которые может предложить микроконтроллер Wi-Fi, как правило, упускается из виду, это программирование и загрузка вашего кода удаленно и по беспроводной сети с использованием функции OTA (Over-The-Air).

В этом руководстве я покажу вам, как настроить OTA на вашем микроконтроллере Wi-Fi, используя вездесущую Arduino IDE на микроконтроллере Ameba Arduino Wi-Fi!

Запасы

Ameba Arduino x 1

Шаг 1: OTA

OTA
OTA

OTA (Over-The-Air) относится к механизму онлайн-обновления через Интернет.

Arduino IDE предлагает функцию OTA, которая соответствует рабочему процессу, показанному на рисунке выше.

(i) Arduino IDE ищет через mDNS устройства с сервисом Arduino IDEOTA в локальной сети.

(ii) Поскольку служба mDNS работает на Ameba, Ameba отвечает на поиск mDNS и открывает определенный порт TCP для подключения.

(iii) Пользователь разрабатывает программу в Arduino IDE. По завершении выберите сетевой порт.

(iv) Нажмите «Загрузить». Затем Arduino IDE отправляет образ OTA в Ameba через TCP, Ameba сохраняет образ по определенному адресу и устанавливает параметр загрузки для загрузки с этого образа в следующий раз.

Рабочий процесс состоит из трех частей: mDNS, TCP и процесс образа OTA. Подробности, относящиеся к mDNS, описаны в руководстве по mDNS. Программирование сокетов TCP используется при передаче изображений и уже предусмотрено в OTA API.

В следующем разделе мы обсудим, как обрабатывать образ OTA, и познакомим вас с некоторыми базовыми знаниями о структуре флэш-памяти Ameba и последовательности загрузки.

Шаг 2. Схема расположения флеш-памяти Ameba

Схема расположения флэш-памяти Ameba
Схема расположения флэш-памяти Ameba

Размер флэш-памяти Ameba RTL8195A составляет 2 МБ, в диапазоне от 0x00000000 до 0x00200000. Однако размер флэш-памяти Ameba RTL8710 составляет 1 МБ. Чтобы соответствовать использованию различных плат, мы предполагаем, что размер флэш-памяти составляет 1 МБ.

Как показано на рисунке выше, программа Ameba занимает три части флеш-памяти:

- Загрузочный образ :

То есть загрузчик. При загрузке Ameba помещает загрузочный образ в память и выполняет инициализацию. Кроме того, он определяет, куда двигаться после загрузчика. Загрузчик просматривает адрес OTA и контакт восстановления в области системных данных и определяет, какой образ будет выполнен позже. В конце загрузчика он помещает образ в память и начинает его выполнение.

- Изображение по умолчанию 2 :

В этой части размещен код разработчика, адрес начинается с 0x0000B000. Первые 16 байтов - это заголовок изображения, 0x0000B008 ~ 0x0000B00F содержит подпись, которая используется для проверки действительности изображения. Поле подписи имеет два допустимых значения, чтобы отличить новое изображение от старого.

- Изображение OTA :

Данные в этой части также являются кодом разработчика. По умолчанию эта часть памяти начинается с 0x00080000 (можно изменить). Основные различия между OTA-изображением и Default Image 2 заключаются в адресе флэш-памяти и значении подписи.

Помимо кода, есть несколько блоков данных:

- Системные данные :

Системный блок данных начинается с 0x00009000. Есть два данных, связанных с OTA:

1. Адрес OTA : 4 байта данных, начиная с 0x00009000. Он сообщает адрес OTA Image. Если значение адреса OTA недействительно (т. Е. 0xFFFFFFFF), изображение OTA во флэш-памяти не может быть загружено правильно.

2. Пин восстановления : 4 байта данных, начиная с 0x00009008. Пин восстановления используется для определения того, какое изображение (изображение по умолчанию 2 или изображение OTA) выполнить, когда оба изображения действительны. Если значение булавки восстановления недействительно (т. Е. 0xFFFFFFFF), новое изображение будет выполнено по умолчанию.

Системные данные будут удалены, когда мы загрузим программу в Ameba через DAP. То есть адрес OTA будет удален, и Ameba определит, что изображения OTA нет.

- Данные калибровки : В этот блок помещаются данные калибровки периферийных устройств. Обычно эти данные не следует удалять.

Шаг 3. Процесс загрузки

Загрузочный поток
Загрузочный поток

На изображении выше

Мы обсуждаем следующие сценарии: (i) OTA не используется, используйте DAP для загрузки программы:

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

(ii) OTA-образ передается в Ameba, OTA-адрес установлен правильно, PIN-код восстановления не установлен :

Ameba получила обновленное изображение через OTA, подпись изображения по умолчанию 2 будет установлена на старую подпись.

Загрузчик проверяет подпись образа 2 по умолчанию и адрес OTA. Он обнаружит, что адрес OTA содержит действительное изображение OTA. Поскольку контакт восстановления не установлен, он выбирает новое изображение (то есть изображение OTA) для выполнения.

(iii) OTA-образ передается в Ameba, OTA-адрес установлен правильно, PIN-код восстановления установлен :

Ameba получила обновленное изображение через OTA, подпись изображения по умолчанию 2 будет установлена на старую подпись.

Загрузчик проверяет подпись образа 2 по умолчанию и адрес OTA. Он обнаружит, что адрес OTA содержит действительное изображение OTA. Затем проверьте значение булавки восстановления. Если контакт восстановления подключен к LOW, будет выполнен новый образ (т. Е. Образ OTA). Если контакт восстановления подключен к HIGH, будет выполнено старое изображение (то есть изображение по умолчанию 2).

Шаг 4: Пример

Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример

Чтобы использовать функцию OTA, обновите прошивку DAP до версии> 0.7 (версия 0.7 не включена). Заводская прошивка DAP по умолчанию - версия 0.7. Следуйте инструкциям по обновлению прошивки DAP:

Откройте пример: «Файл» -> «Примеры» -> «AmebaOTA» -> «ota_basic»

Введите ssid и пароль в образец кода для сетевого подключения.

Есть несколько параметров, относящихся к OTA:

§ MY_VERSION_NUMBER : В первой версии нам нужно установить адрес OTA и пин восстановления. Поскольку на этот раз мы загружаем через USB первую версию, нам не нужно изменять это значение.

§ OTA_PORT : Arduino IDE найдет Ameba через mDNS. Ameba сообщит Arduino IDE, что открывает TCP-порт 5000 для ожидания образа OTA.

§ RECOVERY_PIN : Настройте контакт, используемый для восстановления. Здесь мы используем вывод 18.

Затем мы используем программу загрузки USB в Ameba. Нажмите Инструменты -> Порты, выберите последовательный порт, который хотите использовать :

Обратите внимание, что IDE Arduino использует один порт для загрузки программы и журнала вывода. Чтобы избежать ситуации, когда журнал не может быть выведен при использовании OTA, мы используем другой терминал последовательного порта (например, Tera term или putty) вместо последовательного монитора для просмотра сообщения журнала.

Затем нажмите кнопку загрузки и нажмите кнопку сброса.

В сообщении журнала:

1. Между «===== Enter Image 1 ====» и «Enter Image 2 ====» вы можете найти «Flash Image 2: Addr 0xb000». Это означает, что Ameba определяет загрузку с образа по умолчанию 2 по адресу 0xb000.

2. После «Введите изображение 2 ====» вы увидите «Это версия 1». Это сообщение журнала, которое мы добавляем в скетч.

3. После того, как Ameba подключится к AP и получит IP-адрес «192.168.1.238», она активирует mDNS и ждет клиента.

Затем мы изменяем "MY_VERSION_NUMBER" на 2.

Нажмите «Инструменты» -> «Порт», вы увидите список «Сетевые порты». Найдите «MyAmeba at 192.168.1.238 (Ameba RTL8195A)», MyAmeba - это имя устройства mDNS, которое мы установили в примере кода, а «192.168.1.238» - это IP-адрес Ameba.

Если вы не можете найти сетевой порт Ameba, подтвердите:

- находятся ли ваш компьютер и Ameba в одной локальной сети?

- попробуйте перезапустить Arduino IDE.

- проверьте сообщение журнала в Serial Monitor, чтобы узнать, успешно ли Ameba подключена к AP.

Затем нажмите «Загрузить». На этот раз программа будет загружена по TCP. В терминале журнала вы можете увидеть информацию о подключении клиента.

После успешной загрузки образа OTA Ameba перезагрузится, и в терминале журнала отобразится следующий журнал.

- Между «===== Enter Image 1 ====» и «Enter Image 2 ====» вы можете увидеть сообщение журнала «Flash Image 2: Addr 0x80000». Это означает, что Ameba определяет загрузку из образа OTA по адресу 0x80000.

- После «Введите изображение 2 ====» журнал «Это версия 2» - это сообщение, которое мы добавляем в скетч.

Чтобы восстановить предыдущее изображение после загрузки изображения OTA в Ameba, подключите контакт восстановления, который мы установили в скетче (т.е. контакт 18), к ВЫСОКОМУ (3,3 В) и нажмите сброс.

Затем при загрузке будет выбран образ по умолчанию 2. Обратите внимание, что загруженный образ OTA не удаляется, как только контакт восстановления отключен от HIGH, образ OTA будет выполнен.

На следующем рисунке мы суммируем процесс разработки с использованием OTA.

Рекомендуемые: