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

 
 
> scmRTOS v3.00 Первые непонятки., Порт для MSP430
shreck
сообщение Jan 23 2007, 12:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 24-06-06
Из: Томск
Пользователь №: 18 328



В этой версии оси появилось такое вообщем-то нужное средство как переключение стека во время выполнения isr на стек прерываний. Решил попробовать эту фичу. Объявил объект TISRW_SS в обработчике, залил в проц. На первый взгляд вроде бы все работает. Но... Посмотрел листинг обработчика и впал в некоторое недоумение. Перед переключением стека выполняется сохранение некоторых регистров в "старый" стек, чего в данном случае, насколько я понимаю, быть не должно. Ладно. Изменил макрос OS_INTERRUPT на __raw __interrupt. Сохранение регистров перед переключением стека соответственно исчезло, но программа работать перестала.

Вопрос к тем, кто глубоко копал эту ось. Описанное выше это нормально или это ошибка в коде или что-то еще? Может кто прокомментировать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jan 23 2007, 13:17
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(shreck @ Jan 23 2007, 11:39) *
В этой версии оси появилось такое вообщем-то нужное средство как переключение стека во время выполнения isr на стек прерываний. Решил попробовать эту фичу. Объявил объект TISRW_SS в обработчике, залил в проц. На первый взгляд вроде бы все работает. Но... Посмотрел листинг обработчика и впал в некоторое недоумение. Перед переключением стека выполняется сохранение некоторых регистров в "старый" стек, чего в данном случае, насколько я понимаю, быть не должно. Ладно. Изменил макрос OS_INTERRUPT на __raw __interrupt. Сохранение регистров перед переключением стека соответственно исчезло, но программа работать перестала.

Вопрос к тем, кто глубоко копал эту ось. Описанное выше это нормально или это ошибка в коде или что-то еще? Может кто прокомментировать?
Это нормально. Это небольшая плата за независимость от компилятора и от трюков с __raw и связанных с этим сложностей в версии 2.0


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
shreck
сообщение Jan 23 2007, 13:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 24-06-06
Из: Томск
Пользователь №: 18 328



[quote name='Сергей Борщ' date='Jan 23 2007, 17:17' post='200364']
[/quote]Это нормально. Это небольшая плата за независимость от компилятора и от трюков с __raw и связанных с этим сложностей в версии 2.0
[/quote]



Не понял. Нормально что? Сохранение регистров в стек пользовательского процесса перед переключением на стек прерывания при входе в isr? Так ведь переключение на стек прерывания и задуманно для того, чтобы не сохранять регистры в стек текущего процесса. Разве не так?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 20:07
Рейтинг@Mail.ru


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