7 puan yazan pazzk 2025-12-30 | 7 yorum | WhatsApp'ta paylaş

ESP32 tabanlı firmware geliştirirken,
Flash Encryption ve PSRAM'in birlikte kullanıldığı bir ortamda
Interrupt Watchdog Reset oluşması sorunuyla karşılaşılmış; bu yazı, bu sorunu çözme sürecini derliyor.

ESP32, IoT ve gömülü ortamlarda yaygın olarak kullanılan bir MCU'dur ve
RTOS tabanında TLS ağ iletişimi, dosya sistemi, OTA güncellemeleri gibi özellikler sunarak
ağ bağlantısı gerektiren gömülü uygulamaların tek bir çiple hayata geçirilmesini mümkün kılar.

7 yorum

 
pathfinder 2025-12-30

İlginç bir içerikti, keyifle okudum
Bu arada DMA alanı da neden cache kullanıyor?
Sorun çıkarmaya çok daha yatkın gibi görünüyor

 
pazzk 2025-12-31

DMA önbelleği doğrudan kullanmaz; DMA ve CPU tarafından ortaklaşa paylaşılan bellek söz konusu olduğu için önbellek tutarlılığını dikkate almak gerekir.

 
pathfinder 2026-01-01

MMU yok ama MPU ile bellek bölgelerini ve bunlara ait özellikleri tanımlamak mümkün.
Bir göz atmanız iyi olabilir.

 
pazzk 2026-01-02

Bazı üst seviye MCU’larda, belirttiğiniz gibi MPU üzerinden yalnızca erişim izinleri değil, önbellekle ilgili özellikler de bölge bazında ayarlanabilir. Aşağıdaki ST dokümanı bu konuda iyi bir başvuru kaynağı olabilir: https://community.st.com/t5/stm32-mcus/…

Ancak bu yazıda kullanılan ESP32-S3’te, genel amaçlı CPU’larda veya bazı MCU’larda sunulduğu gibi bellek bölgeleri için cacheable / non-cacheable özelliklerini MPU ya da benzeri bir mekanizma üzerinden ayarlama yöntemi sunulmamaktadır.

ESP32-S3’te harici bellek (Flash/PSRAM), cache/MMU üzerinden erişilecek şekilde tasarlanmıştır (TRM 4.3.3 External Memory) ve erişim izinlerinin kontrolü PMS (Permission Management System) üzerinden yapılır (TRM Chapter 15); ancak bu birim erişim koruması içindir, önbellek üzerinden geçip geçmeyeceğini ya da erişim yolunun kendisini değiştirme işlevi görmez.

TRM (Technical Reference Manual) bağlantısı: https://documentation.espressif.com/esp32-s3_technical_reference_manua….

 
pathfinder 2026-01-02

Doğal olarak ARM çekirdeği olacağını sanıyordum, ben yanlış düşünmüşüm.
Nazik cevabınız için teşekkür ederim

 
pathfinder 2025-12-31

Bahsettiğiniz cache tutarlılığı nedeniyle her seferinde cache invalidate yapmak gerekiyor olmalı; peki neden bunun yerine doğrudan non-cacheable alan kullanılmadığını merak etmiştim.

 
pazzk 2026-01-01

Ah, genel amaçlı bilgisayarların aksine ESP32 gibi MCU'larda bellek özelliklerini çalışma zamanında sayfa düzeyinde değiştirebilen bir MMU bulunmuyor ve cacheable / non-cacheable olup olmaması önceden belirlenmiş bellek bölgeleri düzeyinde kararlaştırıldığı için, dediğiniz şekilde kullanmak mümkün olmuyor (iç SRAM tamamen non-cacheable, PSRAM ise tamamen cacheable bellek olarak sabitlenmiş durumda).

Güzel sorunuz için teşekkürler!