Bagikan melalui


Aplikasi mitra debug

  1. Pastikan perangkat Anda tersambung ke PC menggunakan USB. Dalam menu Atur item mulai , pilih Aplikasi Azure Sphere (Semua Inti) di mana Aplikasi Azure Sphere adalah nama proyek tingkat atas Anda atau tekan F5.

    Tombol Debugger GDB Jarak Jauh

  2. Jika Diminta untuk menyusun proyek, pilih Ya. Visual Studio mengumpulkan aplikasi mitra, membuat paket gambar, memuat sisinya ke papan, dan memulainya dalam mode debug. Muat sisi berarti bahwa aplikasi dikirim langsung dari PC melalui koneksi berkabel, daripada dikirim melalui cloud.

    Perhatikan jalur dalam output TampilkanOutput>Tampilkan>dari: Output build, yang menunjukkan lokasi paket gambar output di PC Anda. Jika sudah siap untuk membuat penyebaran, Anda perlu mengetahui jalur ke paket gambar.

  3. Secara default, jendela Output memperlihatkan output dari Output Perangkat. Untuk melihat pesan dari debugger, pilih Debug dari menu menurun Perlihatkan output dari: . Anda juga dapat memeriksa pembongkaran, pendaftaran, atau memori program melalui menu Debug>Windows .

Jika Anda memiliki dua RTApp, pastikan keduanya tercantum sebagai aplikasi mitra dalam file launch.vs.json tingkat atas.

Gunakan debugger Visual Studio untuk mengatur titik hentian, jeda, melangkah, masuk, memulai ulang, atau menghentikan aplikasi.

Selagi berhenti di titik hentian dalam kode sumber C, Anda dapat membuka jendela Disassembly yang memperlihatkan alamat saat ini, mnemonic perakit untuk perintah saat ini, dan informasi seperti register yang dilibatkan atau perintah kode sumber sedang dijalankan.

Untuk membuka jendela Disassembly :

  1. Pastikan bahwa file sumber kode C yang berisi titik hentian terbuka di Visual Studio.
  2. Pilih Debug>Windows>Disassembly, atau tekan Alt+8.
  1. Buka folder yang berisi aplikasi mitra Anda. Visual Studio Code mendeteksi file ruang kerja dan menanyakan apakah Anda ingin membuka ruang kerja. Pilih Buka Ruang Kerja untuk membuka aplikasi real-time dan aplikasi tingkat tinggi sekaligus.

  2. Klik kanan salah satu dari dua file CMakeLists.txt dan pilih Susun Semua Proyek.

  3. Klik ikon Jalankan di Bilah Aktivitas Visual Studio Code.

  4. Pada menu tarik turun yang muncul di bagian atas jendela di sisi kiri layar, pilih Luncurkan Aplikasi Azure Sphere (gdb)(ruang kerja).

  5. Tekan F5 untuk menyusun dan men-debug proyek. Jika proyek belum dibuat sebelumnya, atau jika file telah diubah dan dibuat ulang diperlukan, Visual Studio Code akan membuat proyek sebelum proses debug dimulai.

  6. Tunggu beberapa detik hingga Visual Studio Code menyusun aplikasi, membuat paket gambar, menyebarkannya ke papan, dan memulainya dalam mode debug. Anda akan melihat pembaruan status di panel Output di sepanjang jalan.

    Pertama, CMake menentukan apakah aplikasi perlu dibuat. Jika demikian, fokus bergeser ke jendela output, yang menampilkan output dari CMake/Build.

    Berikutnya, panel output memperlihatkan output saat menyebarkan paket gambar ke perangkat. Akhirnya, Konsol Debug menerima fokus dan memperlihatkan output gdb.

Gunakan Visual Studio Code debugger untuk mengatur titik hentian, jeda, melangkah, masuk, memulai ulang, atau menghentikan aplikasi.

Saat berhenti di titik hentian dalam kode sumber C, Anda dapat membuka tampilan Disassembly yang memperlihatkan alamat saat ini, data heks mentah, mnemonic perakit untuk perintah saat ini, dan informasi seperti register yang terlibat atau perintah kode sumber sedang dijalankan.

Untuk membuka tampilan Disassembly:

  1. Pastikan bahwa file sumber kode C yang berisi titik hentian terbuka di editor Visual Studio Code.
  2. Klik kanan di jendela editor dan pilih Buka Tampilan Disassembly atau pilih Tampilkan>Tampilan> Palet PerintahBuka Disassembly.
  1. Hentikan aplikasi berkemampuan real-time jika sedang berjalan.

    az sphere device app stop --component-id <component id>
    
  2. Mulai ulang aplikasi berkemampuan real-time dengan debugging.

    az sphere device app start --component-id <component id>
    

    Perintah ini mengembalikan inti tempat aplikasi dijalankan.

      <component id>
      App state   : running
      Core        : Real time 0
    
  3. Navigasikan ke folder Openocd untuk sysroot yang dibangun dengan aplikasi. Sysroots diinstal di folder penginstalan Azure Sphere SDK. Misalnya, di Windows folder diinstal secara default di dan di C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd Linux, di /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Jalankan openocd seperti yang diperlihatkan contoh berikut ini. Contoh mengasumsikan aplikasi berjalan pada inti 0. Jika aplikasi berjalan di core 1, ganti "target io0" dengan "target io1".

    openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Buka antarmuka baris perintah menggunakan PowerShell, Windows Command Prompt, atau shell perintah Linux.

  6. Navigasikan ke folder yang berisi file .out aplikasi berkemampuan real-time dan mulai arm-none-eabi-gdb, yang merupakan bagian dari Toolchain GNU Arm Embedded:

    Prompt Perintah Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  7. Server OpenOCD menyediakan antarmuka server GDB pada :4444. Atur target untuk proses debug.

    target remote :4444

  8. Kini Anda dapat menjalankan perintah gdb. Tambahkan titik hentian pada fungsi HandleSendTimerDeferred:

    break HandleSendTimerDeferred

  9. Emulator terminal yang terhubung harus menampilkan output dari aplikasi yang berkemampuan real-time.

  10. Buka jendela Azure Sphere Command Prompt (Windows) atau terminal (Linux) baru.

  11. Navigasikan ke folder yang berisi file .imagepackage aplikasi tingkat tinggi.

  12. Jika aplikasi sedang berjalan, hentikan, lalu mulai ulang dengan proses debug:

    az sphere device app stop --component-id <ComponentId>
    
    az sphere device app start --debug-mode --component-id <ComponentId>
    
  13. Buka emulator terminal dan buat koneksi Telnet atau TCP ke 192.168.35.2 di port 2342 untuk melihat output aplikasi tingkat tinggi.

  14. Mulai gdb dengan perintah berikut:

    Prompt Perintah Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Catatan

    SDK Azure Sphere dikirim dengan beberapa sysroot sehingga aplikasi dapat menargetkan kumpulan API yang berbeda, seperti yang dijelaskan dalam Versi runtime aplikasi, sysroot, dan API Beta. Sysroot diinstal di folder penginstalan Azure Sphere SDK di bawah Sysroots.

  15. Atur target debugging jarak jauh ke alamat IP 192.168.35.2 pada port 2345:

    target remote 192.168.35.2:2345
    
  16. Tambahkan titik hentian di fungsi SendMessageToRTApp:

    break SendMessageToRTApp
    
  17. Ketik c untuk melanjutkan, amati output di terminal Telnet/TCP Anda, lalu beralih ke prompt perintah atau jendela terminal yang berisi sesi debugging aplikasi real-time Anda.

  18. Ketik c untuk melanjutkan dan mengamati output dalam sesi seri yang tersambung.

Anda dapat bekerja bolak-balik antara sesi debugging, beralih antara aplikasi berkemampuan real-time dan aplikasi tingkat tinggi. Anda akan melihat output yang mirip dengan yang berikut ini di dua jendela output:

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

Untuk mengakhiri setiap sesi debugging, ketikkan q perintah gdb.