Gömülü Sistemler - Koşullar

Program sayıcı

Program Sayacı, yürütülecek bir sonraki komutun adresini içeren 16 veya 32 bitlik bir kayıttır. Bir talimat her getirildiğinde bilgisayar otomatik olarak bir sonraki sıralı bellek konumuna yükselir. Dallanma, atlama ve kesme işlemleri, Program Sayacını bir sonraki sıralı konumdan farklı bir adresle yükler.

Açılışta sıfırlamanın etkinleştirilmesi, kayıt defterindeki tüm değerlerin kaybolmasına neden olacaktır. Bu, PC'nin (program sayacı) değerinin sıfırlandıktan sonra 0 olduğu ve CPU'yu 0000 ROM bellek konumundan ilk işlem kodunu almaya zorladığı anlamına gelir. Bu, yukarı kodun ilk baytını 0000 ROM konumuna yerleştirmemiz gerektiği anlamına gelir çünkü CPU ilk talimatı bulmayı bekliyor

Vektörü Sıfırla

Sıfırlama vektörünün önemi, işlemciyi aygıt yazılımının ilk talimatını içeren bellek adresine yönlendirmesidir. Sıfırlama Vektörü olmadan, işlemci uygulamaya nereden başlayacağını bilemezdi. Sıfırlamanın ardından işlemci, Program Sayacını (PC) önceden tanımlanmış bir bellek konumundan sıfırlama vektör değeri ile yükler. CPU08 mimarisinde bu, $ FFFE: $ FFFF konumundadır.

Sıfırlama vektörü gerekli olmadığında, geliştiriciler normalde bunu verilmiş olarak kabul eder ve son görüntüye programlama yapmazlar. Sonuç olarak, işlemci son üründe başlamaz. Hata ayıklama aşamasında meydana gelen yaygın bir hatadır.

Yığın İşaretçisi

Yığın RAM'de uygulanır ve buna erişmek için SP (Yığın İşaretçisi) yazmacı adı verilen bir CPU kaydı kullanılır. SP kaydı 8 bitlik bir kayıttır ve 00h ila FFh aralığındaki bellek adreslerini adresleyebilir. Başlangıçta, SP kaydı, 8051 tarafından yığın için kullanılan ilk konum olarak konum 08'i işaret etmek için 07 değerini içerir.

Bir CPU kaydının içeriği bir yığın içinde depolandığında, buna PUSH işlemi denir. Bir yığının içeriği bir CPU kaydında depolandığında, buna POP işlemi denir. Başka bir deyişle, kaydetmek için yığına bir kayıt gönderilir ve onu almak için yığından çıkarılır.

Sonsuz döngü

Sonsuz bir döngü veya sonsuz bir döngü, aşağıdaki nedenlerden dolayı bir döngüde sonsuz şekilde çalışan bir bilgisayar programındaki bir talimatlar dizisi olarak tanımlanabilir:

  • sonlandırma koşulu olmayan döngü.
  • asla karşılanamayacak bir sonlandırma koşuluna sahip döngü.
  • Döngünün yeniden başlamasına neden olan sonlandırma koşullu döngü.

Bu tür sonsuz döngüler normalde eski işletim sistemlerinin yanıt vermemesine neden olur, çünkü sonsuz döngü mevcut tüm işlemci süresini tüketir. Kullanıcı girişlerini bekleyen G / Ç işlemlerine "sonsuz döngüler" de denir. Bir bilgisayarın "donmasının" olası bir nedeni sonsuz döngüdür; diğer nedenler şunları içerirdeadlock ve access violations.

Gömülü sistemler, bir PC'den farklı olarak, bir uygulamadan asla "çıkmaz". Bir kesinti şeklinde bir olayın gerçekleşmesini bekleyen Sonsuz Döngü boyunca boşta kalırlar veyapre-scheduled task. Güçten tasarruf etmek için bazı işlemciler özelsleep veya wait modes Bir Sonsuz Döngüde boşta kalmak yerine, ancak bir zamanlayıcı veya bir Harici Kesmede bu moddan çıkacaklardır.

Kesmeler

Kesmeler, çoğunlukla programa bir olayın meydana geldiğini bildiren donanım mekanizmalarıdır. Herhangi bir zamanda meydana gelebilirler ve bu nedenle program akışıyla eşzamansızdırlar. İşlemci tarafından özel bir işlem gerektirirler ve nihayetinde karşılık gelen bir Kesme Hizmeti Rutini (ISR) tarafından işlenirler. Kesintiler hızlı bir şekilde ele alınmalıdır. Bir kesintiye çok fazla zaman ayırırsanız, başka bir kesintiyi kaçırabilirsiniz.

Küçük Endian Vs Big Endian

Sayılar her zaman aynı şekilde görüntülense de, aynı şekilde bellekte saklanmazlar. Big-Endian makineleri, en önemli veri baytını en düşük bellek adresinde depolar. Bir Big-Endian makinesi, 0x12345678'i -

ADD+0: 0x12 
ADD+1: 0x34 
ADD+2: 0x56 
ADD+3: 0x78

Little-Endian makineleri ise en az önemli veri baytını en düşük bellek adresinde depolar. Bir Little-Endian makinesi 0x12345678'i -

ADD+0: 0x78 
ADD+1: 0x56 
ADD+2: 0x34 
ADD+3: 0x12