SlideShare a Scribd company logo
OpenCR 아두이노 펌웨어개발
2016.12.17
조한철(Baram)
1
목차
● OpenCR ?
● 개발사양
● 아두이노 포팅
○ 부트로더
○ 다운로더
○ 아두이노 보드 소스
○ 온라인 배포
2
OpenCR (Open-source Control Module for ROS)
● STM32F746ZGT6 216Mhz, 1MB Flash, 320KB SRAM
● 아두이노 우노 핀 헤더
● 아두이노 IDE 개발환경 지원
● 다이나믹셀/올로/UART/CAN 인터페이스
● 배터리 입력 및 전원 출력(12V/5V/3.3V)
3
개발사양
● 아두이노 IDE 지원을 위한 기본 사양
구 분 내 용 비 고
지원 OS
- Windows
- Linux
- Mac
컴파일러
- Windows/Linux/Mac
: gcc arm 5.4 2016q2
Cortex M7 지원이 되는 GCC
Arduino IDE - 1.6.9 이상 https://www.arduino.cc/
배포방식 - 보드매니저를 통한 온라인 배포 arduino.org의 IDE는 보드매니저 지원안함
4
아두이노 핀 헤더
● 아두이노 우노 핀맵과 호환
● I/O 전압은 3.3V
5
아두이노 upload 과정
아두이노 IDE
OpenCR
보드
컴파일러
(2)
다운로더
(3)
부트로더
(4)
보드 소스
(1)
포팅시 필요 항목
운영체제에 따라 별도 구성
6
윈도우
리눅스
맥
개발 과정
보드 기본 테스트 구현
- 개발 환경 구축
- CubeMX 사용 방법 Study
부트로더
구현
다운로더
구현
- 메모리 맵 구성
- 다운로드 프로토콜 구현
- 플래시 메모리 제어
아두이노 보드 소스 구현
- 아두이노 API 클래스 포팅
- 핀맵 구성
온라인 배포 구현
- github를 통한 온란인 배포
7
부트로더
● 메모리 맵 ● 다운로드 순서
8
다운로더
● stm32ld
○ stm32의 내장 부트로더와 시리얼 통신으로 펌웨어 다운로드 할 수 있는 오픈소스
○ 윈도우/리눅스/맥에서 모두 빌드 가능
○ https://github.com/jsnyder/stm32ld
● opencr_ld
○ stm32ld의 통신 모듈을 기반으로 opencr의 부트로더 프로토콜을 구현함
○ 윈도우/리눅스/맥에서 모두 빌드
■ 윈도우는 QT를 개발환경으로 사용함
9
아두이노 보드 소스
● 폴더 구조
구 분 내 용
bootloaders 보드의 부트로더 이미지 파일 폴더
cores 아두이노 API 클래스 폴더
libraries 보드에서 지원하는 기본 라이브러리 폴더
variants cores를 공유하는 보드 관련 파일 폴더
boards.txt 보드별 설정
platform.txt 빌드를 위한 컴파일 설정, 다운로드 툴 설정등
programmers.txt 부트로더 업로드 설정
10
● 아두이노 IDE 1.5.3 버전 이상부터는 호환 보드를 쉽게 추가하도록 변경됨
○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specificatio
n
아두이노 보드 소스
● 보드 소스 테스트 방법
○ 보드 소스를 hardware 폴더 아래 새로운 폴더로 추가하면 아두이노 IDE에서 보드가 추가됨
11
아두이노 포팅
● HALMX 프로젝트
○ http://www.stm32duino.com/ 에서 STM32CubeMX를 기반으로 아두이노 보드를 포팅
○ https://github.com/rogerclarkmelbourne/Arduino_STM32
○ 현재까지 F1/F3/F4를 지원함
● 변경 내용
○ HALMX 프로젝트는 F7 시리즈는 지원하지 않기에 기본 cores와 variants의 뼈대를 사용하고
STM32CubeF7 라이브러리를 추가하여 포팅함
12
소스 Layer 구조
아두이노 API Class (cores)
STM32CubeF7
OpenCR (variants)
bsp hal driver
Hardware
13
온라인 배포
● github에 json파일과 배포를 위한 압축파일 업로드
○ 아두이노 IDE 1.6.4 이상 부터 보드 매니저를 통해 온라인으로 배포 가능해짐
○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-sp
ecification
● OpenCR json 파일
○ https://github.com/ROBOTIS-GIT/OpenCR/blob/master/arduino/opencr_release/package_
opencr_index.json
14
json 파일
● platforms
15
아두이노 보드 소스
gcc 컴파일러
다운로더
json 파일
● opencr_gcc
16
● opencr_tools
github 업로드
● 온라인상에에서 다운로드 가능한 gcc 컴파일러는 다운로드 링크를 사용함
● 플랫폼파일과 tools파일은 압축해서 github의 release로 업로드함
17
보드 매니저
● 아두이노 IDE의 설정에서 보드매니저 URL에 json 링크를 추가하고 설치함
18
보드매니저
19
아두이노 보드 폴더 구조
20
예제
● TFT LCD
○ https://youtu.be/y4if5J_upyY
21
결론
● 아두이노 빌드 과정과 구조만 알면 쉽게 보드를 아두이노 호환 보드로 만들 수
있음
● OpenCR보드를 성능 좋은 아두이노 보드로 사용 가능함으로 아두이노 IDE를
통해 쉽게 개발 환경을 구축 가능함
● 아두이노 보드 포팅을 위해서는 다양한 OS에 대한 고려 필요
● github를 통해 온라인 배포 가능
● ARM용 아두이노 보드에 대한 쉴드 라이브러리는 일부 수정이 필요함
22
참고 자료
● OpenCR 소스코드
○ 부트로더
■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_bootloader
○ 다운로더
■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_ld
○ 아두이노 보드 소스
■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_arduino/opencr
○ 온라인 배포 파일
■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_release
● 아두이노
○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification
23
Q & A
24
감사합니다.
25

More Related Content

What's hot

Gpon the technology --rev 1
Gpon the technology --rev 1Gpon the technology --rev 1
Gpon the technology --rev 1
guerrid
 
Segmentação de rede
Segmentação de redeSegmentação de rede
Segmentação de rede
Gabriel Santos
 
Microwave Huawei RTN Hardware Structure
Microwave Huawei RTN Hardware StructureMicrowave Huawei RTN Hardware Structure
Microwave Huawei RTN Hardware Structure
ibrahimnabil17
 
Herbário
Herbário Herbário
Huawei BTS 3900 Hardware Structure
Huawei BTS 3900 Hardware StructureHuawei BTS 3900 Hardware Structure
Huawei BTS 3900 Hardware Structure
ibrahimnabil17
 
Aula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fioAula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fio
camila_seixas
 
PROFINET - SIEMENS
PROFINET - SIEMENSPROFINET - SIEMENS
CASE 621D Wheel Loader Service Repair Manual
CASE 621D Wheel Loader Service Repair ManualCASE 621D Wheel Loader Service Repair Manual
CASE 621D Wheel Loader Service Repair Manual
fudfjjsekekmem
 
333731522-GPON-Technical-v1-1.pptx
333731522-GPON-Technical-v1-1.pptx333731522-GPON-Technical-v1-1.pptx
333731522-GPON-Technical-v1-1.pptx
taha karram
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeNécio de Lima Veras
 
SGBD
SGBDSGBD
Servidor web
Servidor webServidor web
Servidor web
Raphaela Rocha
 
Antenna Installation Engineering.
Antenna Installation Engineering.Antenna Installation Engineering.
Antenna Installation Engineering.
Hải Nguyễn Hồ Bá
 
Bluetooth
BluetoothBluetooth
Bluetooth
Laís Berlatto
 
Manual de Uso da Marca do Governo Federal
Manual de Uso da Marca do Governo FederalManual de Uso da Marca do Governo Federal
Manual de Uso da Marca do Governo Federal
Palácio do Planalto
 
Redes guia prático 2ª edição - carlos e. morimoto
Redes guia prático 2ª edição - carlos e. morimotoRedes guia prático 2ª edição - carlos e. morimoto
Redes guia prático 2ª edição - carlos e. morimoto
Fortaleza Metro
 
A segurança, na partilha de ficheiros
A segurança, na partilha de ficheirosA segurança, na partilha de ficheiros
A segurança, na partilha de ficheirosTiago Ângelo
 
Apostila atp
Apostila atpApostila atp
Apostila atp
adrianocsfeelt
 
6363-datasheet.pdf
6363-datasheet.pdf6363-datasheet.pdf
6363-datasheet.pdf
mehdiberenji
 

What's hot (20)

Gpon the technology --rev 1
Gpon the technology --rev 1Gpon the technology --rev 1
Gpon the technology --rev 1
 
Segmentação de rede
Segmentação de redeSegmentação de rede
Segmentação de rede
 
Microwave Huawei RTN Hardware Structure
Microwave Huawei RTN Hardware StructureMicrowave Huawei RTN Hardware Structure
Microwave Huawei RTN Hardware Structure
 
Herbário
Herbário Herbário
Herbário
 
Huawei BTS 3900 Hardware Structure
Huawei BTS 3900 Hardware StructureHuawei BTS 3900 Hardware Structure
Huawei BTS 3900 Hardware Structure
 
Aula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fioAula 1: Conceitos de redes sem fio
Aula 1: Conceitos de redes sem fio
 
PROFINET - SIEMENS
PROFINET - SIEMENSPROFINET - SIEMENS
PROFINET - SIEMENS
 
CASE 621D Wheel Loader Service Repair Manual
CASE 621D Wheel Loader Service Repair ManualCASE 621D Wheel Loader Service Repair Manual
CASE 621D Wheel Loader Service Repair Manual
 
333731522-GPON-Technical-v1-1.pptx
333731522-GPON-Technical-v1-1.pptx333731522-GPON-Technical-v1-1.pptx
333731522-GPON-Technical-v1-1.pptx
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidade
 
SGBD
SGBDSGBD
SGBD
 
Manual mf-3640-5650 parte1
Manual mf-3640-5650 parte1Manual mf-3640-5650 parte1
Manual mf-3640-5650 parte1
 
Servidor web
Servidor webServidor web
Servidor web
 
Antenna Installation Engineering.
Antenna Installation Engineering.Antenna Installation Engineering.
Antenna Installation Engineering.
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Manual de Uso da Marca do Governo Federal
Manual de Uso da Marca do Governo FederalManual de Uso da Marca do Governo Federal
Manual de Uso da Marca do Governo Federal
 
Redes guia prático 2ª edição - carlos e. morimoto
Redes guia prático 2ª edição - carlos e. morimotoRedes guia prático 2ª edição - carlos e. morimoto
Redes guia prático 2ª edição - carlos e. morimoto
 
A segurança, na partilha de ficheiros
A segurança, na partilha de ficheirosA segurança, na partilha de ficheiros
A segurança, na partilha de ficheiros
 
Apostila atp
Apostila atpApostila atp
Apostila atp
 
6363-datasheet.pdf
6363-datasheet.pdf6363-datasheet.pdf
6363-datasheet.pdf
 

Similar to OpenCR 아두이노 펌웨어개발

강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노
chcbaram
 
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10mimul
 
Android media codec 사용하기
Android media codec 사용하기Android media codec 사용하기
Android media codec 사용하기Taehwan kwon
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9종인 전
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정
봉조 김
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습
봉조 김
 
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
Mario Cho
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
고포릿 default
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
INSIGHT FORENSIC
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
chcbaram
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324종인 전
 
(120128) #fitalk android forensics 101
(120128) #fitalk   android forensics 101(120128) #fitalk   android forensics 101
(120128) #fitalk android forensics 101
INSIGHT FORENSIC
 
Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016
perillamint
 
Intel Galileo Linux Setting
Intel Galileo Linux SettingIntel Galileo Linux Setting
Intel Galileo Linux Setting
ymtech
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법
chon2010
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
Ubuntu Korea Community
 
강좌 개요
강좌 개요강좌 개요
강좌 개요
chcbaram
 
OSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardwareOSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardware
Jeongkyu Shin
 
NodeMcu로 시작하는 사물인터넷 DIY
NodeMcu로 시작하는 사물인터넷 DIYNodeMcu로 시작하는 사물인터넷 DIY
NodeMcu로 시작하는 사물인터넷 DIY
Hakyong Kim
 

Similar to OpenCR 아두이노 펌웨어개발 (20)

강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노강좌 07 ARM 프로세서용 아두이노
강좌 07 ARM 프로세서용 아두이노
 
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
 
Android media codec 사용하기
Android media codec 사용하기Android media codec 사용하기
Android media codec 사용하기
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정
 
