[Портированный] Taskscheduler

Моду
Вт 27 ноября 2018 г. 15:54
Кооперативная многозадачность для микроконтроллеров Arduino
https: // github.com/arkhipenko/taskscheduler

Я некоторое время использую этот прекрасный и легкий кооперативный планировщик на STM32, но автор (под моим раздражающим подталкиванием) добавлена ​​поддержка маленькой синей таблетки.
v3.0.2:
2018-11-11:
Поддержка плат STM32F1 (включая простальный сон)
Я лично использую опцию ООП почти исключительно, а функциональность бездействия - это просто бесплатная недвижимость : mrgreen: !

Просто подумал, что поделюсь, особенно после эта прекрасная тема.

AG123
Вт 27 ноября 2018 г., 17:31
+1 : D

Zoomx
Ср 28 ноября 2018 г. 13:25
+1

Mrburnette
Ср 28 ноября 2018 г., 16:56
Многозадачность работает лучше, когда есть несколько процессоров. В противном случае это в основном ненужные накладные расходы для псевдо-трудных, замков и петлей. Время лучше потрачено на понимание программного обеспечения «Система» и создание эффективных обратных вызовов.

Я понимаю, что программисты считают, что это здорово сделать это на дешевом UC, но в большинстве дизайнов программного обеспечения это ненужно и просто предлог, чтобы не соблюдать хорошую архитектуру программного обеспечения и правильные проекты функции/класса.

На таком чипе, как ESP32 при Arduino, основные дизайнеры уже сделали API, используя Freertos.

Это жестокий, холодный мир, и ИМО есть горы большие горы, чем кататься на моих собственных псевдо-трудах и «TOS. Я говорю, используйте UC для в реальном времени использование в тесной контуре, встряхнуть & повторить. Перейти к многоядерному UC для потока или на оборудование, например, RPI с ОС Linux для максимальной гибкости.

Луча

C_D
Ср 28 ноября 2018 г., 21:14
Рэй, это комментарий для или против Taskscheduler?

Я тоже много использую эту библиотеку, и я думаю, что это очень простой и аккуратный способ синхронизировать несколько задач без почти всегда ненужных накладных расходов RTOS.

Mrburnette
Чт 29 ноября 2018 г. 12:21
[C_D - Ср 28 ноября 2018 г., 21:14] - Рэй, это комментарий для или против Taskscheduler?

Я тоже много использую эту библиотеку, и я думаю, что это очень простой и аккуратный способ синхронизировать несколько задач без почти всегда ненужных накладных расходов RTOS.
Планирование задач на одноядерном UC подразумевает планирование потоков. Есть причины, по которым были разработаны RTO. Но их использование является исключением, а не нормой.

Планирование не представляет балансировку нагрузки. Псевдо-тренажера не представляет оптимизацию работы. Реализация ресурсов может создать напряжение памяти, поскольку UC не имеет ОС для динамического объединения реальной памяти с виртуальной памятью.

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

Луча

Моду
Чт 29 ноября 2018 г. 10:54 утра
Мне придется поддержать Рэя на этом.

Из моего личного контекста я знаю, как использовать кооператив-шедолер: я разрабатываю все выполнения задач в качестве государственных машин и никогда не трачу более 500 микросхем на каждую задачу, а также несколько более незначительных ограничений и последствий дизайна.

Ноби попробует это и подумает, что он может просто бросить псевдоотчики во всем, а затем удивляться, почему все время так не.

TL; DR: контекст всегда важен.

Mrburnette
Чт 29 ноября 2018 г. 12:31
[Моду - Чт 29 ноября 2018 г. 10:54] - Мне придется поддержать Рэя на этом.
...
Geewhiz... Вам не нужно звучать так разочарован в вашей поддержке. ;)

Луча

Моду
Чт 29 ноября 2018 12:51
Вы - холодная вода, которая нам нужна, когда мы начинаем бегать с энтузиазмом по поводу новых блестящих игрушек. : mrgreen:

Mrburnette
Чт 29 ноября 2018 г., 13:12
[Моду - Чт 29 ноября 2018 г. 12:51]] - Вы - холодная вода, которая нам нужна, когда мы начинаем бегать с энтузиазмом по поводу новых блестящих игрушек. : mrgreen:
Программирование часто называют «искусством», и, следовательно, программист является художником. Таким образом, наш наше набор инструментов наполнен пигментами и кистями, а скорее языками, техниками и структурами. Но мы все должны изучать мастеров, чтобы оценить возможности и должны стремиться развивать свой собственный стиль.

Это не желание вырвать каждый цикл из UC. Скорее цель состоит в том, чтобы создать функционирующее программное обеспечение для выполнения требований требований. Я считаю, что это помогает написать требования на бумаге и часто ссылаться на цель.

