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

 
 
> RTOS, тупые вопросы
spectr
сообщение Jun 3 2016, 12:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Привет, друзья!

Вот изучаю как делают RTOS и имею ряд нубских вопросов:

1. Для чего каждая задача в ртосах оформляется в вечный цикл? Чтобы не быть завершенной и забытой "естественным путем"? А если задача больше не нужна, то ее надо прибивать самому с помощью какой-нибудь, условно говоря, os_task_kill(this_task)?
2. Конкретно под Cortex-M4. Как понять какие именно регистры сохранять, а какие - не сохранять при переключении контекста (не считая R0-R3, SP, LR, PC)?
3. Для начала достаточно ли будет делать только переключение контекста в PendSV_Handler шедулером или есть еще какие-либо тонкости?
4. Где физически находятся все эти стеки, на которые указывают регистры?

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
spectr
сообщение Jun 6 2016, 05:35
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437



Цитата(AlexandrY @ Jun 3 2016, 16:18) *
Не в каждой RTOS надо делать в задачах циклы.
В MQX RTOS когда задача доходит до конца ее RTOS стирает из системы без следа а заодно и все ресурсы которые задача захватила, и освобождает все объекты синхронизации захваченные задачей и не освобожденные ею.

Понятно, т.е. если задача не удаляется, то после завершения остается висеть в idle и шедулер ее в общем случае тупо пропускает при переключениях?

Цитата(AlexandrY @ Jun 3 2016, 16:18) *
Какие регистры сохранять решает компилятор на основании соглашения с производителем чипов. Для ARM есть такое соглашение которое соблюдают все производители компиляторов под ARM.

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



Цитата(yes @ Jun 3 2016, 16:22) *
2. в порте RTOS уже сделано. если собираетесь портировать, то вообще-то сохраняют все регистры - так как в общем случае переключение задачи асинхронно к процессу - то есть может произойти в любой момент, а вернуться нужно туда же в том же состоянии.
3. какая RTOS?

Не портирую, а пишу свой велосипед. Чисто из интереса и ради лулзов.



Цитата(AlexandrY @ Jun 3 2016, 18:14) *
Есть и другие ухищрения при переключении контекста для уменьшения количества сохраняемых регистров.

А можно парочку примеров?
Go to the top of the page
 
+Quote Post
yes
сообщение Jun 6 2016, 12:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(spectr @ Jun 6 2016, 08:35) *
Не портирую, а пишу свой велосипед. Чисто из интереса и ради лулзов.


посмотреть советую
1) scmrtos (сильно связана с данным форумом sm.gif
2) uc-os там есть книжка, которую автор, наверно, писал, когда сам пытался разобраться. на мой взгляд слегка колхозно (не помню уже что и как, но такое впечатление осталось) - но все понятно.
3) freeRTOS - серьезный проект с кучей саппорта и т.д.

еще есть всякие ecos, rtems
у всего перечисленного ++ в том, что доступны исходники.

---------

про MQX - не пользовал. к пропиентарным "осям" испытываю некое предубеждение - когда начнешь разбираться, выяснится, что за что-то нужно платить, лицензировать и т.д. тем более она под тяжелые процессоры (если не ошибаюсь под i.mx-ы), для которых тот же линукс есть...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 6 2016, 12:38
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(yes @ Jun 6 2016, 15:19) *
про MQX - не пользовал. к пропиентарным "осям" испытываю некое предубеждение - когда начнешь разбираться, выяснится, что за что-то нужно платить, лицензировать и т.д. тем более она под тяжелые процессоры (если не ошибаюсь под i.mx-ы), для которых тот же линукс есть...


Скорее так:

scmrtos - это не то что RTOS, а такой же велосипед как тут думает делать TC. А на велосипеды доки не бывает в принципе. Т.е. это не пример для изучения.

uC/OS это безусловно сила. Именно её и надо изучать OSестроителям за интерес.

freeRTOS деньги зарабатывает на том, что не дает бесплатно мануала, а продает его. Это очень некрасиво. Куча авторов кое-как и фрагментарно описывают FreeRTOS, но это все не то ради чего стоит копаться.

А вот если надо изучить RTOS и одновременно сделать Вещь, то MQX самое то.
MQX по движку аналогична uC/OS и freeRTOS.
К линуксу никакого отношения не имеет. Если не думать что родство с линуксом определяется по наличию функций read и write в структурах драйверов.

Путаница с линуксом может возникнуть от того, что в MQX есть стек межзадачного взаимодействия портированный в частности и на линукс.
Поэтому MQX очень легко связать с линуксом в мультикристальных SoC-ах
Go to the top of the page
 
