Udostępnij za pośrednictwem


Komunikowanie się za pomocą aplikacji wysokiego poziomu

Aplikacje obsługjące czas rzeczywisty (RTApps) komunikują się z aplikacjami wysokiego poziomu za pośrednictwem buforu pierścieniowego zamapowanego na udostępniony obszar pamięci.

Próbki IntercoreComms pokazują, jak aplikacje RTApps mogą komunikować się z aplikacjami wysokiego poziomu. Użyj próbki IntercoreComms_RTApp_MT3620_BareMetal jako punktu wyjścia do opracowania własnego kodu komunikacji RTApp. Aby uzyskać informacje o kodzie wymaganym w aplikacji wysokiego poziomu, zobacz Komunikowanie się za pomocą aplikacji obsługowej w czasie rzeczywistym .

Ważne

Aby uzyskać informacje o adresach rejestru i innych szczegółach dotyczących sprzętu, poproś o "Przewodnik programisty MT3620 M4", wysyłając Azure.Sphere@avnet.comwiadomość e-mail.

Operacji

Z perspektywy FUNKCJI RTApp komunikacja z aplikacją wysokiego poziomu obejmuje następujące podstawowe operacje:

  • Odczytywanie informacji o konfiguracji ze skrzynki pocztowej, która jest udostępniana, z podstawowym elementem wysokiego poziomu na MT3620
  • Odczytywanie i zapisywanie danych w pamięci udostępnionej

Inicjowanie buforu rozmiarów i wskaźników

Aplikacja RTApp otrzymuje informacje o buforze pierścieniowym za pośrednictwem trzech wiadomości w skrzynce pocztowej udostępnianych przez rdzenie w czasie rzeczywistym i na wysokim poziomie. Każda wiadomość zawiera polecenie i dane. Pierwsze dwa komunikaty zawierają adresy bazowe buforów odczytu i zapisu, które będą używane przez aplikacje do komunikowania się; Trzeci komunikat wskazuje, że przesyłanie informacji o konfiguracji buforów zostało zakończone.

Wartość polecenia Danych
0xba5e0001 Deskryptor buforu ruchu wychodzącego (zapisu) dla funkcji RTApp
0xba5e0002 Deskryptor buforu ruchu przychodzącego (odczytu) dla aplikacji RTApp
0xba5e0003 Koniec konfiguracji

Funkcja RTApp oblicza rozmiar buforów odczytu i zapisu oraz konfiguruje wskaźniki do początkowej pozycji każdego buforu na podstawie danych w deskryptorach buforu.

Zobacz przykład IntercoreComms_RTApp_MT3620_BareMetal, aby uzyskać dodatkowe informacje na temat korzystania ze skrzynki pocztowej.

Odczyt i zapis do buforów

Po zainicjowaniu funkcja RTApp może odczytywać i zapisywać w buforach. Ponieważ komunikacja jest implementowana za pomocą buforu pierścieniowego, zarówno odczyty, jak i zapisy mogą być zawijane wokół początku buforu.

Wiadomości zapisane lub przeczytane z buforu mają następującą strukturę:

Nagłówek wiadomości Zawartość wiadomości
Identyfikator składnika Zastrzeżone
16 bajtów 4 bajty
Danych
0– 1 KB
  • Pierwsze pole nagłówka wiadomości (16 bajtów) zawiera identyfikator składnika aplikacji wysokiego poziomu.

    Jeśli APLIKACJA RTApp inicjuje komunikację z aplikacją wysokiego poziomu, upewnij się, że kolejność bajtów w każdym z pierwszych 3 segmentów identyfikatora składnika jest mało endianna (najpierw najmniej znaczący bajt). Kolejność bajtów w pozostałych dwóch segmentach musi być big-endian.

    Jeśli aplikacja RTApp odpowiada na wiadomość z aplikacji wysokiego poziomu, wystarczy skopiować identyfikator składnika w wiadomości źródłowej do nagłówka wiadomości odpowiedzi.

  • Drugie pole nagłówka wiadomości (4 bajty) jest obecnie zarezerwowane i musi zawierać liczby 0.

  • Nagłówek wiadomości jest zawsze wyrównany do granicy 16-bajtowej.

  • Obecnie zawartość wiadomości może mieć maksymalnie 1 KB.

Po każdej operacji odczytu lub zapisu do buforu aplikacja RTApp używa udostępnionej skrzynki pocztowej do powiadomienia aplikacji wysokiego poziomu o odebraniu lub przesłaniu wiadomości.

Ustawienia manifestu aplikacji

Manifesty aplikacji dla aplikacji RTApp i aplikacji wysokiego poziomu muszą zawierać listę identyfikatorów składników aplikacji, z którymi się komunikują. Aby skonfigurować to ustawienie, dodaj funkcję AllowedApplicationConnections do manifestu aplikacji, a następnie dodaj każdy identyfikator składnika do funkcji. Manifest aplikacji Azure Sphere zawiera więcej szczegółów. Oto fragment manifestu aplikacji, który konfiguruje RTApp do komunikowania się z jedną inną aplikacją.

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

Aplikacje partnerów

Po załadowaniu aplikacji na urządzenie Azure Sphere narzędzia wdrażania Azure Sphere domyślnie usuwają wszystkie istniejące aplikacje. Aby zapobiec temu, gdy tworzysz aplikacje, które komunikują się ze sobą, musisz oznaczyć aplikacje jako partnerów. Po wdrożeniu jednej z aplikacji jej partnerzy nie zostaną usunięci. Aby uzyskać szczegółowe informacje, zobacz Oznaczanie aplikacji jako partnerów .