Saya memprogram papan penemuan STM32 Cortex M0 (32F0308DISCOVERY) menggunakan OpenOCD, arm-none-eabi-gcc, dan gdb. Saya bertanya-tanya apakah ada cara mudah untuk mencatat pesan debug melalui SWD. Saya sudah membaca tentang opsi semihosting, tetapi ini tampaknya memerlukan menarik di newlib atau perpustakaan besar lainnya. (Hanya tersedia 64k flash.) Apakah ada cara yang lebih ringan untuk mencatat teks melalui SWD, atau menggunakan UART satu-satunya pilihan praktis?
15
Jawaban:
Terima kasih atas petunjuk, tanda dan chris-stratton. Opsi semihosting ternyata cukup mudah. Saya berhasil menemukan sumber untuk beberapa rutinitas logging sederhana yang dapat mengirim pesan ke konsol OpenOCD. Saya akan mempostingnya di sini karena (i) mereka memerlukan beberapa modifikasi untuk bekerja dan (ii) Saya pikir info ini tidak super mudah ditemukan bagi orang-orang yang baru memulai.
Pertama, kode D di sini mudah disesuaikan untuk menyediakan fungsi C berikut:
Contoh memanggil send_command untuk menulis string ke konsol OpenOCD:
Kedua, fungsi putChar yang diberikan dalam komentar di sini berfungsi dengan baik, kecuali bahwa saya harus menambahkan '#' sebelum 0x03:
Untuk melihat output dari fungsi-fungsi ini, pertama-tama saya memulai OpenOCD, kemudian terhubung menggunakan arm-none-eabi-gdb sebagai berikut:
Perhatikan bahwa pesan muncul di stdout dari proses OpenOCD, bukan di konsol GDB.
sumber
putchar
sesederhanavoid putchar(char c) { send_command(3,&c); }