Gereksinimleriyle tam olarak uyumlu bir CPU'da çalışan bir işletim sistemimiz olduğunu varsayalım. Bu işletim sistemi kene tahrikli. Sistem kene kesintisi basitlik için bazı CPU IRQn pinlerine bağlı harici zamanlayıcıdan (periyodik mod) gelir.
IRQ pimleri, kesme önceliğine göre sıralanır. IRQ0 en yüksek önceliğe ve IRQn en düşük önceliğe sahiptir. Öncelik en az iki nedenden dolayı var. Birincisi, ikisi birlikte geldiğinde elbette, biri daha yüksek önceliğe sahipse seçilir. İkinci sebep şudur: Kesinti olduğunda, ilave kesmeler donanım tarafından devre dışı bırakılır. Kesmeler ISR etkin olduğunda (olası yuvalama kesintileri), yalnızca daha yüksek önceliğe sahip kesmeler oluşabilir. Ve bu konuda bazı sorularım var.
İlk sorum muhtemelen çok basit ve bunu kendi başıma cevaplayabilirim (belki), ancak güvenilir bir cevap okumak istiyorum.
- Zamanlayıcı kene önceliği nasıl seçilir? Sistemdeki en düşük kesme önceliği midir? *
İşte ikinci soru.
- Zamanlayıcı kene kesmesi tam olarak CPU başka kesmelere hizmet ederken ve daha fazla kesmeler devre dışı bırakılırsa gerçekleşirse?
Ve işte benim tarafımdan. Yukarıdaki durum ortaya çıkarsa (ikinci soruda), sistem onayını kaybetme şansı vardır. Büyük sorunlara neden olabilir mi?
* Zamanlayıcı kene önceliği sistemdeki en düşük kesme önceliği değilse, CPU ISR'de sistem kene kesintisinden daha düşük önceliğe sahip olduğunda ve daha fazla kesintiye neden olabilir ve potansiyel zamanlama için ihtiyaç duyduğumuz kullanıcı işleminin bir yerde depolanmasını sağlar. Yığın, sistem kene rutini bulamadık.
Her şeyin sisteme bağlı olabileceğini biliyorum, ancak bu duruma benzer herhangi bir tipik çözümle ilgileniyorum.
İngilizcem için üzgünüm.
How to choose timer tick priority?
Tamamen size ve ne inşa ettiğinize bağlı, özellikle de CPU kesintilerinden bahsediyorsanız (hangisi yüksek oranda sisteme bağlıdır) .. Tam olarak ne yapmaya çalışıyorsunuz? Ayrıca, farklı bir StackExchange sitesinde (StackOverflow gibi) daha iyi bir yanıt alabilirsiniz ..