임베디드 프로그래밍 Lecture #02 2017. 9. 13.

Slides:



Advertisements
Similar presentations
제어기 활용 -GPIO Ch.05 RaspberryPi Sejin Oh. Raspberry Pi 제어기 활용 -GPIO  GPIO (General Purpose Input Output)  마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력 포트 
Advertisements

IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이 gpio.
개발 환경 설치 Embedded System Software
임베디드 프로그래밍 Lecture #
임베디드 프로그래밍 Lecture #
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
05. gcc, make, gdb.
Smart IoT 설계 시스템 Lecture 07. 센서와 액츄에이터 실습.
어서와 Java는 처음이지! 제1장 기초 사항.
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
리눅스 실습 정성훈.
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
제16장 QT/Embedded.
Kernel Porting Lecture #7.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
제4장 Cross Compiler 설치.
FUSING.
Java RMI (Remote Method Invocation)
임베디드 프로그래밍 Lecture #
8장 자바 입출력.
GPIO RaspberryPi Sejin Oh.
GPIO RaspberryPi Sejin Oh.
목차 커널의 개념 및 기능 커널 포팅 램디스크.
임베디드 프로그래밍 Lecture #
임베디드 프로그래밍 Lecture #
MicroC/OS-II Lab. 경희대학교 컴퓨터공학과 조 진 성.
IPython Notebook + Spark + TensorFlow on Linux
제3장 이클립스 사용하기.
임베디드 프로그래밍 Lecture #
Geek OS.
아두이노와 Node.js를 이용한 IoT 프로젝트
리눅스 명령어 실습 임베디드 시스템 I.
Hadoop 김연왕
Internet Protocol and Programming
DataScience Lab. 박사과정 김희찬 (월)
HBE-SMIII-SV210 리눅스 커널과 디바이스 드라이버
실시간 자원 량 정보 제공을 결합한 Heartbeat
자바 5.0 프로그래밍.
제1장 서론.
문자 디바이스 드라이버 임베디드 시스템.
DataScience Lab. 박사과정 김희찬 (월)
RPi2 SPI 8x8 Dot Matrix LED
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
라즈베리파이 기초과정 (1차시) ㈜헬로앱스 강사: 김영준 목원대학교 겸임교수.
프로그래밍 개론 Ⅰ 제 1장 . 서론 ①.
Internet Protocol and Programming
운영체제 RaspberryPi Sejin Oh.
Stepper Motor 디바이스 드라이버
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
자바 5.0 프로그래밍.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
Internet Computing KUT Youn-Hee Han
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
Command line tools 한국어 정보의 전산 처리
뇌를 자극하는 C 프로그래밍.
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Internet Protocol and Programming
아두이노 프로그래밍 Lecture #
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
Makefile
C.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Choi Younghwan CSE HUFS
임베디드 프로그래밍 Lecture #
Presentation transcript:

임베디드 프로그래밍 Lecture #02 2017. 9. 13

목 차 C/C++ 기반 라즈베리파이 제어 Java 기반 라즈베리파이 제어 wiringPi 라이브러리 설치 LED 제어 테스트 프로그램 Make 툴 사용 NetBeans을 이용한 원격 실행 및 디버깅 Java 기반 라즈베리파이 제어 Java SE embedded 설치 및 jre 패키지 생성 Device IO 패키지 생성 및 설치

C/C++ 기반 라즈베리파이 제어 (1) wiringPi 라이브러리 설치 참고 URL - http://wiringpi.com/download-and-install/ 설치 과정: # sudo apt-get update # sudo apt-get upgrade # sudo apt-get install git-core # cd ~ # git clone git://git.drogon.net/wiringPi # cd ~/wiringPi # git pull origin # ./build

물리적인 Pin 번호와 wiringPi Pin 번호가 다름에 유의 C/C++ 기반 라즈베리파이 제어 (2) wiringPi 라이브러리 검사 # gpio –v # gpio readall 물리적인 Pin 번호와 wiringPi Pin 번호가 다름에 유의

C/C++ 기반 라즈베리파이 제어 (3) LED 제어 테스트 프로그램 – 테스트 회로

C/C++ 기반 라즈베리파이 제어 (4) LED 제어 테스트 프로그램 – 테스트 프로그램: blink.c #include <stdio.h> #include <wiringPi.h> // LED Pin - wiringPi pin 0 is BCM_GPIO 17. #define LED 0 int main (void) { printf ("Raspberry Pi blink\n") ; wiringPiSetup () ; pinMode (LED, OUTPUT) ; for (;;) { digitalWrite (LED, HIGH) ; // On delay (500) ; // mS digitalWrite (LED, LOW) ; // Off delay (500) ; } return 0 ;

C/C++ 기반 라즈베리파이 제어 (5) LED 제어 테스트 프로그램 – 테스트 실행 # gcc –o blink –lwiringPi blink.c # sudo ./blink wiringPi 라이브러리 link 설정

