Моду
Вт 27 ноября 2018 г. 15:54
Кооперативная многозадачность для микроконтроллеров Arduino
https: // github.com/arkhipenko/taskscheduler
Я некоторое время использую этот прекрасный и легкий кооперативный планировщик на STM32, но автор (под моим раздражающим подталкиванием) добавлена поддержка маленькой синей таблетки.
v3.0.2:
2018-11-11:
Поддержка плат STM32F1 (включая простальный сон) Я лично использую опцию ООП почти исключительно, а функциональность бездействия - это просто бесплатная недвижимость !
Просто подумал, что поделюсь, особенно после эта прекрасная тема.
https: // github.com/arkhipenko/taskscheduler
Я некоторое время использую этот прекрасный и легкий кооперативный планировщик на STM32, но автор (под моим раздражающим подталкиванием) добавлена поддержка маленькой синей таблетки.
v3.0.2:
2018-11-11:
Поддержка плат STM32F1 (включая простальный сон) Я лично использую опцию ООП почти исключительно, а функциональность бездействия - это просто бесплатная недвижимость !
Просто подумал, что поделюсь, особенно после эта прекрасная тема.
AG123
Вт 27 ноября 2018 г., 17:31
+1
Zoomx
Ср 28 ноября 2018 г. 13:25
+1
Mrburnette
Ср 28 ноября 2018 г., 16:56
Многозадачность работает лучше, когда есть несколько процессоров. В противном случае это в основном ненужные накладные расходы для псевдо-трудных, замков и петлей. Время лучше потрачено на понимание программного обеспечения «Система» и создание эффективных обратных вызовов.
Я понимаю, что программисты считают, что это здорово сделать это на дешевом UC, но в большинстве дизайнов программного обеспечения это ненужно и просто предлог, чтобы не соблюдать хорошую архитектуру программного обеспечения и правильные проекты функции/класса.
На таком чипе, как ESP32 при Arduino, основные дизайнеры уже сделали API, используя Freertos.
Это жестокий, холодный мир, и ИМО есть горы большие горы, чем кататься на моих собственных псевдо-трудах и «TOS. Я говорю, используйте UC для в реальном времени использование в тесной контуре, встряхнуть & повторить. Перейти к многоядерному UC для потока или на оборудование, например, RPI с ОС Linux для максимальной гибкости.
Луча
Я понимаю, что программисты считают, что это здорово сделать это на дешевом UC, но в большинстве дизайнов программного обеспечения это ненужно и просто предлог, чтобы не соблюдать хорошую архитектуру программного обеспечения и правильные проекты функции/класса.
На таком чипе, как ESP32 при Arduino, основные дизайнеры уже сделали API, используя Freertos.
Это жестокий, холодный мир, и ИМО есть горы большие горы, чем кататься на моих собственных псевдо-трудах и «TOS. Я говорю, используйте UC для в реальном времени использование в тесной контуре, встряхнуть & повторить. Перейти к многоядерному UC для потока или на оборудование, например, RPI с ОС Linux для максимальной гибкости.
Луча
C_D
Ср 28 ноября 2018 г., 21:14
Рэй, это комментарий для или против Taskscheduler?
Я тоже много использую эту библиотеку, и я думаю, что это очень простой и аккуратный способ синхронизировать несколько задач без почти всегда ненужных накладных расходов RTOS.
Я тоже много использую эту библиотеку, и я думаю, что это очень простой и аккуратный способ синхронизировать несколько задач без почти всегда ненужных накладных расходов RTOS.
Mrburnette
Чт 29 ноября 2018 г. 12:21
[C_D - Ср 28 ноября 2018 г., 21:14] - Рэй, это комментарий для или против Taskscheduler?Планирование задач на одноядерном UC подразумевает планирование потоков. Есть причины, по которым были разработаны RTO. Но их использование является исключением, а не нормой.
Я тоже много использую эту библиотеку, и я думаю, что это очень простой и аккуратный способ синхронизировать несколько задач без почти всегда ненужных накладных расходов RTOS.
Планирование не представляет балансировку нагрузки. Псевдо-тренажера не представляет оптимизацию работы. Реализация ресурсов может создать напряжение памяти, поскольку UC не имеет ОС для динамического объединения реальной памяти с виртуальной памятью.
Программисты, которые понимают инструменты, знают, когда их использовать... Мои комментарии предназначены для новых и промежуточных кодировщиков - это не повседневные понятия только потому, что примеры часто демонстрируют мигающие несколько светодиодов.
Луча
Моду
Чт 29 ноября 2018 г. 10:54 утра
Мне придется поддержать Рэя на этом.
Из моего личного контекста я знаю, как использовать кооператив-шедолер: я разрабатываю все выполнения задач в качестве государственных машин и никогда не трачу более 500 микросхем на каждую задачу, а также несколько более незначительных ограничений и последствий дизайна.
Ноби попробует это и подумает, что он может просто бросить псевдоотчики во всем, а затем удивляться, почему все время так не.
TL; DR: контекст всегда важен.
Из моего личного контекста я знаю, как использовать кооператив-шедолер: я разрабатываю все выполнения задач в качестве государственных машин и никогда не трачу более 500 микросхем на каждую задачу, а также несколько более незначительных ограничений и последствий дизайна.
Ноби попробует это и подумает, что он может просто бросить псевдоотчики во всем, а затем удивляться, почему все время так не.
TL; DR: контекст всегда важен.
Mrburnette
Чт 29 ноября 2018 г. 12:31
[Моду - Чт 29 ноября 2018 г. 10:54] - Мне придется поддержать Рэя на этом.Geewhiz... Вам не нужно звучать так разочарован в вашей поддержке.
...
Луча
Моду
Чт 29 ноября 2018 12:51
Вы - холодная вода, которая нам нужна, когда мы начинаем бегать с энтузиазмом по поводу новых блестящих игрушек.
Mrburnette
Чт 29 ноября 2018 г., 13:12
[Моду - Чт 29 ноября 2018 г. 12:51]] - Вы - холодная вода, которая нам нужна, когда мы начинаем бегать с энтузиазмом по поводу новых блестящих игрушек.Программирование часто называют «искусством», и, следовательно, программист является художником. Таким образом, наш наше набор инструментов наполнен пигментами и кистями, а скорее языками, техниками и структурами. Но мы все должны изучать мастеров, чтобы оценить возможности и должны стремиться развивать свой собственный стиль.
Это не желание вырвать каждый цикл из 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
Это заставляет произведения работать вместе как игровая консоль и становится довольно отзывчивым / интерактивным
Я предполагаю, что довольно часто хочется управлять ЖК -дисплее.глин. Нажатие кнопок и т. Д., Мониторинг датчиков или АЦП, приводили в систему звуковой сигнал (таймер & 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 телефонов
[*] Цифровые камеры - чуть не убили Флим
[*] Смартфоны - убили пилот пальмы
[*] 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 его размер и при этом при этом можно использовать ее (людьми)
Некоторые из этих досок разработки A64 проходят 64 бит Quad Core с большим.Маленькие настройки, я не слишком уверен, что ультрасовременные ядра также вышли в качестве досок для разработки. Но дело в том, что это казалось массовым излишним, если 8 -сердечные платы 64 бит 2 ГГц, возможно, разработанные с гигабайтами памяти, просто используется для мигания светодиода
Cortex-M по-прежнему имеет это на данный момент, проблема с IO заключается в том, что это «пустая трата аппаратной недвижимости», но из которых нельзя избежать.
Например, большой размер полной 104 клавиш Ansi использует огромную печатную плату и в значительной степени «потраченное впустую пространство» с большим количеством тонких проводов на печатной плате, представьте количество меди, которое нужно запечатлеть. Но факт в том, что вы просто не можете выжать клавиатуру в 1/10 его размер и при этом при этом можно использовать ее (людьми)