SEGGER JLink Ultra+

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
25,192
Geçen hafta e-component ile satın aldığım JLink Ultra+ geldi. Aslında elimde klon Jlink var bir tane, fiyatı 100 TL iken almıştım, ama denemeye fırsat olmadı. Üzerinde çalıştığım Renesas RA6M2 işlemcinin üreticisinin önerdiği E2 emülatörü kullandım bugüne kadar.

IMG_20230909_111659.jpg


IMG_20230909_111719.jpg
 
Klonun genel olarak iş gördüğü belirtiliyor, ama ben hem SEGGER'in bütün yazılım ürünleri ile uyumlu olacağı, hem de çok daha hızlı çalışacağı beklentisi ile Ultra+ modelini aldım. Öncelikle, yanında gelen JTAG kablosunu, benim bağlayacağım karttaki emülatör konnektörü ile uyumlu hale getirdim.

IMG_20230909_111759.jpg


IMG_20230909_111933.jpg
 
Sonra şimdiye kadar kullandığım, eclipse bazlı e2_studio ile deneyip programın işlemciye yüklenmesi ve programın ilk satırındaki breakpoint'ta durması için geçen süreyi ölçtüm. Süre değişken, ama en az 15 saniye sürüyor, bazan çok daha uzun sürdüğü de oluyor. e2_studio bir Java programı, javanın o alışılageldik yavaşlığını ve herşeyin belirsiz bir zaman almasını görüyorsun. Sonra programa step yaptırınca, bir satır bazan yarım saniyede işliyor, bazan 2 saniyede işliyor.

Sonra da emülatör arabirim hızını doğrudan maksimum değer olan 50 MHz değerine getirdim. SEGGER'in kendi debugger'i olan Ozone yazılımının da linux sürümünü kurdum. Programın yüklenip ilk satırda durması 3 saniyenin altında bir zaman tutuyor. Program üzerinde adım adım gitme için ise zaman ölçümü yapmak mümkün değil, F10 tuşuna bastığın anda bir sonraki satırda oluyorsun. Sadece bu hız artışı bile çok zaman kazandıracak bana.
 
Ozone debugger'i doğrudan FreeRTOS işletim sistemine destek veriyor. Hangi task'lar çalışıyor, öncelikleri nedir, durumları nedir ve ne kadar stack kullanıyorlar görebiliyorsun.

1694249369685.png
 
Debugger ile her C satırına karşılık gelen assembly'yi de görmek mümkün. Öğrenmek için çok faydalı bir özellik. Mesela burada assembly olarak önce R0 registerine 1 yüklenerek usb_vbus_set fonksiyonu çağrılıyor.

1694249519546.png
 
Bunun dışında debugger'in kendi script dili var. Yapısı C ye çok benziyor. Her türlü işlemi otomatikleştirmek mümkün. Mesela böyle boot loader ile yüklenen programlarda, debugger hemen programı çipe yükleyip sonrasından çalıştırması mümkün değil, çünkü program çipin normal reset vektöründen çalışmaya başlamıyor. Farklı bir bellek adresine yükleniyor ve boot loader bu adrese jump ediyor. O yüzden program yüklendikten sonra stack pointer (SP) ve program counter (PC) registerlerine yükleme yapmak gerekiyor. Oluşturduğum debug projesine bakınca, SEGGER zaten bu senaryoyu öngörmüş ve tam olarak bu işi yapan bir script parçasını koymuş oraya. Benim sadece baştaki comment'leri kaldırmam yeterli oldu

Kod:
/*********************************************************************
*
*      AfterTargetDownload
*
* Function description
*   Event handler routine. Optional.
*   The default implementation initializes SP and PC to reset values.
*
**********************************************************************
*/
void AfterTargetDownload (void) {

  unsigned int SP;
  unsigned int PC;
  unsigned int VectorTableAddr;

  VectorTableAddr = Elf.GetBaseAddr();
  //
  // Set up initial stack pointer
  //
  if (VectorTableAddr != 0xFFFFFFFF) {
    SP = Target.ReadU32(VectorTableAddr);
    Target.SetReg("SP", SP);
  } else {
    Util.Error("Project file error: failed to set initial SP", 1);
  }
  //
  // Set up entry point PC
  //
  PC = Elf.GetEntryPointPC();

  if (PC != 0xFFFFFFFF) {
    Target.SetReg("PC", PC);
  } else if (VectorTableAddr != 0xFFFFFFFF) {
    PC = Target.ReadU32(VectorTableAddr + 4);
    Target.SetReg("PC", PC);
  } else {
    Util.Error("Project file error: failed to set entry point PC", 1);
  }
}
 
Hayırlı olsun. Peki klon olanla arasında ciddi hız farkı var mı?
 
Timur Hocam, clone JLink'e official firmware yukleyerek orijinal hale getirenler vardi. Siz daha once denediniz mi?


Not : Bu arada siz 100 Tl'ye almisim deyince huzunlendim. Simdi klonu dahi 1.500 TL'ye satiyorlar.
 
Klon ile arasında hız farkı var, ama e2_studio kadar kötü değil. Yalnız SEGGER'in yazılımları klonu hemen algılıyor. Şimdi algılayınca da adam istese bazı özellikleri devre dışı bırakabilir, yanlış çalışacak şekilde tanımlayabilir, veya başka tedbirler de alabilir. O yüzden orijinal olunca en azından SEGGER yazılımlarını eksiksiz ve sorunsuz kullanabilme olanağı elde etmiş oluyorsun.

Bir de RTT denen bir özellik var SEGGER'in. Bu özellik klonlarla da çalışıyor, ama bant genişliği anlamında çok büyük fark var. Ultra+ ile 2 MByte/s lik bir RTT bant genişliği elde etmiş oluyorsun, bunun da anlamı kod timing'ini neredeyse hiç değiştirmeyerek debug logging yapabilirsin. Bana çok lazım olan bir özellik bu.
 

Çevrimiçi personel

Forum istatistikleri

Konular
7,723
Mesajlar
128,554
Üyeler
3,118
Son üye
konce

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top