ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
1285134
Evgeny_CD, Архитектор (18.02.2023 03:13, просмотров: 203)
Совсем не смешно. Создатели дурин с под маркой [Portenta] (лат. важный) копались у меня в голове! 

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, и это совсем не сложно в данном случае.


Основная идея - сложные по коду и объему работы CPU задачи в PLC, скорее всего, не главные. Главная задача PLC, с учетом ограниченного числа IO, и разумных требований по скорости отклика - скажем, 1 мс хватит для 99,9% промавтоматики - она относительно простая, если ее разгрузить от рюшечек.


Сложные "рюшечки", как правило, требуют очень условного RT, и если вынести их в отдельный CPU, то эта сложность никак не будет влиять на RT задачи PLC.


Значительную часть кода хота можно устроить по принципу

- море функций

- управляющий скрипт на высоком уровне управляет вызовом функций с параметрами.


Причем скрипт может быть очень условным. Это может быть нечто быстрое и компактное (Pawn, Lua), а может быть и обычная Сишечка, которая не лезет в дебри и глубины, а просто работает на пользовательском уровне.


Вот это все дает юзеру вариативный порог вхождения.


Ты дитя дурины - ок, пиши свои скетчи, вот тебе готовые скетчи для высокоуровневого доступа к хосту.


Можешь в скрипты - ок, вот тебе возможность писать скрипты для хоста. Пока на Lua (условно).


Можешь в "прикладную Сишечку" - ок, твои "скрипты" стали быстрее.


Можешь в "системную Сишечку" - пиши загружаемый модуль для Mbed™ OS