SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
이 호 민
우분투리눅스로 임베디드 개발하기
Host 로 우분투를 사용하는 이유
 미려하고 편한 UI
 진화를 멈추지 않은 cmdline – bash
 안전한 OS
 더 좋은 FileSystem
 개발 도구 기본 제공
 컴파일러 , 툴체인 , 디버거 , etc...
 효율적인 패키징 (deb) 시스템
아두이노 소개
아두이노 소개 2/2
 AVR 프로세서를 사용한 마이컴
 Open source HW
 Self-Programing 을 위한 부트로더 내장
 프로토타입 개발에 편한 점퍼선 연결 GPIO
 USB 케이블로 업로드 및 디버깅
 아두이노 언어
 C/CPP 에서 중복되는 부분을 빼서 간소화함
 스케치 - 아두이노 언어로 작성한 프로그램
아두이노 개발환경 설치
 $ sudo add-apt-repository ppa:arduino-ubuntu-
team
 소스리스트에 아두이노 저장소 (ppa) 추가
 $ sudo apt-get update
 소스리스트 갱신
 $ sudo apt-get install arduino
 아두이노 패키지 설치
아두이노 패키지 구성
 필요한 패지키들 (dependency) 이 같이 설치됨
 avr-cross-toolchain
 Java, etc...
 debian/control
Package: arduino
Architecture: all
Depends: ${misc:Depends}, gcc-avr, avr-libc,
avrdude (>= 5.10-1ubuntu1),
default-jre | java6-runtime, librxtx-java (>=2.1.7r2-4ubuntu1)
Description: The Arduino libraries and the development environment
Arduino is an open-source electronics prototyping platform...
아두이노 IDE
 Verify 를 누르면 ..
 스케지에 살을 붙여
cpp 언어로 변경
 avr-gcc 크로스컴파일
 Upload 를 누르면 ...
 이미지를 아두이노 보
드에 올림
Frizing – 소개
Frizing – 브레드보드
 http://fritzing.org
 빠른 하드웨어 구성
 적은 수정 비용
 구멍들은 표준 간격
 행 / 열의 구멍들은 서
로 연결되어 있음
 가운데 분리 영역 DIL
패키징의 칩 사용
EagleCad 1/3 - 소개
 http://www.cadsoftusa.com/
 설치
 $ sudo apt-get install eaglecad
 –회로설계 sch
 –아트워크 brd
 gerber 파일로 출력 가능
 –라이브러리 lbr
EagleCad 2/3 – 회로설계
EagleCad 3/3 – 아트워크
Gerbv 1/3 – Gerber Viewer
 Gerber 는 회로도의 PDF 파일
 설치
 $ sudo apt-get install gerbv
 레이어 별로 파일 생성
 GBL, GBO, GBS – bottom layer
 GTL, GTO, GTS – top layer
 TXT - drill
 압축하여 PCB 제조 (fab) 업체에 주문
Gerbv 2/3
Gerbv 3/3
Home – fab 1/3
 Export layer
 Bottom or Top Layer
 PAD, VIA, Route,
Dimention
 색반전 후 출력
 PressNPeel 필름
 다리미로 동판에 패턴
인쇄
Home – fab 2/3
 필름을 벋겨낸 후
 유성팬으로 패턴 수정
 에칭액을 사용해 에칭
Home – fab 3/3
 마스킹을 벋겨냄
 드릴링
 전자부품을 조립 / 완성
Vim – 소개
 설치 (gvim)
 $ sudo apt-get install
vim-gnome
 GUI 메뉴로 폰트 변경
후 현재 설정 확인
 :set
 기본 폰트 설정
 ~/.vimrc
 set gfn= 나눔고딕코딩 
Bold 10
Vim – 사용
 내장 도움말
 :help
 Graphical vi-vim Cheat Sheet and Tutorial
 http://www.viemu.com/a_vi_vim_graphical_c