+Quote Post
yes
сообщение Jun 7 2016, 07:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(AlexandrY @ Jun 6 2016, 15:38) *
К линуксу никакого отношения не имеет. Если не думать что родство с линуксом определяется по наличию функций read и write в структурах драйверов.

Путаница с линуксом может возникнуть от того, что в MQX есть стек межзадачного взаимодействия портированный в частности и на линукс.
Поэтому MQX очень легко связать с линуксом в мультикристальных SoC-ах


POSIX это не линукс. Линукс - это полноценная ось, в которой не только posix, но и куча всякого разного. то есть то, что сейчас модно называть экосистемой (+ куча народа, который знает эту экосистему). опять же синтетический таргет - то есть перенос кода с ПК.
насколько я понимаю, в том же MQX TCP-шный стек уже за деньги?

то есть, я хотел сказать, что если i.mx6, то смысл ставить на него переключалку задач имеет только для каких-то специфических приложений
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- spectr   RTOS, тупые вопросы   Jun 3 2016, 12:47
- - AlexandrY   Цитата(spectr @ Jun 3 2016, 15:47) Спасиб...   Jun 3 2016, 13:18
- - yes   1. необязательно. но есть некие упрощения (наприме...   Jun 3 2016, 13:22
|- - AlexandrY   Цитата(yes @ Jun 3 2016, 16:22) 2. в порт...   Jun 3 2016, 15:14
|- - AlexandrY   Цитата(spectr @ Jun 6 2016, 08:35) Эммм, ...   Jun 6 2016, 08:31
||- - spectr   Цитата(AlexandrY @ Jun 6 2016, 11:31) И г...   Jun 6 2016, 09:04
|- - yaghtn   Цитата(AlexandrY @ Jun 6 2016, 15:38) MQX...   Jun 7 2016, 05:51
|- - dxp   QUOTE (AlexandrY @ Jun 6 2016, 18:38) А н...   Jun 7 2016, 06:51
|- - AHTOXA   Цитата(AlexandrY @ Jun 6 2016, 17:38) scm...   Jun 7 2016, 06:59
||- - AlexandrY   Цитата(AHTOXA @ Jun 7 2016, 09:59) Всё по...   Jun 7 2016, 07:03
||- - dxp   QUOTE (AlexandrY @ Jun 7 2016, 13:03) Пра...   Jun 7 2016, 07:18
||- - AlexandrY   Цитата(dxp @ Jun 7 2016, 10:18) Покажите ...   Jun 7 2016, 09:14
||- - dxp   QUOTE (AlexandrY @ Jun 7 2016, 15:14) Да ...   Jun 7 2016, 09:30
||- - esaulenka   Цитата(dxp @ Jun 7 2016, 12:30) Не знаком...   Jun 7 2016, 16:02
- - ViKo   Что-то мне кажется, сохранять все регистры проще, ...   Jun 6 2016, 11:33
- - spectr   Вопрос по стеку задачи. У каждой задачи есть свой ...   Jun 6 2016, 12:05
|- - Valentine Loginov   Цитата(spectr @ Jun 6 2016, 15:05) Вопрос...   Jun 7 2016, 06:43
|- - Kabdim   Цитата(Valentine Loginov @ Jun 7 2016, 09...   Jun 7 2016, 12:45
- - spectr   Еще вопросы. Значит, написал вот такой код: main....   Jun 8 2016, 10:53
|- - AHTOXA   Цитата(spectr @ Jun 8 2016, 15:53) 3. Не ...   Jun 8 2016, 12:16
|- - spectr   Цитата(AHTOXA @ Jun 8 2016, 15:16) Там же...   Jun 8 2016, 12:26
|- - AlexandrY   Цитата(spectr @ Jun 8 2016, 15:26) Там на...   Jun 8 2016, 12:34
|- - spectr   Цитата(AlexandrY @ Jun 8 2016, 15:34) Гов...   Jun 8 2016, 13:48
|- - demiurg_spb   Цитата(AlexandrY @ Jun 8 2016, 15:34) Отк...   Jun 10 2016, 13:37
- - spectr   Вопрос по прерыванию PendSV_Handler. В нем выполн...   Jun 10 2016, 11:50
|- - AlexandrY   Цитата(spectr @ Jun 10 2016, 14:50) Если ...   Jun 10 2016, 12:16
- - spectr   Правильно ли я понимаю, что PendSV используется та...   Jun 10 2016, 12:38


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

 


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


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