cortex-m 아두이노프로그래밍 - icbanq.com 아두이노... ·...

23
Cortex-M 아두이노 프로그래밍 Cortex-M 아두이노 프로그래밍 4/2/2016 Written by Steve AHN 1/23

Upload: tranminh

Post on 13-Feb-2018

346 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

Cortex-M 아두이노프로그래밍

4/2/2016 Written by Steve AHN

1/23

Page 2: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

1, Arduino 의개발환경

1-1, 아두이노다운로드

아두이노는소스공개형전자개발플랫폼으로써누구나쉽게사용할수있는인터페이스를제공함으로써, 다양한프로젝트를쉽게개발하게하기위하여만들어졌다.

아두이노에서는전용 ISE(Integrated Software Environment) 를제공하는데, 이를통하여다양한종류의 아두이노보드를사용할수있다.

아두이노전용프로그램은아두이노사이트에서무료로다운로드할수있으며, 아래링크를이용하여다 운로드할수있다.

https://www.arduino.cc/en/Main/Software

이글을작성하는현재사용버전은 Arduino1.6.5 이다.

Cotex-M CPU 를아두이노에서프로그래밍하기위해서는 Arduino1.6.5 버전을사용해야하며, 그이후의 버전은링킹문제가발생한다.

차후아두이노에서이문제가해결되면그때사용해야한다.

1-2, 아두이노설치

다운로드한프로그램을실행시켜아두이노를설치한다.

[ 그림 1] 아두이노설치화면 [그림2] 아두이노설치완료

2/23

Page 3: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

설치는간단히라이센스에동의하는것으로시작되며, 설치가완료되면바탕화면의아두이노 바로가기 아이콘을통해서실행하면된다.

[ 그림 3] 아두이노실행

1-3, STM32-M 개발환경설정

아두이노에서 STM32-M3 개발환경을추가하기위해다음과같이보드매니저를이용하여 STM32 기반 환경을추가로설치한다.

[ 그림 4] 보드매니저구동

3/23

Page 4: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

아두이노풀다운메뉴의 툴->보드->보드매니저 를선택하자.

보드매니저에는추가적으로 Cortex M0, M3 외에 10 여종의다양한개발환경을제시하고있는데, 우리가 할것은 Cortex-M3/M4 이므로그것을선택하여설치하면된다.

[ 그림 5] SAM Boards (32 bits ARM Cortex-M3) 선택

설치가완료되면 32 비트컴파일환경이구성된셈이다.

그러나일반 Cortex-MX 개발환경을추가하려면이외에추가적인조치가필요한데, 온라인을통해서개 발환경을받아올수있다.

다음링크에서 Zip 파일을다운로드하자

https://github.com/rogerclarkmelbourne/Arduino_STM32/archive/master.zip

로저클락이란개발자가배포한자료인데, 아두이노에다양한일반적인 Cortex-M0/M3/M4 개발환경을 추가할수있게해준다.

압축을해제하면 Arduino_STM32-master 란폴더가생성되며, 이폴더를다음의경로에복사해넣는다.

경로 : 「My Documents/Arduino/hardware」

→ 「내문서 Arduino 」에들어가보면아무것도없는경우가있는데 , 처음설치한필자의컴퓨터역시 비어있었다. 이런경우에는 hardware 폴더를새로만들어주고복사하면된다.

4/23

Page 5: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 6] master 파일복사

이제아두이노를다시실행하여툴-> 보드를선택하면다양한 개발보드가추가된것을확인할수있다.

[ 그리 7] 추가된개발보드

추가된환경은 Cortex -M0, Cortex-M3, Cortex-M4 등거의모든종류의 low-mid end 급 Cortex 칩을지원한다.

5/23

Page 6: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

본문서는이중에서 Cortex-M3 위주로다양한개발환경을구축하고실제로활용하는방법에대하여설명한다. Cortex-M3 는기존의 maple 보드의변형인 Generic Stm32F10X 시리즈를이용하는방법에대해다루고, 다양한다운로드환경을설명하겠다.

2, 개발보드의소개

2-1, STM32F103 보드

본문서에서사용하는보드는 STM32F103 개발보드로써, 두가지제품이있는데 그두제품을소개하고 타겟으로진행하기로한다.

Stm32F103 UNO Link Stm32F103Mini Link2

[ 그림 8] STM32F103 보드 2종

STM32 개발보드는현재 2 가지형태가있는데, UNO 보드에는추가전원입력및 Iot 제어를위한무선모 듈커넥터가배치되어있다.

테크다인의 Cortex-M3 유사한다른보드에비해몇가지장점이있는데, 우선두보드는기본적으로USB2Serial 젠더가내장되어있어서, 별도의시리얼통신링크가필요없다.

두번째로는두보드는 USB 젠더외에칩에내장된 USB 코어및 USB2Serial 젠더를옵션핀을이용하여 선택할수있다.

세번째로는 ST-Link 단자를제공하기때문에 STL-Link 를이용한개발방법도가능하다.

3, CorteX-M3 연결하기

3-1, 보드의구성

[그림9] STM32F103 Mini Generic B/D 구성도

6/23

Page 7: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 9] 에 STM32F103 Generic 보드의구성을보였다.

이보드의회로도는다음링크를통해받을수있다.

Generic Board 회로도

아래는 STM32F103 UNO Board 의구성을보였다.

[ 그림 10] STM32F103 UNO Board

미니보드와의차이점은 UNO 보드에는 IoT 개발을위한 Wifi 모듈단자가내장되어있어서 , IoT 모듈인TWM02 모듈을바로꼽아프로그래밍을할수있다.

3-2, 아두이노와연결하기

STM32F103 보드를연결하기전에, 보드커넥터중 CP2102 / ST_USB 옵션핀을 CP2102 쪽으로설정해야한다.

보드상에 CP2102 라고쓰여진쪽으로 2 개점퍼를모두꼽는다. 반대쪽인 ST 쪽으로꼽으면 CortexM3 칩의 USB 포트로직접연결된다.

우리는아두이노에서시리얼포트를사용할예정이기때문에일단, CP2102 쪽으로테스트한다.USB 포트의사용법은그이후에다시별도로다루기로하겠다.

이제보드를 USB 포트에꼽아보자. STM32F103 보드의경우내부에 USB2Serial 젠더인 CP2102 칩이 내장되어있어서, 시리얼포트가자동으로생성된다.

만일장치드라이버가설치되어있지않으면장치드라이버를설치해야하는데, 윈도우에서자동검색하 거나혹자동설치가안되면 Silicon Labs 사에서 VCP 드라이버를다운로드해서설치해야한다.

7/23

Page 8: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

VCP 드라이버는다음링크를통해서할수있다.

https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

드라이버가활성화되면, 시리얼포트가생성된걸볼수있다.

이제아두이노를실행하자.

→ → 아두이노메뉴에서 툴 보드 Generic STM32F103C Series 를선택한다.

[ 그림 11] 아두이노보드선택

→ 보드선택후다시 툴 보드메뉴를선택하면먼가새로운메뉴가추가된걸볼수있다.

1, Varient2, Upload Method3, 포트Varient 는칩셋의메모리크기를선정한다. 우리는 20KRAM, 64K Flash 로작업을한다.

그리고업로드방식은, 시리얼방식을사용할예정이기때문에 Serial 로설정한다. 마지막으로포트는보드를 USB 젠더에서잡힌시리얼포트를지정한다.

** 보드설정확인 **

이제프로그램테스트하기전에한가지더확인할것이있는데, STM32F103 Mini 보드의 Boot 모드이다.ST Electronics 사에서만든 Cortex M 칩셋들은, 약 3 가지의부트모드를지원하는데다음과같다.

Boot1 | Boo0 = X0 : main Flash Memory 에서시작, X = don't careBoot1 | Boot0= 01 : System Memory Boot Boot1 | Boot0= 11 : Embedded SRAM Boot

8/23

Page 9: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

즉 Boot1 = 0 인상태에서, Boot0 핀이 0 이면, 일반내부플래쉬프로그램이실행되고, 만일 Boot0 = 1 이면시스템내장부트로더로동작된다.

시스템내장부트로더는칩내부의시리얼포트 1 번으로전송되는데이터를 main Flash 영역으로라이팅 해주고전송및라이팅이완료되면, main Flash 영역으로분기해서다운로드된 프로그램을실행하게

된다.