heat_sheet_tutorial.html
ctags & cscope
 ctags
 http://ctags.sourceforge.net/
 소스의 심볼들을 빠르게 검색
 cscope
 http://cscope.sourceforge.net/
 함수 호출 검색
 정규식으로 파일 검색
 파일을 포함한 파일 , etc...
ctags & cscope – vim 연동 1/2
 SourceCodeObedience 플러그인 설치
 http://www.vim.org/scripts/script.php?
script_id=1638
 설치 - ~/.vim/plugin 폴더에 압축 해제
 ctags, cscope DB 생성
#!/bin/bash
SOURCE_LIST=source.list
rm -rf cscope.out tags
find . ( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o
-name '*.s' -o -name '*.S' ) -print > $SOURCE_LIST
cscope -b -i $SOURCE_LIST
ctags -L $SOURCE_LIST
ctags & cscope – vim 연동 2/2
arm-cross-toolchain
 크로스 툴 체인 빌드
 http://www.kegel.com/crosstool/
 기 빌드된 툴 체인 설치
 CodeSourcery, etc...
 적당한 곳에 압축 해제 후 사용
 다음과 같이 설치 위치 PATH 추가
 $ vi ~/.bashrc
 PATH=$PATH:/usr/local/arm/arm-2009q3/bin
Arm 타겟 으로 포팅하기 1/3
$ make
cc -c mkdosfs.c -o mkdosfs.o
cc mkdosfs.o -o mkdosfs
$ file mkdosfs
mkdosfs: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not
stripped
 기존 target → Makefile 수정
$ vi Makefile
CC=arm-none-linux-gnueabi-gcc
CFLAGS=--static
...
Arm 타겟으로 포팅하기 2/3
$ make
arm-none-linux-gnueabi-gcc --static -c mkdosfs.c -o mkdosfs.o
arm-none-linux-gnueabi-gcc mkdosfs.o -o mkdosfs
$ file mkdosfs
mkdosfs: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically
linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
Arm 타겟으로 포팅하기 3/3
 리눅스 커널의 Makefile 중 ...
 CROSS_COMPILE 변수로 툴체인 설정
 $ make ARCH=arm 
CROSS_COMPILE="arm-none-eabi-" -j3
# Make variables (CC, etc...)
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
...
Distcc - 분산 빌드 1/2
 설치
 $ sudo apt-get install distcc distccmon-
gnome
 서버 설정
 /etc/default/distcc, /etc/init.d/distcc
 distcc 서버들 사용하기
 $ DISTCC_HOSTS=”192.168.10.2/3 localhost/2”
make -j 16
 -j 옵션으로 ( 프로세스 개수 *3 + 1)
Distcc – 분산빌드 2/2
Q&A
감사합니다 .

Más contenido relacionado

La actualidad más candente

도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespaceSam Kim
 
[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2ndPark Jonggun
 
도커 없이 컨테이너 만들기 3편
도커 없이 컨테이너 만들기 3편도커 없이 컨테이너 만들기 3편
도커 없이 컨테이너 만들기 3편Sam Kim
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습봉조 김
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypiYeonah Ki
 
망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5종인 전
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남Jae Sang Lee
 
라즈베리파이 환경설정
라즈베리파이 환경설정라즈베리파이 환경설정
라즈베리파이 환경설정InHee Kim
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5thPark Jonggun
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요chcbaram
 
Raspberry-PI GPIO with Python
Raspberry-PI GPIO with PythonRaspberry-PI GPIO with Python
Raspberry-PI GPIO with Pythonsewoo lee
 
TestBCD2015-2(Answer)
TestBCD2015-2(Answer)TestBCD2015-2(Answer)
TestBCD2015-2(Answer)Yong Heui Cho
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요chcbaram
 
3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)Daniel Shin
 
Smart rover 통신 분석
Smart rover 통신 분석Smart rover 통신 분석
Smart rover 통신 분석Jang Suk Jung
 
[드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23][드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23]chcbaram
 

La actualidad más candente (20)

도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
 
[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
Linux+정리
Linux+정리Linux+정리
Linux+정리
 
도커 없이 컨테이너 만들기 3편
도커 없이 컨테이너 만들기 3편도커 없이 컨테이너 만들기 3편
도커 없이 컨테이너 만들기 3편
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습
 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypi
 
망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5
 
Docker설치
Docker설치Docker설치
Docker설치
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
 
Introduce Cobuntu 9.04
Introduce Cobuntu 9.04Introduce Cobuntu 9.04
Introduce Cobuntu 9.04
 
라즈베리파이 환경설정
라즈베리파이 환경설정라즈베리파이 환경설정
라즈베리파이 환경설정
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 
Raspberry-PI GPIO with Python
Raspberry-PI GPIO with PythonRaspberry-PI GPIO with Python
Raspberry-PI GPIO with Python
 
TestBCD2015-2(Answer)
TestBCD2015-2(Answer)TestBCD2015-2(Answer)
TestBCD2015-2(Answer)
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)3D카툰메이커 완료세미나(복구됨)
3D카툰메이커 완료세미나(복구됨)
 
Smart rover 통신 분석
Smart rover 통신 분석Smart rover 통신 분석
Smart rover 통신 분석
 
[드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23][드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23]
 

Similar a 이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)

Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)wonyong hwang
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203doo rip choi
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6종인 전
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11종인 전
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bashpyrasis
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) wonyong hwang
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17종인 전
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfkwbak
 
Linux ut-broker-install
Linux ut-broker-installLinux ut-broker-install
Linux ut-broker-installJUNHEEKIM27
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual StudioHeecheol Yang
 
Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Jaeock Shim
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9종인 전
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxwonyong hwang
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스
 

Similar a 이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D) (20)

Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6망고100 보드로 놀아보자 6
망고100 보드로 놀아보자 6
 
망고100 보드로 놀아보자 11
망고100 보드로 놀아보자  11망고100 보드로 놀아보자  11
망고100 보드로 놀아보자 11
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bash
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0) Hyperledger Fabric practice (v2.0)
Hyperledger Fabric practice (v2.0)
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17망고100 보드로 놀아보자 17
망고100 보드로 놀아보자 17
 
JVM_트러블슈팅.pdf
JVM_트러블슈팅.pdfJVM_트러블슈팅.pdf
JVM_트러블슈팅.pdf
 
Linux ut-broker-install
Linux ut-broker-installLinux ut-broker-install
Linux ut-broker-install
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual Studio
 
Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)Relationship between firmware and module(drvier)
Relationship between firmware and module(drvier)
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
 

Más de Ubuntu Korea Community

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt Ubuntu Korea Community
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리Ubuntu Korea Community
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회Ubuntu Korea Community
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesUbuntu Korea Community
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationUbuntu Korea Community
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들Ubuntu Korea Community
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티Ubuntu Korea Community
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고Ubuntu Korea Community
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조Ubuntu Korea Community
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기Ubuntu Korea Community
 

Más de Ubuntu Korea Community (20)

권총 사격하러 우분투 써밋 참가한 썰.txt
 권총 사격하러 우분투 써밋 참가한 썰.txt  권총 사격하러 우분투 써밋 참가한 썰.txt
권총 사격하러 우분투 써밋 참가한 썰.txt
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
 
우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리우분투한국커뮤니티 2022년 활동 정리
우분투한국커뮤니티 2022년 활동 정리
 
우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회우분투한국커뮤니티 2022년 신년회
우분투한국커뮤니티 2022년 신년회
 
Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022Ubuntu Korea at FOSSASIA Summit 2022
Ubuntu Korea at FOSSASIA Summit 2022
 
Overview of the Flatpak
Overview of the FlatpakOverview of the Flatpak
Overview of the Flatpak
 
Usage of the MQTT
Usage of the MQTTUsage of the MQTT
Usage of the MQTT
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
 
Memory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack TechniquesMemory Attack - The Memory Attack Techniques
Memory Attack - The Memory Attack Techniques
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop Application
 
나의 우분투 이야기
나의 우분투 이야기나의 우분투 이야기
나의 우분투 이야기
 
Malware Dataset & Ubuntu
Malware Dataset & UbuntuMalware Dataset & Ubuntu
Malware Dataset & Ubuntu
 
케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들케라스와 함께하는 재밌는 딥러닝 활용 사례들
케라스와 함께하는 재밌는 딥러닝 활용 사례들
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티9월 서울지역 세미나 GPG 키사이닝 파티
9월 서울지역 세미나 GPG 키사이닝 파티
 
우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고우분투한국커뮤니티 2018년도 상반기 활동 보고
우분투한국커뮤니티 2018년도 상반기 활동 보고
 
새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조새로운 Libhanjp 라이브러리 구조
새로운 Libhanjp 라이브러리 구조
 
스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기스타트업에서 하드웨어 개발 프로세스 도입하기
스타트업에서 하드웨어 개발 프로세스 도입하기
 
기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT기계들의 소셜 미디어, MQTT
기계들의 소셜 미디어, MQTT
 
모바일에 딥러닝 심기
모바일에 딥러닝 심기모바일에 딥러닝 심기
모바일에 딥러닝 심기
 

