본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링/드론

[STM32] VSCode에서 CrazyFlie 펌웨어 디버깅하기

by 베니스상인 2023. 12. 31.

VSCode에서 디버깅 환경을 구축하는 것은 아래 내용을 참고하면 된다.

 

https://swiftcam.tistory.com/668

 

 

 

기본적으로 VScode를 최신버전으로 설치하고 나서, arm-none-eabi 툴체인과 gdb 디버거를 설치한다.

나는 기존에 사용하던 Jlink 기반의 gdb 디버거를 사용한다.

 

해당 내용은 bitcraze.io 홈페이지나 나와 있으나 여러가지 불필요한 부분을 제외하고 ubuntu 환경에서 디버그 동작이 가능한 과정을 확인해본다.

 

아래 bitcraze.io의 내용을 참고 하였다.

https://www.bitcraze.io/documentation/repository/crazyflie-firmware/master/development/openocd_gdb_debugging/

 

On-chip debugging | Bitcraze

One of the key components of getting serious about developing on the Crazyflie, is to dive into the C-based firmware. If you want to do some major changes to the intrinsics of the code, it is essential to have proper tools to be able to debug the code (pla

www.bitcraze.io

 

 

 

펌웨어는 아래에서 다운받는다.

 

$ git clone --recursive https://github.com/bitcraze/crazyflie-firmware.git

 

 

다운로드가 끝나면 build 폴더로 찾아들어간다. 

 

해당 폴더에서 config menu아래오 같이 설정한다.

make menuconfig

 

 

메뉴 빌드가 끝나면 아래와 같은 화면이 보인다. FreeRTOS 기반으로 여러가지 설정을 해당 메뉴에서 수행할 수 있다. 설정이 완료되면 저장후 빠져나간다. 

 

 

 

빌드를 실행한다. 빌드는 아래처럼 VSCode 에서 제공하는 터미널에서 바로 실행할 수 있다.

 

 

빌드가 완료되면 아래와 같이 bin 파일과 elf 파일이 생성된다.

$ make -j8 all

.
.
.

  COPY  cf2.hex
  COPY  cf2.bin
Build for the cf2 platform!
Build 9:101de77a6746 (2023.11 +9) MODIFIED
Version extracted from git
Flash |  455572/1032192 (44%),  576620 free | text: 448172, data: 7400, ccmdata: 0
RAM   |   82912/131072  (63%),   48160 free | bss: 75512, data: 7400
CCM   |   62024/65536   (95%),    3512 free | ccmbss: 62024, ccmdata: 0

 

 

 

빌드된 파일을 디버깅하기 위해 디버거를 launch 할 수 있는 JSON 코드를 작성한다.

 

파일은 VSCode에서 ctrl+shift+P를 누르면 검색창에서 cortex-debuger를 찾아 launch.json 파일을 생성한다. 파일 내용은 아래와 같이 입력한다.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "STM32 Debug",
            "cwd": "${workspaceRoot}",
//            "executable": "${workspaceRoot}/examples/app_hello_world/build/cf2.elf",
            "executable": "${workspaceRoot}/build/cf2.elf",
            "request": "launch",
            "type": "cortex-debug",
            "device": "STM32F405RG",
            "svdFile": "STM32F405.svd",
            "servertype": "jlink",
//            "configFiles": ["interface/stlink-v2.cfg", "target/stm32f4x.cfg"],
//            "runToMain": true,
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "rtos": "FreeRTOS",
            "swoConfig": {
                "source": "probe",
                "enabled": true,
                "swoFrequency": 2000000,
                "decoders": [
                    {
                        "port": 0,
                        "label": "Output",
                    }
                ]
            },
    
            "preLaunchCommands": [
                "set mem inaccessible-by-default off",
                "enable breakpoint",
//                "monitor speed 100",                
                "monitor reset"

            ]
        },
        // {
        //     "name": "STM32 App Debug"
        // }
    ]
}

 

SVD 파일은 아래 링크에서 다운받아서 crazyflie-firmware 폴더로 복사하면 된다.

 

https://www.st.com/resource/en/svd/stm32f4_svd.zip 

 

 

 

 

F5를 눌러 디버그모드로 실행한다. VSCode의 터미널에서 gdb-server를 보면 아래와 같이 서버가 실행되는 로그 메시지를 확인할 수 있다.

 

[2023-12-30T16:30:20.606Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session connected. You can switch to "DEBUG CONSOLE" to see GDB interactions.
JLinkGDBServer -singlerun -nogui -if swd -port 50000 -swoport 50001 -telnetport 50002 -device STM32F405RG
SEGGER J-Link GDB Server V7.92n Command Line Version

JLinkARM.dll V7.92n (DLL compiled Oct 31 2023 15:15:34)

Command line: -singlerun -nogui -if swd -port 50000 -swoport 50001 -telnetport 50002 -device STM32F405RG
-----GDB Server start settings-----
GDBInit file:                  none
GDB Server Listening port:     50000
SWO raw output listening port: 50001
Terminal I/O port:             50002
Accept remote connection:      yes
Generate logfile:              off
Verify download:               off
Init regs on start:            off
Silent mode:                   off
Single run mode:               on
Target connection timeout:     0 ms
------J-Link related settings------
J-Link Host interface:         USB
J-Link script:                 none
J-Link settings file:          none
------Target related settings------
Target device:                 STM32F405RG
Target device parameters:      none
Target interface:              SWD
Target interface speed:        4000kHz
Target endian:                 little

Connecting to J-Link...
J-Link is connected.
Firmware: J-Link V9 compiled May  7 2021 16:26:12
Hardware: V9.20
Feature(s): GDB, RDI, FlashBP, FlashDL, JFlash
Checking target voltage...
Target voltage: 3.26 V
Listening on TCP/IP port 50000
Connecting to target...
Halting core...
Connected to target
Waiting for GDB connection...Connected to 127.0.0.1
GDB client (conn. 13) requested target.xml from GDB Server
Reading common registers: Read register 'r0' (4 bytes) from hardware: 0x9B000000
Read register 'r1' (4 bytes) from hardware: 0x01000000
Read register 'r2' (4 bytes) from hardware: 0x01000000
Read register 'r3' (4 bytes) from hardware: 0x8DF80B30
Read register 'r4' (4 bytes) from hardware: 0x03D1079B
Read register 'r5' (4 bytes) from hardware: 0x9B6F9B69
Read register 'r6' (4 bytes) from hardware: 0x0893089B
Read register 'r7' (4 bytes) from hardware: 0x002B1BD0
Read register 'r8' (4 bytes) from hardware: 0x089B5B68
Read register 'r9' (4 bytes) from hardware: 0x002B17D0
Read register 'r10' (4 bytes) from hardware: 0x00000000
Read register 'r11' (4 bytes) from hardware: 0x00000000
Read register 'r12' (4 bytes) from hardware: 0x00000000
Read register 'sp' (4 bytes) from hardware: 0x00680008
Read register 'lr' (4 bytes) from hardware: 0x6D520008
Read register 'pc' (4 bytes) from hardware: 0xB64C0208
Read register 'xpsr' (4 bytes) from hardware: 0x03000021
Read 4 bytes @ address 0x08024CB6 (Data = 0x930368DB)
Reading register 'msp' = 0x08006800
Reading register 'psp' = 0x00000000
Read 4 bytes @ address 0x0800526C (Data = 0xF01F4809)
Reading 64 bytes @ address 0x08006800
Received monitor command: halt
Halting target CPU...
...Target halted (PC = 0x08024CB6)
Received monitor command: reset
Resetting target
Downloading 392 bytes @ address 0x08004000
Downloading 15984 bytes @ address 0x08004190
Downloading 16128 bytes @ address 0x08008000
Downloading 16048 bytes @ address 0x0800BF00
Downloading 16064 bytes @ address 0x0800FDB0
Downloading 15904 bytes @ address 0x08013C70
Downloading 16080 bytes @ address 0x08017A90
Downloading 16032 bytes @ address 0x0801B960
Downloading 16032 bytes @ address 0x0801F800
Downloading 16016 bytes @ address 0x080236A0
Downloading 16128 bytes @ address 0x08027530
Downloading 16080 bytes @ address 0x0802B430
Downloading 16160 bytes @ address 0x0802F300
Downloading 16080 bytes @ address 0x08033220
Downloading 16112 bytes @ address 0x080370F0
Downloading 16112 bytes @ address 0x0803AFE0
Downloading 16112 bytes @ address 0x0803EED0
Downloading 16240 bytes @ address 0x08042DC0
Downloading 16160 bytes @ address 0x08046D30
Downloading 16288 bytes @ address 0x0804AC50
Downloading 16096 bytes @ address 0x0804EBF0
Downloading 16112 bytes @ address 0x08052AD0
Downloading 16112 bytes @ address 0x080569C0
Downloading 16128 bytes @ address 0x0805A8B0
Downloading 16112 bytes @ address 0x0805E7B0
Downloading 16256 bytes @ address 0x080626A0
Downloading 16352 bytes @ address 0x08066620
Downloading 16288 bytes @ address 0x0806A600
Downloading 12956 bytes @ address 0x0806E5A0
Downloading 8 bytes @ address 0x0807183C
Downloading 7400 bytes @ address 0x08071844
Downloading 40 bytes @ address 0x200143E0

Comparing flash   [....................] Done.
Erasing flash     [....................] Done.
Programming flash [....................] Done.

Writing register 'pc' = 0x08004190
Received monitor command: reset
Resetting target
Reading 64 bytes @ address 0x08005240
Read 2 bytes @ address 0x0800525E (Data = 0x2300)
Read 2 bytes @ address 0x08005262 (Data = 0xF89D)
Reading 64 bytes @ address 0x08005280
Read 2 bytes @ address 0x080052A4 (Data = 0xF89D)
Read 2 bytes @ address 0x080052C8 (Data = 0xF89D)
Read 2 bytes @ address 0x080052F2 (Data = 0xF89D)
Read 2 bytes @ address 0x08005312 (Data = 0xF89D)
Reading 64 bytes @ address 0x08005400
Read 2 bytes @ address 0x08005400 (Data = 0xF89D)
Reading 64 bytes @ address 0x08021400
Read 2 bytes @ address 0x08021420 (Data = 0xF00D)
Setting breakpoint @ address 0x0800525E, Kind = 2, Type = THUMB, BPHandle = 0x0001
Setting breakpoint @ address 0x08005262, Kind = 2, Type = THUMB, BPHandle = 0x0002
Setting breakpoint @ address 0x080052A4, Kind = 2, Type = THUMB, BPHandle = 0x0003
Setting breakpoint @ address 0x080052C8, Kind = 2, Type = THUMB, BPHandle = 0x0004
Setting breakpoint @ address 0x080052F2, Kind = 2, Type = THUMB, BPHandle = 0x0005
Setting breakpoint @ address 0x08005312, Kind = 2, Type = THUMB, BPHandle = 0x0006
Setting breakpoint @ address 0x08005400, Kind = 2, Type = THUMB, BPHandle = 0x0007
Setting breakpoint @ address 0x08021420, Kind = 2, Type = THUMB, BPHandle = 0x0008
Starting target CPU...
Erasing flash     [....................] Done.
Programming flash [....................] Done.
...Target halted (DBGRQ, PC = 0x08005310)
Reading common registers: Read register 'r0' (4 bytes) from hardware: 0x01000000
Read register 'r1' (4 bytes) from hardware: 0x3AA60010
Read register 'r2' (4 bytes) from hardware: 0x29530008
Read register 'r3' (4 bytes) from hardware: 0x01000000
Read register 'r4' (4 bytes) from hardware: 0x3030012B
Read register 'r5' (4 bytes) from hardware: 0x03D1079B
Read register 'r6' (4 bytes) from hardware: 0x9B6F9B69
Read register 'r7' (4 bytes) from hardware: 0x0893089B
Read register 'r8' (4 bytes) from hardware: 0x002B1BD0
Read register 'r9' (4 bytes) from hardware: 0x089B5B68
Read register 'r10' (4 bytes) from hardware: 0x00000000
Read register 'r11' (4 bytes) from hardware: 0x00000000
Read register 'r12' (4 bytes) from hardware: 0x00000000
Read register 'sp' (4 bytes) from hardware: 0x20680008
Read register 'lr' (4 bytes) from hardware: 0xF9FFFFFF
Read register 'pc' (4 bytes) from hardware: 0x10530008
Read register 'xpsr' (4 bytes) from hardware: 0x03000001
Removing breakpoint @ address 0x0800525E, Size = 2
Removing breakpoint @ address 0x08005262, Size = 2
Removing breakpoint @ address 0x080052A4, Size = 2
Removing breakpoint @ address 0x080052C8, Size = 2
Removing breakpoint @ address 0x080052F2, Size = 2
Removing breakpoint @ address 0x08005312, Size = 2
Removing breakpoint @ address 0x08005400, Size = 2
Removing breakpoint @ address 0x08021420, Size = 2
Read 4 bytes @ address 0x08005310 (Data = 0xF89DF8F7)
Reading register 'msp' = 0x08006820
Reading register 'psp' = 0x00000000
Reading 64 bytes @ address 0x08006800
WARNING: Failed to read memory @ address 0xD01B2B00
WARNING: Failed to read memory @ address 0xD01B2B00

 

 

 

그리고 Debug Console을 보면 아래와 같이 gdb-server가 동작하는 메시지를 확인할 수 있다.

Cortex-Debug: VSCode debugger extension version 1.12.1 git(652d042). Usage info: https://github.com/Marus/cortex-debug#usage
Reading symbols from /usr/bin/arm-none-eabi-objdump --syms -C -h -w /home/swift/workspace/git/crazyflie-firmware/build/cf2.elf
Reading symbols from /usr/bin/arm-none-eabi-nm --defined-only -S -l -C -p /home/swift/workspace/git/crazyflie-firmware/build/cf2.elf
Launching GDB: /usr/bin/arm-none-eabi-gdb -q --interpreter=mi2
    IMPORTANT: Set "showDevDebugOutput": "raw" in "launch.json" to see verbose GDB transactions here. Very helpful to debug issues or report problems
Launching gdb-server: JLinkGDBServer -singlerun -nogui -if swd -port 50000 -swoport 50001 -telnetport 50002 -device STM32F405RG
    Please check TERMINAL tab (gdb-server) for output from JLinkGDBServer
Finished reading symbols from objdump: Time: 116 ms
Output radix now set to decimal 10, hex a, octal 12.
Input radix now set to decimal 10, hex a, octal 12.
Finished reading symbols from nm: Time: 494 ms
0x08024cb6 in ADC_RegularChannelConfig (ADCx=0x300bf88d, ADC_Channel=70 'F', Rank=11 '\v', ADC_SampleTime=147 '\223') at ../src/lib/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_adc.c:730
730	    tmpreg1 = ADCx->SMPR1;
Program stopped, probably due to a reset and/or halt issued by debugger
2
Resetting target

Program
 received signal SIGTRAP, Trace/breakpoint trap.
0x08005310 in analogRead (pin=...) at ../src/deck/api/deck_analog.c:104
104	  GPIO_Init(deckGPIOMapping[pin.id].port, &GPIO_InitStructure);

 

 

정상적으로 디버그가 break point에서 멈추면 디버깅을 시작할 수 있는 모든 준비가 끝났다고 보면 된다. 원래는 특별한 break point를 설정한 것이 없다면 main에서 멈춰야 하나, 엉뚱한 곳에서 멈춰있다. 

 

 

 

STM32Fproject compile result

Launching GDB: /home/swift/st/stm32cubeide_1.14.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.linux64_1.1.100.202309141235/tools/bin/arm-none-eabi-gdb -q --interpreter=mi2 /home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Debug/STM32F4_FC_DEV.elf
1-gdb-set target-async on
-> undefined=thread-group-added,id="i1"
-> ~"Reading symbols from /home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Debug/STM32F4_FC_DEV.elf...\n"
Reading symbols from /home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Debug/STM32F4_FC_DEV.elf...
-> ~"Warning: 'set target-async', an alias for the command 'set mi-async', is deprecated.\n"
Warning: 'set target-async', an alias for the command 'set mi-async', is deprecated.
-> ~"Use 'set mi-async'.\n\n"
Use 'set mi-async'.

-> 1^done
2-gdb-version
-> ~"GNU gdb (GNU Tools for STM32 11.3.rel1.20230912-1600) 12.1.90.20220802-git\n"
-> ~"Copyright (C) 2022 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."
-> ~"\nType \"show copying\" and \"show warranty\" for details.\n"
-> ~"This GDB was configured as \"--host=x86_64-linux-gnu --target=arm-none-eabi\".\n"
-> ~"Type \"show configuration\" for configuration details.\n"
-> ~"For bug reporting instructions, please see:\n"
-> ~"<https://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\n"
-> ~"For help, type \"help\".\n"
-> ~"Type \"apropos word\" to search for commands related to \"word\".\n"
-> 2^done
3-interpreter-exec console "set print demangle on"
4-interpreter-exec console "set print asm-demangle on"
-> 3^done
-> =cmd-param-changed,param="print asm-demangle",value="on"
-> 4^done
Reading symbols from '/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Debug/STM32F4_FC_DEV.elf'
Finished reading symbols
Launching gdb-server: /usr/bin/JLinkGDBServer -singlerun -nogui -if swd -port 50000 -swoport 50001 -telnetport 50002 -device STM32F405RG
Please check TERMINAL tab (gdb-server) for output from /usr/bin/JLinkGDBServer
5-interpreter-exec console "source /home/swift/.vscode/extensions/marus25.cortex-debug-1.2.2/support/gdbsupport.init"
6-interpreter-exec console "source /home/swift/.vscode/extensions/marus25.cortex-debug-1.2.2/support/gdb-swo.init"
7-target-select extended-remote localhost:50000
8-interpreter-exec console "set mem inaccessible-by-default off"
9-interpreter-exec console "enable breakpoint"
10-interpreter-exec console "monitor reset"
11-interpreter-exec console "monitor halt"
12-interpreter-exec console "monitor reset"
13-target-download
14-interpreter-exec console "monitor reset"
15-enable-pretty-printing
-> 5^done
-> =cmd-param-changed,param="language",value="c"
-> =cmd-param-changed,param="language",value="auto"
-> 6^done
-> =thread-group-started,id="i1",pid="42000"
-> =thread-created,id="1",group-id="i1"
-> ~"main () at ../Core/Src/main.c:292\n"
main () at ../Core/Src/main.c:292
-> ~"292\t\t  if(flag_DMA1_DONE == 1)\n"
292		  if(flag_DMA1_DONE == 1)
-> *stopped,frame={addr="0x08004986",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="292",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
Program stopped, probably due to a reset and/or halt issued by debugger
-> 7^connected
-> =cmd-param-changed,param="mem inaccessible-by-default",value="off"
-> 8^done
-> 9^done
-> @"Resetting target\r\n"
Resetting target
-> 10^done
-> 11^done
-> @"Resetting target\r\n"
Resetting target
-> 12^done
-> 13+download,{section=".isr_vector",section-size="392",total-size="1456774"}
-> 13+download,{section=".isr_vector",section-sent="392",section-size="392",total-sent="392",total-size="1456774"}
-> 13+download,{section=".text",section-size="55468",total-size="1456774"}
-> 13+download,{section=".rodata",section-size="5604",total-size="1456774"}
-> 13+download,{section=".ARM",section-size="8",total-size="1456774"}
-> 13+download,{section=".data",section-size="3008",total-size="1456774"}
-> 13^done,address="0x080067a0",load-size="64488",transfer-rate="85984000",write-rate="6448"
-> @"Resetting target\r\n"
Resetting target
-> 14^done
-> 15^done
16-break-insert "/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c:129"
17-break-insert -t --function main
-> 16^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",thread-groups=["i1"],times="0",original-location="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c:129"}
-> 17^done,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",thread-groups=["i1"],times="0",original-location="-function main"}
18-exec-continue
-> 18^running
-> *running,thread-id="all"
mi2.status = running
-> =breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",thread-groups=["i1"],times="1",original-location="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c:129"}
-> =breakpoint-modified,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",thread-groups=["i1"],times="1",original-location="-function main"}
-> ~"\n"

-> ~"Breakpoint 1, main () at ../Core/Src/main.c:129\n"
Breakpoint 1, main () at ../Core/Src/main.c:129
-> ~"129\t  HAL_Init();\n"
129	  HAL_Init();
-> *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame={addr="0x080047f2",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
-> =breakpoint-deleted,id="2"
19-thread-list-ids
-> 19^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
20-thread-info 1
-> 20^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x080047f2",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"},state="stopped"}]
21-thread-list-ids
-> 21^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
22-thread-info 1
> 22^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x080047f2",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"},state="stopped"}]
23-thread-list-ids
-> 23^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
24-thread-info 1
-> 24^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x080047f2",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"},state="stopped"}]
25-thread-list-ids
-> 25^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
26-thread-info 1
-> 26^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x080047f2",func="main",args=[],file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"},state="stopped"}]
27-data-list-register-names
28-data-list-register-names
-> 27^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
-> 28^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
29-data-list-register-names
-> 29^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
30-stack-info-depth --thread 1 10000
31-stack-info-depth --thread 1 10000
-> 30^done,depth="1"
32-stack-list-frames --thread 1 0 0
-> 31^done,depth="1"
33-stack-list-frames --thread 1 0 0
-> 32^done,stack=[frame={level="0",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"}]
-> 33^done,stack=[frame={level="0",addr="0x080047f2",func="main",file="../Core/Src/main.c",fullname="/home/swift/workspace/git/STM32F4_FC_DEV/STM32F4_FC_DEV/Core/Src/main.c",line="129",arch="armv7e-m"}]
34-data-list-register-values N
35-data-list-register-values N
36-data-list-register-values N
-> 34^done,register-values=[{number="0",value="536870912"},{number="1",value="536873920"},{number="2",value="3758157056"},{number="3",value="134218165"},{number="4",value="536880316"},{number="5",value="0"},{number="6",value="0"},{number="7",value="537001960"},{number="8",value="0"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="0"},{number="13",value="0x2001ffe8"},{number="14",value="134244311"},{number="15",value="0x80047f2 <main+6>"},{number="25",value="1627389952"},{number="91",value="0x2001ffe8"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="1610612736"},{number="98",value="16777216"},{number="99",value="0"},{number="100",value="1610612736"},{number="101",value="1627389952"},{number="102",value="16777216"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]
-> 35^done,register-values=[{number="0",value="536870912"},{number="1",value="536873920"},{number="2",value="3758157056"},{number="3",value="134218165"},{number="4",value="536880316"},{number="5",value="0"},{number="6",value="0"},{number="7",value="537001960"},{number="8",value="0"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="0"},{number="13",value="0x2001ffe8"},{number="14",value="134244311"},{number="15",value="0x80047f2 <main+6>"},{number="25",value="1627389952"},{number="91",value="0x2001ffe8"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="1610612736"},{number="98",value="16777216"},{number="99",value="0"},{number="100",value="1610612736"},{number="101",value="1627389952"},{number="102",value="16777216"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]
-> 36^done,register-values=[{number="0",value="536870912"},{number="1",value="536873920"},{number="2",value="3758157056"},{number="3",value="134218165"},{number="4",value="536880316"},{number="5",value="0"},{number="6",value="0"},{number="7",value="537001960"},{number="8",value="0"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="0"},{number="13",value="0x2001ffe8"},{number="14",value="134244311"},{number="15",value="0x80047f2 <main+6>"},{number="25",value="1627389952"},{number="91",value="0x2001ffe8"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="1610612736"},{number="98",value="16777216"},{number="99",value="0"},{number="100",value="1610612736"},{number="101",value="1627389952"},{number="102",value="16777216"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]

 

 

 

 

 

cf2 project 

 

Launching GDB: /home/swift/st/stm32cubeide_1.14.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.linux64_1.1.100.202309141235/tools/bin/arm-none-eabi-gdb -q --interpreter=mi2 /home/swift/workspace/git/crazyflie-firmware/build/cf2.elf
1-gdb-set target-async on
-> undefined=thread-group-added,id="i1"
-> ~"Reading symbols from /home/swift/workspace/git/crazyflie-firmware/build/cf2.elf...\n"
Reading symbols from /home/swift/workspace/git/crazyflie-firmware/build/cf2.elf...
-> ~"Warning: 'set target-async', an alias for the command 'set mi-async', is deprecated.\n"
Warning: 'set target-async', an alias for the command 'set mi-async', is deprecated.
-> ~"Use 'set mi-async'.\n\n"
Use 'set mi-async'.

-> 1^done
2-gdb-version
-> ~"GNU gdb (GNU Tools for STM32 11.3.rel1.20230912-1600) 12.1.90.20220802-git\n"
-> ~"Copyright (C) 2022 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."
-> ~"\nType \"show copying\" and \"show warranty\" for details.\n"
-> ~"This GDB was configured as \"--host=x86_64-linux-gnu --target=arm-none-eabi\".\n"
-> ~"Type \"show configuration\" for configuration details.\n"
-> ~"For bug reporting instructions, please see:\n"
-> ~"<https://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\n"
-> ~"For help, type \"help\".\n"
-> ~"Type \"apropos word\" to search for commands related to \"word\".\n"
-> 2^done
3-interpreter-exec console "set print demangle on"
4-interpreter-exec console "set print asm-demangle on"
-> 3^done
-> =cmd-param-changed,param="print asm-demangle",value="on"
-> 4^done
Reading symbols from '/home/swift/workspace/git/crazyflie-firmware/build/cf2.elf'
Finished reading symbols
Launching gdb-server: /usr/bin/JLinkGDBServer -singlerun -nogui -if swd -port 50000 -swoport 50001 -telnetport 50002 -device STM32F405RG
Please check TERMINAL tab (gdb-server) for output from /usr/bin/JLinkGDBServer
5-interpreter-exec console "source /home/swift/.vscode/extensions/marus25.cortex-debug-1.2.2/support/gdbsupport.init"
6-interpreter-exec console "source /home/swift/.vscode/extensions/marus25.cortex-debug-1.2.2/support/gdb-swo.init"
7-target-select extended-remote localhost:50000
8-interpreter-exec console "set mem inaccessible-by-default off"
9-interpreter-exec console "enable breakpoint"
10-interpreter-exec console "monitor reset"
11-interpreter-exec console "monitor halt"
12-interpreter-exec console "monitor reset"
13-target-download
14-interpreter-exec console "monitor reset"
15-enable-pretty-printing
-> 5^done
-> =cmd-param-changed,param="language",value="c"
-> =cmd-param-changed,param="language",value="auto"
-> 6^done
-> =thread-group-started,id="i1",pid="42000"
-> =thread-created,id="1",group-id="i1"
-> ~"0x08005310 in analogReadVoltage (pin=...) at ../src/deck/api/deck_analog.c:149\n"
0x08005310 in analogReadVoltage (pin=...) at ../src/deck/api/deck_analog.c:149
-> ~"149\t  voltage = analogRead(pin) * VREF / adcRange;\n"
149	  voltage = analogRead(pin) * VREF / adcRange;
-> *stopped,frame={addr="0x08005310",func="analogReadVoltage",args=[{name="pin",value="..."}],file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
Program stopped, probably due to a reset and/or halt issued by debugger
-> 7^connected
-> =cmd-param-changed,param="mem inaccessible-by-default",value="off"
-> 8^done
-> 9^done
-> @"Resetting target\r\n"
Resetting target
-> 10^done
-> 11^done
-> @"Resetting target\r\n"
Resetting target
-> 12^done
-> 13+download,{section=".isr_vector",section-size="392",total-size="5002099"}
-> 13+download,{section=".isr_vector",section-sent="392",section-size="392",total-sent="392",total-size="5002099"}
-> 13+download,{section=".text",section-size="258144",total-size="5002099"}
-> 13+download,{section=".libc",section-size="8",total-size="5002099"}
-> 13+download,{section=".data",section-size="6956",total-size="5002099"}
-> 13+download,{section=".nzds",section-size="40",total-size="5002099"}
-> 13^done,address="0x08004190",load-size="265540",transfer-rate="7453752",write-rate="12644"
-> @"Resetting target\r\n"
Resetting target
-> 14^done
-> 15^done
16-break-insert "/home/swift/workspace/git/crazyflie-firmware/src/init/main.c:49"
17-break-insert -t --function main
-> 16^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x08015078",func="main",file="../src/init/main.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/init/main.c",line="49",thread-groups=["i1"],times="0",original-location="/home/swift/workspace/git/crazyflie-firmware/src/init/main.c:49"}
-> 17^done,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x08015078",func="main",file="../src/init/main.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/init/main.c",line="49",thread-groups=["i1"],times="0",original-location="-function main"}
18-exec-continue
-> 18^running
-> *running,thread-id="all"
mi2.status = running
-> ~"\nProgram"

Program
-> ~" received signal SIGTRAP, Trace/breakpoint trap.\n"
 received signal SIGTRAP, Trace/breakpoint trap.
-> ~"0x08005310 in analogReadVoltage (pin=...) at ../src/deck/api/deck_analog.c:149\n"
0x08005310 in analogReadVoltage (pin=...) at ../src/deck/api/deck_analog.c:149
-> ~"149\t  voltage = analogRead(pin) * VREF / adcRange;\n"
149	  voltage = analogRead(pin) * VREF / adcRange;
-> *stopped,reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint trap",frame={addr="0x08005310",func="analogReadVoltage",args=[{name="pin",value="..."}],file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},thread-id="1",stopped-threads="all"
mi2.status = stopped
19-thread-list-ids
-> 19^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
20-thread-info 1
-> 20^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x08005310",func="analogReadVoltage",args=[{name="pin",value="..."}],file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},state="stopped"}]
21-thread-list-ids
-> 21^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
22-thread-info 1
-> 22^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x08005310",func="analogReadVoltage",args=[{name="pin",value="..."}],file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},state="stopped"}]
23-data-read-memory-bytes "0x40012100" 80
24-data-list-register-names
-> 23^done,memory=[{begin="0x40012100",offset="0x00000000",end="0x40012150",contents="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}]
-> 24^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
25-thread-list-ids
-> 25^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
26-thread-info 1
27-data-read-memory-bytes "0x40012100" 80
28-data-list-register-names
-> 26^done,threads=[{id="1",target-id="Thread 57005",frame={level="0",addr="0x08005310",func="analogReadVoltage",args=[{name="pin",value="..."}],file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},state="stopped"}]
-> 27^done,memory=[{begin="0x40012100",offset="0x00000000",end="0x40012150",contents="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}]
-> 28^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
29-stack-info-depth --thread 1 10000
-> 29^done,depth="2"
30-stack-list-frames --thread 1 0 1
-> 30^done,stack=[frame={level="0",addr="0x08005310",func="analogReadVoltage",file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},frame={level="1",addr="0x00100000",func="??",arch="armv7e-m"}]
31-data-read-memory-bytes "0x40012100" 80
-> 31^done,memory=[{begin="0x40012100",offset="0x00000000",end="0x40012150",contents="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}]
32-data-list-register-names
-> 32^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xpsr","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control","apsr","epsr","ipsr","iapsr","eapsr","iepsr","fpscr","s0","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15"]
33-data-list-register-values N
34-stack-info-depth --thread 1 10000
> 33^done,register-values=[{number="0",value="0"},{number="1",value="0"},{number="2",value="4293918719"},{number="3",value="1048576"},{number="4",value="1048576"},{number="5",value="0"},{number="6",value="0"},{number="7",value="0"},{number="8",value="255"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="255"},{number="13",value="0x2001ffe0"},{number="14",value="-7"},{number="15",value="0x8005310 <analogReadVoltage+4>"},{number="25",value="-1593835517"},{number="91",value="0x2001ffe0"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="2684354560"},{number="98",value="16777216"},{number="99",value="3"},{number="100",value="2684354563"},{number="101",value="2701131776"},{number="102",value="16777219"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]
-> 34^done,depth="2"
35-stack-list-frames --thread 1 0 1
-> 35^done,stack=[frame={level="0",addr="0x08005310",func="analogReadVoltage",file="../src/deck/api/deck_analog.c",fullname="/home/swift/workspace/git/crazyflie-firmware/src/deck/api/deck_analog.c",line="149",arch="armv7e-m"},frame={level="1",addr="0x00100000",func="??",arch="armv7e-m"}]
36-data-list-register-values N
-> 36^done,register-values=[{number="0",value="0"},{number="1",value="0"},{number="2",value="4293918719"},{number="3",value="1048576"},{number="4",value="1048576"},{number="5",value="0"},{number="6",value="0"},{number="7",value="0"},{number="8",value="255"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="255"},{number="13",value="0x2001ffe0"},{number="14",value="-7"},{number="15",value="0x8005310 <analogReadVoltage+4>"},{number="25",value="-1593835517"},{number="91",value="0x2001ffe0"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="2684354560"},{number="98",value="16777216"},{number="99",value="3"},{number="100",value="2684354563"},{number="101",value="2701131776"},{number="102",value="16777219"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]
37-data-list-register-values N
-> 37^done,register-values=[{number="0",value="0"},{number="1",value="0"},{number="2",value="4293918719"},{number="3",value="1048576"},{number="4",value="1048576"},{number="5",value="0"},{number="6",value="0"},{number="7",value="0"},{number="8",value="255"},{number="9",value="0"},{number="10",value="0"},{number="11",value="0"},{number="12",value="255"},{number="13",value="0x2001ffe0"},{number="14",value="-7"},{number="15",value="0x8005310 <analogReadVoltage+4>"},{number="25",value="-1593835517"},{number="91",value="0x2001ffe0"},{number="92",value="0x0"},{number="93",value="0"},{number="94",value="0"},{number="95",value="0"},{number="96",value="0"},{number="97",value="2684354560"},{number="98",value="16777216"},{number="99",value="3"},{number="100",value="2684354563"},{number="101",value="2701131776"},{number="102",value="16777219"},{number="103",value="0"},{number="104",value="0"},{number="105",value="0"},{number="106",value="0"},{number="107",value="0"},{number="108",value="0"},{number="109",value="0"},{number="110",value="0"},{number="111",value="0"},{number="112",value="0"},{number="113",value="0"},{number="114",value="0"},{number="115",value="0"},{number="116",value="0"},{number="117",value="0"},{number="118",value="0"},{number="119",value="0"},{number="120",value="0"},{number="121",value="0"},{number="122",value="0"},{number="123",value="0"},{number="124",value="0"},{number="125",value="0"},{number="126",value="0"},{number="127",value="0"},{number="128",value="0"},{number="129",value="0"},{number="130",value="0"},{number="131",value="0"},{number="132",value="0"},{number="133",value="0"},{number="134",value="0"},{number="135",value="0"},{number="136",value="0"},{number="137",value="0"},{number="138",value="0"},{number="139",value="0"},{number="140",value="0"},{number="141",value="0"},{number="142",value="0"},{number="143",value="0"},{number="144",value="0"},{number="145",value="0"},{number="146",value="0"},{number="147",value="0"},{number="148",value="0"},{number="149",value="0"},{number="150",value="0"},{number="151",value="0"}]

 

 

이유는 아직 알지 못해서 확인을 해볼 필요가 있으나 break 된 시점을 기준으로 step별로 디버깅이 가능함을 확인하였다.

 

이제 디버깅의 세계로 뛰어들기만 하면 된다.

 

 

 

 

 

 

 

USB 드라이브

 

 

728x90

댓글