Projects Projects プロジェクト

Không chỉ là lý thuyết - nơi ghi lại thiết kế, coding, debug. Và những bài học rút ra từ các project thực tế. More than theory - design, coding, debugging notes. And lessons learned from real firmware projects. 理論だけでなく、設計・実装・デバッグを記録します。 実際のプロジェクトから得た学びを整理します。

Lọc theo category

Lọc theo ngôn ngữ

Sắp ra mắt
UEFI 04: File Loader từ EFI System Partition
Hoàn thành
5 phút đọc

BIOS / UEFI

UEFI 04: File Loader từ EFI System Partition

Đọc file từ EFI System Partition trong UEFI application: protocol chain LoadedImage → SimpleFileSystem → OpenVolume → Open → Read, file size query và in nội dung ra UEFI Shell.

EDK2 OVMF QEMU 10.2.1 +3
Sắp ra mắt
UEFI 02: Protocol Explorer
Hoàn thành
5 phút đọc

BIOS / UEFI

UEFI 02: Protocol Explorer

Dùng LocateHandleBuffer và ProtocolsPerHandle để liệt kê toàn bộ Handle Database trên QEMU/OVMF: 163 handle, 100 protocol được nhận dạng từ lookup table 10 GUID phổ biến.

EDK2 OVMF QEMU 10.2.1 +3
Sắp ra mắt
UEFI 03: Memory Map Viewer
Hoàn thành
6 phút đọc

BIOS / UEFI

UEFI 03: Memory Map Viewer

Gọi GetMemoryMap để đọc và in toàn bộ memory descriptor trên QEMU/OVMF: 120 entries, 206 MB EfiConventionalMemory, two-call pattern và tại sao AllocatePool thay đổi MapSize.

EDK2 OVMF QEMU 10.2.1 +3
Sắp ra mắt
UEFI 05: Minimal DXE Driver và Custom Protocol
Hoàn thành
6 phút đọc

BIOS / UEFI

UEFI 05: Minimal DXE Driver và Custom Protocol

DXE driver cài BejHelloProtocol, UEFI app locate và gọi. Khác biệt driver vs application, InstallProtocolInterface, LocateProtocol và tại sao GUID là địa chỉ duy nhất.

EDK2 OVMF QEMU 10.2.1 +3
Sắp ra mắt
UEFI 01: Hello World UEFI Application
Hoàn thành
6 phút đọc

BIOS / UEFI

UEFI 01: Hello World UEFI Application

UEFI application đầu tiên với EDK2: cấu trúc BejPkg package, build HelloUefi.efi và chạy trong UEFI Shell trên QEMU/OVMF. Ghi lại lỗi thật gặp với EDK2 phiên bản mới.

EDK2 OVMF QEMU 10.2.1 +3
Hoàn thành
10 phút đọc

STM32

STM32G0 USB Lab: Key Input Pipeline

Keypad 4x4 matrix trên STM32G0B1RE: quét bằng BSRR/IDR trực tiếp, TIM6 5ms, debounce 2 mẫu, event queue và chính sách simultaneous-error cho ma trận không diode.

NUCLEO-G0B1RE STM32G0B1RE STM32CubeIDE +3
Sắp ra mắt
STM32 FreeRTOS Firmware Skeleton
Hoàn thành
10 phút đọc

STM32

STM32 FreeRTOS Firmware Skeleton

Project thực nghiệm FreeRTOS skeleton trên STM32G0B1RE, kiểm tra task timing 10 ms/100 ms, event queue, UART log mutex, monitor task và queue full policy bằng log thật.

NUCLEO-G0B1RE STM32G0B1RE STM32CubeIDE +4
Hoàn thành
11 phút đọc

STM32

STM32G0 USB Lab: Host Debug Tool

Python tool giao tiếp với USB composite device STM32G0: CLI smoke test 4 vendor commands qua EP0 và GUI test tổng hợp HID, CDC log, vendor bulk dump trên một màn hình.

Python 3 pyusb libusb +4
Sắp ra mắt
STM32 Flash EEPROM Emulation
Hoàn thành
11 phút đọc

STM32

STM32 Flash EEPROM Emulation

Project EEPROM emulation trên STM32G0B1RE dùng Flash Bank 2, append-only record, two-page transfer, CRC và fault injection bằng software reset.

STM32CubeIDE STM32 HAL Embedded C +2
Sắp ra mắt
STM32 Dual-Slot UART OTA Bootloader
Case study
12 phút đọc

STM32

STM32 Dual-Slot UART OTA Bootloader

Case study xây dựng bootloader A/B cho STM32G0B1RE, hỗ trợ cập nhật firmware qua UART, xác thực packet CRC32, metadata pending/confirmed và rollback.

STM32G0B1RE STM32CubeIDE STM32 HAL +4
Sắp ra mắt
STM32 Non-Blocking UART Logger
Hoàn thành
12 phút đọc

STM32

STM32 Non-Blocking UART Logger

Project thực nghiệm UART logger non-blocking trên STM32G0B1RE, so sánh blocking transmit với UART DMA + Ring Buffer và drop counter.

NUCLEO-G0B1RE STM32G0B1RE STM32CubeIDE +3
Hoàn thành
17 phút đọc

STM32

STM32G0 USB Lab: Composite Device

USB composite device trên STM32G0B1RE: HID Keyboard + CDC log + EP0 Vendor Request + Vendor Bulk IN. Một codebase phát triển từ HID đơn đến debug tool hoàn chỉnh qua commit/tag.

NUCLEO-G0B1RE STM32G0B1RE STM32CubeIDE +3