İki farklı STM32F103C8T6 Blue Pill de kod calışmıyor kitleniyor.

M_B

Aktif Üye
Katılım
16 Şubat 2023
Mesajlar
124
Merhabalar,

Elimde olan iki farklı STM32F103C8T6 Blue pill de birinde çalışan program diğerinde çalışmıyor.
Not: Uygulamada FreeRtos kullandım. Neden belirttin derseniz aynı uygulamayı Rtos kullanmadan loop lu yazınca
Calısmayan modulde program çalışıyor.
İki modul arasındaki fark ise gözle gördüğüm
PC13 ve PWR led lerin yerleri değişik. Diğerinin alt kısımda isimlendirme ve referans isimleri yok.



BluePill_Top.jpg


BluePill_bottom.jpg


Adım adım Debug yaptıgımda ise ( FreeRtos ta gidebildigim kadarıyla )

Kod:
     IMPORT  __main
     IMPORT  SystemInit
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP
burda BX R0 da kalıyor.

bu konu hakkındaki düşünceleriniz ?

Teşekkürler.
 
Forumlarda konusulsa da bugune kadar Cin mali bluepillerde Cakma STM tabir edilen ciplerin olumsuzluklari ile karsilasmadim.
Bir keresinde C8 yerine yanlislikta C6 gelmis ve farkinda olmadigim icin C8 icin yazdigim kodlar calismayinca baslik acip serzeniste bulunmustum.

Neyse;

Ilk aklima gelen C8 yerine C6 cip kullandiginiz oldu fakat her iki cipin uzerinde de C8 yaziyor.
Oncelikle bunun sahte baski oldugunu varsayip memory size'dan teyid edelim. Eger ciplerden birisi C6 ise Ram boyu kisa kalacagindan RTOS kendine memory ayirirken bosluga dusebilir. (C8 20K C6 10K)

Debug menuyu acip asagidaki adimlari izle.

1. View -> Memory Window - Memory1
2. View -> Memory Window - Memory1
3. Acilan Memory Window penceresinde adres kismina 0x20001FFC yazalim.
4. Memory windows icinde sag click yapip unsigned int secelim.

Bu adresten itibaren daha yuksek adreslerin icerdigi verilere bakalim.

0x00000000 yerine hangi adreste ???????? yaziyor onu tespit et. Aksam ben de gercek kart uzerinden teyid edeyim.

Yada elindeki calisan ciple ayni durumu mukayese et.

RTOS kullanman Ram boyutunda artisa neden olur. (Ozellikle stack alani vs tanimlarinda hoyratca davranilmis olabilir.)
 
Son düzenleme:
Forumlarda konusulsa da bugune kadar Cin mali bluepillerde Cakma STM tabir edilen ciplerin olumsuzluklari ile karsilasmadim.
Bir keresinde C8 yerine yanlislikta C6 gelmis ve farkinda olmadigim icin C8 icin yazdigim kodlar calismayinca baslik acip serzeniste bulunmustum.

Neyse;

Ilk aklima gelen C8 yerine C6 cip kullandiginiz oldu fakat her iki cipin uzerinde de C8 yaziyor.
Oncelikle bunun sahte baski oldugunu varsayip memory size'dan teyid edelim. Eger ciplerden birisi C6 ise Ram boyu kisa kalacagindan RTOS kendine memory ayirirken bosluga dusebilir. (C8 20K C6 10K)

Debug menuyu acip asagidaki adimlari izle.

1. View -> Memory Window - Memory1
2. View -> Memory Window - Memory1
3. Acilan Memory Window penceresinde adres kismina 0x20001FFC yazalim.
4. Memory windows icinde sag click yapip unsigned int secelim.

Bu adresten itibaren daha yuksek adreslerin icerdigi verilere bakalim.

0x00000000 yerine hangi adreste ???????? yaziyor onu tespit et. Aksam ben de gercek kart uzerinden teyid edeyim.

Yada elindeki calisan ciple ayni durumu mukayese et.

RTOS kullanman Ram boyutunda artisa neden olur. (Ozellikle stack alani vs tanimlarinda hoyratca davranilmis olabilir.)
Hocam dediklerinizi uyguladım bakalım ne cıkacak.
hata4.png


Hocam artı bir bilgi daha vereyim. Modulu St-link V3 gormuyor.
Elimdeki St-Link V2 goruyor.
 
Hocam Calışan kartta ise memory kısmı aşağıdaki gibi.
Calısan_Memory.png



Calışan modul son adresi: 0x20004FFC
Calışmayan modul son adresi: 0x20008004 bir geri.
Burdan ne cıkarmamız lazım.
 
Bu kadar ileri adreslere gitmesi imkansiz. Cok daha oncesinde soru isaretlerinin baslamasi lazimdi.
Yanimda STM karti yok. Eve gidince hemen bakip kontrol edeyim.

Aslinda aklimda yok ama sanki registerlerden birisi ciple ilgili bir bilgi tutuyordu. Ama emin olamadim. Yanlis ta hatirliyor olabilirim.
Yani yazilim bu register icerigini okuyup hangi cip uzerinde kostugunu anlayabiliyordu.
 
