From a9f82985bc2d2a088307664478508f12f42902e3 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 9 Sep 2021 17:52:36 +0200 Subject: [PATCH] programs, but flashes checksum wrong --- .../bin/jungfrauDetectorServer_developer | Bin 270692 -> 271556 bytes .../slsDetectorServer/include/common.h | 3 +- .../include/programFpgaBlackfin.h | 5 +- .../slsDetectorServer/src/common.c | 33 ++++++++-- .../src/programFpgaBlackfin.c | 58 +++++++++++++----- .../src/slsDetectorServer_funcs.c | 9 ++- slsDetectorSoftware/src/DetectorImpl.cpp | 10 +-- slsDetectorSoftware/src/Module.cpp | 27 +++++++- slsSupportLib/include/sls/sls_detector_defs.h | 3 +- slsSupportLib/include/sls/versionAPI.h | 2 +- 10 files changed, 115 insertions(+), 35 deletions(-) diff --git a/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer b/slsDetectorServers/jungfrauDetectorServer/bin/jungfrauDetectorServer_developer index b46df8aa27b3166250940f701a706e4ec2d7587e..26c0b2cccd1e35aed303d8e2675a424e3af3a482 100755 GIT binary patch delta 114108 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
HlS6t!_i9de>u9=5x zr~`{Ua0vxT4#O1@uohymOb07Ian|Z3O8Sx)K54=y&A5VyA)qOxTG4F)Z!9M{Tk2r9l|9?a78q(Scoe$uAt=g>mZeN8Fgpb0bF4{ zgD*z4JbggO(+9QuqDROt`m{XPE#$dD7y`o}pXIqgUfjZqW$-i{)G9GpsKijM9&-@t zF$%IQnegR=yAkd|I4*gNIwDDq#lxjK!Zx z_%R(nW{yd7`Fxw(tNG9XtU|0_K@F|T6_3Q+0 zQ@D*%Z?C{@RLEDb!Yh>WHz@KO%)C1VH?71?DER6j+*F2}cH^cT+?0=-YViNQX8aU@ zpTgh}yojGrs6LA?gRXDDjGu;Z(-@X1!ZIaTWDtv-$0B5Kdm5H-!4e)=q5w-!QGMF6 z#0f0Hy)XBH8CW0(cEgjD91GnO0j;~asG{U(9z;olc0o!wCmjo5`Z;JkXD5x1BaIIw z4d%-T#ubaGpo>T#nS_%`c=>Fhmh9EW`WTJFrX_mZ`=v4Oj$4ccbX; z#Gx(#150-``27yC9K9YLs(`Mi(rYmbS&bFMFO;X9mQVHru~kh{f?ncphVZ= z!UR6C1U|7vu_zX=)m>D)yQp}}j!+>xwAz1OsQp;*r9l)M*6R05h5CJ>{;{gU$5nh9 zui%qc^0nIFDAWcQBH+W{Uz`7)0~8OcSd7-y|H4EAVhPL7R^<#MvJ$4gm|k@i-U{| z4raq{*sI0cyz}-9m;tk3DJ;{XrBaBNz3?;~)S`8U5Us9|5p!#X7Vq%hJG}SKet1BO zwqzmNmTU3uQglev!g|PAh(j(~92$hfTD+Ge#Cs`P{CANM|6L55VGHbo16mxRw?1MA zV_`hZhPkjB)@t!TE<*f|8~10pAL2fW`xuxGGvOAv4c5W^+A5A}Ac)wPN_Z#3S z9MhtM7dv>dgYXW*k4*@1TycM%`wLne59dCTa1=g$_6B|>~qszv8IAv)JX z-tXl7&Xe%879R!)@nHz0fFBlHwK(A_#0huEizj&TBM%`yvcMder$rYo=)wgb6?0z# zDd|U)^kYi;F(vK7a$Q)iJ5h-4WVjv{YVjHAeMWkHSg;QZ_74e8;AwG+q0uR=1^t{D zu;Q!FdGT{zJiS|p(|fe|;)oDmV3sqyaE2GojtFsfREu+z_#7o3hQpCs-kL7tt(f!^ zT=EGn`6L5oK}!A!CI93&JfTHTfDk=Fa2wnX&%+B^d>So;_0xr1>=okEYAt#hE%rL_ zVjC|WCZabHeITalp)T|cz%#@TC4M;E0e8VMIL`ZpyuSgq!b6boUcx_1!x9--q8v-? z#1gowA6K315ms@s50eaIlJi&s-+Yd5PGiE;nDC1|Sb{I{3@@DFg|qEgqC<6wF1zbz1PR z`HC^p8OwwDeE(x@TpXrknD8Q&7^hN%$ zJfx+`RY;RNE{GU1%^}XfSWUGB-GB$-l}fT?1h|WW;`B0Szi6{Tuf~#wu|*g%>Tn zXrZJQN_yKie7PMqz$PtkKOyAp-S{>Z-^SzHb@+BYq+qis*pD*_&&Jmt+*=4Q=lM?V ztGKt;Xz80Hq;DQ%AnZF2lCUoc-{~*poq=!=4r}QbEu`NqdB{a{$L zmf^&Eka!Pb`Uf%nL;Hn%2-nT`6;?TaHW&Fq&M$z+;R!9H1B8qY(lXY}c}PbRE+yeI z61F2@2Urbj$>0zf93f#R5}pCcD1wY0Y9oWgq!&zjp>Q+Y0SAYKF|iJ&AA zdto)i0ufjsVgR1ea;_3`t{o(UxnwXm3`W2tm;$MsbE%wjsf2T>gx0zEVlKXzi|^;+ z`?=@g1uY}dG!jiCsRNPJfe2oV;KheJFl{HMjKq{tkV-h8N;sd&HJ{2A9fN6OwR|{1 z$cK|4mHA;Ra}2JG!Id#65`!W!wXlKje}NWqfmzE1ys&^57U0_j_?CuDF4T~cFQnuP zH^9xX4(``-QJ|2Eg7KjjE}RKbEEdHUQ}V@>d@+@BF_m&L3M@u}#XDgIJPMC%8Bf0P zX1@P;UWn&~c;+I8n zj~~?Xr}KpTX*4Y6`~PVP5w;Lv8|;NAiFlZZ?OG;#2$^glyn*m0UdZ9aJT0FN~u~0G=N{)c@;Cfid^K72yLefnk-6yC+Pf&-RF!TLCL9JZwF644g z0y4SJ=6*N#d$fGgQOGBq;X)V(DcO^h>?uCOr}zw?ii1nx2prWi4GX1Vp|nsK4r5>} z#4>4ECM^SI!F*T%ttDKPa|)}LEd|o_gH3<&yH!y=u2jr zp$l~5`_J^|!iRuB7z`s}6pV)nFcqeeKqU$6LRAqB~!AkR~2pSMzLpD*L0 z9P;3K<3R&#f^G0H?1Wu#0G@%Pa7;^vb8?*-x~iugsuFV^yfcp+a% zfPHWPqPX=1G=E`?fN?Du56XNJ%;z)8=QGNu;OQ?}9z>3><>I zpU?X*Qa4_tZoKFQJ)jTtgTXKqM!^`E0Fz)E-~WplB(RqRstMS_gKcmRtbzw&tCs6Y zXgvw7_lJShS`siUXDx&qU;}K@vJlf3V){Z~IGgyi6YFUw)|2jf(*2p2kUyKL<~UPkQc4%xL*(PwH03%kZ}PS7qr4d5EB+)!JlE; zpJCdcrNc~E0V`oMY#}`}={Z6aC`5t60$2pCwOllykpmhz!4Mb*`A&b%clz_wa8S#l z}G9jDq{&0XPcBwERV~kiS?C>)?LA|6g=+(WPYxrZ2(tB}p&^ zQqmGiTG9?XwEU%~kiYbT;V@Fmswg3=Vzk_kg8NbMEqwhJzW!~ukiYHKau4b5A>H3$ zx!+;Aj#42z%6LvXza^dS9YS_ncWLEbDwKN}?1U_e-OO_F%`6vt_zC6VPdIB{?ju@x zMhoS+5XQpb6qY0GqU$#p2s67T;ziz!aDb*Fm1oYSwCYhETJ!wDJoQ$}dE# zpRibK{RykJ0jzZeu+|k&47WfQLIZMO5+tF3b&xf$0Dl+=Bj7x^6YeIVM4^6?%zY2{ zeeeuKVMf7|Ba!Ry=Mqs;4p4>UP#GJG9D1 zv1}AuLk4TeU`++Ageba(=W8hG8Zufl1V`Y6P&rDg90%wGQ8)*Ma|+=G$ogsy1zKzM z7HX{z7bvh61=hwxd>c-N;bizC8NEnGFO{=C$%5-kV{n4yNEF$CA{$4A+Bl}wR^o3Z z1Yhi;{O(8-xMM4&8n^rXA~d;+5d9IBB&cTBs#)++!K$3o0H3<56&lJK+|{*Rh1J zV+kc)(gKgd<612Zt2e8C}0f-CVq|&{42nDGt2e-jWVNwUHZA1TK`qmo6T44xFd2TG_d1x6t zC}i+3YY()>A+*N#WwYjx3u*4}E7f9Kn-JSrx9aWXy_0YV(i7jho>iMdR%;meT7rnj zirveCHO*AkG}9nsgikiWX4nF|VXqd}9uF2bEi7`f`q2{x^I-wp0e8V3*at7d2^KvA zS@aBsagaIQr>w4ix*gWS1~>voQOpU&X24QN^M5P-(XI4HmUI+kG<+h7W#<%qw>Z(n zMKkNiMC>l(K|1$Fgf7?v2jMW!ck;Z#=5o~Z@HDy-cQ0G&QB#EVZI&+IzQD?UCoB7O zJE1u&Y2-l+8HyqAr~A2|{KKkP(x6)lA7RB|l$C~)tTdcvV!xM(eYKYJJ%pTZftfHH zw!y=k0YD)Gfer95Y}ePxjqZ#9=y*5s;>PU8!1qm$Ok;p1nz42> zIyYCay>W=`jU#Mp%wSu?6_&%DkY&$O(9#TB@ai9fh4^Er7JsaOm2jMW5yAe*QkVz{Zza5y z@OKD*Ckn>EO1Kx|#dq*xTMYXqu@HsZP`HhC*EZH&-;KoDQIL$^CF6HV=Md=}3Wecp zZyZYGBAEcZdI+x`Isv=cXCb5a$mqQ$*sR52Hz5vtzyeqVhu{eND6`o|p@aS(5^g8q zc6aCr`Ci)jUfNNt9mU$KVJ$@Ab`<_otPp>SXM5vMWn7fQVR&APqw(ywBtS}Xl#;xU zso%%c?^E60r@Fo02M5?^!L%Kiwj%%r!EBfdDG0+D(ZP4o!FSQo1N+#A31=TB64t^7 z$cK5%%9nZU3>QOe(D<@JGaDAe5;khgY}7bHO7H zJwd{sk??1jxDONeVY`{Sn3X#-C%jAi+PA;0Owg zpuh+v9HE3G9k5f2uQ1hDSn4ZG_!TDnst*pZ&B6V7?nh^`>);E?aFh(c9$~j(l--3U zb{Cqp_{Ld?Z(Jas`!^e47wpku%o-)c7z&J~!ZcV58z83sE2h4fFT}+H*aQ36Kk;Y( zBoLOvo$N+vb|cIX3you;@ebI@?gSZpM+OtbpCJAO1)QLO6MJE`7MJ{lxa80Ge~AZ| zcyNgqFLknw5z974JS>Cdum|>O$qKEM4C-YuEP=!DJlh;KY;)AHt)bY~u!9R>9L$FW z@CZE0_QnjhIaqJec`zR~L54R{pW$Li%W1*ve}uwvxDy_NM<5DJLjk)`A??Cp0W5+v zt9I>LPS-+CXFhekn~>MjFJ2!H6JP^uf@5%8%NaEHGidH-^g*UcKZ+9aM+|S|k7~JS zfTM6sOBW)#5YdHj7s6eb!n)9L-oP~H2BtYT(7xY5`|e7KTq)6w9_+JNU+!BHZr)43~ocg+feYfaUs2gmR@Aw zMFw7ZFdw!-dc@n!Z2UOF7#Is1V3U^KE<$>{!F-lCybHMKBVa(wJG_OwgD&)rB3KNE z;E0wp6NH?Z1S#3f3V0q~VCTr0og)|M3unVX7z~?X3p+`4|31tleNfN`1%2XS0!)U> zVHe9AK0RE}$NSL7&q`yAbtIv^!0b1 zfZgmwk+B~c`(ZIZEaq1U_d@D`A9dia5O$=(ps_%67cbt`4m;SQVvI1GF~aOrmX4s=^Nn8S!@zf0vehnL_quYx((UAwM6~^6U{I&mPrsn08{AcH%GDLjEOJ%ZtZ_ zym&$@;UJjaJ8?9V*?|g%;gER{2b9$`!lyI+n9l6unr%W|!?fkP2%)ZQ;T7Fk0+RH0EE^ zTu|H%#hKnrXL@rD^Qdc>-dxAj__{0@7qg6#NbaCjy0>z;Zep1t|G(Ty-2*eL(yVi2os$ z`VdQfcmWqF@=3rVxb`fHoW&w%6ZrnmrfNBYDMv8ncTpr92hTui@1?y$UaF>~j+Ar; z#3d#c157(16Fk!p9My8LO~^rfeGZEaVX-gQ3HjxESPg5n9FG@roQ7w77@jA6SJL;S z0M;T(P)ucDhRI1EC7IH)5h_1kiUkrW`2>{@%|Au4Ph+rvKNi4*gFR%}M~3@_Ja3^ zgemzsYU#O?BuMT4lG;6iYbNSQhyr~F2`P;X>1e|Kg6?heW5O)?UAQ-pG?u!UoVZ7ehvvCxROXSKr)tpdG- z3Y^Ir&m13)3!>qi8i$)JY}`XHv8L%kAyl#qmcXaana$uNNolVCNhC47Q(aK(IFFrNa>FNLH( zzXI;nDmqc9Xln`=lrS0%qubzNtsb5s)WekM;SdAQ%SM z!_APA&c`y*5u_6b36CcH;b_v~zMS;R=fUML9iphUyorkr0=l$XB!pVz1l^#wRnCx;w8|E z-%J5+W{t<=0*ludweqiHjn|)m1+spJevSm5 zBYy5lp>j`awFA@czy<#?Ak=@1uo~9RYFH<$Tb-B?xD#u<;qF}ILh8UyT(Ohd`ot)U%i~(zLM6E+ip6IS7N4<5G9^u}fS4}1iLZka z8t36(9Tw`<^IGle6>1-f)f2y-_}h01wY?HHz!sM2r~@^-AYWNcgI2HIlO@z^d0b%9 z*UGf2n=Mown%2#OSfDo9X0X2y!_ z;Vbs=Rl)^$5l#rTOf|ZkHr2~(s~EG?FtnJ-(8AZ&`GsljJv1fuG$qdTiOzJ1&K}Uh zV4tSw2AZN9=!tHiCvv4@a2;ZB&mh4q%@%XUbo)ccdG!RZ(0V!3dfh-@asz#dE1jAv zy{cO=Q5h+@(So|w!SnC}^8s4Un`XmW*kEfoW17nvpLAvn;~WX2Ah|fxUpeQ%Jd#c! zX}YT$GGR8{0=L0ka5qVBBkAps{?m>A)9oN^g-79WEw*O~v7IrIGrf*;G4G+$4XAYE zFjJTF%&FX>iMY^~f7W#K{ix@RdNJ6q>j)9ur+#G-uL_*v6^#=)eA9kloZGw(mNYf;T&Np&uZX5)klPQhUJ zhq3#^p3n<2s(aX<(O^1BWZH5DP4`(TOe7gbW4~zZx5%AGo(v2H149inVK!U`*VBu5 z(~I~(y3Bcjgj47+3LU3~VC`gZp7KY@z$wEacKHTCOY+a%Cy(gk2Czt~|+6 z100{;z$K@=IpaG$_^68F@p z4C+*7E9o2}oI110j&KyrK*3cZ+=p>r%6%F4G2B~Y3D`+M1!o$TbEaV>_Zi%0!9h5T z=2V|&sXm!lBom9Qa^^)Bp5v+vT(t^Utilx;)P)S{!m4%LQ&(1Vznc5iBXAUA^3@Ys zu5lA`jR)j?>lzZs!Q?rZJcn^t&H*B#A?NmGwu6w_PDJ$Lg_%4j;~X;1X@PCTL-Exp zp6yCJcjEaG&mR`T4a9RNo+ms4j}jl#ug3J*q?b*4Yl0Xmuc2vJLkZSUf*fxm`amjG z4wY(k11~i3Je=o|a68;VI0~#r0XE{~8WMia%wY^i4r46kFh(L=3DaRSY$1L-@jJ+P z0~v3It?&@x##DKA4*`@o+bA&+vx%5T26<$#E`vc>7R-g~I5UyOnTZ^p6EBZ=>qu}N z3BItN@Iu172q(RD+X&xIcroE6gbxsYhVWg4?Lid0x;zZm@;piQyYSa zB(#o%Ucgr`cyOA75!2JuD@&!y;fQ1UM(9g;_dax7Lz&h9l4|C)o zjuQt zi&_Fu`py(Ihz zCH{mGe?~f=kxu_iej7Mj%Tr-Oo}xgfc>feGJw-uIRr39xBI8rNS`Ih~Ip7X?VSpC~ zs7wQi%q$(4SyGZyxaibg!b1rUhwI@6o?CeC&GQXB$F!$V;1miB;*vpJGRS*_xb_@% z=^PoKD}Y7t1hk%JhI*12D*Q7h`?Ck6cK-Pg^EWaYA)}EAA-~dEe&qxGxc4O77sf#p z93jJzc6b_&5zn7^fp8(j=jUtQ%8%VQL?^4i;dEd01j0iv1 zx^$SP+&a@@Kt?&0R>R}ES4MgKmiK!7i&HW6rw;63Y=sPeS|sm zQAq9m4h7^96gkT3ge$8P?vUZAVmLZI4aFEGUc)f-n%yWCgJPJrgSv7|p;$W1L@`$s zb4M}i%*SNddjZ8Rq8JwH!$Q{6O7PEoqZyUw>>!%WMza7k+k#@-P;3~*DCu|j^t(2u z%+!$yM-*c`EQe4i4~6pKQFt81)}h#X6stk8Iuv7=d);y}oNMFH) zw2E^VD$WzmguXBlCPQW%aa&+H+zE*vNBl>2urja<9)ztNWk3OId;k}`5MKhD;6YXj zn4&CM2vcDiqy$SS!4fRA1Pd({%m(cslQ7OUtEGG;OZiHcQsSlS;bw>ekK+4BmorTX zW4eOt7WHD8liVk9pQ6>WXl9Aa$mrJzLj5|0?-rkavXF*hkQJ(7>O=!|qDd>ebwb&Z z;PqJG`lHN;W0()eG7rvR9-IY_!xL~Ao@ZW6$sVR)2`HMNQG~DL(F*PyY^6N0;x2ia0A>- zIGXROf~Vmi;ZcOgz%8&0`omy&9$tXsLRAQeMP9)ouMEI5TKx_e{|*=b4vYQ{3shl& zDlD+DiV{^(qE~B~=VIzt+hLbh`>KT6$Nj!mh=O%zn6{2GUB#sJlIgyeCjF0r(Q4@ zu7f1>DG7a6A;f2u@Blo>-Y@a`h}Xw{VILcfeH^;zqm$?-qkb|vNkL9hkdrf@D_joQ zOFqR8>M3?mPtAnBkbF+9WB-4^i_PGfYzp(KFoqBVt?&?=!)&*I&UX9fyWnp2h#lA? zc7l}jG$lRV3s16F9Kc?25bTD%>=oOwSL^^2VKRHgD0CKu&Z5v+6grDSXHjTSvuDiD z8^js~P zFa?tC5a|xBgX`f2xEbz*)(S56b8!H+z&42KhcNxnd3XU%2=OHyl{sBVGaZ$A7u*fI zA)_&S`U`tk$e6-D8WzG0S_VW484v}NAWcR^kkMBF=~x3uD1bprz(FnV*&*aT zyI?b<@4tr(?jeJF=n3zkCk%2IGRPA~zbOo#cf0Pco+;8A!S(zOTCwa;-Ba*i|f zg|i`Jk2wqt=0q{5nG?fBJOK$X12XQLvjJ{~rLYWE!o85O$DG5k19n2j3Ufx`ML3~l zu#=F%Ga!lvqbSRtlI2esOk){LV;M|7!Q>O11~cFWGz%u9;B9bwqvN>g<>^)io#92S z6EwgkHk>f~gP8rnGFT4l;C|K<$SjP^!WdbFF|rE7%wd>09P@@_-pJ#uSDb+K&XM%a z4<)m{K==L-)_MqQJv0i(Sf7}|`UDk|*|=afE*d?x{`E9#EC+((IT%FkX{PqPMWuL) zO7YeiIK)AqcGk>0IOr41L7z}a3-Wf47A=87v;@N)a2Mn=Y2hpD0)j zYdP1$XVuDQ)#?ZRVKQ7!!_Z2ERwBH^ck+%I#=`_i_&Y}UxDahZi#EdB2yd%|d$oAi zPKb9MAfLm#d=Br%z*x8o@);d6bH2wBTA(*fgBdUf=E0MYjY07qn!Sf+?~%cKWbj@- zq^Wza4IbtIkT(Z_d|(MIg=27Biz6XI90}u~4;i(SQF{VRf=#d)qWGUs{7*?R1y;aH zNcd60kD~ZdPa1}!DO{vNN_Lczz3<4uA7@C@^*&AH`$KR{v|i*O5E&jP!{fm)6jCRSQzwp> z!E!A=a1r7IH%JLTpoAZE!5%F-J%s4Az-*Wcx54eO8}`C6IL-l~*&GlGfDv#W%!dVV z2M2>b+{Hy70Rx;Ia^mFB42a23VDb}1uox1Ntxxe0ihP73ANj)BT69~4==O#e;RL;o zE4`1q7QO3)=v@!X;ZBHUd$H_iesnJWbSAj050~{NaWJSagSL1#^|QTnqdpmnHU>GEWi)8R^s1V+5=n3pNkbyK5YdHj7bBb*unX%qu4wM+#gaT3-AG0^GNryTA8vu$SemC>y@}rL zCVHNm=y}|+tUH!tII?iy$Qxo=>&=+<=2QaGAQ|0EMjo>{X%qm7;K6eb6!Ab2 zk8-#Z_Q3(jfPuX&c}plKk;36#Sk1{JEa8bIJju|L3~vn-^44I;`?vD`tu?R?wlXld z^^lepOk=?`7BaMup=CK-33K5(*aVxkyiEvsn}%d~8yVhK4QpX5BpolakY0`u7kS|# zuOe6sJ76a#lUz8NG^bzt-KNtohAa&qQ>cE{R z;b};`JBjBP!HJ}K5Jmk^)UOscu-f4_%EcHblcG486a$lB3M8SsNa(ITunKm;9ykoo zb5hBR6H7B;7R-SSuu03i9fZ8w38L8DD0VmL-A#ITQ_#C9=-qAbu$KPbLi+o#+UcLh zMFs(fVY`+;aTM|=&M+3nGioKl01^zqMFF_z-%5o1w^Bx{(Tr9X!W5Xw*shbYU6+>k z@^#$H*KuzM41>7jUR-i-JM4g1=3XolGE>M9U%vkkDpLrRDWnXRLmG+@8j6tf@B&Ai zf;r+83U|O=um;vap5Mpw&|PdV?uIl-p)^SMyKunV4f?}CNcjCmIO*O`x?w09hN593 z&^pQvmmfP^{xA|oL0Ys$v}lXabP<}KXysVTA=Y(q#YecJi@Nc#X2FPrdRaaZ`Kr{h)++_`J)3!z7gO)7dOU?P4Jc1wTPCx@Y+b3V*`=2kCtOA7qjszVC|R6bc#k zunwbGy-=9`BTV=aCj2;)4715_HyJV|H!&qQ1+$cf!pEbv?8KLyz9>rk6U0A3UE!p@ z{HU4tTX=tn_s6sxI>hM}Ts+Y&|vR$s!yn@0iK8R z+{#i*VLTU!yx75uomy@06>2*R2@Nc@G-Pvsi2EZfD6nEt&x%Du5#hyJ3aB9vA zRl`b0LnrqvJT$O$(=e>n>&`;G?!t2xFlstjut;FR0!3aABs|!xj?|i!^+*F3O-M7+ zg0vxrk#?j5=|sAa9<%Bsyp!-w!aE7?B)pUGFJciA{K6S=LCi=D5{bAWj)(_hLA((k z#1HW|Th$kVT!bRwNR(NfDMiYVa%3k`fm9-Uk!qwCX+WBgX0yrchxj9bNH7wLgd>qi z6cU5PBJoH9l7yrnsYsfY|79RqNDh*Rlywxgp44g$QUwiHrWeABWA=AaYkGaH^c+6Al`@% z;)nPnfk-eCii9JPNE8x-#3J!X0+NKJAgN}P)jo}j3?vK5LGqA%qyQ;Gijfke6e&Z> zk)22dQi<$Es*zfx0ck>-krt#4IgGR;9Y`nAh4dhO$bi{uvOmMc5Hf;{B4fz7+2kM) zjhGQf#2Ilx+z=1Mf_Ni7h#%sQ1R}vmC=!lDB2h>T5{twm2}lx>f}|P=q#+sqw?g{| zY3zXG0511l;Xys{f%MWgr52<(I0!vxt_WsGCCxpl6qV3AI5;>syp#+cl`3~8>Rkqh zKpY%0I5^xORH%c4gM&~HGGxf$;Nalk;Nalk(2v6>@0s`e^L=>=86>633ahNM!B*?? zi}0V%%=>)2)qD~D(E9I1_}9OGXTpkqVUL36?biL5;rGuzueJ)A@Tb;qUx#C@ud-ow zEw(qdH?}vnH?}vnH!!S!9`%Dl4qA&IV0(*`v)q2Uw6h4X^_%e9wWiZu_Gq)u0f!uM%n7HQaZV=+CWaYd6gej3n2=*ajtMy?3KU6@C9glP zKd(Q3ff@O(Kl*&n$t71@bHi;E6f$HP!m@&8KQFONN|hB>S!aVS8tl-Ff=M-#Y9`f8 zs+m+%w5w=W(XQf+Ux}h+#XIhK;4un*=_4eHf>IAnB~2wwr5p5=^py0J^py0x*7I6V zqApRFs7ur(>JoK{x59|mH4%v0S3vCWr$%$7-fu?-wXAPe-e9rJW!{^MMGqzMdZn@%`8_&Od;^cx$PC27Pk0Xwwp#Cxne!t_M2Ogu~k3K@z3gnq4 zp-7dKWo8(Qf|~iYF6P#Aj7P!ts^?#mq-Jx z%n%s{$uhzQqn0F0BiOe3)U5OtJJXKmpGuWpazzh;Qp?i^EUj2t5vmdyFhjw)g_U6} zs#sDP!{SPw9Lp@Q$P!gj^jCzb%p*)?ZO6+ld$ehC#0ke-(BYCE*PL?3IbE)}!Ch7E zxaWb#DEPCFFnads-1oC9#|y`6$ByHTFMXf7PHw%?bG&o(C9Zq#sJQ#!sJLs;n*~zV z5&BJ=Lr&@VR0heAWeA_lwohm~qMv~%c-u!91@D?3r@mU%^WRWZZ{u$3?yByN>nFIo z&8KS$Hy3g3ZGptOftwa?TDWQ9<`5QaK3$uk%sdNB>rwOWQHXt>!a9Gi=Y2l!MbZ0p e4(Rd_1s{en?87n*4$=7GJ_;Hd8%11e?EDWB3~;Cb diff --git a/slsDetectorServers/slsDetectorServer/include/common.h b/slsDetectorServers/slsDetectorServer/include/common.h index 6d16426f8..fa0d172a9 100644 --- a/slsDetectorServers/slsDetectorServer/include/common.h +++ b/slsDetectorServers/slsDetectorServer/include/common.h @@ -35,5 +35,6 @@ int getModuleIdInFile(int *ret, char *mess, char *fileName); int setModuleIdInFile(char *mess, int arg, char *fileName); int verifyChecksumFromBuffer(char *mess, char *clientChecksum, char *buffer, ssize_t bytes); -int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname); +// fsize is specified only if it is less than intended size (drive) +int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname, ssize_t fsize); int verifyChecksum(char *mess, char *clientChecksum, MD5_CTX *c); \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/include/programFpgaBlackfin.h b/slsDetectorServers/slsDetectorServer/include/programFpgaBlackfin.h index 8a3a9cc65..32cd96254 100644 --- a/slsDetectorServers/slsDetectorServer/include/programFpgaBlackfin.h +++ b/slsDetectorServers/slsDetectorServer/include/programFpgaBlackfin.h @@ -2,6 +2,7 @@ #include #include +#include #define TEMP_PROG_FILE_NAME "/var/tmp/tmp.pof" @@ -17,13 +18,13 @@ void resetFPGA(); * open file to copy */ int preparetoCopyFPGAProgram(FILE **fd, uint64_t fsize, char *mess); -int copyToFlash(char *clientChecksum, char *mess); +int copyToFlash(ssize_t fsize, char *clientChecksum, char *mess); int getDrive(char *mess); /** Notify fpga not to touch flash, open src and flash drive to write */ int openFileForFlash(FILE **flashfd, FILE **srcfd, char *mess); int eraseFlash(char *mess); /* write from tmp file to flash */ -int writeToFlash(FILE *flashfd, FILE *srcfd, char *mess); +int writeToFlash(ssize_t fsize, FILE *flashfd, FILE *srcfd, char *mess); /** Notify fpga to pick up firmware from flash and wait for status confirmation */ int waitForFPGAtoTouchFlash(char *mess); diff --git a/slsDetectorServers/slsDetectorServer/src/common.c b/slsDetectorServers/slsDetectorServer/src/common.c index 222341474..4f2f7b4db 100644 --- a/slsDetectorServers/slsDetectorServer/src/common.c +++ b/slsDetectorServers/slsDetectorServer/src/common.c @@ -181,6 +181,7 @@ int setModuleIdInFile(char *mess, int arg, char *fileName) { int verifyChecksumFromBuffer(char *mess, char *clientChecksum, char *buffer, ssize_t bytes) { + LOG(logINFO, ("\tVerifying Checksum...\n")); MD5_CTX c; if (!MD5_Init(&c)) { strcpy(mess, "Unable to calculate checksum (MD5_Init)\n"); @@ -195,7 +196,9 @@ int verifyChecksumFromBuffer(char *mess, char *clientChecksum, char *buffer, return verifyChecksum(mess, clientChecksum, &c); } -int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname) { +int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname, ssize_t fsize) { + LOG(logINFO, ("\tVerifying Checksum...\n")); + FILE *fp = fopen(fname, "r"); if (fp == NULL) { sprintf(mess, "Unable to open %s in read mode to get checksum\n", @@ -211,8 +214,10 @@ int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname) { LOG(logERROR, (mess)); return FAIL; } - char buf[512]; - ssize_t bytes = fread(buf, 1, 512, fp); + const int readUnitSize = 128; + char buf[readUnitSize]; + ssize_t bytes = fread(buf, 1, readUnitSize, fp); + ssize_t totalBytesRead = bytes; while (bytes > 0) { if (!MD5_Update(&c, buf, bytes)) { fclose(fp); @@ -220,8 +225,26 @@ int verifyChecksumFromFile(char *mess, char *clientChecksum, char *fname) { LOG(logERROR, (mess)); return FAIL; } - bytes = fread(buf, 1, 512, fp); + // read only until a particular size (drive) + /*if (fsize != 0 && totalBytesRead >= fsize) { + LOG(logINFOBLUE, ("\tReached %lu bytes. Not reading more\n", totalBytesRead)); + break; + }*/ + bytes = fread(buf, 1, readUnitSize, fp); + totalBytesRead += bytes; } + // last null character (if size does not match) + /*if (fsize == totalBytesRead + 1) { + bytes = 1; + totalBytesRead += bytes; + if (!MD5_Update(&c, buf, bytes)) { + fclose(fp); + strcpy(mess, "Unable to calculate checksum (MD5_Update)\n"); + LOG(logERROR, (mess)); + return FAIL; + } + }*/ + LOG(logINFO, ("\tRead %lu bytes to calculate checksum\n", totalBytesRead)); fclose(fp); return verifyChecksum(mess, clientChecksum, &c); } @@ -255,6 +278,6 @@ int verifyChecksum(char *mess, char *clientChecksum, MD5_CTX *c) { LOG(logERROR, (mess)); return FAIL; } - LOG(logINFO, ("\tChecksum verified from copied program\n")); + LOG(logINFO, ("\tChecksum verified\n")); return OK; } \ No newline at end of file diff --git a/slsDetectorServers/slsDetectorServer/src/programFpgaBlackfin.c b/slsDetectorServers/slsDetectorServer/src/programFpgaBlackfin.c index 88f976816..ecb3dbfea 100644 --- a/slsDetectorServers/slsDetectorServer/src/programFpgaBlackfin.c +++ b/slsDetectorServers/slsDetectorServer/src/programFpgaBlackfin.c @@ -9,10 +9,12 @@ #include /* global variables */ +// clang-format off #define MAX_TIME_FPGA_TOUCH_FLASH_US (10 * 1000 * 1000) // 10s -#define CMD_GET_FLASH \ - "awk \'$4== \"\\\"bitfile(spi)\\\"\" {print $1}\' /proc/mtd" +#define CMD_GET_FLASH "awk \'$4== \"\\\"bitfile(spi)\\\"\" {print $1}\' /proc/mtd" #define CMD_FPGA_PICKED_STATUS "cat /sys/class/gpio/gpio7/value" +#define FLASH_BUFFER_MEMORY_SIZE (128 * 1024) // 500 KB +// clang-format on #define FLASH_DRIVE_NAME_SIZE 16 char flashDriveName[FLASH_DRIVE_NAME_SIZE] = {0}; @@ -107,7 +109,7 @@ int preparetoCopyFPGAProgram(FILE **fd, uint64_t fsize, char *mess) { return OK; } -int copyToFlash(char *clientChecksum, char *mess) { +int copyToFlash(ssize_t fsize, char *clientChecksum, char *mess) { if (getDrive(mess) == FAIL) { return FAIL; @@ -115,19 +117,21 @@ int copyToFlash(char *clientChecksum, char *mess) { FILE *flashfd = NULL; FILE *srcfd = NULL; - if (openFileForFlash(&flashfd, &srcfd, mess) == FAIL) { + if (openFileForFlash(&flashfd, &srcfd, mess) == FAIL) { return FAIL; } if (eraseFlash(mess) == FAIL) { + fclose(flashfd); + fclose(srcfd); return FAIL; } - if (writeToFlash(flashfd, srcfd, mess) == FAIL) { + if (writeToFlash(fsize, flashfd, srcfd, mess) == FAIL) { return FAIL; } - if (verifyChecksumFromFile(mess, clientChecksum, flashDriveName) == FAIL) { + if (verifyChecksumFromFile(mess, clientChecksum, flashDriveName, fsize) == FAIL) { return FAIL; } LOG(logINFO, ("Checksum in Flash verified\n")); @@ -155,7 +159,7 @@ int getDrive(char *mess) { char cmd[MAX_STR_LENGTH] = {0}; char retvals[MAX_STR_LENGTH] = {0}; strcpy(cmd, CMD_GET_FLASH); - if (executeCommand(cmd, retvals, logINFO) == FAIL) { + if (executeCommand(cmd, retvals, logDEBUG1) == FAIL) { strcpy(mess, "Could not program fpga. (could not get flash drive: "); strncat(mess, retvals, sizeof(mess) - strlen(mess) - 1); strcat(mess, "\n"); @@ -205,7 +209,7 @@ int openFileForFlash(FILE **flashfd, FILE **srcfd, char *mess) { } int eraseFlash(char *mess) { - LOG(logDEBUG1, ("Erasing Flash\n")); + LOG(logINFO, ("\tErasing Flash...\n")); #ifdef VIRTUAL return OK; @@ -225,10 +229,11 @@ int eraseFlash(char *mess) { return OK; } -int writeToFlash(FILE *flashfd, FILE *srcfd, char *mess) { +int writeToFlash(ssize_t fsize, FILE *flashfd, FILE *srcfd, char *mess) { LOG(logDEBUG1, ("writing to flash\n")); - char* buffer = malloc(MAX_FPGAPROGRAMSIZE); + + char* buffer = malloc(FLASH_BUFFER_MEMORY_SIZE); if (buffer == NULL) { fclose(flashfd); fclose(srcfd); @@ -237,13 +242,18 @@ int writeToFlash(FILE *flashfd, FILE *srcfd, char *mess) { LOG(logERROR, (mess)); return FAIL; } + LOG(logINFO, ("\tWriting to Flash...\n")); + int oldProgress = 0; ssize_t totalBytes = 0; - ssize_t bytes = fread(buffer, sizeof(char), MAX_FPGAPROGRAMSIZE, srcfd); + ssize_t bytes = fread((void*)buffer, sizeof(char), FLASH_BUFFER_MEMORY_SIZE, srcfd); + while (bytes > 0) { + ssize_t bytesWritten = - fwrite((void *)buffer, sizeof(char), bytes, flashfd); + fwrite((void*)buffer, sizeof(char), bytes, flashfd); totalBytes += bytesWritten; + if (bytesWritten != bytes) { free(buffer); fclose(flashfd); @@ -256,14 +266,32 @@ int writeToFlash(FILE *flashfd, FILE *srcfd, char *mess) { LOG(logERROR, (mess)); return FAIL; } - bytes = fread(buffer, sizeof(char), bytes, srcfd); - printf("."); + + // print progress + if (fsize > 0) { + int progress = (int)(((double)(totalBytes) / fsize) * 100); + if (oldProgress != progress) { + printf("%d%%\r", progress); + fflush(stdout); + oldProgress = progress; + } + } else printf("."); + + bytes = fread((void*)buffer, sizeof(char), FLASH_BUFFER_MEMORY_SIZE, srcfd); + } + if (fsize <= 0) { + printf("\n"); } - printf("\n"); free(buffer); fclose(flashfd); fclose(srcfd); LOG(logINFO, ("\tWrote %ld bytes to flash\n", totalBytes)); + + if (totalBytes != fsize) { + sprintf(mess, "Could not program fpga. Incorrect bytes written to flash %lu [expected: %lu]\n", totalBytes, fsize); + LOG(logERROR, (mess)); + return FAIL; + } return OK; } diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 28372f103..0dc781c80 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -14,6 +14,7 @@ #include #include #include +#include // defined in the detector specific Makefile #ifdef GOTTHARDD @@ -3735,7 +3736,9 @@ int program_fpga(int file_des) { src = malloc(MAX_FPGAPROGRAMSIZE); if (src == NULL) { fclose(fd); - strcpy(mess, "Could not allocate memory to get fpga program\n"); + struct sysinfo info; + sysinfo(&info); + sprintf(mess, "Could not allocate memory to get fpga program. Free space: %d MB\n", (int)(info.freeram/ (1024 * 1024))); LOG(logERROR, (mess)); ret = FAIL; } @@ -3792,7 +3795,7 @@ int program_fpga(int file_des) { // checksum of copied program if (ret == OK) { - ret = verifyChecksumFromFile(mess, checksum, TEMP_PROG_FILE_NAME); + ret = verifyChecksumFromFile(mess, checksum, TEMP_PROG_FILE_NAME, 0); } Server_SendResult(file_des, INT32, NULL, 0); if (ret == FAIL) { @@ -3801,7 +3804,7 @@ int program_fpga(int file_des) { } // copy to flash - ret = copyToFlash(checksum, mess); + ret = copyToFlash(totalsize, checksum, mess); Server_SendResult(file_des, INT32, NULL, 0); if (ret == FAIL) { LOG(logERROR, ("Program FPGA FAIL!\n")); diff --git a/slsDetectorSoftware/src/DetectorImpl.cpp b/slsDetectorSoftware/src/DetectorImpl.cpp index 7ffda2fa0..5086e077e 100644 --- a/slsDetectorSoftware/src/DetectorImpl.cpp +++ b/slsDetectorSoftware/src/DetectorImpl.cpp @@ -1241,7 +1241,7 @@ int DetectorImpl::kbhit() { } std::vector DetectorImpl::readProgrammingFile(const std::string &fname) { - // validate type of file +/* // validate type of file bool isPof = false; switch (multi_shm()->multiDetectorType) { case JUNGFRAU: @@ -1363,10 +1363,10 @@ std::vector DetectorImpl::readProgrammingFile(const std::string &fname) { if (close(dst) != 0) { throw RuntimeError("Program FPGA: Could not close destination file"); } - LOG(logDEBUG1) << "File has been converted to " << destfname; - + LOG(logINFOBLUE) << "File has been converted to " << destfname; +*/ // loading dst file to memory - FILE *fp = fopen(destfname, "r"); + FILE *fp = fopen("/tmp/SLS_DET_MCB.ZpfQln", "r");// if (fp == nullptr) { throw RuntimeError("Program FPGA: Could not open rawbin file"); } @@ -1389,7 +1389,7 @@ std::vector DetectorImpl::readProgrammingFile(const std::string &fname) { "Program FPGA: Could not close destination file after converting"); } - unlink(destfname); // delete temporary file + //unlink(destfname); // delete temporary file LOG(logDEBUG1) << "Successfully loaded the rawbin file to program memory"; LOG(logDEBUG1) << "Read file into memory"; return buffer; diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index aeb2f393c..92e6c4c99 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -3474,11 +3474,34 @@ void Module::programFPGAviaBlackfin(std::vector buffer) { << " returned error: " << client.readErrorMessage(); throw RuntimeError(os.str()); } - if (moduleIndex == 0) { - LOG(logINFO) << "Checksum verified"; + LOG(logINFO) << "Checksum verified for module " << moduleIndex << " (" + << shm()->hostname << ")"; + + // erasing flash + { + LOG(logINFO) << "Erasing Flash for module " << moduleIndex << " (" + << shm()->hostname << ")"; + printf("%d%%\r", 0); + std::cout << std::flush; + // erasing takes 65 seconds, printing here (otherwise need threads + // in server-unnecessary) + const int ERASE_TIME = 65; + int count = ERASE_TIME + 1; + while (count > 0) { + std::this_thread::sleep_for(std::chrono::seconds(1)); + --count; + printf( + "%d%%\r", + static_cast( + (static_cast(ERASE_TIME - count) / ERASE_TIME) * 100)); + std::cout << std::flush; + } + printf("\n"); } // copied to flash + LOG(logINFO) << "Writing to Flash to module " << moduleIndex << " (" + << shm()->hostname << ")"; if (client.Receive() == FAIL) { std::ostringstream os; os << "Detector " << moduleIndex << " (" << shm()->hostname << ")" diff --git a/slsSupportLib/include/sls/sls_detector_defs.h b/slsSupportLib/include/sls/sls_detector_defs.h index 85d10288f..2bb69285b 100644 --- a/slsSupportLib/include/sls/sls_detector_defs.h +++ b/slsSupportLib/include/sls/sls_detector_defs.h @@ -54,7 +54,8 @@ #define MAX_TRIMEN 100 /** maximum unit size of program sent to detector */ -#define MAX_FPGAPROGRAMSIZE (2 * 1024 * 1024) +//#define MAX_FPGAPROGRAMSIZE (2 * 1024 * 1024) +#define MAX_FPGAPROGRAMSIZE (128 * 1024) #define GET_FLAG -1 diff --git a/slsSupportLib/include/sls/versionAPI.h b/slsSupportLib/include/sls/versionAPI.h index f2ca9f43a..17d9f8949 100644 --- a/slsSupportLib/include/sls/versionAPI.h +++ b/slsSupportLib/include/sls/versionAPI.h @@ -7,7 +7,7 @@ #define APICTB 0x210909 #define APIGOTTHARD 0x210909 #define APIGOTTHARD2 0x210909 -#define APIJUNGFRAU 0x210909 #define APIMYTHEN3 0x210909 #define APIMOENCH 0x210909 #define APIEIGER 0x210909 +#define APIJUNGFRAU 0x210909