реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Многопроцессорность на STM32f4 STM32f7
_lexa_
сообщение Jan 16 2018, 20:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 23-03-15
Пользователь №: 85 852



Доброе время суток!

Возникла необходимость сделать многопроцессорную систему, причем расширяемую. Также для всех процессоров в системе необходима разделяемая память. Есть запасы STM32f4 STM32f7, поэтому хотелось бы задействовать их.

Подскажите, пожалуйста, как можно выполнить поставленные задачи (если возможно имеющимися средствами)?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 17 2018, 08:54
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Прошу участников обсуждать тему, а не причину.
Модератор
Go to the top of the page
 
+Quote Post
x893
сообщение Jan 17 2018, 09:09
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Участники остались - телепаты уехали.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 09:32
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(_lexa_ @ Jan 16 2018, 23:39) *
Возникла необходимость сделать многопроцессорную систему, причем расширяемую. Также для всех процессоров в системе необходима разделяемая память. Есть запасы STM32f4 STM32f7, поэтому хотелось бы задействовать их.

Подскажите, пожалуйста, как можно выполнить поставленные задачи (если возможно имеющимися средствами)?

Есть LIN - можно на них сделать сеть.
Есть МАС - к ним можно добавить свитч напрямую без PHY... И реализовать сеть. А можно свитч сделать на ПЛИС, у Ксайлинкса был выложен проект "меш-коммутатора"...

А вот "разделяемая память" - тут сложнее. На сколько абонентов? Какого объема, разрядности и с какой скоростью доступа. Ведь можно сделать Память+(ПЛИС и из нее много SPI). И на эти SPI посадить микропроцессоры. Или скажем квадро-SPI...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 17 2018, 10:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(IgorKossak @ Jan 17 2018, 10:54) *
Прошу участников обсуждать тему, а не причину.

Без знания причины обсуждать тут нечего. От знания причины зависят пути решения. Иначе это будет просто обсуждение коня в вакууме.
Если перед автором стоит реальная задача, то он её не озвучил, а озвучил один из частных путей решения. Это типично для начинающих.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 17 2018, 10:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(_lexa_ @ Jan 16 2018, 23:39) *
поэтому хотелось бы задействовать их.

Обычно железо под задачку выбирают. По-моему, вам больше подходит Parallax Propeller.
Там и железно более приспособлено к многоядерности, а главное софт.
STM не самый лучший выбор, т.к. невозможно запускать код с произвольного адреса (нет MMU), хотя можно писать оверлеи, не зависящие от абсолютных адресов и/или править таблицу адресов во время загрузки оверлея. В итоге много сил уйдет не только на железо, но и на написание софта, и борьбу с компилятором. В практическом смысле результат малозначим, но в академическом - очень интересен. Все же советую Пропеллер.

Или сделать интерпретатор байт-кода, и запускать задачки из байт-кода на любых узлах передавая информацию по любым доступным каналам.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 17 2018, 10:18
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Jan 17 2018, 12:10) *
Обычно железо под задачку выбирают.

А обсуждать задачу нам тут запретили. sad.gif((

Цитата(adnega @ Jan 17 2018, 12:10) *
STM не самый лучший выбор, т.к. невозможно запускать код с произвольного адреса (нет MMU), хотя можно писать оверлеи, не зависящие от абсолютных адресов

А причём тут многоядерность? С чего Вы решили, что на этих МК автор собирается одинаковые задачи решать? Из какой строки его сообщения это проистекает?
Я думаю что он планирует каждому МК свою прошивку. Хотя это всё конечно - гадание на кофейной гуще....
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 17 2018, 10:28
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(_lexa_ @ Jan 16 2018, 23:39) *
Есть запасы STM32f4 STM32f7, поэтому хотелось бы задействовать их.
Подскажите, пожалуйста, как можно выполнить поставленные задачи (если возможно имеющимися средствами)?

Ну а тут все по-нашему.
Это у них, сначала считают деньги, потом выбирают под задачу микроконтроллеры. Вот скажем Шарки, те специально сделаны для многопроцессорности. И для объединения в кластер там все есть...
А у наших сначала выбирают самую дешевую гайку, просто потому что "знаем и любим", а потом к ней приходится делать сверху столько наворотов, что и смысл в самой этой гайке теряется. Да вот только отступать уже поздно. Сил и времени потрачено много...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
_lexa_
сообщение Jan 17 2018, 11:03
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 23-03-15
Пользователь №: 85 852



Уточняю задачу.
Необходимо сделать устройство состоящее из объединяющей платы с набором слотов, в которые устанавливются платы различного назначения (связь, оцифровка аналоговых сигналов, математические вычисления и др.). Добавление плат хотелось бы выполнять без перенастроек других плат (ну или выполнение минимума настроек). Идеальный вариант - SRAM объемом 64 кБ на объединяющей плате. Микроконтроллеры на платах в слотах получают доступ к SRAM и через нее взаимодействуют между собой. В SRAM выделены области для данных определенного назначения, в соответствии с заранее оговоренными правилами. Каждый Контроллер в системе мог бы обращаться к любой области по необходимости. Получается какая-то параллельная шина. Вопрос - какими средствами ее организовать?

Есть документ armv7-m architecture reference manual, в котором предусмотрены средства синхронизации доступа к разделяемой памяти в многопроцессорной системе. Непонятно как и кем это реализовывалось физически (контроллеры с поддержкой разделяемой памяти).

А аналог дивайсес этот вопрос неплохо проработан на АДСП, но его не применяем, не устраивает переферия.

Цитата(iosifk @ Jan 17 2018, 10:32) *
Есть LIN - можно на них сделать сеть.
Есть МАС - к ним можно добавить свитч напрямую без PHY... И реализовать сеть. А можно свитч сделать на ПЛИС, у Ксайлинкса был выложен проект "меш-коммутатора"...

А вот "разделяемая память" - тут сложнее. На сколько абонентов? Какого объема, разрядности и с какой скоростью доступа. Ведь можно сделать Память+(ПЛИС и из нее много SPI). И на эти SPI посадить микропроцессоры. Или скажем квадро-SPI...


Можно конечно сделать сеть на базе свича эзернет, можно даже на USART или по CAN шине. Придется использовать какой-то протокол передачи данных. Все это снижает скорость обмена информацией и усложняет алгоритм взаимодействия. Не хотелось бы
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 17 2018, 11:13
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_lexa_ @ Jan 17 2018, 14:03) *
Можно конечно сделать сеть на базе свича эзернет, можно даже на USART или по CAN шине. Придется использовать какой-то протокол передачи данных. Все это снижает скорость обмена информацией и усложняет алгоритм взаимодействия. Не хотелось бы

Требования по скорости не озвучены. Можно вообще сделать полудуплексный UART на одном проводе, на скорости 100 кбит можно много плат подключить.
А если таки нужна скорость, то обогнать Ethernet вам вряд ли удастся. И не надо придумывать про сложность взаимодействия, сетевые штуки будут попроще, чем общая память.
Go to the top of the page
 
+Quote Post
x893
сообщение Jan 17 2018, 11:30
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Вот и пора свою шину придумывать.

Всё это уже придумано лет 30-40 назад.
Вместо чтения вики, давайте придумывать всё заново.
Только с меньшими знаниями и худшими результатами.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 17 2018, 11:52
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_lexa_ @ Jan 17 2018, 13:03) *
Можно конечно сделать сеть на базе свича эзернет, можно даже на USART или по CAN шине. Придется использовать какой-то протокол передачи данных. Все это снижает скорость обмена информацией и усложняет алгоритм взаимодействия. Не хотелось бы

Это и будет как раз сделать проще, чем реализовывать разделяемую внешнюю память, которая не имеет средств аппаратной поддержки в ваших МК.
Для любого разделяемого ресурса нужно организовать арбитраж доступа к нему, захват/освобождение и т.п. На чём это всё делать? Логике? Или ставить отдельный МК?
Тогда на этот МК (он будет мастером) и следует возложить все обязанности. Создаёте протокол работы по какому-либо интерфейсу(-ам) между мастером и слэйвами.
На прикладном уровне этот протокол может даже реализовывать доступ к общей памяти в адресном пространстве мастера.

Цитата(scifi @ Jan 17 2018, 13:13) *
А если таки нужна скорость, то обогнать Ethernet вам вряд ли удастся.

Обогнать Ethernet вполне реально применив в качестве шины подключения кучи слэйвов к одному мастеру например quad-SPI.
Уже хотя бы за счёт уменьшения лишних (в данном случае) заголовков кадров и обрамлений пакетов Ethernet.
PS: Хотя конечно не на STM32F4... sad.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jan 17 2018, 12:03
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(_lexa_ @ Jan 17 2018, 14:03) *
Не хотелось бы
Теперь все встало на свои места: простые неоднократно обсосанные и готовые решения вам не годятся, а хочется "достать пяткой до затылка" - нагородить огород из кучи линий (разделяемая память требует как минимум параллельную шину адреса/данных)....

Цитата
Все это снижает скорость обмена информацией и усложняет алгоритм взаимодействия.
Профессионалами принято сначала проектировать проект (железо и софт), а потом рисовать схемотехнику, плодить платы и кодировать коды.
Или у вас там принято делать все наоборот? wink.gif

Посчитайте для начала пропускную способность межплатной связи.
А то может оказаться, что I2C хватит за глаза sm.gif

Если реально нужна большая скорость, то я бы ограничился SPI (с DMA ессно). ...
upd с SPI опередили ))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 17 2018, 12:05
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_lexa_ @ Jan 17 2018, 13:03) *
Есть документ armv7-m architecture reference manual, в котором предусмотрены средства синхронизации доступа к разделяемой памяти в многопроцессорной системе. Непонятно как и кем это реализовывалось физически (контроллеры с поддержкой разделяемой памяти).

Это реализовано в существующих многоядерных МК.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 17 2018, 12:09
Сообщение #15


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(_lexa_ @ Jan 17 2018, 13:03) *
Идеальный вариант - SRAM объемом 64 кБ на объединяющей плате.

Не, это архаичный и устаревший подход. В гетерогенных мультиконтроллерных структурах его не применяют.
Откуда эта сомнительная цифра в 64Кб. Параллельная шина тоже не вызывает энтузиазма.
Речь же не о мультиядерных кристаллах.

Вам нужно что типа Greybus и RTOS с поддержкой мультипроцессорности.
Главная фишка такой шины - хардварная маршрутизация.

Из доступныйх RTOS с поддержкой мультипроцессорности и софтварной маршрутизацией будет MQX, какие-то потуги для отдельного железа были у FreeRTOS.
В MQX вы можете посылать ивенты и сообщения любым задачам на другие микроконтроллеры. Запускать и останавливать задачи на любых микроконтроллерах.
При этом шина связи может быть любая: I2C, SPI, UART, CAN, Ethernet...
Думаю аппаратную быструю маршрутизацию можно сделать в i.MX RT на базе их периферии Flexible I/O и eDMA.
Да, там еще есть HyperBus. Можно до 333 MB/s развить. Но роутер придется делать самому для нее.

Кстати в логических контроллерах где там в линейку можно ставить по десятку модулей со всякими разными функциями и с довольно медленным циклом выполнения в 1 мс на соединительной шине стоят ASIC-и со скоростью в 3 Гбита.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 11:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01516 секунд с 7
ELECTRONIX ©2004-2016