nRF51 SDK Eclipse 개발환경 구축

Posted by 카이젠8501 카이젠8501
2016.11.24 14:02 IoT/BLE Module

Hardware

nRF51 Development Kit board(PCA10028)

20160108_150259

GNU tools for ARM embedded Processors

(1) 다운로드 GCC ARM Embedded

https://launchpad.net/gcc-arm-embedded/+download

(2) Install GCC ARM Embedded

설치 옵션에서 path 등록 해줘야 함.

Default Path : C:\Program Files (x86)\GNU Tools ARM Embedded

GNUWin32 and CoreUtils

(1) GnuWin32 - Core Utility
http://gnuwin32.sourceforge.net/packages/coreutils.htm
(2) GnuWin32 - GNU Make utility
http://gnuwin32.sourceforge.net/packages/make.htm

nRF51 SDK 10.0.0

(1) nRF51 SDK 다운로드
https://developer.nordicsemi.com/nRF5_SDK/nRF51_SDK_v10.x.x/

SDK를 다운로드 받은 후, 아래 경로로 이동하면 3개의 Makefile이 존재 한다. 각자의 환경에 맞는 파일을 수정하면 된다. ( Makefile.posix : For Linux or OSX User, Makefile.windows : For Windows User)

<SDK>/components/toolchain/gcc

Text Editor를 이용하여 Makefile.windows 파일을 열고,GNU_INSTALL_ROOT와 Version을 수정한다.

ifeq ($(findstring 86, $(ProgramFiles)), )
    PROGFILES := C:/Program Files
else
    PROGFILES := C:/Program Files (x86)
endif

GNU_INSTALL_ROOT := $(PROGFILES)/GNU Tools ARM Embedded/4.9 2015q3
GNU_VERSION := 4.9.3
GNU_PREFIX := arm-none-eabi

Compile nRF51 Sample Example

<SDK>\examples\peripheral\blinky\pca10028\blank\armgcc

CMD 창에서 위 경로로 이동한 다음 make 명령을 수행하면 아래와 같은 로그가 나오며, _build 폴더에 해당 Binary가 생성되는 것을 확인 할 수 있다.

E:\test\nRF51_SDK_10.0.0\examples\peripheral\blinky\pca10028\blank\armgcc>make
rm -rf _build
echo  makefile
makefile
mkdir _build
Compiling file: system_nrf51.c
Compiling file: main.c
Compiling file: nrf_delay.c
Compiling file: gcc_startup_nrf51.s
Linking target: nrf51422_xxac.out
make[1]: Entering directory `E:/test/nRF51_SDK_10.0.0/examples/peripheral/blinky/pca10028/blank/armgcc'
Preparing: nrf51422_xxac.bin
Preparing: nrf51422_xxac.hex

   text    data     bss     dec     hex filename
   1004     104      28    1136     470 _build/nrf51422_xxac.out

make[1]: Leaving directory `E:/test/nRF51_SDK_10.0.0/examples/peripheral/blinky/pca10028/blank/armgcc'

E:\test\nRF51_SDK_10.0.0\examples\peripheral\blinky\pca10028\blank\armgcc>

Download Link for nRF-tools(Windows,Linux)

Optional: erase target if not already blank

<SDK>\examples\peripheral\blinky\pca10028\blank\armgcc>nrfjprog --family nRF51 -e
Erasing code and UICR flash areas.
Applying system reset.

Load FW image to target

<SDK>\examples\peripheral\blinky\pca10028\blank\armgcc>nrfjprog --family nRF51 --program _build/nrf51422_xxac.hex
Parsing hex file.
Reading flash area to program to guarantee it is erased.
Checking that the area to write is not protected.
Programing device.

Reset and Run

E:\test\nRF51_SDK_10.0.0\examples\peripheral\blinky\pca10028\blank\armgcc>nrfjprog --family nRF51 -r
Applying system reset.
Run.

Eclipse 설정

(1) Download Mars C/C++ developers package

(2) Install GNU ARM Eclipse Plug-in

