msli-dev commented on PR #20381: URL: https://github.com/apache/nuttx/pull/20381#issuecomment-5909517869
Hardware test update: MicoAir H743 V2, SD card connected to SDMMC1. The author ran the following tests on the PX4 port of this PR. The prepared firmware target was `micoair_h743-v2_default`, based on PX4 `ea495a418e` and its NuttX `030417d09b` (the console reports NuttX 12.12.0), with this PR's changes through `51557742ec` adapted to the older `STM32H7_*` configuration names. This is hardware evidence from that port, rather than a standalone upstream NuttX firmware run. The prepared build enables IDMA, a 4096-byte bounce buffer (8 × 512), `MMCSD_MULTIBLOCK_LIMIT=0`, and D-cache write-back. Its linked bounce buffer is at `0x2400eea0` in AXI SRAM, size `0x1000`. | Command | Average write, KB/s | Average read + verify, KB/s | Observed result | | --- | ---: | ---: | --- | | `sd_bench -v -b 4096 -r 3 -d 3000` | 955.18 | 1997.56 | 2154 application blocks read and verified | | `sd_bench -U -v -b 4096 -r 3 -d 3000` | 1173.91 | 1998.34 | 2647 application blocks read and verified | | `sd_bench -U -v -b 8192 -r 3 -d 3000` | 1259.43 | 1997.04 | 1421 application blocks read and verified | For the unaligned 4 KiB test, the printed write/read pointers are `0x300170a1` and `0x300180a9`: both are byte-unaligned addresses in D2 SRAM1. Thus the completed file-I/O test exercises D2 caller buffers and reports successful readback verification. The ordinary 4 KiB run does not print an address, so it is not being labeled a verified direct-AXI comparison. The author reports approximately **300 KB/s before the changes**. The observed write averages are approximately **3.2–4.2 times that reported baseline**, but the old command, exact configuration and raw baseline log are not available, so this is not presented as a controlled before/after benchmark. No performance conclusion is drawn from the unaligned run being faster than the ordinary run. All three supplied runs completed readback verification without reported verification errors. The 8 KiB test also used D2 write/read pointers (`0x300170a1` / `0x300190a9`) and completed successfully with the configured 4 KiB host cap. File-system I/O does not by itself prove the exact host-level split pattern. Neighboring-buffer guards, D3/DTCM coverage and timeout/cancellation/card-removal recovery remain outstanding. Keeping this PR as Draft while those points and human sign-off are addressed. <details> <summary>Console output supplied by the hardware tester</summary> ```text nsh> sd_bench -v -b 4096 -r 3 -d 3000 NuttShell (NSH) NuttX-12.12.0 INFO [sd_bench] Using block size = 4096 bytes, sync=0 INFO [sd_bench] Testing Sequential Write Speed... INFO [sd_bench] Run 0: 979.31 KB/s, max write time: 50 ms (= 80.00 KB/s), fsync: 5 ms INFO [sd_bench] Run 1: 912.35 KB/s, max write time: 48 ms (= 83.33 KB/s), fsync: 5 ms INFO [sd_bench] Run 2: 973.90 KB/s, max write time: 39 ms (= 102.56 KB/s), fsync: 5 ms INFO [sd_bench] Avg : 955.18 KB/s INFO [sd_bench] Overall max write time: 50 ms INFO [sd_bench] Testing Sequential Read Speed of 2154 blocks INFO [sd_bench] Run 0: 1997.19 KB/s, max read/verify time: 2 ms (=2000.00 KB/s) INFO [sd_bench] Run 1: 1998.41 KB/s, max read/verify time: 2 ms (=2000.00 KB/s) INFO [sd_bench] Avg : 1997.56 KB/s 2154 blocks read and verified nsh> sd_bench -U -v -b 4096 -r 3 -d 3000 Block ptr 0x300170a1 INFO [sd_bench] Using block size = 4096 bytes, sync=0 INFO [sd_bench] Testing Sequential Write Speed... INFO [sd_bench] Run 0: 1017.74 KB/s, max write time: 48 ms (= 83.33 KB/s), fsync: 5 ms INFO [sd_bench] Run 1: 1214.40 KB/s, max write time: 20 ms (= 200.00 KB/s), fsync: 5 ms INFO [sd_bench] Run 2: 1289.64 KB/s, max write time: 24 ms (= 166.67 KB/s), fsync: 5 ms INFO [sd_bench] Avg : 1173.91 KB/s INFO [sd_bench] Overall max write time: 48 ms INFO [sd_bench] Testing Sequential Read Speed of 2647 blocks Read Block ptr 0x300180a9 INFO [sd_bench] Run 0: 1997.90 KB/s, max read/verify time: 2 ms (=2000.00 KB/s) INFO [sd_bench] Run 1: 1998.92 KB/s, max read/verify time: 2 ms (=2000.00 KB/s) INFO [sd_bench] Avg : 1998.34 KB/s 2647 blocks read and verified nsh> sd_bench -U -v -b 8192 -r 3 -d 3000 Block ptr 0x300170a1 INFO [sd_bench] Using block size = 8192 bytes, sync=0 INFO [sd_bench] Testing Sequential Write Speed... INFO [sd_bench] Run 0: 1262.24 KB/s, max write time: 23 ms (= 347.83 KB/s), fsync: 5 ms INFO [sd_bench] Run 1: 1223.94 KB/s, max write time: 32 ms (= 250.00 KB/s), fsync: 5 ms INFO [sd_bench] Run 2: 1292.08 KB/s, max write time: 27 ms (= 296.30 KB/s), fsync: 5 ms INFO [sd_bench] Avg : 1259.43 KB/s INFO [sd_bench] Overall max write time: 32 ms INFO [sd_bench] Testing Sequential Read Speed of 1421 blocks Read Block ptr 0x300190a9 INFO [sd_bench] Run 0: 1998.02 KB/s, max read/verify time: 4 ms (=2000.00 KB/s) INFO [sd_bench] Run 1: 1995.94 KB/s, max read/verify time: 4 ms (=2000.00 KB/s) INFO [sd_bench] Avg : 1997.04 KB/s 1421 blocks read and verified ``` Whitespace normalized. The 8 KiB readback output was supplied in a follow-up by the tester. </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
