STM32'de hafızayı bölümlendirme

Başlatan boreas, 28 Haziran 2018, 18:28:27

boreas

Merhaba arkadaşlar,
NXP'nin kl25z tarzı işlemcilerini kullanırken kinetis'de  belli hafıza adreslerini kullanıcıya rezerve edebiliyorduk. Program o kısmı yazılamıyordu. ST.'de de böyle bir işlem yapabilirmiyiz yoksa program bittikden sonra STLINK ile boş gözüken bir adresimi kullanmak gerekir.

Teşekkürler.

e135193

#1
Verdiğim örnek STM32F407 işlemcisine ait. STM ailesi işlemcilerde flash hafıza sektörlerden oluşur. Program hafızasının kaplamadığı boş sektörleri veri saklamak için kullanabilirsin.




STM32 için flash'a yazma okuma örneğinin youtube da anlatımı için linkteki videoya bakabilirsin.


e-zeki

ST de flash memory'ye program içerisinde müdahale edebilirsiniz. STM, aksi belirtilmedikçe 0x08000000 adresinden başlayarak programı yazar. f3'ler için page, f4'ler için sector denilen bölümlere ayrılmıştır.

Nxp'nin ürünlerinde nasıl bilmiyorum ama STM'lerde şöyle bir durum söz konusu eğer 1 byte bile yazacak olsanız o adresin bulunduğu sektör yada page'i komple silmek zorundasınız. o yüzden program boyutunu göz önüne alarak programın bittiği page ya da sektörden sonraki kısma yazmaya dikkat edin.

dumansiz

Zamanında STM32F1 ile uğraşırken, kendi "bootloader"ım için bahsettiğin işlemi yapmıştım. Projede başlangıç adresini değiştirmiştim. Yanlış hatırlamıyorsam "Makefile" dosyasından da yapılıyordu. Hangi derleyiciyi kullanıyorsan, teknik desteği ile irtibata geçmen faydalı olur. Lisanslı olmasan bile yardımcı olabiliyorlar.

MrDarK

Anahtar kelime Memory Allocation, Derleyicilerde genelde linker script file üzerinden yapılabiliyor. Buradan RAM ve ROM'u istediğin parçalara bölüp istediğin gibi ayırabilirsin. Bir programdan başka bir programa aktarım yaparken Vector table allocation yapmayı unutmayalım. Debugger ile çalışırkende yükleme noktalarını programına göre kaydırman gerekiyor.
Picproje Eğitim Gönüllüleri ~ MrDarK

quarko

IAR da .icf dosyasını (linker konfigürasyon dosyası) güncelleyerek ROM un başlangıç ve bitiş adreslerini derleyiciye bildirebilirsin. Ben flash hafızadaki son iki sektörü ayırıp, eeprom emulation için kullanıyorum.

"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."