-
- Зачем прыгать ? Goto - зло. Все можно реализовать условиями и циклами. Для вызова другой задачи есть PT_SPAWN. Есть расширения от Craig Graham (засыпание/просыпание, kill). - zeleny(07.03.2012 23:02, ссылка)
- Опять... надоели. профессионалы ИСПОЛЬЗУЮТ goto. Точка. - fk0(07.03.2012 23:14)
- >>Зачем прыгать ? Goto - зло Apтём(46 знак., 07.03.2012 23:12)
- вызываются как обычно, никаких ограничений нет - zeleny(07.03.2012 23:14)
- А где адрес возврата сохраняется? Стек-то общий. - Apтём(07.03.2012 23:23)
- а контекст каждой задачи хранится в структуре pt - zeleny(07.03.2012 23:27)
- ОС же не вытесняющая - стек сохранять не нужно - zeleny(07.03.2012 23:26)
- Чочочо??!!!! Тут почему-то подразумевают примеры только "помигать диодом". А как нащёт ожидания более чем одного события (минимум таймер + какой-либо сигнал от параллельной задачи). "Многозадачность" есть, а что нужны какие-либо способы fk0(302 знак., 07.03.2012 23:34)
- на счет ожидания нет проблем - поймите что задачи не могут прерываться планировщиком в неожиданном месте, пока задача не выполнит нужные действия и явно не передаст контекст по PT_YIELD, проверке условия и т.д. - другие не получат управления. То zeleny(40 знак., 07.03.2012 23:47)
- Проблем нет. Но ожидать-то как? Protothreads не имеет "очередей ожидания" и такой функции вообще. Там остаётся только в цикле тупо ОПРАШИВАТЬ флаги например. Тратя время ЦПУ и имея воооооооооот таккууууую латентность. - fk0(08.03.2012 00:07)
- Про латентность: а разве кто-то спорит, что область применения ограничена? Но эта область всё-таки офигенно большая. Пожалуйста, сдайте своё авто на помойку по той причине, что оно непригодно для полётов в космос. - SciFi(08.03.2012 00:26)
- То есть уход процессора в idle не сделать? - Apтём(08.03.2012 00:17)
- почему ? в основном цикле между вызовами задач можно спать - zeleny(08.03.2012 00:45)
- :) еще не встречал задач где это мешает. Нужна быстрая реакция - есть прерывания. А во "взрослых" РТОС с очередями и прочими наворотами только переключение контекста может занимать десятки мкс, что вполне сравнимо с опросом флагов в Pt - zeleny(08.03.2012 00:12)
- Проблем нет. Но ожидать-то как? Protothreads не имеет "очередей ожидания" и такой функции вообще. Там остаётся только в цикле тупо ОПРАШИВАТЬ флаги например. Тратя время ЦПУ и имея воооооооооот таккууууую латентность. - fk0(08.03.2012 00:07)
- на счет ожидания нет проблем - поймите что задачи не могут прерываться планировщиком в неожиданном месте, пока задача не выполнит нужные действия и явно не передаст контекст по PT_YIELD, проверке условия и т.д. - другие не получат управления. То zeleny(40 знак., 07.03.2012 23:47)
- А если функция os_sleep вызовет? - Apтём(07.03.2012 23:28)
- нет там такого. Все функции (точнее макросы) - по ссылке. Если очень нужно, это можно реализовать в простейшем планировщике - zeleny(07.03.2012 23:31, ссылка)
- А какая ниша (область применения) у подобных ОС? Apтём(145 знак., 08.03.2012 00:03)
- пример - регулятор на STM32F100C4T6. zeleny(288 знак., 08.03.2012 00:27)
- 7.5К Flash - это конечно хорошо, а что будет на 75-175 кБ флеш? Apтём(95 знак., 08.03.2012 00:34)
- >>а что будет на 75-175 кБ флеш? zeleny(223 знак., 08.03.2012 00:44, ссылка)
- >>1wire мастер программный, и с задержками там по-моему никакая РТОС не спасет, а прерывания только мешают Apтём(163 знак., 08.03.2012 00:50)
- УАРТ спасёт отца русской демократии -> - SciFi(08.03.2012 00:53, ссылка)
- УАРТ - это хорошо, когда он есть. В мегах с ними и так небогато. А вход захвата свободный был. - Apтём(08.03.2012 01:01)
- знаю, но не в этом случае - zeleny(08.03.2012 00:55)
- УАРТ спасёт отца русской демократии -> - SciFi(08.03.2012 00:53, ссылка)
- >>1wire мастер программный, и с задержками там по-моему никакая РТОС не спасет, а прерывания только мешают Apтём(163 знак., 08.03.2012 00:50)
- >>а что будет на 75-175 кБ флеш? zeleny(223 знак., 08.03.2012 00:44, ссылка)
- 7.5К Flash - это конечно хорошо, а что будет на 75-175 кБ флеш? Apтём(95 знак., 08.03.2012 00:34)
- >= 256к, меньше десятка действительно независимых задач, сотня protothreads (надо сказать сразу, что сотня их из-за того, что каждый блокирующий вызов функции в честной многозадачности со стеком вызывает отдельный "protothread" если без стека, а fk0(81 знак., 08.03.2012 00:10)
- +1. Если в килобайтах, то у меня 200. Очень многое можно сделать просто через super loop. Ну а protothreads, как уже говорили, - это всего лишь синтаксический сахар, хотя и чрезвычайно удобный. - SciFi(08.03.2012 00:30)
- Через super loop конечно можно делать, но натаёт момент когда уже и скорость реакции возрастает и тп. - Apтём(08.03.2012 00:38)
- Кэп, это ты? Перелогинься. - SciFi(08.03.2012 00:41, ссылка)
- Через super loop конечно можно делать, но натаёт момент когда уже и скорость реакции возрастает и тп. - Apтём(08.03.2012 00:38)
- +1. Если в килобайтах, то у меня 200. Очень многое можно сделать просто через super loop. Ну а protothreads, как уже говорили, - это всего лишь синтаксический сахар, хотя и чрезвычайно удобный. - SciFi(08.03.2012 00:30)
- пример - регулятор на STM32F100C4T6. zeleny(288 знак., 08.03.2012 00:27)
- А какая ниша (область применения) у подобных ОС? Apтём(145 знак., 08.03.2012 00:03)
- нет там такого. Все функции (точнее макросы) - по ссылке. Если очень нужно, это можно реализовать в простейшем планировщике - zeleny(07.03.2012 23:31, ссылка)
- Чочочо??!!!! Тут почему-то подразумевают примеры только "помигать диодом". А как нащёт ожидания более чем одного события (минимум таймер + какой-либо сигнал от параллельной задачи). "Многозадачность" есть, а что нужны какие-либо способы fk0(302 знак., 07.03.2012 23:34)
- А где адрес возврата сохраняется? Стек-то общий. - Apтём(07.03.2012 23:23)
- вызываются как обычно, никаких ограничений нет - zeleny(07.03.2012 23:14)
- Зачем прыгать ? Goto - зло. Все можно реализовать условиями и циклами. Для вызова другой задачи есть PT_SPAWN. Есть расширения от Craig Graham (засыпание/просыпание, kill). - zeleny(07.03.2012 23:02, ссылка)