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

 
 
 
Reply to this topicStart new topic
> Для начинающих пользователей RTOS, Навеяно чтением многих posts в различных конференциях
yuri_t
сообщение Aug 23 2006, 19:49
Сообщение #1


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

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



- Не пытайтесь повысить быстродействие уже существующих RTOS
путем доработки их исходного кода. Код RTOS обычно небольшой
по размеру, но требует тщательной проверки на десятках разнообразных
задач. Не хватает быстродействия - тщательней конструируйте проект
( число и назначение задач, их приоритет, размер блоков для передачи
данных между задачами, etc.)

- Не пытайтесь придумывать свои синхронизационные примитивы. На практике
все задачи синхронизации можно успешно решить уже существующими
семафорами, очередями, etc.

- Не используйте malloc(), используйте fixed-sized blocks memory allocators.
Очень мало аппликаций, где malloc() действительно нужен (GUI).

- Тщательно планируйте число задач и их приоритеты, избегайте sharing
ресурсов между задачами самого высокого и самого низкого приоритетов.

- При обмене данными между задачами через очереди для повышения
быстродействия пересылайте данные блоками, а не байтами. Элементом
очереди при этом будет указатель на блок памяти, полученный от fixed-sized
blocks memory allocators.

- Избегайте использование синхронизационных функций RTOS с таймаутами.
Хорошо сконструированной системе очень редко нужны таймауты,
отличные от INFINITE. Длинные временные задержки можно получать вызовом
системных функций типа Sleep().

- Уменьшайте,насколько возможно, число прерываний в системе.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 23 2006, 20:44
Сообщение #2


Гуру
******

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



Цитата(yuri_t @ Aug 23 2006, 22:49) *
- Не пытайтесь повысить быстродействие уже существующих RTOS
...

Совершенно верно.
Цитата
- Не пытайтесь придумывать свои синхронизационные примитивы.
....

При условии, что "существующие" есть :-) и результат их работы позволяет удовлетворительно решить
поставленную задачу.
Цитата
- Не используйте malloc(), используйте fixed-sized blocks memory allocators.

Не совсем понял - это против использования менеджеров памяти вообще, или пусть будут,
но выделяют память солидными блоками, дабы не дефрагментировать "излишне"??
Менеджер памяти должен быть - ибо ее почти всегда не хватает :-( Ну а борьба с дефрагментацией - думать надо :-( при проектировании ....
Цитата
- Тщательно планируйте число задач и их приоритеты, избегайте sharing
ресурсов между задачами самого высокого и самого низкого приоритетов.

Само собой!
Цитата
- При обмене данными между задачами через очереди для повышения
быстродействия пересылайте данные блоками, а не байтами. Элементом
очереди при этом будет указатель на блок памяти, полученный от fixed-sized
blocks memory allocators.

Как вариант - да. Но опять от реализации зависит - приходилось очереди уже _сразу_ на указателях
на буфер из фиксированных блоков реализовавать, причем все на ASM c размерами степени двойки
и с расположением по красивым адресам - быстрее уже не сделать :-)
Цитата
- Избегайте использование синхронизационных функций RTOS с таймаутами.
Хорошо сконструированной системе очень редко нужны таймауты,
отличные от INFINITE.

Очень! зависит от реализации ядра и не всегда можно "хорошо сконструировать" систему ввиду того,
что далеко не все в руках творца, а определяется внешним миром.
Цитата
- Уменьшайте,насколько возможно, число прерываний в системе.

В качесте общей рекомендации типа "не плодить сущности" - да.


В общем это следует понимать, как настоятельные рекомендации по использованию Вашей системы и
"руководство к размышлению" перед использовании любой системы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
klen
сообщение Aug 23 2006, 21:03
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



- Не пытайтесь повысить быстродействие уже существующих RTOS путем доработки их исходного кода.
А почему не пытайтесь. Ноборот нада пытатся. Скорее всего не получится, зато после мучений неисправленная ОС у Вас станет ГОРАЗДО послушней. Ковырятся однозначно.


- Не пытайтесь придумывать свои синхронизационные примитивы. На практике
все задачи синхронизации можно успешно решить уже существующими
семафорами, очередями, etc.

Не всегда !!! По крайней мере один раз - сегодня и у меня нельзя было решить успешно тем что было (очереди). Можно было без очередей извращнутся но я не захотел.

Ну прям средневековый мрак - это нельзя, того не бери, на это не смотри.

Пока Вы не начнете КОВЫРЯТСЯ В ПОТРОХАХ не будет у Вас просветления и музы, даже если вам самую суперновую ОС дадут и мегапроцессор.

Напомню оду из поговорок - ХОШ ИЗОБРЕСТИ НОВОЕ, БУДЬ МИЛ ИЗУЧИ СТАРОЕ.
Go to the top of the page
 
+Quote Post
Doka
сообщение Aug 23 2006, 21:34
Сообщение #4


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(klen @ Aug 24 2006, 01:03) *
А почему не пытайтесь. Ноборот нада пытатся. Скорее всего не получится, зато после мучений неисправленная ОС у Вас станет ГОРАЗДО послушней. Ковырятся однозначно.
хм.. главное с водами не выплеснуть младенца :-/

Цитата(klen @ Aug 24 2006, 01:03) *
Пока Вы не начнете КОВЫРЯТСЯ В ПОТРОХАХ не будет у Вас просветления и музы, даже если вам самую суперновую ОС дадут и мегапроцессор.

Напомню оду из поговорок - ХОШ ИЗОБРЕСТИ НОВОЕ, БУДЬ МИЛ ИЗУЧИ СТАРОЕ.
напомню название топика - "Для начинающих пользователей RTOS"
вообще подобные лозунги напоминают советы из серии: "Настоящий эмбеддер должен в своей жизни сделать 3 вещи: .... "
а работать когда?.. вам хорошо - вы сейчас в отпуске..
рутина редко предоставляет время для подобных изысканий


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
dch
сообщение Aug 24 2006, 00:42
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



Сейчас RTOS достаточно много, пожтому модифицировать не имеет особенного смысла лудше потратить время на изучение новых

Сообщение отредактировал dch - Aug 24 2006, 00:44
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 24 2006, 03:46
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(yuri_t @ Aug 24 2006, 02:49) *
- Избегайте использование синхронизационных функций RTOS с таймаутами.
Хорошо сконструированной системе очень редко нужны таймауты,
отличные от INFINITE.

Это почему?

Цитата(yuri_t @ Aug 24 2006, 02:49) *
- Уменьшайте,насколько возможно, число прерываний в системе.

Это тоже скорее определяется целевой задачей - есть эн событий, которые нужно отслеживать, события поступают в систему путем прерываний. Т.ч. скока есть, стока и есть. smile.gif Лишние плодить, конечно, ни к чему, тут спору нет.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

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

 


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


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