이호민 - 우분투 환경에서의 임베디드 개발환경 구축 및 어플리케이션 개발 (2010Y06M24D)

  • 1. 이 호 민 우분투리눅스로 임베디드 개발하기
  • 2. Host 로 우분투를 사용하는 이유  미려하고 편한 UI  진화를 멈추지 않은 cmdline – bash  안전한 OS  더 좋은 FileSystem  개발 도구 기본 제공  컴파일러 , 툴체인 , 디버거 , etc...  효율적인 패키징 (deb) 시스템
  • 4. 아두이노 소개 2/2  AVR 프로세서를 사용한 마이컴  Open source HW  Self-Programing 을 위한 부트로더 내장  프로토타입 개발에 편한 점퍼선 연결 GPIO  USB 케이블로 업로드 및 디버깅  아두이노 언어  C/CPP 에서 중복되는 부분을 빼서 간소화함  스케치 - 아두이노 언어로 작성한 프로그램
  • 5. 아두이노 개발환경 설치  $ sudo add-apt-repository ppa:arduino-ubuntu- team  소스리스트에 아두이노 저장소 (ppa) 추가  $ sudo apt-get update  소스리스트 갱신  $ sudo apt-get install arduino  아두이노 패키지 설치
  • 6. 아두이노 패키지 구성  필요한 패지키들 (dependency) 이 같이 설치됨  avr-cross-toolchain  Java, etc...  debian/control Package: arduino Architecture: all Depends: ${misc:Depends}, gcc-avr, avr-libc, avrdude (>= 5.10-1ubuntu1), default-jre | java6-runtime, librxtx-java (>=2.1.7r2-4ubuntu1) Description: The Arduino libraries and the development environment Arduino is an open-source electronics prototyping platform...
  • 7. 아두이노 IDE  Verify 를 누르면 ..  스케지에 살을 붙여 cpp 언어로 변경  avr-gcc 크로스컴파일  Upload 를 누르면 ...  이미지를 아두이노 보 드에 올림
  • 9. Frizing – 브레드보드  http://fritzing.org  빠른 하드웨어 구성  적은 수정 비용  구멍들은 표준 간격  행 / 열의 구멍들은 서 로 연결되어 있음  가운데 분리 영역 DIL 패키징의 칩 사용
  • 10. EagleCad 1/3 - 소개  http://www.cadsoftusa.com/  설치  $ sudo apt-get install eaglecad  –회로설계 sch  –아트워크 brd  gerber 파일로 출력 가능  –라이브러리 lbr
  • 11. EagleCad 2/3 – 회로설계
  • 12. EagleCad 3/3 – 아트워크
  • 13. Gerbv 1/3 – Gerber Viewer  Gerber 는 회로도의 PDF 파일  설치  $ sudo apt-get install gerbv  레이어 별로 파일 생성  GBL, GBO, GBS – bottom layer  GTL, GTO, GTS – top layer  TXT - drill  압축하여 PCB 제조 (fab) 업체에 주문
  • 16. Home – fab 1/3  Export layer  Bottom or Top Layer  PAD, VIA, Route, Dimention  색반전 후 출력  PressNPeel 필름  다리미로 동판에 패턴 인쇄
  • 17. Home – fab 2/3  필름을 벋겨낸 후  유성팬으로 패턴 수정  에칭액을 사용해 에칭
  • 18. Home – fab 3/3  마스킹을 벋겨냄  드릴링  전자부품을 조립 / 완성
  • 19. Vim – 소개  설치 (gvim)  $ sudo apt-get install vim-gnome  GUI 메뉴로 폰트 변경 후 현재 설정 확인  :set  기본 폰트 설정  ~/.vimrc  set gfn= 나눔고딕코딩 Bold 10
  • 20. Vim – 사용  내장 도움말  :help  Graphical vi-vim Cheat Sheet and Tutorial  http://www.viemu.com/a_vi_vim_graphical_c heat_sheet_tutorial.html
  • 21. ctags & cscope  ctags  http://ctags.sourceforge.net/  소스의 심볼들을 빠르게 검색  cscope  http://cscope.sourceforge.net/  함수 호출 검색  정규식으로 파일 검색  파일을 포함한 파일 , etc...
  • 22. ctags & cscope – vim 연동 1/2  SourceCodeObedience 플러그인 설치  http://www.vim.org/scripts/script.php? script_id=1638  설치 - ~/.vim/plugin 폴더에 압축 해제  ctags, cscope DB 생성 #!/bin/bash SOURCE_LIST=source.list rm -rf cscope.out tags find . ( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name '*.S' ) -print > $SOURCE_LIST cscope -b -i $SOURCE_LIST ctags -L $SOURCE_LIST
  • 23. ctags & cscope – vim 연동 2/2
  • 24. arm-cross-toolchain  크로스 툴 체인 빌드  http://www.kegel.com/crosstool/  기 빌드된 툴 체인 설치  CodeSourcery, etc...  적당한 곳에 압축 해제 후 사용  다음과 같이 설치 위치 PATH 추가  $ vi ~/.bashrc  PATH=$PATH:/usr/local/arm/arm-2009q3/bin
  • 25. Arm 타겟 으로 포팅하기 1/3 $ make cc -c mkdosfs.c -o mkdosfs.o cc mkdosfs.o -o mkdosfs $ file mkdosfs mkdosfs: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped  기존 target → Makefile 수정 $ vi Makefile CC=arm-none-linux-gnueabi-gcc CFLAGS=--static ...
  • 26. Arm 타겟으로 포팅하기 2/3 $ make arm-none-linux-gnueabi-gcc --static -c mkdosfs.c -o mkdosfs.o arm-none-linux-gnueabi-gcc mkdosfs.o -o mkdosfs $ file mkdosfs mkdosfs: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
  • 27. Arm 타겟으로 포팅하기 3/3  리눅스 커널의 Makefile 중 ...  CROSS_COMPILE 변수로 툴체인 설정  $ make ARCH=arm CROSS_COMPILE="arm-none-eabi-" -j3 # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E AR = $(CROSS_COMPILE)ar ...
  • 28. Distcc - 분산 빌드 1/2  설치  $ sudo apt-get install distcc distccmon- gnome  서버 설정  /etc/default/distcc, /etc/init.d/distcc  distcc 서버들 사용하기  $ DISTCC_HOSTS=”192.168.10.2/3 localhost/2” make -j 16  -j 옵션으로 ( 프로세스 개수 *3 + 1)