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

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





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



Лихим - не лихим, но... для LPC2xxx FreeRTOS есть, периферию я пока не трогаю, кое-каких результатов добился (планировщик запускает первую задачу, приостановить ее можно), проблема сейчас в генерации прерываний по таймеру. Читал User Manual LPC2888. Не очень понял с какого startup'а Вы мне советуете начать разбираться.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 23 2010, 17:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (steelfantom @ Jul 23 2010, 18:10) *
Не очень понял с какого startup'а Вы мне советуете начать разбираться.

Сишного, естественно. Только на мой вопрос Вы не ответили, хотя теперь у меня больше информации для догадок - операционка ни причем? Просто отдельный (не системный тик) обработчик?



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
steelfantom
сообщение Jul 23 2010, 17:31
Сообщение #4





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



Цитата(zltigo @ Jul 24 2010, 00:12) *
Просто отдельный (не системный тик) обработчик?

От обработчика ничего не зависит - до него выполнение даже не доходит. Я же говорю - в книгах написано, что при поступлении irq-прерывания процессор переходит в IRQ режим и в program counter загружается 0x18(это как раз в cstartup), оттуда вызывается обработчик прерываний. У меня же в PC оказывается 0x58. А в IAR'овской демке для LPC2888 все работает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 23 2010, 18:31
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (steelfantom @ Jul 23 2010, 20:31) *
и в program counter загружается 0x18(это как раз в cstartup)

Вот и думайте, что у Вас в startup. В RTOS, там свой обработчик, а что Вы там накопмпастили из примера неведомо.
QUOTE
У меня же в PC оказывается 0x58.

Это уже в процессе исполнения неведомого кода. Переход, естественно, на 0x18. Там так или иначе должна быть разборка с контроллером прерывания из которого считывается адрес перехода на обработчик. Степени дибилизма писателей того, что запускается с 0х18 адреса бывают самые различные - каких только безумных оберток туда не вешают sad.gif, хотя там должна быть всего одна команда. Что там у Ввс - разбирайтесь, ибо сору-paste до добра точно не доводит.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 22:33
Рейтинг@Mail.ru


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