İçindekiler:

Arduino'yu Havadan Programlama (OTA) - Ameba Arduino: 4 Adım
Arduino'yu Havadan Programlama (OTA) - Ameba Arduino: 4 Adım

Video: Arduino'yu Havadan Programlama (OTA) - Ameba Arduino: 4 Adım

Video: Arduino'yu Havadan Programlama (OTA) - Ameba Arduino: 4 Adım
Video: How to Perform the OTA Upload to an ESP32 Board Using Arduino Cloud 2024, Kasım
Anonim
Arduino'yu Havadan Programlama (OTA) - Ameba Arduino
Arduino'yu Havadan Programlama (OTA) - Ameba Arduino

Piyasada birçok Wi-Fi mikrodenetleyici var, birçok üretici Arduino IDE kullanarak Wi-Fi mikrodenetleyicilerini programlamaktan keyif alıyor. Ancak, bir Wi-Fi mikro denetleyicisinin sunduğu en havalı özelliklerden biri gözden kaçma eğilimindedir, yani OTA (Over-The-Air) işlevini kullanarak kodunuzu uzaktan ve kablosuz olarak programlamak ve yüklemektir.

Bu Eğitilebilir Kitapta, Ameba Arduino Wi-Fi mikrodenetleyicide her yerde bulunan Arduino IDE kullanarak Wi-Fi mikrodenetleyicinizde OTA'yı nasıl kuracağınızı göstereceğim!

Gereçler

Amip Arduino x 1

1. Adım: OTA

OTA
OTA

OTA (Over-The-Air), İnternet üzerinden çevrimiçi yükseltme mekanizmasını ifade eder.

Arduino IDE, yukarıdaki şekildeki iş akışını takip eden OTA özelliği sunar.

(i) Arduino IDE, yerel ağda Arduino IDEOTA servisi olan cihazları mDNS üzerinden arar.

(ii) Ameba'da mDNS hizmeti çalıştığından, Ameba mDNS aramasına yanıt verir ve bağlantı için belirli TCP bağlantı noktasını açar.

(iii) Kullanıcı Arduino IDE'de program geliştirir. Tamamlandığında, ağ bağlantı noktasını seçin.

(iv) Yükle'yi tıklayın. Ardından Arduino IDE, OTA görüntüsünü TCP üzerinden Ameba'ya gönderir, Ameba görüntüyü belirli bir adrese kaydeder ve bir dahaki sefere bu görüntüden önyükleme yapmak için önyükleme seçeneğini ayarlar.

İş akışı üç bölümden oluşur: mDNS, TCP ve OTA görüntü süreci. mDNS ile ilgili ayrıntılar, mDNS eğitiminde açıklanmıştır. Görüntü aktarımında TCP soket programlaması kullanılır ve OTA API'sinde zaten sağlanmıştır.

Bir sonraki bölümde, OTA görüntüsünün nasıl işleneceğini tartışacağız ve Ameba flash bellek düzeni ve önyükleme akışı hakkında bazı temel bilgileri tanıtacağız.

2. Adım: Ameba Flash Bellek Düzeni

Ameba Flash Bellek Düzeni
Ameba Flash Bellek Düzeni

Ameba RTL8195A'nın flash bellek boyutu 2 MB'dir ve 0x00000000 ile 0x00200000 arasında değişir. Ancak Ameba RTL8710'un flash bellek boyutu 1MB'dir. Farklı kartların kullanımına uyması için flash bellek düzeninin 1MB olduğunu varsayıyoruz.

Yukarıdaki şekilde gösterildiği gibi, Ameba programı flash belleğin üç bölümünü kaplar:

- Önyükleme Görüntüsü:

Yani, önyükleyici. Ameba başlatıldığında, önyükleme görüntüsünü belleğe yerleştirir ve başlatma işlemini gerçekleştirir. Ayrıca, önyükleyiciden sonra nereye gidileceğini belirler. Bootloader, sistem veri alanındaki OTA adresine ve kurtarma pinine bakar ve daha sonra hangi görüntünün yürütüleceğini belirler. Önyükleyicinin sonunda, görüntüyü belleğe yerleştirir ve yürütmeye başlar.

- Varsayılan Resim 2:

