December 22, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[20호]JK전자와 함께하는 ARM 완전정복(6)-1

jk전자 JK전자와 함/께/하/는 ARM 완전 정복 

Ⅳ. Cortex-M3 Applications

 

글 | JK전자

ARM Architecture에서 많은 내용을 다루어서 Cortex-M3의 이론적인 부분은 그나마 짧게 끝난 것 같습니다. 이번 파트에서는 STM32F103VC Dragon 개발보드 + 3.2 터치 LCD 가 부착된 실제 개발보드를 가지고 이론으로만 공부했던 내용을 실제 예제를 통해서 하나씩 배워나가보도록 하겠습니다. 예제들은 주로 Cortex-M3 Core 부분에 해당하는 부분을 다룰 것입니다. 처음에는 LCD, MP3 등의 디바이스 제어 예제도 진행하려고 했으나 이 부분들은 Cortex-M3의 공통된 부분도 아니고 디바이스에 따라서 많은 내용이 달라지기 때문에 STM32F10x 시리즈의 자체 기능과 Dragon 개발보드에 연결된 기본 예제들만 다루도록 하겠습니다. 추후 모든 디바이스들에 대한 예제들은 시간이 허락한다면 STM32 응용에 대한 강좌로 진행해 보도록 하겠습니다.

강의 전체 로드맵

I. ARM Architecture | 임베디드 시스템 개론에 대한 설명과 ARM7, ARM9 의 구조에 대해서 설명합니다.
II. ARM Applications | 삼성의 S3C2440(ARM9) 개발보드(S3C2440 Mini 개발보드)를 이용해서 어셈블리어와 UART, GPIO 등을 실습합니다.
III. Cortex-M3 Architecture | Cortex-M3의 특징과 구조에 대해서 설명합니다.
IV. Cortex-M3 Applications | STM32F103VCT6 Dragon 개발보드를 이용해서 GPIO, LCD, SPI, UART, MP3, SDIO, I2C 등을 실습합니다.

이 강의 자료에 대한 모든 질의사항은 http://cafe.naver.com/avrstudio의 ARM Architecture Q&A게시판에 글을 남겨주시거나 jk@deviceshop.net로 메일을 보내주시기 바랍니다. 가급적이면 여러 사람이 질문에 대한 답변을 공유할 수 있도록 네이버 카페 게시판을 이용해주셨으면 합니다. 감사합니다.

Ⅳ. Cortex-M3 Applications 목차

1. STM32F10x Overview
1.1 STM32F10x Block Diagram
1.2 STM32F10x Memory Map
1.3 STM32F10x Boot Modes
1.4 STM32F10x GPIO
2. STM32F103VC Dragon개발보드 소개
2.1 Features
3. Examples
3.1 GPIO Output without SDK
3.2 GPIO Output with SDK
3.3 GPIO Output with BitBand
3.4 GPIO Input – Polling
3.5 GPIO Input – Interrupt
3.6 General Purpose Timer
3.7 Systick – Delay
3.8 Systick – Interrupt
3.9 USART – Polling
3.10 USART – Interrupt
3.11 USART – Name Card
3.12 Interrupt Priority1
3.13 Interrupt Priority2
3.14 Power Management – Sleep
3.15 Power Management – Stop
3.16 Power Management – StandBy
3.17 Mode Privilege
3.18 USART Monitor Program

1. STM32F10x Overview

1.1 STM32F10x Block Diagram

Cortex-M3 Core를 Based로 하여 ICode, DCode, System Bus와 연결이 되어 있는 것을 볼 수 있습니다. Cortex-M3 Core는 ARM사에서 라이센싱한 것이고 아래의 그림에서 Vendor Defined Specfic 부분은 ST Microeclectonics사에서 구현한 것입니다. Bus Matrix를 통해서 AHB system bus와 Cortex-M3 Core가 연결되어 있고 APB1, APB2 bus가 AHB bus에 연결되어 있습니다.

20feajk 49

1.2 STM32F10x Memory Map

20feajk 50
Cortex-M3의 메모리 맵은 Architecture Defined 되어 있고, 4GB의 메모리 공간을 Access 할 수 있습니다. Architecture 차원에서 Memory Map이 정의되어 있기 때문에 같은 Cortex-M3를 기반으로한 CPU들 사이에서는 S/W 개발과 포팅을 쉽게 할 수 있습니다. 그리고 Memory Map에서 유심히 봐야할 부분은 Bit-Band region이 존재하고 있는 영역입니다.

-STM32F103VC CPU의 Memory layout
0×0800.0000 ~ 0×0801.FFFF (FLASH)
0×2000.0000 ~ 0×2000.BFFF (SRAM)
0×4000.0000 ~ 0×4002.3FFF
(Peripheral Memory Map)
0xE000.0000 ~ 0xE00F.FFFF
(Cortex-M3 Internal Peri.)

