Advisory[1234] * Corrupted fast interrupt shadow registers

Başlatan LukeSkywalker, 04 Eylül 2011, 12:15:10

LukeSkywalker

HI-TECH PIC-C18 ile derleme yaparken yukarıdaki mesajı alıyorum her zaman. Sebebi nedir?
Teşekkürler...

LukeSkywalker


M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

LukeSkywalker

versiyon tam olarak: "HI-TECH PICC-18 STD COMPILER (Microchip PIC micro) candidate build 2908 V9.51PL3"
O linki konu açmadan önce inceledim fakat bir şey çıkaramadım...


serdararikan

bu bir hata değil.sadece bir tavsiye.18F serisinde kesme önceliği olduğu için kullandığın kesmelerin öncelik durumunu belirlemeni tavsiye ediyor.

LukeSkywalker

Kesme kullanmadığım zamanlarda da veriyor bu tavsiyeyi...

serdararikan


Tagli

Hi-Tech C hiç bilmiyorum ama "Corrupted fast interrupt shadow registers" ifadesinin aklımda çağrıştırdıklarını anlatırsam belki bir faydası olur.

PIC18'de kesmeye girerken veya eğer tercih edilirse call komutları sırasında, W, STATUS ve BSR register'ları shadow (gölge) register adı verilen ve kullanıcının erişemeyeceği bir alanda otomatik olarak yedekleniyor. Kesmeden veya normal bir fonksiyondan dönerken ise eski yerlerine yazılıyor, tabi özellikle belirtilirse.

Sorun şu ki bu shadow register'ların derinliği 1, yani tek seferlik bir saklama yapıyorlar. Örneğin önce düşük öncelikli bir kesme, sonra yüksek öncelikli bir kesme gelirse, düşük öncelikli kesmenin saklamış olduğu shadow register'lar yüksek öncelikli kesmenin aldığı yedekler tarafından bozulmuş oluyor. Yukarıda geçen corrupted kelimesi de bunu ifade ediyor.

C18 bu sebeple sadece yüksek öncelikli kesmelerde bu 3 register'ı donanımsal olarak yedekliyor. Düşük öncelikli kesmelerde ise kendisi yazılımsal olarak yedeklerini alıp gerekli işlemleri yapıyor.

Kullandığın derleyici, belki de iç içe çağrılan fonksiyonlarda bu özelliği kullanmak istediğini belirlemiş olabilir. Örneğin A() ve B() gibi iki fonksiyon varsa, A'nın içinde B çağrılıyorsa ve ikisinin de yedekleme işlemleri için shadow register kullanmasını söylemişsen (bu yapılabilir mi bilmiyorum ama belki derleyicinin desteği vardır), böyle bir uyarı alman mümkün olabilir.

Gerçi uyarıda interrupt kelimesinin geçmesi, olayın kesme ile ilgili olduğunu düşündürüyor.
Gökçe Tağlıoğlu

LukeSkywalker


LukeSkywalker

Sadece void main(void){}
yazdığımda bile veriyor bu uyarıyı. Tam olarak şöyle hatta

Advisory[1233] Employing 18F2550 errata work-arounds:
Advisory[1234]  * Corrupted fast interrupt shadow registers



LukeSkywalker

Şimdi bir ilginçlik daha tesbit ettim. MPLAB 8.76 kullanıyorum. PIC_C18 9.51 kurulu fakat 18LF serisi picler ile çalışma yapamıyorum. Yani derlemiyor. Şöyle bir hata veriyor;
"No valid installed HI-TECH compiler drivers"
"Uyumlu HI-TECH compiler  sürücüsü bulunamıyor"

Tagli

Bu satıra dikkat etmek gerekiyormuş.
"Advisory[1233] Employing 18F2550 errata work-arounds:"

Olay aslında bir 18F2550'nin A3 revizyonunda bulunan bir silikon hatasını düzeltmek için uydurulmuş bir çözümün uygulandığını programcıya hatırlatıyor.

Söz konusu sorun sebebiyle, bazı durumlarda donanımsal shadow register saklaması başarısız oluyor. Bu sebeple, derleyicinin, saklama işleminin başarısız olabileceğini göz önünde bulundurarak, yazılımsal yedekleme yapması gerekiyor. Bu da fazladan bir kaç cycle zaman kaybı demek.

Ayrıntılı bilgi bu dokümanda. PDF'te "Shadow" kelimesini aratın.

Kullanılan PIC'in silikon revizyon numarası A3 değilse bu işleme gerek olmayacaktır. Ama bu durumda, derleyicinin bu özel davranışını uygulaması nasıl engellenir onu bilmiyorum.

Gökçe Tağlıoğlu

LukeSkywalker

Böyle durumlarda "sıkıntı derin" deniliyor zannedersem...

LukeSkywalker

Başka başka sıkıntılarla da karşılaşmıyorum değil. Az önce derleyici 18LF serisini tanımadığı için hi-tech pic-c18 9.66 indirdim. Kurdum diğerini kaldırıp, bu seferde eski projelerimi açamıyorum. Hay böyle işin..