Перейти к содержанию
    

Многопроцессорность на STM32f4 STM32f7

Эзернет свич тут причем? Будь вместо SPI Ethernet, вопрос с протоколом не уйдет

Вас что, в детстве протоколами пугали? Дескать, придёт ночью протокол и скушает.

Протокол может быть текстом в три строчки. Всё зависит от задачи.

 

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

Предположим, что вы решили все эти заморочки с арбитражем и синхронизацией. Но у данных в этой общей памяти должен быть какой-то формат? Так же, как у кадра Ethernet должен быть формат. Где тут какое-то волшебное преимущество общей памяти - в упор не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Каково же число этих самых процессоров в пределе? Максимум каков?

На текущий момент 4, в планах - до 10

 

Вас что, в детстве протоколами пугали? Дескать, придёт ночью протокол и скушает.

Протокол может быть текстом в три строчки. Всё зависит от задачи.

А вам похоже езернет деньги платит, раз он вам так нравится. Я просто хочу определить наиболее простой и эффективный вариант решения задачи. Что здесь такого?

Предположим, что вы решили все эти заморочки с арбитражем и синхронизацией. Но у данных в этой общей памяти должен быть какой-то формат? Так же, как у кадра Ethernet должен быть формат. Где тут какое-то волшебное преимущество общей памяти - в упор не вижу.

Вот пишите вы программу, работаете с какими-то данными в памяти и в каком формате они хранятся? Просто данные по определенному адресу, никакой дополнительной служебной информации

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я просто хочу определить наиболее простой и эффективный вариант решения задачи. Что здесь такого?

Задача описана, скажем так, оч. широкими мазками. За неимением подробностей приходится додумывать. Каждый додумывает так, как ему нравится. Телепаты, конечно, всё знают, но они обычно в отпуске.

 

Вот пишите вы программу, работаете с какими-то данными в памяти и в каком формате они хранятся? Просто данные по определенному адресу, никакой дополнительной служебной информации

И что же мешает вот прямо эти данные засунуть в кадр Ethernet и отправить? Без какой-либо дополнительной служебной информации. А можно и с минимальной служебной информацией - не удивлюсь, если так будет даже проще и эффективнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На текущий момент 4, в планах - до 10

Оу! Так вам даже SHARC не подойдет.

Там же только 6-ть чипов можно посадить на общую параллельную шину.

И там кстати творится нечто довольно подозрительное с точки зрения надежности, поскольку у каждого чипа своя копия общей виртуальной памяти.

Контроля целостности данных нет.

Арбитраж тоже гибкостью не отличается.

Как и говорил - это устаревшее архаичное решение.

Берите пример с организации обмена в USB.

Правда в RTOS вам придется погрузится по самые уши. Но другого пути в этой теме у вас нет. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правда в RTOS вам придется погрузится по самые уши. Но другого пути в этой теме у вас нет. :laughing:

Так уж и нет?.. А взять взрослый процессор с частотой в пять раз больше, чем у STM32F7 и с количеством ядер внутри процессора раза в четыре больше, чем у STM32F7, это уже не путь? :biggrin:

 

Напр., AM5K2E04?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...это уже не путь? :biggrin:

Напр., AM5K2E04?

Эта друга отрасль, не путайте.

А то я ща приплету "INTEL® CORE™ i7-8700K". :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это другая отрасль, не путайте.

Кстати, а сколько FLOPS'ов у распиаренного STM32F7? Сходу почему-то не нашел..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правда в RTOS вам придется погрузится по самые уши. Но другого пути в этой теме у вас нет. :laughing:

Один из телепатов вышел из отпуска. Александр что-то знает про эту задачу, но нам не говорит. Скрытный телепат :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а я тоже за эзернет. например, если хочется до 10 устройств иметь с неким общим, как бы расшареным, как бы дисковым пространством, и чтобы данные между модулями как то расшаривались, то самое простое это взять 11 портовый FE свич от того же марвела что нибудь из серии link street, и вкорячить в него 10 равноправных модулей. а 11й модуть будет тем самым управляемым свичом и расшаривателем данных(агрегатором). если мы говорим о сотке, то это всего 2 диф.пары от каждого модуля, т.е, чисто теоретически, если изобрерается велосипед нестандартный(не в 19 стойку) то я еще предложил бы пользовать готовые сАТА кабели для межблочной связи, как раз 2 дифпары. и стоят копейки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Если Вы опытный человечик и такие вопросы как задача=эффективность решения уже порыли носом (и остались при своих), то если коротко - можно. и разделять и состыковывать энное кол-во мк и куча плюшек получать,

но там тема глубока, чтоб просто пилить на кухне на коленке - тянет на не хилый НИОКР и не в одно рыло.

И кстати в этом векторе - присмотритесь к публикуемым материалам тут в треде, у выступающего человечка - scifi. У него есть интересные проекты на мой взгляд в этом направлении.

Но возможно он этого не думал :)

 

с уважением

