Devre içi hata ayıklayıcı ve devre içi emülatör arasındaki fonksiyonel fark nedir?


12

Devre içi emülatörler (kısaltılmış ICE) harika hata ayıklama özellikleriyle övünür ve ayrıca yüksek fiyat etiketlerine sahiptir.

Devre içi hata ayıklayıcılar (kısaltılmış ICD), bir ICE'nin yapabileceği şeylerin çoğunu yapabilir, ancak genellikle çok daha az maliyetlidir.

Gün içinde, ICE'lerin problem çipini soketten çıkartacağını ve bir emülatör kablosuyla değiştireceğini biliyorum, ancak modern QFN, BGA ve kırılgan TQFP paketleriyle, çoğu ürün kendilerini "ICE" hata ayıklayıcıları olarak adlandırıyor gibi görünüyor hata ayıklama başlığına bir ICD ile aynı şekilde bağlanır.

İşte adında "ICE" kullanan ürünlere bazı örnekler:

Birkaç tedarikçiden JTAG 'ICE "ürünleri de var. Bunları fiziksel olarak devre dışı olmadıkları için indirgemediğimi, ancak gerçek bir ICE olarak işlev görmezlerse onları indireceğim.

Ne tür geliştirme görevlerinde bir ICE'ye ihtiyacım var ve ne zaman bir ICD'den memnun olmam gerekir? LED'lerimi ve printf () ifadelerini kullanmamayı ve kodumu gözden geçirmeyi istediğimi varsayalım.

Bir ICE ile çözdüğünüz ancak onsuz (gerçekçi olarak) çözemediğiniz bazı sorun örnekleri nelerdir?

Yanıtlar:


19

Hedef çipin yerini bir ICE (In-Circuit Emulator) alır. Devrenin geri kalanına gerçek çip gibi davranır, ancak içeride her türlü kancaya sahiptir, böylece neler olduğunu görebilir, kırılma noktaları ayarlayabilir, yeni kod yükleyebilir, izleri kapabilirsiniz, vb. ICD (In-Circuit Debugger) kullanır bu amaç için hedef çipe özel hata ayıklama donanımı eklendi ve size ICE benzeri bir yetenek vermeye çalışıyor. Ne yazık ki, pazarlama insanları dahil oldular ve bu uzun süredir devam eden terimleri sizi, ürünlerinin bir sonrakinden daha iyi olduğunu düşünmeye kandırmak için yeniden tanımlamaya çalıştılar. Microchip'in RealIce'i bunun özellikle berbat bir örneğidir. Gerçek, ama olmayan tek şey bir ICE.

Gerçek bir ICE (RealIce değil) en iyi devre içi hata ayıklama ortamıdır. Ne yazık ki, ICE'de kullanım için hedef çipin özel bir bağlanma versiyonunu yapmanın yüksek maliyeti ve hızların o kadar yüksek olması, çipten bir şey almanın sorunlu olması nedeniyle bunlar neredeyse ortadan kalktı. Başka bir sorun, bir ICE'nin hedef çipin bir sokette olmasını veya ICE'nin hatlarına bağlanabilmesi için hedef çipin yerine monte edilmiş özel bir adaptör gerektirmesidir.

Bugün ICD'lerle takılmışız. Neyse ki bir ICE ile yapmak istediğiniz şeylerin çoğunu yapıyorlar. Kodun hedef çip gibi olmaya çalışan bir şey değil, gerçek hedef çip üzerinde çalışmasının bir avantajı var . Dezavantajı, yonga üzerindeki kaynaklara ihtiyaç duymalarıdır, bu nedenle kodunuz ve donanımınız için bir ICE gibi tamamen şeffaf değildir. ICD'nin, genellikle birden fazla rolü olabilen hata ayıklama hatlarına erişmesi gerekir. Hata ayıklama sırasında bu iğneleri diğer rollerde kullanamazsınız. Her parçaya yerleştirilen hata ayıklama devresi miktarı, toplamın küçük bir kısmına kadar tutulmalıdır, aksi takdirde maliyet çok yüksek olacaktır, bu nedenle özelliklerden taviz verilmelidir. Her çip üzerine eklemek için çok pahalı olacak güzel bir özellik, gerçek izleme yeteneğidir, çünkü büyük bir RAM tamponu gerektirir.

Her sorun sonunda çeşitli araçlarla çözülebilir. Çözüp çözemeyeceğiniz değil, ne kadar ve ne kadar çaba gerektirdiği. Düzenli olarak ICE'leri (Microchip ICE-2000 ve ICE-4000) kullanırken, izleme özelliğini sık kullanmadım, ancak diğer araçları yaptığımda önemli ölçüde daha maliyetli olurdu. Bazen bir değişkenin aniden yanlış değere sahip olduğu bir hata vardır. Kod adım adım ve her şey yolunda ve değişkeni manipüle eden rutin her şeyi doğru yapıyor gibi görünüyor, ama sonunda çalıştırdığınızda işler bok ve o değişkeni çöpe. Nedeni, kötü bir işaretçi, arabellek taşması, yığın uyuşmazlığı veya benzeri başka bir kod. Bir ICE ile değiştirilen değişken üzerinde bir kesme noktası ayarlayabilirsiniz,

Çoğu zaman bir ICD yeterince başarılı olacaktır. Özellikle büyük yongalarda, hata ayıklamaya adanmış çift pimler o kadar da sorun değil. Bugünlerde RealIce'i hata ayıklamak için kullanıyorum. ICD2'den çok daha kararlı ve daha az lapa lapa. Onunla yaşamayı öğreniyorsun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.