1.3 STM32F10x Boot Modes

STM32F 시리즈의 CPU는 3가지 모드로 부팅할 수 있습니다.

20feajk (7)
- User Flash memory : 일반적인 Normal booting입니다. STM32F CPU의 Internal Flash(0×0 or 0×8000000)에서 부팅을 하는 것입니다.
- System memory : STM32F CPU의 Internal System memory를 이용해서 부팅을 합니다. 이 모드로 부팅을 하면 CPU에 있는 내부 부트로더에 의해서 USART0가 초기화되고 ST 사에서 제공하는 ST Flashloader 프로그램을 이용해서 bin(or hex) 실행 이미지를 User Flash memory 영역에 다운로드 할 수 있습니다. JTAG 장비가 없을 경우 USART0을 이용해서 프로그램을 퓨징할 때 유용하게 사용할 수 있습니다.
- Embedded SRAM : Internal RAM에서 부팅을 시작하게 합니다. 이렇게 하려면 Startup 코드에서 Vector Table offset 위치를 RARM에 위치하도록 Register 설정을 해주어야 합니다.

20feajk (8)
위의 그림은 우리가 실습에 사용할 Dragon 개발보드의 BOOT 모드 회로도입니다.

 2. STM32F103VC Dragon 개발보드 소개

2.1 Features

CPU Module – STM32 Rabbit CPU 모듈 사용
CPU STM32F103VCT6 Cortex-M3 Core(LQFP-100)
SRAM 32KB internal SRAM
Flash 128KB internal Flash memory
ISP 1 x ISP 모드 전환 점퍼
UART 1 x UART( UART0)
LEDs 1 x User LED, 1 x Power LED
Reset Button 1 x Reset Button
JTAG 20Pin JTAG interface
Size(WxH) 68.4mm x 69.1mm(W x H)
확장포트 STM32F103VCT6의 모든 포트가 2 x 2.54mm으로 나와 있습니다.
Bottom Board – Hardware Features
전원 5V DC 전원(외경:5.5mm, 내경:2mm), USB, USB to Serial 포트를 통해서 전원공급 가능
RS232 1 x USB2Serial 포트 내장
1 x DB9 시리얼 포트 ( MAX232 )
USB  x USB 2.0 Full speed
LCD 1 x 2.4, 4.3, 7.0 inch TFT 터치 LCD 인터페이스
1 x 1602 Char LCD 인터페이스
1 x 12864 그래픽 LCD 인터페이스
MP3 1 x VS1003B SPI Interface
RF 1 x nRF24L01 SPI Interface
AHRS 1 x AHRS Sensor Interface
LEDs 3 x User LED, 1 x Power LED
Buttons 5 x User Button, 1 x Wakeup Button
CAN 1 x CAN ( VP230 )
RS485 1 x RS485 ( SP3485 )
SD Memory 1 x 4bit SD memory card interface
Adjustable Resiter 1 x ADC test
EEPROM 1 x IIC EEPROM
Backup Battery 1 x Backup battery holder
Buzzer 1 x Buzzer
ADC 2 x ADC Input( ADC12 In8, In9 )
DAC 1 x DAC
Size(WxH) 155 x 110 mm

 

3. 프로그램 다운로드 방법

3.1 JTAG을 이용한 다운로드 방법

3.1.1 ST-Link/V2

(1) ST-Link USB Driver Download and install
- http://www.st.com/web/en/catalog/tools/PF258167

20feajk (2)

(2) ST-Link Utility Download and install
- http://www.st.com/web/en/catalog/tools/PF258168

20feajk (4)

(3) ST-Link/V2 Utility Program 설치
- STM32 ST-LINK Utility_v2.5.0.exe

20feajk (5)
20feajk (6)
20feajk (7)
20feajk (8)

(4) ST-Link/V2 USB 드라이버 설치

- ST-Link_v2_usbdriver.exe

20feajk (9)
 ▼
20feajk (10)
 ▼
20feajk (11)
 ▼
20feajk (12)
 ▼
 14

- Windows7 의 경우 장치 드라이버가 자동으로 설치되지 않을 경우에 드라이버 소프트웨어 업데이트를 수행합니다.

20feajk (13)
20feajk (14)
20feajk (15)
20feajk (16)
20feajk (17)

 

(4) ST-Link/V2 Firmware upgrade

20feajk (51)

(5) Program Fusing with ST-Link/V2
ST-Link/V2의 20핀 JTAG Cable을 Dragon 개발보드의 CPU 모듈에 있는 20핀 JTAG 박스 헤더에 연결하고 ST-Link Utility에서 “Mode Setting” 메뉴에서 “SWD” 모드로 설정합니다. 일반적으로는 STM32F 시리즈에서 “JTAG” 모드로 설정해도 되지만 Dragon 개발보드에서는 JTAG 핀의 일부를 LCD 제어시 사용하고 있기 때문에 반드시 “SWD” 모드로 설정해야 합니다. 그리고 Connect Target 을 실행합니다.

