Обмен данными с высокоуровневым приложением
Внимание
Это документация по 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 байт) содержит идентификатор компонента высокоуровневого приложения.
Если RTApp инициирует обмен данными с высокоуровневым приложением, убедитесь, что упорядочение байтов в каждом из первых трех сегментов идентификатора компонента имеет прямой порядок байтов (первым идет минимальный значащий байт). Порядок байтов в оставшихся двух сегментах должен быть обратным.
Если RTApp отвечает на сообщение из приложения высокого уровня, необходимо просто скопировать идентификатор компонента из исходного сообщения в заголовок ответного сообщения.
Второе поле заголовка сообщения (4 байта) в настоящее время зарезервировано и должно содержать только нулевые значения.
Заголовок сообщения никогда не превышает 16 байтов.
В настоящее время содержимое сообщения может иметь размер не более 1 КБ.
После каждой операции чтения или записи в буфер приложение RTApp использует общий почтовый ящик, чтобы уведомить высокоуровневое приложение о том, что получено или отправлено сообщение.
Параметры в манифесте приложения
Манифесты для приложения RTApp и высокоуровневого приложения должны содержать список идентификаторов компонентов приложений, с которыми они взаимодействуют. Чтобы настроить этот параметр, добавьте возможность AllowedApplicationConnections
в манифест приложения, а затем добавьте в нее каждый идентификатор компонента этой возможности. Манифест приложения Azure Sphere содержит дополнительные сведения. Ниже приведен фрагмент из манифеста приложения, который настраивает RTApp для взаимодействия с другим приложением.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Партнерские приложения
Когда вы загружаете приложение на устройство Azure Sphere, по умолчанию средства развертывания этой службы удаляют все существующие приложения. Чтобы предотвратить это при разработке приложений, взаимодействующих друг с другом, необходимо пометить приложения как партнеров. При развертывании одного из приложений его партнеры не будут удалены. См. сведения о том, как помечать приложения как партнерские.