Files
MiPi_Investigation/__pycache__/master_loop.cpython-312.pyc

64 lines
10 KiB
Plaintext
Raw Normal View History

2026-05-06 15:57:48 +01:00
<EFBFBD>
OR<4F>i<EFBFBD><00><01>V<00>dZddlmZddlZddlZddlZddlZddlZddlm Z ddl
Z
ddl m Z ddl mZddl mZddlmZmZmZej*ej,d <09>
<EFBFBD>ej.d <0B>Zddd <0C>Zdd <0A>Z dd<0E>Zddd<0F>Zedk(rej<e<1C><00>yy)u<>Main entry point — the flicker hunt loop.
Runs on the host PC. Cycles power, arms the scope, restarts video, captures
4-channel waveforms + bridge/SoC registers, decodes timings + Lane 0 packets,
appends a row to flicker_log.csv. Repeats until KeyboardInterrupt or
--max-runs is hit.
If --pixel-clock differs from the default, DPHY_SPEC must be rebuilt for the
new UI before checking compliance.
<EFBFBD>)<01> annotationsN)<01>Optional)<01> registers)<01>report)<01>waveform)<03> PSUController<65>ScopeController<65>TargetControllerz1%(asctime)s %(levelname)-7s %(name)s: %(message)s)<02>level<65>format<61> master_loopc<01><><00>tjd<01><02>}|jdtd<00><04>|jdtdd<07><08>|jd tt
j d
<EFBFBD><08>|jd td d <0A><08>|jddd<10><11>|jdtt
j<00><04>|j|<00>S)NzMIPI flicker hunt loop)<01> descriptionz
--max-runs)<02>type<70>defaultz --timeoutg>@z!Scope trigger timeout per run (s))rr<00>helpz --pixel-clockzOverride pixel clock in Hzz--note<74>z3Note appended to every log row (e.g. 'dsi-tweak=5')z
--no-video<65>
store_trueu.Skip PUT /video — display blank/unblank only)<02>actionrz --output-dir)
<EFBFBD>argparse<73>ArgumentParser<65> add_argument<6E>int<6E>float<61>config<69>PIXEL_CLOCK_HZ<48>str<74> CAPTURE_ROOT<4F>
parse_args)<02>argv<67>ps <20>master_loop.pyrr"s<><00><00><10><1F><1F>,D<>E<>A<EFBFBD><05>N<EFBFBD>N<EFBFBD><<3C>c<EFBFBD>4<EFBFBD>N<EFBFBD>8<><05>N<EFBFBD>N<EFBFBD>;<3B>U<EFBFBD>D<EFBFBD>;<3B><13>=<3D><05>N<EFBFBD>N<EFBFBD>?<3F><13>f<EFBFBD>6K<36>6K<36>4<><13>6<><05>N<EFBFBD>N<EFBFBD>8<EFBFBD>#<23>r<EFBFBD>M<><13>O<01><05>N<EFBFBD>N<EFBFBD><<3C> <0C>H<><13>J<01><05>N<EFBFBD>N<EFBFBD>><3E><03>V<EFBFBD>5H<35>5H<35>N<EFBFBD>I<> <0C><<3C><<3C><04> <1D><1D>c<01><><00>|tjk(rtjStj|<00>}tj d|dz |d<00>tj |d<00>S)zCRecompute UI-dependent spec minimums if pixel clock was overridden.z:Rebuilding DPHY_SPEC for %.3f MHz pixel clock (UI=%.3f ns)g<00><>.A<>UI_NS)rr<00> DPHY_SPEC<45> derive_clocks<6B>log<6F>info<66>build_dphy_spec)<02>pixel_clock_hz<68>deriveds r"<00>_maybe_rebuild_specr-1s`<00><00><15><16>.<2E>.<2E>.<2E><15><1F><1F><1F><14>"<22>"<22>><3E>2<>G<EFBFBD><07>H<EFBFBD>H<EFBFBD> I<> <1B>c<EFBFBD> !<21>7<EFBFBD>7<EFBFBD>#3<>5<> <11> !<21> !<21>'<27>'<27>"2<> 3<>3r#c
<01>|<00>tjd|<00> |j<00>|j
s |j <00>|j<00>tjtj<00>|j<00>tj|j|<00><04>}tjd|<07>|j!<00>tjd<06>|j#<00>|j
s|j%d<07><08>|j'|j(<00> <09>}|s2tj d
|<00>tj*|d |d <0C>d <0A><03>y|j-<00>} |j/<00>}
|j1<00>} |j3<00>} t5j6| <09>} t5j8| |<02>}t;j<|
<EFBFBD>}t;j>| <0B>}t5j@| <09>}t5jB|<11>}t5jD| d| d<00>}|jGd<10>xs$|jGd<11>xs|jGd<12>}|rtj d|<00>tjH|| <09>tjJ|||| <0C>tjL|| |||<13>tjN|jP|| |||||jR<00><14>}tj*||<15>tjT|jP|| |||jR<00><15>}tjV|j|<16>| jGd<16>}| jGd<17>}tjd||rdnd|<17>tYjZ|<17>s|d<1B>nd|<18>tYjZ|<18>s |d<1B><04>yd<1C>y#t$r!}tj d|<06>Yd}~<06><03><>d}~wwxYw#t$r!}tj d|<06>Yd}~<06><03><>d}~wwxYw)Nz=== run %03d ===zdisplay_off failed: %szvideo_stop failed: %s)<02>root<6F>run_idxz run dir: %sg<00>?z static-pink)<01>mode)<01> timeout_sz,TIMEOUT waiting for scope trigger (run %03d)<29>run_<6E>03du: TIMEOUT — no scope trigger
<EFBFBD>DAT0_P<5F>DAT0_N<5F>flicker_detected<65>fault_a_detected<65>fault_b_detectedz)*** FLICKER EVENT CAPTURED (run %03d) ***)<08>run_id<69> sn65_parsed<65> measurements<74> spec_pass<73> packet_fault<6C>
lane_stall<EFBFBD> dsim_parsed<65>note)r:r;r<r=r@rA<00> t_hs_prepare<72>t_clk_prepare_plus_zerozArun %03d: flicker=%s | t_hs_prepare=%s ns | t_clk_prep+zero=%s ns<6E>YES<45>noz.1f<EFBFBD>nan).r(r)<00> display_off<66> Exception<6F>warning<6E>no_video<65>
video_stop<EFBFBD>
output_off<EFBFBD>time<6D>sleepr<00>PSU_POWER_CYCLE_DELAY_S<5F>
arm_singler<00> make_run_dir<69>
output_dir<EFBFBD> output_on<6F>
display_on<EFBFBD> video_start<72>wait_for_trigger<65>timeout<75> save_summary<72> download_all<6C>get_sn65_registers<72>get_dsim_registers<72>get_sn65_settling<6E> wave_analysis<69> measure_all<6C>check_spec_compliance<63> reg_analysis<69>
parse_sn65<EFBFBD>
parse_dsim<EFBFBD>decode_lane0_packets<74>classify_packet_fault<6C>detect_lane_stall<6C>get<65>save_waveforms<6D>save_registers<72>save_timing_analysis<69> build_summary<72>namerA<00> build_log_row<6F>append_flicker_log<6F>math<74>isnan)<19>idx<64>args<67>spec<65>psu<73>scope<70>target<65>e<>run_dir<69> triggered<65> waveforms<6D> sn65_data<74> dsim_data<74>settlingr<r=r;r@<00>packetsr>r?r7<00>summary<72>log_row<6F>hsp<73>cpzs r"<00>run_oner<65>;s<><00><00><08>H<EFBFBD>H<EFBFBD> <1F><13>%<25>1<><0E><1A><1A><1C> <10>=<3D>=<3D> 4<> <12> <1D> <1D> <1F><08>N<EFBFBD>N<EFBFBD><14><08>J<EFBFBD>J<EFBFBD>v<EFBFBD>-<2D>-<2D>.<2E>
<EFBFBD><14><14><16><14>!<21>!<21>t<EFBFBD><EFBFBD><EFBFBD><03>D<>G<EFBFBD><07>H<EFBFBD>H<EFBFBD>]<5D>G<EFBFBD>$<24><08>M<EFBFBD>M<EFBFBD>O<EFBFBD><08>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD>
<EFBFBD><15><15><17> <0F>=<3D>=<3D><0E><1A><1A> <0A><1A>.<2E><16>&<26>&<26><14><1C><1C>&<26>><3E>I<EFBFBD> <14> <0B> <0B> <0B>B<>C<EFBFBD>H<><0E><1B><1B>G<EFBFBD>t<EFBFBD>C<EFBFBD><03>9<EFBFBD>4T<34>%U<>V<><0E><16>"<22>"<22>$<24>I<EFBFBD><16>)<29>)<29>+<2B>I<EFBFBD><16>)<29>)<29>+<2B>I<EFBFBD><15>'<27>'<27>)<29>H<EFBFBD>!<21>,<2C>,<2C>Y<EFBFBD>7<>L<EFBFBD><1D>3<>3<>L<EFBFBD>$<24>G<>I<EFBFBD><1E>)<29>)<29>)<29>4<>K<EFBFBD><1E>)<29>)<29>)<29>4<>K<EFBFBD><1B>0<>0<><19>;<3B>G<EFBFBD> <20>6<>6<>w<EFBFBD>?<3F>L<EFBFBD><1E>0<>0<><19>8<EFBFBD>1D<31>i<EFBFBD>PX<50>FY<46>Z<>J<EFBFBD> <14><0F><0F>*<2A>+<2B> .<2E> <17> <1B> <1B>.<2E> /<2F> .<2E> <15>><3E>><3E>,<2C> -<2D><15>
<18> <0B> <0B> <0B>?<3F><13>E<> <0B><19><19>'<27>9<EFBFBD>-<2D>
<EFBFBD><19><19>'<27>;<3B> <0B>X<EFBFBD>F<>
<EFBFBD><1F><1F><07><1C>y<EFBFBD>,<2C>PZ<50>[<5B><14>"<22>"<22><16>|<7C>|<7C><1F>!<21><1B>!<21><1D><1F> <11>Y<EFBFBD>Y<EFBFBD> <06>G<EFBFBD> <0B><17><17><07><17>)<29><14>"<22>"<22><16>|<7C>|<7C><1F>!<21><1B><1F> <11>Y<EFBFBD>Y<EFBFBD> <06>G<EFBFBD> <0B><1D><1D>d<EFBFBD>o<EFBFBD>o<EFBFBD>w<EFBFBD>7<> <17>
<1A>
<1A>><3E>
*<2A>C<EFBFBD>
<16>
<1A>
<1A>4<>
5<EFBFBD>C<EFBFBD><07>H<EFBFBD>H<EFBFBD>K<> <0B>!<21><05>t<EFBFBD><1B><0F><04>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F>3<EFBFBD>s<EFBFBD>)<29>U<EFBFBD><1B><0F><04>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F>3<EFBFBD>s<EFBFBD>)<29> <06>
FK<01> <06><>c <15>1<> <0B> <0B> <0B>,<2C>a<EFBFBD>0<>0<><30>1<><31>
<19> 4<> <0F>K<EFBFBD>K<EFBFBD>/<2F><11> 3<> 3<><33> 4<>s.<00>O$<00>P<00>$ P<03>-P <03> P<03> P;<03>P6<03>6P;c<01><><00>t|<00>}t|j<00>}tj d<01>t t j<00>}tt j<00>}tt jt j<00>} tj d<02>|j<00>|j<00> |j<00>|j s|j#<00>d} |dz } t)||||||<05>|j.<00>0||j.k\r!tj d|j.<00>n<01>S |j<00>|j1<00>|j1<00>y#t$$r }tj'd|<06>Yd}~<06><>d}~wwxYw#t*$r<00>t$$r!}tj-d||<06>Yd}~<06><>d}~wwxYw#t*$rtj d<08>Y<00><>wxYw#t$$rY<00><>wxYw# |j<00>n#t$$rYnwxYw|j1<00>|j1<00>wxYw) NzConnecting instruments...zConfiguring scope...zInitial reset failed: %sr<00>zrun %03d failed: %szReached --max-runs=%d, stoppingzInterrupted by user)rr-<00> pixel_clockr(r)rr<00>PSU_IPr <00>SCOPE_IPr
<00> TARGET_IP<49> TARGET_PORT<52>setuprLrGrJrKrHrIr<><00>KeyboardInterrupt<70> exception<6F>max_runs<6E>close)r rqrrrsrtrurvrps r"<00>mainr<6E><00>s<><00><00> <15>d<EFBFBD> <1B>D<EFBFBD> <1E>t<EFBFBD>/<2F>/<2F> 0<>D<EFBFBD><07>H<EFBFBD>H<EFBFBD> (<28>)<29>
<17><06> <0A> <0A>
&<26>C<EFBFBD> <1B>F<EFBFBD>O<EFBFBD>O<EFBFBD> ,<2C>E<EFBFBD> <1D>f<EFBFBD>.<2E>.<2E><06>0B<30>0B<30> C<>F<EFBFBD>!<14> <0B><08><08>'<27>(<28> <0A> <0B> <0B> <0A> <0B><0E><0E><18> 7<> <12> <1E> <1E> <20><17>=<3D>=<3D><16>!<21>!<21>#<23><10><03><12> <0F>1<EFBFBD>H<EFBFBD>C<EFBFBD> =<3D><17><03>T<EFBFBD>4<EFBFBD><13>e<EFBFBD>V<EFBFBD><<3C> <14>}<7D>}<7D>(<28>S<EFBFBD>D<EFBFBD>M<EFBFBD>M<EFBFBD>-A<><13><08><08>:<3A>D<EFBFBD>M<EFBFBD>M<EFBFBD>J<><15><13><16> <11> <0F>N<EFBFBD>N<EFBFBD> <1C> <0E> <0B> <0B> <0A> <0B> <09> <09> <0B> <0C><>5<19> 7<> <0F>K<EFBFBD>K<EFBFBD>2<>A<EFBFBD> 6<> 6<><36> 7<><37>%<25> <16><15><1C> =<3D><13> <0A> <0A>3<>S<EFBFBD>!<21><<3C><<3C><> =<3D><> <1D>(<28> <0B><08><08>&<26>'<27>(<28><>
<19> <11> <10> <11><> <11> <0F>N<EFBFBD>N<EFBFBD> <1C><><18> <11> <10> <11><> <0A> <0B> <0B> <0A> <0B> <09> <09> <0B>s<EFBFBD><00>5G<00>,E<<00>3G<00><F(<00> =G<00> H<00> H<00>< F%<03>F <03>G<00> F%<03>%G<00>(G<03>:G<03>G<00>G<03>G<00>G?<03><H<00>>G?<03>?H<00> H<03> H<03>I<03>H$<04>#I<03>$ H0<07>-I<03>/H0<07>0$I<03>__main__)N)r <00>Optional[list[str]]<5D>return<72>argparse.Namespace)r+rr<><00>dict)rprrqr<>rrr<>rsrrtr rur
r<><00>None)r r<>r<>r)<1F>__doc__<5F>
__future__rr<00>loggingrn<00>sysrM<00>typingrr<00>analysisrr`rrr]<00>hardwarerr r
<00> basicConfig<69>INFO<46> getLoggerr(rr-r<>r<><00>__name__<5F>exit<69>r#r"<00><module>r<>s<><00><01> <04>#<23><0F><0E> <0B>
<EFBFBD> <0B><1B> <0A>.<2E><1B>.<2E>E<>E<><13><07><13><13>
<11>,<2C>,<2C> ><3E><02><18>g<EFBFBD><17><17> <0A>&<26><03> <1E>4<>_<06><1E>_<06>'6<>_<06>$<24>_<06>)-<2D>_<06>D, <0A>^ <0C>z<EFBFBD><19> <0C>C<EFBFBD>H<EFBFBD>H<EFBFBD>T<EFBFBD>V<EFBFBD><14>r#