Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MCU flash bellegine yazip okuma
#1
Merhaba

Stm32f1xx serisi medium density islemcinin flash bellegine yaziyorum okuyorum ama bu islemci ailesi de flashlar 1kb bolumlenmis .

Bu durumda ilk flash adresine yazmaya basladigim da ilk adres bellek kapasitesi olan 1 kb bolum doldugunda sonraki bir kb bolume yazmaya devam eder mi ? Bu seride 64 kb ve 128 kb flash secenekleri var. Ayrilan 64 kb kismi bu sekilde sadece ilk adres bilgisi gieerek yazmasini beklesem dogru mu olur.
Yoksa her bolumun kapasitesi heaaplayarak mi yazmaliyim?
Main memory ilk adresinden yazmaya baslayinca hata aliyorum. Burdaki flash adresleri kodlarin tutuldugu adresleeide mi kapsiyor ? En son adrese yazdigimda hatasiz yazip okuyorum ama ilk adresde hata veriyor. 

Bu tabloya gore page 110 adres degerini nasil bulabilirim.
Burda bir hesaplama yontemi olmaliki aradaki adreslere ... Isareti ile bos birakmislar.
Stm32f103 medium icin flash bilgileri soyle:
[img]OaJ8k5.png[/img]
Cevapla
#2
Bade adress kısmında başlangıç ve bitiş adresleri arasında 1023 byte (1kb) sabit artış var. Oradan hesaplayacaksiniz.
Page 127 den 17*1023 geri geleceksiniz. Böylece page 110 adresini bulursunuz.

Muhtemelen sonraki adreslere yazar. Fakat deneyerek veya en doğru yol teknik dokümanında ki bilgilerde bu ayrıntı kesinlikle yazar.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#3
Stm32 lerin adres uzayı 0x00000000 - 0xFFFFFFFF aralığındadır. Flah hafıza, NVIC, peripheral portlar, config bitleri, Ram bölgeleri, usb, ethernet, timerler... gibi tüm donanım bileşenleri aynı adres uzayında tahsis edilen farklı bölgelere yerleştirilmiştir. 32 bit 4GB gibi bir alanı adresleme imkanı sağlar. Kullandığımız mcu kapasiteleri bunun çok çok altında olduğu için bu adres uzayında kullanılmayan rezerve edilmiş çeşitli bölgeler bulunmaktadır. Adreslere erişim ve yazma için rastgele bir yöntem izlerseniz eriştiğiniz, özellikle üzerine veri yazdığınız alanların doğru yerler olduğundan emin olmanız gerekir.

Flash hafıza bölgesi aynı zamanda sizin yazdığınız kodların saklandığı bölge. Kendi kodlarınızın üzerine veri yazarsanız programınız kendi kendini imha edecektir Smile
Cevapla
#4
(21-02-2020, Saat: 09:11)frmman Adlı Kullanıcıdan Alıntı: Stm32 lerin adres uzayı 0x00000000 - 0xFFFFFFFF aralığındadır.  Flah hafıza, NVIC, peripheral portlar, config bitleri, Ram bölgeleri, usb, ethernet, timerler... gibi tüm donanım bileşenleri aynı adres uzayında tahsis edilen farklı bölgelere yerleştirilmiştir. 32 bit 4GB gibi bir alanı adresleme imkanı sağlar. Kullandığımız mcu  kapasiteleri bunun çok çok altında olduğu için bu adres uzayında kullanılmayan rezerve edilmiş çeşitli bölgeler bulunmaktadır.  Adreslere erişim ve yazma için rastgele bir yöntem izlerseniz eriştiğiniz, özellikle üzerine veri yazdığınız alanların doğru yerler olduğundan emin olmanız gerekir.

Flash hafıza bölgesi aynı zamanda sizin yazdığınız kodların saklandığı bölge. Kendi kodlarınızın üzerine veri yazarsanız programınız kendi kendini imha edecektir Smile

Kendi kodlarımın oyuntunu .bin dosyası ile mi tespit edebilirim? Kodun boyutunu bilip kullanılayan sondaki 15 20 page üzerine yazmak istiyorum.
Cevapla
#5
(21-02-2020, Saat: 17:00)41linea41 Adlı Kullanıcıdan Alıntı: Kendi kodlarımın oyuntunu .bin dosyası ile mi tespit edebilirim? Kodun boyutunu bilip kullanılayan sondaki 15 20 page üzerine yazmak istiyorum.

Bu şekilde bir yaklaşım doğru olmaz. Olması gereken sizinde işin başında kullanacağınız hafıza bölgesini ve boyutunu baştan belirlemek ve bunu kullandığınız derleyiciye söylemek. Bu şekilde siz derleyiciye bu hafıza kısmını ben kullanacağım, sen buraya bir şey yazacak kod üretme demiş oluyorsunuz.

Şu linkdeki açıklamalar umarım size yardımcı olur.

https://www.ozturkibrahim.com/TR/eeprom-...-on-stm32/
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi