Поделиться через


Взаимодействие с приложением высокого уровня

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

Примеры IntercoreComms показывают, как ПРИЛОЖЕНИЯ RTApp могут взаимодействовать с высокоуровневыми приложениями. Используйте пример IntercoreComms_RTApp_MT3620_BareMetal в качестве отправной точки для разработки собственного кода связи RTApp. Сведения о коде, необходимом для высокоуровневого приложения, см. в статье Взаимодействие с приложением с поддержкой реального времени.

Важно

Для получения сведений об адресах регистрации и других сведений, относящихся к оборудованию, запросите руководство программиста MT3620 M4, отправив Azure.Sphere@avnet.comпо электронной почте .

Операции

С точки зрения RTApp взаимодействие с приложением высокого уровня включает в себя следующие основные операции:

  • Чтение сведений о настройке из почтового ящика, совместного с ядром высокого уровня в MT3620
  • Чтение и запись данных в общую память

Инициализация размеров буферов и указателей

RTApp получает сведения о кольцевом буфере через три сообщения в почтовом ящике, которые совместно используют ядра в режиме реального времени и ядра высокого уровня. Каждое сообщение содержит команду и данные. Первые два сообщения предоставляют базовые адреса буферов чтения и записи, которые приложения будут использовать для обмена данными; третье сообщение указывает, что передача сведений о настройке для буферов завершена.

Значение команды Данных
0xba5e0001 Исходящий дескриптор буфера (запись) для RTApp
0xba5e0002 Дескриптор входящего буфера (чтение) для RTApp
0xba5e0003 Окончание настройки

ПРИЛОЖЕНИЕ RTApp вычисляет размер буферов чтения и записи и настраивает указатели на начальную позицию каждого буфера на основе данных в дескрипторах буфера.

Дополнительные сведения об использовании почтового ящика см. в примере IntercoreComms_RTApp_MT3620_BareMetal.

Чтение из буферов и запись в буферы

После инициализации RTApp может выполнять чтение и запись в буферы. Так как обмен данными реализуется с помощью кольцевого буфера, операции чтения и записи могут переноситься в начало буфера.

Сообщения, записанные в буфер или считанные из него, имеют следующую структуру:

Заголовок сообщения Содержимое сообщения
Идентификатор компонента Защищены
16 байт 4 байта
Данных
0 – 1 КБ
  • Первое поле заголовка сообщения (16 байт) содержит идентификатор компонента приложения высокого уровня.

    Если ПРИЛОЖЕНИЕ RTApp инициирует обмен данными с приложением высокого уровня, убедитесь, что порядок байтов в каждом из первых 3 сегментов идентификатора компонента имеет значение little-endian (наименьший первый байт). Порядок байтов в оставшихся двух сегментах должен быть большим.

    Если ПРИЛОЖЕНИЕ RTApp отвечает на сообщение из приложения высокого уровня, необходимо просто скопировать идентификатор компонента в исходном сообщении в заголовок ответного сообщения.

  • В настоящее время второе поле заголовка сообщения (4 байта) зарезервировано и должно содержать 0.

  • Заголовок сообщения всегда выравнивается по 16-байтовой границе.

  • В настоящее время размер содержимого сообщения может составлять не более 1 КБ.

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

Параметры манифеста приложения

В манифестах приложения для RTApp и приложения высокого уровня должны быть перечислены идентификаторы компонентов приложений, с которыми они взаимодействуют. Чтобы настроить этот параметр, добавьте возможность в AllowedApplicationConnections манифест приложения, а затем добавьте каждый идентификатор компонента в возможность. Манифест приложения Azure Sphere содержит дополнительные сведения. Ниже приведен фрагмент манифеста приложения, который настраивает ПРИЛОЖЕНИЕ RTApp для взаимодействия с другим приложением.

"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Партнерские приложения

При загрузке приложения на устройство Azure Sphere средства развертывания Azure Sphere по умолчанию удаляют все существующие приложения. Чтобы избежать этого при разработке приложений, которые взаимодействуют друг с другом, необходимо пометить их как партнеров. При развертывании одного из приложений его партнеры не будут удалены. Дополнительные сведения см. в разделе Пометка приложений как партнеров .