STM32F103C8 20K rama sahip.
Keil'de örnek içi boş bir proje oluşturduğumda StackSize=0x400 ve HeapSize=0x200
Bu şartlar altında Stack Pointer 0x20000660 değerini alıyor.
20K ram 0x20000000....0x20004FFF aralığı olduğuna göre
0x20000000......0x2000025F aralığı global değişkenler için
0x20000260......0x2000065F aralığı Msp Stack için kullanılıyor.
Keil, niçin Stack alanını 0x20000660 dan başlatıyor?
Benim derdim Stack Pointeri Ramın sonundan başlatmak. Heap alanı kullanmayacağım. C + ASM yazarken Stack'ı nasıl sondan başlatabilirim. SystemInit'de doğrudan SP'e adres versem C açısından sorun oluşurmu?
Yada bu isteğimi nasıl gerçeklerim? (Stack, ramın en sonuna atansın)
Sorun var hocam. Startup.S içinde SP (msp) yi ram sonuna atabiliyorum. Burada hiç sorun yok. Fakat, __main rutini çağrıldığında C, SP yi yeniden Init ediyor ve SP yi kendi bildiği aralığa geri çekiyor. Dolayısı ile sorunum devam ediyor.
http://www.keil.com/support/man/docs/armlib/armlib_CHDJHFGB.htm (http://www.keil.com/support/man/docs/armlib/armlib_CHDJHFGB.htm)
http://www.keil.com/support/man/docs/armlib/armlib_CJAGBBEG.htm (http://www.keil.com/support/man/docs/armlib/armlib_CJAGBBEG.htm)
http://www.keil.com/support/man/docs/ARMLINK/ARMLINK_CJAJBEFD.htm (http://www.keil.com/support/man/docs/ARMLINK/ARMLINK_CJAJBEFD.htm)
http://www.keil.com/support/man/docs/ARMLINK/ARMLINK_BABDDHBF.htm (http://www.keil.com/support/man/docs/ARMLINK/ARMLINK_BABDDHBF.htm)
işinize yarar mı hocam?
Fazlasıyla yarar hocam.