Option for target penceresinde debug basliginda use debugger secili degil mi? Use simulator secili olmamali.
 
10K icin 1024*10 = 10240 (D) = 0x2800 Buda demektir ki C6 da 0x200027FF den sonra ???? leri baslamasi lazim.
20K icin 1024*20 = 20480 (D) = 0x5000 Buda demektir ki C8 da 0x20004FFF den sonra ???? leri baslamasi lazim.

C6 icin son adres 0x200027FC
C8 icin son adres 0x20004FFC

Calisan karttaki kesin C8

Ama calismayan kartta 0x20007FXX adresi var ama burda kesin hata var. Sen 0x200027FC taraflarina bir bak. soru isaretleri orlarda olmasi lazim.
 
Bu kadar ileri adreslere gitmesi imkansiz. Cok daha oncesinde soru isaretlerinin baslamasi lazimdi.
Yanimda STM karti yok. Eve gidince hemen bakip kontrol edeyim.

Aslinda aklimda yok ama sanki registerlerden birisi ciple ilgili bir bilgi tutuyordu. Ama emin olamadim. Yanlis ta hatirliyor olabilirim.
Yani yazilim bu register icerigini okuyup hangi cip uzerinde kostugunu anlayabiliyordu.
Hocam siz oyle diyince biraz araştırdım
uint32_t *devID = (uint32_t *) (0xE0042000);

Calısan Chip ID:
calısan_Chip_ID.png



Calışmayan Chip ID:

Calısmayan_ID.png
 
ID kodu ile cipin ticari isminin eslestirildigi bir tablo ya da bitlerin anlami ile ilgili bir bilgi daha olmasi lazim.

Umarim bu UID ile ayni sey degildir.
 
10K icin 1024*10 = 10240 (D) = 0x2800 Buda demektir ki C6 da 0x200027FF den sonra ???? leri baslamasi lazim.
20K icin 1024*20 = 20480 (D) = 0x5000 Buda demektir ki C8 da 0x20004FFF den sonra ???? leri baslamasi lazim.

C6 icin son adres 0x200027FC
C8 icin son adres 0x20004FFC

Calisan karttaki kesin C8

Ama calismayan kartta 0x20007FXX adresi var ama burda kesin hata var. Sen 0x200027FC taraflarina bir bak. soru isaretleri orlarda olmasi lazim.
27FC_Adres kısmı.png
 
Mesela 0x200027FC icerigine 1 yaz. Bakalim 1 olarak kalacak mi? Ardindan da 0x20002800 da dene.

Su anki duruma gore calismayan cipin rami dehset buyuk. Ama olmaz oyle sey.
 
Forumlarda konusulsa da bugune kadar Cin mali bluepillerde Cakma STM tabir edilen ciplerin olumsuzluklari ile karsilasmadim.
Blue pill üzerine tecrübem az daha yeni kullanmaya başladım ve kullandığım iki kartta da sıkıntı vardı. İki farklı yerli satıcıdan PCB renkleri farklı 2 bluepillde de stlink v2 cubeide dubuggng çalışmadı, "stm device not found" gib bir hata veriyordu. Yine de Stm 32 programmer ile stlink v2 kullanarak attığım HEx kodları beklediğim gibi çalıştı.

Özdisandan satın aldığım f103c8 çipleri lehimlediğim zaman debuggng gerektiği gibi çalışıyordu. F103c8t6' özdisanda neden ucuz acaba.
 
Tamam tahmin ettigim gibi. Calismayan bluepill kartinda C6 cipin ustunu silip C8 basmislar.

Calisan kartta ayni adrese yazdiginda o degeri saklamasi lazim.

Ote yandan init asamasindaki stack boyutunu ve varsa RTOS init stack alanlarini kucultursen kodun cok yuksek stack kullanmayacaksa C6 da ayni kodu calistirabilirsin.

Tabiki C6 da C8 de olan bazi cevrebirimleri yok bunu da gozonunde bulundur.
 
Tamam tahmin ettigim gibi. Calismayan bluepill kartinda C6 cipin ustunu silip C8 basmislar.

Calisan kartta ayni adrese yazdiginda o degeri saklamasi lazim.

Ote yandan init asamasindaki stack boyutunu ve varsa RTOS init stack alanlarini kucultursen kodun cok yuksek stack kullanmayacaksa C6 da ayni kodu calistirabilirsin.

Tabiki C6 da C8 de olan bazi cevrebirimleri yok bunu da gozonunde bulundur.
Hocam yardım ve yol gösterme icin teşekkür ederim.
Microskopla baktığımda İki chip arasında görebildiğim fark 1 numara yı gösteren yuvarlak C8 de normal
ama C6 da ise daha derin.
Birde test için C8 icin yazdığım uygulamayı CubeMx ile C6 için yeniden yapılandırdım hafıza yetmedi. Buradan da anlıyoruz ki C6 olduğunu. Teslim aldığım firmaya bilgi vereceğim bakalım ne olacak.
Tekrar dan teşekkürler hocam.
 

Forum istatistikleri

Konular
6,570
Mesajlar
111,591
Üyeler
2,693
Son üye
korfez

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top