(круглый)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По моему, даже при наличии аппаратного порта (параллельного) с реализацией доступа из нескольких источников, при условии, что источников будет 10.... Ну и учитывая, что хотя бы один из них плотно сидит, то возникнут задержки на арбитраж, которые всю картину попортят.

Поэтому напрашивается какой-то аппаратный арбитр с высокоскоростным последовательным интерфейсом на N каналов источников. Он должен обеспечить обмен и арбитраж. Я имею ввиду потратить один камень на разруливание и обмен... ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а я тоже за эзернет. например, если хочется до 10 устройств иметь с неким общим, как бы расшареным, как бы дисковым пространством, и чтобы данные между модулями как то расшаривались, то самое простое это взять 11 портовый FE свич от того же марвела

USB HS гораздо презентабельней смотрится.

Он и быстрее и физика на борту STM32 уже есть.

И QoS там делается проще. Т.е. можно реально гарантировать риалтайм для определенных потоков.

И хабы его проще.

И всегда есть еще один USB для обычных нужд.

 

Но все это будет просто обычной сетью.

Это не межпроцессорное взаимодействие.

И не изоляция функциональности.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а я тоже за эзернет. например, если хочется до 10 устройств иметь с неким общим, как бы расшареным, как бы дисковым пространством, и чтобы данные между модулями как то расшаривались, то самое простое это взять 11 портовый FE свич от того же марвела что нибудь из серии link street, и вкорячить в него 10 равноправных модулей. а 11й модуть будет

Если не зацикливаться на топологии "звезда" и применяемые на слэйвах МК имеют по два каких-то интерфейса (SPI или Ethernet или ещё какие), то топология "кольцо" возможно будет выгоднее.

Каждый слэйв, если пакет адресован не ему, пропускает его с одного своего порта на 2-й насквозь, если адресован ему - обрабатывает и формирует ответный пакет.

Если слот пуст, то конструкция разъёма должна обеспечивать замыкание контактов принадлежащих этим двум портам, чтобы сохранялась целостность кольца.

Такая топология:

а) экономична (нет никаких дополнительных МК, свичей и т.п.);

б) обеспечивает высокую скорость (нет "бутылочного горлышка" куда лезут все слэйвы);

в) программная реализация проще (есть только одно ПО, не нужно писать отдельное ПО для центрального МК);

г) арбитраж прост до безобразия.

Если автору так уж хочется именно разделяемой памяти, он может считать что в заголовке пакета (в поле адреса) передаётся стартовый адрес памяти, причём - старшие скажем 4 бита - это номер слэйва, младшие биты - адрес памяти внутри слэйва. Т.е. - вся "разделяемая память" - это набор одинаковых блоков памяти в каждом слэйве.

Тогда арбитраж получается сам собой: так как каждый кусок памяти находится в своём МК, а этот МК получает запросы на доступ к нему строго последовательно, то собственно и арбитража никакого более не нужно. И требования к памяти скромнее получаются - блок "разделяемой памяти" размазан по всем слэйвам.

Скорость передачи в такой топологии может быть очень высокой, сигнальных линий - минимум. Ну задержка доступа конечно будет побольше, но и в топологии "звезда" задержка доступа при одновременной работе всех слэйвов может быть ещё больше.

Конечно есть и недостатки: при вставленном в слот неисправном слэйве - всё кольцо рушится. :( Чтобы восстановить связь, достаточно выдернуть слэйв из слота.

Хотя данная проблема решается дополнительным мультиплексором возле каждого слота.

 

Я бы конечно такую топологию строил на двух quad-SPI-портах (в любом МК есть SPI и не один), но если хочется можно и на 2-х Etherтуе, если они есть в МК.

При реализации на SPI можно обойтись без CS, сэкономив таким образом на пинах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не зацикливаться на топологии "звезда" и применяемые на слэйвах МК имеют по два каких-то интерфейса (SPI или Ethernet или ещё какие), то топология "кольцо" возможно будет выгоднее.

А не плагиат ли это EtherCat-а?

Только надо добавить, что система будет time-triggered.

 

И мы придем к старой доброй архитектуре традиционных PLC с самым коротким циклом в 100 мкс и отображением всех I/O на память.

Но тут даже поток сэмплов с частотой 10 кГц не передать.

Будет такая очень медленная реалтайм система.

 

Если нужна некая логическая mesh сеть, где каждый может передать что хочет каждому без вовлечения координатора, то в STM32 еще есть CAN FD, 4 мбит. Аппаратный контроль целостности данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вам похоже езернет деньги платит, раз он вам так нравится. Я просто хочу определить наиболее простой и эффективный вариант решения задачи. Что здесь такого?

В таком случае, меня тоже можно рассматривать как эзернет-агента, потому что такую задачу я бы решил именно на Ethernet. К тому же, switch обеспечит естественную "арбитрацию" доступа - ведь к МК с ОЗУ-общаком идет только один порт. Иными словами - приняли посылку, обработали, приняли, обработали.

 

И да, делать все на STM32 потому что их как гуталина, не есть поиск наиболее эффективного варианта задачи, а наоборот - поиск пути задействовать запасы, решив при этом задачу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...