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

 
 
> Переключение контекста в FreeRTOS, возникает data abort
xelax
сообщение Dec 7 2007, 11:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



sam7x gcc

Собственно проблема в следующем. При сохраннении контекста в прерывании от PIT таймера (на нём переключение между задачами висит в preemptive mode) происходит data abort. 07.gif Как такое может быть?????

При чём смотрю стек вызовов в arm-elf-gdb(Eclipse) вижу следующую картину


data abort
vPreemptiveTick
vPreemptiveTick

То есть либо vPreemptiveTick два раза вызывалось, либо глюк gdb.

Вообще очень непонятный случай. Как такое может быть? И как с этим бороться?

Код
void vPreemptiveTick( void ) __attribute__((naked));
    void vPreemptiveTick( void )
    {
        /* Save the context of the current task. */
        portSAVE_CONTEXT();   <----- происходит data abort            

        /* Increment the tick count - this may wake a task. */
        vTaskIncrementTick();

        /* Find the highest priority task that is ready to run. */
        vTaskSwitchContext();
        
        /* wdt firing verification */
        halWdtHandler();
        
        /* End the interrupt in the AIC. */
        AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR;;
        
        portRESTORE_CONTEXT();
    }
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение Dec 7 2007, 13:47
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



а crt.s ппокажи. мож забыл перевести из режима SYSTEM в SUPERVISOR перед вызовом main. шедуллер нада запускать из под супервизора.
Go to the top of the page
 
+Quote Post



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

 


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


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