C/C++ 기반 라즈베리파이 제어 (6) LED 제어 테스트 프로그램 – Make 툴 사용: Makefile ifneq ($V,1) Q ?= @ endif #DEBUG = -g -O0 DEBUG = -O3 CC = gcc INCLUDE = -I/usr/local/include CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe LDFLAGS = -L/usr/local/lib LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt # Should not alter anything below this line ##################################################### SRC = blink.c OBJ = $(SRC:.c=.o) BINS = $(SRC:.c=) all: $(BINS) blink: blink.o $Q echo [link] $Q $(CC) -o $@ blink.o $(LDFLAGS) $(LDLIBS) .c.o: $Q echo [CC] $< $Q $(CC) -c $(CFLAGS) $< -o $@ clean: $Q echo "[Clean]" $Q rm -f $(OBJ) *~ core tags $(BINS)

C/C++ 기반 라즈베리파이 제어 (7) LED 제어 테스트 프로그램 – Make 툴 사용: Makefile # make or # make all # make clean

C/C++ 기반 라즈베리파이 제어 (8) NetBeans을 이용한 원격 실행 및 디버깅 NetBeans IDE에 개발 호스트 목록에 라즈베리파이 장치 추가 C/C++ Project 생성 코드 작성 원격 실행 및 디버깅

C/C++ 기반 라즈베리파이 제어 (9) NetBeans을 이용한 원격 실행 및 디버깅 NetBeans IDE에 라즈베리파이 장치 추가 arp-scan 툴을 이용하여 라즈베리파이 IP 주소 확인 /etc/hosts 파일에 호스트명(my-raspi) 등록 또는 수정 NetBeans의 “Remote” 툴을 사용하여 장치 추가

C/C++ 기반 라즈베리파이 제어 (10)

C/C++ 기반 라즈베리파이 제어 (12)

C/C++ 기반 라즈베리파이 제어 (13)

C/C++ 기반 라즈베리파이 제어 (14) NetBeans을 이용한 원격 실행 및 디버깅 C/C++ Project 생성

C/C++ 기반 라즈베리파이 제어 (15)

C/C++ 기반 라즈베리파이 제어 (16) NetBeans을 이용한 원격 실행 및 디버깅 코드 작성

C/C++ 기반 라즈베리파이 제어 (17) NetBeans을 이용한 원격 실행 및 디버깅 원격 실행 및 디버깅

Java 기반 라즈베리파이 제어 (1) Java SE Embedded 설치 Java Embedded

Java 기반 라즈베리파이 제어 (2) Java SE Embedded 설치 Java SE Embedded ARM Core에 적합한 J2SE 실행환경

Java 기반 라즈베리파이 제어 (3) Java SE Embedded 설치 Java SE Embedded Profile 교재 pp.35, 표 1-3

Java 기반 라즈베리파이 제어 (4) Java SE Embedded 설치 Host Computer에서의 설치 주의 – Oracle 계정 필요

Java 기반 라즈베리파이 제어 (5) Java SE Embedded 설치 Host Computer에서의 설치 # sudo mv ejdk-8u144-linux-armv6-hflt.tar.gz /opt # cd /opt # sudo tar xvfz ejdk-8u144-linux-armv6-hflt.tar.gz # sudo ln –s ejdk1.8.0_144 ejdk1.8 Java SE Embedded 환경 설정 ~/.bashrc 파일에 다음 명령 추가 export EJDK_HOME=/opt/ejdk1.8 export PATH=$EJDK_HOME/bin:$PATH

Java 기반 라즈베리파이 제어 (6) Java SE Embedded 설치 Java SE Embedded 패키징 jrecreate 명령어 사용 옵션 – 교재 pp.54, 표 2-2 옵션 설명 교재 pp.46~52 참조

Java 기반 라즈베리파이 제어 (7) Java SE Embedded 설치 라즈베리파이의 Java 실행 환경 생성 사용할 라이브러리를 고려하여 적절한 profile 선택 실습에 사용할 라이브러리는 compact1 profile 요구 jrecreate.sh 명령어를 이용하여 실행환경 생성 # cd ~ # mkdir jiot # cd jiot # jrecreate.sh –d jre –vm client –p compact1 –x sunec,nashorn –g

Java 기반 라즈베리파이 제어 (8) Java SE Embedded 설치 라즈베리파이의 Java 실행 환경 생성

Java 기반 라즈베리파이 제어 (9) Java SE Embedded 설치 라즈베리파이의 Java 실행 환경 설치 Samba를 이용하여 생성된 실행 환경을 라즈베리파이에 설치(복사) 파일을 압축하여 전송하여야 링크 복사에 따른 문제를 해결할 수 있다.

Java 기반 라즈베리파이 제어 (10) Java SE Embedded 설치 라즈베리파이의 환경변수 설정 원격 접속을 통해 라즈베리파이에 접속하고, 홈 디렉토리의 .bashrc 파일에 다음 의 설정을 추가한다. export JAVA_HOME=/home/pi/jre export PATH=$JAVA_HOME/bin:$PATH 라즈베리파이 터미널 윈도우에서 java 명령어를 실행하여 버전을 확인한다. # java -version

Java 기반 라즈베리파이 제어 (11)

