跳转至

r21 CRC prefix optimization — STM32F103RET6

This is a separate candidate qualification, not a replacement label for the r20 baseline.

Target: pure-sine demo SHA256 0398dc532654d10a34fb19aea24ba19b3b18281849e4ccb053efda79de966303; benchmark RAM 0x20008C88, 4096 bytes. Probe UF2 SHA256 f28c012e547e7bc589e14463ebfd0835bc1cdcd5297b87d7ff768dfe764406cd. Default batch remains 64; clock settings remain 4/10/20/30 MHz.

MHz Single duration s Sustained kSa/s Host kSa/s 4-variable kgroup/s 4 KiB KiB/s
4 15 61.011 60.869 10.152 274.837
10 15 116.901 116.605 20.063 578.965
20 15 175.057 174.625 28.372 881.522
30 120 193.449 192.946 32.213 1061.556

Sustained rate uses all probe timestamps, including batch gaps, after a 200 ms warm-up. Every returned payload is checked against the deterministic RAM pattern; CRC, flags and SWD error deltas are checked. Target waveform update rate is not the acquisition rate.

Change: calculate the constant eight-byte frame magic CRC once per batch. Wire format and exact timestamp semantics are unchanged. Shared fixed-32 serializer covers ARM and HPM; HPM hardware regression remains pending. Validation: 243 byte-equivalence cases, actual C batch framing/backpressure tests, successful SES build, unchanged SWD hot-function addresses. ILM free: 5248 bytes.

The old GUI CRC=1 observation remains unresolved. Its counters accumulate across stream restarts in remote/dashboards.py; the saved later interval had no additional CRC errors. This alone does not prove a harmless cancellation artifact.

Raw matrix: E:\PHDZ\PROJECT\liu\STM32F103_test\STM32F103RC\.mklink\arm_deferred_20260914\r21-four-speed-sine-01. A/B: r20-batch-ab-sine-01 and r21-batch-ab-sine-01.

USB pause/restart suite: passed=True; completed=20. Raw: E:\PHDZ\PROJECT\liu\STM32F103_test\STM32F103RC\.mklink\arm_deferred_20260914\r21-usb-stress-sine-01.