Geliştirici kodu bu bölüme yerleştirilir, adres 0x0000B000'den başlar. İlk 16 bayt görüntü başlığıdır, 0x0000B008~0x0000B00F, görüntünün geçerli olup olmadığını doğrulamak için kullanılan İmzayı içerir. İmza alanı, yeni görüntüyü eski görüntüden ayırt etmek için iki geçerli değere sahiptir.

- OTA Görüntüsü:

Bu bölümdeki veriler de geliştirici kodudur. Varsayılan olarak, belleğin bu bölümü 0x00080000'den başlar (değiştirilebilir). OTA görüntüsü ile Varsayılan Görüntü 2 arasındaki temel fark, flash bellek adresi ve İmza değeridir.

Kodun dışında bazı veri blokları vardır:

- Sistem verisi:

Sistem veri bloğu 0x00009000'den başlar. OTA ile ilgili iki veri vardır:

1. OTA adresi:0x00009000'den başlayan 4 bayt veri. OTA Image adresini söyler. OTA adres değeri geçersizse (yani 0xFFFFFFFF), flash bellekteki OTA görüntüsü doğru şekilde yüklenemez.

2. Kurtarma Pimi:0x00009008'den başlayan 4 bayt veri, Kurtarma pimi, her iki görüntü de geçerli olduğunda hangi görüntünün (varsayılan Görüntü 2 veya OTA Görüntüsü) yürütüleceğini belirlemek için kullanılır. Kurtarma pin değeri geçersizse (yani 0xFFFFFFFF), yeni görüntü varsayılan olarak yürütülür.

DAP üzerinden Ameba'ya program yüklediğimizde sistem verileri kaldırılacaktır. Yani OTA adresi kaldırılacak ve Ameba, OTA görüntüsü olmadığını belirleyecektir.

- Kalibrasyon Verileri:Çevresel kalibrasyon verileri bu bloğa yerleştirilir. Normalde bu veriler silinmemelidir.

3. Adım: Önyükleme Akışı

Önyükleme Akışı
Önyükleme Akışı

Yukarıdaki görselden, Aşağıdaki senaryoları tartışıyoruz: (i) OTA kullanılmıyor, programı yüklemek için DAP kullanın:

Bu durumda, önyükleyici varsayılan görüntü 2'nin imzasını ve OTA adresini kontrol eder. OTA adresi kaldırıldığından, yürütmek için varsayılan resim 2 seçilecektir.

(ii) OTA görüntüsü Ameba'ya aktarıldı, OTA adresi doğru ayarlandı, kurtarma pini ayarlanmadı:

Ameba, OTA aracılığıyla güncellenmiş görüntüyü aldı, varsayılan görüntü 2'nin imzası eski imzaya ayarlanacak.

Bootloader, varsayılan görüntü 2'nin imzasını ve OTA adresini kontrol eder. OTA adresinin geçerli bir OTA görüntüsü içerdiğini bulacaktır. Kurtarma pimi ayarlanmadığından, yürütülecek yeni görüntüyü (yani OTA görüntüsü) seçer.

(iii) OTA görüntüsü Ameba'ya aktarıldı, OTA adresi doğru ayarlandı, kurtarma pini ayarlandı:

Ameba, OTA aracılığıyla güncellenmiş görüntüyü aldı, varsayılan görüntü 2'nin imzası eski imzaya ayarlanacak.

Bootloader, varsayılan görüntü 2'nin imzasını ve OTA adresini kontrol eder. OTA adresinin geçerli bir OTA görüntüsü içerdiğini bulacaktır. Ardından kurtarma pin değerini kontrol edin. Kurtarma pimi DÜŞÜK'e bağlanırsa, yeni görüntü (yani OTA görüntüsü) yürütülür. Kurtarma pimi YÜKSEK'e bağlanırsa, eski görüntü (yani, varsayılan görüntü 2) yürütülür.

4. Adım: Örnek

Örnek
Örnek
Örnek
Örnek
Örnek
Örnek
Örnek
Örnek

OTA özelliğini kullanmak için lütfen DAP donanım yazılımını > 0.7 sürümüne yükseltin (v0.7 dahil değildir). Fabrika varsayılan DAP sabit yazılımı sürüm 0.7'dir. Lütfen DAP donanım yazılımını yükseltmek için talimatları izleyin:

Örneği açın: "Dosya" -> "Örnekler" -> "AmebaOTA" -> "ota_basic"

