Yalnızca blok olarak silinebilen bir flaşla artımlı güncellemeleri nasıl yapabilirim?


11

senaryo

Cihazın mikrodenetleyicilerini güncelleyen yeni bellenim ile düşük maliyetli bir IoT cihazını kablosuz olarak güncellemek istiyorum. Mikrodenetleyici belleği 32k - 128k aralığındaki flaş bellektir (her yüzde sayar). Bu ucuz hafızanın büyük bir sınırlaması vardır: sadece blok olarak silinebilir.

Soru

Bu, diferansiyel ( delta ) güncellemeler yapamayacağım anlamına mı geliyor ? Her zaman tüm denetleyici belleğini (veya en azından önemli parçaları) güncellemem gerekir mi?

Her şeyi flaş etme ihtiyacını azaltmak ve cihazı mümkün olduğunca tamamen tuğlalaşma riskiyle karşı karşıya kalmak istiyorum. Mikrodenetleyicileri havada yanıp sönerken mevcut stratejiler var mı?


Maliyetiniz veya en düşük risk oranınız için daha önemli olan nedir?
Bence Kaulics

@BenceKaulics, ikisi arasında doğru dengeyi buluyor sanırım. Sonuçta tuğla riski de (ağırlıklı) bir maliyettir.
Helmar

Yanıtlar:


8

Basit cevap evet - yüksek güvenilirlik istiyorsanız bootloader ve A / B kodu görüntülerini desteklemek için yeterli flaş bloğuna ihtiyacınız var. Yeni görüntüyü etkinleştirmeden önce, her şeyi yazabilir, doğrulayabilir ve potansiyel olarak yeniden deneyebilirsiniz.

Ancak bu olduğunu pahalı / güvenilir strateji ve yükü azaltmak için yapabileceğiniz şeyler vardır. OTA güncellemeleri için düşük düzey destek, aygıt ürün yazılımının veya işletim sisteminin bir parçası olarak da gelebilir, bu nedenle öğrenmek istemediğiniz sürece kendi başınıza dönmekten kaçınabilirsiniz. Bu özellik olarak tanımlanabilir FOTA.

Kod tabanınızı bölümlemek artımlı güncellemelere izin verir, en iyi durumda önyükleyici ağ bağlantısını getirebilir, herhangi bir geri dönüş kullanıcı koduna ihtiyaç duymadan kodu indirebilir ve doğrulayabilir. Yerel bir ağ geçidi ile, bu görevin yönetimi düşük maliyetli uç noktalardan devredilebilir.

Birçok cihazda az miktarda kelime silme flaşı vardır ve bu başarısız olsa bile, tüm bloğu silmeye gerek kalmadan genellikle bitleri ayarlayabilirsiniz . Bu özellikler, atlama tablolarını değiştirmek ve blok boyutları yığınlarında güncellenen kodu birleştirmek için kullanılabilir. Başlangıçta tam bir A / B kod alanı planlamış olsanız bile, kod tabanı çok büyüdüğünde daha karmaşık bir şemaya geri dönmeniz gerekebilir.

Gelişmiş bir kablosuz yazılım çözümü ile elde edilebilecek işlevselliği açıklığa kavuşturmak için, önyükleyici ve potansiyel olarak birincil iletişim yığını, kalan kullanıcı uygulama alanının tamamı yeniden yanıp sönerken yerleşik kalabilir. Bunun herhangi bir ek yüke ihtiyacı yoktur (özellikle blok bölümleme yumuşaksa). İletişim yığınının yükseltilmesi gereken senaryoda, uygulama kodu için genellikle kullanılan bölge indirme ve doğrulama sırasında geçici olarak kullanılabilir. Bunu başarmak için SoC'da biraz destek gerekir, ancak bunu göz önünde bulundurarak tasarlanan 2. ve 3. nesil cihazlar zaten var.


6

Her şeyi flaş etme ihtiyacını azaltmak ve cihazı mümkün olduğunca tamamen tuğlalaşma riskiyle karşı karşıya kalmak istiyorum. Mikrodenetleyicileri havada yanıp sönerken mevcut stratejiler var mı?

Göreceli olarak statik olan güncellemeyi yapan kodunuz dışında, iki görüntüyü depoda tutmanız gerekir: etkin bir görüntü ve bir yedek görüntü. Ne zaman, güncellemeniz, yedeklemede yapmanız ve ardından etkin olması için değiştirmeniz gerekir. Sabitlendiğinde, şimdi yedeklemeniz gereken eski etkin resmi güncelleyin.

