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

|
Цитата(AlexandrY @ Jun 6 2016, 15:38)  К линуксу никакого отношения не имеет. Если не думать что родство с линуксом определяется по наличию функций read и write в структурах драйверов.
Путаница с линуксом может возникнуть от того, что в MQX есть стек межзадачного взаимодействия портированный в частности и на линукс. Поэтому MQX очень легко связать с линуксом в мультикристальных SoC-ах POSIX это не линукс. Линукс - это полноценная ось, в которой не только posix, но и куча всякого разного. то есть то, что сейчас модно называть экосистемой (+ куча народа, который знает эту экосистему). опять же синтетический таргет - то есть перенос кода с ПК. насколько я понимаю, в том же MQX TCP-шный стек уже за деньги? то есть, я хотел сказать, что если i.mx6, то смысл ставить на него переключалку задач имеет только для каких-то специфических приложений
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|