04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습04강 라즈베리-개발환경구축-실습
04강 라즈베리-개발환경구축-실습
 
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
 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
(120128) #fitalk android forensics 101
(120128) #fitalk   android forensics 101(120128) #fitalk   android forensics 101
(120128) #fitalk android forensics 101
 
Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016Hideroot - Inc0gnito 2016
Hideroot - Inc0gnito 2016
 
Intel Galileo Linux Setting
Intel Galileo Linux SettingIntel Galileo Linux Setting
Intel Galileo Linux Setting
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법
 
Open Source and the License
Open Source and the LicenseOpen Source and the License
Open Source and the License
 
강좌 개요
강좌 개요강좌 개요
강좌 개요
 
OSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardwareOSS SW Basics Lecture 14: Open source hardware
OSS SW Basics Lecture 14: Open source hardware
 
NodeMcu로 시작하는 사물인터넷 DIY
NodeMcu로 시작하는 사물인터넷 DIYNodeMcu로 시작하는 사물인터넷 DIY
NodeMcu로 시작하는 사물인터넷 DIY
 

More from chcbaram

OROCABOY3 제작기
OROCABOY3 제작기OROCABOY3 제작기
OROCABOY3 제작기
chcbaram
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더
chcbaram
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
chcbaram
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
chcbaram
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
chcbaram
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
chcbaram
 
OpenCR tutorial_icra2017
OpenCR tutorial_icra2017 OpenCR tutorial_icra2017
OpenCR tutorial_icra2017
chcbaram
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
chcbaram
 
[드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23][드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23]
chcbaram
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
chcbaram
 
SkyRover Firmware
SkyRover FirmwareSkyRover Firmware
SkyRover Firmware
chcbaram
 

More from chcbaram (11)

OROCABOY3 제작기
OROCABOY3 제작기OROCABOY3 제작기
OROCABOY3 제작기
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 
OpenCR tutorial_icra2017
OpenCR tutorial_icra2017 OpenCR tutorial_icra2017
OpenCR tutorial_icra2017
 
아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작아두이노와 Fpga를 이용한 로봇제작
아두이노와 Fpga를 이용한 로봇제작
 
[드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23][드론] 펌웨어 분석 [2015.5.23]
[드론] 펌웨어 분석 [2015.5.23]
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
 
SkyRover Firmware
SkyRover FirmwareSkyRover Firmware
SkyRover Firmware
 

