Aracılığıyla paylaş


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

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.

  1. Henüz yapmadıysanız Azure Sphere'da oturum açın:

    azsphere login
    
  2. 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.

  3. Aşağıdaki komutu girin:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. 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.

  1. Henüz yapmadıysanız Azure Sphere'da oturum açın:

    azsphere login
    
  2. 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.

  3. Aşağıdaki komutu girin:

    azsphere device enable-development --enable-rt-core-debugging
    
  4. 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:

  1. 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.

  2. 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.

  3. 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:

  1. Visual Studio'da Dosya>CMake'i seçin ve örneği içeren klasöre gidin.

  2. CMake oluşturma işlemi otomatik olarak başlatılmazsa CMakeLists.txt dosyasını seçin.

  3. Visual Studio'daÇıkış>Göster çıkışınıgörüntüle>: CMake çıkışı iletileri CMake generation started. veCMake generation finished.

  4. 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.

  5. Uygulamayı dağıtmak için F5 tuşuna basın.

  6. 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:

      Çözüm ve Klasör görünümleri arasında geçiş yapma

      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.

      1. Uygulama giriş noktası RTCoreMain'in başına aşağıdaki kodu ekleyin. Bu, değişkeni ftrue olarak ayarlanana kadar uygulamanın bir döngüye girmesine ve döngüde while kalmasına neden olur.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Uygulamayı hata ayıklama ile başlatmak için F5 tuşuna basın ve ardından yürütmeye bölün.

      3. Yerel ayarlar hata ayıklama bölmesinde değerini sıfırdan bire değiştirinf.

      4. 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.

  1. PowerShell, Windows Komut İstemi veya Linux komut kabuğunu kullanarak bir komut satırı arabirimi açın. Proje derleme dizininize gidin.

  2. 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:

    Windows Komut İstemi

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. 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ır cmake --build out/ARM-Debug.

  4. Cihaza zaten dağıtılmış olan tüm uygulamaları silin:

    azsphere device sideload delete
    
  5. Ninja'nın oluşturduğu görüntü paketini dağıtın:

    azsphere device sideload deploy --image-package <package-name>
    
  6. 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>
    
  7. 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
    
  8. 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: