mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-28 09:11:11 -07:00
The planner buffer depth harness; the XY microstep set is in
scripts/bench/planner_blocks_test.py restarts the null-sink controller at $398=400 and at 1000 on one settings store and requires an answer on the port, the depth in the status report and a move to Idle. It runs in the grblHAL repo's CI; registered on the bench page and in the README. BRINGUP: $398 runs over its whole range, the spin item is closed, and the XY microstep item is committed, pushed and pinned. CAMPAIGN-LOG: the landing and the index fix, with the host and bench proof. No catalog consequence beyond the core submodule the motion tests already cover; the coverage lint is clean.
This commit is contained in:
+6
-13
@@ -1026,8 +1026,10 @@ is committed.
|
||||
finer on that radius) the feed sags mid-arc and the circle takes longer,
|
||||
with the CPU flat at 33 percent and no underrun, and a deeper planner
|
||||
buffer (`$398` 250) changes nothing. Finer chords move the tone up and
|
||||
do not lower the vibration. `$398` at 255 or more spins the controller
|
||||
at start (a core bug, "Next work"); the usable maximum is 254.
|
||||
do not lower the vibration. `$398` runs over its whole range (30 to
|
||||
1000): the core's block-ring index is wide enough for it, and
|
||||
`scripts/bench/planner_blocks_test.py` starts the null-sink build at
|
||||
400 and at 1000 in the grblHAL repo's CI.
|
||||
- **Factory analog config** (constant across all captured jobs, 2018→2026):
|
||||
PIC currents X 135 run / 33 hold, Y 22 run / 5 hold (axis DAC scales differ by
|
||||
design); x/y_decay=1; ×8 microstepping; run currents applied only while
|
||||
@@ -1483,7 +1485,8 @@ feature requests, enhancements) will eventually be tracked as GitHub issues.
|
||||
accelerometer with every fan off (`scripts/bench/xy_pattern_accel.py`
|
||||
through the new `POST /cool/quiet`): the vibration at 200 mm/s falls
|
||||
with the finer mode, most on a circle (x RMS down 29 percent at 32).
|
||||
Uncommitted. Owed: the commits, pins, image and campaign. 32 is admitted; the
|
||||
Committed, pushed and pinned. Owed: the acceptance campaign on the
|
||||
image that ships it. 32 is admitted; the
|
||||
fallbacks, should another machine not hold it, are the 84480 Hz tick
|
||||
or the `$110` ceiling the driver holds under a lower tick. Cloud mode
|
||||
runs at the service's own 8: the service plans every stream at 8
|
||||
@@ -1494,16 +1497,6 @@ feature requests, enhancements) will eventually be tracked as GitHub issues.
|
||||
cloud mode (a local stream expander in the feeder, or the service
|
||||
planning finer) wait for a user's report of such a refusal, by
|
||||
decision.
|
||||
9. **Planner buffer of 255 blocks or more spins the controller.** The
|
||||
core's `plan_reset_buffer()` links the block ring with a `uint_fast8_t`
|
||||
index, so `$398` at 255 or more never finishes at start: the main
|
||||
thread sits at 100 percent in `plan_reset()`, the Grbl port stops
|
||||
answering, and forgectrl still reports the controller running (the
|
||||
supervisor sees deaths and silent armed reporters, not an idle spin).
|
||||
Reproduced on the host build. Owed in the fork (openglow-org
|
||||
grblHAL-core, branch forgefirm): the index widened to `uint_fast16_t`,
|
||||
or the sanity check capped at 254, and a host test that starts the
|
||||
null-sink build with `$398=400`. Until then the usable maximum is 254.
|
||||
|
||||
**Deliberately not gated:** an armed GRBL job after an underrun cuts at the
|
||||
stale origin unless homing is required (GRBL mode permits unhomed cutting; the
|
||||
|
||||
@@ -9541,6 +9541,54 @@ decision: the service plans every stream at 8 whatever the machine
|
||||
reports. Nothing committed at the time of writing: the operator's order is
|
||||
no commit until the code is proven, and the commit is the operator's call.
|
||||
|
||||
## 2026-09-07: the XY microstep set lands; the planner buffer index
|
||||
|
||||
**Commits, pushes, pins and the image, 22:05 to 22:18Z.** On the
|
||||
operator's order the set went out in CI order: forgectrl b1eee4d,
|
||||
Glowforge-Utilities 428c725, python3-gfhardware d1c47b8, forgefirm-docs
|
||||
d91bcf1, forgefirm 8fc5250 (before grblHAL, whose CI fetches the
|
||||
harnesses unpinned), grblHAL-glowforge 48d5f1d. The branch pushes carried
|
||||
the producer-lead-ceiling commits of the same day with them (grblHAL
|
||||
249bcb8, forgefirm bfb5cb2, docs 0b63d50). Pins fetch-verified with
|
||||
`bitbake -c fetch` and pushed: forgefirm 0dc8c74 (forgectrl 0.1.6,
|
||||
grblhal-glowforge 0.1.5, forgefirm-app 0.1.25+git) and meta-openglow
|
||||
c63777e (python3-gfhardware d1c47b8, python3-gfutilities 0.9.16+git).
|
||||
Images 20260907221537, release and dev, one kernel
|
||||
(6.12.20-fslc-g707c33df2d36), no QA warning, every built-image check
|
||||
green, the new ones included: forgectrl carries `xy_microsteps` and
|
||||
`/cool/quiet`, the driver carries the tick line and the ceiling warning,
|
||||
gfutilities carries the mode refusal, the dev image carries
|
||||
`motion.microstep-modes`, the mode-derived baseline and the four bench
|
||||
tools on the bench page. Archived under `images/20260907221537/`.
|
||||
|
||||
**The planner buffer index, 22:25 to 22:40Z.** The core's
|
||||
`plan_reset_buffer()` linked the block ring with a byte-wide index, so
|
||||
`$398` at 255 or more never finished at start. The fork (openglow-org
|
||||
grblHAL-core, branch forgefirm, 362577d) widens the index to
|
||||
`uint_fast16_t`; the driver's submodule follows. The proof is
|
||||
`scripts/bench/planner_blocks_test.py`: one settings store across
|
||||
restarts, `$398` written to 400 and then to 1000, the controller
|
||||
restarted on the store each time and required to answer on the port, to
|
||||
report the depth in its status report and to run a move. Against the
|
||||
build before the fix it reports "accepts the connection and never answers
|
||||
within 5 s: the start spins" (the listener is its own thread, so a
|
||||
connect alone proves nothing, and the harness kills the controller it
|
||||
started on every exit); against the fixed build it passes at 400 and at
|
||||
1000 (`Bf:400` and `Bf:1000`, a G1 move to Idle). The other six host
|
||||
tests and the four harnesses pass on the fixed build; the coverage lint
|
||||
is clean (82 tests). On the bench the stripped cross-build (md5
|
||||
5a0f5a9f) went in through the controller stop and start route, so
|
||||
forgectrl kept the pulse device: `$398` 100 as found, then 400 and a
|
||||
restart: the controller answers, `Bf:400`, the process at 0.0 percent of
|
||||
the core, a jog of +5 mm to MPos 5.006 and back to 0.000; then 1000 and a
|
||||
restart: answers, `Bf:1000`, 0.0 percent; then 100 restored and a
|
||||
restart: answers, forgectrl idle at (0, 0, 0). The usable range of `$398`
|
||||
is the core's own, 30 to 1000. Left: the board at `$398` 100, `/tmp`
|
||||
clean, the hot-deployed driver in place until the next flash; the fix
|
||||
committed and pushed in the fork and the driver, the harness registered
|
||||
in the bench page, the READMEs and the grblHAL CI, and the pin bump and
|
||||
the image build to follow.
|
||||
|
||||
## Reference notes
|
||||
|
||||
### Head-IRQ source validation — the beam-emission hypothesis
|
||||
|
||||
Reference in New Issue
Block a user