Skip to content

v0.0.26

Choose a tag to compare

@github-actions github-actions released this 01 Oct 13:46
· 419 commits to main since this release

0.0.26

  • (EN) A request that may take long on the probe is waited for that long (core §6.1: the probe does not count the lease while it runs one): Host.expecting(ms) (and request(..., expect_ms=) / call(..., expect_ms=)) makes the link wait at least that and 0.5 s (link.EXPECT_MARGIN_S) for each answer, at any rate - so the raised-rate wait of a quarter of the lease applies to ordinary requests only. Passed down by riscv-dm run (timeout_ms), dmi (its wait_us and poll_us steps, riscv.dmi_wait_ms), attach with a reset (hold_ms, riscv and arm), capture start (the configured blocking_ms; a group's the longest of its tracks) and probe.config save (config.SAVE_EXPECT_MS, 2 s). Such a request that times out at a raised rate still falls back. The link's own confirms, keepalives, the step down's revert and pump never wait longer. Fix: the keepalive a raised link sends after 1 s of quiet now goes out before the request takes its corr (Host.before_request); it used to go out with a higher corr first, so the probe took the request for an old one (rejected result_lost).
  • (JA) probe で長くかかりうる要求はその間待つ(core §6.1: probe は要求の実行中 lease を数えない): Host.expecting(ms)(と request(..., expect_ms=) / call(..., expect_ms=))で、link はどの速さでも応答ごとに少なくともその時間と 0.5 秒(link.EXPECT_MARGIN_S)待つ。上げた速さでの lease の 4 分の 1 の待ちは普通の要求だけに掛かる。riscv-dm の run(timeout_ms)、dmi(wait_us と poll_us の step の和、riscv.dmi_wait_ms)、reset 付きの attach(hold_ms、riscv と arm)、capture の start(configure の blocking_ms。組はトラックの最長)、probe.config の save(config.SAVE_EXPECT_MS、2 秒)が渡す。そうした要求も上げた速さで時間切れなら戻る。link 自身の confirm・keepalive・降りるときの戻す・pump は長く待たない。修正: 上げた link が 1 秒黙った後に送る keepalive を、要求が corr を取る前に送るようにした(Host.before_request)。これまでは大きい corr で先に出ていたため、probe が要求を古いものとみなした(rejected result_lost)。
  • (EN) port_speed (core §3.5 items 3 and 7), after a V003 jig (classic ESP32 + CH340) passed 921600 each way alone but broke a frame every ~0.5 s under sustained duplex use, the probe reverted by itself and the session's lease lapsed: raise_speed adds a duplex phase after the in / out phases - link_source and link_sink (max_frame) interleaved, pipelined at the in-flight that passed, for duplex_s (1.0) and at least duplex_frames (64); a broken frame fails the rate ("broke both ways at once"). SpeedTrial.duplex_bytes / duplex_kb_s / broken_duplex, SpeedReport.duplex_kb_s, a duplex column in to_text(), oep speed --duplex-s. In use: while a raised rate is in force, the link counts broken frames and resends; 3 within 5 s (STRIKE_MAX, STRIKE_WINDOW_S) step down - port_speed step 2 at the raised rate (0.2 s, never sent again), the boot speed, a confirm, the request again there. A request at a raised rate that gets no answer at all keeps the old fallback (back, confirm, once more there), but each wait is now at most a quarter of the lease (at least 0.3 s), so it ends well inside the lease. Either way the rate is not used again in that session (SpeedReport.stepped_down, .down_why, a line in to_text(); raise_speed skips it, "stepped down from earlier in this session"). Fake: BrokenRate(duplex=True) breaks only while a request of min_size comes in with such an answer still unread (the request towards the probe, that answer towards the host), BrokenRate(every=N) only every Nth frame; fake_serve --broken-rate RATE[:MIN][:in|out][:duplex][:everyN].
  • (JA) port_speed(core §3.5 の 3 と 7)。V003 のジグ(classic ESP32 + CH340)で 921600 が向きごとには通ったのに、両方向を続けて使うと約 0.5 秒ごとにフレームが壊れ、probe が自分で戻り、セッションの lease が切れたため: raise_speed は in / out の後に両方向同時の確かめを足した - link_source と link_sink(max_frame)を交互に、通った同時の数で並べ、duplex_s(1.0)かつ duplex_frames(64)以上。1 つでも壊れればその速さは使わない("broke both ways at once")。SpeedTrial.duplex_bytes / duplex_kb_s / broken_duplex、SpeedReport.duplex_kb_s、to_text() に duplex の列、oep speed --duplex-s。使っている間: 上げた速さの間、link は壊れたフレームと送り直しを数え、5 秒の内に 3 つ(STRIKE_MAX、STRIKE_WINDOW_S)で降りる - 上げた速さで port_speed の step 2(0.2 秒、送り直さない)、起動時の速さ、confirm、要求をそこでもう一度。上げた速さで応答がまったく来ない要求はこれまでの戻り方(戻る、confirm、そこでもう一度)のままだが、待つ 1 回を lease の 4 分の 1(最短 0.3 秒)までにしたので lease の内に十分収まる。どちらでもその速さはそのセッションの間使わない(SpeedReport.stepped_down、.down_why、to_text() に 1 行。raise_speed は飛ばす: "stepped down from earlier in this session")。偽の probe: BrokenRate(duplex=True) は min_size 以上の要求が、同じ大きさの応答が読まれないうちに来たときだけ壊す(probe へはその要求、host へはその応答)、BrokenRate(every=N) は N 個に 1 つだけ壊す。fake_serve --broken-rate RATE[:MIN][:in|out][:duplex][:everyN]。

Repository: https://github.com/Open-Embedded-Probe/oep-client-python

Full Changelog: v0.0.25...v0.0.26