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

Betaflight 이클립스 개발환경 설정 - 2

by 베니스상인 2020. 4. 15.

 

 

Global Tools paths에 빌드 툴체인 설정

 

C:\eclipse\GNU MCU Eclipse\Build Tools\2.12-20190422-1053\bin

 

 

 

 

 

 

 

Environment에 path 설정

 

 

 

 

Workspace Tool Paths 설정

 

 

 

 

 

2. Pack 설치

 

 

 

 

 

Packs 화면에서 아래 노란색 순환하는 화살표를 클릭하면 CMSIS package가 업데이트되어야 하는데 아래와 같은 에러가 나면서 실행이 중지되었다.

 

 

자세히 보면 자바관련 에러처럼 보이는데 검색을 해보니 xml 의 URL을 가져올 때 https의 프로토콜로 가져오지 않아서 발생하는 문제라는 것을 확인하였다. 

 

따라서 문제의 해결은 아래와 같이 할 수 있다.

 

Window -> Preferences -> C/C++ -> Packages -> Repositories 에서 CMSIS Pack URL 주소를 http에서 https로 변경해준다. 그러면 정상적으로 Package를 업데이트할 수 있다.

 

 

 

 

아래는 정상적으로 Package를 업데이트하는 화면이다. 시간은 약 10분이상 소요된다.

 

 

 

 

Pack 완료되었을 때

 

 

 

STMicroelectronics -> STM32F4 Series 를 선택하고 Packs 창에서 오른쪽 마우스 버튼을 클릭하여 install한다. 이 과정이 정상적으로 수행되어야 setting에서 디바이스를 선택할 수 있다.

 

 

 

3. Make existing makefile로 프로젝트 생성

 

 

먼저 git에서 betaflight-master 를 가져온다.

 

 

 

 

 

 

 

아래 URL을 입력한다.

 

 https://github.com/betaflight/betaflight

 

betaflight/betaflight

Open Source Flight Controller Firmware. Contribute to betaflight/betaflight development by creating an account on GitHub.

github.com

 

 

 

 

 

 

master 코드만 선택하고 clone 작업이 완료되면 Import using New project Wizard를 선택한다.

 

 

 

 

 

 

 

New Project wizard에서 C/C++ -> Makefile Project widh Existing Code를 선택한다. 

 

 

 

 

 

 

 

Existing Code Location에 git에서 다운받은 위치를 찾아주고 Toolchain에는 Cross ARM GCC 를 선택한다.

 

 

 

 

 

 

Makefile 프로젝트가 정상적으로 Import되면 아래와 같이 나타난다.

 

 

 

Project -> Properties -> C/C++ Build -> Environment 는 아래와 같이 설정되어 있어야 한다.

 

 

 

 

Project -> Properties -> C/C++ Build -> Setting -> Toolchains는 아래와 같이 설정한다.

 

 

 

 

Project -> Properties -> C/C++ Build -> Setting -> Devices는 STM32F405RG를 선택한다.

 

 

 

 

Project -> Properties -> C/C++ Build -> Tool Paths는 아래와 같이 설정한다.

 

 

 

 

Project -> Build Targets -> Creat에서 REVOLT Target 을 생성한다.

 

 

 

 

 

 

Build 시 아래와 같은 메시지가 나온다면?

 

uname 명령어가 없어서 system-id를 못가져오는 것이다. cywin을 설치해주어야 한다.

 

 

 

Cygwin을 설치하고도 아래와 같은 메시지가 나온다면?

 

git 실행파일이 아래 경로에 없다는 것이다. git은 이미 설치했으니 실행파일을 아래 경로로 복사해준다.

 

 

 

컴파일일 완료되면 아래와 같이 나타난다(cmd에서 실행시)

 

 

Build해서 정상적으로 elf파일이 생성되면 Debug Configuration에서 GDB SEGGER J-link Debugging을 선택한다. 아래와 같이 설정한다.

 

 

 

Debugger에서 J-link GDB는 아래와 같이 설정한다.

 

 

 

J-link GDB server 경로는 Windows -> Preferences -> Run/Debug -> SEGGER J-link 에 아래와 같이 입력해준다.

 

 

 

디버그를 실행하면 디버그모드로 창이 변경되면서 Break point 부터 디버깅이 가능하다. 그런데 무슨 문제인지 모르겠지만 main에서 No source available 이라고 나오면서 브레이크 포인트가 잡히질 않는다. Diassembly에서만 나타난다. 

 

구글을 검색해보니 컴파일시 만들어지는 Optimazation Level이나 디버그 모드와 관련이 있어 보인다.

 

 

Makefile을 살펴보니 Debug 모드 옵션을 주도록 되어 있다. 

아래와 같이 40라인에 DEBUG  ?= GDB 라고 입력하고 저장한다.

 

 

 

 

수정한 것으로 다시 컴파일한다. 

 

 

컴파일에서 시간이 많이 걸리면 command 창에서 make TARGET=REVOLT로 실행하고 컴파일 결과로 생성된 betaflight-master_REVOLT.elf 파일을 가지고 디버깅할 수 있다.  

 

 

 

 

Debug Configuration -> Main -> Build Configuration에서 Disable auto build를 선택하면 빌드하지 않고 빌드한 결과를 이용하여 디버깅할 수 있다.

 

 

 

디버깅을 실행하면 아래와 같이 디버그 모드로 들어가면서 Break point는 main의 시작점에 나타난다. 이제부터는 코드를 천천히 뜯어볼 수 있다.

 

 

 

728x90

댓글