STM 32 고급 개발 (16) - CMSIS DAP 디 버 깅 프로젝트

9255 단어 STM32
최근 회사 의 프로젝트 는 공급 업 체 의 설 비 를 기다 리 는 데 시간 이 좀 남 았 습 니 다. ARM 공식 오픈 소스 인 CMSIS DAP 디 버 거 방안 을 괴 롭 혔 습 니 다. X893 대 신의 방안 을 사 용 했 습 니 다. 다음은 그의 개인 홈 페이지 와 GitHub 에 있 는 프로젝트 링크 를 첨부 합 니 다. (저 는 그 중에서 stlinkv 2.1 의 소프트 하드웨어 방안 을 사 용 했 습 니 다)
[http://akb77.com/g/stm32/cmsis-dap-adapter/](http://akb77.com/g/stm32/cmsis-dap-adapter/)
[https://github.com/x893/CMSIS-DAP](https://github.com/x893/CMSIS-DAP)

이 디 버 거 방안 은 매우 저렴 하 다 고 할 수 있 습 니 다. SWD 인터페이스 속 도 는 10m 의 전속력으로 달 할 수 있 고 115200 bps 까지 지원 하 는 직렬 포트 도 추가 되 어 있 습 니 다. 또한 하나의 선 을 연결 하면 두 개의 장치 로 식별 할 수 있 습 니 다. 하나의 디 버 거 로 도 사용 할 수 있 고 다른 항목 의 PCB 판 에 모 아 판 재 디 버 거 와 USART 직렬 포트 기능 회로 로 도 사용 할 수 있 습 니 다.
Keil 에서 CMSIS DAP 를 사용 합 니 다.
내 가 테스트 하 는 과정 에서 Keil 5 만 CMSIS DAP 를 성공 적 으로 식별 할 수 있 는 것 같 았 다. 그 설정 방법 은 기본적으로 다른 디 버 거 사용 방법 과 다 름 이 없 었 다. 왜냐하면 CMSIS DAP 는 자신 을 USB HID 와 CDC ACM 장치 로 표시 해서 사용 한 것 이 고 전 자 는 디 버 깅 기능 의 인터페이스 이 며 후 자 는 직렬 인터페이스 이 며 Windows 에서 자동 으로 식별 할 수 있 기 때문에 구동 을 설치 할 필요 가 없 었 다.하지만 하드웨어 디 버 깅 포트 에 하드웨어 리 셋 포트 를 설치 하지 않 았 다 면 Keil 디 버 깅 설정 에서 Connect & Reset Option 에서 Reset 을 시스템 소프트 인 터 럽 트 로 설정 해 야 한 다 는 것 을 기억 하 세 요.
STM32高级开发(16)-CMSIS DAP调试工程_第1张图片
STM32高级开发(16)-CMSIS DAP调试工程_第2张图片
직렬 포트 기능 에 대해 서 는 직렬 도 우미 로 디 버 거 에 대응 하 는 COM 포트 를 직접 열 면 된다.
Ubuntu 에서 OpenOCD + CMSIS DAP 사용 하기
질문
이 시리즈 의 한 편 으로서 자 연 스 럽 게 우 분투 에 담 긴 내용 이 야 말로 우리 가 이야기 해 야 할 중점 이다.처음에 하드웨어 를 연결 해서 새로운 OpenOCD 설정 을 사 용 했 을 때 CMSIS DAP 에 연결 할 수 없 는 문 제 를 얻 었 습 니 다.
openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg

하룻밤 동안 Google 은 몇 가지 문제 의 키 워드 를 자세히 연구 한 끝 에 시도 하 는 태도 로 새로운 OpenOCD 를 설치 하 는 과정 에서 이전의 문 제 를 발 견 했 습 니 다.원래 당시 에 OpenOCD 를 설치 할 때 두 가지 문제 가 있 었 다.
  • OpenOCD 컴 파일 설치 시의 매개 변 수 는 우리 가 OpenOCD 의 소스 코드 컴 파일 을 다운로드 하기 전에. / configure 명령 으로 컴 파일 파 라 메 터 를 설정 합 니 다. 기본 컴 파일 설정 은 stlink jlink 등 흔히 볼 수 있 는 몇 개의 디 버 거 만 사용 할 수 있 고 CMSIS DAP 에 대한 지원 을 추가 하지 않 습 니 다.
  • usb rule. d 의 문 제 는 ubuntu 나 Linux 에서 우 리 는 / etc / udev / rules. d / 디 렉 터 리 에 있 는 규칙 파일 을 사용 하여 USB 장 치 를 식별 하여 libusb 에 인 터 페 이 스 를 제공 하고 libusb 는 openocd 연결 에 인 터 페 이 스 를 제공 합 니 다.그래서 이 파일 에 새로운 DAP CMSIS 라 이브 러 리 를 추가 해 야 정상적으로 사용 할 수 있 습 니 다.

  • OpenOCD 다시 설치
    문 제 를 말 하고 우 리 는 이어서 해결 방법 을 소개 해 야 한다.
    우선, 분명히 우 리 는 컴 파일 을 다시 설정 하고 OpenOCD 를 설치 하여 CMSIS DAP 에 대한 지원 코드 를 시작 해 야 한다. 그러나 그 전에 우 리 는 hid 라 이브 러 리 를 설치 해 야 한다. 왜냐하면 리 눅 스에 서 기본적으로 HID 장치 가 구동 되 지 않 기 때문이다.
    $ sudo apt-get install libhidapi-dev

    설치 가 완료 되면 OpenOCD 의 소스 코드 경로 에 들 어가 명령 으로 컴 파일 파 라 메 터 를 설정 합 니 다.
    $ ./configure --enable-cmsis-dap

    설정 스 크 립 트 가 완 료 될 때 까지 기다 리 면 다음 과 같은 내용 이 표 시 됩 니 다.
    OpenOCD configuration summary
    --------------------------------------------------
    MPSSE mode of FTDI based devices        yes (auto)
    ST-Link JTAG Programmer                 yes (auto)
    TI ICDI JTAG Programmer                 yes (auto)
    Keil ULINK JTAG Programmer              yes (auto)
    Altera USB-Blaster II Compatible        yes (auto)
    Versaloon-Link JTAG Programmer          yes (auto)
    OSBDM (JTAG only) Programmer            yes (auto)
    eStick/opendous JTAG Programmer         yes (auto)
    Andes JTAG Programmer                   yes (auto)
    USBProg JTAG Programmer                 yes (auto)
    Raisonance RLink JTAG Programmer        yes (auto)
    Olimex ARM-JTAG-EW Programmer           yes (auto)
    CMSIS-DAP Compliant Debugger            yes
    Cypress KitProg Programmer              yes (auto)
    Altera USB-Blaster Compatible           no
    ASIX Presto Adapter                     no
    OpenJTAG Adapter                        no
    SEGGER J-Link Programmer                yes (auto)

    이 중 CMSIS - DAP 가 활성화 되 었 음 을 볼 수 있 습 니 다. 그 후에 우 리 는 명령 을 사용 하여 새 OpenOCD 를 컴 파일 하고 설치 합 니 다. (이전 버 전 을 삭제 할 필요 가 없습니다)
    $ sudo make 
    $ sudo make install

    설치 가 완료 되면 contrib 디 렉 터 리 에 들 어가 명령 을 사용 하여 60 - openocd. rules 파일 을 / etc / udev / rules. d / 디 렉 터 리 에 복사 합 니 다.
    $ sudo cp  60-openocd.rules /etc/udev/rules.d/

    이 파일 에는 디 버 거 를 지원 하 는 모든 USB 인터페이스 설명 이 포함 되 어 있 기 때문에 이 파일 에 복 사 된 규칙 파일 을 삭제 해 야 합 니 다. 예 를 들 어 49 - stlinkv 1. rules 49 - stlinkv 2. rules 49 - stlinkv 2 - 1. rules 99 - jlink. rules 등 입 니 다.
    $ rm 49-stlinkv1.rules 49-stlinkv2.rules 49-stlinkv2-1.rules 99-jlink.rules 

    시스템 을 다시 시작 해서 규칙 을 다시 불 러 옵 니 다.OpenOCD 명령 으로 연결 하면 큰 성 과 를 거 둘 수 있 습 니 다 ~
    디 버 거 사용
    시스템 을 다시 시작 한 후 우 리 는 다시 명령 을 사용 하여 목표 판 을 연결 합 니 다.
    $ openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg
    Open On-Chip Debugger 0.10.0+dev-00197-g2168c47 (2017-10-14-08:41)
    Licensed under GNU GPL v2
    For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
    Info : auto-selecting first available session transport "swd". To override use 'transport select '.
    adapter speed: 1000 kHz
    adapter_nsrst_delay: 100
    none separate
    cortex_m reset_config sysresetreq
    Info : CMSIS-DAP: SWD  Supported
    Info : CMSIS-DAP: Interface Initialised (SWD)
    Info : CMSIS-DAP: FW Version = 1.0
    Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
    Info : CMSIS-DAP: Interface ready
    Info : clock speed 1000 kHz
    Info : SWD DPIDR 0x1ba01477
    Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

    연결 성공 ~
    PS: 연결 이 실패 하면 CMSIS DAP 의 USB 인 터 페 이 스 를 다시 꽂 아 보 세 요. 저 는 이런 문제 에 부 딪 혔 습 니 다.
    직렬 포트 설정
    CDC ACM 의 구동 을 사용 하기 때문에, 우리 의 직렬 이름 은 ttyUSB 0 이 아니 라 ttyACM 0 입 니 다. 명령 을 사용 하여 Minicom 의 설정 을 변경 합 니 다.
    $ sudo minicom -s

    Ctrl+a,o。직렬 인 자 를 설정 합 니 다.serial port setup 에서 직렬 장치 번호 와 포트 율, 기 오 검사 위치 등 인 자 를 설정 한 다음 save setup as dfl 을 선택 한 후 minicom 을 다시 시작 하면 직렬 설정 이 완 료 됩 니 다.
    STM32高级开发(16)-CMSIS DAP调试工程_第3张图片

    좋은 웹페이지 즐겨찾기