Uçakta GSM modem bulunan bir ARM kartı oluşturacağız.
ARM ürün yazılımını kablosuz olarak yükseltebilmek istiyoruz.
Bunun için iyi, güvenilir, açık kaynaklı bir çözüm var mı?
Değilse, bu özelliğe sahip ücretli bir işletim sistemi var mı?
Uçakta GSM modem bulunan bir ARM kartı oluşturacağız.
ARM ürün yazılımını kablosuz olarak yükseltebilmek istiyoruz.
Bunun için iyi, güvenilir, açık kaynaklı bir çözüm var mı?
Değilse, bu özelliğe sahip ücretli bir işletim sistemi var mı?
Yanıtlar:
Önceden yapılmış çözümlerin farkında değilim ama bir projede nasıl dolaştığımı anlatacağım. Tamamen 'inatçı' değil ama binlerce yükseltmenin başarısız olduğunu bilmiyorum. Bu uygulama için, çok düşük bir arıza oranı, ünitelere erişmek zorunda kalmaktan daha ucuz olacaktır.
Ana uygulama, normal iletişim protokolüne hata tespiti ve üstte bir yeniden deneme durumu içeren üç ek paket türü ekler:
Yeni bir bellenim güncelleme komutu, harici bir SPI Flash'ta ayrılmış bir bellek alanını temizler. Ünite yedek pilinden çalışıyorsa veya harici güçten çalışıyorsa ancak pil şarj durumu% 25'in altındaysa hata verir.
Bir yazma bloğu komutu, ofset adresini ve harici Flash belleğe küçük parçalar halinde yazılan verileri kabul eder. Daha yüksek seviye protokolü, hata tespiti ve yeniden iletimlerle ilgilenir. Her blok yazıldıktan sonra, komut onaylanmadan önce okunur ve doğrulanır.
Bir son ürün yazılımı güncelleme komutu, daha fazla doğrulama için alınan ürün yazılımının tüm görüntünün CRC32'siyle birlikte olması gereken uzunluğu içerir. Bu, harici Flash belleğin içeriğiyle eşleşiyorsa ve güç koşulları hala aynı ise ve CRC32 bir ürün yazılımı güncellemesinin beklemede olduğunu belirtmek için bir 'sihirli numara' ile birlikte bir EEPROM alanına aktarılır.
Bir bekçi köpeği yeniden başlatmaya zorlamak için ana uygulamada bir sabit döngü yürütülür.
(ARM'nin Flash'ın yazmaya karşı korumalı bir alanında bulunan) önyükleyici, EEPROM'daki sihirli sayıyı görür ve görüntünün CRC32'sini bir kez daha doğrular. Her şey yolundaysa, görüntüyü harici Flash'tan ARM Flash'ın ana program alanına aktarır.
Bekleyen yükseltme bilgileri EEPROM'dan silinir ve sabit döngü başka bir yeniden başlatmayı zorlar. Bu kez önyükleyici ana uygulamayı normal şekilde başlatır.
Güncelleme aşamasının, dağıtımdan önce yeni bellenim sürümlerini test etmede başarısız olduğunu hiç görmedim, bu yöntemi kullanarak çok önemlidir. Yeni bir sürüm GSM şebekesine bağlanamaz ve gelecekteki güncelleme kodlarını kabul edemezse, yerinde bir ürün yazılımı güncellemesi gerekir.
Linux mu, RTOS mu yoksa çıplak metal mi kullanıyorsunuz? Debian'ı kullanarak mevcut dosya sisteminin anlık görüntüsünü alabilir, "apt-get" yoluyla yükseltme yapabilirsiniz, ardından çalışıp çalışmadığına bağlı olarak değişiklikleri saklayabilir veya geri alabilirsiniz.