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

 
 
> scmRTOS + XMEGA, порт scmRTOS для XMEGA
quarter2
сообщение Jan 19 2011, 14:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Всем доброго времени суток!
Кто-нибудь запускал scmRTOS на XMEGA ?
У меня без проблем scmRTOS работает на atmega128.
Хочу развести плату под atXmega256, но нет уверенности, что scmRTOS сможет работать на этом кристале.
Пробую свои проекты с scmRTOS (работающие на atmega128) откомпилировать (IAR EWAVR 5.50) под Xmega256.
Пока что результаты отрицательные.

Сообщение отредактировал quarter2 - Jan 20 2011, 07:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SWD
сообщение Jan 24 2011, 07:15
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 25-12-10
Пользователь №: 61 862



Спасибо, я так и думал, осталось разобраться, как это сделать -). К концу недели должно прийти железо (ATAVRXPLAIN), на следующей неделе постараюсь на нем отладить …

В файле OS_Target_asm.s90 заботливо описаны RAMP регистры XMEGи но их сохранение в контексте не производится …, интересно, кто позаботился и зачем? -)

С вложенными приоритетными прерываниями пока вопрос открыт. Если я правильно понимаю, вложенные прерывания или не поддерживаются или не должны содержать вызовы системных функций? Очевидно, что системное прерывание должно быть самым низкоприоритетным. Если не прав, поправьте, пожалуйста.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jan 24 2011, 16:08
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(SWD @ Jan 24 2011, 09:15) *
В файле OS_Target_asm.s90 заботливо описаны RAMP регистры XMEGи но их сохранение в контексте не производится …, интересно, кто позаботился и зачем? -)
Они (в IAR-порте) сохраняются/восстанавливаются не в макросах save, а прямым текстом ниже, в коде функций.
Код
ContextSwitcher_ISR:
     save_SREG
     save_SP
     save_regs

  #if HAS_RAMPZ == 1
     in  r31,RAMPZ
     st  -Y,r31
  #endif
и так далее. В avr-gcc сохраняются в основных макросах save_context. Это всё «косметика», вохможно, позже сведу к единообразному виду.

Для avr-gcc исправления для mega256x я ужен проверил в железе и вбросил в ветку pre-v400. Для IAR ещё не проверял, вброшу позже.

Цитата(SWD @ Jan 24 2011, 09:15) *
С вложенными приоритетными прерываниями пока вопрос открыт. Если я правильно понимаю, вложенные прерывания или не поддерживаются или не должны содержать вызовы системных функций? Очевидно, что системное прерывание должно быть самым низкоприоритетным. Если не прав, поправьте, пожалуйста.
Вложенные прерывания и на обычных AVR могут быть, см class TNestedISRW в scmRTOS_TARGET_CFG.h

Системные вызовы имеют критические секции, котрые делаются через запрет всех прерываний битом I в SREG, так что наличие любых вложенных прерываний не страшно для их работы. Нужно внимательно просмотреть обёртки TISRW/TISRW_SS, возможно, для xmega ISR_Enter() тоже придётся делать с критической секцией, так как у Xmega бит I не сбрасывается при входе в прерывание.

Возможно, в сохраняемый контекст процесса также стоит включить тот регистр, в котором маски разрешённых уровенй прерывания. Собственно, у «более других» процессоров, бывает, прямо в статусном регистре сидит не один бит I, а несколько бит с уровнем приоритета процессора.
Пример.
Высокоприоритетный процесс. Настолько высоко, что при свой работе запрещает низкоприоритетные прерывания, шоб не мешались. Но если этот процесс засыпает по sleep/wait/..., то у пришедшего ему на смену менее приоритетного процесса те уровни прерываний должны бы быть и разрешены.
Просится при старте ОС разрешать все уровни прерываний, а уж там если кто-то что-то запретит, так оно вместе с ним будет из контекста восстанавливаться, а у оcтальных — по умолчанию. И лучше всего это сделать через контекст.
Я для Xmega ничего не писал и очень уж внимательно описание не читал, но такая мысль возникла.

Ах, да, ещё SYS_TIMER_CRIT_SECT() в OS_Target.h тоже на тему возможности вложенных прерываний без специальных на то разрешений. И это место надо под #ifdef пустить об Xmega-признак.
Надо всё внимательно просмотреть.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- quarter2   scmRTOS + XMEGA   Jan 19 2011, 14:45
- - ReAl   Пока туда не лазил. Точнее, по диагонали просмотре...   Jan 20 2011, 07:42
- - SWD   Пытаюсь запустить scmRTOS на ATxmega128A1. Вопросы...   Jan 20 2011, 11:43
- - ReAl   Я веду AVR/GCC порт и потихоньку подхватываю AVR/I...   Jan 20 2011, 16:20
- - SWD   В файле OS_Target_asm.s90 заботливо описаны все RA...   Jan 25 2011, 04:40
|- - ReAl   Цитата(SWD @ Jan 25 2011, 06:40) В файле ...   Jan 25 2011, 08:40
- - SWD   ЦитатаИ это место надо под #ifdef пустить об Xmega...   Jan 25 2011, 11:35
|- - ReAl   Цитата(SWD @ Jan 25 2011, 13:35) Может лу...   Jan 25 2011, 20:19
- - quarter2   Может быть вопрос немного не в тему, но не хочется...   Feb 8 2011, 15:52
|- - ReAl   Цитата(quarter2 @ Feb 8 2011, 17:52) Ведь...   Feb 8 2011, 22:06
|- - quarter2   Цитата(ReAl @ Feb 9 2011, 00:06) Зачем ??...   Feb 9 2011, 07:48
|- - Сергей Борщ   QUOTE (quarter2 @ Feb 9 2011, 09:48) проб...   Feb 9 2011, 08:34
|- - quarter2   Цитата(Сергей Борщ @ Feb 9 2011, 10:34) Н...   Feb 9 2011, 09:00
|- - Сергей Борщ   QUOTE (quarter2 @ Feb 9 2011, 11:00) Есть...   Feb 9 2011, 09:35
|- - quarter2   Цитата(Сергей Борщ @ Feb 9 2011, 11:35) В...   Feb 9 2011, 10:03
|- - Сергей Борщ   QUOTE (quarter2 @ Feb 9 2011, 12:03) Непр...   Feb 9 2011, 11:14
|- - quarter2   Цитата(Сергей Борщ @ Feb 9 2011, 13:14) Н...   Feb 9 2011, 11:47
- - SWD   Здравствуйте. scmRTOS работает на ATxmega128A1 (с...   Feb 28 2011, 07:48
|- - ReAl   Цитата(SWD @ Feb 28 2011, 09:48) Возникли...   Mar 1 2011, 08:16
- - SWD   Добавил сохранение в контекст RAMPD и RAMPX. Пробл...   Mar 1 2011, 07:37
- - quarter2   Вопрос к разработчикам scmRTOS: 1. почему исходник...   Apr 22 2011, 13:55
|- - ReAl   Цитата(quarter2 @ Apr 22 2011, 16:55) 1. ...   Apr 22 2011, 19:06
|- - _Артём_   Здраствуйте. Попробовал недавно scmRTOS - понравил...   Jan 16 2012, 23:57
- - ReAl   Ой-ой-ой... Мне самому xmega до сих пор как-то не ...   Feb 12 2012, 11:48
|- - _Артём_   Цитата(ReAl @ Feb 12 2012, 13:48) Ой-ой-о...   Feb 12 2012, 14:59
|- - ReAl   Цитата(_Артём_ @ Feb 12 2012, 16:59) Это ...   Feb 12 2012, 17:41
- - a9d   Стмка на порядок дешевле. И там есть свои вкусност...   Feb 12 2012, 15:52
|- - _Артём_   Цитата(a9d @ Feb 12 2012, 17:52) Стмка на...   Feb 12 2012, 16:25
- - a9d   stm8 настолько дешевые, что стоят почти как stm32....   Feb 12 2012, 17:04
|- - _Артём_   Цитата(a9d @ Feb 12 2012, 19:04) stm8 нас...   Feb 12 2012, 17:59
|- - ReAl   Цитата(a9d @ Feb 12 2012, 19:04) В ST кон...   Feb 12 2012, 18:19
- - a9d   Как раз по этому они и умные. Другие не догадалис...   Feb 12 2012, 18:28
- - Anatoly74   Что-то тема порта XMega давно не обсуждалась. Каки...   Mar 29 2012, 06:02
- - Сергей Борщ   QUOTE (Anatoly74 @ Mar 29 2012, 09:02) Уж...   Mar 29 2012, 07:14


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

 


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


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