У меня есть небольшой аргумент архитектуры с коллегой на данный момент. Я надеялся, что некоторые из вас могут помочь решить эту проблему, решительно предложив один подход другому.Генерация событий состояния машины в многопроцессорной архитектуре
У нас есть DSP и Cortex-M3 вместе с общей памятью. DSP получает запросы от внешнего мира, и некоторые из этих запросов должны выполнять определенные функции тестирования беспроводной сети, которые могут быть выполнены только на CM3. DSP записывает в общую память, затем сигнализирует CM3 через прерывание. Общая память указывает, что запрос вместе с любыми необходимыми данными, необходимыми для выполнения запроса (канал для настройки, регистрация RF-чипа для чтения и т. Д.).
Мое предпочтение заключается в создании уникального идентификатора события для каждого запроса, который может произойти в прерывании. Затем, прежде чем покинуть прерывание, передайте событие в очередь событий конечного автомата, которая будет обрабатываться в потоке, посвященном активности RF.
Мой коллега вместо этого хотел бы передать единый идентификатор события (общая RF-команда) на конечный автомат и провести разбор области общей памяти после получения этого идентификатора события на конечной машине. После синтаксического анализа вы узнаете конкретную команду, над которой вам нужно действовать.
Мне не нравится этот подход, потому что вы будете разбирать разделяемую память в любом состоянии, в котором вы оказались. Вы можете сделать это функцией, но она по-прежнему обрабатывается, которая должна быть независимой от состояния. Ей не нравится идея разбора разделяемой памяти в прерывании.
Любые комментарии к лучшему подходу? Если это помогает, мы используем инфраструктуру QP от Miro Samek для реализации государственного аппарата.
EDIT: переехал Statechart в ftp://hiddenoaks.asuscomm.com/Statechart.bmp
Существует слишком много возможных взаимодействий с остальной частью вашего кода для рассмотрения.Можно представить себе ужасающие реализации и превосходные реализации, соответствующие любому из ваших описаний. – jthill
@jthill - Есть ли способ генерировать диаграммы UML в столбце StackOverflow? Кажется, что диаграмма состояния поможет много. –
Я согласен с вашим мнением. По моему опыту, лучше создавать осмысленные события как можно раньше - идеально в прерываниях. –