CooCox Örnek Proje Kurulumu

Başlatan memo333, 27 Ekim 2012, 00:55:37

muhittin_kaplan

yolun bu olması gerek
eğer GNU Tools u kurarsanız
C:\Program Files (x86)\GNU Tools ARM Embedded\4.6 2012q2\bin

Klein

#16
Evet GNU Tools kurunca düzeldi.
Yeni proje oluşturdum. GPIO ve RCC kullanacağım dedim. Gerekli kütüphanelerin tümünü kendisi yükledi.
GPIO ile ilgili örnekler var dedi, onu da ekle dedim. Ekledi.

Tak diye derledi , şak diye karta yükledi. Hiç kapris yapmadı , şu da lzaım , bunu da eklemen lazım demedi. İlk test çok başarılı.

mesaj birleştirme:: 31 Ekim 2012, 01:05:21


SystemCoreClock 168MHz'e çıkmıyor.  PLL parametreleri aşağıdaki gibi. Aynı parametreler ile Keil'de derleyince çalışıyor. Debug ile RCC registerlerine baktım, Internal osilatör aktif görünüyor.  Keil ile CooCox'un "system_stm32F4xx.c" dosyalarını karşılaştırdım, ikisi de aynı. SysInit() rutininin içeriğini kontrol ettim aynı. Ama olmadı. Hiç kod yazmadan kendi "IO_Toggle" örneğini deniyorum, onda da aynı.  Atladığım birşey mi var?

/************************* PLL Parameters *************************************/
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      8
#define PLL_N      336

/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2

/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7

/******************************************************************************/



mesaj birleştirme:: 31 Ekim 2012, 01:22:53

Ekleme:
Hallettim. SystemInit() fonksiyonunun Keil'de olduğu gibi startup  kodlarından çağırıldığını düşünerek çağırmamıştım. Bu yüzden tırmalamışım.

erolca

eroool

memo333

konu iyi bir yere gidiyor..

bundan sonrası için bir planlama da yapsak mı? nasıl yol alabiliriz?
Gömülü Linux Notları --> http://linuxedu.xyz/

muhittin_kaplan

Derleyiciyi Çok Sevdim. Bununla Çalışmaya Devam Edeceğim.

mesaj birleştirme:: 01 Kasım 2012, 21:19:35

Alıntı yapılan: Klein - 30 Ekim 2012, 22:33:44
Hallettim. SystemInit() fonksiyonunun Keil'de olduğu gibi startup  kodlarından çağırıldığını düşünerek çağırmamıştım. Bu yüzden tırmalamışım.
[/color]

Çağırıyor gibi geldi bana ?

Klein

Alıntı yapılan: muhittin_kaplan - 01 Kasım 2012, 21:18:35
Çağırıyor gibi geldi bana ?

Bu CooCox startup_Stm32F4xx.c dosyasındaki reset işlemleri.
void Default_Reset_Handler(void)
{
  __asm("  ldr     r0, =_sbss\n"
        "  ldr     r1, =_ebss\n"
        "  mov     r2, #0\n"
        "  .thumb_func\n"
        "zero_loop:\n"
        "    cmp     r0, r1\n"
        "    it      lt\n"
        "    strlt   r2, [r0], #4\n"
        "    blt     zero_loop");
#ifdef __FPU_USED
  /* Enable FPU.*/ 
  __asm("  LDR.W R0, =0xE000ED88\n"
        "  LDR R1, [R0]\n"
        "  ORR R1, R1, #(0xF << 20)\n"
        "  STR R1, [R0]");
#endif	

  /* Call the application's entry point.*/
  main(); 
}


bu da KEIL startup_stm32F4xx.s dosyasındaki reset handler kodları.
; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main

                 ;FPU settings
                 LDR     R0, =0xE000ED88           ; Enable CP10,CP11
                 LDR     R1,[R0]
                 ORR     R1,R1,#(0xF << 20)
                 STR     R1,[R0]

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

; Dummy Exception Handlers (infinite loops which can be modified)


@memo
Ben örnekleri CooCox üserinde yazıyorum artık. Sen de kurulum, ayarlar, kütüphanelerin eklenmesi çıkarılması, eklentilerin kullanımı gibi konularda destek verirsen konu bir yerlere gider. Kullanmaya başlayan artarsa, örnekler de artar.

muhittin_kaplan

#21
Laptop da kurdurm derledim ve gönderdim. extra bir ayar gerekmedi. ama Masaüstünde nedense ColinkEx yok diyor ve debug yapamıyorum.

STLinkUSBDriver.dll dosyasının C:\CooCox\CoIDE\config\adapter ın altına kopyalanması gerekiyor.

mesaj birleştirme:: 01 Kasım 2012, 23:10:42

Kütüphaneleri ekledikten sonra neden #include "stm32f10x_gpio.h" komutunu kullanmadığımızda derleme hatası veriyor (derleme hatası bu şeilde kullanmadığım tüm dosya ile ilgili fonksiyonlarda veriyor.)

yani hem proje ağacına ekleyip hem neden include etmek zorunda kalıyorum.

NaMcHo

#22
Program atarken şöyle bir hata alıyorum :

C:\Program Files (x86)\CooCox\CoIDE>"C:/Program Files (x86)/CooCox/CoIDE/bin\coflash.exe" program STM32F407VG "C:/Program Files (x86)/CooCox/CoIDE/workspace/Deneme\Debug\bin\Deneme.bin" --adapter-name=ST-Link --port=SWD --adapter-clk=1000000 --erase=affected --driver="C:/Program Files (x86)/CooCox/CoIDE/flash/STM32F4xx_1024.elf" 

Error: Connect failed, check config and cable connection

Debug yapmaya çalışırkende : Program Download Failed !


Debug ayarlarından Adapter = ST-Link , Port = SWD   Download sekmesinde herhangi bir değişiklik yapmadım.
Configuration bölümündede Memory Areas bölümünde herhangi bir değişiklik yapmadım(Hatanın bununla bir ilgisi yoktur zaten).


Alıntı YapSTLinkUSBDriver.dll dosyasının C:\CooCox\CoIDE\config\adapter ın altına kopyalanması gerekiyor.
Bunuda denedim.

SORUN ÇÖZÜLDÜ
ST-Link'i güncelledim.

Klein

Alıntı yapılan: muhittin_kaplan - 01 Kasım 2012, 21:53:59

Kütüphaneleri ekledikten sonra neden #include "stm32f10x_gpio.h" komutunu kullanmadığımızda derleme hatası veriyor (derleme hatası bu şeilde kullanmadığım tüm dosya ile ilgili fonksiyonlarda veriyor.)

yani hem proje ağacına ekleyip hem neden include etmek zorunda kalıyorum.
Proje ağacına eklediğinde, derleyicinin bu dosyayı derleyeceğini ve link esnasında  bağlayacağını bildiren derleyici ve linker yönergeleri komut satırına akleniyor. 
Önce her kaynak kod ayrı ayrı derleniyor.
Sonra da birleştirirliyor.

Bir dosyayı proje ağacına eklemek , sadece onun derleneceğini ve link işlemine (gerekiyorsa) katılacağını gösteriyor.

Derleyici main.c Kodlarımızı derlemeye başladı. Baktı ki  GPIO_Init() diye bir fonksiyon çağırılmış. Derlenecek dosyaların içine bakıyor bu tanımı hiç bir yerde bulamıyor.  O zaman da hata veriyor.  Bu durumda  *.h dosyasını include ederek fonksiyon prototiplerinin ve değişkenlerin neler olduğunu derleyiciye bildirmemiz gerekiyor.

muhittin_kaplan

CooCox la epey ce deneme yaptım.
Timer, PWM, ADC gibi ,Coocox ile proje oluşturma ve hızlı proje geliştirme nasıl olur paylaşacağım ama hepsini önce kavrayayım.

erolca

merhaba,

aşağıdaki işlemlerden sonra coocox derleyicisinin boot driverını  mı kullanıyorsunuz ?

