-         

Ergebnis 1 bis 4 von 4

Thema: VisualStudio VisualGDB snchron / Workareasize 0

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.080

    VisualStudio VisualGDB snchron / Workareasize 0

    Anzeige

    Hallo zusammen,

    ich versuche mit grade eine Toolchain auf Basis von VisualStudio und VisualGDB (da gibt ja ne 30-tägige Trail, bevor man was latzen muss) zusammenstellen, um mit einem jTag Lock Pick Tiny2 einen Nordic-Chip zu beschreiben.
    Prinzipiell scheine ich inzwischen auch Zugriff auf den Debugger in Verbindung mit dem Chip zu bekommen. Allerdings klappt das mit dem Flashen noch nicht.
    Die Logdatei von VisualGDB sagt:
    Code:
    Warn : using fast async flash loader. This is currently supported
    Warn : only with ST-Link and CMSIS-DAP. If you have issues, add
    Warn : "set WORKAREASIZE 0" before sourcing nrf51.cfg to disable it


    Allerdings kann ich dies nirgends als Option finden. Ich kann zwar in VisualGDB in den Debug-Settings Kommandozeilenbefehle ergänzen, aber die werden nach und nicht vor dem -target nrf51 eingefügt (Ausgabe aus dem Verbindungstest):

    Code:
    C:\Users\cysig\AppData\Local\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\bin\openocd.exe -c "adapter_khz 500" -f interface/ftdi/jtag-lock-pick_tiny_2.cfg -c "transport select swd" -f target/nrf51.cfg set WORKAREASIZE 0 -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
    adapter speed: 500 kHz
    Info : FTDI SWD mode enabled
    swd
    cortex_m reset_config sysresetreq
    adapter speed: 1000 kHz
    VisualGDB_OpenOCD_Ready
    Info : clock speed 1000 kHz
    Info : SWD DPIDR 0x0bb11477
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Info : accepting 'telnet' connection on tcp/4444
    shutdown command invoked
    Info : dropped 'telnet' connection
    Klicke auf die Grafik für eine größere Ansicht

Name:	VisualGDB Workareasize =.jpg
Hits:	4
Größe:	64,8 KB
ID:	32277

    Wenn ich den Blink-Code dann hochladen möchte, bekomme ich einen SIGINT-Fehler.
    Klicke auf die Grafik für eine größere Ansicht

Name:	SIGINT.jpg
Hits:	4
Größe:	21,3 KB
ID:	32278

    Als Neuling auf dem Gebiet VisualStudio und VisualGDB tu ich mir noch etwas schwer den Workflow von VS zu verinnerlichen. Eine Suche gab zwar Treffer hinsichtlich dem WORKAREASIZE 0, jedoch habe ich keine Ahnung, wie eich dies einbinden kann.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.080
    Hmmm...so ganz klappt die Kommunikation mit dem nRF51 noch nicht.

    Der VisualGSB-Support meinte, ich soll das [code]set WORKAREASIZE 0[code] an den Anfang meiner target.cfg einbinden:
    You can try adding "set WORKAREASIZE 0" at the beginning of the %LOCALAPPDATA%\VisualGDB\EmbeddedDebugPackages\com .sysprogs.arm.openocd\share\openocd\scripts\target \nrf51.cfg file

    Aber eine Kommunikation mit dem nRF51 schlägt immer noch fehl:
    Code:
    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 : FTDI SWD mode enabled
    swd
    cortex_m reset_config sysresetreq
    adapter speed: 1000 kHz
    VisualGDB_OpenOCD_Ready
    Info : clock speed 1000 kHz
    Info : SWD DPIDR 0x0bb11477
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Info : accepting 'gdb' connection on tcp/50327
    Info : nRF51822-CEAA(build code: C0) 256kB Flash
    undefined debug reason 7 - target needs reset
    Error: address + size wrapped(0xfffffffe, 0x00000004)
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    Warn : not enough working area available(requested 32)
    Warn : no working area available, falling back to slow memory writes
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    Error: nrf51.cpu -- clearing lockup after double fault
    Polling target nrf51.cpu failed, trying to reexamine
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Error: address + size wrapped(0xfffffffe, 0x00000004)
    Error: nrf51.cpu -- clearing lockup after double fault
    Polling target nrf51.cpu failed, trying to reexamine
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Error: address + size wrapped(0xfffffffe, 0x00000004)
    Error: nrf51.cpu -- clearing lockup after double fault
    Polling target nrf51.cpu failed, trying to reexamine
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Error: address + size wrapped(0xfffffffe, 0x00000004)
    Error: nrf51.cpu -- clearing lockup after double fault
    Polling target nrf51.cpu failed, trying to reexamine
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    Error: address + size wrapped(0xfffffffe, 0x00000004)
    - - - Aktualisiert - - -

    Nachdem ich zunächst als VisualGDB-Ausgabe immer eine SIGINT-Meldung bekommen habe, hab ich als ergänzende Attribute
    Code:
    handle SIGINT nostop
    angehangen (Quelle: http://stackoverflow.com/questions/2...-reason-sigint).

    Daraufhin lief GDB ohne weitere Meldung durch und die Logdatei spuckt folgendes aus:
    Code:
    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 : FTDI SWD mode enabled
    swd
    cortex_m reset_config sysresetreq
    adapter speed: 1000 kHz
    Info : clock speed 1000 kHz
    Info : SWD DPIDR 0x0bb11477
    Info : nrf51.cpu: hardware has 4 breakpoints, 2 watchpoints
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    VisualGDB_OpenOCD_Ready
    Info : accepting 'gdb' connection on tcp/50423
    Info : nRF51822-CEAA(build code: C0) 256kB Flash
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread 
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    Eigentlich war ich davon ausgegangen, dass ich nun als Output des Blink-Samples eine blinkende LED auf dem entsprechenden Pin haben sollte:
    Code:
    #include <stdbool.h>
    #include <stdint.h>
    
    #ifdef __cplusplus
    extern "C" {
    #endif
        
    #include "nrf_delay.h"
    #include "nrf_gpio.h"
        
    #ifdef __cplusplus
    }
    #endif
    
    
    int main(void)
    {
        nrf_gpio_cfg_output(13);
    
        for (;;)
        {
            nrf_gpio_pin_set(13);
            nrf_delay_ms(500);
            nrf_gpio_pin_clear(13);
            nrf_delay_ms(500);
        }
    }
    Aber es regt sich nichts.
    Ich schätze mal, dass ich nach dem Flashen irgendwie dem Gerät sagen muss, dass es den Code abarbeiten muss?

    Solande VisualGDB aktiv ist, signalisiert mir die Übertragungs-LED am jTag-Lock-Pick Tiny 2 eine aktive Verbindung. Wenn ich das Debugging anhalte, härt die auf zu flackern.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.080
    Raw Output from GDB:
    Code:
    Your VisualGDB trial expires in 28 days!
    c:\SysGCC\arm-eabi\bin\arm-eabi-gdb.exe --interpreter mi C:\SyncDataC\VisualProjects\nRfBlinkAllSolution\VisualGDB\Debug\nRfBlinkAll
    -gdb-version
    =thread-group-added,id="i1"
    ~"GNU gdb (GDB) 7.12\n"
    ~"Copyright (C) 2016 Free Software Foundation, Inc.\n"
    ~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\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/>.\n"
    ~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"
    ~"For help, type \"help\".\n"
    ~"Type \"apropos word\" to search for commands related to \"word\"...\n"
    ~"Reading symbols from C:\\SyncDataC\\VisualProjects\\nRfBlinkAllSolution\\VisualGDB\\Debug\\nRfBlinkAll..."
    ~"done.\n"
    ~"GNU gdb (GDB) 7.12\n"
    ~"Copyright (C) 2016 Free Software Foundation, Inc.\n"
    ~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\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/>.\n"
    ~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\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 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="0x0001c16a",func="main()",file="LEDBlink.cpp",fullname="C:\\SyncDataC\\VisualProjects\\nRfBlinkAllSolution\\nRfBlinkAll\\LEDBlink.cpp",line="20",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 :53092
    &"target remote :53092\n"
    ~"Remote debugging using :53092\n"
    =thread-group-started,id="i1",pid="42000"
    =thread-created,id="1",group-id="i1"
    ~"0x000006d0 in ?? ()\n"
    *stopped,frame={addr="0x000006d0",func="??",args=[]},thread-id="1",stopped-threads="all"
    ^done
    info shared
    &"info shared\n"
    ~"No shared libraries loaded at this time.\n"
    ^done
    mon reset init
    &"mon reset init\n"
    @"nrf51.cpu: target state: halted\n"
    @"target halted due to debug-request, current mode: Thread \n"
    @"xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0\n"
    ^done
    load
    &"load\n"
    ~"Loading section .softdevice, size 0x1b000 lma 0x0\n"
    +download,{section=".softdevice",section-size="110592",total-size="208334"}
    +download,{section=".softdevice",section-sent="16224",section-size="110592",total-sent="16224",total-size="208334"}
    ~"Loading section .isr_vector, size 0xc0 lma 0x1b000\n"
    +download,{section=".isr_vector",section-size="192",total-size="208334"}
    ~"Loading section .text, size 0x1290 lma 0x1b0c0\n"
    +download,{section=".text",section-size="4752",total-size="208334"}
    ~"Loading section .init_array, size 0x4 lma 0x1c350\n"
    +download,{section=".init_array",section-size="4",total-size="208334"}
    ~"Loading section .fini_array, size 0x4 lma 0x1c354\n"
    +download,{section=".fini_array",section-size="4",total-size="208334"}
    ~"Loading section .data, size 0x4 lma 0x1c358\n"
    +download,{section=".data",section-size="4",total-size="208334"}
    ~"Start address 0x1c024, load size 115548\n"
    ~"Transfer rate: 6 KB/sec, 9629 bytes/write.\n"
    ^done
    mon reset init
    &"mon reset init\n"
    @"nrf51.cpu: target state: halted\n"
    @"target halted due to debug-request, current mode: Thread \n"
    @"xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0\n"
    ^done
    -data-evaluate-expression "sizeof(void *)"
    -data-evaluate-expression "sizeof(int)"
    ^done,value="4"
    ^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 \"C:\\SyncDataC\\VisualProjects\\nRfBlinkAllSolution\\VisualGDB\\Debug\\nRfBlinkAll\".\n"
    ~"Remote serial target in gdb-specific protocol:\n"
    ~"Debugging a target over a serial line.\n"
    ~"\tWhile running this, GDB does not access memory from...\n"
    ~"Local exec file:\n"
    ~"\t`C:\\SyncDataC\\VisualProjects\\nRfBlinkAllSolution\\VisualGDB\\Debug\\nRfBlinkAll', file type elf32-littlearm.\n"
    ~"\tEntry point: 0x1c024\n"
    ~"\t0x00000000 - 0x0001b000 is .softdevice\n"
    ~"\t0x20000000 - 0x20001fe8 is .softdevice_sram\n"
    ~"\t0x0001b000 - 0x0001b0c0 is .isr_vector\n"
    ~"\t0x0001b0c0 - 0x0001c350 is .text\n"
    ~"\t0x0001c350 - 0x0001c354 is .init_array\n"
    ~"\t0x0001c354 - 0x0001c358 is .fini_array\n"
    ~"\t0x20001fe8 - 0x20001fec is .data\n"
    ~"\t0x20001fec - 0x20002074 is .bss\n"
    ^done
    -data-evaluate-expression "&_estack"
    ^done,value="0x20004000"
    -var-create - * "*((void **)0x20003ffc)"
    ^done,name="var1",numchild="0",value="0x78723d7a",type="void *",has_more="0"
    -var-assign "var1" 0x105d5a2d
    ^done,value="0x105d5a2d"
    -data-evaluate-expression "\*\(\(void\ \*\*\)0x20003ffc\)"
    ^done,value="0x105d5a2d"
    -exec-continue
    ^running
    *running,thread-id="all"
    ~"Note: automatically using hardware breakpoints for read-only addresses.\n"

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.080
    Inzwischen hab eich eine Lösung gefunden.

    VisualGDB hat mir permanent folgendes an den Kopf geworfen:
    Code:
    Error erasing flash with vFlashErase packet


    Zunächt einmal habe ich OpenOCD heruntergeladen und per Windows 10 SuperShell über meinen Programmer (jTag Lock-Pick Tiny2, ein ebenfalls günstiger ST-Link v2 müste aber genau funktionieren, entsprechend Interface in der Kommandozeile anpassen) auf den nRF51422 zugegriffen:
    Code:
    .\openocd.exe -s /openocd010/scripts/ -f interface/ftdi/jtag-lock-pick_tiny_2.cfg -c "transport select swd" -f target/nrf51_stlink.tcl


    Nun kann man per telnet auf den Mikrokontroller zugreifen.
    Hierzu habe ich Putty genutzt:
    telnet auswählen, als
    Code:
    IP 127.0.0.1 und Port: 4444
    eine nRF51822-Testplatine habe ich sofort per
    Code:
    nRF51 mass_erase
    löschen und über VisualStudio mit VisualGDB neu beschreiben können.

    Meine nRF51422-Platine hingegen spuckte mir den Fehler aus
    Code:
    Open On-Chip Debugger > nrf51 mass_erase
    nRF51822-CEAA(build code: C0) 256kB Flash
    Target not halted
    
    > halt
    Halt timed out, wake up GDB.
    timed out while waiting for target halted
    Kurzes Ausprobierer ergab hiermit Erfolg:
    Code:
    > reset halt
    nrf51.cpu: target state: halted
    target halted due to debug-request, current mode: Thread
    xPSR: 0xc1000000 pc: 0x000006d0 msp: 0x000007c0
    > nrf51 mass_erase
    >

    Und nun kann ich per VisualGDB auch auf meinen nRF51422 zugreifen.


    Bei mikrokontroller.net wurde ich auf ein Video aufmerksam gemacht, das die Beschreibung des Chips in Zusammenhang zum verbauten Speicher aufschlüsselt:
    https://www.youtube.com/watch?v=Nuh7qKAanyM&t=1m24s

    Daher konnte ich nun den richtigen Chip in der nRF51-Familie auswählen und meine Test-LED blinkt nun

Ähnliche Themen

  1. I2C-Bus am PC mit VisualStudio .Net
    Von Magier6 im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 21.05.2007, 07:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •