ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
961803 Топик полностью
Nikolay_Po (30.11.2019 12:42 - 12:51, просмотров: 831) ответил Nikolay_Po на В чём разница между "GNU Arm Embedded Toolchain" с сайта ARM и "GNU Arm Embedded GCC" с xpack.github.io для работы в Eclipse?
Всё получилось с пол-пинка. CMSIS-DAP в самосборном OpenOCD заработал сразу. Проблема была найти в Eclipse способ (правильный пункт меню), чтобы создать проект по шаблону для STM32F10x. По сравнению с Microchip ATSAM4S, для которого мне пришлось переносить код из ASF и задавать пути и настройки проекта вручную - небо и земля! Просто выбрал шаблон (как я понял, из пакета поддержки STM32 GNU MCU Eclipse), уточнил параметры МК (нужно было указать серию, объёмы ОЗУ и ПЗУ) и пустой или мигающий светодиод. Заработало из коробки, без СТМ Куба. Что меня потрясло:
  • Исходники на C++. Кажется глупым тому, кто привык к ANSI C и микроконтроллерам. Но, уверен, пока ресурсов МК хватает, тот, кто умеет на плюсах, быстрее сделает сложный проект.
  • Через отладчик работает вывод в консоль. То, для чего раньше мне приходилось использовать отдельный UART<>USB конвертер и настраивать последовательный порт в МК, уже работает через интерфейс отладки. Настроено и работает сразу. Такого я не видал у Микрочипа, даже в их собственной среде и их собственным отладчиком PICkit3, даже более навороченным, чем мой китайский CMSIS-DAP.
  • Связка GDB, OpenOCD, CMSIS-DAP, SWD/SWO работает очень быстро, по сравнению с инструментами Microchip. Пробовал устанавливать максимальную скорость интерфейса 48МГц и действительно на линии тактовой частоты импульсы в длительностью в пару десятков нс. Правда, видно, что при заливке/чтении поток данных прерывистый, скорость чтения флэш по данным OpenOCD порядка 320кБ/с. В общем, работать приятно.
  • Консоль отладки:
    pen On-Chip Debugger 0.10.0+dev-00973-g80f1a92b-dirty (2019-11-30-01:00)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.org/doc/doxygen/bugs.html
    Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
    Started by GNU MCU Eclipse
    Info : Listening on port 6666 for tcl connections
    Info : Listening on port 4444 for telnet connections
    Info : CMSIS-DAP: SWD  Supported
    Info : CMSIS-DAP: JTAG Supported
    Info : CMSIS-DAP: FW Version = 1.10
    Info : CMSIS-DAP: Interface Initialised (SWD)
    Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 1 nTRST = 0 nRESET = 0
    Info : CMSIS-DAP: Interface ready
    Info : clock speed 1000 kHz
    Info : SWD DPIDR 0x1ba01477
    Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
    Error: stm32f1x.cpu -- clearing lockup after double fault
    Polling target stm32f1x.cpu failed, trying to reexamine
    Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
    Info : Listening on port 3333 for gdb connections
    Info : accepting 'gdb' connection on tcp/3333
    Info : device id = 0x10016418
    Info : flash size = 256kbytes
    Info : SWD DPIDR 0x1ba01477
    Error: Failed to read memory at 0xfffff000
    Info : SWD DPIDR 0x1ba01477
    Error: Failed to read memory at 0xfffff000
    target halted due to debug-request, current mode: Thread 
    xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
    semihosting is enabled
    
    target halted due to debug-request, current mode: Thread 
    xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc, semihosting
    target halted due to debug-request, current mode: Thread 
    xPSR: 0x01000000 pc: 0x080003ec msp: 0x20010000, semihosting
    target halted due to debug-request, current mode: Thread 
    xPSR: 0x01000000 pc: 0x080003ec msp: 0x20010000, semihosting
    ===== arm v7m registers
    (0) r0 (/32): 0x00000020
    (1) r1 (/32): 0x00000000
    (2) r2 (/32): 0x2000003C
    (3) r3 (/32): 0x2000083C
    (4) r4 (/32): 0x0800179C
    (5) r5 (/32): 0x200007F0
    (6) r6 (/32): 0x00000020
    (7) r7 (/32): 0x00000014
    (8) r8 (/32): 0x2403F2E2
    (9) r9 (/32): 0x785C09E5
    (10) r10 (/32): 0xC18E074C
    (11) r11 (/32): 0x89A15C23
    (12) r12 (/32): 0x95541E47
    (13) sp (/32): 0x20010000
    (14) lr (/32): 0xFFFFFFFF
    (15) pc (/32): 0x080003EC
    (16) xPSR (/32): 0x01000000
    (17) msp (/32): 0x20010000
    (18) psp (/32): 0xDAD4F5D0
    (19) primask (/1): 0x00
    (20) basepri (/8): 0x00
    (21) faultmask (/1): 0x00
    (22) control (/2): 0x00
    ===== Cortex-M DWT registers
    
    Hello ARM World!
    System clock: 72000000 Hz
    Second 1
    Second 2
    Second 3
    Second 4
    Second 5
    Second 6
    ...
    Теперь не знаю, что делать с шаблоном на плюсах? Попробовать сконфигурить из Куба новый проект? Чувствую, покалечил меня Микрочип своим инструментарием, что нормальная отладка для меня является шоком...
    imageimageimageimageimage