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

 
 
> SAM7S + Keil + FreeRTOS прощу помощи
Goofy
сообщение Nov 25 2008, 11:54
Сообщение #1


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

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Впервые для себя портирую ОС.
Так как этой комбинации порта не прилагается, то с горем пополам собрал из имеющихся портов своё.

Код
static void prvSetupTimerInterrupt( void )
{
AT91PS_PITC pxPIT = AT91C_BASE_PITC;

        extern void ( vPortPreemptiveTick )( void );
    AT91F_AIC_ConfigureIt( AT91C_BASE_AIC, AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, portINT_LEVEL_SENSITIVE, ( void (*)(void) ) vPortPreemptiveTick );

    pxPIT->PITC_PIMR = portPIT_ENABLE | portPIT_INT_ENABLE | portPIT_COUNTER_VALUE;

    AT91F_AIC_EnableIt( AT91C_BASE_AIC, AT91C_ID_SYS );
}


Код
vPortPreemptiveTick
    portSAVE_CONTEXT        ; Save the context of the current task.

    LDR R0, =vTaskIncrementTick; Increment the tick count - this may wake a task.
    mov lr, pc
    BX R0
    LDR R0, =vTaskSwitchContext; Select the next task to execute.
    mov lr, pc
    BX R0

    LDR    R14, =AT91C_BASE_PITC; Clear the PIT interrupt
    LDR    R0, [R14, #PITC_PIVR ]

    LDR R14, =AT91C_BASE_AIC; Mark the End of Interrupt on the AIC
    STR    R14, [R14, #AIC_EOICR]

    portRESTORE_CONTEXT        ; Restore the context of the selected task.


Запуск приложения

Код
static void vHW( void *pvParameters )
{
    ( void ) pvParameters;

    for(;; )
    {
        var++;
    }
}

int main (void)
{
    xTaskCreate(vHW, "Hi", 512, NULL, tskIDLE_PRIORITY + 1, NULL );
    vTaskStartScheduler();
}


При запуске в симуляторе Tick вызывается как и следует, всё остальное время выполнение висит на IRQ_Handler. В IdleTask дабагер не видит следов.
Где искать проблему?
Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Nov 25 2008, 12:16
Сообщение #2


Гуру
******

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



Цитата(Goofy @ Nov 25 2008, 14:54) *
Где искать проблему?

В симуляторе, ИМХО. Можете посмотреть в AIC_IPR, кто это прерывание (якобы) держит.
Go to the top of the page
 
+Quote Post
Goofy
сообщение Nov 25 2008, 13:43
Сообщение #3


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

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Цитата(aaarrr @ Nov 25 2008, 19:16) *
В симуляторе, ИМХО. Можете посмотреть в AIC_IPR, кто это прерывание (якобы) держит.

В асмовский код я практически не вникал ( переносил его с IAR порта ) и пока что вообще мало вникал в низкоуровневый механизм ядра. Поэтому мало вериться что грешить в этом случае будет симулятор, ну это так, на уровне правды жизни smile.gif

Еденички AIC_IPR в мониторе AIC стоят на напротив:
Fast External Int
External Int 1
External Int 2
что вроде как галочками от юзера и определяется...
но от их перестановки ничего не меняется
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 25 2008, 13:48
Сообщение #4


Гуру
******

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



Цитата(Goofy @ Nov 25 2008, 16:43) *
Поэтому мало вериться что грешить в этом случае будет симулятор, ну это так, на уровне правды жизни smile.gif

Симулятор может и будет грешить, ибо его основная обязанность - симулировать ядро, а не периферию (как то контроллер прерываний, таймеры и прочую чепуху).

Цитата(Goofy @ Nov 25 2008, 16:43) *
Еденички AIC_IPR в мониторе AIC стоят на напротив:
Fast External Int
External Int 1
External Int 2

Угу. А что в AIC_IMR?
Go to the top of the page
 
+Quote Post
Goofy
сообщение Nov 25 2008, 14:08
Сообщение #5


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

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Цитата(aaarrr @ Nov 25 2008, 20:48) *
Симулятор может и будет грешить, ибо его основная обязанность - симулировать ядро, а не периферию (как то контроллер прерываний, таймеры и прочую чепуху).
Угу. А что в AIC_IMR?


0x00000002
От SYSIRQ еденичка
как и должно быть, вроде как
Go to the top of the page
 
+Quote Post



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

 


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


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