Hat içi ve hat dışı
Energetika-VDS'de ürün yazılımı flaşlama, özel programlama fikstürleri aracılığıyla hattımızda gerçekleşir. Müşteri test planı işlevsel test gerektirdiğinde, birim halihazırda yüklenmiş ürün yazılımıyla bir iş ortağı test hanesine geçer. AOI her kartta hat içinde çalışır; FCT temin edilir.
Bazı üreticiler flaşlamayı işlevsel testle aynı fikstüre katar, böylece kart bir kez yerleştirilir ve önce programlama çalışır, ardından test gelir. Bu, her iki adım da aynı binada olduğunda işe yarar. Bizim kurulumumuzda, flaşlama ve FCT fiziksel olarak ayrılmıştır: flaşlamayı hat içinde çalıştırıyoruz ve iş ortağı test hanesi az önce programlanmış ürün yazılımına karşı işlevsel diziyi çalıştırıyor.
İşlevsel test kapsamı olmayan ürünlerde, flaşlanmış kart ek test kapısı olmadan AOI sonrasında sevk edilir.
Programlama arayüzleri
Çipe olan arayüz, çip ailesine göre değişir:
- SWD: ARM Cortex-M, düşük pin sayısı, hızlı
- JTAG: eski ARM, FPGA, birçok çip için hata ayıklama
- UART: önyükleyici tabanlı programlama, yavaş ama ekstra pin gerektirmez
- USB-DFU: USB özellikli çipler, programlama sırasında kart USB cihazı olarak davranır
- I2C, SPI: bazı EEPROM'lar ve güvenlik öğeleri için kullanılan, daha az yaygın
Üretim flaşlamalarının çoğu ARM Cortex-M cihazları için SWD ve eski veya yüksek pin sayılı parçalar için JTAG kullanır.
Çoklu görüntü programlama
Bağlantılı bir cihaz genellikle birden fazla ürün yazılımı görüntüsüne sahiptir:
- Önyükleyici: küçük, imzalı, üretim sonrası değiştirilemez
- Uygulama: ana ürün yazılımı, OTA güncellenebilir
- Dosya sistemi: yapılandırma, web varlıkları, sertifika deposu
- Üretim bölümü: birim başına kalibrasyon, kimlik, fabrika verileri
Üretim tarafı programlama, doğru bölümde, gerekirse doğru imzayla her görüntüyü sırayla yazar.
İmzalı önyükleyici zincirleri
İmzalı bir önyükleyici, başlatmadan önce uygulamanın imzasını kontrol eder. Önyükleyicinin kendisi çipin güvenli önyükleme mekanizması tarafından imzalanır (eFuse'de saklanan karma, ROM tabanlı doğrulama).
Sonuç: saldırgan uygulamayı keyfi kodla değiştiremez, çünkü önyükleyici onu başlatmayı reddeder. Saldırgan önyükleyiciyi değiştiremez, çünkü çip imzasız bir önyükleyiciyi başlatmayı reddeder.
Üretim tarafında bu şu anlama gelir:
- Önyükleyici imzalama anahtarı oluşturulur ve HSM'de saklanır
- Uygulama imzalama anahtarı oluşturulur ve HSM'de saklanır
- Üretim hattı imzalamaya API aracılığıyla erişir, özel anahtarı asla tutmaz
- Önyükleyici imzasını yerinde kilitlemek için eFuse yakılır
Güç kaybı toleransı
Programlama dizileri flaş ortasında güç kaybını tolere etmelidir. Yaygın desen: önce sabit bir konuma önyükleyici yaz, uygulamayı ayrı bir bölgeye yaz, NVS'de yalnızca doğrulama sonrasında "geçerli" bayrağı ayarla. Yazma ortasında güç kesilirse önyükleyici eksik geçerli bayrağı görür ve bilinen iyi ürün yazılımına geri döner (veya politikaya bağlı olarak başlatmayı reddeder).
Doğrulama
Yazma sonrası, flaşlanan görüntüyü geri okuyun ve karmasını hesaplayın. Beklenen karmayla karşılaştırın. Farklıysa birimi flaşlama hatası olarak işaretleyin ve yeniden işlemeye yönlendirin.
Bu, yazmanın kendisinin başarılı olduğu ancak çipin çöp yazdığı nadir durumu yakalar.
Birim başına kayıt tutma
Başarılı flaş sonrası kaydedin:
- Ürün yazılımı sürümü
- Ürün yazılımı karması
- İmzalama anahtarı referansı
- Programlama zaman damgası
- Birim başına seri numarası
Bu veriler üretim izlenebilirlik veritabanında yaşar. Alıcı daha sonra sorgulayabilir: "XXX serili birimin hangi ürün yazılımı sevk edildi, hangi anahtar tarafından imzalandı".