FAQ
TL;DR: Pull-request #1548 replaces the two-integer “Flags” field with one uint64_t, letting firmware accept values up to 18 446 744 073 709 551 615 without breaking 32-bit builds. Tests on six MCU families reported 0 code-related failures [Elektroda, divadiow, post #21457513]
Quick Facts
• PR: OpenBK7231T_App #1548 merges on 2025-03-01 [Elektroda, p.kaczmarek2, post #21460862]
• Max value accepted: 0xFFFFFFFFFFFFFFFF (18.4 quintillion) [Elektroda, XJ_, post #21456883]
• Current OBK targets: all 32-bit MCUs (BK, ESP, RTL, BL, XR) [Elektroda, insmod, post #21456953]
• Parser call: u64 = strtoull(args, NULL, 10) [Elektroda, XJ_, post #21457366]
• Self-test runner: backlog startDriver Test; StartTest 100; [Elektroda, p.kaczmarek2, post #21457592]
What exactly did PR 1548 change?
It replaced the dual-32-bit flag storage with one uint64t, updated the WebUI to print 64-bit numbers, and switched conversions to strtoull() [Elektroda, XJ, #21457366].
Why were Flags stored as two integers before?
The original firmware only needed 32 flags; a second 32-bit word was bolted on later for 64 total [Elektroda, XJ_, post #21456907]
Will uint64_t break config files on 64-bit hosts?
No. Config still writes two uint32 values, so byte order stays identical on 32- and 64-bit systems [Elektroda, XJ_, post #21456907]
Which platforms already passed the 64-bit test?
Simulator, BK7238, ESP32, BL602, RTL8720, XR809 and TR6260 were flashed; only RTL’s existing Flag 13 bug surfaced [Elektroda, divadiow, post #21459843]
How do I run the new per-platform self-test?
Compile with ENABLE_TEST_COMMANDS, flash, then issue: backlog startDriver Test; StartTest 100; to execute all registered checks [Elektroda, p.kaczmarek2, post #21457592]
Do Windows CI tests cover this feature?
Yes. Simulator self-tests run automatically on every GitHub commit and will fail the build if Flags handling regresses [Elektroda, p.kaczmarek2, post #21458386]
Why use strtoull instead of sscanf for parsing?
strtoull is smaller, faster and guaranteed to return a 64-bit unsigned integer per ISO/IEC 9899:2018 §7.22.1.5 "strtoull converts and returns an unsigned long long" (C standard).
What is the maximum Flags value now accepted?
18 446 744 073 709 551 615 (all 64 bits set). Example command: flags 18446744073709551615 [Elektroda, XJ_, post #21456883]
Why didn’t the old code break on Windows?
Windows’s LLP64 model keeps ‘long’ at 32 bits, so the dual-int workaround behaved like uint64_t in tests [Elektroda, p.kaczmarek2, post #21457359]
Flag 13 still clears on reboot—Is that related?
No. Flag 13 issues pre-date this PR and appear only on Realtek, XR and TR6x devices; root cause is under separate investigation [Elektroda, divadiow, post #21459843]
How does the test driver signal a failure?
Each command returns CMD_RES_ERROR on mismatch; drv_test prints "TEST FAILED" and halts further steps [Elektroda, p.kaczmarek2, post #21457592]
Is the project ready for future 64-bit MCUs?
Yes. Storing flags as two little-endian uint32s keeps EEPROM layout stable, while runtime now manipulates a single 64-bit value, future-proofing the API [Elektroda, XJ_, post #21457354]