Debugging GDB penuh melalui USB pada papan BluePill (STM32F103ะก8T)

Artikel ini akan fokus pada pemrograman dan debugging lengkap mikrokontroler STM32F103C8T6 melalui USB.





Suatu ketika, rekan kerja menerima tawaran untuk berpartisipasi dalam proyek IoT. Sistem disediakan untuk peluncuran skrip utas tunggal. Debugging dilakukan menggunakan log. Dan kemudian saya mendapat ide tentang proyek debugging jarak jauh yang lengkap untuk mikrokontroler.





, . BluePill STM32F103. MicroUSB, . UART GSM .





, . :





  1. USB .





  2. GDB.





  3. GDB .





  4. .





. (bootloader).





1. . .. USB. USB- WinUSB. libopencm3. , , , , "MSFT100" "WINUSB". WinUSB. (USB-Endpoint) control endpoint 0, bulk out endpoint 1, bulk in endpoint 81, bulk in endpoint 82. USB, endpoint 1- , endpoint 81 - , 82 - (). USB "USB in a NutShell".





2. . . . , ,- . , Cortex M . Thread Handler. , . Handler mode . , flash- STM32F103C8T6 Handler , .





Flash Thread . , , . . , - , , . , , . , , , . , , "" , Flash .





. , , , , . . ,- , . , Bootloader-e. , . " " . - .





3. GDB-. BlackMagic, . arm-none-eabi-gdb. , . GDB- WinUSB.





4. , printf. endpoint 82. 8 - , USB (Host-).





printf bootloader-. ? , , / . , BIOS int13, ms-dos int21. , .. "svc". , SVC, bootloader-. .





Bootloader 10Kb flash , 16Kb . 4K . USB, , . . 16Kb 20Kb 48Kb flash . Flash- STM32F103C8T6 64Kb 128Kb,- 112Kb.





, . , , , . , step . , , .





, - :





  1. GDB. .. /. STM32CubeIDE. 0x8004000.





  2. .





  3. .





  4. .





  5. .





  6. .





  7. Berhenti paksa.





  8. Debug pencetakan ke konsol server GDB.





Dalam firmware yang di-debug, Anda tidak dapat mengubah alamat vektor penangan interupsi. Meskipun dimungkinkan untuk menambahkan panggilan sistem setVectorBase, yang memecahkan masalah. Prioritas interupsi tidak dapat diubah menjadi nilai arbitrer. Prioritas harus dalam kisaran 0x40 - 0xF0. Anda tidak dapat menonaktifkan interupsi systick, interupsi usb, dan interupsi DebugMon, SvcHandler, serta semua FaultHandler-s.





Kode prototipe proyek tersedia di sini








All Articles