-
Step 9.1 is just add more info to MCUBoot and OTA. MCUboot và Zephyr: Bí kíp luyện Failsafe OTA Updates cho hệ thống Embedded [Read More]
-
From Demo to Production Firmware – Step 11: Future Features and Optional (Or not to) Evolutions
Step 11 is not about adding more code. It is about learning when not to add code — and how to evolve safely when you must. [Read More] -
From Demo to Production Firmware – Step 10: Watchdog and Last-Resort Recovery
Step 10 is about humility. Assume everything above can fail. [Read More] -
From Demo to Production Firmware – Step 9: OTA Is Controlled Self-Modification
OTA is not a feature. It is the most dangerous thing your firmware can do. Step 9 – OTA Updates with MCUboot (Controlled Self-Modification) [Read More] -
From Demo to Production Firmware – Step 8: Buffering, Batching, and Data Integrity
Step 8 is about admitting the network will fail. Data must survive longer than connectivity. [Read More] -
From Demo to Production Firmware – Step 7: Power Is a First-Class Constraint
Step 7 – Power Management (Make WAIT Meaningful) [Read More] -
From Demo to Production Firmware – Step 6: Retry and Backoff as Policy
Step 6 answers a deceptively simple question: When things fail repeatedly, how should a device behave over time? [Read More] -
From Demo to Production Firmware – Step 5: Logging That Explains Behavior
Step 5 does not change behavior. It changes whether humans can understand that behavior. [Read More] -
From Demo to Production Firmware – Step 4: Networking Without Losing Control
Step 4 introduces the most dangerous subsystem in embedded firmware: networking. Not because it is complex, but because it pretends to be helpful. [Read More] -
From Demo to Production Firmware – Step 3: Sensor Integration Without Breaking Architecture
Step 3 is the first time real hardware enters the system. This is also the step where many firmware architectures silently collapse. [Read More] -
From Demo to Production Firmware – Step 2: The State Machine Skeleton
Step 2 is where architecture becomes visible. We introduce the simplest possible structure that can survive failure: a single, explicit state machine owned by the application. [Read More] -
From Demo to Production Firmware – Step 1: Thinking Like a Device, Not a Script
Step 1 is about mindset, not code. Before architecture, before APIs, before Zephyr — we must change how we think about software that runs on a device. [Read More] -
From Demo to Production Firmware – Step 0: Why This Series Exists
This is Step 0 of a long-form series about building production-grade firmware with Zephyr. Step 0 exists to align expectations, mindset, and goals before we write a single line of code. [Read More] -
Từ Zephyr Sample đến Subsystem Thinking
Từ Zephyr Sample đến Subsystem Thinking Một hành trình “đỡ xấu hổ” khi viết firmware [Read More] -
Biên Niên Sử Tái Cấu Trúc HTTP Client: Từ Blocking đến Bất Đồng Bộ
Biên Niên Sử Tái Cấu Trúc HTTP Client: Từ Blocking đến Bất Đồng Bộ [Read More] -
Biên Niên Sử HTTP Client: Cuộc 'Đại Phẫu' Từ Gã 'Đần' Blocking Sang 'Cao Thủ' Bất Đồng Bộ
Tài liệu này ghi lại chi tiết cuộc hội thoại và quá trình hướng dẫn tái cấu trúc một HTTP client đơn giản trong Zephyr RTOS, chuyển đổi từ một kiến trúc blocking tuần tự sang một kiến trúc non-blocking, bất đồng bộ dựa trên máy trạng thái. [Read More] -
Biên Niên Sử HTTP Client: Cuộc 'Đại Phẫu' Từ Gã 'Đần' Blocking Sang 'Cao Thủ' Bất Đồng Bộ
Tài liệu này ghi lại chi tiết cuộc hội thoại và quá trình hướng dẫn tái cấu trúc một HTTP client đơn giản trong Zephyr RTOS, chuyển đổi từ một kiến trúc blocking tuần tự sang một kiến trúc non-blocking, bất đồng bộ dựa trên máy trạng thái. [Read More] -
Bài 5: Nâng Cấp 'Vũ Khí' - Biến Cổng USB Thành Dao Đa Năng và Giải Mã Ma Thuật 'Endpoint'
Ở bài trước, chúng ta đã “múa” thành công những đường GDB cơ bản. Nhưng một cao thủ thực thụ không chỉ biết dùng vũ khí, mà còn phải biết cách “độ” vũ khí của mình. Trong bài cuối cùng của series này, chúng ta sẽ thực hiện một nâng... [Read More] -
Bài 4: Gươm Báu Đã Sẵn, Giờ Là Lúc 'Múa'! - Thực Hành GDB Với Dự Án Blinky
Ở các phần trước, chúng ta đã tốn không ít mồ hôi công sức để rèn nên một thanh “Ỷ Thiên Kiếm” (cài đặt thành công OpenOCD) và học được bộ “Cửu Âm Chân Kinh” (hiểu rõ bản chất JTAG). Giờ là lúc thanh gươm báu được tuốt ra khỏi... [Read More] -
OpenOCD & Espressif: Mối Tình 'Tay Ba' và Tại Sao Bạn Bị Buộc Phải Chọn 'Con Riêng'
Ở bài trước, chúng ta đã tung hô JTAG tích hợp trên ESP32-S3 như một vị thần. Nhưng để nói chuyện được với vị thần đó, chúng ta cần một thông dịch viên. Và tên của người đó là OpenOCD - một người phiên dịch vừa giỏi giang, vừa khó... [Read More] -
ESP32-S3: USB-JTAG Tích Hợp - Giải Cứu Lập Trình Viên Nhúng Khỏi 'Địa Ngục Printf'!
(Dòng giới thiệu ngắn, hài hước) Anh em có bao giờ rơi vào cảnh code chạy sai lè, và vũ khí duy nhất trong tay là chèn một tràng printf("VAO DAY 1"), printf("GIA TRI X = %d"), printf("RA KHOI DAY") vào code không? Chúc mừng, anh em đã sa vào... [Read More] -
Song Hùng Kỳ Hiệp: Đại Chiến Threading và Cú Tát 'Sấp Mặt' Của Lập Trình Nhúng
Chào các chú em, lại là đại ca của các chú đây. Hôm nay, tôi sẽ không giảng lý thuyết suông nữa. Thay vào đó, tôi sẽ kể lại một câu chuyện “bi hài” có thật về hành trình của một chú “lính mới” (tôi sẽ giấu tên để giữ... [Read More] -
Chào Zephyr, Tạm Biệt Thế Giới!
Hello, World? Xưa rồi Diễm! Dân nhúng chúng tôi chào thế giới bằng cách… nháy một cái đèn LED. Và hôm nay, chúng ta sẽ làm điều đó với một “tay to” trong làng RTOS: Zephyr! [Read More] -
Xe độ vs. Xe đua F1: 3 Bài học 'đắt giá' từ Driver DHT chính thức của Zephyr
Xe độ vs. Xe đua F1: 3 Bài học “đắt giá” từ Driver DHT chính thức của Zephyr [Read More] -
Chuyến Phiêu Lưu vào Lãnh địa Thời gian: Tự Tay Chế Driver DHT11 và (Hy vọng) không làm nổ gì cả
Vậy là bạn đã có trong tay một con ESP32, một môi trường Zephyr RTOS mới coóng và một túi cảm biến DHT11 “ngon, bổ, rẻ” mua từ cửa hàng điện tử gần nhà. Bạn đã làm chủ được printk, đã nháy được vài con LED. Giờ là lúc cho... [Read More]