20feajk (52)
다운로드 할 bin 파일을 선택합니다.

20feajk (53)
- 참고로 IAR 컴파일러 환경에서는 bin 파일을 생성하기 위해서는 Ouput Converter에서 아래 그림과 같이 Binary파일 생성 옵션을 설정해 주어야 bin 파일이 생성됩니다.

20feajk (18)
- Download & Verify를 실행합니다.

- IAR, KEIL등의 개발 환경과 직접 연동을 하지 않을 경우에는 ST-Link Utility를 이용해서 실행 binary를 다운로드 받을 수 있습니다.

20feajk (54)

(6) EWARM Debug Environment – ST-Link/V2
- Debugger에서 Driver를 ST-Link를 선택합니다.

20feajk (18)
- ST-Link 설정에서 “SWD” 모드로 설정을 합니다.
- ST-Link/V2 제품은 IAR에서 사용할 경우 6.20 이상부터 연동을 할 수 있습니다.

20feajk (49

3.1.2 ARM-JTAG
(1) ARM-JTAG Utility 설치

20feajk (59)
20feajk (60)
20feajk (61)
20feajk (62)
20feajk (63)
20feajk (64)

(2) JICE Server 프로그램 실행
- ARM-JTAG의 20핀 JTAG Cable을 Dragon 개발보드의 CPU 모듈에 있는 20핀 JTAG 박스 헤더에 연결 하고 JICE Server 프로그램을 실행합니다.
20feajk (65)

연결이 정상적이라면 Core ID를 읽어옵니다.

20feajk (66)

Core ID가 읽어지지 않는다면 아래와 같이 JICE Server를 설정해 보시기 바랍니다.

20feajk (67)

(3) JICE Configuration
- Debug Port Configuration

20feajk (68)

- Tap Configuration

20feajk (67)

(4) JICE Commander

20feajk (70)

(5) Easy Flashloader 설정
STM32F103VC(STM32F10xxC) or STM32F103ZE(STM32F10xxE) 중에서 선택합니다.

20feajk (71)
- 다운로드할 Binary 설정

20feajk (72)
- Start Download 를 실행하면 먼저 Flash를 Erase하고 나서 선택한 바이너리 파일을 다운로드합니다.

20feajk (73)

 

20feajk (74)

(6) EWARM Debug Environment – ARM-JTAG
- Debugger에서 Driver를 RDI로 선택합니다.

20feajk (75)
- RDI 드라이버를 설정합니다.

20feajk (76)
- Easy Flashloader에서 “Flash Download Before Debugging” 을 체크합니다.

20feajk (74)
- IAR 개발환경에서 “Download and Debugging”을 시작하면 “Check Flash Download State!” 실행창이 나오게 되고 JICE Commander에서 다운로드가 정상적으로 이루어 졌다면 “PASS” 버튼을 클릭합니다.

20feajk (77)
- IAR 개발환경에서 Debugging 화면

20feajk (78)
ARM-JTAG의 사용에 경우 Windows7 환경에서 보다 자세한 환경 설정은 아래 URL을 참조하시기 바랍니다.

http://www.jkelec.co.kr/img/jtag/arm/armjtag/arm_jtag_manual.html

3.2 STM32F 시리즈의 internal ISP(UART0)를 이용한 방법

STM32F 시리즈의 CPU들은 별도의 JTAG 장비없이 내장 ISP 기능을 이용해서 bin 파일을 다운로드 할 수 있습니다.

(1) ISP 모드로 진입
다운로드 모드로 진입하기 위해서는 아래 그림과 같이 Boot0 점퍼를 ISP라고 되어 있는 위치에 세팅하고 PC와 연결합니다.

20feajk (3)
Dragon Bottom 보드가 있을 경우에는 Bottom 보드의 UART 포트에 연결을 하면 됩니다. Dragon Bottom 보드에는 PL2303 USB to Serial 포트가 내장되어 있습니다.

(2) PL2303 USB to Serial 드라이버 설치
- PL2303_Prolific_DriverInstaller_v1210.exe

20feajk (1)
20feajk (55)
20feajk (56)
20feajk (57)
20feajk (58)
20feajk (79)

(3) “STMicroelectronics flash loader.exe” 프로그램을 설치하고 실행합니다.
- Parity : “Even” , Baud Rate : “115200″ 으로 설정

20feajk (80)
20feajk (81)
20feajk (83)

- Binary or Hex 파일을 선택하고 보통은 “Erase necessary pages” 를 선택하면 됩니다.

20feajk (82)
20feajk (84)
20feajk (85)

 

이어서 계속 됩니다. >>>

 

 

Leave A Comment

*