Java 기반 라즈베리파이 제어 (12) Device IO 패키지 생성 및 설치 Device IO 패키지 개요 http://openjdk.java.net/projects/dio/ http://docs.oracle.com/javame/8.0/api/dio/api/index.html https://wiki.openjdk.java.net/display/dio/Main GPIO, I2C, SPI, UART 등 임베디드 시스템에서 기기간 혹은 전자 부품의 입출력에 필요한 통신 방식을 지원하는 자바 API 라이브러리 OpenJDK 프로젝트에서 지원

Java 기반 라즈베리파이 제어 (13) Device IO 패키지 생성 및 설치 Device IO 패키지 아키텍처

Java 기반 라즈베리파이 제어 (14) Device IO 패키지 생성 및 설치 Device IO API : 교재 pp.103, 표 3-5

Java 기반 라즈베리파이 제어 (15) Device IO 패키지 생성 및 설치 Device IO 패키지 생성 https://wiki.openjdk.java.net/display/dio/Getting+Started # mkdir ~/jiot # cd ~/jiot # sudo apt-get install mercurial # hg clone http://hg.openjdk.java.net/dio/dev # export PI_TOOLS=/usr # export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt # cd dev # make

Java 기반 라즈베리파이 제어 (16) Device IO 패키지 생성 및 설치 Device IO 패키지 설치 ~/jiot/dev/build/deviceio/lib 아래의 arm 및 ext 디렉토리에 so 파일과 jar 파일 이 생성됨 Java SE Embedded 실행환경에서 Device IO 라이브러리를 사용하기 위해서는 생 성된 파일을 Java SE Embedded 실행환경으로 복사해주도록 한다. # pwd /home/pi/jiot/dev # cp –r build/deviceio/lib /home/pi/jre

Java 기반 라즈베리파이 제어 (17) LED 제어 테스트 프로그램 no-IDE Tool 프로그래밍 프로젝트 디렉토리 생성 # cd ~/jiot # mkdir led # cd led Java 소스 파일 편집 : 교재 pp.103 참조 # leafpad HelloDIO.java

Java 기반 라즈베리파이 제어 (18) import java.io.IOException; import jdk.dio.DeviceManager; import jdk.dio.gpio.GPIOPin; public class HelloDIO { public static final String LED_PIN = "GPIO17"; public static final int interval = 1000; public static void main(String[] args) { System.out.println("Accessing GPIO...."); try { GPIOPin pin = DeviceManager.open(LED_PIN, GPIOPin.class); boolean value = false; for (int i=0; i<10; i++) { pin.setValue(value = !value); if (value) System.out.println("ON"); else System.out.println("OFF"); Thread.sleep(interval); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) {

Java 기반 라즈베리파이 제어 (19) LED 제어 테스트 프로그램 H/W Registry 파일 편집 ~/jiot/openjdk/dev/config/dio.properties-raspberrypi 복사 GPIO17 Pin 장치를 출력으로 설정

Java 기반 라즈베리파이 제어 (20) LED 제어 테스트 프로그램 장치 보안 정책 설정 파일 편집 java.policy 파일 편집 # leafpad java.policy grant { permission jdk.dio.DeviceMgmtPermission "*:*", "open"; };

Java 기반 라즈베리파이 제어 (21) LED 제어 테스트 프로그램 자바 실행환경 재설정 # export JAVA_HOME=/home/pi/jre 컴파일 # javac HelloDIO.java –classpath $JAVA_HOME/lib/ext/dio.jar 실행 # java –Djdk.dio.registry=dio.properties-raspberrypi –Djava.security.policy=java.policy HelloDIO

Java 기반 라즈베리파이 제어 (22) NetBeans을 이용한 원격 실행 및 디버깅 원격 Java Platform 설정

Java 기반 라즈베리파이 제어 (23)

Java 기반 라즈베리파이 제어 (24)

Java 기반 라즈베리파이 제어 (25) NetBeans을 이용한 원격 실행 및 디버깅 Java project 생성: HelloLED

Java 기반 라즈베리파이 제어 (26) NetBeans을 이용한 원격 실행 및 디버깅 LED 테스트 소스 파일 편집

Java 기반 라즈베리파이 제어 (27) NetBeans을 이용한 원격 실행 및 디버깅 Device registry & Java security policy 파일 편집 Lib 디렉토리 생성 파일 편집 Build.xml 파일 수정

Java 기반 라즈베리파이 제어 (28)

Java 기반 라즈베리파이 제어 (29)

Java 기반 라즈베리파이 제어 (30)

Java 기반 라즈베리파이 제어 (31) NetBeans을 이용한 원격 실행 및 디버깅 Project property 수정 Source 속성 수정 Run 속성 수정

Java 기반 라즈베리파이 제어 (33)

Java 기반 라즈베리파이 제어 (33)

Java 기반 라즈베리파이 제어 (34)

Java 기반 라즈베리파이 제어 (35)

Java 기반 라즈베리파이 제어 (36) NetBeans을 이용한 원격 실행 및 디버깅 Project 실행 및 디버깅