USB Bulk Transfer cho debug dump là gì?
Bulk IN cho RAM dump trên STM32G0: state machine chunk 64 byte, DataIn callback pipeline, tại sao không dùng ZLP, Zadig cho Windows và throughput thực đo.
Bulk Transfer phù hợp cho data lớn một chiều: không có latency guarantee nhưng throughput cao và tự động retry khi có lỗi.
Pipeline chunk-to-chunk
Main loop: VendorDump_Run() gửi chunk đầu tiên ↓DataIn ISR: VendorDump_OnTxCplt() gửi chunk tiếp theo ngay lập tức ↓... lặp cho đến sDumpOffset >= kDumpSize ... ↓ISR set sDumpDone = trueMain loop: log completion từ CdcLog_PrintfChunk đầu từ main loop, chunk tiếp theo từ DataIn callback. Giữ pipeline đầy, không để CPU idle giữa các chunk.
Tại sao không ZLP
147456 = 2304 × 64 (bội số chính xác của max packet size). Lý thuyết cần ZLP.
Nhưng host đã biết acceptedLength=147456 từ response START_RAM_DUMP, nên
host tự dừng đọc khi đủ byte. Không phụ thuộc behavior ZLP của từng OS.
Zadig trên Windows
Vendor-specific interface (bInterfaceClass=0xFF) không có inbox driver.
Phải dùng Zadig bind WinUSB hoặc libusbK vào đúng Interface 3. Không cài nhầm
vào Interface 0 (HID sẽ ngừng hoạt động).
Throughput thực đo
418.7 KB/s trên USB Full Speed (STM32G0, vendor_test.py). Bottleneck là pyusb overhead phía host, không phải firmware.
Xem chi tiết: bài 7 Vendor Request và Bulk
Bài viết này hữu ích với bạn?
Chia sẻ, góp ý, hoặc ủng hộ nếu bạn thấy nội dung này có giá trị.
Nội dung liên quan
Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.
Vendor Request và Bulk IN trên STM32G0
EP0 vendor command và Bulk IN RAM dump trên STM32G0: pending log flag, tại sao không dùng ZLP, Zadig cho Windows, và output thật từ vendor_test.py.
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.
USB Vendor Request qua EP0 là gì?
EP0 Vendor Request trên STM32: bmRequestType 0xC0, dispatch trong Composite_Setup, tại sao không được gọi CdcLog_Printf trong handler và pattern pending log flag.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.