<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Yunus Kurt — Blog</title>
    <link>https://yunuskurt.com/blog/</link>
    <atom:link href="https://yunuskurt.com/rss.xml" rel="self" type="application/rss+xml"/>
    <description>Embedded systems, hardware design, fieldbus and DSP notes by Yunus Kurt — senior embedded software engineer.</description>
    <language>en</language>
    <lastBuildDate>Mon, 15 Jun 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Updating firmware in the field: bootloaders &amp; OTA</title>
      <link>https://yunuskurt.com/blog/bootloaders-ota-firmware-update/</link>
      <guid>https://yunuskurt.com/blog/bootloaders-ota-firmware-update/</guid>
      <description>How to replace firmware on a deployed device without bricking it and without letting anyone flash their own code — bootloader basics, the flash memory map, single-slot vs A/B dual-slot, the OTA update cycle with rollback, and secure boot with signed images and anti-rollback.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>bootloader</category><category>OTA</category><category>firmware</category><category>secure boot</category><category>embedded</category><category>STM32</category>
    </item>
    <item>
      <title>DMA: free the CPU from moving bytes</title>
      <link>https://yunuskurt.com/blog/dma-free-the-cpu/</link>
      <guid>https://yunuskurt.com/blog/dma-free-the-cpu/</guid>
      <description>Direct Memory Access explained for embedded engineers — how a DMA controller moves data between peripherals and memory without the CPU, why it buys throughput, determinism and power at once, the transfer modes (circular, ping-pong, mem-to-mem), and the cache and mapping gotchas that bite.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>DMA</category><category>embedded</category><category>STM32</category><category>firmware</category><category>performance</category>
    </item>
    <item>
      <title>Which embedded compiler: GCC, IAR or Keil?</title>
      <link>https://yunuskurt.com/blog/embedded-compilers-toolchains/</link>
      <guid>https://yunuskurt.com/blog/embedded-compilers-toolchains/</guid>
      <description>A field guide to embedded toolchains — what actually turns your C into flashable bytes, how GCC, LLVM/Clang, IAR EWARM and Keil MDK differ on cost, code density and certification, and why an IDE like STM32CubeIDE is not the same thing as a compiler.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>GCC</category><category>IAR</category><category>Keil</category><category>toolchain</category><category>compiler</category><category>embedded</category><category>firmware</category>
    </item>
    <item>
      <title>FPGA or MCU? Choosing by parallelism, timing and cost</title>
      <link>https://yunuskurt.com/blog/fpga-vs-mcu/</link>
      <guid>https://yunuskurt.com/blog/fpga-vs-mcu/</guid>
      <description>When to reach for an FPGA versus a microcontroller — the real difference between a CPU running instructions sequentially and an FPGA computing in parallel across its fabric, and how that drives the trade-offs in throughput, latency and determinism, power, development effort and unit cost. Plus where SoC FPGAs let you have both.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>FPGA</category><category>MCU</category><category>hardware</category><category>RTL</category><category>embedded</category>
    </item>
    <item>
      <title>Linker scripts and the memory map: why firmware won&apos;t boot</title>
      <link>https://yunuskurt.com/blog/linker-script-memory-map/</link>
      <guid>https://yunuskurt.com/blog/linker-script-memory-map/</guid>
      <description>A practical tour of the embedded memory map and the linker script that builds it — what .text, .rodata, .data and .bss are, where each lives in FLASH and RAM, the startup copy/zero that runs before main(), VMA vs LMA, and the MEMORY/SECTIONS blocks. The bugs behind a firmware that links fine but never reaches main().</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>embedded</category><category>linker</category><category>memory map</category><category>firmware</category><category>startup</category>
    </item>
    <item>
      <title>Low-power firmware: sleep modes, wake sources and measuring µA</title>
      <link>https://yunuskurt.com/blog/low-power-firmware/</link>
      <guid>https://yunuskurt.com/blog/low-power-firmware/</guid>
      <description>How to actually make a battery device last — the MCU low-power modes (Sleep, Stop, Standby, Shutdown) and what each keeps alive, choosing wake sources (RTC, EXTI, wake pins), why average current and not peak sets battery life, and how to measure µA when a plain multimeter can&apos;t span six decades of current.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>embedded</category><category>low-power</category><category>battery</category><category>STM32</category><category>firmware</category>
    </item>
    <item>
      <title>Metastability and clock domain crossing, explained</title>
      <link>https://yunuskurt.com/blog/metastability-cdc/</link>
      <guid>https://yunuskurt.com/blog/metastability-cdc/</guid>
      <description>Why a signal crossing between unrelated clocks eventually violates setup/hold and goes metastable, how the two-flop synchronizer contains it, and why you must never run a multi-bit bus through per-bit synchronizers — use an async FIFO with Gray-coded pointers or a handshake instead. The CDC bugs that pass simulation and fail in the field.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>FPGA</category><category>RTL</category><category>CDC</category><category>metastability</category><category>digital design</category>
    </item>
    <item>
      <title>The microcontrollers that won — and why</title>
      <link>https://yunuskurt.com/blog/microcontrollers-that-won/</link>
      <guid>https://yunuskurt.com/blog/microcontrollers-that-won/</guid>
      <description>There are thousands of MCUs but in practice you meet the same dozen. A field guide to why STM32, ESP32, AVR, Nordic nRF and RP2040 became defaults — and why adoption is decided by ecosystem, availability and longevity, not raw specs.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>STM32</category><category>ESP32</category><category>microcontroller</category><category>ARM</category><category>embedded</category><category>firmware</category>
    </item>
    <item>
      <title>SPI vs I2C: speed or pins</title>
      <link>https://yunuskurt.com/blog/spi-vs-i2c/</link>
      <guid>https://yunuskurt.com/blog/spi-vs-i2c/</guid>
      <description>When to reach for SPI and when I2C is the better board-level serial bus — the wire-count, addressing, duplex, drive and per-byte-overhead trade-offs, with a one-line rule for picking.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>SPI</category><category>I2C</category><category>embedded</category><category>protocols</category><category>serial</category>
    </item>
    <item>
      <title>volatile, memory barriers and reordering traps</title>
      <link>https://yunuskurt.com/blog/volatile-memory-barriers/</link>
      <guid>https://yunuskurt.com/blog/volatile-memory-barriers/</guid>
      <description>Why volatile exists, what it actually guarantees (and what it doesn&apos;t), how the compiler and CPU reorder your memory accesses, and when you really need a compiler barrier, a hardware memory barrier (DMB/DSB) or a true atomic — the bugs that only show up with optimisation on, interrupts, DMA or a second core.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>embedded</category><category>volatile</category><category>concurrency</category><category>C</category><category>firmware</category>
    </item>
    <item>
      <title>Wireless: range, data rate, power — pick two</title>
      <link>https://yunuskurt.com/blog/wireless-ble-wifi-lora/</link>
      <guid>https://yunuskurt.com/blog/wireless-ble-wifi-lora/</guid>
      <description>A short field guide to the wireless links used in embedded and IoT — BLE, Wi-Fi (802.11), Zigbee/Thread (802.15.4), LoRaWAN and cellular IoT — what each is for, where it wins and where it doesn&apos;t, framed by the one trade-off you can&apos;t escape.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>wireless</category><category>BLE</category><category>WiFi</category><category>LoRa</category><category>IoT</category><category>RF</category>
    </item>
    <item>
      <title>MQTT explained: pub/sub, brokers and Mosquitto</title>
      <link>https://yunuskurt.com/blog/mqtt-brokers-mosquitto/</link>
      <guid>https://yunuskurt.com/blog/mqtt-brokers-mosquitto/</guid>
      <description>A detailed, practical guide to MQTT — the publish/subscribe model that decouples devices, what the broker actually does, topics and + / # wildcards, QoS 0/1/2 delivery guarantees, retained messages, Last Will, keep-alive and sessions, MQTT 3.1.1 vs 5.0, TLS security, the broker landscape (Mosquitto, EMQX, HiveMQ, AWS IoT Core) and hands-on Mosquitto with mosquitto_pub / mosquitto_sub and bridges.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>MQTT</category><category>IoT</category><category>pub/sub</category><category>Mosquitto</category><category>broker</category><category>protocols</category>
    </item>
    <item>
      <title>Do you need an RTOS?</title>
      <link>https://yunuskurt.com/blog/do-you-need-an-rtos/</link>
      <guid>https://yunuskurt.com/blog/do-you-need-an-rtos/</guid>
      <description>When a real-time operating system earns its place over a bare-metal super-loop — what an RTOS actually is, how the major kernels differ (FreeRTOS vs NuttX vs Zephyr, POSIX compliance and all), which industries run which, and where the field moved in the last few years.</description>
      <pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate>
      <category>RTOS</category><category>FreeRTOS</category><category>Zephyr</category><category>NuttX</category><category>embedded</category><category>firmware</category>
    </item>
    <item>
      <title>Why the car chose CAN</title>
      <link>https://yunuskurt.com/blog/automotive-protocols-why-can/</link>
      <guid>https://yunuskurt.com/blog/automotive-protocols-why-can/</guid>
      <description>A tour of automotive protocols — LIN, CAN, FlexRay, automotive Ethernet — and the engineering reasons CAN bus became the backbone of every vehicle: lossless bitwise arbitration, built-in priority, and brutal error handling.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>CAN</category><category>automotive</category><category>embedded</category><category>fieldbus</category>
    </item>
    <item>
      <title>Before the EMC lab: pre-compliance testing at your own bench</title>
      <link>https://yunuskurt.com/blog/emc-pre-compliance-testing/</link>
      <guid>https://yunuskurt.com/blog/emc-pre-compliance-testing/</guid>
      <description>Pre-compliance checks you can run on your own bench before taking an industrial device to an accredited EMC lab — and the three failures that catch most designs.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>EMC</category><category>hardware</category><category>PCB</category>
    </item>
    <item>
      <title>RS-232 vs RS-485: the electrical story</title>
      <link>https://yunuskurt.com/blog/rs232-vs-rs485/</link>
      <guid>https://yunuskurt.com/blog/rs232-vs-rs485/</guid>
      <description>What actually differs between RS-232 and RS-485 at the electrical level — voltage levels, differential signaling, common-mode range, termination and biasing — and which one wins for which job.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>RS-485</category><category>RS-232</category><category>hardware</category><category>fieldbus</category>
    </item>
    <item>
      <title>Modbus from the wire up: ASCII vs RTU vs TCP</title>
      <link>https://yunuskurt.com/blog/modbus-ascii-rtu-tcp/</link>
      <guid>https://yunuskurt.com/blog/modbus-ascii-rtu-tcp/</guid>
      <description>How Modbus actually works on the wire — ASCII, RTU and TCP framing compared byte by byte, RTU silence timing explained, and which physical layers (UART, RS-232, RS-485, Ethernet) can carry it.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>Modbus</category><category>fieldbus</category><category>RS-485</category><category>embedded</category>
    </item>
    <item>
      <title>SAE J1939: the language of trucks</title>
      <link>https://yunuskurt.com/blog/sae-j1939-basics/</link>
      <guid>https://yunuskurt.com/blog/sae-j1939-basics/</guid>
      <description>How J1939 turns raw CAN into a plug-and-play network for trucks and heavy machinery — the 29-bit ID anatomy, PGN/SPN signal dictionary, transport protocol for big payloads, address claiming and DM1 diagnostics.</description>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <category>J1939</category><category>CAN</category><category>automotive</category><category>embedded</category>
    </item>
  </channel>
</rss>