Ağ bağlantısı için örnek koddaki ssid ve şifre bilgilerini doldurun.

OTA ile ilgili bazı parametreler vardır:

§ MY_VERSION_NUMBER:İlk sürümde, OTA adresini ve kurtarma pinini ayarlamamız gerekiyor. USB üzerinden yüklediğimiz bu sefer ilk sürüm olduğu için bu değeri değiştirmemize gerek yok.

§ OTA_PORT:Arduino IDE, mDNS aracılığıyla Ameba'yı bulacaktır. Ameba, Arduino IDE'ye OTA görüntüsünü beklemek için 5000 numaralı TCP bağlantı noktasını açtığını söyleyecektir.

§ RECOVERY_PIN:Kurtarma için kullanılan pini yapılandırın. Burada pin 18 kullanıyoruz.

Daha sonra Ameba'ya USB upload programı kullanıyoruz. Araçlar -> Bağlantı Noktaları'na tıklayın, kullanılacak seri bağlantı noktasını kontrol edin:

Arduino IDE'nin yükleme programı ve çıktı günlüğü için bir bağlantı noktası kullandığını lütfen unutmayın. OTA kullandığımızda log çıktısının alınamaması durumundan kaçınmak için log mesajını izlemek için seri monitör yerine başka bir seri port terminali (örneğin Tera terim veya macun) kullanıyoruz.

Ardından yükle'yi tıklayın ve sıfırlama düğmesine basın.

Günlük mesajında:

1. “===== Görüntü 1====” ve “Görüntü 2 Gir ====” arasında “Flash Görüntü 2:Adr 0xb000” öğesini bulabilirsiniz. Bu, Ameba'nın 0xb000'de Varsayılan Görüntü 2'den önyüklemeyi belirlediği anlamına gelir.

2. “Görüntü 2'yi Girin ====” sonrasında, “Bu, sürüm 1” ifadesini bulabilirsiniz. Bu, eskizde eklediğimiz günlük mesajıdır.

3. Ameba, AP'ye bağlanıp “192.168.1.238” IP adresini aldıktan sonra mDNS'yi etkinleştirir ve istemciyi bekler.

Ardından, "MY_VERSION_NUMBER" değerini 2 olarak değiştiririz.

"Araçlar" -> "Bağlantı Noktası"na tıklayın, "Ağ bağlantı noktaları" listesini görebilirsiniz. "MyAmeba at 192.168.1.238 (Ameba RTL8195A)" öğesini bulun, MyAmeba, örnek kodda belirlediğimiz mDNS cihaz adıdır ve "192.168.1.238", Ameba'nın IP'sidir.

Ameba'nın ağ bağlantı noktasını bulamıyorsanız, lütfen onaylayın:

- bilgisayarınız ve Ameba aynı yerel ağda mı?

- Arduino IDE'yi yeniden başlatmayı deneyin.

- Ameba'nın AP'ye başarıyla bağlanıp bağlanmadığını görmek için Seri Monitördeki günlük mesajını kontrol edin.

Ardından yükle'yi tıklayın. Bu sefer program TCP üzerinden yüklenecektir. Günlük terminalinde, istemci bağlantı bilgilerini görebilirsiniz.

OTA imajı başarıyla indirildiğinde, Ameba yeniden başlatılacak ve log terminalinde aşağıdaki log gösterilecektir.

- “===== Görüntü 1====” ve “Görüntü 2 Girin ====” arasında, “Flash Görüntü 2:Adr 0x80000” günlük mesajını görebilirsiniz. Bu, Ameba'nın 0x80000'de OTA Görüntüsünden önyüklemeyi belirlediği anlamına gelir.

- “Görüntü 2 Girin ====” dan sonra “This is version 2” logu krokiye eklediğimiz mesajdır.

OTA imajı Ameba'ya indirildikten sonra bir önceki imaja dönmek için lütfen krokide ayarladığımız kurtarma pinini (yani pin 18) HIGH (3.3V)'a bağlayınız ve reset'e basınız.

Ardından, önyükleme sırasında Varsayılan görüntü 2 seçilecektir. İndirilen OTA görüntüsünün silinmediğini, kurtarma pininin HIGH ile bağlantısı kesildiğinde, OTA görüntüsünün yürütüleceğini unutmayın.

Aşağıdaki şekilde OTA kullanarak geliştirme akışını özetliyoruz.

Önerilen: