Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: serdararikan - 20 Ekim 2018, 21:55:40

Başlık: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: serdararikan - 20 Ekim 2018, 21:55:40
RAM de örneğin 0x20000100 adresinden başlayarak 100 byte lık bir dizi tanımlamak istiyorum.
link (https://mcuoneclipse.com/2012/11/01/defining-variables-at-absolute-addresses-with-gcc/)

linkte bir örnek buldum denedim ama başarılı olamadım.
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: magnetron - 20 Ekim 2018, 22:22:18
bu yazdığın adrese bir pointer atayıp yapabilirsin sanırım
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: serdararikan - 20 Ekim 2018, 22:37:59
dizi şeklinde tanımlamak daha çok işimi görüyor.
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: kantirici - 20 Ekim 2018, 22:48:48
Alıntı yapılan: magnetron - 20 Ekim 2018, 22:22:18bu yazdığın adrese bir pointer atayıp yapabilirsin sanırım

Bu şekilde kullanım yanlış. Derleyici oraya başka bir değişken yerleştirebilir.

Linker dan orayı ayırmak gerekir. Bu da hangi derleyici kullanıldığına göre değişir. Kullanılan derleyiciyi belirtirse biz ona göre bakalım.
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: serdararikan - 20 Ekim 2018, 22:50:48
TrueStudio kullanıyorum
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: kantirici - 20 Ekim 2018, 23:12:10
Atollic GCC kullanıyor.

http://blog.atollic.com/using-gnu-gcc-on-arm-cortex-devices-placing-code-and-data-on-special-memory-addresses-using-the-gnu-ld-linker

Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: Zoroaster - 21 Ekim 2018, 04:31:26
Keil'de scatter.txt dosyasi var.

Bunun icinde 2. bir ram bolgesi tanimlayacaksin. (Adresini ve uzunlugunu sen belirliyorsun)

C dili bu bolgeye karismayacagindan hic bir sekilde cakisma vs olusmaz.

Fakat buna neden gerek duyuyorsun ki? C de nereye denk gelirse gelsin 100 bytelik dizi olustur.

Bu diziyi kim kullancaksa ona dizi baslangic adresini yolla gitsin. Gerisini pointer ile erisim komutlari halleder zaten.
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: OptimusPrime - 21 Ekim 2018, 06:42:19

typedef struct
{
uint8 Data[100];
} ByteStream;

volatile ByteStream* Allocated = (volatile ByteStream*)(0x20000100);

Hayirli olsun :)
Başlık: Ynt: stm32 RAM in istenen bölgesine dizi tanıma
Gönderen: serdararikan - 22 Ekim 2018, 11:11:52
Cevaplarınız için teşekkür ederim.ilk linkteki örnekteki gibi istediğim alanda bir dizi tanımladım.