реклама на сайте
подробности

 
 
> FIQ handler в микриумовском порте ucos под LPC, Че то я не понял.............
Velund
сообщение Apr 12 2006, 14:22
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Сидел, изучал порт под LPC... И наткнулся вот на этот кусочек...


/*
********************************************************************************
*************************
* IRQ ISR HANDLER
*
* Description : This function is called by OS_CPU_IRQ_ISR() to determine the source of the interrupt
* and process it accordingly.
*
* Arguments : none
********************************************************************************
*************************
*/

void OS_CPU_IRQ_ISR_Handler(void)
{
PFNCT pfnct;


#if 0
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
if (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
(*pfnct)(); /* Execute the ISR for the interrupting device */
}
#else
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
while (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
(*pfnct)(); /* Execute the ISR for the interrupting device */
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
}
#endif
}


/*
********************************************************************************
*************************
* FIQ ISR HANDLER
*
* Description : This function is called by OS_CPU_FIQ_ISR() to determine the source of the interrupt
* and process it accordingly.
*
* Arguments : none
********************************************************************************
*************************
*/
void OS_CPU_FIQ_ISR_Handler(void)
{
PFNCT pfnct;


#if 0
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
if (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
(*pfnct)(); /* Execute the ISR for the interrupting device */
}
#else
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
while (pfnct != (PFNCT)0) { /* Make sure we don't have a NULL pointer */
(*pfnct)(); /* Execute the ISR for the interrupting device */
pfnct = (PFNCT)VICVectAddr; /* Read the interrupt vector from the VIC */
}
#endif
}


Может уважаемые гуру скажут - я чего то не понял, или они для скорости сделали copy/paste не вдумываясь в "физический смысл"? ;-)

В мануале на порт скользко обойден вопрос FIQ, кстати.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Velund
сообщение Apr 12 2006, 18:39
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Я про другое... Про FIQ... Там вообще copy/paste с IRQ handler'а, похоже никто даже не вникал в отличия, а уж тем более не пытался запускать... ;-)
Go to the top of the page
 
+Quote Post
Romario
сообщение Apr 12 2006, 18:50
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



Цитата(Velund @ Apr 12 2006, 22:39) *
Я про другое... Про FIQ... Там вообще copy/paste с IRQ handler'а, похоже никто даже не вникал в отличия, а уж тем более не пытался запускать... ;-)


а, понял. ну так это логические функции. а обработка что fiq что isr прерывания одинакова.
а уж как ее обрамить, дело программистаsmile.gif

а насчет запуска. fiq я в укосе пользую, только из нее ничего не сигналится в ось поэтому и обрамлять
ее сервисами укоса считаю дело не нужным. соответственно по теме высказать больше нечегоsmile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016