1 1. Introduction 1.1. About this Manual This manual is intended to provide the user with an overview of the board and benefits, complete features specifications, and set up procedures. It contains important safety information as well. 1.2. Feedback and Update to this Manual To help our customers make the most of our products, we are continually making additional and updated resources available on the JK Electronics technical support website (). These include manuals, application notes, programming examples, and updated software and hardware. Check in periodically to see what s new! When we are prioritizing work on these updated resources, feedback from customers is the number one influence, If you have questions, comments, or concerns about your product or project, please no hesitate to contact us at mailto:master@deviceshop.net. 1.3. Limited Warranty JK Electronics warrants this product to be free of defects in material and workmanship for a period of six month from date of buy. During this warranty period JK Electronics will repair or replace the defective unit in accordance with the following process: This limited warranty does not cover damages resulting from lighting or other power surges, misuse, abuse, abnormal conditions of operation, or attempts to alter or modify the function of the product. This warranty is limited to the repair or replacement of the defective unit.in no event shall JK Electronics be liable or responsible for any loss or damages, including but not limited to any lost profits, incidental or consequential damages, loss of business, or anticipatory profits arising from the use or inability to use this products. Repairs make after the expiration of the warranty period are subject to a repair charge and the cost of return shipping. Please contact JK Electronics to arrange for any repair service and to obtain repair charge information. 4. License of this manual 이매뉴얼의 JK전자에의해서번역, 수정, 작성되었고소유권또한 JK전자의것입니다. 소유권자의허가를받지않고무단으로수정, 삭제하거나배포할수없습니다.
2 2010 Copyright by JK Electronics.
3 1. 왜 Cortex 인가?... 4 2. 개발환경구축... 6 2.1 컴파일러... 6 2.2 플래시프로그램... 6 2.2.1 시리얼플래시다운로드를이용하는방법... 6 2.2.2 JTAG 다운로드장비를이용하는방법... 10 2.3 Keil MDK 에서 H-JTAG USB 를이용한디버깅... 18 2.4 IAR Workbench(EWARM) 에서 H-JTAG USB 를이용한디버깅... 21
4 STM32 개발환경및플래시다운로드 Cortex-M3 코어중에서도 ST Microelectronics 사의제품인 STM32 MCU에대해서간단하게리뷰를해보고그중에서도 STM32F103VCT6를사용하는개발보드에대해서간단한예제를작성해보면서쉽게접근할수있도록하는것이주요목표이고가능하다면 STM32 MP3개발보드에장착되어있는 VS1003B MP3 Codec을이용해서 SD메모리카드에저장된 MP3파일을플레이해보는것을목표로하도록하겠습니다. 1. 왜 Cortex 인가? 지난 6~7년간일반적인목적의마이크로컨트롤러를위한 CPU로 ARM7, ARM9을채택해왔으며오늘날수많은 ( 약 240개 ) ARM-Based의마이크로컨트롤러가존재합니다. 이러한시점에서 ST Microelectronics 는 ARM Cortex-M3 microcontroller core를기반으로한첫번째제품으로 STM32 라는 MCU 제품군을발표하였습니다. 이새로운 MCU는성능과비용뿐만이아니라저전력의 hard real-time controller 입니다. ARM Cortex family는광범위한기술적인요구사항을충족하기위하여기존의 ARM CPU들과는다른새로운 standard architecture를제공하는데, Cortex family 에는 A, R, M type의 3가지 Profile이있습니다. Cortex-A Series Applications processors for complex OS and user applications. Supports the ARM, Thumb and Thumb-2 instruction sets. Cortex-R Series Real-time systems profile. Supports the ARM, Thumb, and Thumb-2 instruction sets. Cortex-M Series Microcontroller profile optimized for cost-sensitive applications. Supports Thumb-2 instruction set only. STM32 는 Cortex-M3 profile 을기반으로특별히 high system performance 와 low power consumption 를위하여디자인되었으며이것은충분히 8, 16비트마이크로컨트롤러와도가격적인면에서경쟁력이있습니다. ARM7, ARM9은특별이 exception 과 interrupt handling 에서훌륭한성능을가지고있는데, 그것은각각의제조사에서그들만의특별한솔루션을가지고디자인을했기때문입니다. Cortex-M3 는 Interrupt system, Systick timer, Debug system and memory map 등의
5 Standard microcontroller가가지고있는기능을제공하며 4Gbyte 의 address 영역은 code, SRAM, Peripherals and system peripherals 등의영역으로나누어져있습니다. ARM7과다르게 Cortex-M3는 Harvard architecture 구조이고 multiple bus를가지고있어서동시에작업이가능하기때문에 ARM7 보다성능면에서우수합니다.. 이전의 ARM architectures 와달리 Cortex family 는 unaligned data 를 access할수있어서 internal SRAM 을효율적으로사용할수있고또한 bit banding 이라는방법으로 1Mbyte 영역안에서 Bit를 Set하고 Clear할수있어서 peripheral registers 와 SRAM memory 에위치한 Flag 등을효과적으로 set 하고 clear 할수있습니다. STM32의주요핵심부분은 Cortex-M3 processor 이고 Cortex-M3 processor 는 32bit CPU로서 nested interrupt unit과 debug system, standard memory layout을가지고있습니다. Cortex-M3 core의중요한요소의하나로 Nested Vector Interrupt Controller (NVIC) 가있습니다. NVIC는 Cortex core에기반을둔모든마이크로컨트롤러들에게표준적인 interrupt와 exception handling 구조를제공합니다. NVIC는주변기기들로부터 240개가넘는인터럽트벡터를제공하고, 그인터럽트는각각우선순위를정할수있습니다. 인터럽트가발생후인터럽트서비스루틴 ( 함수 ) 의시작코드에도달하는데까지걸리는시간은 12사이클의소요됩니다. 이러한기능은 CPU 안의 microcode 에의해서수행되어지는 automatic stack handling 부분에의해서가능합니다. 연속적인인터럽트서비스의경우 NVIC는 "tail chaining" 기법으로 6사이클안에인터럽트서비스를제공합니다. 인터럽트적층 (stacking) 단계에서 high priority interrupt는 low priority interrupt를추가적인 CPU Cycle 소모없이선점할수있습니다. 또한인터럽트구조는 Cortex-M3 Core의저전력모드에서도잘구성되어있는데이것은자동으로저전력모드로진입하고인터럽트를이용해서 low power mode( 저전력모드 ) 에서벗어나게할수있는구조를가능하게합니다. Cortex core는 24비트 auto reload 타이머를가지고있어서 RTOS kernel을위한 periodic interrupt(sys clock) 를제공합니다. ARM7과 ARM9코어는 32-bit ARM instruction과 16-bit Thumb instruction의 2개의 Instruction set를제공하는데, Cortex family는성능적으로유리한 32-bit instructions과코드집적도가높은 Thumb 16-bit instruction가혼용된 Thumb-2 instruction set를제공합니다.
6 2. 개발환경구축 2.1 컴파일러 Cortex-M3 개발을위한컴파일러로여러가지가있지만주로많이사용하는컴파일러로EWARM IAR Workbench와 KEIL MDK를주로많이사용하는것같습니다. 여기에서는 KEIL MDK 3.80 컴파일러를사용하도록하겠습니다. 2.2 플래시프로그램개발보드에컴파일한바이너리파일을다운로드하기위해서 2가지방법이있습니다. 첫째로 STM32에서기본으로제공하는시리얼플래시다운로드를이용하는방법이있고둘째로 JTAG 다운로드장비를이용하는방법이있습니다. 2가지모두에대해서살펴보도록하겠습니다. 2.2.1 시리얼플래시다운로드를이용하는방법시리얼인터페이스를이용하면별도의비용부담없이 PC의 COM포트를이용해서타겟보드에컴파일한바이너리이미지를다운로드할수있습니다. 하지만비용이들지않는반면에디버깅을할수는없습니다. 시리얼을이용해서다운로드를하려면우선 STM32F103VET6를내부시스템부팅모드로설정해야합니다. 시스템부팅모드에대해서는차후에자세히알아보도록하고우선은개발보드의점퍼를설정 (JP1의점퍼를제거합니다.) 하고바로실습을해보도록하겠습니다. (1) STM32 Flash Loader프로그램실행 참고로 STM32 Flash Loader프로그램과메뉴을은아래경로에서다운받으실수있습니다. http://www.st.com/stonline/products/support/micro/files/um0551.zip http://www.st.com/stonline/products/literature/um/13916.pdf
7 장치관리자에서시리얼포트번호를확인하고 Next 진행.
8 Next 다음진행 Next 다음진행
9 Download to device 를선택하고 hex 파일을선택합니다. Next 다음진행 타겟보드에플래시다운로드완료
10 2.2.2 JTAG 다운로드장비를이용하는방법 STM32를지원하는장비에는 H-JTAG, J-Link, ULINK, ST-Link 등여러가지가있습니다. 시리얼을이용해서바이너리이미지를다운로드할수는있지만개발중에디버깅을할수없다는단점이있습니다. 물론 UART나 LED등을이용해서기본적인내용은확인할수는있지만그리효율이좋지는못합니다. 그래서고가의비용을투자해서 JTAG장비를이용하는것입니다. 여기서는 H-JTAG 장비를이용하는방법에대해서설명하도록하겠습니다. (1) H-JTAG 소프트웨어다운로드하고설치 /H-JTAG V1.0 Release.zip 에서소프트웨어를다운로드하고설치합니다. (2) H-JTAG 드라이버설치 H-JTAG 장비를 PC와연결하면 USB 드라이버를설치해야합니다.
11
12
13 (3) H-JTAG 을개발보드의 JTAG 포트에연결하고 H-JTAG 서버실행 H-JTAG 서버가실행되면서아래와같이 Cortex-M3를 Detect 하게됩니다.
14 Cortex-M3 용 TAP Configuration 설정 STM32F 버튼클릭
15 (4) 바이너리 (Hex) 파일을개발보드에다운로드 H-Flasher 실행 H-Flasher 설정, 아래그림들에서는 STM32F103VC를선택하였지만 Flash를여기개발보드에서는 STM32F103VET6을선택합니다.
16
17 Program 버튼클릭
18 2.3 Keil MDK 에서 H-JTAG USB 를이용한디버깅 - Toolconf 를실행시켜서 Keil MDK의디버거설정에 H-JTAG RDI 인터페이스추가 - Config 버튼클릭 - MDK 디버거설정을위해서 Option for target 아이콘클릭
19 디버거를 H-JTAG CORTEX-M3 로설정한후 Setting 버튼을누르면아래와같이 H-JTAG About 창이나와야합니다. - Flash loader 설정
20 - H-Flasher 설정 ( 디버깅을위해서는 Auto Flash Download 로설정 ) - 디버깅시작 H-Flasher 에서 Auto Flash Download 로설정하면디버깅시작시자동으로 H-Flasher 가호출되어서타겟에이미지를다운로드하게됩니다. 여기서한가지주의할점은 Keil MDK환경에서는디버깅시작시에만이미지를다운로드할수있고이미지만다운로드하기위해서는 H-Flasher에서직접실행해야만합니다.
21 2.4 IAR Workbench(EWARM) 에서 H-JTAG USB 를이용한디버깅 IAR에서디버깅을하기위해서는 5.4 버전이상을사용해야합니다. - RDI 인터페이스 Configure - Target 설정
22
23 - Debugger 설정을 RDI 를선택 - RDI 디라이버를 H-JTAG.dll 로설정
24 - RDI -Configure
25 - 디버깅시작