Stm32f407'de çalışma esnasında flash hafızaya bazı verileri kayıt etmek istiyorum.
Bu konu ile ilgili yararlanacağım döküman vs. var mı acaba.Application Note'lara baktım bulamadım sizin bildiğiniz varsa paylaşabilir misiniz?
F100 den çok farklı olmayabilir.
https://www.picproje.org/index.php/topic,44814.0.html (https://www.picproje.org/index.php/topic,44814.0.html)
Hocam burayı okudum ama aynı olup olmadığını bilmediğim için sorayım dedim.
MikroC'de bu iş için kütüphane var.
eeprom emulasyonunda yazıyorsun belirlediğin adrese, incele istersen..
https://www.picproje.org/index.php/topic,44814.0.html (https://www.picproje.org/index.php/topic,44814.0.html)
Pişti olduk Muhittin hocam :)
:-[
Alıntı yapılan: yamak - 03 Mart 2014, 20:07:53
Stm32f407'de çalışma esnasında flash hafızaya bazı verileri kayıt etmek istiyorum.
Bu konu ile ilgili yararlanacağım döküman vs. var mı acaba.Application Note'lara baktım bulamadım sizin bildiğiniz varsa paylaşabilir misiniz?
STM32F10x için yapılmış örnek paylaşılmılştı... Çok farklı değildir herhalde...
https://www.picproje.org/index.php/topic,51574.msg391567/topicseen.html#msg391567 (https://www.picproje.org/index.php/topic,51574.msg391567/topicseen.html#msg391567)
Stm32f4xx Std Library'deki flash kütüphanesindeki kodları biraz inceledim.Ufak tefek farklılıklar gözüme çarptı ama baya benziyo.
Fakat şöyle bir sorum var.Belki verdiğiniz linkte bir yerlerde yazıyo ama 10 sayfa olduğu için gözümden kaçırmış olabilirim.
Flash'ta bir yere veri yazarken yazacağımız yeri nasıl seçiyoruz.Yani yazacağımız yerde program kodlarından bir parça olabilir.Son sektörlerden birine mi yazıyoruz yoksa yazmadan önce okuyup ona göre mi yazıyoruz?
EEPROM emulatorunde istersen okursun, yazarsın. ama yaz dediğinde bilgi varmı diye bakmıyor.(diye hatırlıyorum)
Stm32f4 için yazılmış bir eeprom emülasyonu bulamadım.Ayrıca eeprom emülasyonuna ihtiyacım yok.Yani yazacağım verinin çok hızlı yazılmasına gerek yok gerekli bölgeye silip yazabilirim.Bir kaç konfigürasyon ayarı ve ufak bir veri tabanı saklamak istiyorum.
Yazacağım yerin kontrolunu nasıl yaparım.
Aradım Taradım Buldum Yamak,
http://www.4shared.com/rar/golaaYkCba/STM32F4xx_EEPROM_Emulation.html (http://www.4shared.com/rar/golaaYkCba/STM32F4xx_EEPROM_Emulation.html)
Yamak Keil Kullanmadım, Memoryi görüntülüyormu bilmiyorum. ben CoIde ile yazıp StmUtil ile bakıyordum.
Hocam çok sağolun.Gerçekten çok makbule geçti.Allah razı olsun.
Aklıma şöyle bişey geldi eğer paylaştığınız kütüphaneyi kullanıp flash'a veri yazabilirsem deneyecem.
Mesela 100 byte lık const bir dizi tanımlayıp daha sonra bu 100 byte lık alana flash register ları aracığılıyla veri yazsam olur mu acaba?Bu alana veri yazarken kontrol etmeme de gerek kalmaz.
Kullandığınız MCU' nun flash page(sektör) yapısına dikkat edin. Yoksa farkında olmadan program kodunuzun bir kısmını da silmeniz mümkün. Flash hafızaların çalışma mantığını iyi anlamak gerek.
Alıntı yapılan: yamak - 04 Mart 2014, 23:09:43
Hocam çok sağolun.Gerçekten çok makbule geçti.Allah razı olsun.
Aklıma şöyle bişey geldi eğer paylaştığınız kütüphaneyi kullanıp flash'a veri yazabilirsem deneyecem.
Mesela 100 byte lık const bir dizi tanımlayıp daha sonra bu 100 byte lık alana flash register ları aracığılıyla veri yazsam olur mu acaba?Bu alana veri yazarken kontrol etmeme de gerek kalmaz.
İşte bu 100 byte olayı problem. Çünkü flash hafızalar sektör olarak silinip yazılmalı. Yani minimum sektörünüz 2K ise o 2K alanı silip sonra veri yazabiliyorsunuz.
Onu hiç düşünmemiştim hocam :)
Konu acılmışken bende sorumu sorayım:)
Şimdi ben 50 adet 1_11.11.2011 gibi bir log tutmak istiyorum flashta.Flash hakkında yazılanları okudum.Ve bu loglar sıralı sekilde duracak yani 50 tane log tuttum 51. log gelince en eski log silinecek yeni gelen log eklenecek gibi ....
Fikirlerinizi almak istedim.Nasıl yapmalıyım.
Saygılarımla....
Hocam flash'a bu verileri sıraylayla yazın.51.log geldimi onu da daha önce yazdığınız 50.log un hemen ardına yazın.Ama 1. log u silmeyin.Çünkü çünkü herhangi biyeri silmek için o sektörü komple silmeniz gerekir.Okumak istediğinizde de sektörü sondan itibaren tarayın FF hariç okuduğunuz ilk veri sizin son yazdığınız log un son byte ı olacak.Sonra bu byte tan itibaren sayarak istediğiniz log a ulaşabilirsiniz.Eğer yazmaya çalıştığınızda sektör dolmuşsa son 50 log'unuz bir sonraki boş sektöre kopyalayın.Bir öncek sektörü de silin.Yeni sektör de dolunca tekrar bi önceki sektöre dönüp aynı işlemleri tekrarlayın.Bu şekilde 2 sektörü yedeklemeli olarak kullanabilirsiniz.
Cevabınız için teşekkür ederim hocam sağolun.