OpenCR 아두이노 펌웨어개발

  • 2. 목차 ● OpenCR ? ● 개발사양 ● 아두이노 포팅 ○ 부트로더 ○ 다운로더 ○ 아두이노 보드 소스 ○ 온라인 배포 2
  • 3. OpenCR (Open-source Control Module for ROS) ● STM32F746ZGT6 216Mhz, 1MB Flash, 320KB SRAM ● 아두이노 우노 핀 헤더 ● 아두이노 IDE 개발환경 지원 ● 다이나믹셀/올로/UART/CAN 인터페이스 ● 배터리 입력 및 전원 출력(12V/5V/3.3V) 3
  • 4. 개발사양 ● 아두이노 IDE 지원을 위한 기본 사양 구 분 내 용 비 고 지원 OS - Windows - Linux - Mac 컴파일러 - Windows/Linux/Mac : gcc arm 5.4 2016q2 Cortex M7 지원이 되는 GCC Arduino IDE - 1.6.9 이상 https://www.arduino.cc/ 배포방식 - 보드매니저를 통한 온라인 배포 arduino.org의 IDE는 보드매니저 지원안함 4
  • 5. 아두이노 핀 헤더 ● 아두이노 우노 핀맵과 호환 ● I/O 전압은 3.3V 5
  • 6. 아두이노 upload 과정 아두이노 IDE OpenCR 보드 컴파일러 (2) 다운로더 (3) 부트로더 (4) 보드 소스 (1) 포팅시 필요 항목 운영체제에 따라 별도 구성 6 윈도우 리눅스 맥
  • 7. 개발 과정 보드 기본 테스트 구현 - 개발 환경 구축 - CubeMX 사용 방법 Study 부트로더 구현 다운로더 구현 - 메모리 맵 구성 - 다운로드 프로토콜 구현 - 플래시 메모리 제어 아두이노 보드 소스 구현 - 아두이노 API 클래스 포팅 - 핀맵 구성 온라인 배포 구현 - github를 통한 온란인 배포 7
  • 8. 부트로더 ● 메모리 맵 ● 다운로드 순서 8
  • 9. 다운로더 ● stm32ld ○ stm32의 내장 부트로더와 시리얼 통신으로 펌웨어 다운로드 할 수 있는 오픈소스 ○ 윈도우/리눅스/맥에서 모두 빌드 가능 ○ https://github.com/jsnyder/stm32ld ● opencr_ld ○ stm32ld의 통신 모듈을 기반으로 opencr의 부트로더 프로토콜을 구현함 ○ 윈도우/리눅스/맥에서 모두 빌드 ■ 윈도우는 QT를 개발환경으로 사용함 9
  • 10. 아두이노 보드 소스 ● 폴더 구조 구 분 내 용 bootloaders 보드의 부트로더 이미지 파일 폴더 cores 아두이노 API 클래스 폴더 libraries 보드에서 지원하는 기본 라이브러리 폴더 variants cores를 공유하는 보드 관련 파일 폴더 boards.txt 보드별 설정 platform.txt 빌드를 위한 컴파일 설정, 다운로드 툴 설정등 programmers.txt 부트로더 업로드 설정 10 ● 아두이노 IDE 1.5.3 버전 이상부터는 호환 보드를 쉽게 추가하도록 변경됨 ○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specificatio n
  • 11. 아두이노 보드 소스 ● 보드 소스 테스트 방법 ○ 보드 소스를 hardware 폴더 아래 새로운 폴더로 추가하면 아두이노 IDE에서 보드가 추가됨 11
  • 12. 아두이노 포팅 ● HALMX 프로젝트 ○ http://www.stm32duino.com/ 에서 STM32CubeMX를 기반으로 아두이노 보드를 포팅 ○ https://github.com/rogerclarkmelbourne/Arduino_STM32 ○ 현재까지 F1/F3/F4를 지원함 ● 변경 내용 ○ HALMX 프로젝트는 F7 시리즈는 지원하지 않기에 기본 cores와 variants의 뼈대를 사용하고 STM32CubeF7 라이브러리를 추가하여 포팅함 12
  • 13. 소스 Layer 구조 아두이노 API Class (cores) STM32CubeF7 OpenCR (variants) bsp hal driver Hardware 13
  • 14. 온라인 배포 ● github에 json파일과 배포를 위한 압축파일 업로드 ○ 아두이노 IDE 1.6.4 이상 부터 보드 매니저를 통해 온라인으로 배포 가능해짐 ○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-sp ecification ● OpenCR json 파일 ○ https://github.com/ROBOTIS-GIT/OpenCR/blob/master/arduino/opencr_release/package_ opencr_index.json 14
  • 15. json 파일 ● platforms 15 아두이노 보드 소스 gcc 컴파일러 다운로더
  • 17. github 업로드 ● 온라인상에에서 다운로드 가능한 gcc 컴파일러는 다운로드 링크를 사용함 ● 플랫폼파일과 tools파일은 압축해서 github의 release로 업로드함 17
  • 18. 보드 매니저 ● 아두이노 IDE의 설정에서 보드매니저 URL에 json 링크를 추가하고 설치함 18
  • 21. 예제 ● TFT LCD ○ https://youtu.be/y4if5J_upyY 21
  • 22. 결론 ● 아두이노 빌드 과정과 구조만 알면 쉽게 보드를 아두이노 호환 보드로 만들 수 있음 ● OpenCR보드를 성능 좋은 아두이노 보드로 사용 가능함으로 아두이노 IDE를 통해 쉽게 개발 환경을 구축 가능함 ● 아두이노 보드 포팅을 위해서는 다양한 OS에 대한 고려 필요 ● github를 통해 온라인 배포 가능 ● ARM용 아두이노 보드에 대한 쉴드 라이브러리는 일부 수정이 필요함 22
  • 23. 참고 자료 ● OpenCR 소스코드 ○ 부트로더 ■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_bootloader ○ 다운로더 ■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_ld ○ 아두이노 보드 소스 ■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_arduino/opencr ○ 온라인 배포 파일 ■ https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_release ● 아두이노 ○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification ○ https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification 23