Arduino boardlarından sonra Esp32 kullanmaya hızlı bir geçiş yapmış biri olarak Esp32 nin bir çok özelliği hala tam olarak bilmiyorum ve kullanmıyorum. Ancak fırsat buldukça bu konudaki eksikliklerimi gidermeye çalışıyorum.
Bugün incelediğim konu ise esp32 nin partition table (bellek bölümleri) konusu. Daha önce çalıştığım işlemcilerden farklı olarak esp32 nin program hafızası olarak harici bir spi flash bellek bulunuyor. Bu belleğin kapasitesi yaygın olarak 4mb olmakla birlikte 16mb gibi farklı kapasiteye sahip modelleri de satın almak mümkün. Esp32 nin belleği varsayılan olarak mantıksal birkaç bölümlendirmeye sahiptir. Aşağıdaki tabloda 4mb esp32-u için varsayılan bölümler yer almaktadır.
Tabloyu özet şekilde yorumlayacak olursak büyük depolama kapasitesine sahip olan bölümler bizim kullanımız için ayrılmış bölümlerdir. "app0" program kodumuz için ayrılmış alan, "app1" ota güncellemesi için ayrılmış alan ve "spiffs" ise dosyalama/depolama için ayrılmış alandır. Detaylı bilgi için Espressif in dokümanlarını inceleyebilirsiniz. Partition table bölümlerini projemizin ihtiyaçları doğrultusunda yeniden istediğimiz gibi şekillendirmemizde mümkündür.
Mevcut Flash Kapasitesini Tespit Etme
Elimde birkaç adet esp32 modülü var ve bunlardan sadece birisi 16mb kapasiteye sahip. Ancak ben modülleri biri biri ile karıştırdım ve elimdeki hangi modülün 16mb olduğunu bilmiyordum. Modül üzerindeki model numaraları da bu konuda faydalı bir bilgi sağlamıyor. O halde elinizdeki modülun kaç mb kapasiteye sahip olduğunu öğrenmek isteye bilirsiniz. Bunun için platformio nun terminal penceresinde aşağıdaki komutu girdiğinizde modülünüzün flash kapasitesini öğrenebilirsiniz. Aslında bu konuyu daha önce ayrı bir başlıkta incelemiştim. İlgili yazıya buraya tıklayarak ulaşabilirsiniz.
python C:\Users\kullanıcıadınız\.platformio\packages\tool-esptoolpy\esptool.py flash_id
Partition Tablosunu Yeniden Düzenleme
Platfomio ile esp32 kullanımında hazır olarak önceden hazırlanmış csv uzantılı bölümlendirme dosyalarından birini kullanabilir veya kendi aynı formatta kendi özel csv dosyanızı oluşturabilirsiniz. Aşağıdaki dosya yolu altında hazır csv dosyalarını bulabilirsiniz.
Bu csv uzantılı partition table dosylarınan herhangi birini veya kendi csv uzantılı dosyanızı esp32 ye yüklemek için platformio.ini dosyanıza aşağıdaki satırı eklemeniz gerekmektedir.
board_build.partitions = default.csv
Default yerine istediğiniz csv dosya adını yazmalısınız. Platformio dosyanızda bu satır yer almadığında varsayılan olarak default.csv deki kriterler uygulanmış olur.
Ayrıca program kodu içerisinden de bölümlen üzerinde işlem yapmak mümkündür. Bu konu ile ilgili detaylar için buraya tıklayarak espressif in ilgili dökümanını inceleyebilirsiniz.
Mevcut Partition Tablosunu Tespit Etme
Flash üzerinde partition table bilgisi eski modellerde 0x8000 adresinde yeni modellerde ise 0x9000 adresinde 0xC00 (3072) byte olarak saklanmaktadır. "esptool.py" ile bu adres okunarak "gen_esp32part.py" ile de bölümlendirme bilgilerine erişilebilir. Aşağıdaki komutları platformio terminal penecersine yazarak mevcut (modül üzerindeki) partition bilgisine erişilebilir.
python C:\Users\kullanıcı_adınız\.platformio\packages\tool-esptoolpy\esptool.py read_flash 0x8000 0xc00 ptable.bin
python C:\Users\kullanıcı_adınız\.platformio\packages\framework-arduinoespressif32\tools\gen_esp32part.py ptable.bin