Gerçek zamanlı uyumlu bir uygulama oluşturma
Gerçek zamanlı özellikli uygulamalar (RTApps) geliştirmek ve hatalarını üst düzey uygulamalarla aynı şekilde ayıklamak için Visual Studio, Visual Studio Code veya komut satırını (CLI) kullanabilirsiniz.
Önkoşullar
- Azure Sphere cihazınızı bilgisayarınıza bağlama
- Azure Sphere'ı yükleme
- GNU Arm Embedded araç zincirini yükleme
- Daha önce yapmadıysanız, ayrılmış UART'tan çıkışı görüntülemek için donanımı ayarlayın
Geliştirmeyi ve hata ayıklamayı etkinleştirme
Azure Sphere cihazınızda örnek bir uygulama oluşturabilmeniz veya bunun için yeni uygulamalar geliştirebilmeniz için önce geliştirmeyi ve hata ayıklamayı etkinleştirmeniz gerekir. Varsayılan olarak, Azure Sphere cihazları "kilitlidir"; başka bir ifadeyle, geliştirme aşamasındaki uygulamaların bir bilgisayardan yüklenmesine izin vermezler ve uygulamaların hata ayıklamasına izin vermezler. Cihazı hata ayıklamaya hazırlamak, bu kısıtlamayı kaldırır ve hata ayıklama için gereken yazılımları yükler ve Cihaz özellikleri ve iletişim bölümünde açıklandığı gibi cihaz özelliklerinin kilidini açar.
Gerçek zamanlı çekirdeklerde hata ayıklamak için azsphere device enable-development komutunu kullanın. Bu komut, cihazı hata ayıklama için bir bilgisayardan uygulamaları kabul etmek üzere yapılandırıp cihazı bulut uygulaması güncelleştirmelerine izin vermeyen Geliştirme cihaz grubuna atar. Uygulama geliştirme ve hata ayıklama sırasında, bulut uygulaması güncelleştirmelerinin geliştirme aşamasındaki uygulamanın üzerine yazmaması için cihazı bu grupta bırakmanız gerekir.
Windows'da hata ayıklama sunucularını ve her çekirdek türü için gerekli sürücüleri cihaza yükleyen parametresini eklemeniz --enable-rt-core-debugging
gerekir.
Henüz yapmadıysanız Azure Sphere'da oturum açın:
azsphere login
Yönetici ayrıcalıklarıyla PowerShell veya Windows Komut İstemi kullanarak bir komut satırı arabirimi açın.
--enable-rt-core-debugging
parametresi, hata ayıklayıcısı için USB sürücüleri yüklediğinden yönetici ayrıcalığı gerektirir.Aşağıdaki komutu girin:
azsphere device enable-development --enable-rt-core-debugging
Yönetici ayrıcalığı artık gerekli olmadığından, komut tamamlandıktan sonra pencereyi kapatın. En iyi uygulama olarak, her zaman bir görevi gerçekleştirebilecek en düşük ayrıcalığı kullanmanız gerekir.
Azsphere cihazı geliştirmeyi etkinleştirme komutu başarısız olursa yardım için bkz. Azure Sphere sorunlarını giderme.
Geliştirmeyi ve hata ayıklamayı etkinleştirme
Azure Sphere cihazınızda örnek bir uygulama oluşturabilmeniz veya bunun için yeni uygulamalar geliştirebilmeniz için önce geliştirmeyi ve hata ayıklamayı etkinleştirmeniz gerekir. Varsayılan olarak, Azure Sphere cihazları "kilitlidir"; başka bir ifadeyle, geliştirme aşamasındaki uygulamaların bir bilgisayardan yüklenmesine izin vermezler ve uygulamaların hata ayıklamasına izin vermezler. Cihazı hata ayıklamaya hazırlamak, bu kısıtlamayı kaldırır ve hata ayıklama için gereken yazılımları yükler ve Cihaz özellikleri ve iletişim bölümünde açıklandığı gibi cihaz özelliklerinin kilidini açar.
Gerçek zamanlı çekirdeklerde hata ayıklamak için azsphere device enable-development komutunu kullanın. Bu komut, cihazı hata ayıklama için bir bilgisayardan uygulamaları kabul etmek üzere yapılandırıp cihazı bulut uygulaması güncelleştirmelerine izin vermeyen Geliştirme cihaz grubuna atar. Uygulama geliştirme ve hata ayıklama sırasında, bulut uygulaması güncelleştirmelerinin geliştirme aşamasındaki uygulamanın üzerine yazmaması için cihazı bu grupta bırakmanız gerekir.
Windows'da hata ayıklama sunucularını ve her çekirdek türü için gerekli sürücüleri cihaza yükleyen parametresini eklemeniz --enable-rt-core-debugging
gerekir.
Henüz yapmadıysanız Azure Sphere'da oturum açın:
azsphere login
Yönetici ayrıcalıklarına sahip PowerShell, Windows Komut İstemi veya Linux komut kabuğunu kullanarak bir komut satırı arabirimi açın.
--enable-rt-core-debugging
parametresi, hata ayıklayıcısı için USB sürücüleri yüklediğinden yönetici ayrıcalığı gerektirir.Aşağıdaki komutu girin:
azsphere device enable-development --enable-rt-core-debugging
Yönetici ayrıcalığı artık gerekli olmadığından, komut tamamlandıktan sonra pencereyi kapatın. En iyi uygulama olarak, her zaman bir görevi gerçekleştirebilecek en düşük ayrıcalığı kullanmanız gerekir.
Azsphere cihaz etkinleştirme-geliştirme komutu aşağıdaki hata iletisiyle başarısız olursa yardım için bkz. Azure Sphere sorunlarını giderme.
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'azsphere device show-deployment-status'.
Visual Studio Code kullanarak RTApp oluşturma
RTApp oluşturmak için:
Visual Studio Code'da, Azure Sphere örnek deposu kopyanızdaki HelloWorld_RTApp_MT3620_BareMetal klasörünü açın. Bir set seçmeniz istenirse "Set kullanmayın" seçeneğini belirleyin.
Hata ayıklayıcıyı başlatmak için F5 tuşuna basın. Proje daha önce oluşturulmamışsa veya dosyalar değişmişse ve yeniden derleme gerekiyorsa, Visual Studio Code hata ayıklama başlamadan önce projeyi oluşturur.
Bağlı terminal öykünücüsü uygulamanın çıkışını göstermelidir. Program aşağıdaki sözcükleri bir saniyelik aralıklarla gönderir:
Tick
Tock
Not
Visual Studio Code IntelliSense sağlar, ancak CMakeLists.txt değiştirdiğinizde otomatik olarak güncelleştirilmez. IntelliSense'i yenilemek için CMake: Önbelleği Sil ve Yeniden Yapılandır komutunu çalıştırmanız gerekir. CMake hedefleri görünümü, sol çubuktaki CMake uzantısı görünümünde bulunabilir.
Visual Studio kullanarak RTApp'i derleme
RTApp oluşturmak için:
Visual Studio'da Dosya>CMake'i seçin ve örneği içeren klasöre gidin.
CMake oluşturma işlemi otomatik olarak başlatılmazsa CMakeLists.txt dosyasını seçin.
Visual Studio'daÇıkış>Göster çıkışınıgörüntüle>: CMake çıkışı iletileri
CMake generation started.
veCMake generation finished.
CMake menüsünde (varsa) Tümünü Derle'yi seçin. Menü yoksa Çözüm Gezgini açın, CMakeLists.txt dosyasına sağ tıklayın ve Oluştur'u seçin. Azure Sphere uygulamasının çıkış konumu Çıkış penceresinde görünür.
Uygulamayı dağıtmak için F5 tuşuna basın.
Bağlı terminal öykünücüsü uygulamanın çıkışını göstermelidir. Program aşağıdaki sözcükleri bir saniyelik aralıklarla gönderir:
Tick
Tock
Not
Visual Studio, CMake önbelleğinden veri toplayarak Azure Sphere RTApps için IntelliSense sağlar. Visual Studio, RTApp'teki CMakeLists.txt veya CMakeSettings.json dosyası her değiştiğinde önbelleği güncelleştirir.
Varsayılan olarak, Visual Studio Klasör görünümünü kullanır. CMake projesinin mantıksal görünümünü tercih ederseniz, CMake Hedefleri görünümüne geçiş yapabilirsiniz. Çözüm Gezgini klasör iki durumlu düğmesini seçin:
Açılan menüdeN CMake Hedefleri Görünümü'nü seçin.
Uygulama, OpenOCD bağlantı oluşturmadan önce yürütülüyor olabilir. Sonuç olarak, kodun başında ayarlanan kesme noktaları kaçırılabilir. Bunun için basit bir geçici çözüm, OpenOCD bağlanana kadar uygulamanın başlatılmasını geciktirmektir.
Uygulama giriş noktası RTCoreMain'in başına aşağıdaki kodu ekleyin. Bu, değişkeni
f
true olarak ayarlanana kadar uygulamanın bir döngüye girmesine ve döngüdewhile
kalmasına neden olur.volatile bool f = false; while (!f) { // empty. }
Uygulamayı hata ayıklama ile başlatmak için F5 tuşuna basın ve ardından yürütmeye bölün.
Yerel ayarlar hata ayıklama bölmesinde değerini sıfırdan bire değiştirin
f
.Kodda normal şekilde ilerleyin.
CLI kullanarak RTApp oluşturma
Aşağıdaki yönergelerde CMake kullandığınız varsayılır. CMake kullanmadan komut satırında derlemeyi tercih ederseniz, Azure Sphere SDK ile yüklenen AzureSphereToolchainBase.cmake ve AzureSphereRTCoreToolchain.cmake dosyalarına bakarak uygun derleyici ve bağlayıcı seçeneklerini belirleyebilirsiniz.
PowerShell, Windows Komut İstemi veya Linux komut kabuğunu kullanarak bir komut satırı arabirimi açın. Proje derleme dizininize gidin.
Proje derleme dizininizden komut isteminde CMake'i aşağıdaki parametrelerle çalıştırın:
cmake --preset <preset-name> <source-path>
--preset <preset-name>
CMakePresets.json'de tanımlanan derleme yapılandırması önayar adı.
--build <cmake-path>
CMake önbelleğini içeren ikili dizin. Örneğin, CMake'i bir Azure Sphere örneğinde çalıştırırsanız derleme komutu olacaktır
cmake --build out/ARM-Debug
.<source-path>
Örnek uygulamanın kaynak dosyalarını içeren dizinin yolu. Örnekte Azure Sphere örnek deposu AzSphere adlı bir dizine indirildi.
CMake parametreleri boşluklarla ayrılır. Satır devamlılığı karakteri (Windows komut satırı için^, Linux komut satırı için \ veya PowerShell için ' ) okunabilirlik için kullanılabilir, ancak gerekli değildir.
Aşağıdaki örneklerde HelloWorld RTApp için CMake komutları gösterilmektedir:
Uygulamayı derlemek ve görüntü paketi dosyasını oluşturmak için Ninja'yi çalıştırın:
ninja -C out/ARM-Debug
Ninja, sonuçta elde edilen uygulamayı ve .imagepackage dosyalarını belirtilen dizine yerleştirir.
Aşağıdaki komutla CMake aracılığıyla Ninja'ya da çağrı yapabilirsiniz:
cmake --build out/<binary-dir>
CMake önbelleğini içeren ikili dizine ayarlayın
<binary-dir>
. Örneğin, CMake'i bir Azure Sphere örneğinde çalıştırırsanız derleme komutu olacaktırcmake --build out/ARM-Debug
.Cihaza zaten dağıtılmış olan tüm uygulamaları silin:
azsphere device sideload delete
Ninja'nın oluşturduğu görüntü paketini dağıtın:
azsphere device sideload deploy --image-package <package-name>
Görüntünün bileşen kimliğini alın:
azsphere image-package show --image-package <path-to-imagepackage>
komutu, görüntü paketi için tüm meta verileri döndürür. Uygulamanın bileşen kimliği, Uygulama Görüntü Türü'ne ilişkin Kimlik bölümünde görünür. Örneğin:
Image package metadata: Section: Identity Image Type: Application Component ID: <component id> Image ID: <image id>
Uygulamanızın hangi çekirdekte çalıştığını belirleyin.
Varsayılan olarak RTApp, cihazdaki kullanılabilir ilk gerçek zamanlı çekirdeğe dağıtılır; şu anda belirli bir çekirdek belirtemezsiniz. Uygulamanın hangi çekirdekte çalıştığını öğrenmek için azsphere cihaz uygulaması komutunu kullanarak uygulamayı durdurun ve yeniden başlatın. Komutlarda uygulamanın bileşen kimliğini sağlayın. Örneğin:
azsphere device app stop --component-id <component id> <component id>: App state: stopped
azsphere device app start --component-id <component id> <component id> App state: running Core : Real-time 0
Bağlı terminal öykünücüsü uygulamanın çıkışını göstermelidir. Program aşağıdaki sözcükleri bir saniyelik aralıklarla gönderir:
Tick
Tock
RTApp'ten günlük çıkışı
MT3620'de her gerçek zamanlı çekirdek, çıkışı günlüğe kaydetmeye yönelik ayrılmış bir UART'a sahiptir. Gerçek zamanlı çekirdekler, ISU UART'lerine de erişebilir. MT3620 RDB yalnızca uygulamadan günlük çıkışını görüntülemek için kullanabileceğiniz TX pinini kullanıma sunar. Diğer donanımlar bunu farklı bir şekilde kullanıma sunabilir veya hiç kullanıma sunmayabilir. Günlük çıkışını görmek için, donanımınızı hızlı başlangıçta açıklandığı gibi bu çıkışı görüntüleyecek şekilde ayarlayın. Ayrılmış UART için uygulama bildirimi gereksinimi gerekmez Uart
; ancak RTApp için çıkışı günlüğe kaydetme dışında amaçlar için kullanılmamalıdır.
İş ortağı uygulamalarıyla geliştirme
Azure Sphere cihazına bir uygulama yüklediğinizde, Azure Sphere dağıtım araçları varsayılan olarak tüm mevcut uygulamaları siler. Birbiriyle iletişim kuran uygulamalar geliştirirken bunun olmasını önlemek için uygulamaları iş ortağı olarak işaretlemeniz gerekir. Uygulamalardan birini dağıttığınızda iş ortakları silinmez. Ayrıntılar için bkz. Uygulamaları iş ortağı olarak işaretleme .
Sorun giderme
Sorunlarla karşılaşırsanız bkz. Gerçek zamanlı özellikli uygulamalarla ilgili sorunları giderme.
Ek kaynaklar
MT3620 yongasında M4 gerçek zamanlı çekirdeklerini hedefleyen RTApps için ek sürücüler ve örnekler Azure Sphere iş ortaklarından GitHub'da kullanılabilir: