vscode 구축 STM 32 개발 환경의 상세 한 과정

설치 할 소프트웨어
 vscode
필수 플러그 인:
  • C/C++:하 이 라이트 디 스 플레이 와 코드 보완 제공
  • Cortex-Debug:디 버 깅 설정 제공
  • make
    make 도 구 는 xPack 프로젝트 가 제공 하 는 windows-build-tools 도 구 를 직접 다운로드 할 수 있 습 니 다.
    Release xPack Windows Build Tools v4.2.1-2 ・ xpack-dev-tools/windows-build-tools-xpack (github.com)
    openocd
    arm-none-eabi
    stm32CubeMX
    상술 한 소프트웨어 의 구체 적 인 설치 튜 토리 얼 인터넷 에는 상세 한 소개 자료 가 많 으 니 여 기 는 상세 하 게 소개 하지 않 겠 습 니 다.주의해 야 할 것 은 make,openocd,arm-none-eabi 등 실행 가능 한 프로그램의 경 로 를 환경 변수 에 추가 하 는 것 을 기억 하 는 것 입 니 다.
    아래 장절 의 내용 은 모두 stm32Cube MX 에 따라 생 성 된 vscodestm 32f 411 Makefile 프로젝트 를 예 로 들 어 설명 합 니 다.
    개발 환경 설정
    실제로 코드 를 만 드 는 편집 환경 으로 keil 에서 코드 편집 과 코드 보완 등 과 유사 한 기능 을 실현 합 니 다.vscode 를 통 해 vscode 열기stm32f 411 폴 더 이후 에 사실은 편집 과 코드 보완 기능(필수 플러그 인 이 설치 되 어 있 는 전제)을 갖 추 었 습 니 다.다만 오류 가 발생 하 는 파도 선 이 많 을 뿐 입 니 다.이 럴 때 원본 파일 의 각종 오류 알림 을 해결 하기 위해c_cpp_properties.json파일 을 설정 해 야 합 니 다.
    알림**uint32_t이 정의 되 지 않 은 유형 이 라면*defines에 추가__GNUC__c_cpp_properties.json파일:
    
    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceFolder}/**"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE",
                    "USE_HAL_DRIVER", //
                    "STM32F411xE", //
                    "__GNUC__" //
                ],
                // "compilerPath": "C:\\Program Files\\LLVM\\bin\\clang.exe",
                "compilerPath": "C:/Program Files (x86)/GNU Tools Arm Embedded/7 2018-q2-update/bin/arm-none-eabi-gcc.exe",
                "cStandard": "c17",
                "cppStandard": "c++14",
                // "intelliSenseMode": "windows-clang-x64"
                "intelliSenseMode": "gcc-arm"
            }
        ],
        "version": 4
    }
    컴 파일 다운로드 기능 설정
    새 파일task.json
    
    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build",
                "type": "shell",
                "command": "make",
                "args": [
                  "-j4"
                ],
                "group": { //group             build  ,      Ctrl+Shift+B    
                  "kind": "build",
                  "isDefault": true
                },
                "problemMatcher":[
                  "$gcc"
                ]
            },
            {
              "label": "clean",
              "type": "shell",
              "command": "make",
              "args": [
                "clean"
              ]
            },
            {
                "label": "flash - ST-Link", //    makefile          
                "type": "shell",
                "command": "make flash",
                "problemMatcher": []
            },
            {
              "label": "download", //     
              "type": "shell",
              "command": "openocd",
              "args": [
                "-f",
                "interface/stlink-v2.cfg",
                "-f",
                "target/stm32f4x.cfg",
                "-c",
                "program build/vscode_stm32f411.elf verify reset exit" //TODO:              ${workspaceFolder}   
              ],
              "dependsOn":"build", //download       , download         build  
            },
            {
              "label": "reset", //    
              "type": "shell",
              "command":"openocd",
              "args": [
                "-f",
                "interface/stlink-v2.cfg",
                "-f",
                "target/stm32f4x.cfg",
                "-c init",
                "-c reset",
                "-c exit",
              ],
              "problemMatcher": []
            },
            {
              "label": "halt", //    
              "type": "shell",
              "command":"openocd",
              "args": [
                "-f",
                "interface/stlink-v2.cfg",
                "-f",
                "target/stm32f4x.cfg",
                "-c init",
                "-c halt",
                "-c exit",
              ],
              "problemMatcher": []
            },
            {
              "label": "run", //    
              "type": "shell",
              "command":"openocd",
              "args": [
                "-f",
                "interface/stlink-v2.cfg",
                "-f",
                "target/stm32f4x.cfg",
                "-c init",
                "-c resume",
                "-c exit",
              ],
              "problemMatcher": []
            },
        ]
    }
    build작업 은 컴 파일 프로젝트 에 사 용 됩 니 다.(실질 적 으로 Makefile 파일 make 를 실행 합 니 다)clean컴 파일 로 생 성 된 중간 파일 을 제거 하 는 작업(실질 적 으로 Makefile 파일 의 make clean 을 실행 하 는 것)flash - ST-Link임 무 는 STM 32 칩 에 코드 를 다운로드 하 는 데 사 용 됩 니 다.여 기 는 Makefile 에 플래시 위조 목 표를 추가 해 야 합 니 다.위조 목표 플래시 는 다음 과 같 습 니 다.
    
    #flash the stm32
    OPENOCD := openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg
    FIRMWARE = $(BUILD_DIR)/vscode_stm32f411.elf
    
    flash:
    	$(OPENOCD) -c init \
    		-c 'reset halt' \
    		-c 'flash write_image erase $(FIRMWARE)' \
    		-c 'reset run' \
    		-c exit
    download임 무 는 STM 32 칩 에 코드 를 다운로드 하 는 데 사 용 됩 니 다.여 기 는 완전히tasks.json파일 에서 이 루어 집 니 다(openocd 를 통 해 대상 파일 을 다운로드 합 니 다).reset퀘 스 트 는 목표 판 프로그램 을 복원 하 는 데 사 용 됩 니 다.halt퀘 스 트 는 타 겟 보드 프로그램 을 걸 때 사용 합 니 다.run작업 은 걸 려 있 는 대상 프로그램 을 실행 하 는 데 사 용 됩 니 다.
    디 버 깅 기능 설정
    추가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": "Cortex Debug",
                "cwd": "${workspaceRoot}",
                "executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
                "request": "launch",
                "type": "cortex-debug",
                "servertype": "openocd",
                "device": "STM32F411xx",
                "interface": "swd",
                "configFiles": [
                    "${workspaceRoot}/openocd.cfg"
                ],
                "runToMain": true,
                "showDevDebugTimestamps": true,
                "svdFile": "${workspaceRoot}/STM32F411xx.svd", //                svd  
            }
        ]
    }
    작업 공간 디 렉 터 리 에openocd.cfg파일 을 추가 합 니 다.파일 내용 은 다음 과 같 습 니 다.
    
    source [find interface/stlink-v2.cfg]
    
    source [find target/stm32f4x_stlink.cfg]
    F5 줄 디 버 깅 을 실행 할 수 있 습 니 다.
    주의:여 기 는make명령 을 실행 한 후에 야 디 버 깅 을 할 수 있 습 니 다.그렇지 않 으 면 정상적으로 디 버 깅 할 수 없습니다.
    디 버 깅 을 실행 할 때마다 프로젝트 가 최신 으로 컴 파일 되 었 는 지 확인 하기 위해launch.json파일 에"preLaunchTask": "build"설정 을 추가 할 수 있 습 니 다.preLaunchTask디 버 깅 전에 실 행 된 작업 을 표시 합 니 다.build 는task.json파일 에 build 라 고 표 시 된 작업(주의launch.json파일 에 있 는 작업 이름 이task.json파일 에 있 는 태그 이름과 일치 해 야 합 니 다.
    매번 디 버 깅 이 끝 난 후에 도 타 겟 보드 의 프로그램 이 계속 실 행 될 수 있 도록launch.json파일 에"postDebugTask": "run"설정 을 추가 할 수 있 습 니 다.디 버 깅 이 끝 난 후에task.json파일 의run임 무 를 수행 하여 타 겟 보드 의 프로그램 이 계속 실 행 될 수 있 도록 합 니 다.
    전체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": "Cortex Debug",
                "cwd": "${workspaceRoot}",
                "executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
                "request": "launch",
                "type": "cortex-debug",
                "servertype": "openocd", //    GDB server
                // "device": "STM32F411xx", //
                "interface": "swd",
                "configFiles": [
                    // "${workspaceRoot}/openocd.cfg"
                    "interface/stlink-v2.cfg",
                    "target/stm32f4x.cfg"
                ],
                "runToMain": true,
                "showDevDebugTimestamps": true,
                "svdFile": "${workspaceRoot}/STM32F411xx.svd",
                "preLaunchTask": "build", //         (               )
                "postDebugTask": "run", //         ,                    
            }
        ]
    }
    세심 한 학생 들 은 이곳 의launch.json문서 와 위의 이 문서 가configFiles위치 에서 도 차이 가 있다 는 것 을 알 게 될 것 이다.
    이 방법 을 사용 하면 작업 폴 더 디 렉 터 리 에 새 파일openocd.cfg을 만 들 지 않 아 도 됩 니 다.그러나 명령 행 에 openocd 를 직접 입력 하면 오류 가 발생 합 니 다.
    작은 지식 포인트:터미널 에서 시작openocd할 때 현재 디 렉 터 리 에서openocd.cfg파일 을 설정 파일 로 자동 으로 찾 습 니 다.
    vscode 가 STM 32 개발 환경 을 구축 하 는 상세 한 과정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 vscode 구축 STM 32 개발 환경 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기