Skip to content

v0.0.40

Choose a tag to compare

@github-actions github-actions released this 30 Oct 08:39
· 13 commits to main since this release

0.0.40

  • (EN) Labels may carry the target pin a line reaches (oep-spec host guide §5.3): S.N@P, and S@P for a line with no
    role. settings.parse_label, pin_from_labels, label_text, pin_name; port_line / find_line read S.N@P as
    S.N, ports_named counts S@P. oep pins --save writes the pins: the debug and NRST pins from
    targets.FAMILIES (nrst_pad), the rest from the map (x035@pb6; a role the port's labels give is kept).
  • (JA) label に、線がつながる target のピンを持たせられる(oep-spec host ガイド §5.3): S.N@P、役目の無い線は S@P。
    settings.parse_label、pin_from_labels、label_text、pin_name。port_line / find_line は S.N@P を S.N として読み、
    ports_named は S@P も数える。oep pins --save はピンも書く: debug と NRST のピンは targets.FAMILIES(nrst_pad)から、
    ほかは map から(x035@pb6。口の label が持つ役目は保つ)。
  • (EN) oep pins leaves alone a channel labelled for something else (another port's line, or a name only such as
    rgb_led); the --name port's own lines stay in. The CH32X035's NRST (PA21) is read from its option bytes as the
    V00x's (RST_MODE 11: none); with an NRST on, the reset step runs before the map and the map never drives the reset
    line (or the port's labelled nrst); a pad the option bytes leave a GPIO is mapped like any other. The reset search
    tries the port's labelled nrst first.
  • (JA) oep pins は、ほかのもののラベルが付いたチャネル(別の口の線、または rgb_led のような名前だけのもの)を触らない。--name の
    口の線は対象に残る。CH32X035 の NRST(PA21)は、V00x と同じく option bytes で有無を読む(RST_MODE 11 は無し)。NRST が有効なら
    reset の段階を map の前に走らせ、map はリセットの線(と口のラベル nrst)を駆動しない。option bytes がふつうの GPIO にしているピンは
    ほかと同じに対応を調べる。リセットの線の探索は、口のラベル nrst を最初に試す。
  • (EN) oep pins finds more and maps the wiring. The scan goes the nearest pairs first, in batches, until one answers
    or --budget (new; default 55 s) is spent - the 600-pair limit is gone; --all-pairs goes on to the last pair;
    the report says when not every pair was tried (unique-in-partial, not-finished), and exit 0 means one target
    found. A driven-low channel is also tried as SWDIO (after the floating pairs at the same distance): a target that
    was talked to may keep its SWDIO low. When nothing answers the lines are read again and the new pairs scanned.
    --pairs SWDIO:SWCLK,... names the pairs to try. A new map step (before reset) says which target pad each
    channel reaches: the hart halted, its pads floating inputs, each channel driven high and low and the target's INDR
    read; a pad that seems to follow two channels is tried again with the others held low (a floating line keeps
    what a neighbour coupled into it); pads bonded to one lead are named together ("PC16/PC11"). --name now labels
    the debug lines too (<name>.swdio / <name>.swclk, or <name>.swio), so oep://<unit>/<name> opens the
    target. targets.FAMILIES carries each family's GPIO block, debug pads, bonded pads and whether it has an NRST to
    look for (the CH32X035: none).
  • (JA) oep pins がより広く探し、配線の対応を出す。スキャンは近い組から順に、まとまりごとに、答えが出るか --budget(新設。既定 55 秒)
    を使い切るまで進む(600 組の上限はなくした)。--all-pairs は最後の組まで進む。全部の組を試していないときはレポートがそう言う
    (unique-in-partial、not-finished)。終了コード 0 は、ターゲットが 1 つ見つかったこと。low に駆動された線も SWDIO として試す(同じ
    距離の浮いた組の後): 話しかけた後のターゲットは SWDIO を low に保つことがある。何も答えなければ線を読み直し、新しい組をスキャンする。
    --pairs SWDIO:SWCLK,... で試す組を指定できる。新しい段階 map(reset の前)は、ターゲットのどのピンが各チャネルにつながるかを出す:
    ハートを止め、ピンを浮いた入力にし、各チャネルを high と low に出してターゲットの INDR を読む。2 つのチャネルに追従するピンは、ほかを
    low に保って試し直す(浮いた線は隣の線から拾った電荷を保つ)。パッケージの中で 1 本のリードにつながる GPIO はまとめて出す
    ("PC16/PC11")。--name は debug の線にもラベルを付ける(<name>.swdio / <name>.swclk、または <name>.swio)ので、
    oep://<unit>/<name> でターゲットを開ける。targets.FAMILIES に、系列ごとの GPIO の配置、debug のピン、1 本のリードにつながる
    GPIO、探す NRST があるか(CH32X035 は無い)を持たせた。
  • (EN) probe_log: a probe's own log (oep-probe-arduino's OepProbeLog.h) read as lines - each line's text cut at its
    mark, with the probe's clock -, sample_of placing a line in a capture segment (the same clock as its start_ns),
    rows giving the lines as a recorder's log rows (WireSkein's run.json: the host's time.monotonic() from Host.clock
    readings, probe_ns, boot_id, the probe's name; # lines as markers). Missing lines show: a lost mark, a jump in the
    marks' serials, a read past what is kept.
  • (JA) probe_log: プローブ上のコードのログ(oep-probe-arduino の OepProbeLog.h)を行として読む - 各行の本文をそのマークで切り、プローブの
    時計を付ける。sample_of は行をキャプチャの区画に置く(start_ns と同じ時計)。rows は行を記録器のログの行にする(WireSkein の
    run.json: Host.clock の読みから求めたホストの time.monotonic()、probe_ns、boot_id、プローブの名前。# の行はマーカー)。欠けた行は
    分かる: lost のマーク、マークの通し番号の飛び、残っていない所からの読み。
  • (EN) Capture data format 2, the analog blocks (oep-if-capture §1.4): AnalogCapture.configure(carriage={role: (kind, D)}) (kind a bit set of capture_blocks.PACKED / MINMAX / SUM), analog_blocks() reading a segment into its
    blocks (capture_blocks.read_analog_blocks, checked against oep-spec's shared vectors), Config.segment_bytes of the
    fixed-size blocks. The virtual bench's analog declares format 2 and makes it in every mode, the trigger judged on the
    original samples.
  • (JA) キャプチャのデータの形式 2、アナログのブロック(oep-if-capture §1.4): AnalogCapture.configure(carriage={role: (kind, D)})
    (kind は capture_blocks.PACKED / MINMAX / SUM のビット集合)、区画をブロックに読む analog_blocks()
    (capture_blocks.read_analog_blocks、oep-spec の共有ベクタで確かめた)、大きさの決まったブロックの Config.segment_bytes。仮想ベンチの
    アナログは形式 2 を宣言し、どのモードでも作る。トリガは元のサンプルで判定する。
  • (EN) The capture's optional features in the virtual bench, declared by virtual_bench.with_capture_options(probe):
    named formats (format 0xFF, format_names), the front end of §3.8 (threshold, glitch filter - the data and the trigger
    after it -, external clock with a qualifier and format 3's timed states, coupling, offset in the scale's zero,
    bandwidth, impedance, resolution and oversample setting b) and the external data paths of §3.9 (TCP with mux 0 / 1,
    UDP packets, the OEPX mark, write_pos, read refused, the overflow check against the path's capacity, a path that goes
    stopping its tracks in error). A probe without a declaration does not have the feature (its TLVs unknown). Client:
    configure(format_name=..., options={...}) sends them (critical, overflow plain), Config.used / timebase /
    format_name / external_clock read the answer, state_timed() reads format 3.
  • (JA) キャプチャの任意の機能を仮想ベンチに足した。virtual_bench.with_capture_options(probe) で宣言する: 名前付きの形式(format 0xFF、
    format_names)、§3.8 の前段(threshold、グリッチフィルタ - データとトリガの両方がフィルタの後 -、qualifier 付きの外部クロックと形式 3 の
    時刻つきのステート、coupling、scale の zero に入る offset、bandwidth、impedance、b を決める resolution と oversample)、§3.9 の外部の
    経路(TCP の mux 0 / 1、UDP のパケット、OEPX の印、write_pos、read の断り、経路の帯域に対する overflow の確かめ、切れた経路はトラックを
    エラーで止める)。宣言の無い probe はその機能を持たない(TLV は知らないもの)。クライアント: configure(format_name=..., options={...})
    で送る(critical、overflow は印なし)。応答は Config.used / timebase / format_name / external_clock、形式 3 は state_timed() で読む。
  • (EN) The virtual bench models fixture §5-§9 (virtual_fixture_drive): the I2C and SPI controllers, PWM, the edge
    counter and the DAC on p4-x035 and esp32-v003, with their refusals, results, times and plan rules. Found against the
    spec and fixed: esp32-v003-64 declared the Wi-Fi items below their max_frame floor; a gateway outside the prefix got an
    address; unit_id any was taken; a save of the same contents was written again; the controllers' max_length did not
    fit a 64-byte frame.
  • (JA) 仮想ベンチが fixture §5〜§9 をモデルにした(virtual_fixture_drive): I2C と SPI のコントローラ、PWM、エッジのカウンタ、DAC を
    p4-x035 と esp32-v003 に。断り、結果、時間、plan の規則も。仕様と照らして見つけて直したもの: esp32-v003-64 が max_frame の下限より下で
    Wi-Fi の項目を宣言していた。prefix の外の gateway でアドレスを得ていた。unit_id any を受けていた。同じ内容の save を書き直していた。
    コントローラの max_length が 64 byte の frame に収まらなかった。
  • (EN) The virtual bench's capture-group trigger source has the rest of §4.4 where with_capture_options declares it:
    pulse, analog_pulse, pattern, serial (UART: it decodes the logic waves' 8N1 lines; I2C / SPI not declared), the
    external input trig_in (a TEST HOOK level per role, judged at 1 MHz) and trigger_out (its pulses kept), the group's
    trig_in / trig_out plan roles, and rearm 1 with holdoff (repeat: a segment a track at every event; streaming: records
    without cutting). Instants count only after their stage is entered. Client: Cond.pulse, analog_pulse, pattern,
    uart, external, TriggerSource(trigger_out=...).
  • (JA) 仮想ベンチの capture-group の出来事の元が、with_capture_options の宣言で §4.4 の残りを持つ: pulse、analog_pulse、pattern、serial
    (UART: ロジックの波形の 8N1 の線を復号する。I2C / SPI は宣言しない)、外部の入力 trig_in(役割ごとの試験用のレベル、1 MHz で判定)と
    trigger_out(パルスを記録する)、組の plan の役割 trig_in / trig_out、holdoff つきの rearm 1(リピート: 出来事ごとに各トラックの区画、
    ストリーミング: 区画を切らずに記録)。瞬間の条件は、段に入った後だけを数える。クライアント: Cond.pulse、analog_pulse、pattern、uart、
    external、TriggerSource(trigger_out=...)。
  • (EN) docs/trace follows oep-spec 02c08c9 for every document: each unit traced to the tests that prove it or excluded
    with its reason.
  • (JA) docs/trace をすべての文書で oep-spec 02c08c9 に追従させた。どの単位も、証明する試験か、理由つきの除外を持つ。
  • (EN) The independent conformance checkers follow oep-spec 02c08c9 (they were pinned to a09fa45's text): the reviewed
    document hashes moved after reading the changes. fn 0's required ops are the eight core ops, get with settings, state
    with save, network with a netif (core §11) - the checkers had taken every registry core op as required. The Host request
    policy (HostRequestChecks and its sample encoder) keeps its policy by TLV name and takes the numbers from the selected
    registry (the wire and capture TLVs were renumbered); it covers the capture TLVs added since (critical: format,
    format_name, data_path, carriage, trigger_opts and the §3.8 front-end ones). The core response oracle knows item, setting,
    setting_choice, channel_name and netif, and no longer label. The capture configure sends block_max without the critical
    bit (§3.3's table).
  • (JA) 独立した適合の検査器を oep-spec 02c08c9 に追従させた(a09fa45 の本文に固定されていた)。変更を読んでからレビュー済みの本文の
    hash を上げた。fn 0 の必須の op は core の 8 つと、設定があれば get、save があれば state、netif があれば network(core §11)。検査器は
    registry の core の op をすべて必須と見ていた。Host の要求の方針(HostRequestChecks と見本の encoder)は TLV の名前で方針を持ち、番号は
    選んだ registry から引く(wire と capture の TLV は番号が振り直された)。その後に増えた capture の TLV も扱う(critical: format、format_name、
    data_path、carriage、trigger_opts と §3.8 の前段)。core の応答の答え合わせは item、setting、setting_choice、channel_name、netif を知り、
    label は外した。capture の configure は block_max を critical なしで送る(§3.3 の表)。
  • (EN) fixture.Pwm, fixture.Counter, fixture.Dac (oep-spec 02c08c9, fixture §7-§9): Pwm.set / start / stop /
    status (PwmOutput: the frequency as num / den and the duty made), Counter.measure (Count: the window and the edges a
    role, hz()), Dac.set / status / value_for_mv. dump knows all three. tests/hw: pwm_counter - a PWM on a free
    channel counted on that channel (no wiring), the edges against the frequency made, none after the stop.
  • (JA) fixture.Pwm、fixture.Counter、fixture.Dac(oep-spec 02c08c9、fixture §7〜§9): Pwm.set / start / stop / status
    (PwmOutput: 出した周波数 num / den とデューティ)、Counter.measure(Count: 時間と role ごとのエッジの数、hz())、Dac.set / status /
    value_for_mv。dump は 3 つとも知る。tests/hw: pwm_counter - 空いた端子に PWM を出し同じ端子で数える(配線なし)。出した周波数とエッジの
    数を突き合わせ、止めた後は数えない。
  • (EN) stimulus.find(hst): an analog stimulus the probe's labels allow - a drive <port>.stimulus and an ADC input
    <port>.stimulus_in (nothing else is moved: a line another bench's target owns is not the tests'), checked on the wiring
    of the day (the input low near the bottom, high clear of it by half the range); Stimulus.level() a level a crossing
    passes. tests/hw: capture_analog_trigger - crossings up and down on the pair, or force on the trigger path without
    one; the board table's analog (a floating ADC channel: the P4s' 17) lets the analog and capture-group tests run where
    no other channel is free.
  • (JA) stimulus.find(hst): probe の label が許すアナログの刺激 - 動かす線 <port>.stimulus と ADC の入力 <port>.stimulus_in(ほかは
    動かさない: ほかのベンチのターゲットの線は試験のものではない)を、その日の配線で確かめる(入力が low で底近く、high でそこから範囲の
    半分以上離れる)。Stimulus.level() は横切りが必ず通る値。tests/hw: capture_analog_trigger - その組での立ち上がりと立ち下がりの横切り、
    組が無ければ force でトリガの経路。ボード表の analog(浮いた ADC の端子: P4 は 17)で、ほかに空いた端子の無いボードでもアナログと
    capture-group の試験が走る。
  • (EN) fixture.I2cController and fixture.SpiController (oep-spec 71f3feb, fixture §5, §6): the probe as the I2C /
    SPI controller. I2C: transfer of I2cSegments joined by repeated STARTs (stop=False keeps the bus), write,
    read, write_read, stop; the NACK / bus error / stretch timeout as I2cTransfer.result. SPI: transfer of
    SpiItems run back to back with CS's gap / setup / hold, SpiDone with the times the probe kept; exchange.
    configure returns the clock used. The registry and the vectors from oep-spec 71f3feb.
  • (JA) fixture.I2cController と fixture.SpiController(oep-spec 71f3feb、fixture §5、§6): probe が I2C / SPI の controller になる。
    I2C: repeated START でつなぐ I2cSegment の transfer(stop=False でバスを持ったまま)、write、read、write_read、stop。
    NACK・バスのエラー・stretch の打ち切りは I2cTransfer.result。SPI: CS の gap / setup / hold を指定した SpiItem を続けて行う transfer、
    probe が守った時間を返す SpiDone、exchange。configure は使う clock を返す。registry とベクタは oep-spec 71f3feb。

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

Full Changelog: v0.0.39...v0.0.40