즉우리는시리얼전송을사용할계획이기때문에, BOOT1 = 0, BOOT0 = 1 로점퍼핀을셋팅하고시작해 야만한다.

보드에 B1 = 0 (G)쪽으로, B0 = 1 (B0) 쪽으로설정하자. 보드설정이끝났으면, 이제 Reset 버튼을눌러서보드의부트모드를재실행시킨다.

3-3, 예제프로그램테스트

이제아두이노에서예제를하나불러오자. 다음경로에서예제를하나불러온다.

[ 그림 12] Blink 예제

Documents\Arduino\hardware\Arduino_STM32-master\examples\Digital\Blink

예제는상기 [ 그림 13] 과같이스케치북메뉴에서직접찾아들어갈수있다.

간단한 LED Blink 예제이다.

9/23

Page 10: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 13] Blink 예제

일단예제를컴파일하기전에약간수정을해야하는데, 수정을하기전에회로도를잠깐살펴보자.

위 Blink 예제에는디지털출력핀으로 PB1 을사용하였는데, 이는 Maple 보드를기준으로작성되어있 어서이다.

[ 그림 14] LED 회로도

STM32F103 보드의회로도에는 LED 가 PC13 번핀에연결된걸확인할수있다. 따라서프로그램을 PC13 으로수정하자.

10/23

Page 11: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 15] 컴파일및다운로드

수정완료후, 업로드버튼을누르면, [그림15] 같이컴파일후자동으로보드에바이너리파일을업로드해준다. 업로드가완료되면바로보드의 LED 가깜박거리는걸확인할수있을것이다.

위컴파일과정이나다운로드과정의메시지가안보이는경우, → 파일 환경설정에서“ ”동작중자세한출력보이기 옵션의 컴파일항목과업로드항목을모두체크하면된다.

[ 그림 16] 환경설정메시지보이기옵션

11/23

Page 12: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

3-4, 설정을좀더들여다보자

우리가사용하는 STM32F_Master 파일디렉토리를좀들여다보자.

\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\variants\generic_stm32f103c 경로의 디렉토리에보면 board.cpp 파일이보일것이다.

마찬가지로, 그디렉토리내에있는 board 디렉토리안에는 board.h 파일이 존재하는데, 이는 STM32F1 시리지칩들의핀정의프로그램이들어있다.

예를들어 board.h 에정의된 enum 파일을들여다보면,

enum { PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13,PA14,PA15,

PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13,PB14,PB15,PC13, PC14,PC15

};

모든핀이 enumeration 되어있는데, 현재우리가사용한 PC13 의경우 33 번째정의되어있기때문에핀 번호가 0 부터시작하므로 32 번이된다.

즉아두이노보드상의핀번호, 혹은포트번호중하나만알면제어가가능한데, 위의 enum 파일을참조하 면핀번호와포트번호가어떻게정의되어있는지한번에알수있다.

실례로우리가방금테스트한프로그램을위 enum 파일을기초로비꿔보면 PC13 대신숫자 32 를사용 해도무방하다.

즉프로그램을아래와같이바꾸어서실험해보자, 역시동일한결과를얻을수 있다.

// the setup function runs once when you press reset or power the boardvoid setup() { // initialize digital pin PB1 as an output. pinMode(32, OUTPUT);}

// the loop function runs over and over again forevervoid loop() { digitalWrite(32, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(32, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second}

마찬가지로다른보드정의파일들을들여다보면각각의보드별로정확한핀맵데이터를얻어활용할수 있으니잘활용하도록하자.

이번에는 \Documents\Arduino\hardware\Arduino_STM32-master\STM32F1 파일을좀들여다보자.Boards.txt 와 platform.txt 파일을볼수있는데, 이두파일에대해간단히살펴보고가도록하자.

아두이노버전 1.53 이후에는아두이노를유저임의대로커스터마이징하기위한표준이제정되었는데, 커스터마이징하기위해아두이노에서는 3 가지파일을통해스크립트형태의파일을지원해준다.

그파일은각각 platform.txt, boards.txt, programmers.txt 파일을통해사용자정의보드를확장할수있다. 그파일의역활은다음과같다.

12/23

Page 13: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

Platform.txt: CPU 구조에대한정의를포함한다. 예를들면컴파일러, 빌드시매개변수, 업로드시이용할 툴등등..

boards.txt: 보드에관한정의된내용을포함한다. 보드이름, 파일빌드에관한매개변수와스케치업드및 기타등등..

programmers.txt: 외부프로그래머에대한정의를가지고있다. (부 트로더를굽거나, 깡통 CPU 에스케치 를써넣을때사용하는방법에대한내용.)

실제유저확장보드의추가는기존빌드환경이존재할경우매우간단한스크립트로메뉴내용을추가할 수있다. 참고로 STM32 의 boards.txt. 침 platform.txf 를참고해도간단히유저정의보드를만들수있을것

이다.

위에서보았듯이 3 가지파일은반드시 {ARDUINO}/hardware/ 에정의되어야하고, 이에관한사항은다 음링크에자세히기술되어있다. 차후유저정의보드를추가할때참고하기바란다.

https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification

3-5, 시리얼출력테스트

이번엔간단한시리얼출력테스트를해보자. 우리는위에서통신포트를통해컴파일된바이너리파일을 다운로드해보았는데, 시리얼통신포트는다운로드이후바로통신포트로사용할수있다.

STM32F103C 시리즈는총 3 개의 UART 통신을제공하는데, 포트 1 번은 4.5Mbps, 나머지 2 포트는2.5Mbps 의속도를제공해준다.

우리가사용하는 Gemeric STM 보드는 CP2102 를통해 UART1 을그리고전용핀을통해 UART2 를사 용가능하고, 확장핀 40 핀을통해 UART3 까지이용할수있다.

이제간단한시리얼포트출력을확인해보자. 소스코드에다음과같이추가해보자.

// the setup function runs once when you press reset or power the boardvoid setup() { // initialize digital pin PB1 as an output. pinMode(PC13, OUTPUT); Serial.begin(115200); Serial2.begin(9600); Serial.println("Serial1 started");}

// the loop function runs over and over again forevervoid loop() { digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level) Serial.println("On"); Serial2.println("On"); delay(1000); // wait for a second digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW Serial.println("Off"); Serial2.println("Off"); delay(1000); // wait for a second}

13/23

Page 14: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

이제보드의 Reset 버튼을누르고다운로드하자.

다운로드가완료되면, 아두이노메뉴상의 도구-> 시리얼모니터를실행시키자.

시리얼모니터는현재아두이노다운로드에설정한 COM3 가기본으로설정되어있다. 현재프로그램상 에서두개의시리얼통신을초기화하였는데, Serial1 이 COM3 로사용중이고, Serial2 는별도의핀으로

되어있기때문에 Serial1 은간단히모니터링이가능하고, Serial2 는별도로 USB2Serial 젠더를통해모 니터링할수있다.

시리얼모니터가실행되면통신 baudrate 을 115200 에맞추자.

[ 그림 17] 시리얼모니터

두개의포트모두이상없이통신이되는것을확인할수있을것이다.

이로써간단한프로그램테스트를통해컴파일및다운로드환경을살펴보았다. 이번에는 DFU 방식의 다운로드를활용해보도록하겠다.

3-6, 부트로더다운로드

ST 마이크로사에서는 CPU 다운로드를크게 3 가지를지원하는데, 방금실험해본시리얼다운로드방식 그리고 USB 포트를통한 DFU 다운로드방식, 마지막으로전용디버깅툴을통한 ST Link 다운로드방식

이다.

DFU 방식에대한다운로드프로코콜은별도의문서에정의되어있으므로필요시다음링크를참조하기바란다.

http://www.st.com/web/en/resource/technical/document/application_note/CD00264379.pdf

처음메이플을만들당시, 메이플에서는 STM32F10X 시리즈의자체내장된 USB 포트를이용해서USB2Serial 젠더를구성해서여러가지모니터링용도로설계를하였는데, 메이플은이포트를단순히

시리얼포트뿐만아니라, USB 포트를통해 DFU 다운로드를동시에하길원했었다.

14/23

Page 15: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

이방식은약간의문제가있었는데, 일단 UART 다운로드가아닌 USB DFU 방식을통한 다운로드는CPU 내부의부트로더대신, 별도의 DFU 프로토콜을지원하는부트로더가필요하다.

이부트로더를먼저칩내부에써놓고, 이부트로더를통해유저가컴파일한바이너리파일을다시다운로 드해야하는데, 처음에 부트로더만있을경우는그래서 STM32 디바이스가 DFU 장치로표시된다.

일단이상태에서이미지다운로드를하면, 다운로드한이미지의시작번지로프로그램을분기시킨다. 그리고분기전에부트로더는내부 USB 포트를 DFU 디바이스에서 USB2Serial 로다시초기화시켜서

USB 포트를통해바로시리얼통신이가능하게만들었다.

( 보통 USB Enumeration 과정에보면, USB Master 쪽에 D+/- 신호는매우높은저항으로 Pull-Down 상태 에있는데, 회도상에서 D+ 에 1.5K 옴을달면 High Speed, D- 에 1.5K 옴을달면 Low Speed USB 로초

기화를시작한다.

일단 D+ 신호가 0 볼트가되면, USB 는장치가제거됬다고판단하고, 다시 Enumeration 대기상태가되는데, 이때다시 D+ 를로직 1 로만들면새장치가꼽힌걸로인식해서, 다시 Enumeration 상태로진입한다.)

초기 CPU 가 Reset 되었을때, maple 은 DFU 상태의부트로더로진입해서, 새다운로드가진행되는지판단하고, 있으면 USER 프로그램을다운로드한후 USB 포트를초기화해서 실행프로그램으로분기한다. 즉 DFU 에서 USB2Serial 젠더로기능변경을마친후메인프로그램을콜하게된다.

USER 프로그램에선, USB 포트가리셋되어새로 USB2Serial 포트로재설정하는일련의복잡한과정 을반복하는것이다.

그런데우리가사용하는 Gemeric B/D 에는이 USB 포트의리셋기능이없기때문에, 일단전원이켜지면USB DFU 프로토콜에서 USER 프로그램으로진입시이포트를초기화할수가없게된다.

그래서부트로더를일부수정해서 다운로드완료후 D+ 단자를 GPIO 모드로만들어서강제로 0 으로만들 어서 USB 포트를초기화한후메인프로그램으로분기하는방식으로바꾸게되었다.

일단부트로더를다운로드해보자.

아래링크에보명다양한부트로더파일을발견할수가있다.https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/STM32F1/binaries

우리는 PC13 을테스트 LED 로쓰기때문에 PC13 바이너리를받아오면된다.

이바이너리를먼저다운로드해야하는데, 이를위해 ST 마이크로사에서제공하는 Flash Loader 라는프 로그램이필요하다.

다음링크의제일하단에서프로그램을받아서설치하자.

http://www.st.com/web/en/catalog/tools/PF257525

설치가완료되었으면일단실행하자.

15/23

Page 16: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 18] 플래쉬로더셋팅 [ 그림 19] 칩자동인식

현재보드의 UART 상태를설정하고넘어가자. 이때보드는반드시리셋한상태로하고다음으로넘어가자. 자동으로보드를검색하게된다.

이제다운로드할바이너리파일을찾아서다운로드하면된다.

[그림20] 바이너리파일지정

3-7. DFU 드라이버설치및보드설정변경

다운로드가완료되었으면, 이제 USB2 Serial 젠더가아니라, 바로 CPU 의 USB 포트를사용할수있다.

일단보드의점퍼를변경하자.

[ 그림 20] 점퍼설정

16/23

Page 17: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

1. 현재설정된 USB 포트설정을 CP2102 에서 ST 쪽으로설정한다. 2. BOOT Mode 는두핀모두 0 으로설정해서일반프로그램실행모드로설정한다.

보드의점퍼설정이끝났으면연결전에드라이버를설치해야한다

\Documents\Arduino\hardware\Arduino_STM32-master\drivers\win

폴더아래에보면 install_drivers.bat 화일이있는데, 관리자권한으로실행시키자.

@echo off

echo Installing Maple DFU driver..."%~dp0wdi-simple" --vid 0×1EAF --pid 0×0003 --type 1 --name "Maple DFU" --dest "%~dp0maple-dfu"echo.

echo Installing Maple Serial driver..."%~dp0wdi-simple" --vid 0×1EAF --pid 0x0004 --type 3 --name "Maple Serial" --dest "%~dp0maple-serial"echo.

pause

아주간단한배치화일인데 Vid/pid 파일을가지고있는데설치하고간단한이름으로맵핑시키는역할만한다.

이제설치가끝났으면보드를 USB 포트에연결하자.

보드가연결되면, 새장치를연결했기때문에새로운디바이스를찾아서, 장치드라이버를설치하게된다. 설치된장치는 장치관리자에서찾을수있다.

[ 그림 21] 장치관리자

장치관리자에 MapleDFU 로잡혀있으면정상적으로설치가된것이다.

이제다시아두이노를실행하자. 이전까지는 USB2Serial 로작업했지만이제는직접칩내부의 USB 장치 를이용하여프로그램을한다.

이제 Upload 방식을 기존의 Serial 에서 USB DFU 방식으로바꾼다. 메뉴상에서 STM32duino bootloader 를선택하면된다.

17/23

Page 18: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 22] bootloader 에의한다운로드

이제아까프로그램을업로드해보자. 업로드버튼을누르면컴파일과동시에라이팅이시작된다.

일반실행모드에서부트로더가실행된상태에서, 부트로더를통해업로드를하는것이기때문에 더이상점퍼셋팅을바꿀필요가없다.

업로드가정상적으로완료되면다음과같은메시지를확인할수있다.

[ 그림 23] 아두이노업로드메시지

그리고이때딩글딩글하는 USB 관련경고음을들을것이다. 즉 DFU 디바이스를리셋하고새로운시리 얼디바이스를업로드하는소리이다. 업로드가끝나면부트로더는 D+ 를 0 볼트로만들고 USB 를리셋시

킨후, 바로새로운 PID 로시리얼디바이스를등록시킨다.

그에따라장치드라이버가리셋되고, 시리얼장치가올라오는소리가 2 번들리면정상이다.

18/23

Page 19: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

자이제새장치가올라왔으면, 장치관리자에서그장치를확인할수있을것이다.

장치관리자를열어서확인해보자. 기존의 Maple DFU 장치가사라지고, 이제시리얼포트가하나생성되었음을확인할수있다.

[ 그림 24] 시리얼포트

이제새포트로모니터링을해보자. 새포트는 COM4 에잡혀있으니. 아두이노의시리얼모니터를 COM4 로바꿔서실행해보자..

[ 그림 25] 시리얼모니터

정상적으로시리얼포트 1 번이동작하는것을확인할수있다.

여기서주의할점은, 기존젠더를사용할때는아두이노에서사용한 Serial 이 CPU 의 UART1 을사용하였는데, CPU 내부의 USB 를통해 Serial 포트를생성시키면, 아두이노에선자동으로 USB 포트의가상포트

를 Serial 로맵핑시킨다.

즉기존의내부 UART1 은일반 GPIO 기능으로사용하고 UART 로사용하지않는다.

이제젠더칩없이 CPU 내부의 USB 포트를통해다운로드하고시리얼포트를새로인식시켜서프로그 램테스트를해보았다. 단처음부트로터를다운로드할때는, 한번은시리얼포트를통해서다운로드해

야한다.

4. Furtuer Study

차후이와관련하여더해보고싶은분은, 위에잠깐언급하였듯이

1. 사용자정의장치를만드는작업과2. 부트로더를수정하는방법을실습해보길권장한다.

부트로더는오픈소스로공개되어있기때문에, 간단한수정만으로장치를변경할수있다.

다음링크에서관련자료를참고하기바란다.

https://github.com/rogerclarkmelbourne/STM32duino-bootloader

다음링크는 STM32 Generic 보드관련아두이노포럼이다. 좋은자료가많으니참고하면된다.

http://www.stm32duino.com/viewforum.php?f=28&sid=af769d8c1db4c63060ae0670ea82a615

19/23

Page 20: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

5. Schematic & Dimensions

[ 그림 26] STM32F103 MINI 회로도

20/23

Page 21: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 27] STM32F103 UNO 회로도

21/23

Page 22: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

[ 그림 28] STM32F MINI Dimension

[ 그림 28] STM32F UNO Dimension

22/23

Page 23: Cortex-M 아두이노프로그래밍 - icbanq.com 아두이노... · 아두이노전용프로그램은아두이노사이트에서무료로

Cortex-M 아두이노프로그래밍

Note :

23/23