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


Обмен данными с высокоуровневым приложением

Внимание

Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).

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

Примеры IntercoreComms показывают, как приложения RTApp могут взаимодействовать с высокоуровневыми приложениями. Используйте пример IntercoreComms_RTApp_MT3620_BareMetal в качестве отправной точки для разработки собственного кода взаимодействия приложения RTApp. См. подробнее о коде для высокоуровневых приложений в руководстве по организации обмена данными с приложениями с поддержкой реального времени.

Внимание

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

Операция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Манифесты для приложения RTApp и высокоуровневого приложения должны содержать список идентификаторов компонентов приложений, с которыми они взаимодействуют. Чтобы настроить этот параметр, добавьте возможность AllowedApplicationConnections в манифест приложения, а затем добавьте в нее каждый идентификатор компонента этой возможности. Манифест приложения Azure Sphere содержит дополнительные сведения. Ниже приведен фрагмент из манифеста приложения, который настраивает RTApp для взаимодействия с другим приложением.

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

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

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