Взаимодействие с приложением высокого уровня
Приложения, поддерживающие режим реального времени (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 байт) содержит идентификатор компонента приложения высокого уровня.
Если ПРИЛОЖЕНИЕ 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 по умолчанию удаляют все существующие приложения. Чтобы избежать этого при разработке приложений, которые взаимодействуют друг с другом, необходимо пометить их как партнеров. При развертывании одного из приложений его партнеры не будут удалены. Дополнительные сведения см. в разделе Пометка приложений как партнеров .