Modern Embedded Recipes
Modern Embedded Recipes — 모던 임베디드 실전 레시피 시리즈 소개
HW interface 기초부터 ARM·빌드·드라이버·peripheral·RTOS·Linux·메모리·동시성·디버깅·FPGA·Edge AI까지 임베디드 12 Part 종합 cookbook 148편.
디지털 신호 기초 — Voltage Level·Edge·Setup/Hold 분석
Voltage level·rise/fall time·noise margin·신호 무결성의 기본기.
임베디드 클럭과 타이밍 — Skew·Jitter·PLL·MMCM 분석
PLL·jitter·skew·setup/hold time — 디지털 시스템의 모든 동작의 근간.
GPIO 내부 구조 분해 — Push-Pull·Open-Drain·Schmitt Trigger
Push-pull·open-drain·pull-up/down·drive strength·slew rate.
UART 하드웨어 동작 분석 — Baud Rate·Framing·FIFO
Baud·framing·parity·FIFO·RS-232 레벨까지 UART 회로의 동작 원리.
SPI 하드웨어 분석 — Clock Mode·MOSI/MISO·Chip Select
MOSI/MISO/SCK/CS·CPOL/CPHA 4 모드·daisy-chain·high-speed signal 고려사항.
I2C 하드웨어 분석 — Open-Drain·Clock Stretching·Arbitration
SDA/SCL·7/10-bit addressing·ACK/NACK·clock stretching·풀업 크기 선정.
ADC 동작 원리 — SAR·Sigma-Delta·Pipelined 비교
Sampling·quantization·SAR vs sigma-delta·SNR·ENOB·aliasing.
DAC 동작 원리 — R-2R Ladder·Sigma-Delta·Settling Time
R-2R·delta-sigma DAC·glitch energy·monotonicity.
PWM 신호 생성 분석 — Duty·Frequency·Dead Time·Center-Aligned
Duty·frequency·dead-time·center-aligned·complementary 출력.
CAN 버스 전기적 특성 — Differential·Termination·Dominant/Recessive
CAN_H/CAN_L 차동 신호·120Ω termination·1Mbit 한계.
RS-485·RS-422 차동 신호 분석 — Termination·Biasing·Topology
Multi-drop·terminating·fail-safe biasing·노이즈 강한 환경.
LVDS 차동 신호 분석 — Common-Mode·Impedance·Eye Pattern
고속 차동 신호 (LVDS·LVPECL·CML)·impedance matching.
ARM Cortex-M 시리즈 비교 — M0·M3·M4·M7·M33·M55 분석
M0/M0+/M3/M4/M7/M33/M55/M85 — 어느 코어를 언제 쓰나.
ARM Cortex-A 시리즈 비교 — A53·A55·A72·A78·X1 분석
A53/A72/A78/Neoverse — 임베디드 Linux용 application 코어.
ARM 레지스터 구조 분석 — R0~R15·CPSR·SPSR·Banked Registers
R0-R15·xPSR·CONTROL·PRIMASK·BASEPRI — register set 전체 지도.
Cortex-M 예외 처리 — Vector Table·NVIC·Tail-Chaining 추적
NVIC·vector table·tail-chaining·late-arrival의 hardware 기반.
ARM 메모리 맵 분석 — Normal·Device·Strongly-Ordered Region
Code·SRAM·Peripheral·System 영역 — bitband·MPU 활용.
ARM L1·L2 캐시 분석 — Set Associative·Inclusive·Maintenance
I-Cache/D-Cache·write-through vs write-back·invalidate/clean.
ARM MPU 활용 — Region·Attribute·Privilege Separation
Region setup·attributes·fault analysis — 메모리 보호의 실전.
ARM MMU 기초 분석 — Translation Table·TLB·ASID
Page table·TLB·virtual address·Linux의 4-level paging.
ARM TrustZone-M 기초 — Secure/Non-Secure·NSC·MPC
Cortex-M33의 Secure/Non-Secure 분리·SAU/IDAU·NSC.
ARM Memory Barrier 실전 — DMB·DSB·ISB·DMA·MMIO
ARM memory barrier 실전. DMB/DSB/ISB 사용 시점. DMA·MMIO·self-modifying code.
임베디드 크로스 컴파일러 분석 — GCC·Clang·Sysroot 구성
arm-none-eabi-gcc/clang — 호스트와 타겟이 다른 컴파일러 체인.
C 컴파일 4단계 — Preprocess·Compile·Assemble·Link 추적
Preprocess·compile·assemble·link — `-E -S -c` 분해.
ELF 파일 구조 분석 — Section·Segment·Symbol Table·DWARF
Header·sections·symbols — `readelf`로 dissect.
링커 스크립트 기초 — SECTIONS·MEMORY·entry point
MEMORY·SECTIONS·alignment·기본 layout.
링커 스크립트 고급 — Overlay·BSS·init_array·LMA/VMA
LMA vs VMA·KEEP·AT>·overlay·custom section.
임베디드 스타트업 코드 분석 — Reset_Handler·Vector Table·SystemInit
Reset_Handler·vector table·__libc_init_array·main 진입.
C 런타임 crt0 분석 — Stack·BSS Zero·Data Copy·atexit
crt0·.data 복사·.bss 클리어·ctors·atexit.
임베디드 메모리 레이아웃 — .text·.rodata·.data·.bss·.heap·.stack
Stack/heap/static — 누가 어디 사는가.
임베디드 컴파일러 최적화 분석 — -O0~-O3·-Os·-LTO 비교
-O0/-O1/-O2/-O3/-Os/-Og — 옵션별 차이와 디버깅 가능성.
Map 파일 분석 — Symbol·Section·Size 추적으로 코드 크기 진단
메모리 사용·심볼 위치·dead code 추적.
Make·CMake 크로스 컴파일 — Toolchain File·Sysroot 통합
Embedded 빌드 시스템 — toolchain file·target_link_options.
임베디드 Bootloader 체인 — BootROM·SPL·U-Boot·Kernel·Secure Boot
Cortex-A 부팅 단계. BootROM → SPL → U-Boot → Linux. Secure boot, FIT image, A/B.
첫 bare-metal 프로그램 작성 — Linker·Startup·main의 최소 구성
LED toggle — 최소한의 startup·main·loop.
MMIO 레지스터 직접 접근 — volatile·Memory Map·Aliasing 분석
volatile·MMIO·packed struct — peripheral register 다루기.
GPIO 드라이버 직접 구현 — STM32 HAL 없이 레지스터로
Mode/speed/pull/AF — STM32 기준 register-level driver.
임베디드 클럭 설정 분석 — HSE·PLL·SYSCLK·AHB/APB 분주
HSE/HSI·PLL·peripheral clock enable — 코어/주변기기 클럭 트리.
Cortex-M 인터럽트 핸들링 — NVIC·Priority·Vector·EXTI
NVIC 설정·ISR 작성·prologue/epilogue·priority.
SysTick 타이머 활용 — 24-bit Counter·1ms Tick·delay 구현
1ms tick·delay·jiffies — RTOS 없이 시간 처리.
UART 드라이버 구현 — polling·interrupt·DMA 3가지 방식 비교
3가지 모드의 trade-off — CPU 사용량·latency·throughput.
SPI 드라이버 구현 — Master·Slave·CRC·DMA
Master/slave·CPOL/CPHA·DMA·multi-slave CS.
I2C 드라이버 구현 — Master·7-bit/10-bit·Clock Stretching 처리
Master·repeated start·NACK 처리·timeout.
임베디드 DMA 기초 — Memory-to-Memory·Peripheral·Circular Mode
Channel·trigger·half/full complete·circular·memory-to-memory.
저전력 모드 분석 — Sleep·Stop·Standby·Wake-up Source
Sleep/Stop/Standby·wake-up source·전류 측정.
IWDG·WWDG 워치독 구현 — Independent vs Window 비교
Independent vs Window·refresh 전략·debug 모드 freeze.
임베디드 Flash 프로그래밍 — Erase·Program·Read While Write
내부 erase/write·dual bank·EEPROM emulation.
DDR 초기화 실패 진단 — Timing·Calibration·Walking Bit Test
DDR3/4 초기화 sequence. ZQ calibration, write leveling, walking bit test, JESD79 사양.
PWM 출력 실전 — LED 밝기·모터 속도 제어
Timer로 PWM 생성·duty 변경·complementary 출력.
DC 모터 제어 — H-Bridge·PWM Duty·Encoder Feedback
H-bridge·PWM·방향·역기전력 보호.
스테퍼 모터 제어 — Full Step·Half Step·Microstepping
Full-step·half-step·micro-step·가속/감속 프로파일.
서보 모터 제어 — PWM 1ms~2ms·Closed Loop·PID
PWM-based 제어 (50Hz, 1~2ms duty)·각도 매핑.
Character LCD 제어 — HD44780·4-bit Mode·Custom Char
4/8-bit 모드·command·custom character·timing 준수.
SPI OLED 제어 — SSD1306·Frame Buffer·Page 단위 갱신
128×64 OLED·framebuffer·page mode·partial update.
TFT 디스플레이 구동 — RGB565·FSMC·LTDC·DMA2D
Parallel RGB·framebuffer·LTDC·tearing 방지.
환경 센서 활용 — BME280 온습압·SHT3x·BMP180 비교
BME280·SHT3x — I2C·SPI 센서 driver 패턴.
IMU 센서 활용 — MPU6050·LSM6DSO·Sensor Fusion
MPU6050·BMI270 — sensor fusion 입력 단계.
CAN 통신 구현 — bxCAN·Filter·Mailbox·CAN-FD
Frame format·filter·bit timing·error frame.
USB Device 기초 — Descriptor·Enumeration·Endpoint·HID/CDC
CDC·HID class — STM32 USB stack 활용.
Ethernet MAC+PHY 통합 — RMII·lwIP·DMA Descriptor
RMII·MDIO·lwIP raw API·DHCP·HTTP server.
SD Card + FatFs 구현 — SPI/SDIO 모드·CSD/CID·Wear
SPI 모드 vs SDIO·FatFs port·long filename.
RTC 활용 — Calendar·Alarm·Wake-up Timer·Backup Domain
Battery backup·alarm·calendar·tamper.
RTOS 도입 결정 분석 — Super Loop vs RTOS 트레이드오프
Super-loop와 RTOS의 분기점, RAM/Flash 비용, 디버깅 복잡도, 결정 기준을 한 자리에 정리합니다.
RTOS Task 설계 패턴 — 우선순위·스택·State Machine
Periodic, event-driven, state machine 세 가지 task 패턴과 priority 산정 기준을 정리합니다.
RTOS Scheduler 동작 분석 — Tick·Context Switch·Yield
Preemptive와 cooperative, time-slice, context switch 비용, tickless idle까지 scheduler가 실제로 어떻게 도는지 정리합니다.
RTOS Semaphore 활용 — Binary·Counting·ISR Give
Binary semaphore signaling, counting semaphore resource pool, ISR-to-task wake-up 패턴을 정리합니다.
RTOS Mutex 활용 — Recursive·Priority Inheritance 적용
Mutex와 binary semaphore의 차이, priority inheritance, recursive lock, timeout, ownership 규칙을 정리합니다.
RTOS Queue 활용 — By-Value·By-Reference·Timeout 패턴
RTOS queue로 producer-consumer를 구성하고, by-value vs by-pointer, backpressure, zero-copy queue까지 정리합니다.
RTOS Event Group 활용 — Bit Wait·Sync·Notify
Event group bit, set/clear, AND/OR 조건 wait, broadcast로 다중 task synchronization을 정리합니다.
RTOS Software Timer 활용 — One-shot·Auto-reload·Daemon Task
Software timer와 hardware timer의 분기점, one-shot/auto-reload, timer task context, delete 시 race를 정리합니다.
ISR-Safe API 설계 — Reentrant·Atomic·Defer 패턴
ISR 안전 함수 작성. Reentrant, atomic 변수, deferred work, FromISR variant.
Priority Inversion 진단·예방 — Mars Pathfinder Lesson 추적
Priority Inversion 발생 시나리오. Mars Pathfinder 사례. PI mutex, Priority Ceiling.
Timer Wheel 분석 — Hashed·Hierarchical·O(1) Tick
Timer wheel 자료구조. Hashed wheel·hierarchical wheel·O(1) tick·Linux jiffies.
RTOS 디버깅 기법 — Tracealyzer·SystemView·Stack 추적
Stack high-water mark, overflow hook, deadlock 탐지, heap 분석, trace 도구까지 RTOS 디버깅을 한 자리에 정리합니다.
임베디드 Linux 부팅 흐름 분석 — BootROM·U-Boot·Kernel·init
BootROM, SPL, U-Boot, Kernel, Init까지 각 단계의 책임과 ATF/OP-TEE, initramfs, init 시스템 선택을 정리합니다.
U-Boot 활용 — bootcmd·env·tftp·boot.scr 분석
U-Boot environment, script, bootcmd, TFTP/Fastboot, UEFI 모드까지 현장에서 쓰는 패턴을 정리합니다.
Device Tree 실전 — DTS·DTB·Overlay·Phandle 추적
Device Tree Source 문법. DTC 컴파일. Overlay로 dynamic 변경. Linux driver match.
Device Tree Overlay 적용 — Runtime fragment·dtoverlay
DT overlay의 fragment, target, symbol, dtoverlay 명령, Raspberry Pi 적용 예까지 동적 device 활성화를 정리합니다.
임베디드 커널 빌드 — defconfig·menuconfig·Image·zImage
Kernel source, defconfig, menuconfig, cross-compile, module 빌드, deb/rpm 패키징까지 KBuild 전 과정을 정리합니다.
커널 모듈 기초 — init/exit·Parameter·KBuild·DKMS
Linux kernel module의 진입점, 모듈 파라미터, KBuild Makefile, insmod 흐름, DKMS 배포까지 한 번에 정리합니다.
캐릭터 드라이버 작성 — file_operations·cdev·register_chrdev
file_operations, cdev, minor 번호, copy_to/from_user, blocking I/O, misc device 단축 경로까지 character driver의 표준 패턴을 정리합니다.
Platform 드라이버 작성 — probe·remove·of_match·DT 바인딩
platform_driver_register, of_match_table, probe/remove, devm_* 자원 관리, IRQ와 MMIO 획득까지 platform driver의 표준 패턴을 정리합니다.
mmap 4가지 모드 — Anonymous·File·Shared·Huge Page
mmap의 네 가지 사용 모드와 madvise·MAP_HUGETLB·mlock을 코드와 측정값으로 정리합니다.
epoll 실전 — LT·ET·ONESHOT·EXCLUSIVE 비교
select·poll의 한계와 epoll의 트리거 모드, ONESHOT·EXCLUSIVE 플래그를 코드와 성능으로 비교합니다.
UIO·VFIO 분석 — User-Space Driver와 IOMMU 격리
UIO·VFIO로 user space에서 hardware를 다루는 방법, IOMMU 기반 DMA 안전성, DPDK·SPDK 사용 패턴을 정리합니다.
sysfs·configfs 활용 — kobject 기반 User 인터페이스
sysfs attribute, attribute group, configfs로 user space에서 driver를 제어하는 표준 패턴을 정리합니다.
IRQ Affinity 튜닝 — smp_affinity·isolcpus·irqbalance
IRQ를 코어에 고정하는 방법과 isolcpus·irqbalance·threaded IRQ의 상호작용을 측정과 함께 정리합니다.
루트 파일시스템 구축 — Buildroot 기초·Package·Toolchain
Buildroot 설정, package 추가, post-build script, toolchain 선택, Yocto와의 trade-off를 정리합니다.
임베디드 동적 메모리 — malloc 위험·결정성·대안 분석
Malloc의 fragmentation과 비결정성, pool/arena/slab 대안, FreeRTOS heap_4/5와 정적 대안까지 임베디드의 메모리 전략을 정리합니다.
메모리 정렬과 패딩 분석 — Natural·Strict Alignment·Trap
Natural alignment, struct padding 규칙, packed의 unaligned access penalty, offsetof와 alignof 사용을 정리합니다.
Cache Line Alignment — alignas·Padding·SoA 적용
Cache line 정렬과 false sharing 회피, hot/cold 분리, SoA 변환을 코드와 측정으로 정리합니다.
DMA-Friendly Allocator — dma_alloc_coherent·IOMMU·Pool
DMA buffer 할당 패턴을 coherent와 streaming, CMA, IOMMU, MPU non-cacheable 영역으로 나눠 정리합니다.
Zero-Copy Pipeline — DMA-BUF·sendfile·io_uring·splice
Camera→GPU→Encoder→Network pipeline에서 memcpy를 모두 제거하는 패턴을 모았습니다.
NUMA Memory Topology — numactl·numa_alloc·HBM 적용
NUMA node topology, numactl 운영, libnuma API, HBM/CXL tier, 자동차 ECU의 mini-NUMA까지 정리합니다.
SIMD 활용 분석 — Intrinsics·Auto-Vectorization·OpenMP SIMD
Auto-vectorize, intrinsics, OpenMP SIMD pragma 세 갈래를 데이터 layout과 함께 정리합니다.
ARM NEON 심화 — Matrix Multiply·FFT·Image Filter 적용
NEON 실전 사례를 matrix multiply, color conversion, box filter, Sobel, FFT, crypto로 묶어 정리합니다.
임베디드 스택 분석 — high-water·overflow 탐지
Stack 패턴 채우기로 high-water mark, overflow hook, canary, MPU guard region, RTOS task stack 분석을 한 자리에 정리합니다.
임베디드 코드 크기 최적화 — -Os·LTO·Section Garbage Collection
-Os, LTO, function-sections, --gc-sections, strip, newlib-nano, printf-tiny까지 펌웨어 binary 크기를 줄이는 단계별 기법을 정리합니다.
임베디드 전력 최적화 — Sleep Mode·Clock Gating·DVFS
Active와 sleep, peripheral clock gating, DVFS, tickless idle, µA-level 측정까지 임베디드 전력 절감 기법을 정리합니다.
WCET 분석 기법 — Static·Measurement·Hybrid 방법론
WCET와 ACET의 차이, 측정 기반과 static analysis, cache 영향, hard real-time 요구사항을 정리합니다.
Lock-Free Ring Buffer 구현 — SPSC·Power-of-2·Memory Order
SPSC ring 구현. Power-of-2 size, head/tail atomic, memory order release/acquire.
Wait-Free Signaling — Atomic Flag·Sequence·Latest-Value
Wait-free 보장 patterns. Atomic flag, sequence number, latest-value (double buffer).
RCU (Read-Copy-Update) 기초 — Quiescent State·Grace Period
RCU 원리, rcu_read_lock, grace period, synchronize_rcu, 임베디드 적용(URCU)을 정리합니다.
Hazard Pointer 분석 — Lock-Free Memory Reclamation
Lock-free 메모리 회수, ABA 회피, RCU와의 비교, C++ proposal까지 hazard pointer의 원리와 구현을 정리합니다.
Compare-And-Swap 패턴 — Stack·Counter·Linked List 적용
CAS loop, strong과 weak CAS, ABA 회피, exponential backoff, spurious failure까지 CAS 사용의 표준 패턴을 정리합니다.
Atomic Operation 비용 분석 — Fence·Cache Line·Contention
memory_order별 ARM 명령어 차이, LSE vs LL/SC, hot spinning 회피까지 atomic 연산의 실측 비용을 정리합니다.
Spinlock vs Mutex 결정 가이드 — Context Switch·Hold Time
Lock hold time, 코어 수, preemption, real-time 요구사항에 따라 spinlock과 mutex를 어떻게 고를지 ticket lock과 MCS lock까지 함께 정리합니다.
ABA 문제 회피 — Tagged Pointer·Hazard·Generation Counter
ABA 시나리오, tagged pointer (64-bit + tag), version counter, hazard pointer 활용, 실제 사례를 정리합니다.
False Sharing 해결 — Cache Line Padding·SoA 적용
False sharing의 원리와 영향, perf c2c 감지, alignas(64) padding, per-CPU 변수, thread-local까지 해결 전략을 정리합니다.
MPMC Queue 구현 — Multi-producer Multi-consumer Lock-Free
MPMC와 SPSC 차이, Vyukov 큐, Disruptor의 ring과 sequence, bounded와 unbounded 비교를 실측과 함께 정리합니다.
임베디드 디버깅 마인드셋 — 가설·격리·재현·이분탐색
가설-검증 사이클·binary search·changelog·rubber duck — 임베디드 디버깅의 사고 도구.
JTAG·SWD 안 붙을 때 — 핀·전압·속도·세션 진단
JTAG·SWD 디버깅 체크리스트. Pin·voltage·clock·daisy chain·security 잠금.
GDB 원격 디버깅 — OpenOCD·J-Link·target remote 구성
OpenOCD·pyOCD로 target에 붙고, .gdbinit으로 반복 작업을 자동화하는 패턴을 정리합니다.
Cortex-M 하드폴트 분석 — Stacked Frame·CFSR 읽기
Cortex-M HardFault 핸들러에서 stacked PC·LR·CFSR을 추출해 정확한 fault 위치를 찾는 절차를 정리합니다.
UART 안 찍힐 때 — Bare-metal 체크리스트
UART 디버깅. 클럭·핀·baud·로직 레벨·종단·인쇄 단계별 체크.
임베디드 부팅 실패 진단 — 단계별 Isolation
전원·reset·clock·vector table·main 진입까지 단계별로 isolation하는 부팅 디버깅 절차를 정리합니다.
인터럽트 누락·중복 진단 — Priority·Pending·Re-entry 추적
NVIC pending·priority·level vs edge·shared IRQ — 인터럽트 동작 이상의 흔한 원인을 잡습니다.
메모리 오버플로우·오염 진단 — Canary·MPU·Pattern 분석
Heap canary·MPU guard·data watchpoint·desktop ASan — 임베디드 메모리 오염을 잡는 도구를 정리합니다.
타이밍·Race 진단 — Heisenbug 잡는 법
printf로 race가 사라지는 이유와 SWO/RTT·DWT 사이클 카운터·GPIO pulse로 non-intrusive하게 race를 가시화하는 방법.
통신 프로토콜 분석 — Logic Analyzer와 Protocol Decoder
Saleae·DSLogic·oscilloscope·protocol decoder로 UART/SPI/I2C/CAN 신호를 캡처·디코딩하는 실전 패턴.
임베디드 로깅 시스템 설계 — 레벨·버퍼·SWO·Deferred
임베디드 환경에서 overhead를 최소화한 로깅. 레벨 분리·circular buffer·SWO/RTT·deferred 처리 패턴.
임베디드 포스트모템 분석 — Core Dump와 Field Crash
Linux coredump·gdb 분석부터 MCU 환경의 mini-dump(Memfault)·last-gasp logging·field debug 패턴까지.
FPGA 기초 분석 — LUT·FF·BRAM·DSP 자원 구조
LUT·Flip-Flop·BRAM·DSP slice·clock region·IO bank — FPGA 구성 요소를 임베디드 관점에서 정리합니다.
Vivado 사용법 — Project·Constraint·Synth·Impl·Bitstream
Vivado project 흐름·XDC constraint·synthesis/implementation·timing report·bitstream programming의 실전 패턴.
PCIe BAR 매핑 분석 — Config Space·Enumeration·MMIO 접근
PCIe BAR (Base Address Register), enumeration, sizing, MMIO 매핑, ioremap.
AXI 인터페이스 — AXI4·AXI4-Lite·AXI-Stream 비교
AMBA AXI4·AXI4-Lite·AXI-Stream을 역할별로 구분해 사용하는 법과 burst·outstanding·deadlock 회피를 정리합니다.
Zynq PS-PL 통신 — GP·HP·ACP 인터페이스 선택
Zynq의 GP·HP·ACP·M_AXI·S_AXI 인터페이스를 latency·throughput·cache coherence 관점에서 비교합니다.
Mailbox Protocol 분석 — Host와 Accelerator를 잇는 Doorbell
Host CPU와 FPGA·NPU·보조 CPU를 잇는 mailbox 프로토콜을 register layout, doorbell IRQ, sequence·CRC, OpenAMP 비교 관점에서 정리합니다.
Command Queue·Submission Queue — NVMe·XDMA 공통 패턴
Submission/Completion Queue 패턴을 NVMe·io_uring·Xilinx XDMA·Vulkan 사례로 묶어 정리합니다. Doorbell, phase bit, multi-queue 확장까지.
DMA Completion 메커니즘 — Interrupt·Polling·Completion Ring
DMA가 끝났음을 알려주는 세 가지 방식을 비교합니다. Interrupt, polling, completion ring과 IRQ coalescing의 trade-off를 정리합니다.
PCIe Streaming 분석 — BAR Type·MSI-X·Kernel Bypass
PCIe로 streaming traffic을 다룰 때 알아야 할 BAR 종류, prefetchable 의미, MSI-X 분산, posted/non-posted 순서, kernel bypass 패턴을 정리합니다.
Vitis HLS 분석 — Pragma·Pipeline II·Dataflow 실전 감각
Vitis HLS로 C++ 코드를 RTL로 합성할 때 II=1을 끌어내는 pragma 조합, dataflow, AXI 인터페이스 결정을 실전 패턴 중심으로 정리합니다.
HLS 최적화 기법 — Pipeline·Unroll·Partition·Dataflow
Vitis/Vivado HLS의 pragma로 II=1 pipeline·array partition·dataflow를 적용해 throughput을 극대화하는 패턴.
Vitis AI 분석 — DPU·xmodel·VART
Xilinx Vitis AI로 TensorFlow/PyTorch 모델을 DPU용 xmodel로 quantize·compile하고 VART로 실행하는 흐름.
OpenCL on FPGA — Kernel·Channel·Burst Memory 분석
Intel/AMD FPGA에서 OpenCL kernel·channel·burst memory를 활용하는 패턴과 SYCL/oneAPI FPGA backend.
Intel Quartus 사용법 — Platform Designer·Nios II·HLS
Intel Quartus Prime·Platform Designer(Qsys)·Nios II soft processor·Intel HLS·partial reconfig 사용법.
Edge Inference 분석 — Cloud vs Edge·Latency·Privacy
Edge inference가 cloud 대비 언제 답인지, MCU부터 server-class edge까지 하드웨어 스펙트럼과 프레임워크 선택, 3-stage pipeline 설계를 정리합니다.
NPU 아키텍처 분석 — Ethos·Hexagon·Systolic Array 비교
Arm Ethos·Qualcomm Hexagon·Apple Neural Engine 등 NPU 내부 구조와 systolic MAC array·INT8·memory hierarchy.
딥러닝 Quantization 분석 — PTQ·QAT·INT8·INT4·Calibration
FP32→INT8/INT4 양자화의 수식, PTQ와 QAT 차이, per-channel·per-tensor 선택, LLM용 GPTQ·AWQ까지 실전 패턴을 정리합니다.
TensorRT 분석 — ONNX→Engine·FP16·INT8·DLA·Multi-Stream
NVIDIA TensorRT로 ONNX 모델을 engine으로 빌드하고 FP16·INT8·DLA·multi-stream으로 throughput을 끌어올리는 패턴을 정리합니다.
TFLite Micro 분석 — Op Resolver·Tensor Arena·Cortex-M
MCU용 TensorFlow Lite Micro의 구조, op resolver·tensor arena·CMSIS-NN integration·Ethos-U delegate.
ONNX Runtime 분석 — Execution Provider와 Cross-Platform 배포
ONNX format·ONNX Runtime의 Execution Provider (CUDA·TensorRT·DML·CoreML)·embedded build·cross-platform inference.
Edge Thermal Management — Throttling·DVFS·Fan Curve·Sustained
Edge AI 보드의 sustained 성능을 결정하는 thermal 한계. throttle trip, DVFS, fan curve, nvpmodel, passive cooling 설계를 정리합니다.
NVIDIA Jetson 분석 — Nano·Xavier·Orin·Thor·JetPack·DLA·VPI
Jetson 라인업의 power·성능 trade-off, JetPack 구성, DLA·VPI·DeepStream을 묶어 자율주행·로봇 stack에서 쓰는 패턴을 정리합니다.
Zero-Copy Camera Pipeline — V4L2·DMA-BUF·GPU Import·NPU 직결
카메라부터 NPU·display까지 한 frame이 한 physical page를 유지하도록 V4L2·DMA-BUF·EGL·CUDA를 연결하는 패턴을 정리합니다.
온디바이스 LLM 추론 — llama.cpp·GGUF·MLX·KV Cache·NPU Backend
4-bit 양자화된 LLM이 모바일·edge에서 동작하는 시대. llama.cpp/GGUF, Apple MLX, KV cache 메모리, 백엔드 선택을 정리합니다.
Cortex-M33 TF-M·TrustZone — Secure Firmware·PSA·MCUboot
Cortex-M33+ TrustZone-M 위에 TF-M으로 secure firmware를 구성하는 패턴. SPE/NSPE, PSA Crypto/ITS/Attestation, MCUboot secure boot를 정리합니다.
Matter·Thread 분석 — IoT 통합 표준·Commissioning·Multi-Fabric
Apple·Google·Amazon·Samsung이 공동으로 만든 Matter 1.3/1.4와 Thread 1.3 mesh를 합쳐 IoT device를 한 번에 모든 ecosystem에 등록하는 패턴을 정리합니다.
PCIe → CXL 진화 — 같은 PHY 위 cache-coherent 프로토콜 추가
PCIe 5.0/6.0 PHY 위에서 CXL이 어떻게 cache coherency를 얹는지 — Flex Bus, 세 프로토콜 다중화, Type 1/2/3 디바이스 구분.
QEMU CXL Type 3 디바이스 에뮬레이션 — 노트북에서 CXL 개발 환경 구축
QEMU 8.0+ CXL 지원 — 노트북에서 CXL Type 3 디바이스를 에뮬레이션해 드라이버·BIOS 개발 환경 만들기.
Linux CXL 드라이버 분석 — cxl_pci·cxl_core·region·DAX
Linux kernel 6.x의 CXL 서브시스템 — cxl_pci·cxl_core·cxl_mem·region·DAX 모듈의 역할과 probe 흐름.