Bunu aklınızda tutarak, her iki görüntüyü güncellerken aşınma dengeleme algoritmalarını kullanabilirsiniz. Bu tür algoritmaların kodu toplam depolama alanının yaklaşık% 10-15'ini alabilir, ancak cihazın ömrünü uzatmaya değer.

Aşınma seviyelendirme tipik olarak, her veri programlandığında hangi fiziksel bloğun kullanılacağını belirlemek için bir aşınma seviyeleme algoritması kullanan flaş kontrolörü tarafından yönetilir. İki tür katı hal sürücüsü (SSD) aşınma seviyelendirmesi vardır: dinamik ve statik. Dinamik aşınma dengeleme, silinmiş blokları havuzlar ve sonraki yazma için en düşük silme sayısı olan bloğu seçer.

Statik aşınma seviyelendirme ise, en düşük toplam silme sayısı ile hedef bloğu seçer, gerekirse bloğu siler, bloğa yeni veriler yazar ve blok silme sayısı bir blokun altında olduğunda statik veri bloklarının taşınmasını sağlar belirli eşik. Bu ek veri taşıma adımı, flaş denetleyicisindeki ek yük nedeniyle yazma performansını yavaşlatabilir, ancak statik aşınma seviyelendirme, katı hal cihazlarının ömrünü uzatmak için dinamik aşınma seviyelendirmeden çok daha etkilidir.

( Techtarget.com: Aşınma seviyelendirme )


6

Freescale Semiconductor , Kinetis Mikrodenetleyicileri için havadan kablosuz ürün yazılımı yükseltmesinin sağlam bir yolunu tanımlar .

Adı: Program Flash Bellek Değişimi .

Flash bellek takas kullanan sistemler

Değiştirmeyi destekleyen iki veya daha fazla dahili flaş bloğu olan cihazlarda, her flaş bloğunun bellek tabanı adresi değiştirilebilir. Her flaş bloğunun adres konumu böylece cihazın mantıksal bellek haritasında değiştirilir. Sıfırlamadan sonra, dahili flaş değiştirme sistemi temel olarak hangi yazılımın mantıksal bellek haritasında flaş bloğunun konumuna göre yürütüleceğini seçer. Bu, programlama kolaylığı eklenmiş bir kod yedekleme sistemine izin verir. Diğer bloğu silerken / programlarken bir bloktan çıkabilirsiniz. Kinetis cihazlarında, flaş değiştirme sistemi eski uygulamadan yeniye geçişin tüm adımlarını izler / kontrol eder; bu adımlardan biri sırasındaki bir güç kaybı durumunda güvenilir bir çalışma garantisi de vardır.

Avantajları

  • Programlama kolaylığı. Uygulama her zaman bellek haritasındaki alt bloktan yürütülür.
  • Güç kaybına toleranslı.
  • Önyükleyici gerekmez. Ana uygulamanın başlangıcında gecikme olmaz.
  • Çok görevli bir işletim sistemi için çok uygundur. Minimum uygulama kesinti süresi. Çok görevli bir sistemde, uygulamanın yeni kopyasını güncellemek için arka plan görevleri çalışırken ana uygulama görevlerini yürütmeye devam etmek mümkündür.
  • Kodun yedek kopyası. Bilinen çalışma uygulamasına geri dönmek mümkündür.

Dezavantajları

  • Yedek kopyayı saklamak için ek flash bellek alanı gerekir.

Blokları güncelleyebilir ve sonra değiştirebilirsiniz.

görselleştirme sırasında bellek değişimi görselleştirildi

Bağlantılı belge ayrıntılı açıklama içerir.

Daha güvenli ürün yazılımı yükseltmeleri sağlar, ancak daha fazla flash belleği gerektirdiğinden, kesinlikle daha pahalıya mal olur . Ayrıca her tür mikrodenetleyici için geçerli değildir , yalnızca dahili flaş blokları destekleyenler arasında geçiş yapılabilir.


2
Bu harika görünüyor ve maliyet gereksinimleriyle dengelenebilirse kesinlikle dikkate alınması gereken bir çözüm gibi görünüyor. + 1
Helmar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.