Alıntı yapılan: memo333 - 27 Ekim 2012, 01:08:29
9. STM32F10x_StdPeriph_Lib_V3.5.0\Libraries içindeki STM32F10x_StdPeriph_Driver Klasörünü Proje Klasörüne Kopyalayın.
    CoIDE'de Project üstünde Refresh yapın Klasör eklenecek.




10. Project/Configuration/Include Paths...Add/Workspace/ seçin ve yeni ekledeğimiz klasör içindeki "inc" klasörünü gösterin. Artık STDLIB'in *.h dosyalarınıda ekledik.



11. stm32f10x_conf.h dosyasını açın ve kullanmak istediğiniz kütüphane dosyalarının *.h dosyalarını uncomment yapın.

12.Şöyle birşeyler göreceksiniz. İyi çalışmalar :)




eroool

muhittin_kaplan

#26
ekleme
Assert Param Hatası verdiğinde proje ayarlarından USE_STDPERIPH_DRIVER eklenmesi gerekiyor

mesaj birleştirme:: 04 Kasım 2012, 01:58:57

-Wimplicit-function-declaration

Bu uyarıyı neden alıyorum ?

memo333

#27
Alıntı yapılan: erolcalisgan - 02 Kasım 2012, 17:09:23
merhaba,

aşağıdaki işlemlerden sonra coocox derleyicisinin boot driverını  mı kullanıyorsunuz ?

merhaba;

adım 4te Coocox'un startup dosyalarını yükledik. 9uncu adımdan sonra STnin dağıttığı donanım kütüphanelerini ekliyoruz.

YADA;

adım 4.5'ta yazdığım gibi Repository 5nci adımda Size bazı donanımsal kütüphaneler veriyor. Burada Peripheral.ST sekmesinin altındaki kütüphaneler ST tarafından dağıtılan kütüphaneler. Buradan ekleme yaparak adım 9 ve sonrasını bypass edebilirsiniz.


Aslında bu yöntem daha güvenilir ve pratik.




-----

2-Kod optimizasyonu fena değil. Fakat Keil hala bir adım önde, tabii 4000€ eder mi orasını bilemem  ;)

mesaj birleştirme:: 04 Kasım 2012, 09:24:37

Alıntı yapılan: muhittin_kaplan - 03 Kasım 2012, 19:18:23
ekleme
Assert Param Hatası verdiğinde proje ayarlarından USE_STDPERIPH_DRIVER eklenmesi gerekiyor

mesaj birleştirme:: 04 Kasım 2012, 01:58:57

-Wimplicit-function-declaration

Bu uyarıyı neden alıyorum ?

fonksiyon prototipini koydunuz mu?

mesaj birleştirme:: 04 Kasım 2012, 09:27:03

Klein Hocam bendeki startup dosyası... SystemInit() çağırıyor...

/**
  * @brief  This is the code that gets called when the processor first
  *         starts execution following a reset event. Only the absolutely
  *         necessary set is performed, after which the application
  *         supplied main() routine is called. 
  * @param  None
  * @retval None
  */
void Default_Reset_Handler(void)
{
  /* Initialize data and bss */
  unsigned long *pulSrc, *pulDest;

  /* Copy the data segment initializers from flash to SRAM */
  pulSrc = &_sidata;

  for(pulDest = &_sdata; pulDest < &_edata; )
  {
    *(pulDest++) = *(pulSrc++);
  }
  
  /* Zero fill the bss segment.  This is done with inline assembly since this
     will clear the value of pulDest if it is not kept in a register. */
  __asm("  ldr     r0, =_sbss\n"
        "  ldr     r1, =_ebss\n"
        "  mov     r2, #0\n"
        "  .thumb_func\n"
        "zero_loop:\n"
        "    cmp     r0, r1\n"
        "    it      lt\n"
        "    strlt   r2, [r0], #4\n"
        "    blt     zero_loop");
  
  /* Setup the microcontroller system. */
  SystemInit();
    
  /* Call the application's entry point.*/
  main();
}
Gömülü Linux Notları --> http://linuxedu.xyz/

muhittin_kaplan


memo333

Gömülü Linux Notları --> http://linuxedu.xyz/