Bên trong firmware: mã nguồn chạy thế nào

Chiếc kit trên trang này chạy đúng mã nguồn của repo. Dừng nó lại, cho chạy từng bước, và xem từng việc đi từ đâu tới đâu. Không cần biết lập trình.

1

Vòng lặp chính

Cả firmware là một vòng lặp quay mãi qua bốn việc. Không có hai việc nào chạy cùng lúc. Bấm từng ô.

Xem đoạn mã thật

          

Hai từ dùng suốt trang: task là một "người thợ" lo một mảng việc; message là một tờ phiếu giao việc cho task. Khi firmware chạy ở mục 2, ô đang làm ở trên sẽ sáng lên.

2

Message đi từ đâu tới đâu

Đây là các message thật của firmware đang chạy bên cạnh. Bấm Dừng, rồi Bước tiếp để đi từng message một.

Nơi sinh ra việc

Ngắt đồng hồphần cứngbáo khi một hẹn giờ đến hạn
Vòng đi tuầnviệc 3 của vòng lặpđọc nút bấm, dòng lệnh, RS485

Task, ưu tiên cao ở trên

Hẹn giờưu tiên 7–0
Người gácưu tiên 6–0
Nạp firmwareưu tiên 4–0
Dòng lệnhưu tiên 3–0
Giao diệnưu tiên 2–0

Đang chờ message…

Kit đứng yên vẫn có việc: 20 lần một giây nó vẽ lại màn hình.

Tạo việc để xem:

Hoặc bấm thẳng B1, B2, B3 trên kit. Khi đang dừng: tạo việc trước, rồi bấm Bước tiếp.

    "Việc lặp lại" là nhịp đồng hồ, vẽ khung, nhịp tim và điểm danh. Chúng chiếm gần hết số message; ẩn đi để thấy việc do người gây ra. Bấm một dòng để đọc lại.

    3

    Từ lúc cấp điện

    Bảy bước, luôn theo thứ tự này. Bấm một bước để đọc.

      Nút này dừng firmware, gửi lệnh khởi động lại và đưa anh về mục 2. Bấm Bước tiếp ở đó để thấy bước 6 diễn ra.

      4

      Nạp firmware mới

      Bản mới không ghi đè thẳng lên bản đang chạy. Thử rút điện ở bất kỳ bước nào.

      CHỖ CHẠYtrong chip
      CHỜbộ nhớ ngoài
      DỰ PHÒNGbộ nhớ ngoài

      Mục này là mô phỏng trên trang, theo đúng thứ tự của bootloader (src/boot/boot_core.c). Trên kit thật ngày 13/10/2026: nạp 56 KB qua USB mất 8,2 giây; cài, chốt và quay lui đều đã chạy. Rút điện giữa lúc chép mới thử trên máy tính, hơn 20 000 lần.

      5

      Thư mục nào làm gì

      Lớp trên chỉ gọi lớp dưới. Đổi chip thì chỉ viết lại port.

      Cột phải là số dòng mã (.c và .h), đếm ngày 14/10/2026. Bấm tên thư mục để mở trên GitHub.