Второе ядро Raspberry Pi 2040
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Второе ядро Raspberry Pi 2040
Набор блоков для запуска части программы на втором ядре Raspberry Pi 2040 [spoiler=Размещение блоков в проекте] [/spoiler]
[spoiler=Описание применения]START_CORE2 for Raspberry Pi 2040
Стартовый блок для запуска части программы на втором ядре Raspberry Pi 2040
- Разместить блок на отдельной перед кодом выполняемым на втором ядре
END_CORE2 for Raspberry Pi 2040
Финишный блок для запуска части программы на втором ядре Raspberry Pi 2040
- Разместить блок на отдельной плате сразу после кода выполняемого на втором ядре
Все что размещено на платах между блоками
START_CORE2 for Raspberry Pi 2040 и END_CORE2 for Raspberry Pi 2040
будет работать на втором ядре Raspberry Pi 2040.[/spoiler]
.
Актуальная версия - Исправлен баг #Пост23
Разработано в соавторстве с [ref=#808080]Phazz[/ref].
.
.
История версий: .
ВНИМАНИЕ! Работает только на библиотеке контроллера Raspberry Pi Pico by Earle F.Philhower
Описание контроллеров Raspberry Pi 2040 берем здесь. Спасибо [ref]DrMario[/ref].
[spoiler=Библиотеку контроллера устанавливаем эту.] [/spoiler]
Набор блоков для запуска части программы на втором ядре Raspberry Pi 2040 [spoiler=Размещение блоков в проекте] [/spoiler]
[spoiler=Описание применения]START_CORE2 for Raspberry Pi 2040
Стартовый блок для запуска части программы на втором ядре Raspberry Pi 2040
- Разместить блок на отдельной перед кодом выполняемым на втором ядре
END_CORE2 for Raspberry Pi 2040
Финишный блок для запуска части программы на втором ядре Raspberry Pi 2040
- Разместить блок на отдельной плате сразу после кода выполняемого на втором ядре
Все что размещено на платах между блоками
START_CORE2 for Raspberry Pi 2040 и END_CORE2 for Raspberry Pi 2040
будет работать на втором ядре Raspberry Pi 2040.[/spoiler]
.
Актуальная версия - Исправлен баг #Пост23
Разработано в соавторстве с [ref=#808080]Phazz[/ref].
.
.
История версий: .
ВНИМАНИЕ! Работает только на библиотеке контроллера Raspberry Pi Pico by Earle F.Philhower
Описание контроллеров Raspberry Pi 2040 берем здесь. Спасибо [ref]DrMario[/ref].
[spoiler=Библиотеку контроллера устанавливаем эту.] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Хорошее решение, буду пользоваться, спасибо.
---------
А для ESP32 простого решения использования другого ядра не найти?
---------
А для ESP32 простого решения использования другого ядра не найти?
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Второе ядро Raspberry Pi 2040
[ref]ecoins[/ref], Есть блок но использование delay для переключения все убивает (
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Это по ESP32? Посмотреть бы...Phazz писал(а): 18 авг 2022, 19:59 ecoins, Есть блок но использование delay для переключения все убивает (
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Думаем. Но там все слишком запутано и простых решений совместимых с FLProg пока не вижу. ESP32 хоть и не плохой контроллер, но создатели ядра под него как то не особо заботятся о совместимости. Слишком много отклонений в стандартных функциях. Это слегка напрягает и разочаровывает.ecoins писал(а): 18 авг 2022, 19:36 А для ESP32 простого решения использования другого ядра не найти?
============
Еще думаю есть ли смысл разделять Setup() в ПБ для RPi. В основном влияет только на скорость загрузки. Однако появились идеи разделять конфигурацию и проверку на выход в рабочие параметры на одном ядре, а старт выполнения на другом. Но это пока только бурные фантазии.

Вижу что пока публике не зашло второе ядро RPi.

Либо мало у кого есть данный контроллер, либо осознание прелести простого использования сразу двух ядер еще не достигла общественного сознания.
Первые впечатления от Raspberry Pi Pico
При своей стоимости, характеристики весьма впечатляют.
Из минусов - не много специфических библиотек и примеров для данного процессора под Arduino IDE.
Однако развитие идет семимильными шагами. Контроллеры весьма перспективные.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Пока удалось укомплектоваться библиотеками.Dryundel писал(а): 18 авг 2022, 20:16 При своей стоимости, характеристики весьма впечатляют.
Из минусов - не много специфических библиотек и примеров для данного процессора под Arduino IDE.
-------
При построении своих библиотек мы практически отказались от setup(). А есть ли простой способ добавления setup1() с учетом FLProg?Dryundel писал(а): 18 авг 2022, 20:16 Еще думаю есть ли смысл разделять Setup() в ПБ для RPi. В основном влияет только на скорость загрузки. Однако появились идеи разделять конфигурацию и проверку на выход в рабочие параметры на одном ядре, а старт выполнения на другом. Но это пока только бурные фантазии.
Да, конечно. Но как ни странно STM32F411 раза в 2 быстрее.
Но с ним сложнее работать, у него одно ядро. И он дороже...
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
А где в FLProg используется setup()? Его просто нет в открытом доступе. Все setup() только в блоках. А что мешает при создании ПБ поступить аналогичным образом. Просто вставляем в секцию } void setup1() { и пишем дальше то, что хотим сетапить на втором ядре.
Я так думаю. Хотя и не пробовал. Ведь в этом случае setup1() окажется перед loop(), а не перед loop1(). Короче надо пробовать.
Ну и что? Если умножить скорость на два ядра, получим тот же результат, но с разделением на важные(быстрые) и прочие задачи. Так что здесь можно поспорить об общем быстродействии.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Да, конечно.Dryundel писал(а): 18 авг 2022, 20:43 Я так думаю. Хотя и не пробовал. Ведь в этом случае setup1() окажется перед loop(), а не перед loop1(). Короче надо пробовать.
ecoins писал(а): ↑24 минуты назад
Да, конечно. Но как ни странно STM32F411 раза в 2 быстрее.
Ну и что? Если умножить скорость на два ядра, получим тот же результат, но с разделением на важные(быстрые) и прочие задачи. Так что здесь можно поспорить об общем быстродействии
У Raspberry Pi Pico - много достоинств. С ним почти также просто работать, как с MEGA2560 - быстро компилируется, быстро грузится.
Из недостатков - логика 3.3в.
Для i2c мы эту проблему решаем просто - изготовили конверторы. В них есть два дополнительных канала.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Посмотрел. Спасибо.Phazz писал(а): 19 авг 2022, 05:03 ecoins писал(а): ↑Вчера{, 17:15}
Phazz писал(а): ↑Вчера{, 16:59}
ecoins, Есть блок но использование delay для переключения все убивает (
Это по ESP32? Посмотреть бы...
viewtopic.php?f=194&t=7566
Немного сумбурное представление сложилось по реализации запуска задач на разных ядрах, но наверное работает.
Не достает объективных замеров по времени с учетом работающего WiFi.
Предложенный подход интересен. Со временем попробую наверное.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Выкиньте этот delay из закрывающего блока вместе с параметром. И дело с концом.Phazz писал(а): 18 авг 2022, 19:59 ecoins, Есть блок но использование delay для переключения все убивает (
Он там вообще не нужен.
С другой стороны, этот delay практически не мешает выполнению другого кода, кроме того который между блоками.
Отправлено спустя 9 минут 31 секунду:
Что увидели?
Что то среднее между вашим планировщиком и FreeRTOS.Не правда ли?

[ref]ecoins[/ref], а может вам посмотреть в сторону FreeRTOS и его внедрением в FLProg? Там все гораздо интереснее. Очереди, семафоры, мьютексы...
- Phazz
- Полковник
- Сообщения: 3110
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 228 раз
- Поблагодарили: 107 раз
Второе ядро Raspberry Pi 2040
[ref=#ff8000]Dryundel[/ref], там рекомендован delay 1ms, а это очень много
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
В случае с RPi и loop1() вообще никаких проблем не вижу пока. Просто куски кода выполняются на разных ядрах и все.ecoins писал(а): 19 авг 2022, 05:43 Немного сумбурное представление сложилось по реализации запуска задач на разных ядрах, но наверное работает.
Единственный затык в том, как например там Serial.print в один порт будет с разных ядер выполняться. Не будут ли мешать друг другу подобные функции.
На ESP32 их xTaskCreatePinnedToCore похоже учитывает и планирует задачи в соответствии с приоритетом и параметрами.
В RPi тоже есть подобная система. Вот только инфы пока мало. В основном все ориентировано на Питон.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Где рекомендован? Можно инфу? Я как то не заметил проблем без delay.
С другой стороны, даже если и будет этот delay в функции (задаче). Как я уже писал ОН НЕ МЕШАЕТ ВЫПОЛНЕНИЮ ОСТАЛЬНОЙ ПРОГРАММЫ!
Функции которые в блоке являются частью этакой своей FreeRTOS от создателей ядра для ESP32.
Вы можете создать десяток каких задач (надо только слегка блок допилить). В каждой задаче свой delay хоть на 5секунд. Запустить все задачи на одном ядре и они не будут друг другу мешать.
Вот пример - Три разных блинка c delay() на одном ядре (0). Наслаждайтесь FreeRTOS от ESP32

У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 540
- Зарегистрирован: 03 сен 2020, 15:41
- Откуда: Питер
- Имя: Артем
- Поблагодарили: 1 раз
Второе ядро Raspberry Pi 2040
эта rtos как мнимум для esp32
для той же нано/уно порт rtos носил развлекательный
характер.
[spoiler]
"...Пробовал я FreeRTOS на нане. Помигал диодиком. Вывел на экран ПРИВЕТ МИР. Здесь память кончилась. Ничего больше из задач добавить не получилось. Ушёл на STM32. Там получилось поднять 6 задач. В том числе сеть и CD карту и тачь. Меги у меня нет. Про неё ничего не скажу, но на более мелких FreeRTOS это игрушка..."
[/spoiler]
Отправлено спустя 6 минут :
простой пример:
-вывод в юарт
-две задачи
-в rtos для Каждой задачи нужно будет запускать Свой экземпляр Serial.begin
Отправлено спустя 4 минуты 3 секунды:
*ну и сам факт переписывания всех библиотек arduino под rtos не добавляет оптимизма)))
для той же нано/уно порт rtos носил развлекательный
характер.
[spoiler]
"...Пробовал я FreeRTOS на нане. Помигал диодиком. Вывел на экран ПРИВЕТ МИР. Здесь память кончилась. Ничего больше из задач добавить не получилось. Ушёл на STM32. Там получилось поднять 6 задач. В том числе сеть и CD карту и тачь. Меги у меня нет. Про неё ничего не скажу, но на более мелких FreeRTOS это игрушка..."
[/spoiler]
Отправлено спустя 6 минут :
простой пример:
-вывод в юарт
-две задачи
-в rtos для Каждой задачи нужно будет запускать Свой экземпляр Serial.begin
Отправлено спустя 4 минуты 3 секунды:
*ну и сам факт переписывания всех библиотек arduino под rtos не добавляет оптимизма)))
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Да ладно! Вы тоже это заметили?

А о чем мы здесь еще по вашему?
Прям таки всех? Класс! А зачем? Что изменилось то?artemka19 писал(а): 19 авг 2022, 15:11 *ну и сам факт переписывания всех библиотек arduino под rtos не добавляет оптимизма)))
-
- Лейтенант
- Сообщения: 540
- Зарегистрирован: 03 сен 2020, 15:41
- Откуда: Питер
- Имя: Артем
- Поблагодарили: 1 раз
Второе ядро Raspberry Pi 2040
вот тут нет ничего про espDryundel писал(а): 19 авг 2022, 12:06 ecoins, а может вам посмотреть в сторону FreeRTOS и его внедрением в FLProg
Отправлено спустя 1 минуту 31 секунду:
когда будет пример - обсудим.
Теорию с uart я уже привел выше.
Можно попробовать с spi)))) подожду результата тестов...
Отправлено спустя 3 минуты 14 секунд:
ну и не стоит забывать, что некоторые библиотеки Прямо запрещают использование прерываний.
т.е. не переписывая эти библиотеки - ни о каком rtos не может быть и речи в среде ардуино ide
Отправлено спустя 2 минуты 31 секунду:
поэтому система от ecoins наиболее жизнеспособна в рамках ардуино ide (а значит и флпрог)
***ИМХО конечно
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Собственно первые наметки начал делать.Dryundel писал(а): 19 авг 2022, 12:06 Что то среднее между вашим планировщиком и FreeRTOS.Не правда ли?
ecoins, а может вам посмотреть в сторону FreeRTOS и его внедрением в FLProg? Там все гораздо интереснее. Очереди, семафоры, мьютексы...
На новых контроллерах ESP стало нормой устанавливать адресный светодиод типа ws2812.
Библиотеки управления все основаны на FreeRTOS. И это понятно в силу особенности управления такими светодиодами.
Как бы полезно было бы сделать штатно такую функцию. Это в планах.
На STM32, RP2040 схожая ситуация, freertos присутствует.
-------------
Когда несколько лет мы начали изучать проблему почему тормозят проекты на FLProg мы начинали с рассматривания системы реального времени.
После того как появилось управления выполнения по платам по условиям, появилось то, что мы назвали значимо "Диспетчер задач", которая фактически является достаточно удачным переключателем между задачами.
Появление "Диспетчера" не решило проблемы, поскольку любая "тормозящая" задача может свести на нет результаты оптимизации по времени - например АЦП, почти все библиотеки работы с внешними устройствами, и даже алгоритм преобразования
float в int от FLProg в ModBus и пр.(последнее в контроллерах AVR очень тормозит).
Большинство библиотек от Arduino IDE написано с удобной для пользователя логикой - одна функция (строка) сразу приносит желаемый результат.
А внутри delay(), обмен через коммуникации, иногда громоздкие вычисления и прочие "плюшки", приводящие к задержкам.
Были разработаны методы проектирования библиотек - все библиотеки от ecoins построены на микрооперация - законченное конечное действие, после которого можно вернуть управление внешнему диспетчеру, сейчас это "Диспетчер задач".
Методы достаточно отработаны и уницифированы в том числе с учетом некоторых особенностей проектирования на FLProg.
По поводу семафоров и пр. - по моему мнению лучше всего этого избегать, иначе сложность управления этими процессами сами по себе поглощают ресурсы, в том числе и по быстродействию.
Могут возникать и конфликты - например при попытки нескольких задач одновременно использовать одну и ту же шину i2c.
К слову в непростой библиотеке LCD ecoins используется механизм блокировки вывода по флагу занятого дисплея.
---------------------
Тема очень интересная - если от разных участников форума будут локальные тестовые наработки, их можно будет объединить в универсальный результат.
При это все и по отдельности, и в связке будет полезно - "Диспетчер задач", многоядерность (там где она присутствует), и FreeRTOS.
------------------
Всем желаю успехов в развитии такой тематики.
Со своей стороны примем посильное участие.
- Dryundel
- Полковник
- Сообщения: 2406
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Поблагодарили: 15 раз
Второе ядро Raspberry Pi 2040
Ну так это же практически в чистом виде мьютексы.ecoins писал(а): 19 авг 2022, 16:39 Могут возникать и конфликты - например при попытки нескольких задач одновременно использовать одну и ту же шину i2c.
К слову в непростой библиотеке LCD ecoins используется механизм блокировки вывода по флагу занятого дисплея.

Снова изобретаем велосипед?
-
- Полковник
- Сообщения: 3999
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 136 раз
- Поблагодарили: 149 раз
Второе ядро Raspberry Pi 2040
Прекрасно, когда присутствует теоретик, который все может объяснить... мьютекс...Dryundel писал(а): 19 авг 2022, 17:18 Ну так это же практически в чистом виде мьютексы.
Снова изобретаем велосипед?
Это как к старику-пастуху лектор приезжает и читает лекцию "Как пасти баранов".
Старик слушает, удивляется обилию нового и значимости своего дела, лектор уезжает и пастух продолжает пасти баранов - а это шерсть, мясо, кюрдюк, копыта для хаша(холодца), навоз и прочее, прочее полезное в практическом смысле...
О мьютексе... Раньше не использовал этот термин. Посмотрел...
В наших проектах нет потоков, соответственно и мьютексов...
Прослушал как-то в youtube несколько лекций по программированию из Физтеха.
Услышал и много полезного, а в целом вывод - "Как же Вы далеки от народа" и от текущей реальности...
------
Примечание: никого обидеть не хотел и не хочу.
------
Подпись: Программист ну очень с большим стажем... из очень из разных эпох... пытается держать руку на пульсе времени.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость