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

 
 
> Выход из handler-mode в cortex-m3
Omnicake
сообщение May 11 2014, 08:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 12-01-14
Из: Омск
Пользователь №: 80 002



Здравствуйте, столкнулся с проблемой. Сделал обработку прерывания на системный таймер Systick, во время обработки прерывания производится изменения битов и в конце грузятся значения регистров LR и SP для другой подзадачи (тем самым реализовано переключение задач), однако при выходе на задачу процессор почему-то остается в handler-mode - то есть по сути не выходит из прерывания. Соответственно на последующие срабатывания прерывания от таймера процессор никак не реагирует. Прочитал, что для корректного переключения режимов, надо в регистр LR заносить специальное значение EXC_RETURN, однако как это сделать если в LR мне одновременно нужно занести и значение для переключения на задачу? Как быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
1113
сообщение May 11 2014, 10:28
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658



а вы уверены, что таймер считает, а не находится в выключенном состоянии из-за отладки или режима сна какого-нибудь?

Цитата(Omnicake @ May 11 2014, 13:22) *
Попробовал убрать загрузку указателя стэка - ничего не изменилось.

А есть ли в cortex-m3 аналог команды reti? Я поспрашивал у людей, говорят на других процессорах она помогает из прерывания выходить.
нет.
Цитата
Exception return
Exception return occurs when the processor is in Handler mode and executes one of the following instructions attempts to set the PC to an EXC_RETURN value:
an LDM or POP instruction that loads the PC
an LDR instruction with PC as the destination
a BX instruction using any register.
The processor saves an EXC_RETURN value to the LR on exception entry. The exception mechanism relies on this value to detect when the processor has completed an exception handler. Bits[31:4] of an EXC_RETURN value are 0xFFFFFFF. When the processor loads a value matching this pattern to the PC it detects that the operation is a not a normal branch operation and, instead, that the exception is complete. Therefore, it starts the exception return sequence. Bits[3:0] of the EXC_RETURN value indicate the required return stack and processor mode, as Table 2.17 shows.

http://infocenter.arm.com/help/index.jsp?t...a/Babefdjc.html


в связи с этим, что у вас в LR перед выполнением bx lr?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Omnicake   Выход из handler-mode в cortex-m3   May 11 2014, 08:01
- - 1113   разве режим - Handler или Thread - каким-либо обра...   May 11 2014, 08:08
- - Omnicake   Как мне казалось, handler-mode включается при обра...   May 11 2014, 08:19
- - 1113   приведите код настройки таймера и код обработчика   May 11 2014, 08:30
- - Omnicake   Инициализация таймера Код AREA HEAP, CODE, READONL...   May 11 2014, 08:48
- - 1113   инициализация и обработчик - правильные. но для пе...   May 11 2014, 08:58
- - Omnicake   Не помогло, на задаче он все также в handler-mode ...   May 11 2014, 09:05
- - 1113   предлагаю вам отладиться без переключения контекст...   May 11 2014, 09:13
- - Omnicake   Забыл кстати упомянуть, что компилируется все это ...   May 11 2014, 09:15
|- - 1113   Цитата(Omnicake @ May 11 2014, 12:15) Заб...   May 11 2014, 09:17
- - Omnicake   Попробовал убрать загрузку указателя стэка - ничег...   May 11 2014, 10:22
- - Omnicake   Таймер точно работает и генерирует прерывания, для...   May 11 2014, 10:31
|- - 1113   Цитата(Omnicake @ May 11 2014, 13:31) Тай...   May 11 2014, 11:00
- - Omnicake   Оно и происходит внутри прерывания, ведь scheduler...   May 11 2014, 11:41
- - 1113   имхо это не влияет. у вас оно равно 0 потому что п...   May 11 2014, 11:50
- - Golikov A.   А правильно я понимаю что LR служит для того чтобы...   May 11 2014, 13:42
|- - 1113   Цитата(Golikov A. @ May 11 2014, 16:42) А...   May 11 2014, 14:16
- - Golikov A.   а я вот доки почитал повнимательнее... если говор...   May 11 2014, 14:56
|- - 1113   Цитата(Golikov A. @ May 11 2014, 17:56) а...   May 11 2014, 15:18
- - Golikov A.   ЦитатаThis indicates which stack pointer correspon...   May 11 2014, 16:03
|- - 1113   Цитата(Golikov A. @ May 11 2014, 19:03) С...   May 11 2014, 16:10
- - Golikov A.   вот и я о том же думаю... но с другой стороны он ...   May 11 2014, 16:50
- - Omnicake   Перепробовал вчера такие варианты: 1) Запись в LR ...   May 12 2014, 02:32
- - Golikov A.   ЦитатаЗапись в LR или PC значения EXC_RETURN уводи...   May 12 2014, 04:47
- - Omnicake   Да, находился в Handler mode. Под "простым вы...   May 12 2014, 05:03
- - Omnicake   Цитатанадо попробовать 1. войти в прерывание, 2....   May 12 2014, 12:29
|- - Сергей Борщ   Цитата(Omnicake @ May 12 2014, 15:29) И у...   May 12 2014, 13:54
- - Omnicake   Используется MSP, число там лежит точно, так как в...   May 12 2014, 14:16
|- - adnega   Цитата(Omnicake @ May 12 2014, 18:16) Исп...   May 12 2014, 15:44
|- - Сергей Борщ   Цитата(Omnicake @ May 12 2014, 17:16) в с...   May 13 2014, 06:34
- - Omnicake   Видимо действительно у меня нет понимания. Я решаю...   May 12 2014, 16:17
|- - adnega   Цитата(Omnicake @ May 12 2014, 20:17) Вид...   May 12 2014, 17:03
|- - 1113   Цитата(Omnicake @ May 12 2014, 19:17) Про...   May 12 2014, 17:59
- - Golikov A.   1. PendSv - это просто особое прерывание, приорите...   May 12 2014, 17:56
- - Omnicake   Цитатавам надо сделать задачи со своими локальными...   May 13 2014, 02:10
- - Golikov A.   обращаемся к первоисточнику http://infocenter.arm...   May 13 2014, 04:44
- - Omnicake   1. Ну у меня и отображается активным MSP все это в...   May 13 2014, 05:34
- - Omnicake   ЦитатаВ LR заносится магическое число. Если вы наб...   May 13 2014, 06:37
|- - Сергей Борщ   Цитата(Omnicake @ May 13 2014, 09:37) он ...   May 13 2014, 07:43
- - Omnicake   Видимо это Keil uVision и делает: после того как я...   May 13 2014, 08:11
|- - Сергей Борщ   Цитата(Omnicake @ May 13 2014, 11:11) Одн...   May 13 2014, 11:47
- - 1113   Omnicake, ваше желание разобраться похвально, но т...   May 13 2014, 08:17
- - Omnicake   Хорошо. Спасибо.   May 13 2014, 08:26
- - Omnicake   Починил, правда, для меня, это шаманством осталось...   May 13 2014, 12:53


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:30
Рейтинг@Mail.ru


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