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

 
 
> FreeRTOS на LPC2888, Проблема с прерываниями
steelfantom
сообщение Jul 23 2010, 13:30
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 23-07-10
Пользователь №: 58 574



Пытаюсь запустить FreeRTOS на LPC2888. Из GettingStarted для EWARM взял код генерирующий прерывания по таймеру. Как только разрешаю прерывания управление передается по адресу 0x58 (я так понимаю при переходе процессора в IRQ режим управление должно сразу передаваться на 0x18 - туда не попадает), тем не менее процессор в режиме IRQ. Посмотрел map-файл - непонятно откуда генерируется код, находящийся с 0x58 по 0x80. Может кто-нибудь подсказать в чем тут дело?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
steelfantom
сообщение Jul 23 2010, 18:49
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 23-07-10
Пользователь №: 58 574



Код
MODULE  ?cstartup
       ;; Forward declaration of sections.
        SECTION IRQ_STACK:DATA:NOROOT(3)
        SECTION ABT_STACK:DATA:NOROOT(3)
        SECTION SVC_STACK:DATA:NOROOT(3)
        SECTION UND_STACK:DATA:NOROOT(3)
        SECTION FIQ_STACK:DATA:NOROOT(3)
        SECTION CSTACK:DATA:NOROOT(3)
        SECTION .intvec:CODE:NOROOT(2)

        PUBLIC  __vector
        PUBLIC  __vector_0x14
        PUBLIC  __iar_program_start
    EXTERN    vPortYieldProcessor

        ARM
__vector:
        ldr   pc,[pc,#+24]             ;; Reset
        ldr   pc,[pc,#+24]             ;; Undefined instructions
        ldr   pc,[pc,#+24]             ;; Software interrupt (SWI/SVC)
        ldr   pc,[pc,#+24]             ;; Prefetch abort
        ldr   pc,[pc,#+24]             ;; Data abort
__vector_0x14
        DC32  0                            ;; RESERVED
        ldr   pc,[pc,#+24]             ;; IRQ
        ldr   pc,[pc,#+24]             ;; FIQ

        DC32  __iar_program_start      ;; Reset
        DC32  undef_handler               ;; Undefined instructions
        DC32  swi_handler                   ;; Software interrupt (SWI/SVC)
        DC32  prefetch_handler            ;; Prefetch abort
        DC32  data_handler                 ;; Data abort
        DC32  0                                  ;; RESERVED
        DC32  irq_handler                    ;; IRQ
        DC32  fiq_handler                    ;; FIQ

undef_handler
    b         undef_handler

swi_handler
    b vPortYieldProcessor
    
prefetch_handler
    b         prefetch_handler

data_handler
    b         data_handler

irq_handler
    b         irq_handler

fiq_handler
    b         fiq_handler

Пробовал менять так, по логике должно произойти зацикливание на irq_handler, однако в PC каким-то образом все равно оказывается 0x58. Отсюда я и сделал вывод, что обработчик не при чем, и в 0x18 не попадает вообще.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th August 2025 - 03:26
Рейтинг@Mail.ru


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