Ana içeriğe git
Konu: Pickit4 Programlayıcı kullanan var mı ? (100 Kez okunmuş)

Pickit4 Programlayıcı kullanan var mı ?

pickit4 programlayıcı alma gibi bir düşüncem var. picin tüm serileri ile calışabilirim. ona göre bir programlayıcı almak istiyorum. pickit4 en son cıkan versiyon bildiğim kadarıyla. fakat pickit3 ile pickit4 arasındaki farkı bir türlü anlamadım ikiside aynı işi yapıyormuş gibi geliyor.

@taydin  abi özellikle senden bir yorum bekliyorum. ICD ler var ama dünya pahalı hayatta alamam . benim alıpp alabileceğim en iyi şey pickit4 olur. eğer pikcit 3 ile pickit4 arasında da bir fark yoksa pek. pickit3 alacağım klonu 100 tl mi ne  pickit 4 ün klonuda yok. :D
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #1
Bende bir pickit3 var sorunsuz bir şekilde kullanıyorum. Ama PIC'te program geliştirmedim şimdiye kadar, sadece bana gönderilen kartın üzerindeki pic'i gene bana gönderilen hex dosya ile programlıyorum. O yüzden çok bir beklentim de yok programcıdan.
Elektrik sayacı döndürücüsü ...

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #2
Bende bir pickit3 var sorunsuz bir şekilde kullanıyorum. Ama PIC'te program geliştirmedim şimdiye kadar, sadece bana gönderilen kartın üzerindeki pic'i gene bana gönderilen hex dosya ile programlıyorum. O yüzden çok bir beklentim de yok programcıdan.

Bunun hakkında detaylı bir bilgide yok. pickit4 alacağım en sonunda neymiş diye kurcalayacağım. acaba debug desteği olan mikrodenetleyicilerde anlık debug işlemi gerçekleştirmek gibi bir özelliğimi var. cünkü direk MPLAB ile birlikte kullanılabiliyor diye okudum. oda yabancı kaynaklar.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #3
Benim gördüğüm kadarıyla sadece daha hızlı programlama sağlıyor. Debugger kullanmaya gelince, çok nadir durumlarda fayda sağlarlar. Birçok firmware gerçek zamanlı olarak çalışır. Debugger ile durdurup adım adım çalıştırdığında zaten doğru çalışamaz.

Mesela DSP kodu geliştirirken, seri porttan 22 µs de bir veri geliyor ve bunlar işlenip gereken çıktı üretiliyor. Debugger'i durdurduğun anda ne olacak? O seri portunda taşma meydana gelecek.

Firmware'lerde en etkili debug yöntemi, firmware gerçek zamanlı çalışırken, bir şekilde durum bilgisi göndermek. Mesela PIC firmware geliştiriyorsun, kullanılmayan UART portlarindan birisine sürekli olarak durum bilgisi gönderirsin. Sonra da bir dijital osiloskop veya lojik analizör ile bu durum bilgilerini toplarsın, problem oluştuğu anda da inceleme yaparsın. Bu bir nevi uçaklardaki kara kutu incelemesi gibidir.
Elektrik sayacı döndürücüsü ...

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #4
Debugger sadece MMU (memory management unit) olan işlemcilerde belli bir dereceye kadar fayda sağlar. Bu tip işlemcilerde, programlar işlemcinin sürekli gözetimi altında kontrollü olarak çalışırlar ve yanlış birşey yaptıklarında işlemci bunu anında algılar. Mesela linux'ta bir program yazdın ve bu program yanlış hafıza bölgesine birşey yazıyor. Linux anında bu durumu tespit eder ve programı sonlandırır.

Diyelim programı çalıştırıyorsun ve "page fault" hatası ile sonlanıyor. Hata nasıl oluyor anlamak için debugger altında çalıştırırsın. Hata  oluştuğu anda debugger programı durdurur ve bir "stack trace" alırsın. Buradan da programın çakılması noktasına nasıl geldiğini görürsün.

Elektrik sayacı döndürücüsü ...

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #5
Mesela şu programı düşünelim

Kod: [Seç]
#include <stdio.h>

void crash()
{
   int* p = 0;

   *p = 27;
}

void f1()
{
   crash();
}

void f2()
{
   crash();
}

int main()
{
   f1();
   f2();
}

Bunu derliyoruz ve çalıştırıyoruz:

Kod: [Seç]
[ta@bonsai ~]$ gcc -Wall a.c
[ta@bonsai ~]$
[ta@bonsai ~]$ ./a.out
Segmentation fault
[ta@bonsai ~]$

Program 0 adresine birşey yazmaya çalışıyor. Linux da bunu algılıyor ve program sonlandırıyor. Programın neresinde 0 yazıldı öğrenmek istiyoruz. O yüzden debugger altında çalıştırıyoruz

Kod: [Seç]
[ta@bonsai ~]$ gdb a.out 
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...(no debugging symbols found)...done.
(gdb) r
Starting program: /home/ta/a.out

Program received signal SIGSEGV, Segmentation fault.
0x0000555555554670 in crash ()

Evet, debugger altında programı çalıştırdık, gene aynı problem ortaya çıktı ve debugger programı durdurdu. Şimdi "stack trace" alıyoruz:

Kod: [Seç]
(gdb) bt
#0  0x0000555555554670 in crash ()
#1  0x0000555555554687 in f1 ()
#2  0x00005555555546a9 in main ()
(gdb)

Ve buradan anlıyoruz ki, crash isimli fonksiyon probleme sebep olmuş. Bu fonksiyonu f1 çağırmış, onu da main çağırmış. Olaylar zincirini görüp oradan programın hatasını çözümleyebiliyoruz.
Elektrik sayacı döndürücüsü ...

 

Ynt: Pickit4 Programlayıcı kullanan var mı ?

Yanıt #6
Abi Debug dediğim registerleri ve o anki değişken değerlerinin ne olduğunu görmek için kodu satır satır hareket ettirip. nerde yazılımsal hata olduğunu bulmak için. ikimiz aynı şeyimi söylüyoruz acaba ? çünkü benim yazdığım yazılımın hafızanın başka bir adresinde bir işlem yapması benim hatam değilmidir ?

Not : Yorumuzunu şimdi gördüm.
Mekatronik Teknikeri.
Elektrik-Elektronik Teknisyeni.