이미 소장하고 있다면 판매해 보세요.
|
서언
목차 그림 목차 1.Introduction 1.1.ARM Architecture History 1.1.1.ARM 초기 제품 1.1.2.ARM7TDMI Family부터 ARM9 1.1.3.ARM10과 ARM11 Family 1.2.Cortex Family 개요 1.2.1.Cortex A-, R-, M-series 1.2.2.ARM Licenses 1.2.3.M0, M3, R4F, A8, A9 개요 1.3.ARM7 Architecture와 비교를 통한 Cortex-M3 특징 1.3.1.Harvard Architecture 1.3.2.Thumb-2 Instruction Set 1.3.3.Pipeline Branch Speculation 1.3.4.Cortex-M3 interrupt 2.Cortex-M3 Architecture 2.1.Cortex-M3 block diagram 2.2.Registers 2.2.1.프로세서 모드와 Privilege levels 2.2.2.스텍 2.2.3.Cortex-M3 Core 레지스터들 2.3.Thumb-2 Instruction Set Architecture (ISA) 2.3.1.Architecture profile 2.3.2.Thumb-2 2.4.Memory Map 2.4.1.미리 정의된 Memory Map 2.4.2.Bit banding 2.4.3.메모리 Endian 2.5.Exceptions and Interrupts 2.5.1.Exception 종류 2.5.2.Exception Priority & Nested 처리 2.5.3.ARM7, ARM9과의 비교 2.5.4.STM, LDM 처리시의 Interrupt 2.6.Nested Vectored Interrupt Controller 2.6.1.NVIC 특징 2.6.2.Tail chaining, late arrival, pop pre-emption 2.7.기타 특징 3.STM32 CPU 특징 3.1.Features 3.2.STM32F103xx Device overview 3.3.STM32F103xx block diagram 3.4.Memory mapping 3.5.Booting mode 3.6.Low-power modes 3.7.Core peripherals 3.7.1.Nested vectored interrupt controller (NVIC) 3.7.2.System control block (SCB) 3.7.3.SysTick timer (STK) 4.Hardware Manual 4.1.Cortex-M3 기본 EVB (Mango-M32) 하드웨어 매뉴얼 4.1.1.Mango-M32 구조 4.1.2.Mango-M32 부품면 설명 4.1.3.Part #1 ? STM32F103xx MCU 4.1.4.Part #2 ? USB Connector 4.1.5.Part #3, #4, #5 ? RS232C 4.1.6.Part #6 ? 7 Segment LED 4.1.7.Part #7 ? BOOT Select Switch 4.1.8.Part #8, #9, #10 ? WKUP, USER, RESET 버튼 4.1.9.Part #11, #12 ? 12MHz, 32.768KHz Crystal 4.1.10.Part #13 ? Power LED 4.1.11.Part #14 ? Indicator LEDs 4.1.12.Part #15 ? Expansion Connector 4.1.13.Part #16 ? JTAG 커넥터 4.2.Cortex-M3 + ZigBee EVB (Mango-Z1) 하드웨어 매뉴얼 4.2.1.Mango-z1 부품 설명 4.2.2.Mango-z1 보드 구조도 4.2.3.Mango-z1 보드 하드웨어 4.2.4.User Keys 4.2.5.Indicator LEDs 4.2.6.USB 4.2.7.RS-232C 4.2.8.Power 4.2.9.RF Transceiver 4.2.10.2.4GHz RF 4.2.11.Expansion Slot 4.2.12.JTAG 5.개발 환경 구축 5.1.IAR workbench 환경 구축 5.1.1.Evaluation version 다운로드 5.1.2.IAR Embedded Workbench for ARM v.5.2 설치 5.2.RIDE7 환경 구축 5.2.1.RIDE7 다운로드 5.2.2.Ride7_7.30.10.0169.exe 설치 5.2.3.RKit-ARM_1.26.10.0130.exe 설치 5.2.4.RIDE7 프로젝트 구성 예제 5.3.STM Flash Loader 설치 5.4.터미널 프로그램 설치 5.5.참고 사항 - Error 사항 대처 방법 5.5.1.File Open error - Fatal Error[Pe005] 5.5.2."assert_param" error - Error[Li005] 5.5.3.빌드 Warning [Pa082] 6.Cortex-M3 기본 Firmware 프로그래밍 6.1.LED를 켜 보자 ? 무작정 따라하기 6.1.1.폴더 구조 설정 6.1.2.IAR 환경 구성 및 빌드 6.1.3.RIDE7 환경 구성 및 빌드 6.1.4.Flash Download 6.1.5.실행 6.2.최초 프로그램 설명 6.2.1.LED 회로도 및 하드웨어 설명 6.2.2.(*(volatile unsigned *)0x40021018) |= 0x8 6.2.3.(*(volatile unsigned *)0x40010C04) |= 0x10 6.3.LED를 꺼 보자 6.3.1.LED 회로도 분석 6.3.2.소스 파일 폴더 위치 6.3.3.main.c 변경 사항 6.3.4.수행 결과 6.3.5.delay_int_count 6.3.6.GPIO Set Reset 레지스터 6.3.7.Port bit Reset register 6.3.8.Port bit Set Reset register 6.3.9.delay 시간에 관한 설명 6.4.1초 delay_int_count 구현하기 6.4.1.1초 delay의 정확도 6.4.2.delay 함수를 만드는 방법 6.4.3.CPU Clock에 관하여 6.4.4.Reset and clock control (RCC) 6.4.5.delay_int_count 어셈블리 코드 6.4.6.1초 delay_int_count 결론 6.5.LED 모두 깜빡거리기 6.5.1.소스 파일 폴더 위치 6.5.2.LED 회로도 및 위치 설명 6.5.3.main.c 변경 사항 6.5.4.GPIOB_CRL 레지스터 설정 6.5.5.GPIOx_BRR GPIOx_BSRR 레지스터 설정 6.5.6.수행 결과 6.6.고급스러운 코딩을 하자 1 6.6.1.소스 파일 폴더 위치 6.6.2.platform_config.h 구현 - define의 활? 1 6.6.3.platform_config.h 구현 - define의 활용 2 6.6.4.GPIO_B_Output_Init 함수 구현 6.6.5.led.c 구현 6.6.6.IAR & RIDE7 빌드 6.6.7.실행 결과 6.7.고급스러운 코딩을 하자 2 6.7.1.소스 파일 폴더 위치 6.7.2.레지스터의 Address Offset - 상대 주소 지정 방식 6.7.3.새로운 typedef - RCC_TypeDef 정의 6.7.4.GPIO_TypeDef 정의 6.7.5.상대 주소 지정 방식 결론 6.8.Key가 눌린 것 알아채기 6.8.1.소스 파일 폴더 위치 6.8.2.회로도 및 보드 구성 분석 6.8.3.platform_config.h 변경 사항 6.8.4.GPIO Input mode 설정 6.8.5.Key Input 값 Read - GPIO Read 분석 6.8.6.key.c 분석 6.8.7.빌드 및 실행 6.9.Hello World를 찍어보자 6.9.1.IAR에서 startup_stm32f10x_md.s 추가 6.9.2.GPIO_Init 분석 6.9.3.UART 일반 6.9.4.회로도 분석 6.9.5.USART macro 및 typedef 분석 6.9.6.main 함수 검토 6.9.7.GPIO_Configuration 6.9.8.USART1_Init 6.9.9.USART_Init 함수 설명 6.9.10.UART 출력 함수 구현 6.9.11.실행 결과 6.10.printf를 활용하자 6.10.1.semi-hosting 6.10.2.main.c 변경사항 6.10.3.실행 결과 6.11.Get Character & 메뉴 구성 6.11.1.USART_FLAG_RXNE 6.11.2.USART_ReceiveData 구현 6.11.3.USART_GetCharacter 구현 6.11.4.메뉴 구성 6.11.5.수행 결과 6.12.7-Segment Control 6.12.1.회로도 분석 6.12.2.7-segment 개요 6.12.3.GPIO 설정 및 기본 함수 구현 6.12.4.Seven_Segment_Test 구현 6.12.5.7-segment로 숫자를 표현해 보자 6.12.6.실행 결과 6.13.Clock Control 6.13.1.회로도 및 클럭 소스 분석 6.13.2.Enable HSE 6.13.3.Flash access Latency 설정 6.13.4.HCLK, PCLK1, PCLK2 설정 6.13.5.PLL 설정 6.13.6.PLL ON 6.13.7.System clock switch 설정 6.13.8.소스 코드 변경 사항 설명 6.13.9.LED Test 성능 비교 6.14.RCC_GetClocksFreq 구현 6.14.1.RCC_ClocksTypeDef 정의 6.14.2.SYSCLK_Frequency 구하기 6.14.3.HCLK_Frequency 구하기 6.14.4.PCLK1_Frequency 구하기 6.14.5.PCLK2_Frequency 구하기 6.14.6.ADCCLK_Frequency 구하기 6.14.7.System_Information 변경 사항 6.14.8.수행 결과 6.15.정확한 1초 Delay 구현 6.15.1.Cortex-M3 Exception 개요 6.15.2.STM32F10xxx Vector table 6.15.3.System Control Space 분석 6.15.4.NVIC Vector Table 설정 6.15.5.SysTick Configuration 6.15.6.Exception priority 6.15.7.NVIC_SetPriority 설정 6.15.8.SysTick interrupt handler 설정 6.15.9.실행 결과 6.16.Key Interrupt 처리 6.16.1.실행 결과 6.16.2.External interrupt/event controller (EXTI) 개요 6.16.3.NVIC Configuration 분석 6.16.4.EXTI Configuration 6.16.5.EXTI0_IRQHandler 7.Cortex-M3 및 802.15.4 ZigBee 통신 프로그래밍 7.1.Hello World 7.1.1.STMicroelectronics 라이브러리 적용 7.1.2.Hello World 빌드 - IAR case 7.1.3.Hello World 빌드 - RIDE7 case 7.1.4.소스 분석 7.1.5.수행 결과 7.1.6.라이브러리 폴더 위치 변경 7.2.메뉴 구성 및 LED & Key Control 7.2.1.USE_FULL_ASSERT - debug 부분 7.2.2.소스 코드 변경 사항 7.2.3.RCC Get Clocks Frequency 7.3.Clock Control 7.3.1.소스 변경 사항 7.3.2.실행 결과 7.3.3.System Init 함수 설명 7.3.4.SetSysClock() 함수 설명 7.3.5.SetSysClockTo72() 함수 설명 7.4.정확한 1초 Delay 구현 및 Key Interrupt 처리 7.4.1.빌드 환경 추가 파일들 7.4.2.Interrupt Handler 구현 7.4.3.소스 변경 사항 7.4.4.실행 결과 7.5.In-Application Programming (IAP) - BootLoader 7.5.1.AN2557 다운로드 7.5.2.IAP 개요 7.5.3.IAP code 개요 7.5.4.IAP code 알고리즘 7.5.5.STM 라이브러리 사용 7.5.6.IAP project 소스 변경 내역 7.5.7.IAP 실행 7.5.8.User Program 만들기 1 - binary_template 7.5.9.IAP YModem Download 7.5.10.User Program 만들기 2 - Z1.Src004.KeyInterrupt 7.6.SPI 통신을 이용 CC2520 Chip ID 읽기 7.6.1.CC2520 2.4 GHz RF transceiver 7.6.2.CC2520 관련 자료 다운로드 7.6.3.망고 Z1 회로도 분석 7.6.4.SPI (Serial Peripheral Interface) 통신 7.6.5.CC2520 레지스터 초기화 7.6.6.ZigBee_Test 프로그램 설명 7.6.7.SPI 초기화 7.6.8.CC2520 RF 초기화 7.6.9.Get Chip ID & Version 7.6.10.빌드 및 실행 결과 7.7.One byte RF 통신 구현 7.7.1.레지스터 값 출력 함수 구현 7.7.2.RF Channel 설정 7.7.3.PAN (Personal Area Network) ID & Short Address 설정 7.7.4.GPIO 0 Exception 설정 7.7.5.초기 레지스터 설정 값 변경 사항 7.7.6.appSwitch Tx application 설명 7.7.7.appLight Rx application 설명 7.7.8.basicRfRxFrmDoneIsr() 함수 설명 7.7.9.실행 결과 7.8.Multi-Packet Transmit 통신 구현 7.8.1.실행 결과 7.8.2.전송 패킷 & PER 계산 structure 구조 7.8.3.perTest_appTransmitter 설명 7.8.4.perTest_appReceiver 설명 7.9.USB HID Demo 7.9.1.STM 라이브러리 다운로드 및 폴더 설명 7.9.2.USB HID Demonstrator 다운로드 및 설치 7.9.3.보드 구동 및 HID 시험 결과 7.9.4.USB 부분 회로 분석 7.9.5.EXTI line 18 USB Wakeup event 7.9.6.STM32 USB interface 7.9.7.STM32 USB 레지스터 설명 7.9.8.레지스터 설정 관련 예 8.RTOS porting 8.1.FreeRTOS porting 8.1.1.FreeRTOS 소스 다운로드 8.1.2.FreeRTOS 일반 설명 8.1.3.FreeRTOS 디렉토리 및 파일 설명 8.1.4.MANGO-Z1 포팅 - Clock 설정 8.1.5.MANGO-Z1 포팅 - GPIO 설정 8.1.6.MANGO-Z1 포팅 - main() 함수 변경 8.1.7.실행 결과 8.1.8.참고 사항 - Compiler option 8.1.9.FreeRTOS 연구 - Overview 8.1.10.FreeRTOS 연구 - portTASK_FUNCTION 8.1.11.FreeRTOS 연구 - task state 8.1.12.FreeRTOS 연구 - Inter-task Communication 8.2.uC/OS-II porting 8.2.1.uC/OS-II 소스 다운로드 8.2.2.uC/OS-II 소스들간 관계 8.2.3.WRITE_REG, READ_REG 관련 수정 8.2.4.uC/OS-II 디렉토리 구조 8.2.5.개발 환경 설정 및 빌드 8.2.6.probe_com_cfg.h 변경 사항 8.2.7.클럭 설정 변경 사항 8.2.8.LED 관련 수정 사항 설명 8.2.9.task 생성 함수 OSTaskCreateExt 설명 8.2.10.LED task 생성 및 실행 결과 8.2.11.uC/OS-II 연구 - tick 설정 8.2.12.uC/OS-II 연구 - Critical Sections 8.2.13.uC/OS-II 연구 - task state 8.2.14.uC/OS-II 연구 - Scheduling Lock/Unlock, Task Suspend/Resume 8.2.15.uC/OS-II 연구 - Semaphore 8.2.16.uC/OS-II 연구 - Message Mailbox Appendix 참고 문서 참고 Sites Mango-M32 회로도 1 Mango-M32 회로도 2 Mango-M32 회로도 3 Mango-M32 회로도 4 Mango-Z1 회로도 1 Mango-Z1 회로도 2 Mango-Z1 회로도 3 Mango-Z1 회로도 4 색인 |
|
1장. Introduction
ARM Architecture History, Cortex Family 개요 및 특징 2장. Cortex-M3 Architecture Cortex-M3 block diagram, Registers, Memory Map Thumb-2 Instruction Set Architecture (ISA) Exceptions and Interrupts, NVIC (Nested Vectored Interrupt Controller) 3장. STM32 CPU 특징 STM32F103xx Device overview, block diagram, Memory mapping Booting mode, Low-power modes, Core peripherals 4장. Hardware Manual Mango-M32, Mango-Z1 하드웨어 매뉴얼 5장. 개발 환경 구축 IAR workbench, RIDE7 환경 구축 STM Flash Loader, 터미널 프로그램 설치 6장. Mango-M32 base Firmware LED On/Off, 고급스러운 코딩 연구, Hello World 및 printf 활용, 메뉴 구성, 7-Segment, Clock Control, 정확한 1초 Delay 구현, Key Interrupt 처리 7장. Mango-Z1 base Firmware STMicroelectronics 라이브러리 적용, LED, Key, Clock, Interrupt 처리 In-Application Programming (IAP) ? BootLoader SPI 통신을 이용 CC2520 Multi-Packet RF 통신 구현, USB HID Demo 8장. RTOS porting FreeRTOS porting - MANGO-Z1 포팅: Clock, GPIO 설정, main() 함수 변경 - FreeRTOS 연구: portTASK_FUNCTION, task state, Inter-task Communication uC/OS-II porting - 클럭 설정 변경, LED 관련 수정, task 생성 OSTaskCreateExt 설명 - uC/OS-II 연구: tick 설정, Critical Sections, task state, Scheduling Lock/Unlock, Task Suspend/Resume, Semaphore, Message Mailbox |