Berkomunikasi dengan aplikasi tingkat tinggi
Aplikasi berkemampuan real-time (RTApps) berkomunikasi dengan aplikasi tingkat tinggi melalui buffer cincin yang dipetakan ke wilayah memori bersama.
Sampel IntercoreComms menunjukkan bagaimana RTApps dapat berkomunikasi dengan aplikasi tingkat tinggi. Gunakan sampel IntercoreComms_RTApp_MT3620_BareMetal sebagai titik awal untuk mengembangkan kode komunikasi RTApp Anda sendiri. Lihat Berkomunikasi dengan aplikasi berkemampuan real-time untuk informasi tentang kode yang diperlukan dalam aplikasi tingkat tinggi.
Penting
Untuk informasi tentang alamat pendaftaran dan detail khusus perangkat keras lainnya, minta "Panduan Programmer MT3620 M4" melalui email Azure.Sphere@avnet.com.
Operasi
Dari perspektif RTApp, komunikasi dengan aplikasi tingkat tinggi melibatkan operasi dasar berikut:
- Membaca informasi penyetelan dari kotak surat yang dibagikannya dengan inti tingkat tinggi di MT3620
- Membaca dan menulis data untuk berbagi memori
Menginisialisasi ukuran penyangga dan penunjuk
RTApp menerima informasi tentang buffer cincin melalui tiga pesan dalam kotak surat yang dibagikan inti real-time dan tingkat tinggi. Setiap pesan berisi perintah dan data. Dua pesan pertama menyediakan alamat dasar dari buffer baca dan tulis yang akan digunakan aplikasi untuk berkomunikasi; pesan ketiga menunjukkan transmisi informasi penyetelan untuk buffer selesai.
Nilai Perintah | Data |
---|---|
0xba5e0001 | Deskriptor buffer keluar (tulis) untuk RTApp |
0xba5e0002 | Deskriptor penyangga masuk (baca) untuk RTApp |
0xba5e0003 | Akhir penyiapan |
RTApp menghitung ukuran buffer baca dan tulis dan mengatur penunjuk ke posisi awal setiap buffer berdasarkan data dalam deskriptor buffer.
Lihat contoh IntercoreComms_RTApp_MT3620_BareMetal untuk detail tambahan tentang cara menggunakan kotak surat.
Membaca dari dan menulis ke buffer
Setelah inisialisasi, RTApp dapat membaca dan menulis ke penyangga. Karena komunikasi diimplementasikan dengan penyangga cincin, baik baca maupun tulisan dapat membungkus ke awal penyangga.
Pesan yang ditulis atau dibaca dari penyangga memiliki struktur berikut:
Header pesan | Konten pesan | ||||||
---|---|---|---|---|---|---|---|
|
|
Bidang pertama header pesan (16 byte) berisi ID komponen aplikasi tingkat tinggi.
Jika RTApp memulai komunikasi dengan aplikasi tingkat tinggi, pastikan bahwa urutan byte di masing-masing dari 3 segmen pertama ID komponen adalah little-endian (byte paling tidak signifikan terlebih dahulu). Urutan byte di dua segmen tersisa harus big-endian.
Jika RTApp merespons pesan dari aplikasi tingkat tinggi, Anda hanya perlu menyalin ID komponen dalam pesan sumber ke header pesan respons.
Bidang kedua header pesan (4 byte) saat ini dicadangkan dan harus berisi 0s.
Header pesan selalu diratakan pada batas 16-byte.
Saat ini, konten pesan bisa berukuran paling banyak 1 KB.
Setelah setiap operasi baca atau tulis ke buffer, RTApp menggunakan kotak surat bersama untuk memberi tahu aplikasi tingkat tinggi bahwa RTApp telah menerima atau mentransmisikan pesan.
Pengaturan manifes aplikasi
Aplikasi memanifestasikan untuk RTApp dan aplikasi tingkat tinggi harus mencantumkan ID komponen aplikasi yang berkomunikasi. Untuk mengonfigurasi pengaturan ini, tambahkan AllowedApplicationConnections
kapabilitas ke manifes aplikasi, lalu tambahkan setiap ID komponen ke kapabilitas. Manifes aplikasi Azure Sphere memiliki detail selengkapnya. Berikut adalah kutipan dari manifes aplikasi yang mengonfigurasi RTApp untuk berkomunikasi dengan satu aplikasi lainnya.
"AllowedApplicationConnections": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Aplikasi mitra
Saat Anda memuat aplikasi ke perangkat Azure Sphere, alat penyebaran Azure Sphere secara default menghapus semua aplikasi yang sudah ada. Untuk mencegah hal ini terjadi ketika Anda mengembangkan aplikasi yang berkomunikasi satu sama lain, Anda perlu menandai aplikasi sebagai mitra. Saat Anda menyebarkan salah satu aplikasi, mitranya tidak akan dihapus. Lihat Menandai aplikasi sebagai mitra untuk detailnya.