임베디드 스터디 - JTAG
임베디드 하드웨어 디버그 인터페이스인 JTAG을 학습한다. Boundary Scan 탄생 배경, IEEE 1149.1 표준, TCK·TDI·TDO·TMS·TRST 신호선 역할, Daisy Chain 다중 칩 연결 구조, TAP 컨트롤러 FSM 동작을 다룬다.
임베디드 하드웨어 디버그 인터페이스인 JTAG을 학습한다. Boundary Scan 탄생 배경, IEEE 1149.1 표준, TCK·TDI·TDO·TMS·TRST 신호선 역할, Daisy Chain 다중 칩 연결 구조, TAP 컨트롤러 FSM 동작을 다룬다.
임베디드 DMA와 주변장치(Peripheral)를 학습한다. DMA 동작 방식(Burst·Cycle-Steal·Transparent), 입출력 버퍼링(Single·Double·Ring Buffer), GPIO·UART·SPI·I2C·Timer·ADC 비교, CAN 차동 신호 및 중재 방식, PCIe Lane 구조와 TLP 계층을 다룬다.
임베디드 IO 인터페이스를 학습한다. MMIO vs PMIO 접근 전략 비교, 폴링 vs 인터럽트 방식 차이, 인터럽트 벡터 테이블(IVT) 구조, NVIC의 우선순위·Nesting·Pending 관리, 그리고 Linux poll/epoll과 하드웨어 폴링의 계층적 차이를 다룬다.
임베디드 C의 포인터와 어레이 연산을 학습한다. 포인터 연산과 어레이의 동질성, 어레이 vs 포인터 차이, 이중 포인터·void 포인터·NULL 포인터·허상 포인터·함수 포인터의 개념과 임베디드 활용 방법을 다룬다.
MMU와 가상 메모리를 학습한다. 페이지 테이블을 통한 가상·물리 주소 변환, TLB의 역할, MPU와의 차이, 페이징·프레임 구조, 그리고 페이지 폴트 발생 시 OPT·LRU·FIFO 교체 알고리즘을 다룬다.
캐시 메모리의 동작을 학습한다. 캐시 엔트리·히트·미스 개념, Direct·Set-Associative·Full-Associative 매핑 방식, LRU·FIFO·랜덤 교체 정책, 그리고 Write-through와 Write-back 쓰기 정책을 다룬다.
메모리 계층구조를 학습한다. 레지스터부터 보조기억장치까지의 계층 구성, L1·L2·L3 캐시의 역할, 공간 지역성 기반의 캐시 라인과 시간 지역성 기반의 LRU 교체 정책을 다룬다.
임베디드 C의 데이터 타입과 메모리 레이아웃을 학습한다. stack·heap·.data·.bss·.rodata 섹션 구분, stdint.h 기반 명시적 정수 타입 사용, Stack·Static·Heap 용도별 비교, 그리고 부팅 시 Reset_Handler부터 main() 실행까지의 스타트업 절차를 다룬다.
ARM CPU 아키텍처를 학습한다. Cortex-M/A/R 계열 구분, ARMv4~v8 버전별 주요 ISA 변화, USR·Privileged 동작 모드 체계, 그리고 함수 호출 규약(AAPCS)을 다룬다.
임베디드 C에서 volatile과 const의 역할을 학습한다. 레지스터 캐싱 방지·재배치 방지·Dead-Store 제거 방지 등 volatile의 세 가지 역할, 포인터와의 조합 방식, const의 ROM 배치 활용, 그리고 MISRA C 관련 규정을 다룬다.