|
RTOS, тупые вопросы |
|
|
|
Jun 3 2016, 12:47
|

Местный
  
Группа: Свой
Сообщений: 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. Где физически находятся все эти стеки, на которые указывают регистры?
Спасибо!
|
|
|
|
|
 |
Ответов
|
Jun 6 2016, 05:35
|

Местный
  
Группа: Свой
Сообщений: 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)  Есть и другие ухищрения при переключении контекста для уменьшения количества сохраняемых регистров. А можно парочку примеров?
|
|
|
|
|
Jun 6 2016, 12:19
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
Цитата(spectr @ Jun 6 2016, 08:35)  Не портирую, а пишу свой велосипед. Чисто из интереса и ради лулзов. посмотреть советую 1) scmrtos (сильно связана с данным форумом  2) uc-os там есть книжка, которую автор, наверно, писал, когда сам пытался разобраться. на мой взгляд слегка колхозно (не помню уже что и как, но такое впечатление осталось) - но все понятно. 3) freeRTOS - серьезный проект с кучей саппорта и т.д. еще есть всякие ecos, rtems у всего перечисленного ++ в том, что доступны исходники. --------- про MQX - не пользовал. к пропиентарным "осям" испытываю некое предубеждение - когда начнешь разбираться, выяснится, что за что-то нужно платить, лицензировать и т.д. тем более она под тяжелые процессоры (если не ошибаюсь под i.mx-ы), для которых тот же линукс есть...
|
|
|
|
|
Jun 6 2016, 12:38
|

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-ах
|
|
|
|
|
Jun 7 2016, 07:03
|

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

|
Цитата(AHTOXA @ Jun 7 2016, 09:59)  Всё понятно, "Пастернака не читал, но осуждаю". К вашему сведению, scmRTOS издавна поставляется с отличной документацией. ЗЫ. Вам хоть приплачивают за рекламу MQX? Или это вы добровольно?  А вы сколько на scmRTOS зарабатываете?  Цитата(dxp @ Jun 7 2016, 09:51)  Вау! Есть оказывается. Правда объемом со статью на гиктаймсе. Неудивительно что не заметил.
|
|
|
|
|
Jun 7 2016, 09:14
|

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

|
Цитата(dxp @ Jun 7 2016, 10:18)  Покажите статью на гиктаймсе объёмом в 140 страниц А4?
Раньше думал, вы хоть смотрели доку, раз такие смелые выводы делаете. Оказывается, вам это не надо - вам фантазии для этого достаточно. При этом открывшемся обстоятельстве остальные ваши выводы на любые темы вы обесценили сами. Ой извиняюсь. Не заметил кнопку "More Pages". Да и на кой читать всю эту доку. Грамматические ошибки исправлять? Или рецензировать? Со многим согласен, но многое ужасно запутано. Скажем слово 'порт' в разных смыслах без понятного контекста. Или слово 'объект', ну просто не перевариваемое. Причем тоже где-то 'объект', где-то 'элемент', где-то 'совокупность', где-то 'часть'. Нет строгости соблюдения терминологии. У неопытного крыша съедет. Нет, это я бы не рекомендовал.
|
|
|
|
|
Jun 7 2016, 09:30
|

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

|
QUOTE (AlexandrY @ Jun 7 2016, 15:14)  Да и на кой читать всю эту доку. Грамматические ошибки исправлять? Найдите хотя бы одну? QUOTE (AlexandrY @ Jun 7 2016, 15:14)  Скажем слово 'порт' в разных смыслах без понятного контекста. Или слово 'объект', ну просто не перевариваемое. Причем тоже где-то 'объект', где-то 'элемент', где-то 'совокупность', где-то 'часть'. Нет строгости соблюдения терминологии. "Порт" употребляется в обычном смысле для ПО и в контексте RTOS, тут всё однозначно. "Объект" употребляется преимущественно в контексте используемого ЯП С++, что тоже даёт однозначность. В остальном обычный русский язык, с терминологией обращение аккуратное. В начале даже приведён список используемых терминов и сокращений, дабы свести к минимуму непонятности. QUOTE (AlexandrY @ Jun 7 2016, 15:14)  У неопытного крыша съедет. Похоже, это и наблюдаем. QUOTE (AlexandrY @ Jun 7 2016, 15:14)  Нет, это я бы не рекомендовал. Как обычно в своём репертуаре: не читал, но не рекомендую. Не знакомы с вопросом - проходите мимо, не нужно шум поднимать по теме, о которой вы ничего не знаете, т.к. не дали себе труда хотя бы бегло ознакомиться с ней. Офтопить прекращаю. Замечу напоследок, что изучать новую тему как правило всегда легче на небольших и неперегруженных примерах и особенно когда имеется подробная документация.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
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        esaulenka Цитата(dxp @ Jun 7 2016, 12:30) Не знаком... Jun 7 2016, 16:02   yes Цитата(AlexandrY @ Jun 6 2016, 15:38) К л... Jun 7 2016, 07:12 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|