- 論壇徽章:
- 0
|
大家好,最近在做項目的時候因為要在中斷里使用帶sleep的spi接口,所以只能把SPI通信的部分放到中斷下半部。所以用到了threaded irq,使用的函數(shù)是
- int request_threaded_irq(unsigned int irq, irq_handler_t handler,irq_handler_t thread_fn, unsigned long irqflags,const char *devname, void *dev_id);
復(fù)制代碼 這里handler和thread_fn我理解的是類似于之前上下部。
我的handler函數(shù)里沒有做操作,直接**thread_fn,然后在thread_fn里去做spi通信。我的spi接口要求中斷觸發(fā)250ms以內(nèi)必須去讀一次,這樣才能保證數(shù)據(jù)不丟失。
在測試代碼的時候發(fā)現(xiàn)了一個問題,我計算了進入handler到thread_fn發(fā)起的時間,發(fā)現(xiàn)這個時間很不穩(wěn)定,從幾十個微秒到幾百個微秒,這不符合我的項目預(yù)期。
想請教大家的是,我能用什么辦法保證線程中斷**的實時性。
謝謝大家!
|
|