https://caxapa.ru/1285131.html
https://store.arduino.cc/products/portenta-h7
Процитирую:
Two Parallel Cores
H7's main processor is the dual core STM32H747 including a Cortex® M7 running at 480 MHz and a Cortex® M4 running at 240 MHz. The two cores communicate via a Remote Procedure Call mechanism that allows calling functions on the other processor seamlessly. Both processors share all the in-chip peripherals and can run:
* Arduino sketches on top of the Arm® Mbed™ OS
* Native Mbed™ applications
* MicroPython / JavaScript via an interpreter
* TensorFlow™ Lite
Скорее всего, они мелкое ядро отдали под PLC|Дурина задачи, а большое ядро является сервисным. И это кардинально упрощает код PLC ядра.
Например, мелкое ядро ничего не знает про IP стек. Оно просто кладет данные и передает указатель хосту - вот это надо отправить в сокет. Все, дальше только флаг исполнения и метка времени, когда исполнено.
Хост возюкается с https (условно), со всеми мегасекурностями и проч. Он для этого большой, быстрый и умеренно RT. Так, слегка.
Все остальные сложные задачи, USB, файловая система, GUI аналогично.
PLC ядро может иметь очень простую RTOS с самым минимумом сервисов. Или вообще без нее, конечный автомат и прерывания. Это ядро строго RT, и это совсем не сложно в данном случае.
Сложные "рюшечки", как правило, требуют очень условного RT, и если вынести их в отдельный CPU, то эта сложность никак не будет влиять на RT задачи PLC.
Значительную часть кода хота можно устроить по принципу
- море функций
- управляющий скрипт на высоком уровне управляет вызовом функций с параметрами.
Причем скрипт может быть очень условным. Это может быть нечто быстрое и компактное (Pawn, Lua), а может быть и обычная Сишечка, которая не лезет в дебри и глубины, а просто работает на пользовательском уровне.
Ты дитя дурины - ок, пиши свои скетчи, вот тебе готовые скетчи для высокоуровневого доступа к хосту.
Можешь в скрипты - ок, вот тебе возможность писать скрипты для хоста. Пока на Lua (условно).
Можешь в "прикладную Сишечку" - ок, твои "скрипты" стали быстрее.
Можешь в "системную Сишечку" - пиши загружаемый модуль для Mbed™ OS