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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Уменьшение минимального кол-ва стека, TNKernel :-)
Alex B._
сообщение Mar 31 2007, 09:55
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



>> Существенное ограничение. Это затрудняет появление
>> портов операцинки на других МК, где имеется более
>> развитый, чем у ARM7, контроллер прерываний.

не затрудняет. В моем порте PIC24/dsPIC вложение явно разрешено. Только как правильно тут заметили - при активных прерываниях стека вам нужно будет очень много. Подтверждаю =(

Кстати, хороший контроллер прерываний (например как в PIC24, каждое прерывание физически на свой вектор, 7 пользовательских приоритетов) не всегда совместим с вытеснением: при возникновении прерывания стек автоматом сохраняется адрес возврата и часть SR (вход в обработчик прерывания - 5 тактов). Если в этот момент возникнет более приоритетное прерывание (в котором разрешено переключение контекста) будут кранты, так как счетчик вложенности инкрементировать некому.
Так что в следующей версии порта PIC24 прерывания с сервисами RTOS будут иметь только один фиксированный приоритет.
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 31 2007, 11:28
Сообщение #17


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Alex B._ @ Mar 31 2007, 12:55) *
не затрудняет.
[ skip ]
Так что в следующей версии порта PIC24 прерывания с сервисами RTOS будут иметь только один фиксированный приоритет.


Противоречишь сам себе. Если бы было без затруднений, то не пришлось бы отказываться от вложенных прерываний с сервисами.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Mar 31 2007, 11:48
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



>> Противоречишь сам себе. Если бы было без затруднений,
>> то не пришлось бы отказываться от вложенных прерываний
>> с сервисами.

Читай внимательнее. TNKernel - обычная вытесняющая RTOS с отличной реализацией. Портировать ее на другую архитектуру проблем нет.
Проблемы есть с совместимостью контроллеров с аппаратной вложенностью прерваний с вытеснением задач из вложенного прервания - с uCOS, например, будет то же самое.

Если бы все прерывания в PIC24 аппаратно запрещались до момента выполнения первой инструкции в обработчике прерывания - проблем бы не было, так как в этой архитектуре можно запретить прерывания одной инструкцией на нужное количество тактов
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 31 2007, 12:26
Сообщение #19


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Alex B._ @ Mar 31 2007, 14:48) *
Проблемы есть с совместимостью контроллеров с аппаратной вложенностью прерваний с вытеснением задач из вложенного прервания - с uCOS, например, будет то же самое.

Может мы о разном?
В uCOS-II вытеснение из любого уровня вложенного прерывания выполняется нормально, без крантов, проверено.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 31 2007, 16:32
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Господа, а не пойти ли вам в другую ветку ? Я серьезно. Бегло оглядел код порта ЮКОС под АРМ - вроде засада таже самая. Но может и нет - не важно. Кстати - никто не забыл, сколько ЮКОС стоит ? Надеюсь тут все законопослушны и купили её? А TNKernel - бесплатна, и при этом хороша. Господа, эта ветка про неконтролируемый расход стека в TNKernel при неудачном стечении обстоятельств. Как автор ветки - закрою нафик, от флуда. Давайте по делу. Пока что единственное чего я не услышал от Юрия - так это что проблема не надуманна - и в новых версиях исправления будут. Все остальное - ПЛИЗ - НЕ сюда
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Mar 31 2007, 19:02
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Дело в том, что ситуация, когда OS не может полностью войти в задачу, а уже вытесняется
прерыванием и это происходит постоянно, а не изредка, говорит о том, что OS работает очень близко к пределу своей производительности.
Эта ситуация нежелательна. Поэтому и в uCOS, и во многих других OS (коммерческих и
свободных) проблема, которую вычислил DASM, тоже присутствует. Ну просто никто не использовал OS на пределе...
Надо ли устранять проблему или просто уменьшить нагрузку на OS + увеличить стек ? Как я сейчас вижу, надо устранять - молодые люди любят выжимать из системы все и, наверное, они правы...


P.S To spf - Порт uCOS для ARM, кстати, не поддерживает вложенных прерываний. Там для отслеживания вложенности есть специальная переменная. Вступать в дискуссию на эту тему я не стану: хотите - верте, хотите - нет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 31 2007, 19:30
Сообщение #22


Гуру
******

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



Цитата(yuri_t @ Mar 31 2007, 18:02) *
Дело в том, что ситуация, когда OS не может полностью войти в задачу, а уже вытесняется
прерыванием, говорит о том что OS работает очень близко к пределу своей производительности.

Нагрузка на систему со сторны обработчика прерывания естественно увеличивает вероятность 'эффекта' и меру пожирания стека, но сам эффект принципиально не исчезает sad.gif и при слабой загрузке. В общем-то надо устранять, ибо никакими внешними организационными мерами 100% гарантии добиться не удастся sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 31 2007, 21:30
Сообщение #23


Гуру
******

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



Цитата(DASM @ Mar 31 2007, 15:32) *
Бегло оглядел код порта ЮКОС под АРМ - вроде засада таже самая.

Посмотрел - нет. Там везде такое:
Код
        LDMFD   SP!, {R4}        ;    Pop new task's CPSR
        MSR     SPSR_cxsf, R4
        LDMFD   SP!, {R0-R12,LR,PC}^;    Pop new task's context

cpsr одновременно с pc восстанавливается из spsr, соответственно никаких неуместных разрешений прерываний не образуется.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Mar 31 2007, 22:32
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Цитата
Посмотрел - нет. Там везде такое:

LDMFD SP!, {R4} ; Pop new task's CPSR
MSR SPSR_cxsf, R4
LDMFD SP!, {R0-R12,LR,PC}^; Pop new task's context


В uCOS это исправлено только в последних версиях, а в версии,
например, uCOS 2.76 проблема присутствует в полный рост.

Ноги у этой проблемы растут из кода (свободного), написанного
Michael Anburaj. Он использовался как основа для context switch как в
ранних версиях uCOS, так и в TNKernel. И Jean J. Labrosse, и я, наехали
на одни и те же грабли...

В uCOS это уже исправлено, в версии 2.4 TNKernel это будет исправлено.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 3 2007, 09:45
Сообщение #25


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(yuri_t @ Mar 31 2007, 09:30) *
По материалам дискуссии буду делать v.2.4. Туда же войдет исправление
бага в ф-ции tn_task_exit(), который нашел Alex_B.

А поддержка вложенности прерываний туда войдёт как вариант?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 3 2007, 10:11
Сообщение #26


Гуру
******

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



Цитата(IgorKossak @ Apr 3 2007, 08:45) *
А поддержка вложенности прерываний туда войдёт как вариант?

Я бы не стал - вложенные в приличной системе это уже в большей части отрыжка бессистемного писания. Практически при наличии у ARMов FIQ и использовании приличной операционной системы об использовании вложенных прерываний нужно ОЧЕНЬ крепко думать, прежде чем использовать. Если кому надо - пусть сам делает и заодно подумает а оно это надо такие навороты делать и цену которую платит за вложенность осознает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 3 2007, 15:16
Сообщение #27


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



zltigo, ну если цена высока, то может и не надо.
С другой стороны эту функциональность можно было бы добавить через условную компиляцию, кому как понадобится.
И в третьих Юрию самому виднее целесообразность этого шага и я бы не стал чуть что советовать всё делать самому, мало ли в какой степени мы все специалисты, а то уж больно смахивает на расхожую фразу: "Не нравится Windows (Linux, ...) - напиши себе лучше".

Прошу прощения у DASM за отклонение от темы.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 3 2007, 19:20
Сообщение #28


Гуру
******

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



Цитата(IgorKossak @ Apr 3 2007, 14:16) *
С другой стороны эту функциональность можно было бы добавить через условную компиляцию, кому как понадобится.

Против такого подхода возразить сложно smile.gif, разве только не провоцировать пользователей на потенциально туманное использование системы...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
spf
сообщение Apr 4 2007, 07:03
Сообщение #29


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(zltigo @ Apr 3 2007, 13:11) *
Я бы не стал - вложенные в приличной системе это уже в большей части отрыжка бессистемного писания.

Приличная -- с многократным запасом производительности?
А как же золотая середина ? wink.gif
Случаи бывают разные - http://electronix.ru/forum/index.php?showtopic=29678


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 4 2007, 09:22
Сообщение #30


Гуру
******

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



Цитата(spf @ Apr 4 2007, 06:03) *
Приличная -- с многократным запасом производительности?

"Запас по производительности" это даже не совсем характеристика системы.
В данном случае это система с малыми затратами на переключение задач.
По ссылке собственно случай и не описан. Только "хочу" что-бы каждое из восьми прерываний немедленно прерывало предыдущее. Вот такой "случай" и точка.


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

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

 


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


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