본문 바로가기

개발/VS Visual Studio Code

VS Code 로 nuvoton 디버그 하기

본글은 Visual Source Code ( VsCode ) 로 Nuvoton 소스를 build ( compile ), debug 하는 글의 한 부분 입니다.

 

1.  Nuvoton 제공 Sample Code를 Keil 에서 Compile 하기   ( https://bahk33.tistory.com/181  )

2.  gcc 로 nuvoton source 직접 build(compile) 하기             ( https://bahk33.tistory.com/183 ) 

3. Visual Source VS Code 로 nuvoton Build(Compile) 하기   ( https://bahk33.tistory.com/185  ) 

4. VS Code 로 nuvoton 디버그 하기                                       (  https://bahk33.tistory.com/186  )   :   본글

 

==========================================

본문 목차.

1. OpenOCD 설치

2. VS Code Extension ( cortex debug )설치

3. Cortex-Debug launch 파일 추가
4. 디버그 하기

==========================================

 

1. OpenOCD 설치

 > Open OCD 는 https://sourceforge.net/projects/openocd/  에 있으나. windown용 컴파일된 파일은 제공 하지 않아,

 > NuEclipse 에 들어 있는 OpenOCD 를 꺼내야 합니다.

       https://www.nuvoton.com/tool-and-software/ide-and-compiler/  에 있는

       NuEclipse_V1.02.027_Windows  NuEclipse_Windows (For NuMicro ARM)   를 download 받읍니다.

> 다운로드(250110) 받아 뽑은거(OpenOCD-fromNuEclipseV1.2.27.zip) 아래에 첨부 하였읍니다. 귀찮으심 이거 쓰셔요.

 

>  다운 로드 된 파일에서 OpenOCD 꺼내기

1)  7zip 에서 다운 로드 한 파일을 [내부열기] , Ctrl+PgDn 하며 찾어 들어 가면, 

 2) NuEclipse_V1.02.027r_Windows-Setup.exe \NuEclipse.zip\NuEclipse\eclipse\  에 OpenOCD 가 보입니다.

   이것을 꺼냅니다.

   - 찝어서 적당한 디렉토리에 가져다 놓는다.  Drag and Drop

   - 여기서는 "E:\_t\_d\_VSCode\OpenOCD"  에 가져다 놓읍니다.


   3) "E:\_t\_d\_VSCode\OpenOCD" 을 확인 합니다.

 

> 뽑은거 첨부 합니다.

 

 

 

2. VS Code Extension ( cortex debug )설치

> Ctrl+Shift+X 를 누르면 Externtions Market Place 가 나오며 여기서 " cortex debug " 를 타이핑 합니다.

> [install] 해 주셔요

> 250110 현재 1.12.1 버전이 깔립니다.  이곳 저곳에서 1.2.2 버전을 깔라 하는데, 흠..

> 버전 1.4.4 는 안된다 하여 1.2.2 를 설치 하기 위하여 [Uninstall [v]] 에 있는 [v] 를 누르면 "Install Another Version" 이 나옵니다.

 

 

 

 

> 여기서 1.2.2 를 선택 하여 설치 합니다.

 

 

> downgrade 뒤 [Restart Extensions] 선택 합니다.

> 250122 현재 최종 버전은 1.12.1 인데 이것으로 하면 디버그 하다가 "Timeout" Error 가 납니다.

    1.2.2 로 설치 하니 정상 동작 합니다.

Failed to launch OpenOCD GDB Server: Timeout

 

> 자동 업데이트 방지 

1)  View > Extention : Shift+Ctrl+X 하고

 

2) EXTENSIONS 옆에 점 3개 ( ... ) 누르고 "Disable Auto Update too All Extensions" 선택 하셔요.

 

 

 

 

 

3. Cortex-Debug launch 파일 추가

> VSCode에서 플러그인으로 디버깅 할 수 있는 launch.json 파일을 디렉토리 ".vscode" 에 추가합니다

 

 

> 추가할 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": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "./build/UART_AutoFlow.elf",
            "name": "Debug with OpenOCD",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "armToolchainPath": "E:/_t/_d/_VSCode/gcc-arm-none-eabi-10.3-2021.10/bin",
// "gdbPath": "E:/_t/_d/_VSCode/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb.exe",
            "serverpath": "E:/_t/_d/_VSCode/OpenOCD/bin/openocd.exe",
            "searchDir": ["E:/_t/_d/_VSCode/OpenOCD/scripts"],            
            "configFiles": [
                "interface/nulink.cfg",
                "target/numicroM4.cfg",
            ],
            "interface": "swd",
            "device": "NUC472HI8AE",
            "runToEntryPoint": "main",
            "showDevDebugOutput" :"none",
            "postRestartCommands": [        
                "break main",
                "continue"
              ],
            "overrideLaunchCommands": [
                "set mem inaccessible-by-default off",
                "-enable-pretty-printing",

                // to flash application by GDB/OpenOCD/NuLink
                "monitor flash write_image erase build//UART_AutoFlow.bin",
                "monitor reset halt",
            ]                          
        }
    ]
}

 

> 주의 또는 신경 써서 볼 부분 또는 수정 하실 부분은 

1) 실행 바이너리 지정부 : "executable": "./build/UART_AutoFlow.elf"

2) OpenOCD 설치된곳 지정부 : "serverpath": "E:/_t/_d/_VSCode/OpenOCD/bin/openocd.exe"

   "searchDir": ["E:/_t/_d/_VSCode/OpenOCD/scripts"]

3) Device Type : "target/numicroM4.cfg"

   이것이 M0 이면 수정 하셔요.

4) Device 이름 :   "device": "NUC472HI8AE"

 

 

5) 다운로드 위한 flash 부 :  "monitor flash write_image erase build/UART_AutoFlow.bin"

입니다.

 

 

 



4. 디버그 하기

> 디버그 하기 전에 혹시 "NuLink ICP" Program 이 실행 되고 있으면,  반드시 끝내 주셔요.

   이게 Nu-Link 잡고 있으면 디버그 안됩니다.

> View 옆 점 3개 (...) > "Run" > "Start Debuging"   하시든 [F5] 를 누르 시면 디버그가 시작 됩니다. 

 

 

5. 덧붙임

> 소스 첨부 합니다.

   - 소스상 이제 GCC, IAR, KEIL 디렉토리는 필요 없으나 지우지 않았읍니다.

> OpenOCD 뽑은거 첨부 합니다.

 

 

 

UART_AutoFlow-VsCodeDebug-250122.zip
1.57MB

 

 

OpenOCD-fromNuEclipseV1.2.27.zip
13.95MB

 

 

 

 

관련된 모든 파일은

https://1024terabox.com/s/14o6ublK_ChNyk_kNX44mLA

 

에서 받을 수 있읍니다.

 

 

수고 하셨읍니다.

 

도움이 되셨으면, 댓글 부탁합니다. 댓글 하나에 힘이 됩니다.

 

고맙읍니다.