MCUS

제목[DAPLink] WSL2 에서 DAPLink 컴파일 하기 #22026-01-21 10:46
작성자 Level 10
  • nRST Pin 의 변경을 위해 PCB 포트를 테스트한 결과 "PA6" 에 연결 된 것 확인
    • "./source/hic_hal/stm32/stm32f103xb/IO_Config.h" 을 수정해야 함
// nRESET OUT Pin
#define nRESET_PIN_PORT              GPIOB      --> GPIO A
#define nRESET_PIN                   GPIO_PIN_0 --> GPIO_PIN_6
#define nRESET_PIN_Bit               0          --> 6

 

    • Connect  LED Pin 의 변경을 위해 PCB 포트를 테스트한 결과 "PB2" 에 연결 된 것 확인
//Connected LED
#define CONNECTED_LED_PORT           GPIOB     
#define CONNECTED_LED_PIN            GPIO_PIN_6    --> GPIO_PIN_2
#define CONNECTED_LED_PIN_Bit        6             --> 2

 

    • USB Status  LED Pin 의 변경을 위해 PCB 포트를 테스트한 결과 "PB8" 에 연결 된 것 확인
//LEDs
//USB status LED
#define RUNNING_LED_PORT             GPIOA        --> GPIOB
#define RUNNING_LED_PIN              GPIO_PIN_9   --> GPIO_PIN_8
#define RUNNING_LED_Bit              9            --> 8

#define PIN_HID_LED_PORT             GPIOA        --> GPIOB
#define PIN_HID_LED                  GPIO_PIN_9   --> GPIO_PIN_8
#define PIN_HID_LED_Bit              9            --> 8

#define PIN_CDC_LED_PORT             GPIOA        --> GPIOB
#define PIN_CDC_LED                  GPIO_PIN_9   --> GPIO_PIN_8
#define PIN_CDC_LED_Bit              9            --> 8

#define PIN_MSC_LED_PORT             GPIOA        --> GPIOB
#define PIN_MSC_LED                  GPIO_PIN_9   --> GPIO_PIN_8
#define PIN_MSC_LED_Bit              9            --> 8

 

    • Target SWCLK Pin 의 변경을 위해 PCB 포트를 테스트한 결과 "PA4" 에 연결 된 것 확인
//SWD
#define SWCLK_TCK_PIN_PORT           GPIOB        --> GPIOA
#define SWCLK_TCK_PIN                GPIO_PIN_13  --> GPIO_PIN4
#define SWCLK_TCK_PIN_Bit            13           --> 4

 

    • Target SWDIO_OUT Pin 의 변경을 위해 PCB 포트를 테스트한 결과 "PA2" 에 연결 된 것 확인 (SWDIO_IN 은 원본과 달리 공통으로 사용하는 것 같음, 추후 디버깅 시 문제 발생하면 수정 예정 )
#define SWDIO_OUT_PIN_PORT           GPIOB       --> GPIOA
#define SWDIO_OUT_PIN                GPIO_PIN_14 --> GPIO_PIN_2
#define SWDIO_OUT_PIN_Bit            14          --> 2

#define SWDIO_IN_PIN_PORT            GPIOB       --> GPIOA
#define SWDIO_IN_PIN                 GPIO_PIN_12 --> GPIO_PIN_2
#define SWDIO_IN_PIN_Bit             12          --> 2

 

  • WSL2 에서 bootloader 와 interface 컴파일
$ cd ./DAPLink
$ source ./venv/bin/activate
(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_bl clean
(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_bl all
(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_if clean
(venv) $ make -C projectfiles/make_gcc_arm/stm32f103xb_if all

 

  • 컴파일된 이미지 중 *_bl.bin 파일을 MCU에 Writing 한다.

 

  • 원본에는 nRST Pin 에 10K 저항이 Pullup 되어 있으나 구매한 보드에는 없어서 10K 저항 Pullup 시킴 ( 이 저항이 없을 경우 Bootloader 로 진입이 안됨, 물론 소스코드에서 내부 풀업 사용으로 수정할 수 있으나 여기서는 안함) :: 리셋핀 왼쪽에 3.3V 전원 VIA 가 있어 솔더 마스크 벗겨냄

 

 

 

  • nRST 핀과 GND 핀을 쇼트 시킨 후 USB 케이블을 연결한 후 나타나는 MAINTENANCE 드라이브 및 장치 관리자 화면 

 

  • Drag & Drop 으로 "*_if.bin " 파일을 집어 넣은 후 자동 리셋 후 APPLICATION 펌웨어가 가동 되면서 나타나는 장치 관리자와 그리고 사라진 MAINTENANCE 드라이브 화면

 

댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)