목차 일부
서언 3
목차 5
그림 목차 15
<b>1. Introduction</b> 19
1.1. ARM Architecture History 19
1.1.1. ARM 초기 제품 19
1.1.2. ARM7TDMI Family부터 ARM9 21
1.1.3. ARM10과 ARM11 Family 23
1.2. Cortex Family 개요 26
1.2...
목차 전체
서언 3
목차 5
그림 목차 15
<b>1. Introduction</b> 19
1.1. ARM Architecture History 19
1.1.1. ARM 초기 제품 19
1.1.2. ARM7TDMI Family부터 ARM9 21
1.1.3. ARM10과 ARM11 Family 23
1.2. Cortex Family 개요 26
1.2.1. Cortex A-, R-, M-series 26
1.2.2. ARM Licenses 28
1.2.3. M0, M3, R4F, A8, A9 개요 28
1.3. ARM7 Architecture와 비교를 통한 Cortex-M3 특징 34
1.3.1. Harvard Architecture 34
1.3.2. Thumb-2 Instruction Set 35
1.3.3. Pipeline Branch Speculation 36
1.3.4. Cortex-M3 interrupt 37
<b>2. Cortex-M3 Architecture</b> 39
2.1. Cortex-M3 block diagram 39
2.2. Registers 42
2.2.1. 프로세서 모드와 Privilege levels 42
2.2.2. 스텍 42
2.2.3. Cortex-M3 Core 레지스터들 43
2.3. Thumb-2 Instruction Set Architecture (ISA) 52
2.3.1. Architecture profile 52
2.3.2. Thumb-2 52
2.4. Memory Map 55
2.4.1. 미리 정의된 Memory Map 55
2.4.2. Bit banding 56
2.4.3. 메모리 Endian 59
2.5. Exceptions and Interrupts 60
2.5.1. Exception 종류 60
2.5.2. Exception Priority & Nested 처리 61
2.5.3. ARM7, ARM9과의 비교 61
2.5.4. STM, LDM 처리시의 Interrupt 62
2.6. Nested Vectored Interrupt Controller 63
2.6.1. NVIC 특징 63
2.6.2. Tail chaining, late arrival, pop pre-emption 65
2.7. 기타 특징 68
<b>3. STM32 CPU 특징</b> 69
3.1. Features 69
3.2. STM32F103xx Device overview 72
3.3. STM32F103xx block diagram 74
3.4. Memory mapping 75
3.5. Booting mode 78
3.6. Low-power modes 80
3.7. Core peripherals 81
3.7.1. Nested vectored interrupt controller (NVIC) 81
3.7.2. System control block (SCB) 83
3.7.3. SysTick timer (STK) 84
<b>4. Hardware Manual</b> 85
4.1. Cortex-M3 기본 EVB (Mango-M32) 하드웨어 매뉴얼 85
4.1.1. Mango-M32 구조 86
4.1.2. Mango-M32 부품면 설명 87
4.1.3. Part #1 ? STM32F103xx MCU 88
4.1.4. Part #2 ? USB Connector 89
4.1.5. Part #3, #4, #5 ? RS232C 90
4.1.6. Part #6 ? 7 Segment LED 90
4.1.7. Part #7 ? BOOT Select Switch 92
4.1.8. Part #8, #9, #10 ? WKUP, USER, RESET 버튼 93
4.1.9. Part #11, #12 ? 12MHz, 32.768KHz Crystal 93
4.1.10. Part #13 ? Power LED 93
4.1.11. Part #14 ? Indicator LEDs 93
4.1.12. Part #15 ? Expansion Connector 94
4.1.13. Part #16 ? JTAG 커넥터 95
4.2. Cortex-M3 + ZigBee EVB (Mango-Z1) 하드웨어 매뉴얼 96
4.2.1. Mango-z1 부품 설명 97
4.2.2. Mango-z1 보드 구조도 97
4.2.3. Mango-z1 보드 하드웨어 99
4.2.4. User Keys 103
4.2.5. Indicator LEDs 105
4.2.6. USB 107
4.2.7. RS-232C 109
4.2.8. Power 112
4.2.9. RF Transceiver 113
4.2.10. 2.4GHz RF 114
4.2.11. Expansion Slot 115
4.2.12. JTAG 116
<b>5. 개발 환경 구축</b> 117
5.1. IAR workbench 환경 구축 117
5.1.1. Evaluation version 다운로드 117
5.1.2. IAR Embedded Workbench for ARM v.5.2 설치 118
5.2. RIDE7 환경 구축 120
5.2.1. RIDE7 다운로드 120
5.2.2. Ride7_7.30.10.0169.exe 설치 120
5.2.3. RKit-ARM_1.26.10.0130.exe 설치 122
5.2.4. RIDE7 프로젝트 구성 예제 123
5.3. STM Flash Loader 설치 124
5.4. 터미널 프로그램 설치 128
5.5. 참고 사항 - Error 사항 대처 방법 131
5.5.1. File Open error - Fatal Error[Pe005] 131
5.5.2. "assert_param" error - Error[Li005] 132
5.5.3. 빌드 Warning [Pa082] 133
<b>6. Cortex-M3 기본 Firmware 프로그래밍</b> 135
6.1. LED를 켜 보자 ? 무작정 따라하기 135
6.1.1. 폴더 구조 설정 135
6.1.2. IAR 환경 구성 및 빌드 136
6.1.3. RIDE7 환경 구성 및 빌드 144
6.1.4. Flash Download 151
6.1.5. 실행 157
6.2. 최초 프로그램 설명 159
6.2.1. LED 회로도 및 하드웨어 설명 159
6.2.2. (*(volatile unsigned *)0x40021018) |= 0x8 160
6.2.3. (*(volatile unsigned *)0x40010C04) |= 0x10 165
6.3. LED를 꺼 보자 171
6.3.1. LED 회로도 분석 171
6.3.2. 소스 파일 폴더 위치 172
6.3.3. main.c 변경 사항 172
6.3.4. 수행 결과 173
6.3.5. delay_int_count 173
6.3.6. GPIO Set Reset 레지스터 174
6.3.7. Port bit Reset register 174
6.3.8. Port bit Set Reset register 175
6.3.9. delay 시간에 관한 설명 176
6.4. 1초 delay_int_count 구현하기 177
6.4.1. 1초 delay의 정확도 177
6.4.2. delay 함수를 만드는 방법 177
6.4.3. CPU Clock에 관하여 178
6.4.4. Reset and clock control (RCC) 179
6.4.5. delay_int_count 어셈블리 코드 181
6.4.6. 1초 delay_int_count 결론 183
6.5. LED 모두 깜빡거리기 184
6.5.1. 소스 파일 폴더 위치 184
6.5.2. LED 회로도 및 위치 설명 184
6.5.3. main.c 변경 사항 185
6.5.4. GPIOB_CRL 레지스터 설정 186
6.5.5. GPIOx_BRR GPIOx_BSRR 레지스터 설정 187
6.5.6. 수행 결과 188
6.6. 고급스러운 코딩을 하자 1 190
6.6.1. 소스 파일 폴더 위치 190
6.6.2. platform_config.h 구현 - define의 활용 1 190
6.6.3. platform_config.h 구현 - define의 활용 2 193
6.6.4. GPIO_B_Output_Init 함수 구현 196
6.6.5. led.c 구현 198
6.6.6. IAR & RIDE7 빌드 201
6.6.7. 실행 결과 202
6.7. 고급스러운 코딩을 하자 2 203
6.7.1. 소스 파일 폴더 위치 203
6.7.2. 레지스터의 Address Offset - 상대 주소 지정 방식 203
6.7.3. 새로운 typedef - RCC_TypeDef 정의 205
6.7.4. GPIO_TypeDef 정의 208
6.7.5. 상대 주소 지정 방식 결론 212
6.8. Key가 눌린 것 알아채기 213
6.8.1. 소스 파일 폴더 위치 213
6.8.2. 회로도 및 보드 구성 분석 213
6.8.3. platform_config.h 변경 사항 215
6.8.4. GPIO Input mode 설정 216
6.8.5. Key Input 값 Read - GPIO Read 분석 218
6.8.6. key.c 분석 220
6.8.7. 빌드 및 실행 222
6.9. Hello World를 찍어보자 224
6.9.1. IAR에서 startup_stm32f10x_md.s 추가 224
6.9.2. GPIO_Init 분석 224
6.9.3. UART 일반 231
6.9.4. 회로도 분석 234
6.9.5. USART macro 및 typedef 분석 235
6.9.6. main 함수 검토 236
6.9.7. GPIO_Configuration 237
6.9.8. USART1_Init 238
6.9.9. USART_Init 함수 설명 244
6.9.10. UART 출력 함수 구현 250
6.9.11. 실행 결과 254
6.10. printf를 활용하자 255
6.10.1. semi-hosting 255
6.10.2. main.c 변경사항 259
6.10.3. 실행 결과 261
6.11. Get Character & 메뉴 구성 262
6.11.1. USART_FLAG_RXNE 262
6.11.2. USART_ReceiveData 구현 263
6.11.3. USART_GetCharacter 구현 263
6.11.4. 메뉴 구성 265
6.11.5. 수행 결과 267
6.12. 7-Segment Control 268
6.12.1. 회로도 분석 268
6.12.2. 7-segment 개요 268
6.12.3. GPIO 설정 및 기본 함수 구현 269
6.12.4. Seven_Segment_Test 구현 271
6.12.5. 7-segment로 숫자를 표현해 보자 272
6.12.6. 실행 결과 275
6.13. Clock Control 276
6.13.1. 회로도 및 클럭 소스 분석 276
6.13.2. Enable HSE 277
6.13.3. Flash access Latency 설정 278
6.13.4. HCLK, PCLK1, PCLK2 설정 280
6.13.5. PLL 설정 282
6.13.6. PLL ON 284
6.13.7. System clock switch 설정 285
6.13.8. 소스 코드 변경 사항 설명 286
6.13.9. LED Test 성능 비교 287
6.14. RCC_GetClocksFreq 구현 289
6.14.1. RCC_ClocksTypeDef 정의 289
6.14.2. SYSCLK_Frequency 구하기 289
6.14.3. HCLK_Frequency 구하기 292
6.14.4. PCLK1_Frequency 구하기 293
6.14.5. PCLK2_Frequency 구하기 294
6.14.6. ADCCLK_Frequency 구하기 295
6.14.7. System_Information 변경 사항 295
6.14.8. 수행 결과 296
6.15. 정확한 1초 Delay 구현 297
6.15.1. Cortex-M3 Exception 개요 297
6.15.2. STM32F10xxx Vector table 300
6.15.3. System Control Space 분석 303
6.15.4. NVIC Vector Table 설정 305
6.15.5. SysTick Configuration 307
6.15.6. Exception priority 311
6.15.7. NVIC_SetPriority 설정 313
6.15.8. SysTick interrupt handler 설정 317
6.15.9. 실행 결과 319
6.16. Key Interrupt 처리 320
6.16.1. 실행 결과 320
6.16.2. External interrupt/event controller (EXTI) 개요 321
6.16.3. NVIC Configuration 분석 324
6.16.4. EXTI Configuration 335
6.16.5. EXTI0_IRQHandler 342
<b>7. Cortex-M3 및 802.15.4 ZigBee 통신 프로그래밍</b> 345
7.1. Hello World 345
7.1.1. STMicroelectronics 라이브러리 적용 345
7.1.2. Hello World 빌드 - IAR case 348
7.1.3. Hello World 빌드 - RIDE7 case 352
7.1.4. 소스 분석 353
7.1.5. 수행 결과 357
7.1.6. 라이브러리 폴더 위치 변경 357
7.2. 메뉴 구성 및 LED & Key Control 360
7.2.1. USE_FULL_ASSERT - debug 부분 360
7.2.2. 소스 코드 변경 사항 365
7.2.3. RCC Get Clocks Frequency 367
7.3. Clock Control 369
7.3.1. 소스 변경 사항 369
7.3.2. 실행 결과 371
7.3.3. System Init 함수 설명 372
7.3.4. SetSysClock() 함수 설명 376
7.3.5. SetSysClockTo72() 함수 설명 376
7.4. 정확한 1초 Delay 구현 및 Key Interrupt 처리 379
7.4.1. 빌드 환경 추가 파일들 379
7.4.2. Interrupt Handler 구현 379
7.4.3. 소스 변경 사항 380
7.4.4. 실행 결과 383
7.5. In-Application Programming (IAP) - BootLoader 384
7.5.1. AN2557 다운로드 384
7.5.2. IAP 개요 385
7.5.3. IAP code 개요 386
7.5.4. IAP code 알고리즘 387
7.5.5. STM 라이브러리 사용 389
7.5.6. IAP project 소스 변경 내역 390
7.5.7. IAP 실행 399
7.5.8. User Program 만들기 1 - binary_template 399
7.5.9. IAP YModem Download 403
7.5.10. User Program 만들기 2 - Z1.Src004.KeyInterrupt 406
7.6. SPI 통신을 이용 CC2520 Chip ID 읽기 409
7.6.1. CC2520 2.4 GHz RF transceiver 410
7.6.2. CC2520 관련 자료 다운로드 410
7.6.3. 망고 Z1 회로도 분석 412
7.6.4. SPI (Serial Peripheral Interface) 통신 414
7.6.5. CC2520 레지스터 초기화 418
7.6.6. ZigBee_Test 프로그램 설명 428
7.6.7. SPI 초기화 428
7.6.8. CC2520 RF 초기화 433
7.6.9. Get Chip ID & Version 440
7.6.10. 빌드 및 실행 결과 442
7.7. One byte RF 통신 구현 444
7.7.1. 레지스터 값 출력 함수 구현 444
7.7.2. RF Channel 설정 446
7.7.3. PAN (Personal Area Network) ID & Short Address 설정 448
7.7.4. GPIO 0 Exception 설정 450
7.7.5. 초기 레지스터 설정 값 변경 사항 455
7.7.6. appSwitch Tx application 설명 456
7.7.7. appLight Rx application 설명 457
7.7.8. basicRfRxFrmDoneIsr() 함수 설명 458
7.7.9. 실행 결과 459
7.8. Multi-Packet Transmit 통신 구현 462
7.8.1. 실행 결과 462
7.8.2. 전송 패킷 & PER 계산 structure 구조 463
7.8.3. perTest_appTransmitter 설명 464
7.8.4. perTest_appReceiver 설명 468
7.9. USB HID Demo 471
7.9.1. STM 라이브러리 다운로드 및 폴더 설명 471
7.9.2. USB HID Demonstrator 다운로드 및 설치 472
7.9.3. 보드 구동 및 HID 시험 결과 473
7.9.4. USB 부분 회로 분석 480
7.9.5. EXTI line 18 USB Wakeup event 482
7.9.6. STM32 USB interface 484
7.9.7. STM32 USB 레지스터 설명 485
7.9.8. 레지스터 설정 관련 예 497
<b>8. RTOS porting</b> 503
8.1. FreeRTOS porting 503
8.1.1. FreeRTOS 소스 다운로드 503
8.1.2. FreeRTOS 일반 설명 504
8.1.3. FreeRTOS 디렉토리 및 파일 설명 506
8.1.4. MANGO-Z1 포팅 - Clock 설정 510
8.1.5. MANGO-Z1 포팅 - GPIO 설정 511
8.1.6. MANGO-Z1 포팅 - main() 함수 변경 514
8.1.7. 실행 결과 519
8.1.8. 참고 사항 - Compiler option 521
8.1.9. FreeRTOS 연구 - Overview 523
8.1.10. FreeRTOS 연구 - portTASK_FUNCTION 526
8.1.11. FreeRTOS 연구 - task state 527
8.1.12. FreeRTOS 연구 - Inter-task Communication 528
8.2. uC/OS-II porting 538
8.2.1. uC/OS-II 소스 다운로드 539
8.2.2. uC/OS-II 소스들간 관계 542
8.2.3. WRITE_REG, READ_REG 관련 수정 543
8.2.4. uC/OS-II 디렉토리 구조 544
8.2.5. 개발 환경 설정 및 빌드 545
8.2.6. probe_com_cfg.h 변경 사항 546
8.2.7. 클럭 설정 변경 사항 548
8.2.8. LED 관련 수정 사항 설명 548
8.2.9. task 생성 함수 OSTaskCreateExt 설명 552
8.2.10. LED task 생성 및 실행 결과 557
8.2.11. uC/OS-II 연구 - tick 설정 562
8.2.12. uC/OS-II 연구 - Critical Sections 564
8.2.13. uC/OS-II 연구 - task state 570
8.2.14. uC/OS-II 연구 - Scheduling Lock/Unlock, Task Suspend/Resume 571
8.2.15. uC/OS-II 연구 - Semaphore 571
8.2.16. uC/OS-II 연구 - Message Mailbox 574
Appendix 577
참고 문서 577
참고 Sites 577
Mango-M32 회로도 1 578
Mango-M32 회로도 2 579
Mango-M32 회로도 3 580
Mango-M32 회로도 4 581
Mango-Z1 회로도 1 583
Mango-Z1 회로도 2 584
Mango-Z1 회로도 3 585
Mango-Z1 회로도 4 586
색인 589
서평 (0 건)
*주제와 무관한 내용의 서평은 삭제될 수 있습니다.
서평 제목에는 특수기호 사용을 제한합니다.
서평추가