임베디드시스템 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 통신 가속도센서 자외선센서 스위치 / LED 심박 (Heartbeat) 센서 DC 모터 기압 / 고도 / 온도센서 부저 소리감지센서 RGB LED 인체감지센서 8
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) Target System Debugger Host PC 프로그램실행 프로그램개발 using cross-toolchain 10
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 Professional Plus Cortex-M Lite µvision IDE Debugger Simulator ARM Compiler 32 KB 32 KB 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 3 rd party RTOS awareness Middleware libraries Compiler Qualification Kit Extended Compiler Maintenance Pricing $$$ $$ $ free 13
Keil MDK-ARM 개발 S/W (6) MDK-ARM Professional 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 ARM C/C++ Compiler µvision Project Manager, Editor & Debugger CMSIS-RTOS RTX USB Host Network File System 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 Standard driver class support small memory footprint Low, Full, and High Speed USB Device Graphics Widget Library included Touch screen support Low level drivers 14
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) Application Code Middleware Code Templat es Third Party Software Pack CMSIS Software Pack CMSIS-DSP DSP Library CMSIS-RTOS API CMSIS-Driver API Code Templates Debugger Real Time Kernel 3 rd Party Device HAL Silicon Vendor CMSIS-CORE Core Access Functions, SIMD Intrinsics for Cortex -M4, Peripheral & Interrupt Definitions CMSIS-SVD CMSIS-DAP Cortex -M CPU SysTick RTOS Kernel Timer NVIC Nested Vectored In terrupt Controller Debug + Trace Other Peripherals CoreSight 16 Microcontroller
Keil MDK-ARM 개발 S/W (9) Keil MDK-ARM 다운로드 http://www2.keil.com/mdk5/ 17
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 에서의라이선스설정과정 1 2 3 19
Keil MDK-ARM 개발 S/W (12) Keil MDK-ARM 라이선스설정 uvision IDE 에서의라이선스설정과정 8224@mictes.silla.ac.kr 20
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/developmenttools/software-development-tools/stm32-software-developmenttools/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 예제설치및실행 테스트과정 29 1 2 3 4 5 타겟보드관련소프트웨어팩설치 LED Blinky 예제설치 프로젝트타겟옵션설정 프로젝트빌드 실행이미지다운로드및실행
개발환경실행테스트 (2) 타겟보드관련소프트웨어팩설치 (1) MCU 및타겟보드에종속적인 DFP(Device Family Package), BSP(Board Support Package), CMSIS Core 팩이필수적필요함으로설치 타겟보드와관련하여한번만설치 소프트웨어팩설치를위해 팩설치자 실행 팩설치화면왼쪽부분의 Device 탭을선택 장치중에서 STMicroelectronic STM32F4 Series STM32F401 STM32F401RE 순으로장치를선택 30
개발환경실행테스트 (3) 타겟보드관련소프트웨어팩설치 (2) 화면오른쪽부분의 Packs 탭에서다음의소프트웨어팩에대해 install 버튼을클릭하여설치 1 2 3 4 5 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 버튼클릭 1 2 3 예제프로젝트설치위치입력 33
개발환경실행테스트 (6) LED Blinky 예제설치 (2) 예제프로젝트설치후에자동적으로 uvision IDE 실행 Blinky 예제프로젝트설치내용 : 34
개발환경실행테스트 (7) 프로젝트타겟옵션설정 (1) 프로젝트 build 방법, build 산출물그리고디버깅방법등에대한옵션설정 옵션설정값으로기본값으로선택하고, 타겟보드와관련하여다음항목들에대한옵션설정을변경 Target 옵션 User 옵션 Debug 옵션 타겟옵션설정 실행 35
개발환경실행테스트 (8) 프로젝트타겟옵션설정 (2) Target 옵션설정 84.0 MHz 36
개발환경실행테스트 (9) 프로젝트타겟옵션설정 (3) User 옵션설정 fromelf bin -0 @L.bin!L 37
개발환경실행테스트 (10) 프로젝트타겟옵션설정 (4) Debug 옵션설정 1 3 2 38
개발환경실행테스트 (11) 프로젝트타겟옵션설정 (6) Debug 옵션설정 STM32F4xx 512kB Flash 39
개발환경실행테스트 (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 하드웨어에서테스트