ブログ


Blog

【STM32 Series #12】Optimization and Assembly — Watching C Become Machine Code, and Becoming a Strong Embedded Engineer

The compiler transforms code while preserving meaning — but forget volatile and it changes the meaning too. See how assembly changes between -O0 and -O2 with objdump, and close out 12 episodes with the ‘conditions for embedded mastery.’

作成: 2026-05-08
Blog

【STM32 Series #11】 — Linker Scripts and Map Files: What .text/.data/.bss Really Are, and How to See Your Memory Usage

“RAM is full!” “A variable is changing on its own…” The answer is in the map file. This episode covers what .text/.data/.bss really are, how to read a linker script, how to stop stack overflows — and what the 512,000-line Claude Code leak teaches us about map file hygiene.

作成: 2026-05-02
Blog

【STM32 Series #10】The DMA Idea — Understanding the Transfer Architecture That Makes the CPU Idle

Stop having the CPU send bytes one at a time — let DMA handle everything. By DMA-ifying UART transmission, the CPU is freed to do real work. Episode 10 builds intuition for throughput, latency, and bus contention.

作成: 2026-04-30
Blog

[STM32 Series #9] Interrupt Design Anti-Patterns — Learn ISR Pitfalls by Deliberately Breaking Things

printf in ISR, missing volatile, heavy processing, forgotten flag clear — we deliberately trigger every classic embedded landmine and watch them fail. Applies to Arduino, ESP32, Renesas, PIC — every MCU with interrupts.

作成: 2026-04-26
Blog

STM32 Series #8: Understanding Interrupts — Vector Table, NVIC, Context Saving, and TIM2 Implementation

Why does polling fail when you need to ‘do something every 1ms’? Understand the vector table, NVIC, and context saving — then implement a 1ms periodic event with TIM2 interrupts.

作成: 2026-04-17
Blog

STM32 Series #7: The World of Time — Knowing the Weight of a Single Cycle

How many CPU cycles does ‘wait 1 second’ actually consume? Learn to measure execution time in µs using DWT CYCCNT, and internalize the embedded engineer’s iron rule: ‘you can’t discuss it without measuring it.’

作成: 2026-04-08
Blog

STM32 Series #6: The Complete Pointer Accident Handbook — How and Why Things Break

NULL dereference, dangling pointers, out-of-bounds array access, undefined behavior — we deliberately trigger the classic pointer land mines of embedded development and observe them under the debugger. Knowing how things break is the most powerful way to learn.

作成: 2026-03-28
Blog

STM32 Series #5: Pointers = Addresses with Types — Turning Pointers into a Weapon

Demystify C’s most feared concept — pointers — from the core principle of ’typed addresses.’ What casts mean, how memory-mapped I/O connects to pointers, and what CMSIS headers are actually doing. Stop fearing pointers and start using them as a weapon.

作成: 2026-03-25 ・ 更新: 2026-03-29
Blog

KiCad 10.0 New Features: Allegro/PADS Importers, Design Variants, Graphical DRC

KiCad 10.0 (March 2026): Allegro/PADS/gEDA importers, Design Variants, graphical DRC editor, time-domain track tuning, PCB Design Blocks, and more. Complete feature breakdown with V9 migration guide and 10.0.1 bugfix notes.

作成: 2026-03-20 ・ 更新: 2026-05-09
Blog

STM32 Series #4: The World of Bits — Register Operations and the BSRR Design

From mask/shift basics to the RMW problem to STM32’s elegant BSRR design. Learn to read registers as bit collections, practice register-direct LED blinking through GPIO, and measure the speed difference between HAL and direct register access.

作成: 2026-03-14
Blog

STM32 Series #3: How C Represents Memory — Arrays, Structs, and Padding

Use the STM32 debugger Memory view to observe struct padding and alignment in C. See why sizeof() doesn’t always equal the sum of member sizes, learn how to reduce RAM usage by reordering members, and understand volatile through actual byte-level inspection.

作成: 2026-03-06 ・ 更新: 2026-03-12
Blog

STM32 Series #2: Where Variables Live — Flash, RAM, and the Stack

C variable declarations (const, global, local) determine which memory region data lands in. Use the debugger to verify actual addresses and understand the difference and purpose of Flash, SRAM, and the Stack.

作成: 2026-03-01
Blog

STM32 Series #1: The Microcontroller Is an "Address World" — Understanding Hardware Through Coordinates

Use the STM32CubeIDE debugger to observe the microcontroller’s internal state as your program runs. Understand the physical ‘address’ coordinates underlying C code — program counter, memory map, register writes — and experience the embedded address world through real measurements.

作成: 2026-02-23
Blog

RTX PRO 4000 Blackwell Benchmark: AI Inference 5.47× Faster, Blender 2.29× — Full Review vs RTX A4000

Real-world benchmarks of the RTX PRO 4000 Blackwell: AI inference 5.47× faster, Blender 2.29×, Stable Diffusion 1.65× over the RTX A4000. Full data including Llama 3.1 8B logs, SPECviewperf 2020, Geekbench 6 OpenCL, and FF14 — plus RTX 4090 comparison and standard vs SFF model guide.

作成: 2026-02-22 ・ 更新: 2026-03-14
Blog

STM32 Series #0: Why Embedded Programming Looks Hard — Place and Time

Embedded programming looks hard because it requires awareness of ‘place’ (memory) and ’time’ (execution timing). What does it mean to operate hardware directly without an OS protecting you? This article explains the core mental model.

作成: 2026-02-17
Blog

Full 13-Part Series: The Embedded World Beyond Pointers — Memory and Time in STM32 Programming

The next step after Arduino! Serious embedded programming with the STM32 microcontroller. Addresses, bits, and time — understand the essence of embedded systems step by step, building a solid mental model that applies to any platform.

作成: 2026-02-12 ・ 更新: 2026-04-08
Blog

Arduino IR Remote Control: Receive & Decode Signals with IRremote Library

Receive and decode IR remote control signals with Arduino, then use them to control 6 LEDs. Complete guide covering IR communication principles, hex signal decoding with IRremote, and step-by-step dimmer implementation — with circuit diagrams and full sample code.

作成: 2020-07-23 ・ 更新: 2026-04-28
Blog

Arduino RGB LED PWM Control: 8 Colors to 16.7 Million with Sine Wave Gradient

A complete guide to controlling full-color RGB LEDs with Arduino PWM. From basic 8-color digital output to smooth 16.7 million color gradients using three-phase sine waves — with circuit diagrams and ready-to-use sample code.

作成: 2020-07-13 ・ 更新: 2026-04-28
Blog

Arduino LED Circuit for Beginners | Ohm's Law Resistor Calculation

Learn how to safely light up an LED using Ohm’s Law. Calculate the correct resistor value, wire a breadboard circuit, and avoid common mistakes — a complete beginner’s guide.

作成: 2020-06-15 ・ 更新: 2026-04-28