Если мы используем UC за 2 доллара, чтобы моргнуть светодиод, то, возможно, мы должны были использовать 555. Но мы используем термистор для измерения сопротивления в зависимости от температуры, рассчитываем в UC и мигает светодиод, если температура не связана, тогда 2 доллара можно потратить хорошо, даже если только 5% от возможности используется. Мы можем добавить дисплей с помощью SPI или i2c и потреблять еще 5%. 2 доллара хорошо потрачены, и нет необходимости беспокоиться только о 10% использование ресурсов. Однако есть некоторые менталитеты, которые увидят 1 доллар США.80 Потеря.

Луча

AG123
Пт 30 ноября 2018 г., 5:32 утра
Строго говоря, на самом деле не о «многозадачных задачах», которые я использую такого «кооперативного» планировщика, включая мой собственный петля мероприятия

Я предполагаю, что довольно часто хочется управлять ЖК -дисплее.глин. Нажатие кнопок и т. Д., Мониторинг датчиков или АЦП, приводили в систему звуковой сигнал (таймер & Tone () делает это), и если это не все, иногда можно захотеть водить SD -карту в этом 20K SRAM
Я попробовал RTOS и нашел использование фрагмента VTASKS, который настолько много памяти, что он быстро заканчивает память на BP/MM.

Чтобы лучше управлять использованием памяти вокруг различных задач, самый простой способ управления «динамической» памятью - просто использовать *стек *, C, C ++, что изначально, все локальные переменные размещаются в стеке и разбивают, когда функция выходит.

В некотором смысле «планировщик» не необходим, так как можно просто вызвать одну функцию/метод за другой в Loop ().
Понятие использования «планировщика», и в моем случае я использовал цикл событий, заключается в том, что блоки задержки ().
Таким образом, нужно было бы сохранить состояние, чтобы сделать не блокирующую задержку.
и это довольно распространенный случай использования e.глин. мигает светодиод, делая «другие вещи».
Чтобы упростить вариант использования, я использовал петля мероприятия С классом Asyncwait, который запускает события в более позднее время после задержки, и оказывается, что концепция хорошо работает на BP/MM
Это заставляет произведения работать вместе как игровая консоль и становится довольно отзывчивым / интерактивным

AG123
Пт 30 ноября 2018 г., 6:04
В последние десятилетия были «технологические сдвиги» / прорывы, наиболее заметным существом
[*] Цифровые камеры - чуть не убили Флим
[*] Смартфоны - убили пилот пальмы
[*] Android и iPhone - почти вытекали старые телефоны кнопок

Ардуино? STM32duino?
Это своего рода прорыв, что старый MCU в этом старом телефоне Nokia выходит в виде товарного оборудования, распространяемого как платы разработки, датчики / детали в качестве модулей прорыва
Где прорыв? Обычно вы не взломаете свой старый телефон Nokia, чтобы управлять светодиодом, но теперь, когда MCU становятся широко распространенными в качестве досок разработки, и подробные характеристики опубликовали что -то, когда он считался «невозможным», стал обычным: вы можете запрограммировать этот старый телефон Nokia MCU, чтобы управлять управлением, чтобы управлять управлением. модули прорыва в вашем собственном варианте использования - считается IoT

Я думаю, что STM32 и Cortex-M-это эволюция из старого MCUS Nokia телефонов

Mrburnette
Пт 30 ноября 2018 г., 15:20
[AG123 - Пт 30 ноября 2018 г. 6:04] - ...
Я думаю, что STM32 и Cortex-M-это эволюция из старого MCUS Nokia телефонов
Не согласен.

Raspberry Pi - это эволюция от мобильных технологий.

STM32F1XX - это просто обычная старая рука UC. Хороший, хорошо спроектированный, недорогой, но устаревший.

Луча

AG123
Пт 30 ноября 2018 г., 16:52
В настоящее время казалось, что разработка рук все еще развивается по 2 отдельным трекам
Некоторые из этих досок разработки A64 проходят 64 бит Quad Core с большим.Маленькие настройки, я не слишком уверен, что ультрасовременные ядра также вышли в качестве досок для разработки. Но дело в том, что это казалось массовым излишним, если 8 -сердечные платы 64 бит 2 ГГц, возможно, разработанные с гигабайтами памяти, просто используется для мигания светодиода

Cortex-M по-прежнему имеет это на данный момент, проблема с IO заключается в том, что это «пустая трата аппаратной недвижимости», но из которых нельзя избежать.
Например, большой размер полной 104 клавиш Ansi использует огромную печатную плату и в значительной степени «потраченное впустую пространство» с большим количеством тонких проводов на печатной плате, представьте количество меди, которое нужно запечатлеть. Но факт в том, что вы просто не можете выжать клавиатуру в 1/10 его размер и при этом при этом можно использовать ее (людьми)
:ржу не могу: