Gömülü sistemlerde hata ayıklayıcı önbelleği yanıltıcı bellek verisi sunabiliyor
Öne çıkanlar
- JLinkGDBServer, durdurulan çekirdek üzerinde aynı adrese yapılan okumalarda yerel bellek önbelleğindeki eski veriyi döndürdü.
- Doğrudan AHB-AP erişim portuna gönderilen komutlar önbelleği atlayarak donanımdaki güncel değeri doğruladı.
- Önbellek mekanizması devre dışı bırakıldığında veya işlemci adımlatıldığında bellek değişiklikleri doğru şekilde yansıdı.
Nordic Semiconductor mühendisi Daniel Mangum, nRF54L serisi mikrodenetleyicilerde donanım yazılımı yazmak yerine GDB üzerinden doğrudan yazmaçlara erişirken beklenmedik bellek okuma sorunlarıyla karşılaştı. İşlemcinin Güvenli Bilgi Yapılandırma Bölgesi (SICR) üzerinde Anahtar Yönetim Birimi (KMU) yuvalarını yapılandırıp hedeflenen bellek adresine veri aktaran Mangum, ilk yazma işleminin ardından yapılan sonraki aktarımlarda GDB çıktılarının güncellenmediğini tespit etti. Yapılan doğrudan komut testleri, çevre biriminin veriyi başarıyla yazdığını ancak hata ayıklayıcının eski veriyi döndürdüğünü ortaya koydu.
Sorunun kaynağı araştırıldığında, nRF54LM20 platformunda yer alan Arm CoreSight SoC-400 hata ayıklama mimarisi ve JLinkGDBServer yazılımının çalışma yapısı incelendi. GDB üzerinden doğrudan AHB-AP erişim portuna ReadMemAP komutu gönderildiğinde güncel verinin alındığı, standart bellek inceleme komutlarının ise JLinkArm.dll kütüphanesinin varsayılan olarak açık tuttuğu bellek önbelleğinden beslendiği belirlendi. İşlemci çekirdeği durdurulmuş durumdayken donanım çevre biriminin doğrudan bellek erişimiyle (DMA) yaptığı değişiklikler, hata ayıklayıcının yerel önbelleğini geçersiz kılmadığı için ekrana bayat veriler yansıdı.
Hata ayıklayıcı önbelleğinin SetEnableMemCache komutuyla devre dışı bırakılması sonucunda bellek güncellemelerinin gecikmesiz olarak görüntülendiği kaydedildi. Bununla birlikte resmi belgelere göre önbelleği kapatmanın genel kullanımda önerilmediği, işlemcinin birkaç adım ilerletilmesinin önbelleği yenilemek için yeterli olduğu ifade edildi. Karşılaşılan bu durum, gömülü sistemlerde donanım çekirdeği dururken çevre birimlerinin belleği değiştirdiği senaryolarda alt seviye veri yolu mimarisini ve port tabanlı okuma yöntemlerini anlamanın önemini gösterdi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.