7 poin oleh pazzk 2025-12-30 | 7 komentar | Bagikan ke WhatsApp

Saat mengembangkan firmware berbasis ESP32,
saya mengalami masalah Interrupt Watchdog Reset
di lingkungan yang menggunakan Flash Encryption dan PSRAM secara bersamaan,
dan tulisan ini merangkum proses penyelesaian masalah tersebut.

> ESP32 adalah MCU yang banyak digunakan di lingkungan IoT dan embedded,
> serta menyediakan komunikasi jaringan TLS, filesystem, pembaruan OTA, dan lain-lain berbasis RTOS
> sehingga aplikasi embedded yang memerlukan koneksi jaringan dapat diimplementasikan dalam satu chip.

7 komentar

 
pathfinder 2025-12-30

Kontennya menarik, saya menikmatinya.
Tapi, apa alasan area DMA juga menggunakan cache?
Sepertinya hal itu mudah menimbulkan masalah.

 
pazzk 2025-12-31

DMA tidak secara langsung menggunakan cache, tetapi karena ini adalah memori yang dibagikan oleh DMA maupun CPU, konsistensi cache harus diperhatikan.

 
pathfinder 2026-01-01

MMU memang tidak ada, tetapi wilayah memori dan atribut untuk wilayah tersebut tetap bisa ditentukan dengan MPU.
Sepertinya akan bagus jika Anda meninjaunya sekali.

 
pazzk 2026-01-02

Pada beberapa MCU kelas atas, seperti yang Anda sebutkan, MPU dapat digunakan untuk mengatur bukan hanya hak akses tetapi juga atribut terkait cache per wilayah. Materi ST berikut akan menjadi referensi yang baik: https://community.st.com/t5/stm32-mcus/…

Namun, pada ESP32-S3 yang digunakan dalam tulisan ini, tidak tersedia mekanisme seperti pada CPU umum atau beberapa MCU tertentu untuk mengatur atribut cacheable / non-cacheable per wilayah memori melalui MPU atau mekanisme serupa.

Dalam kasus ESP32-S3, memori eksternal (Flash/PSRAM) dirancang untuk diakses melalui cache/MMU (TRM 4.3.3 External Memory), dan kontrol hak akses dilakukan melalui PMS (Permission Management System) (TRM Bab 15), tetapi perangkat ini ditujukan untuk perlindungan akses dan tidak berperan mengubah apakah akses melewati cache atau jalur akses itu sendiri.

Tautan TRM (Technical Reference Manual): https://documentation.espressif.com/esp32-s3_technical_reference_manua….

 
pathfinder 2026-01-02

Ternyata saya keliru karena mengira itu pasti core arm.
Terima kasih atas jawaban yang ramah.

 
pathfinder 2025-12-31

Karena konsistensi cache seperti yang Anda sebutkan, sepertinya cache invalidate harus dilakukan setiap kali, jadi saya penasaran kenapa tidak langsung memakai area non-cacheable.

 
pazzk 2026-01-01

Ah, tidak seperti komputer umum, pada MCU seperti ESP32 tidak tersedia MMU yang bisa mengubah atribut memori per halaman saat runtime, dan apakah suatu memori bersifat cacheable / non-cacheable ditentukan berdasarkan wilayah memori yang sudah ditetapkan sebelumnya, jadi seperti yang Anda katakan memang tidak bisa digunakan seperti itu (SRAM internal tetap non-cacheable, sedangkan PSRAM tetap cacheable sebagai satu blok memori utuh).

Terima kasih atas pertanyaannya yang bagus!