2016-04-05 21 views
0

Çekirdek ISR yordamında gecikmeler sağlamak için kesinlikle uyku veya uyku hali kullanamadığımı veya böyle bir işlevi kullanamayacağımı biliyorum.
İçinde tanımlanmış belirli ISR'lere sahip bir çekirdek sürücüm var. ISR bloğundan birinde, milliseclerin belirli bir gecikme süresini eklemem gerekiyor. Diyelim: döngü için yukarıda bana 1000 usecs, yani 1 ms gecikme verecektirÇekirdek sürücüdeki gecikmeler nasıl kullanılır? ISR

{ 
//A 
for(i=0;i<1000;i++); 
//B 
} 

benim işlemci 1 Gbps'de yürütülüyor Diyelim:

{ 
//A 
//here I need sleep 
//B 
} 

Ben böyle bir şey kullanabilir?

+1

'udelay' ve' ndelay' işlevlerini uygular * meşgul bekletme * gecikmeleri, böylece bunları ISR'de kullanabilirsiniz. İlk fonksiyon için bekleme aralığı, diğer bir tanesi için nanosaniyelerde (1/1 000 000 000), mikrosaniyelerde (1/1 000 000) ölçülür. – Tsyvarev

+0

Evet Bunu daha sonra fark ettim. İşe yaradı. Teşekkürler. – mdsingh

cevap

-2

İşlevler udelay ve ndelay meşgul bekleyen gecikmeleri uygular, böylece bunları ISR'de kullanabilirsiniz. Tsyvarev'in önerdiği gibi.

+0

Bu cevabı reddeden ben değilim. Ve ayrıca bu aşağılama için nedenini merak ediyorum. – Tsyvarev

0

Bir kesme işleyicisi içinde uyumamalısınız. Ayrıca, bir kesme işleyicisi içinde uzun süre beklemeniz gerekir; Bu, tüm işlemlerin ve tüm diğer kesintilerin aynı CPU üzerinde engellenmesini sağlar.

Eğer sürücünün farklı zamanlarda iki şey yapması gerekiyorsa, ikinci şeyi yapmak için ikinci bir kesme veya zamanlayıcı kullanması gerekir.

0

Bir ISR'de kasıtlı bir gecikme yaşama nedenlerini duymak isterim. Genel olarak konuşmak gerekirse, hayır. Birine ihtiyacınız olduğunu düşünüyorsanız, muhtemelen kod tasarımınızı yeniden gözden geçirmeniz gerektiği anlamına gelir.

Mikroskopik gecikmeleri tanıtmak için kullanmış olduğum bir şey cpu_relax(). Bu işlev, aynı zamanda, bazı CPU mimarileri için yukarıda belirtilen udelay() ve ndelay()'u uygulamak için çekirdekte kullanılır. Linux çekirdeğinde bu işlevin nerede ve nasıl kullanıldığını görmenizi ve bir göz atmanızı tavsiye ederim. Bu sizin özel durumunuz için size bazı fikirler verebilir.

İlgili konular