SDRAM Kullanımı Hakkında

Başlatan yamak, 10 Kasım 2013, 21:56:37

yamak

Stm32F429ZIT6 da sdram kullanımını anlamaya çalışıyorum.Biz FMC modülünü aktif ettik diyelim. 0xD0000000 adresinden sonraki adreslere bir veri yazmak istediğmizde derleyici ona göre kod üretip otomatik olarak sdram e o veriyi yazılıyo mu?
mesela
*(uint32_t*)0xD0000000+4=12;
dediğimizde direk sdram in 4 nolu adresine 12 yazılmış olur?

z

Keil'de Target ayarlarinda harici ram alanini tanimlayabilirsin.

program yazarken degiskenlerin vs b alanda tanimlanmasini istiyorsan bir direktifi olmasi lazim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yamak

Hocam stm in kendi örneklerine bakıyorum.Sadece chip in kendi embedded sram alanını tanımlamış.

Elektroemre

#3
Selamlar hocam,

http://www.lpcware.com/ da LPC43XX için harici SDRAM için Keil örnekleri mevcut diye hatırlıyorum.
Muhtemelen Keil'e aynı şekilde tanıtılıyordur adres.

Bu arada Stm32F429ZIT6 kit şeklinde mi temin ettin hocam? Bende SDRAM'li bir mcu ile çalışacağım kısmetse. LPC43xx serisi bir mcu getirttim ama gönlüm st'den yana.

Ekleme: http://www.lpc4350.com/lpc43xx/Examples/
adresindede LPC43xx için keil örneği mevcut.

yamak

Alıntı yapılan: Elektroemre - 11 Kasım 2013, 09:16:06
Selamlar hocam,

http://www.lpcware.com/ da LPC43XX için harici SDRAM için Keil örnekleri mevcut diye hatırlıyorum.
Muhtemelen Keil'e aynı şekilde tanıtılıyordur adres.

Bu arada Stm32F429ZIT6 kit şeklinde mi temin ettin hocam? Bende SDRAM'li bir mcu ile çalışacağım kısmetse. LPC43xx serisi bir mcu getirttim ama gönlüm st'den yana.

Ekleme: http://www.lpc4350.com/lpc43xx/Examples/
adresindede LPC43xx için keil örneği mevcut.
Evet hocam Stm32F429I-DISCO kitinden var bende.St nin örneklerini inceliyorum.Üzerinde tft nin frame buffer ı olarak harici SDRAM i kullanmış.ayrıca image verilerine erişim içinde DMA2D çevre birimini kullanmış.lcd'ye basacağı datayı 0xD0000000 offsetini uygulayarak gerekli adrese yazıyo gerisini de DMA2D birim hallediyo.Fakat target ayarlarına bakıyorum.Sadece kendi embedded SRAM i belirtilmiş başka bir şey belirtilmemiş.Tabi read only memory kısmında flash adresi belirtilmiş.

z

Target ayarlarında IRAM1 IRAM2 alanları var. Bunlar Internal Ram anlamına geliyor ve genellikle IRAM1,e çentik atılmış durumda.

Birde RAM1, RAM2, RAM3 alanı var. Bunlarda çentik yok.

RAM1 alanına çentik at ve Ramın başlangıç adresini ve boyunu tanımla.

Linker menüsünde de Use Memory Layout from Target Dialog kusuna çentik at.

Artık derleyici senin ilave bir ram kullanacağını öğrenmiş olur.

Aynı amaçla scatter dpsyada da tanımlama yapabilirsin. Scatter dosyasının adını da Linker bölümünde tanımlayabiliyorsun.

Fakat C de değişkenleri/verileri bu rama yaz/oku direktifi nasıl verilir bilmiyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yamak

Hocam St'nin kendi örneğindeki target ayarları aşağıdaki gibi:

z

Linker menüde scatter dosyasının tanımı da mı yok?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yamak

Hocam Target Menüsü de aşağıdaki gibi

Ve scatter dosyasının içeriği de aşağıdaki gibi:
Alıntı Yap; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00200000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00030000  {  ; RW data
   .ANY (+RW +ZI)
  }
}


z

#9
O zaman kod örneğine bakmak lazım.

Belki de adam bir pointer tanımladı. Pointere ext ram adresini atadı ve bu şekilde rama erişti. (Senin soru sorduğun mesajındaki örnekteki gibi)

Yalnız başından beri ben sorunu da yanlış anlamışım. Benim açıklamalarım hep ext ram üzerineydi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

yamak

Alıntı yapılan: z - 11 Kasım 2013, 13:43:19
O zaman kod örneğine bakmak lazım.

Belki de adam bir pointer tanımladı. Pointere ext ram adresini atadı ve bu şekilde rama erişti. (Senin soru sorduğun mesajındaki örnekteki gibi)

Yalnız başından beri ben sorunu da yanlış anlamışım. Benim açıklamalarım hep ext ram üzerineydi.
Evet hocam adam pointer tanımlayarak erişiyo.0xD0000000 lık bi offset uygulayıp bu şekilde erişiyo.

camby

Fsmc ile tft kullanirken de oldugu gibi , internal ram disindaki adrese yazdiginizda arka planda fsmc isini yaparak veriyi yaziyor yada okuyor. Tabi duzgun bir sekilde fsmc init edilmis olmasi gerekiyor.

fgokcegoz

Alıntı yapılan: camby - 11 Kasım 2013, 15:55:25
Fsmc ile tft kullanirken de oldugu gibi , internal ram disindaki adrese yazdiginizda arka planda fsmc isini yaparak veriyi yaziyor yada okuyor. Tabi duzgun bir sekilde fsmc init edilmis olmasi gerekiyor.

Benimde başıma benzer bir durum geldi. SRAM i, external memory olarak kullanıp aynı zamanda FSMC ile TFT sürerken sıkıntı olmadı fakat data memory olarak, sram i kullandığımda tft nin init ayarlarını yaparken hard fault interrupta düşüyor...  SRAM : Bank1/NORSRAM2 ye , TFT : Bank1/NORSRAM3 e bağlı.
"Vicdanın ziyası, ulûm-u diniyedir. Aklın nuru, fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder." (Bediüzzaman Said Nursi)