Repository navigation
v0.0.40
0.0.40
- (EN) Labels may carry the target pin a line reaches (oep-spec host guide §5.3):
S.N@P, andS@Pfor a line with no
role.settings.parse_label,pin_from_labels,label_text,pin_name;port_line/find_linereadS.N@Pas
S.N,ports_namedcountsS@P.oep pins --savewrites 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 pinsleaves alone a channel labelled for something else (another port's line, or a name only such as
rgb_led); the--nameport'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 labellednrst); a pad the option bytes leave a GPIO is mapped like any other. The reset search
tries the port's labellednrstfirst. - (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 pinsfinds 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-pairsgoes 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 newmapstep (beforereset) 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").--namenow labels
the debug lines too (<name>.swdio/<name>.swclk, or<name>.swio), sooep://<unit>/<name>opens the
target.targets.FAMILIEScarries 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_ofplacing a line in a capture segment (the same clock as its start_ns),
rowsgiving 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 ofcapture_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_bytesof 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_clockread 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_idanywas 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_idanyを受けていた。同じ内容の save を書き直していた。
コントローラの max_length が 64 byte の frame に収まらなかった。 - (EN) The virtual bench's capture-group trigger source has the rest of §4.4 where
with_capture_optionsdeclares 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>.stimulusand 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'sanalog(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.I2cControllerandfixture.SpiController(oep-spec 71f3feb, fixture §5, §6): the probe as the I2C /
SPI controller. I2C:transferofI2cSegments joined by repeated STARTs (stop=Falsekeeps the bus),write,
read,write_read,stop; the NACK / bus error / stretch timeout asI2cTransfer.result. SPI:transferof
SpiItems run back to back with CS's gap / setup / hold,SpiDonewith the times the probe kept;exchange.
configurereturns 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