Съдържание:

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

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

Видео: Програмиране на Arduino по въздуха (OTA) - Ameba Arduino: 4 стъпки
Видео: The air quality sensor SHARP 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 на Wi-Fi микроконтролер Ameba Arduino!

Консумативи

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 е 2MB, варира от 0x00000000 до 0x00200000. Размерът на флаш паметта на Ameba RTL8710 обаче е 1MB. За да отговаряме на използването на различни платки, приемаме, че оформлението на флаш паметта е 1MB.

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

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

Тоест буутлоудъра. Когато Ameba се зарежда, той поставя зареждащото изображение в паметта и извършва инициализация. Освен това той определя къде да се процедира след зареждащото устройство. Bootloader разглежда OTA адреса и щифта за възстановяване в областта на системните данни и определя кое изображение ще бъде изпълнено след това. В края на буутлоудъра той поставя изображението в паметта и предхожда да го изпълни.

- Изображение по подразбиране 2:

Кодът на програмиста е поставен в тази част, адресът започва от 0x0000B000. Първите 16 байта са заглавката на изображението, 0x0000B008 ~ 0x0000B00F съдържа подпис, който се използва за проверка дали изображението е валидно. Полето за подпис има две валидни стойности за разграничаване на новото изображение от старото.

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

Данните в тази част също са код за разработчици. По подразбиране тази част от паметта започва от 0x00080000 (може да се промени). Основните разлики между OTA изображението и Изображението по подразбиране 2 са адресът на флаш паметта и стойността на подписа.

Освен кода, има някои блокове данни:

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

Блокът на системните данни започва от 0x00009000. Има две данни, свързани с OTA:

1. OTA адрес: 4 байта данни, започващи от 0x00009000. Той казва адреса на OTA изображение. Ако стойността на OTA адреса е невалидна (т.е. 0xFFFFFFFF), OTA изображението във флаш паметта не може да се зареди правилно.

2. ПИН за възстановяване: 4 байта данни, започващи от 0x00009008, ПИН за възстановяване се използва, за да се определи кое изображение (изображение по подразбиране 2 или ОТА изображение) да се изпълни, когато и двете изображения са валидни. Ако стойността на пина за възстановяване е невалидна (т.е. 0xFFFFFFFF), новото изображение ще се изпълни по подразбиране.

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

- Данни за калибриране: Данните за периферното калибриране се поставят в този блок. Обикновено тези данни не трябва да се изтриват.

Стъпка 3: Boot Flow

Boot Flow
Boot Flow

От горното изображение, Обсъждаме следните сценарии: (i) OTA не се използва, използвайте DAP за качване на програма:

В тази ситуация буутлоудърът проверява подписа на изображението по подразбиране 2 и OTA адреса. Тъй като OTA адресът е премахнат, по подразбиране ще бъде избрано изображение 2 за изпълнение.

(ii) OTA изображението се прехвърля към Ameba, OTA адресът е зададен правилно, щифтът за възстановяване не е зададен:

Ameba получи актуализирано изображение чрез OTA, подписът на изображение по подразбиране 2 ще бъде настроен на стар подпис.

Bootloader проверява подписа на изображението по подразбиране 2 и OTA адреса. Ще открие, че OTA адресът съдържа валидно OTA изображение. Тъй като щифтът за възстановяване не е зададен, той избира новото изображение (т.е. OTA изображение) за изпълнение.

(iii) OTA изображението се прехвърля към Ameba, OTA адресът е зададен правилно, щифтът за възстановяване е зададен :

Ameba е получила актуализирано изображение чрез OTA, подписът на изображение по подразбиране 2 ще бъде настроен на стар подпис.

Bootloader проверява подписа на изображението по подразбиране 2 и OTA адреса. Ще открие, че OTA адресът съдържа валидно OTA изображение. След това проверете стойността на щифта за възстановяване. Ако щифт за възстановяване е свързан към LOW, новото изображение (т.е. OTA изображение) ще бъде изпълнено. Ако щифтът за възстановяване е свързан към HIGH, старото изображение (т.е. изображение по подразбиране 2) ще бъде изпълнено.

Стъпка 4: Пример

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

За да използвате функцията OTA, моля, надстройте фърмуера на DAP до версия> 0.7 (v0.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. Щракнете върху Инструменти -> Портове, проверете серийния порт, който да използвате:

Моля, обърнете внимание, че Arduino IDE използва един порт за програма за качване и изходен дневник. За да избегнем ситуацията, че регистрационният файл не може да бъде изведен, когато използваме OTA, ние използваме друг терминал за сериен порт (напр. Tera термин или шпакловка) вместо сериен монитор, за да гледаме съобщение за регистрация.

След това щракнете върху качване и натиснете бутона за нулиране.

В съобщението в дневника:

1. Между „===== Enter Image 1 ====“и „Enter Image 2 ====“можете да намерите „Flash Image 2: Addr 0xb000“. Това означава, че Ameba решава да стартира от Image Image 2 по подразбиране при 0xb000.

2. След „Въведете изображение 2 ====“можете да намерите „Това е версия 1“. Това е дневното съобщение, което добавяме в скица.

3. След като Ameba е свързан към AP и получава IP адрес „192.168.1.238“, той активира mDNS и изчаква клиента.

След това променяме „MY_VERSION_NUMBER“на 2.

Щракнете върху "Инструменти" -> "Порт", можете да видите списък с "Мрежови портове". Намерете „MyAmeba на 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 ще се рестартира и следващият дневник ще бъде показан в терминала за регистрация.

- Между “===== Въведете изображение 1 ====” и “Въведете изображение 2 ====”, можете да видите съобщение в дневника “Flash Image 2: Addr 0x80000”. Това означава, че Ameba решава да се зареди от OTA Image при 0x80000.

- След „Въведете изображение 2 ====“, дневникът „Това е версия 2“е съобщението, което добавяме в скица.

За да се възстановите към предишното изображение, след като OTA изображението бъде изтеглено в Ameba, моля, свържете щифта за възстановяване, който сме задали в скицата (т.е. щифт 18) към HIGH (3.3V), и натиснете нулиране.

Тогава при стартиране ще бъде избрано изображение по подразбиране 2. Обърнете внимание, че изтегленото OTA изображение не се изтрива, след като щифтът за възстановяване е изключен от HIGH, OTA образът ще бъде изпълнен.

Обобщаваме потока на развитие, използвайки OTA на следващата фигура.

Препоръчано: