[Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 21.02.15 04:14
Оценка: 206 (11)
В общем, мы выпустили первый preview нового IntelliSense-движка для Visual Studio на базе clang, полностью интегрированного с VisualGDB. Из вкусностей:
* IntelliSense теперь работает в окне Watch, как в C#
* Препроцессорные макросы больше не пугают отладчик, а нормально парсятся, причем именно в контексте текущей строки. Поэтому наведение мыши на препроцессорные конструкции работает на ура.
* Мы добавили специальное окно, в котором можно мгновенно посмотреть результат препроцессинга выделенного текста. Получился довольно удобный инструмент для понимания запутанного кода.
* Форматирование кода на лету работает как в C# — например, по нажатию на ';' что-то такое:
    func1(x,y,
    func2(a,
     b), func3(c, d),
     z);

превратится в такое:
    func1(x,
          y,
          func2(a,
                b),
          func3(c, d),
          z);

Расположение скобок, табов и т.п., разумеется, настраивается.

* Ну и естественно, полная поддержка GNU-расширений, C++11 в любой студии, начиная с 2005 и много чего еще.
Вот тут можно почитать и посмотреть картинки, вот тут можно скачать.

Комментарии и пожелания привествуются.
Картинки для затравки:

Отредактировано 21.02.2015 4:20 bazis1 . Предыдущая версия . Еще …
Отредактировано 21.02.2015 4:18 bazis1 . Предыдущая версия .
Re: Create-from-use
От: bazis1 Канада  
Дата: 25.03.15 02:32
Оценка:
Мы выпустили очередной preview с поддержкой Create-from-use, как в C#. Например, по одной такой строчке:
    m_Messages.push_back(Message(component, indent, message));

наш движок в одно нажатие генерирует вот это:
        const std::string m_Component;
        int m_Indent;
        const std::string m_Message;

        Message(const std::string &component,
                int indent,
                const std::string &message)
            : m_Component(component)
            , m_Indent(indent)
            , m_Message(message)
        {
        }

Naming style, indenting и т.п. свободно настраивается. Вариант шаблонных типов (например std::string vs std::basic_string<char>) можно выбирать.
Вот тут можно почитать (на английском).
Вот здесь можно скачать поиграться.
Re: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 24.10.16 22:17
Оценка:
Здравствуйте, bazis1, Вы писали:

B>* Ну и естественно, полная поддержка GNU-расширений, C++11 в любой студии, начиная с 2005 и много чего еще.

B>Вот тут можно почитать и посмотреть картинки, вот тут можно скачать.

B>Комментарии и пожелания привествуются.

B>Картинки для затравки:
B>Image: initlist.png
B>Image: watch.png

Привет! Сорри что поднимаю старую тему. Можно поинтересоваться, скидки соотечественникам не даёте? Меня интересует embedded версия, если это имеет значение.
[КУ] оккупировала армия.
Re[2]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 31.10.16 19:17
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Привет! Сорри что поднимаю старую тему. Можно поинтересоваться, скидки соотечественникам не даёте? Меня интересует embedded версия, если это имеет значение.

С Embedded тяжко, т.к. поддержание его в актуальном состоянии (поддержка новых устройств, BSP, gcc и т.п.) — основная статья расходов. И если на ней начать экономить, вам самому, как юзеру, это не понравится. У нас есть программа для популярных open-source проектов — скидки в обмен на упоминание VisualGDB на странице проекта, но проект должен быть достаточно популярным, чтобы это упоминание приносило новых пользователей.
Re[3]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 31.10.16 19:32
Оценка:
Здравствуйте, bazis1, Вы писали:

B>С Embedded тяжко, т.к. поддержание его в актуальном состоянии (поддержка новых устройств, BSP, gcc и т.п.) — основная статья расходов. И если на ней начать экономить, вам самому, как юзеру, это не понравится. У нас есть программа для популярных open-source проектов — скидки в обмен на упоминание VisualGDB на странице проекта, но проект должен быть достаточно популярным, чтобы это упоминание приносило новых пользователей.


Ок, понял. В принципе и полная цееа вполне нормальна, если бы всё работало как следует А можно в порядке саппорта выяснить, как настроить OpenOCD, чтобы он нормально шил/дебажил STM32 (через ST-LINK v2.1, используется плата из серии Nucleo), когда в прошивке используется сон (sleep/stop)? А то сейчас дебаг такой прошивки вообще ошибки показывает в духе "мы не знаем, что это за ошибка", а прошивка говорит, что всё прошилось, нужно тока ресетнуть МК, однако после ресета прошивка остаётся старой.
[КУ] оккупировала армия.
Re[4]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 31.10.16 20:00
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Ок, понял. В принципе и полная цееа вполне нормальна, если бы всё работало как следует А можно в порядке саппорта выяснить, как настроить OpenOCD, чтобы он нормально шил/дебажил STM32 (через ST-LINK v2.1, используется плата из серии Nucleo), когда в прошивке используется сон (sleep/stop)? А то сейчас дебаг такой прошивки вообще ошибки показывает в духе "мы не знаем, что это за ошибка", а прошивка говорит, что всё прошилось, нужно тока ресетнуть МК, однако после ресета прошивка остаётся старой.

Хм. Сложно сказать, не видя логов OpenOCD и GDB. Nucleo и ST-Link v2.1 у нас проверяется предрелизными тестами, так что скорее всего дело или в конкретном девайсе, или в самой плате. Кидайте логи сюда или в саппорт — поможем, техподдержка именно для таких вещей и предназначена.
Re[5]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 31.10.16 22:57
Оценка:
Здравствуйте, bazis1, Вы писали:


B>Хм. Сложно сказать, не видя логов OpenOCD и GDB. Nucleo и ST-Link v2.1 у нас проверяется предрелизными тестами, так что скорее всего дело или в конкретном девайсе, или в самой плате. Кидайте логи сюда или в саппорт — поможем, техподдержка именно для таких вещей и предназначена.

  Лог

C:\Program Files (x86)\Sysprogs\VisualGDB\vgagent.exe C:\Users\Andrey\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -f interface/stlink-v2-1.cfg -f target/stm32l0.cfg -c "gdb_port 52373" -c "telnet_port 52372" -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
adapter speed: 300 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : clock speed 240 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v28 API v2 SWIM v16 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.254665
Error: init mode failed (unable to connect to the target)
in procedure 'init'
in procedure 'ocd_bouncer'


Причём если изначально прошивка другая (обычная "мигалка" без вызова STOP), то дебаг нормально работает (настройки неизменные), хотя и показывает вот это:
  Картинко

Если же вызов STOP заменить на вызов SLEEP, то при попытке начать дебаг (опять же — всё работает, если до начала дебага была прошивка без сна) показывается вот это:



Нажав ОК, показывается вот такой текст:
  ОЧЕНЬ многабукав!

(gdb begin)
Your VisualGDB trial expires in 25 days!
D:\Programs\SysGCC\arm-eabi\bin\arm-eabi-gdb.exe --interpreter mi D:\Andrey\Projects\STM32\SleepTest\SleepTest/Debug/SleepTest.elf
-gdb-version
=thread-group-added,id="i1"
~"GNU gdb (GDB) 7.10.1\n"
~"Copyright (C) 2015 Free Software Foundation, Inc.\n"
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html&gt;\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\nand \"show warranty\" for details.\n"




~"This GDB was configured as \"--host=i686-pc-mingw32 --target=arm-eabi\".\nType \"show configuration\" for configuration details."


~"\nFor bug reporting instructions, please see:\n"
~"<http://www.gnu.org/software/gdb/bugs/&gt;.\n"
~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/software/gdb/documentation/&gt;.\n"


~"For help, type \"help\".\n"
~"Type \"apropos word\" to search for commands related to \"word\"...\n"
~"Reading symbols from D:\\Andrey\\Projects\\STM32\\SleepTest\\SleepTest/Debug/SleepTest.elf..."
~"done.\n"
~"GNU gdb (GDB) 7.10.1\n"
~"Copyright (C) 2015 Free Software Foundation, Inc.\n"
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html&gt;\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\nand \"show warranty\" for details.\n"




~"This GDB was configured as \"--host=i686-pc-mingw32 --target=arm-eabi\".\nType \"show configuration\" for configuration details."


~"\nFor bug reporting instructions, please see:\n"
~"<http://www.gnu.org/software/gdb/bugs/&gt;.\n"
~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/software/gdb/documentation/&gt;.\n"


~"For help, type \"help\".\n"
~"Type \"apropos word\" to search for commands related to \"word\".\n"
^done
-list-features
^done,features=["frozen-varobjs","pending-breakpoints","thread-info","data-read-memory-bytes","breakpoint-notifications","ada-task-info","language-option","info-gdb-mi-command","undefined-command-error-code","exec-run-start-option"]
-gdb-set stop-on-solib-events 1
^done
-gdb-set disassembly-flavor intel
^error,msg="No symbol \"disassembly\" in current context."
-gdb-set print demangle off
^done
-break-insert -f main
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x08001e8c",func="main",file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c",line="82",thread-groups=["i1"],times="0",original-location="main"}
set remotetimeout 60
&"set remotetimeout 60\n"
=cmd-param-changed,param="remotetimeout",value="60"
^done
target remote :52491
&"target remote :52491\n"
~"Remote debugging using :52491\n"
&"Remote communication error. Target disconnected.: No error.\n"
^error,msg="Remote communication error. Target disconnected.: No error."
mon halt
&"mon halt\n"
&"\"monitor\" command not supported by this target.\n"
^error,msg="\"monitor\" command not supported by this target."
mon reset init
&"mon reset init\n"
&"\"monitor\" command not supported by this target.\n"
^error,msg="\"monitor\" command not supported by this target."
load
&"load\n"
&"You can't do that when your target is `exec'\n"
^error,msg="You can't do that when your target is `exec'"
-data-evaluate-expression "sizeof(void *)"
^done,value="4"
-data-evaluate-expression "sizeof(int)"
^done,value="4"
-data-evaluate-expression "sizeof(short)"
^done,value="2"
-data-evaluate-expression "sizeof(long)"
^done,value="4"
-data-evaluate-expression "sizeof(long long)"
^done,value="8"
-data-evaluate-expression "sizeof(char)"
^done,value="1"
-data-evaluate-expression "sizeof(wchar_t)"
^error,msg="No symbol \"wchar_t\" in current context."
-data-evaluate-expression "sizeof(float)"
^done,value="4"
-data-evaluate-expression "sizeof(double)"
^done,value="8"
-data-evaluate-expression "sizeof(long double)"
^done,value="8"
info target
&"info target\n"
~"Symbols from \"D:\\Andrey\\Projects\\STM32\\SleepTest\\SleepTest\\Debug\\SleepTest.elf\".\n"
~"Local exec file:\n"
~"\t`D:\\Andrey\\Projects\\STM32\\SleepTest\\SleepTest\\Debug\\SleepTest.elf', file type elf32-littlearm.\n"
~"\tEntry point: 0x8002380\n"
~"\t0x08000000 — 0x080000c0 is .isr_vector\n"
~"\t0x080000c0 — 0x080047a0 is .text\n"
~"\t0x080047a0 — 0x080047a4 is .init_array\n"
~"\t0x080047a4 — 0x080047a8 is .fini_array\n"
~"\t0x20000000 — 0x20000004 is .data\n"
~"\t0x20000004 — 0x200000b8 is .bss\n"
^done
-break-insert -f D:/Andrey/Projects/STM32/SleepTest/Src/main.c:89
^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x08001e98",func="main",file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c",line="89",thread-groups=["i1"],times="0",original-location="D:/Andrey/Projects/STM32/SleepTest/Src/main.c:89"}
-break-info 2
^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="7",alignment="-1",col_name="number",colhdr="Num"},{width="14",alignment="-1",col_name="type",colhdr="Type"},{width="4",alignment="-1",col_name="disp",colhdr="Disp"},{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},{width="10",alignment="-1",col_name="addr",colhdr="Address"},{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x08001e98",func="main",file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c",line="89",thread-groups=["i1"],times="0",original-location="D:/Andrey/Projects/STM32/SleepTest/Src/main.c:89"}]}
-break-after 2 0
^done
info symbol 0x8001e98
&"info symbol 0x8001e98\n"
~"main + 16 in section .text\n"
^done
info line *0x8001e98
&"info line *0x8001e98\n"
~"Line 89 of \"../Src/main.c\" starts at address 0x8001e98 <main+16> and ends at 0x8001e9c <main+20>.\n"
^done
-file-list-exec-source-files
^done,files=[{file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c"},{file="d:\\programs\\sysgcc\\arm-eabi\\arm-eabi\\sys-include\\machine/_default_types.h",fullname="d:\\programs\\sysgcc\\arm-eabi\\arm-eabi\\sys-include\\machine\\_default_types.h"},{file="d:\\programs\\sysgcc\\arm-eabi\\arm-eabi\\sys-include/stdint.h",fullname="d:\\programs\\sysgcc\\arm-eabi\\arm-eabi\\sys-include\\stdint.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/CMSIS_HAL/Device/ST/STM32L0xx/Include/stm32l031xx.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\CMSIS_HAL\\Device\\ST\\STM32L0xx\\Include\\stm32l031xx.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_def.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_rcc.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_rcc_ex.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_gpio.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_dma.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rtc.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_rtc.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Inc\\stm32l0xx_hal_uart.h"},{file="../../../../../../../newlib-2.2.0/newlib/libc/misc/init.c",fullname="/q/gnu/auto/newlib-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/newlib/libc/misc/../../../../../../../newlib-2.2.0/newlib/libc/misc/init.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/ledf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/ledf2.c"},{file="ledf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/ledf2.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/gedf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/gedf2.c"},{file="gedf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/gedf2.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/eqdf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/eqdf2.c"},{file="eqdf2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/eqdf2.c"},{file="../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S"},{file="../../../../../gcc-5.3.0/libgcc/config/arm/bpabi-v6m.S",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/config/arm/bpabi-v6m.S"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/floatunsidf.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/floatunsidf.c"},{file="floatunsidf.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/floatunsidf.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/fixdfsi.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/fixdfsi.c"},{file="fixdfsi.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/fixdfsi.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/subdf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/subdf3.c"},{file="subdf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/subdf3.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/muldf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/muldf3.c"},{file="muldf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/muldf3.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/divdf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/divdf3.c"},{file="divdf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/divdf3.c"},{file="../../../../../gcc-5.3.0/libgcc/soft-fp/adddf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/soft-fp/adddf3.c"},{file="adddf3.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/adddf3.c"},{file="../../../../../gcc-5.3.0/libgcc/libgcc2.c",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/libgcc2.c"},{file="../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S"},{file="../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S",fullname="/q/gnu/auto/gcc-bu-2.24+gcc-5.3.0+gmp-5.1.3+mpfr-3.1.2+mpc-1.0.2+newlib-2.2.0-arm-eabi/arm-eabi/thumb/cortex_m0plus/libgcc/../../../../../gcc-5.3.0/libgcc/config/arm/lib1funcs.S"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_uart.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc_ex.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_rtc_ex.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_rtc.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_rcc_ex.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_rcc.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/CMSIS_HAL/Include/cmsis_gcc.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\CMSIS_HAL\\Include\\cmsis_gcc.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_pwr.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_gpio.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/CMSIS_HAL/Include/cmsis_gcc.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\CMSIS_HAL\\Include\\cmsis_gcc.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/CMSIS_HAL/Include/core_cm0plus.h",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\CMSIS_HAL\\Include\\core_cm0plus.h"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal_cortex.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\STM32L0xx_HAL_Driver\\Src\\stm32l0xx_hal.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/StartupFiles/startup_stm32l031xx.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\StartupFiles\\startup_stm32l031xx.c"},{file="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32/STM32L0xxxx/CMSIS_HAL/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c",fullname="C:\\Users\\Andrey\\AppData\\Local\\VisualGDB\\EmbeddedBSPs\\arm-eabi\\com.sysprogs.arm.stm32\\STM32L0xxxx\\CMSIS_HAL\\Device\\ST\\STM32L0xx\\Source\\Templates\\system_stm32l0xx.c"},{file="../Src/stm32l0xx_it.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\stm32l0xx_it.c"},{file="../Src/stm32l0xx_hal_msp.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\stm32l0xx_hal_msp.c"}]
-break-insert -f D:/Andrey/Projects/STM32/SleepTest/Src/main.c:104
^done,bkpt={number="3",type="breakpoint",disp="keep",enabled="y",addr="0x08001ea8",func="main",file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c",line="104",thread-groups=["i1"],times="0",original-location="D:/Andrey/Projects/STM32/SleepTest/Src/main.c:104"}
-break-info 3
^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="7",alignment="-1",col_name="number",colhdr="Num"},{width="14",alignment="-1",col_name="type",colhdr="Type"},{width="4",alignment="-1",col_name="disp",colhdr="Disp"},{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},{width="10",alignment="-1",col_name="addr",colhdr="Address"},{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="3",type="breakpoint",disp="keep",enabled="y",addr="0x08001ea8",func="main",file="../Src/main.c",fullname="D:\\Andrey\\Projects\\STM32\\SleepTest\\Src\\main.c",line="104",thread-groups=["i1"],times="0",original-location="D:/Andrey/Projects/STM32/SleepTest/Src/main.c:104"}]}
-break-after 3 0
^done
info symbol 0x8001ea8
&"info symbol 0x8001ea8\n"
~"main + 32 in section .text\n"
^done
info line *0x8001ea8
&"info line *0x8001ea8\n"
~"Line 105 of \"../Src/main.c\" starts at address 0x8001ea8 <main+32> and ends at 0x8001eaa.\n"
^done
-data-evaluate-expression "&_estack"
^done,value="0x20002000 <error: Cannot access memory at address 0x20002000>"
-var-create — * "*((void **)0x20001ffc)"
^done,name="var1",numchild="0",value="",type="void *",has_more="0"
-var-evaluate-expression "var1"
^done,value=""
-exec-continue
^error,msg="The program is not being run."
--- GDBServer output ---
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]

Licensed under GNU GPL v2

For bug reports, read

http://openocd.org/doc/doxygen/bugs.html

Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.

adapter speed: 300 kHz

adapter_nsrst_delay: 100

Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD

none separate

Info : Unable to match requested speed 300 kHz, using 240 kHz

Info : Unable to match requested speed 300 kHz, using 240 kHz

Info : clock speed 240 kHz

Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

Info : STLINK v2 JTAG v28 API v2 SWIM v16 VID 0x0483 PID 0x374B

Info : using stlink api v2

Info : Target voltage: 3.256242

Info : stm32l0.cpu: hardware has 4 breakpoints, 2 watchpoints

Info : Unable to match requested speed 300 kHz, using 240 kHz

Info : Unable to match requested speed 300 kHz, using 240 kHz

adapter speed: 240 kHz

Error: timed out while waiting for target halted


Нажав на любую из кнопок, показывается вот это:



Плата NUCLEO-L031K6 (чип STM32L031K6), прошивка элементарная — RTC включен, настроен на Auto Wakeup (период — 1Гц, счётчик любой), прерывание включено (иначе не проснётся), содержательная (не автосгенерённая STM32CubeMX) часть кода:
while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
      HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI); //эту строку заменить на EnterSLEEPMode для сна вместо останова
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);
  }

Попытка прошивки, когда на МК крутится код со сном, заканчивается вот этим:

При этом прошивка в МК не обновляется — после ресета поведение остаётся по-старому.

Из интересного — плата поддерживает mbed, и через него без проблем зашивается любая прошивка независимо от того, спит чип или нет. "Родная" утилита STM32 ST-LINK Utility коннектится к спящему тока если выбрать режим "Connect under reset".
Больше не знаю, чего ещё сообщить — если что-то ещё нужно — пиши. Подозреваю, что проблема в том, что ваш дебаггер/прошивальщик не делает сброс МК перед началом работы. Все настройки OpenOCD — в режиме Quick Setup", тест проходит нормально, если прошивка не "спящая" или если в момент проверки вручную сбросить чип кнопкой Reset на плате. Вот из-за последнего и думается мне, что дело в "не-ресете" МК.
[КУ] оккупировала армия.
Re[5]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 31.10.16 23:04
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Хм. Сложно сказать, не видя логов OpenOCD и GDB. Nucleo и ST-Link v2.1 у нас проверяется предрелизными тестами, так что скорее всего дело или в конкретном девайсе, или в самой плате. Кидайте логи сюда или в саппорт — поможем, техподдержка именно для таких вещей и предназначена.


Да, ещё — заранее прошу прощения, если дело окажется в чём-то очевидном — я перехожу с Atmel Studio 7, где несмотря на использование стека gcc, всё отлично работает из коробки по нажатию одной кнопки, и не требует никаких ковыряний в настройках — независимо от режима работы МК
[КУ] оккупировала армия.
Re[6]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 01.11.16 00:57
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, bazis1, Вы писали:


B>>Хм. Сложно сказать, не видя логов OpenOCD и GDB. Nucleo и ST-Link v2.1 у нас проверяется предрелизными тестами, так что скорее всего дело или в конкретном девайсе, или в самой плате. Кидайте логи сюда или в саппорт — поможем, техподдержка именно для таких вещей и предназначена.

Спасибо. Перепроверил на L476RG, сходу не воспроизвелось. Попробуй для упрощения взять обычный LEDBlink без дополнительной инициализации из Cube и посмотреть, будет ли в нем вызов HAL_PWR_EnterSTOPMode() приводить к таким же последствиям. Если нет — попробуй понять, что конкретно на этапе инициализации его ломает.

Вообще, вот эта ошибка означает, что ST-Link не отвечает на запросы (т.е. ломается еще до попытки прошить):
K>Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

Это означает, что или ST-Link открыт другим приложением, или он сам висит. В любом случае, отключить-подключить должно помочь.

Вообще судя по описанию, скорее всего при включении sleep останавливается отладочный модуль внутри MCU и это заглючивает ST-Link. Посмотри в datasheet, скорее всего можно поставить какой-то флаг, чтобы sleep не останавливал DBGMCU. Еще можно попробовать обновить прошивку ST-Link.

K>Из интересного — плата поддерживает mbed, и через него без проблем зашивается любая прошивка независимо от того, спит чип или нет. "Родная" утилита STM32 ST-LINK Utility коннектится к спящему тока если выбрать режим "Connect under reset".

K>Больше не знаю, чего ещё сообщить — если что-то ещё нужно — пиши. Подозреваю, что проблема в том, что ваш дебаггер/прошивальщик не делает сброс МК перед началом работы. Все настройки OpenOCD — в режиме Quick Setup", тест проходит нормально, если прошивка не "спящая" или если в момент проверки вручную сбросить чип кнопкой Reset на плате. Вот из-за последнего и думается мне, что дело в "не-ресете" МК.
Сброс делается:
  Скрытый текст
C:\Program Files (x86)\Sysprogs\VisualGDB\vgagent.exe C:\Users\Andrey\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -f interface/stlink-v2-1.cfg -f target/stm32l0.cfg -c "gdb_port 52373" -c "telnet_port 52372" -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"

Другое дело, что LIBUSB_ERROR_NOT_SUPPORTED — это очень странная ошибка для описанной ситуации. Она точно вываливается, если сделать тест без нажатого reset-а, или там вылезает что-то другое?

P.S. Судя по логам, это VisualGDB 5.1. Попробуй обновить до 5.2 (сегодня вышла стабильная версия). Там, как минимум, лучше сделано обнаружение ошибок.
Отредактировано 01.11.2016 1:05 bazis1 . Предыдущая версия .
Re[6]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 01.11.16 01:09
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Да, ещё — заранее прошу прощения, если дело окажется в чём-то очевидном — я перехожу с Atmel Studio 7, где несмотря на использование стека gcc, всё отлично работает из коробки по нажатию одной кнопки, и не требует никаких ковыряний в настройках — независимо от режима работы МК

Нет проблем, здесь больше похоже на баг ST, но в любом случае саппорт это покрывает. Я написал в другом треде, как это локализовать. Если будут вылезать странности — пиши, подскажу.
Re[7]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 01.11.16 12:48
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Это означает, что или ST-Link открыт другим приложением, или он сам висит. В любом случае, отключить-подключить должно помочь.

Нет, он точно работает — т.к. он ещё "представляется" как USB Mass Storage, и, если залить туда прошивку (просто скопировать её на "диск", который появляется в системе при подключении платы к компу), то он её нормально прошивает. Причём это работает независимо от того, какая прошивка в МК до начала процесса.

B>Другое дело, что LIBUSB_ERROR_NOT_SUPPORTED — это очень странная ошибка для описанной ситуации. Она точно вываливается, если сделать тест без нажатого reset-а, или там вылезает что-то другое?

Вечером перепроверю.

B>P.S. Судя по логам, это VisualGDB 5.1. Попробуй обновить до 5.2 (сегодня вышла стабильная версия). Там, как минимум, лучше сделано обнаружение ошибок.

Ок, попробую.
[КУ] оккупировала армия.
Re[7]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 01.11.16 12:50
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Нет проблем, здесь больше похоже на баг ST, но в любом случае саппорт это покрывает. Я написал в другом треде, как это локализовать. Если будут вылезать странности — пиши, подскажу.

Меня удивляет то, что заливка прошивки через mbed (USB Mass Storage Device class) всё равно работает независимо ни от чего. В принципе, если бы не неработающий дебаг, то я так им бы и пользовался. Но прошивки у меня достаточно сложные, чтобы требовался дебаггер — так что без дебага мне придётся обратно на Атмелы возвращаться.
[КУ] оккупировала армия.
Re[8]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 01.11.16 15:20
Оценка:
Здравствуйте, koandrew, Вы писали:

B>>Нет проблем, здесь больше похоже на баг ST, но в любом случае саппорт это покрывает. Я написал в другом треде, как это локализовать. Если будут вылезать странности — пиши, подскажу.

K>Меня удивляет то, что заливка прошивки через mbed (USB Mass Storage Device class) всё равно работает независимо ни от чего. В принципе, если бы не неработающий дебаг, то я так им бы и пользовался. Но прошивки у меня достаточно сложные, чтобы требовался дебаггер — так что без дебага мне придётся обратно на Атмелы возвращаться.
Спокойствие, только спокойствие. Починим мы отладку, и не такое работать заставляли. Но нужно больше информации, чтобы понять, где баг.
Вообще, st-link 2.1 представляется тремя девайсами сразу:

OpenOCD работает с самым верхним, центральный можно использовать для printf(), а нижний — для mbed. Ошибка not supported в OpenOCD означает, что он не может найти верхний из них.
Если ошибка действительно not supported даже после перевключения, надо смотреть в device manager, появляется ли dongle в списке. Если ошибка другая, надо смотреть конкретное сообщение в логе, возможно все можно исправить одной дополнительной командой в скриптах OpenOCD.

В общем, если дело будет в OpenOCD — мы починим. Если дело будет в ST-Link и мы это воспроизведем, я сброшу это моему знакомому из ST, который координирует tools compatibility, ему за починку таких вещей премию дают.

В качестве совсем крайнего варианта, можно купить вместо ST-Link любой отладчик на FT2232 за $50 (или собрать самому, если ты хардкорный DIYщик). Они хороши тем, что дают OpenOCD контроль на самом низком уровне и если случится затык, то OpenOCD скажет, где конкретно он случается, и поправить его будет довольно просто. Но думаю, до этого не дойдет.
Re[9]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 02.11.16 00:24
Оценка:
Здравствуйте, bazis1, Вы писали:

Итак, что-то я запутался, потому начинаем сначала.
Тест №1: в МК прошивка типа "мигалка диодом", никакого сна нет
Нажимаю на кнопку "Test OpenOCD settings" в настройках проекта — получаю вот такую простыню:
  Простыня №1
C:\Users\Andrey\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -f interface/stlink-v2-1.cfg -f target/stm32l0.cfg -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
adapter speed: 300 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : clock speed 240 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v28 API v2 SWIM v16 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.253649
Info : stm32l0.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
adapter speed: 240 kHz
stm32l0.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xf1000000 pc: 0x080000dc msp: 0x20002000
STM32L0: Enabling HSI16
Info : Unable to match requested speed 2500 kHz, using 1800 kHz
Info : Unable to match requested speed 2500 kHz, using 1800 kHz
adapter speed: 1800 kHz
VisualGDB_OpenOCD_Ready
Info : accepting 'telnet' connection on tcp/4444
shutdown command invoked
Info : dropped 'telnet' connection

И сообщение "Your settings appear to be valid." Все 3 подустройства видны в Device Manager'е.

Тест №2: Залил в МК прошивку, использующую функцию HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFI), "мигание" находится в обработчике прерывания от RTC (потому что иначе девайс постоянно просыпается от прерываний SysTick, и вместо мигания на диоде будет меандр с частотой в 500 Гц).
Нажимаю ту же кнопку тестирования. Оно после заметной задержки (2-3 секунды по ощущениям) выдаёт:
  Простыня №2
C:\Users\Andrey\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -f interface/stlink-v2-1.cfg -f target/stm32l0.cfg -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
adapter speed: 300 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : clock speed 240 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v28 API v2 SWIM v16 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.258383
Info : stm32l0.cpu: hardware has 4 breakpoints, 2 watchpoints
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
adapter speed: 240 kHz
Error: timed out while waiting for target halted

И сообщение "OpenOCD exited with code -1073741571. Please check your settings." Все три подустройства по-прежнему видны, и переподключение платы к компу ничего не меняет.
Тест №3: Заливаю в МК прошивку с вызовом HAL_PWR_EnterSTOPMode с помощью VDBG (предварительно "сбросив" прошивку на мигалку с помощью mbed).
Тут я заметил несколько вещей — во-первых, диод-индикатор коммуникации стал оранжевым (судя по документации на борду, это означает "Orange on: communication failure"), однако прошивка заливается корректно (насколько я могу судить по её работе). Если переподключить плату к компу, то диод начинает светиться красным ("Red on: when initialization between PC and ST-LINK/V2-1 is completed").
Попытка выполнения "Test OpenOCD settings" сразу после заливки вышеописанной прошивки (когда диод жёлтый) показывает
  Простыня №3
C:\Users\Andrey\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -f interface/stlink-v2-1.cfg -f target/stm32l0.cfg -c init -c "reset init" -c "echo VisualGDB_OpenOCD_Ready"
Open On-Chip Debugger 0.9.0 (2016-10-14) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
adapter speed: 300 kHz
adapter_nsrst_delay: 100
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
none separate
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : Unable to match requested speed 300 kHz, using 240 kHz
Info : clock speed 240 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v28 API v2 SWIM v16 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.254665
Error: init mode failed (unable to connect to the target)
in procedure 'init'
in procedure 'ocd_bouncer'

И сообщение "OpenOCD exited with code 1. Please check your settings."
Если "передёрнуть" плату и попробовать снова, то простыня и ошибка идентичны вышеупомянутым (только индикатор становится красным). Все девайсы в Device Manager'е на месте.

Версия VisualGDB — 5.1 (build 712). Установлена 5 дней назад (судя по оставшимся 25 дням триала). А новую версию ставить поверх текущей, или старую нужно предварительно удалить?
ST-Link с последней прошивкой, обновил сразу после покупки несколько дней назад. Плата вот эта.

Насчёт самостоятельной сборки — да нет проблем, было бы чего собирать У меня кстати есть вот такая вот штука, она умеет и JTAG, и SPI, и I2C. Я в своё время купил его для других целей, однако сейчас для него нашлось много новых применений, в том числе универсального прошивальщика Однако в обсуждаемом случае в этом нет необходимости, т.к. ST-Link есть прямо на плате. У меня кстати ещё есть эта девборда, но до неё ещё пока руки не дошли.

Если ещё что-то нужно от меня — пиши, только описывай подробнее манипуляции, которые мне нужно провести. Ну или купи такую же плату — благо стоит она сущие копейки
[КУ] оккупировала армия.
Re[10]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 05.11.16 13:54
Оценка:
Здравствуйте, koandrew, Вы писали:

Спасибо, понял. Конфуз с LIBUSB_ERROR_NOT_SUPPORTED вызван тем, что OpenOCD перебирает все подустройства, соответствующие ST-Link (mass storage, COM port, debug inteface) и ругается на not supported для одного из первых двух.

По описанию похоже, что переход в режим сна таки что-то ломает в debug unit. Пропатчить OpenOCD, чтобы он делал reset можно, но это не поможет сделать нормальную отладку, так как в момент как MCU заснет, связь опять потеряется.

Кстати, решил погуглить и бац — таки специфика STM32L1 (и L0). Segger проблему починили так что можно купить J-Link и все должно заработать. На L4 я это сходу не воспроизвел, возможно будет дешевле переключиться на него. Я могу проверить версию твоей прошивки для L4 и сказать, работает отладка, или нет.

Еще могу сбросить repro человеку из ST, возможно он что-то подскажет. Кидай полную версию проекта (с бинарником и всеми исходниками).
Re[11]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 05.11.16 16:02
Оценка:
Здравствуйте, bazis1, Вы писали:

B>По описанию похоже, что переход в режим сна таки что-то ломает в debug unit. Пропатчить OpenOCD, чтобы он делал reset можно, но это не поможет сделать нормальную отладку, так как в момент как MCU заснет, связь опять потеряется.

Очень странно. В Атмелах дебаг юнит не засыпает, если в момент выполнения команды перехода в сон активна дебаг-сессия.

B>Кстати, решил погуглить и бац — таки специфика STM32L1 (и L0). Segger проблему починили так что можно купить J-Link и все должно заработать. На L4 я это сходу не воспроизвел, возможно будет дешевле переключиться на него. Я могу проверить версию твоей прошивки для L4 и сказать, работает отладка, или нет.

B>Еще могу сбросить repro человеку из ST, возможно он что-то подскажет. Кидай полную версию проекта (с бинарником и всеми исходниками).

Всё тут. Бинарник в SleepTest/SleepTest/Debug/
[КУ] оккупировала армия.
Re[12]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 05.11.16 23:01
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Очень странно. В Атмелах дебаг юнит не засыпает, если в момент выполнения команды перехода в сон активна дебаг-сессия.

Я согласен, что это криво. Но я не проектировал ни ST-Link ни DBGMCU, так что все что я могу сделать — это подсказать обходные пути.

Попробуй рецепты отсюда, вроде бы схожая проблема.

K>Всё тут. Бинарник в SleepTest/SleepTest/Debug/

Хм. Вроде бы ничего специфического нет. Что будет, если оставить девайс на медленном clock? Т.е. убрать строчки после HAL_Init() и до while (1).
Re[12]: [Свершилось] VisualGDB + Clang
От: bazis1 Канада  
Дата: 24.11.16 01:11
Оценка: 6 (1)
Здравствуйте, koandrew, Вы писали:

K>Всё тут. Бинарник в SleepTest/SleepTest/Debug/

Посмотрел на железе. Действительно, Sleep-режим вызывает проблемы с отладкой. К счастью, все исправляется довольно простым редактированием настроек. Выложил вот сюда подробный tutorial с описанием, как побороть проблему.

Все сводится к включению аналога connect under reset редактированием скрипта OpenOCD:
reset_config trst_and_srst srst_nogate connect_assert_srst
Re[13]: [Свершилось] VisualGDB + Clang
От: alex_public  
Дата: 24.11.16 02:31
Оценка:
koandrew,

B>Все сводится к включению аналога connect under reset редактированием скрипта OpenOCD:

B>
reset_config trst_and_srst srst_nogate connect_assert_srst


Re[13]: [Свершилось] VisualGDB + Clang
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 24.11.16 15:42
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Здравствуйте, koandrew, Вы писали:


K>>Всё тут. Бинарник в SleepTest/SleepTest/Debug/

B>Посмотрел на железе. Действительно, Sleep-режим вызывает проблемы с отладкой. К счастью, все исправляется довольно простым редактированием настроек. Выложил вот сюда подробный tutorial с описанием, как побороть проблему.

B>Все сводится к включению аналога connect under reset редактированием скрипта OpenOCD:

B>
reset_config trst_and_srst srst_nogate connect_assert_srst


Спасибо. Сейчас пока не до этого, но на выходных постараюсь проверить. Ещё кстати — а с standby не проверяли? По идее должно работать, но теория и практика — вещи порой несовместимые...
[КУ] оккупировала армия.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.