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

 
 
> 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, 15:42
Сообщение #2


Знающий
****

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



Смешанные чувства какие то все же возникают. Это в BSP из AN1138 - все же микриумовский исходник...
Go to the top of the page
 
+Quote Post
Romario
сообщение Apr 12 2006, 17:10
Сообщение #3


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

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



Цитата(Velund @ Apr 12 2006, 19:42) *
Смешанные чувства какие то все же возникают. Это в BSP из AN1138 - все же микриумовский исходник...


какой то из этих вариантов не правильныйsmile.gif и вообще не рабочий.
на такую же проблему натыкался, по моему, Tolik в конфе ARM на сахаре.

вроде это..
http://www.caxapa.ru/echo/arm.html?id=49584

Сообщение отредактировал Romario - Apr 12 2006, 17:14
Go to the top of the page
 
+Quote Post



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

 


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


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