베디드시스템 - silla.ac.krmclab.silla.ac.kr/lecture/201901/es/es-lecture-02.pdf ·...
TRANSCRIPT
임베디드시스템
Lecture #2 : 개발환경 구축
강의 목차
1. 실습 장비 개요
2. Keil MDK-ARM 개발 S/W
3. ST-Link Debugger 드라이브 설치
4. ST-Link Debugger 펌웨어 업그레이드
5. 개발 환경 실행 테스트
2
실습 장비 개요 (1)
실습 장비
㈜휴인스 / Cortex-M4 KEIL Platform ver.2.0
3
실습 장비 개요 (2)
실습 장비
㈜휴인스 / Cortex-M4 KEIL Platform ver.2.0
4
실습 장비 개요 (3)
실습 장비 – MCU 보드
STMicroelectronics Nucleo-F401RE 보드 ARM Cortex-M4 MCU(STM32F401RE)
84 MHz 메인 클럭
512 KBytes Flash Memory
96 Kbyte SRAM
16 채널까지 사용 가능한 12 bit ADC 2.4 Msps
최대 11개의 타이머
최대 3개의 I2C, 3개의 USARTs,
4개의 SPIs, 1개의 SDIO
on-chip PHY를 갖는 USB 2.0 Full Speed
96 bit unique ID
LED 1개, Button 1개 지원
5
실습 장비 개요 (4)
실습 장비 – MCU 보드
STMicroelectronics Nucleo-F401RE 보드
Arduino Uno Revision 3 Connection Header
6
실습 장비 개요 (5)
실습 장비 – MCU 보드
STMicroelectronics Nucleo-F401RE 보드
STMicroelectronics Morpho extension pin headers
7
실습 장비 개요 (6)
실습 장비 – Sensors, Actuators & Communications
128x64 OLED Display
BLE (Bluetooth Low Energy) 통신
WiFi 통신 모듈 (ESP8266)
CAN 통신
자외선 센서
심박(Heartbeat) 센서
기압/고도/온도 센서
소리감지 센서
인체감지 센서
8
적외선 거리 센서
온/습도 센서
조도 센서
가속도 센서
스위치 / LED
DC 모터
부저
RGB LED
Keil MDK-ARM 개발 S/W (1)
교차 개발 환경(Cross Development Environment) (1)
범용 컴퓨터 시스템에서는 프로그램 개발 환경과 프로그램 실행 환경이 동일
예: PC에서 개발한 프로그램을 PC에서 실행한다.
임베디드 시스템에서는 프로그램 개발 환경과 프로그램 실행 환경이다르다
낮은 성능, 사용자 인터페이스 장치 부족 등으로 프로그램 개발이 불가능
PC에서 프로그램 개발타겟 시스템에서 프로그램 실행
교차 개발 환경
교차 툴체인(Cross-toolchain) : 교차 컴파일러(Cross-compiler) 및 개발 유틸리티
디버거 장치(Debugger Device) : 실행 이미지 다운로드 및 실행 디버깅 지원
9
Keil MDK-ARM 개발 S/W (2)
교차 개발 환경(Cross Development Environment) (2)
10
Target
System
Host
PCDebugger
프로그램 개발using cross-toolchain
프로그램 실행
Keil MDK-ARM 개발 S/W (3)
Keil MDK-ARM
ARM Cortex-M 개발 플랫폼
Microcontroller Development Kit for ARM
ARM사가 지원하는 공식적인 개발 플랫폼
구성 요소:
uVision Integrated Development Environment (IDE)
Compilation tools (C/C++)
Assembler
Link unities (used to program the physical device)
Simulator (when no hardware is available)
Etc.
11
다양한ARM Cortex-M 개발 플랫폼 소개:
https://en.wikipedia.org/wiki/List_of_ARM_Cortex-M_development_tools
Keil MDK-ARM 개발 S/W (4)
Keil MDK-ARM 구성
12
Keil MDK-ARM 개발 S/W (5)
Keil MDK-ARM Edition
13
Professional Plus Cortex-M Lite
µVision®
IDE
Debugger
Simulator
32 KB
32 KB
ARM® Compiler
C/C++ Compilation Tools 32 KB
Device Support
Cortex® -M
SecurCore® (SC000, SC300)
ARM7™, ARM9™, Cortex® -R4
RTOS and Middleware
RTX RTOS with full source
3rd party RTOS awareness
Middleware libraries
Compiler Qualification Kit
Extended Compiler Maintenance
Pricing $$$ $$ $ free
Keil MDK-ARM 개발 S/W (6)
MDK-ARM Professional
14
µVision®
Project Manager, Editor & Debugger
NetworkCMSIS-RTOS
RTX
ARM® C/C++ Compiler
USB Device
File System
Graphics
USB Host
Best-in-class C/C++ Compiler
Co-developed with ARM® processors
Proven in thousands of projects
Pre-emptive
Deterministic
Source included
EHCI/OHCI Interface
Host & OTG mode
Low & Full Speed
Standard driver class support small
memory footprint
Low, Full, and High Speed
Integrated Development Environment
for edit, debug, and trace
Tight integration of all MDK components
Optimized for MCU systems
Extensive protocol support
Feature-rich applications
Extensive media support
FAT 12/16/32
Widget Library included
Touch screen support
Low level drivers
Keil MDK-ARM 개발 S/W (7)
CMSIS(Cortex® Microcontroller Software Interface Standard)
ARM사가 Cortex-M Microcontroller 제어 프로그램 개발의 편의를 위해 장치 인터페이스에 대한 표준을 정하고 이를 지원하기 위해 제공하는 프로그램 팩
어플리케이션 또는 미들웨어 프로그램과 물리적인 MCU 장치 사이에인터페이스를 제공하는 요소
프로그램 개발 시에 반드시 필요
15
Keil MDK-ARM 개발 S/W (8)
CMSIS(Cortex® Microcontroller Software Interface Standard)
16
Third Party
Software Pack
Cortex® -M
CPUSysTick
RTOS Kernel Timer
NVICNested Vectored In
terrupt Controller
Debug+
TraceCoreSight™Other
Peripherals
Application Code
CMSIS-RTOSAPI
CMSIS-DriverAPI
Middleware
Code
Templates
Code Templat
es
CMSIS-DAP
Real Time Kernel3rd Party
Device HALSilicon Vendor
CMSIS-CORECore Access Functions, SIMD Intrinsics for Cortex® -M4, Peripheral & Interrupt Definitions
CMSIS-SVD
CMSIS-DSPDSP Library
Debugger
CMSIS Software Pack
Microcontroller
Keil MDK-ARM 개발 S/W (10)
Keil MDK-ARM 설치 과정 MDK-ARM Core 설치
설치 파일 실행을 통해 uVision IDE, C++ Compiler 등 개발 도구를 설치
소프트웨어 팩 설치
팩 설치자(Pack Installer)를 이용하여 선별적으로 소프트웨어 팩 설치
추후 필요할 때마다 설치 가능
18
Keil MDK-ARM 개발 S/W (11)
Keil MDK-ARM 라이선스 설정 MDK-ARM Plus Edition에 대한 FlexLM Floating 라이선스를 사용
uVision IDE에서 프로그램 소스를 컴파일 할 때마다 라이선스 서버에접속하여 사용 권한을 확인하는 방식
항상 네트워크 접속이 필요
uVision IDE에서의 라이선스 설정 과정
19
1
2 3
ST-Link 디버거 드라이버 설치 (1)
ST-Link Debugger
STMicroelectorincs의 마이크로컨트롤러를 위한 전용 디버거 장치
SWIM & JTAG/SWD 인터페이스 지원
기능:
프로그램 이미지 다운로드 및 퓨징(fusing)
프로그램 실행 디버깅 지원
21
ST-Link 디버거 드라이버 설치 (2)
ST-Link Debugger – On-board Programmer
STMicroelectorincs Nucleo 보드는 ST-Link debugger를 내장
ST-Link v2.1 지원
22
ST-Link 디버거 드라이버 설치 (3)
ST-Link Debugger 드라이버 https://www.st.com/en/evaluation-tools/nucleo-f401re.html
23
ST-Link 디버거 드라이버 설치 (4)
ST-Link Debugger 드라이버 설치 (1)
1. PC와 Nucleo 보드 연결 해제
2. 드라이버 설치 파일 다운로드 & 압축 해제
3. 드라이버 설치 파일 실행
설치 과정에서 입력 항목은 기본값으로 선택
24
ST-Link 디버거 드라이버 설치 (5)
ST-Link Debugger 드라이버 설치 (2)
4. PC와 Nucleo 보드 연결
5. 장치 관리자에서 장치 확인
25
ST-Link 디버거 펌웨어 업그레이드 (1)
ST-Link Debugger 펌웨어 https://www.st.com/content/st_com/en/products/development-
tools/software-development-tools/stm32-software-development-
tools/stm32-programmers/stsw-link007.html
Keil MDK-ARM 등과 같은 최신 개발 도구와의 원활한 연결을목적으로 업그레이드 필요
반드시 ST-Link 디버거 드라이버 설치 후에 펌웨어 업그레이드 실행
26
ST-Link 디버거 펌웨어 업그레이드 (2)
ST-Link Debugger 펌웨어 업그레이드 (1)
1. PC와 Nucleo 보드 연결 해제
2. 펌웨어 업그레이드 파일 다운로드 & 압축 해제
3. 펌웨어 업그레이드 파일 실행
4. PC와 Nucleo 보드 연결 & USB 장치 인식 확인
27
ST-Link 디버거 펌웨어 업그레이드 (3)
ST-Link Debugger 펌웨어 업그레이드 (2)
5. “Device Connect” 버튼 클릭 Nucleo 보드 정보 출력
6. “Yes>>>” 버튼 클릭펌웨어 업그레이드 실행
28
개발 환경 실행 테스트 (1)
테스트 목적 uVision IDE를 이용한 프로그램 빌드,다운로드,실행 등의 일련의 개
발 과정에 대한 사용법 학습
개발 환경의 정상 동작 여부 확인
테스트 내용
“LED Blinky” 예제 설치 및 실행
테스트 과정
① 타겟 보드 관련 소프트웨어 팩 설치
② “LED Blinky” 예제 설치
③ 프로젝트 타겟 옵션 설정
④ 프로젝트 빌드
⑤ 실행 이미지 다운로드 및 실행
29
개발 환경 실행 테스트 (2)
타겟 보드 관련 소프트웨어 팩 설치 (1)
MCU 및 타겟 보드에 종속적인 DFP(Device Family Package), BSP(Board Support Package), CMSIS Core 팩이 필수적 필요함으로 설치
타겟 보드와 관련하여 한번만 설치
소프트웨어 팩 설치를 위해 “팩 설치자” 실행
팩 설치 화면 왼쪽 부분의 “Device” 탭을 선택장치 중에서“STMicroelectronic STM32F4 Series STM32F401 STM32F401RE” 순으로 장치를 선택
30
개발 환경 실행 테스트 (3)
타겟 보드 관련 소프트웨어 팩 설치 (2)
화면 오른쪽 부분의 “Packs” 탭에서 다음의 소프트웨어 팩에 대해“install” 버튼을 클릭하여 설치
① Keil::STM32F4xx_DFP – STM32F4 Series MCU DFP(Device Family
Package)로서 장치 초기화 코드 등을 제공
② Keil::STM32NUCLEO_BSP – STM32 Nucleo 보드를 위한 BSP(Board
Support Package)로서 Nucleo 보드의 확장된 기능, 예를 들면 ST-Link
Debugger 등에 대한 정보 및 제어 기능을 제공
③ ARM::CMSIS - CMSIS Core 소프트웨어 패키지
④ ARM::CMSIS-Driver_Validation
⑤ Keil::ARM_Compiler
31
개발 환경 실행 테스트 (4)
타겟 보드 관련 소프트웨어 팩 설치 (3)
최종적인 설치 완료 화면
32
개발 환경 실행 테스트 (5)
“LED Blinky” 예제 설치 (1)
팩 설치자 창의 오른쪽 부분의 “Examples” 탭 선택 “Blinky” 예제선택 “copy” 버튼 클릭
예제 프로젝트 설치 위치 입력
33
1
2 3
개발 환경 실행 테스트 (6)
“LED Blinky” 예제 설치 (2)
예제 프로젝트 설치 후에 자동적으로 uVision IDE 실행
“Blinky” 예제 프로젝트 설치 내용:
34
개발 환경 실행 테스트 (7)
프로젝트 타겟 옵션 설정 (1)
프로젝트 build 방법, build 산출물 그리고 디버깅 방법 등에 대한 옵션 설정
옵션 설정 값으로 기본값으로 선택하고, 타겟 보드와 관련하여 다음항목들에 대한 옵션 설정을 변경
“Target” 옵션
“User” 옵션
“Debug” 옵션
“타겟 옵션 설정” 실행
35
개발 환경 실행 테스트 (8)
프로젝트 타겟 옵션 설정 (2)
“Target” 옵션 설정
36
84.0 MHz
개발 환경 실행 테스트 (9)
프로젝트 타겟 옵션 설정 (3)
“User” 옵션 설정
37
fromelf –bin -0 @L.bin !L
개발 환경 실행 테스트 (10)
프로젝트 타겟 옵션 설정 (4)
“Debug” 옵션 설정
38
1
2
3
개발 환경 실행 테스트 (11)
프로젝트 타겟 옵션 설정 (6)
“Debug” 옵션 설정
39
STM32F4xx 512kB Flash
개발 환경 실행 테스트 (12)
프로젝트 빌드 (1)
프로젝트 빌드 실행
오류 수정 - system_stm32f4xx.c 소스 파일
40
개발 환경 실행 테스트 (13)
프로젝트 빌드 (2)
프로젝트 빌드 실행 결과
41
개발 환경 실행 테스트 (14)
실행 이미지 다운로드 및 실행 (1)
실행 이미지 다운로드 & 플래시 메모리 프로그래밍
방법 #1: uVision IDE의 다운로드 기능 사용
방법 #2: 가상 저장장치에 대한 Drag-and-Drop
방법 #1 – uVision IDE의 다운로드 기능 사용
타겟 옵션의 “Debug” 옵션 설정에 따라 다운로드 실행
42
개발 환경 실행 테스트 (15)
실행 이미지 다운로드 및 실행 (2)
방법 #2 - 가상 저장장치에 대한 Drag-and-Drop
43
개발 환경 실행 테스트 (16)
실행 이미지 다운로드 및 실행 (3)
프로그램 실행 확인
타겟 보드의 녹색 LED가 깜박임을 확인
44
개발 환경 실행 테스트 (17)
참고 - Compilation Flow in Keil MDK-ARM
45
개발 환경 실행 테스트 (18)
참고 – 임베디드시스템 프로그램 개발 사이클
46
소스코드 작성/수정
어셈블/컴파일
시뮬레이트
다운로드
하드웨어에서 테스트