20151223_131131

20151223_131157

20151223_131209

(3) Configure environment

[windows]-[Preferences]-[C/C++]-[Build]-[Global Tools path]

Build tools folder: C:\Program Files (x86)\GnuWin32\bin
Toolchain folder : C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2015q3/bin

20151223_132030

20151223_132212

(4) Configuration Packages

20151223_154230

20151223_155100

20151223_155245

20151223_155954

참고 자료

http://gnuarmeclipse.github.io/plugins/packs-manager/

Create a new Eclipse Project

(1) Eclipse 실행 후, [file]->[new Makefile project with existing code] 선택

20151223_132945

(2) Project Name과 Existing Code Location 지정 후, Finish 버튼 클릭
(Exsting Code Location : \examples\peripheral\blinky\pca10028\s110\armgcc)

20151223_133028

(3) Makefile을 열고 C_SOURCE_FILES에 추가 되어 있는 파일들을 Eclipse의 Project Explorer에 추가 한다.

[NEW]-[Folder]-[Advanced]-[Virtual Folder] 체크 후, Folder name에 Application 이름으로 Virtual Folder 생성

20160107_092650

생성된 Virtual Folder 선택 -> [Import]-[File System] 선택

20160107_094800

원하는 main.c가 있는 경로 설정 -> main.c 선택 -> Create links in workspace 선택

20160107_095148

20160107_095627

nRF_Driver 이름의 Virtual Folder 생성-> nRF_Driver 선택-> [Import]-[File System] 선택 후 nRF51_SDK_10.0.0\components\drivers_nrf 폴더 등록

20160107_101037

(4) makefile을 열고 CFLAGS의 옵션을 -O3에서 -O0 -g3로 변경한다.

#flags common to all targets
CFLAGS  = -DNRF51
CFLAGS += -DBOARD_PCA10028
CFLAGS += -DBSP_DEFINES_ONLY
CFLAGS += -mcpu=cortex-m0
CFLAGS += -mthumb -mabi=aapcs --std=gnu99
CFLAGS += -Wall -Werror -O0 -g3
CFLAGS += -mfloat-abi=soft
# keep every function in separate section. This will allow linker to dump unused functions
CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
CFLAGS += -fno-builtin --short-enums

(5) Create Make Target
해당 프로젝트를 컴파일하기 위해서 Make Target을 생성해야 한다. 생성 규칙은 Makefile에 기술되어 있으며, flash_softdevice는 NRF51에 Bluetooth Stack을 업로드하는데 사용되며 flash nrf51422_xxac_s110은 User Application을 업로드 하기 위해 사용된다.

20160107_102313

Reference

https://devzone.nordicsemi.com/tutorials/7/development-with-gcc-and-eclipse/
http://redbearlab.com/nrf51822-sdk/

저작자 표시
신고

'IoT > BLE Module' 카테고리의 다른 글

BLE to Ethernet Thin Gateway 만들기  (0) 2016.11.24
nRF51 SDK Eclipse 개발환경 구축  (0) 2016.11.24
이 댓글을 비밀 댓글로

Arduino Library를 구현하기 위한 Eclipse 개발 환경 구축

Posted by 카이젠8501 카이젠8501
2016.09.05 10:02 IT 개발/Arduino

Arduino를 설치 하면 Sketch라는 별도의 IDE를 사용해서 코드를 수정, 컴파일 및 다운로드를 한다. 간단한 프로그램을 작성하거나, 사용하고 있는 라이브러리를 내부까지 확인 할 필요가 없는 경우 Sketch 프로그램만 이용해도 대부분의 Arduino의 기능을 사용 할 수 있다.

하지만 나와 같이 Arduino Library를 구현해야 하거나, Arduino Core 및 Library에서 제공하는 함수들의 내부를 확인하고 싶을 때는 Sketch 프로그램의 기능이 한 없이 부족함을 느낀다.

때문에 본 포스팅에서는 Eclipse IDE 환경에서 Arduino Library를 개발 하기 위한 환경 구축하는 방법을 설명한다.

Arduino Library를 구현하기 위한 Eclipse 개발 환경

Download Eclipse

본 포스팅에서는 Eclipse Mars 버전을 사용 하였다.

아래 주소를 이용하면 Eclipse Mars 버전을 다운로드 할 수 있다.

Eclipse IDE for C/C++ Developers

Install Arduino Plugin

Eclipse를 실행 한 후, [Help]-[Eclipse Marketplace]에서 Arduino Eclipse IDE V2를 설치 한다.

20160727_091520

정상적으로 설치가 완료되면, 아래와 같은 메뉴와 아이콘이 생성되는 것을 볼 수 있다.

20160727_092202

Install Arduino IDE

위에서 설치한 Arduino Plugin은 Arduino IDE version 1.6.5 이상을 지원하지 않는다. 때문에 최신 버전의 Arduino IDE 대신, 1.6.5 버전을 설치해야 되며 아래 주소를 이용하면 해당 버전을 다운로드 할 수 있다.

https://www.arduino.cc/en/Main/OldSoftwareReleases#previous

20160727_093141

Configure Arduino Plugin in Eclipse

Arduino IDE 설치가 완료되면, Eclipse에서 Arduino를 컴파일하기 위한 환경 설정이 필요하다. Eclipse에서는 Arduino IDE에 설치된 컴파일러와 다운로드 프로그램을 이용하여 컴파일 및 다운로드를 할 수 있으며, Arduino IDE가 설치 되어 있는 경로를 지정하는 간단한 환경 설정이 필요 하다.

[Window]-[Preferences]-[Arduino]에서 아래 표시되어 있는 정보를 설정하면 된다.

(일반적인 Arduino IDE를 설치 경로는 C:\Program Files (x86)\Arduino 이다.)

또한 개인적으로 사용하고 있는 Library가 있는 경우, 아래 Private Library path 에 설정하면 Arduino에서 지원하는 Library 이외의 개인적인 Library를 사용 할 수 있다.

20160727_093549

Create Arduino Project

새로운 Arduino Project를 생성하기 위해서는, Project Explorer에서 [New]-[Project]-[Arduino]-[New Arduino sketch]를 선택 하고 프로젝트 이름 및 간단한 옵션들을 선택 해야 한다.

20160727_092534 20160727_092606

20160727_094049 20160727_094102

20160727_094122

프로젝트가 정상적으로 만들어 지면 아래와 같은 폴더 구조를 볼 수 있으며, Test_Arduino.cpp 파일에 main 코드를 구현하면 된다.

20160727_094151

Import Library

내가 만든 새로운 라이브러리 혹은 별도의 외부 라이브러리를 사용하기 위해서는 라이브러리를 Import 해야 한다.

Import를 위한 방법은 프로젝트 이름을 선택 한 후, [마우스 우 클릭]-[Import]-[Arduino]-[Import Arduino libraries into the current project]를 선택 해서 원하는 라이브러리를 추가 한다.

20160727_095036

20160727_095149

20160727_095210

Compile and Download

코드를 작성한 후, 아래 표시된 화살표 아이콘을 누르면 컴파일과 다운로드가 동시에 된다. 다운로드가 정상적으로 완료 되면 Console 탭에서 아래와 같은 메시지를 확인 할 수 있다.

20160727_111425

Trouble Shooting

혹시, 컴파일이 안되거나 다운로드시 보드를 찾을 수 없다는 메시지가 나오면 아래와 같이 프로젝트 속성을 확인해서 컴포트 및 보드가 제대로 설정되어 있는지 확인 해야 한다.

20160727_111638

저작자 표시
신고
이 댓글을 비밀 댓글로

How to use GDB environment on Eclipse with pyOCD

Posted by 카이젠8501 카이젠8501
2015.10.08 15:12 IT 개발/mbed

How to use GDB environment on Eclipse with pyOCD

Environment

Target : WIZwiki_w7500
OS : Linux Mint
Kernel : 3.15.8-031508

featured image

Setting for pyOCD

Download pyOCD and install

refer to this document.

Run pyOCD gdb server script

$ sudo python test/gdb_test.py 
[sudo] password for kaizen: 
INFO:root:Waiting for a USB device connected
INFO:root:new board id detected: 22010203066B9E1CFB9743E5
INFO:root:board allows 1 concurrent packets
INFO:root:DAP SWD MODE initialised
INFO:root:IDCODE: 0xBB11477
INFO:root:4 hardware breakpoints, 0 literal comparators
INFO:root:CPU core is Cortex-M0
INFO:root:2 hardware watchpoints
INFO:root:GDB server started at port:3333

GNU ARM Eclipse

Plugins install

For more information, Refer to this URL.

Setting debug option

[Run]-[Debug Configurations]-[GDB Hardware Debugging]-[New Project]-[Main]

www.life4iot.com_010

changed GDB Command for using GNU ARM tools.
[Debug Configurations]-[Debugger] and setting for remote target.

www.life4iot.com_012

Setting to “Start up” tap as below.

www.life4iot.com_013

Run Debug

If GDB server and GDB client on Eclipse are run nomarlly, Your firmware will be break on your break point which you were selected.

www.life4iot.com_014


저작자 표시
신고
Tags
이 댓글을 비밀 댓글로

Eclise에서 ARM GCC OpenOCD 사용하기

Posted by 카이젠8501 카이젠8501
2015.10.08 14:56 IT 개발/개발환경

ARM GCC OpenOCD

Eclipse plug-ins

주소 : http://gnuarmeclipse.sourceforge.net/updates

Install _014.png

GDB Client

GDB Client는 GNU Toolchain의 일부이며, 설치된 GNU Tool Chain 폴더 안에 arm-none-eabi-gdb 바이너리를 실행하면 된다

선택 영역_015.png

저작자 표시
신고
이 댓글을 비밀 댓글로

Using Arduino Serial monitor of Eclipse on Linux

Posted by 카이젠8501 카이젠8501
2014.10.20 13:13 IT 개발/Arduino


Using Arduino Serial monitor of Eclipse on Linux

요 근래 NoteBook의 OS를 windows에서 Linux로 변경 하였다. 변경 된 Linux 환경에서 Eclipse의 Arduino Plugin을 설치하고 Arduino Library 개발 작업을 진행하려고 하는데, Serial Monitor가 동작하지 않는다. 이를 해결하기 위해 구글링한 내용을 정리하여 포스팅 한다.

위 문제를 해결 하기 위해서는 eclipse.ini 파일에 아래 내용을 추가 해야 한다.

-Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyACM1:/dev/ttyACM2:/dev/ttyACM3:/dev/ttyUSB0::/dev/ttyUSB1::/dev/ttyUSB2::/dev/ttyUSB3::/dev/ttyUSB4

kaizen@kaizen-SharkBay-Platform ~/eclipse $ pwd
/home/kaizen/eclipse

kaizen@kaizen-SharkBay-Platform ~/eclipse $ ls
about.html   artifacts.xml  dropins  eclipse.ini   features  notice.html  plugins
about_files  configuration  eclipse  epl-v10.html  icon.xpm  p2           readme

kaizen@kaizen-SharkBay-Platform ~/eclipse $ vi eclipse.ini

In Eclipse.ini

위 내용을 추가 한 후, Eclipse.ini 파일을 열면 아래과 같다.

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212
-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0:/dev/ttyACM1:/dev/ttyACM2:/dev/ttyACM3:/dev/ttyUSB0::/dev/ttyUSB1::/dev/ttyUSB2::/dev/ttyUSB3::/dev/ttyUSB4

Reference

http://www.baeyens.it/eclipse/Arduino%20eclipse%20plugin%20FAQ.html#Serialdoesntwork


저작자 표시
신고
이 댓글을 비밀 댓글로
    • 2014.11.24 16:49
    비밀댓글입니다