From c1f3d3262b9f5fdb126245ab645f011f29905a7e Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Fri, 27 Jun 2025 17:53:50 +0300 Subject: [PATCH] succesfully loading firmware to BF and executing command L502_BF_CMD_CODE_GET_PARAM (aka f_cmd_get_param), with parameter and receiving data. This BF function was modified to reply hardcoded 44527 at param 87. Other params are working too --- BF_companion | Bin 26472 -> 21824 bytes main.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-- makefile | 2 ++ 3 files changed, 84 insertions(+), 3 deletions(-) diff --git a/BF_companion b/BF_companion index 7fbf31eb594d8ccf0bf97cefba3db06b9621c0e0..18bd275d92e401a0c0d04d92511b4ddf1d93e413 100755 GIT binary patch literal 21824 zcmeHPeRx#WnLiT<1`146P{dY71Rtz2hEG97LXrs=8z2RuxV0T7GZQjvl1b+Sp=~rW zjCFR1usp?5w^nSQwsuSVq=*m^LO@Eu-P$|tJ~nM>o4V@GENqJ(wP{P8{k`Yo&Yeqc z?e^(^n*%fNd4K19-}9dLeB7He_nwD6b+si92UBSjyNeMwc%?upWkKgknE|O}i`WEw zPh;1yG2lmYOq5p&f>MzNN{VTj#7BXW-W19VLq9BFrl|6eDCyay@`<8EQC2Q^(krE` z9`DBE24|*CX{5 zb;)=ts^Up8q0b^|*GesJGpk;+)U(nW*rcQ=)j?_P8?nIOQeVB)D_ zABP^r<*!XLoNSG(&#oWV%XTZO#@Vecp~i*tZ*2+8ZV9!;H_zU@XyNRI^WD*~doFi@ z{Bq$#V`}-T28M3wBTSlOC7ps-_NZ)DG93vuQu@=!3FL57om)dpW^Q}1>g z`Dbn9{{VRxKGyW#0EY8tpAG&|8~fj}!4KKkX|uto1Bf*WKXe=06x3an=+!kEtYitR! z^$RNIde;VHYqzxd*T#I2*vfD~p|MEN*BbS-6$EP|!C*~r)0&_^90}CHT9JN1mE=Ux z@?gvpiG(9-W06qXMnk-=y4ly(7HnZ&@5a_}n>R{Td%dC@?nR|~Rg-6P&|lpeFsz~a z6>Uvn!B;iag?)kAP^9%iUqq@@hufM$8{=SkyX{*I*Xlxz5np7>J;6vc6mFBXqt!7L z0*FXYtHbfO7^|ajLD2|8v=D{W?ZLLHEk+6RkZeP=@lx^jcr1#RqtX5cy#D3~yiLAP z3u~gFMME2X{uns}A%C+k!diVTEnz>zvCR8rpjv&QHWrPcPa~|U9g&SSLBPM+=WPnL z`C3As39{B;Ycv=G8j6Pfix+#NQNORPi8VbK388hc)dKf??IF5O%ppE#;Wt}&KS?fR z%j;HDReR^U=gl{=h1_ihHrKs?Mxg^&1o5HoQ9Msb;a`ChxzVz$1oEX)UW{i4?iy+^ zx779Wz&}5M%StI*C9z4N&;+`(xKHv|bAA-_OFlj|G?uPVt>7uC`y4e-`skvE)GhC0 z6y7QEGRwSD{1hu*A?&y;_yma$tQO^TO{9-XgC-meF;doq%UeHQcEN;CH>4RGGT|;0 zuGR&*51{L>N*7j%9Nivb2{F=;36~)gWzs&$t9uA4C^O;eUWo8=6VC5z2}GJ=!sV?g z$6Y2|^#K*kGU4b*BUPC2aR!R}OB4Pf6JBY;$D44?gv(oVURrO$ohJG9CcNB)Z!qDP zoA726ZoWRWn{YYQxYlM9KG|fa(}Z7T!XGo?SDWyiCVYws-($kBG2wen_*4`AtO>u? zgm;^8^UYk338#A)mHJHhbqWMMZNjISaNUGoZ^B2i|Gy&ej`O-dYKik@TDtViQpU7o zU#ujrYl)L(FY!R+7aYEevHZ*<_;yaKWF+5ACArt~`Fzt(&eH;y`%!_Xg)MiYz|(@3 z+h5>mAd7I<2q za?=YuT^Mp#6nI*wawP@cN&MUI8||fqDfe1|rv)kZqXJJ0QSL;6rwdGOe}Sh3DfiU^ zPYY3QSAnMmD7Ur1)54RB6nI*2a*YL^7Mk3e0#6G}uByP(!jhX?;Auh0O*i=b%r}=X z*5sU4!+8JZXTFNv2Q&YQg+FECdoBDy3;$gU{|yWO6$}4_g@4?_KWgD0vhbTMe4B-D zvhbg>@b_5wRTjS1!rx`#7g~6?g}>3lUuWU3vhWiv{1^-W{vE~r^H=olB0Qn8j~y&=O1jfwEfajo5fCy`%|D_P#&o^VtAqbTfn`cEVWJ3Bx5lESgb)oZDa(^@Ltmuff?(9)x4&f-;hhUWD3dj^qb{hk3q z&IV%fkwc~@MHHRRn{_LMF!hFheK}&R8V9ss3NYOKZzNkvaVR=yV>sF-` zS{m{W{RQ%myQ{&_E*MIAvWbo?+dL-i$vQlPa7-9F`+qU?B{VqYIiKh_&kdc2p+v_Z zi%mear?qs$1ua#6?rP5TlLw5u0}pn>1F9(9Fci>kp2Wi+E6wHrpE38-hE&Hsbkkl- zAE6&~Zm!>RT2k3tJ;WwD_Bou7zk+U0d-f%=4s8#QBSG8sYN7NRfZ59ADoh+ z5p#U7d?qF-8w)0Te6Y-UsE@Meod^3;nX$)VrK{eNYUoMz6|L&%xQW=Wq3U zq1o?R>9>D4zkhn$-_`E~!Vb3=d-geZB>4pD(b6jiFvT!;U!fkliI3zXiH;*IJ_$Xy z7uQF^cm4rA=flkhu#*z|958ewbzH6i9SKvX(+vkKQ^s-Hd9d>_$lN(9=KCNKM{L0d ziIl|0YF(2f@ZsDwDpQWk1B6_LOcS}6j-O7ige#|c=Q$+7plKgX{g%pTskc+7(3oYS zF=7n;;}Ayk2ehKZ-bF3ZH$&rA$C|B9g4J{L?Ce6RMkt-fy@@fLfAxC|XVG1Ec#b%? zK8^0`_w-S))1E#+5$c{ZLM8haq;p?KS@sY$A?3ksW{1w=Gcop`$HoRtNZe%_6H@7o zMHilH7q0bLI<9My0}}`<;HxwMeh9lM&&fo`Nfuk0_M8NC7L{r#nqF(DimnOIac^iG ziEzHi!$~Ikv#TkuRv9d2>4qc1@I68Z1F%2)GFhZai+r!hV=*XR(yoGh(URuEr6=3( z8KTfYIV%<&Shyb+Ql6oH&qXRa7f5?9V&UqVl;o0Kr7iOj%R5V~@V5vae+m3J!IMhT z@rzW+GJXMAmKq{gM~R9Oo{Nq|$3^z=m_)}Ai|ypj@VX%LuxL(}U)@OQ@%PZdki#@1 zr7ktJz$Kgx1$1#sfpAfDPFEgF|Lw2b&PJ-vq5-hEugnCrkNX*1msM2~$ zX?@AiI%w8<23pQT$!!QauIm_Ql4+t*M?fF%r~PJ~R?<0`e3W!#d6EAsxhIdI7_Ki* zCn@JVI3zM^G!u9{D@HTV(`d#rAqVuA%oSdI3qwMT!g!rAO#8DgjPT+y>Ndt`Gn^1( z^q05tG5RpKSQw+r5oL^~Cpny)LbD<*2ygKovjd-n1DH`#h|eG~ORhjIspJr!Y4pui zA2F*|LbX465oMU*tf@cwCbFYgf0Cibdja()E0CkLt3Ns4$Sp#S){6e*okp$_IoieO zPu3uZ@r0a)Tq)1hA-9O<>XEDFxpm0l0t>nI$cZ{eBS(7?P0ru;Id4jC01MJCNGC{> z^P%KU(Eel@zG+*cKRF&bq3%Ks5W_g3mhc8Y!^f7KDXTBgI3xvL_Jp}?9xr36?DOWb zt9coD$MqgGm;LFtWyaA9Z+>1dY&3r*VRSgsY!EXt*eWAD!rThSEG=2t-6jzImqkR1uRx?Codz5yzFIj**m|1LEOwpGczFCpM2L8 z7RvLmkl$S2W7dBT`U$S!Nbe@ubdoAsd?IpE1f~QQRny>SqL@7ZmOFWFjF@NETaK?m z;LJ;W|Az1989R71Vn)(P1V$n-5`mEjj6`500wWO^iNHt%Mj|j00r4yu#etryW1cw+ zRZR4+WFFId^zZ41^=_BGKaq zc4Z#nUO*`GcqRoGVb;*ndv0f*SaUGahNtwFvWB%)tiF21t@s3){$<1VcGqj$o^Z_! z-0qqgy~QUf4sP3db>hC;aII|A^$#4t+nBlcWo7Awc>ee2$uQ zO)h12xZU`fsVJUkLoaj=kd}yMFIv|FxEt|Am?^+UqcS_Lx9TS-BwV`}&J=nD7WQX$ zz;qAdWHJGpN67!{nZApBhaB(3@9{2v5#PPM;=>3a;v)KzKlWARH=OK+bBWC7jd1`= z6pJ2otI>%)=%{V5*oiiDXC6f%b#swB!Wne2{hS;X1e>qm;rp>=ZL zx^&)=!Xb>>7tFolQc3pZ7xZpM12eOgxj?%S$sV+gkEw5<=bu*coC+nQo?`i`7Cd%Z z8){P;O864H&rvm*?dUe@dh@DC0EJ_%MTg zvwVGB&9X~mxnQxJehi`MGOvE17vNbEswhIHfcpPILl5y?Dz$HcVbfZ>W&*)L! z*;Tbo@;T@VcS|6`SPLGF#xvJ0-rsmG*rm#mX$gws|iVfY*&9_IJO3oL4Po`DHw1S z>J;dvfXRYMkXMOGWtQS`#k^Z9O2b~c}tsu(F8=7e8PkDs{rf=|!AGu0AQIV) z;Zp%zmp%|qb#2EdgZicr;F(zdXi4>iF{|MaSSsI#&l!}{I~hj#sHYtyLFNCB&&Pk2 z&;OYAftCKKmq)Ae^MFUcj%QLpjq;NBcm6~uV2h1PXSs{D8F=flKz)31g|^g|(~Me?N#dgg%AfGihxLAZuW|J1t`{2B$h z$y~bdCDqu#DuGEg)*~}AOiWhC=%+|Z>!o3Z*UO5P-(@n8bp5BK>c38~M*Hvs7H=QK zxhkIg;XIS}aP?E=ToXUXaeluvj0Yk(ui_%j|J{gsU)pN0Lf#})N?I@J21(l`?UZz< zql!^+cmEMeuWTn%(7?~-_>1)nEzwSGu(wgMRk zX0s;Suhx+Uj$dWWZzcaZWT;-X9x41WE7iZ+Rz>SN;l%iJF|7VZyM%^#Z@8S@FE0dY0MmoQ_?iEb^f7ekaQKrp^53(; zPuk#D!p|$vzv`S0{&S5a&m_F$a^pIws=C=meyI(< z#s+T&KAivCY~=UY;QMUw6TmO0mQ@JP)x68t$iHTTzXN50|h#(y=pe`%cW zwvqpo4gOghd^g9-*(c-;CEp`J3!Wsr1b40FMa{xNEdEGrjysHZ(tV8~Z_Kxm0f@%p zO-*h;E1XZ@jkS9HbV32WBOeHRH@1WueJ$QVEF6h?eeuoAA8u`L3C4l}cg64$^cH-` z>x)EuTfD)xSY!*{t@pJCy@7aZ>lUb(I4>k)MWXa>J^X3Hi~0PBf+){=Td^Z1vk_n0 zMxMvM7z%xjVVqq6;Xq3euj6|+24S!T4hJ`3Zwml2-e|BT=#P2BI3s}h0)B5G6s2Po z0`7SXn{<3j3&*wa5^Sj9jeOcbYm7JXCf2T5w$kJEtg68Y30^PGTk(1{uK=~0HO#xb zZgthNI`8V*+O?i_-gV2W>O2svxo_37l`E>@01g6(w|lX3hvOW?AqO~)!FsmCrN<$N zBLphd8~^l5KR+%)9B9B#VXz$EKnEKX$y<&eFv@PTJ4u0eojUu#5T~leIS572@P}7? z;Bgo5|B^E)hC4|D$6^$p{@`7)8V4{?f5oFgc_f8Nh@aq4ct6d2j)XK|bZ`qX@M zLy-mE#KMslf-RhnQ7sOu@Op8mha4a^o_oCX>zHwpM3Ftz8x70Bs?N|TI%0z#-Qo2% zMx)X>ZjXL)vmRJs*qtv7{S}9UU^dFISr5w)hgldVsl&xl6-AIYNKsQqUKAHu&&M!I zaZ-i-Q5^gv4Za94=8kS@jrkfuV-Z1{RSqX?1S9Rt-4>1o-5cBD?)C_#awN9J1U1G( zID;t^kkGQK6|-rL>H=&^I2rr^3rNl~>gAy6T!@Q>Cx=gA`T!L8^Xh`@bmltE54-zoe+zk0O1FnN|N8 zU=$N&-?+b#_c?0c4I(^Q`~S;8&H65>r|6(1;Ii1L=9?CM^tVn`v!F^(p~sLhw_ojFDysH1mAo~6-byUz zyy6vo3%V3yrLWE@>b?^ol9Cf#fmisSQ9vP5`f5Kxo!{t^fu;FJN$IJ6{5CLZqS9CU zxdV5RG|uO-X}_{F2IXdbW8b2ZtFu{x7~e`y0rXoWVXA)h_u8yVAyLUrD^X5eMI8Qi zlJ!?uaHW5<1t(uAnW-`ML=pd9Un!Vo88|xYhCa%Fwf@q+q4Hg5i0{7Tg6_2pI90Eb TrR~z;^f%NAiK!L^3(Ni&?Dbylb8(Veu_nwb?&s=hAw@?4r zK2MI$eb4(l@B5zjyyxTIdnR-Enzv+Wp3B8l8pN(=#FZBcq(~M#;g=bZB6bZMiR%P* z2^#`_FvmoBksv4)=~!Ma9V+obprkjRGX2nt1k4mw9ug%zr{o(gN)%-Uf+xLv${KV* zGWgY`v(Fd2qPiZhuSm+<=p(X0it2h48()dg^WBz9du6+e26u}B=_iGY^wvndHBwJe zL&j546;JY!KG#UQb~+7ZloYk=RY^TNT_V(&qErW^RqsTDe@%U*Qg8e+VaHBa3z#XY z>bnVg6qmm=$#AljvOcGNXp`+$l*S3At7@v(&Y5*pO>k;WbzNiA)TV3ZOr0~!6RG#i z;N|3(fe($TWh=@Ux}}3KX^!PJ3triyvN5upBF&u%l@bQl{KazE`PaTo zGUPYukPIcVC%fF_J;;#^kB93%Fa>#pslH8xUa6gO@s^9`o=&Lg!*%tG7tA?2AoFFY ztUr7aD(nxx$3Z^pV86gY{%4Rkqz^iI!=c{$9PI3Jz;`;>aXH9OcED#j;1@gLXiR@` z>u|u~X1{UxmV zo~8mH%`RZRa#5o0FUuufWW$-ic=d9BFcc20tByoN;nm9**VNaARtMJBgxH$d(`NWr zg`%rA)K#pC2Ex(h^+AP3!=XTJgribUAl^Dlb!j*hS`u2nGE`9?4wk@vjz!BD$>kVX z6|HX&z_L)(8xGfpS4G3sb?Z$1lEqbly1GzJj@FXu2(R1kUsqdS=Z}!be!mbY4cAwM zB9SG5Xg~mHW<*wsI^bn-U1hx}g1_sfP<>rx^}5DzNQB8bNH9@Sy*3;OZ@4)Wj#Ssz zNqqzGk6J#yS}bD6R-KMZHZ8p^9iISW;27qOq2hP~e4IB6txidN($N>K1J< z!^*rQTNYV+rg%eRG{XE8hl;!W6;*fnD+ARvtdfEqsa_YTh?1WWs;CNtS!HESW2A~j zt7}6M_~Ks|in7Xj)Wso&h6Gt88mw=Ovf4mRO??F{iE9TDiMSfAt@FQ^_yPbh=rgO7U7Rr9~-GEr}-e2!H(llahbQLb>skGJ6kMMBQ7 z;bSF!OunDcGtpT>lwW%_T)&T{HGG^Ve@esYnM$QT4WFVwP_?enbD()n?kI;Rvmnc5Ao{F)w>U!|AzErB)56x>ah^aEg&i9U89sfXccx935>NxO^q#S_K+@ zE=R;=yoS?rx=MzIk5wS(WDP%0!>4KZcn!Zs!{w_cFD=sW3p9D3hF_@Rr5dh3+^^B_ zi#7Rj4ZlRgt2BIqhBs)qq2Wy$K2gJ)HGGnWKcL}X(D3aVeyN7<((pnJ->u60= zX!sX3`Bn{|tl@1Mez}HsX!sQx-mT$RYIsV+r)u~>b|3-+5g3TTKm-ONFc5)(2nK|?1O_7T|2YC5xG(vmFLrXMFOmP^0&H8gbVT#ADPQc!&=Wqo;IE`c@|F_ zPMOo6neC;Grp#LwPa8~`S1q148Z(D2o;I2?&saQdFlD}L@wBm&dC1~vLn*V#;%S32 z6SjETSjw!mc-m0Pth9LANXjg-c-lb9%&>UcILb`2c-k<^oMZ8{QIyHE_zA?H{?u&0 zLHt`5Pa8s+S1q14f-;9Ko;H9o&saQd{A9js@wDNSdC1~vqbIY;;%S2?6SjET*vYIl z`E223^BJpjPguhE_{+Boka~<{dd=?!81E0%GLQeS*yw=dq<5idIs^d$xt(meLXy?xU=y1c!}vo7y3LEaGLZ6dxd?#IoFl@9w7kawk?BmcO& zJ{UUvr))OvO~*E-S<{e&H|_HF!ZBg!jsJ_GYAk$l@5$K4libir7>aG|WzmtSw%eB| zJLQWPoEXQMF7kkJci=$*nnD#N%KC!7E5`8fNAuHhz%T0kR36{>B)Vz0t&h+TDQ>RI z+byZ=tu|s~8=rK!x4wdIPk5h|jQ zK*4x_2zNP()17c9^L2n--aS;5spls5_>yCO0+w2{oBAgKrLtaM@}3cbhKCAz!(gJt z@sEo!6Oyy<6lS@L=@oy>W@CMW8>e3pfGjMO+qET5Ym}{MOpe5bP6UU9`iS*SYsi^{_I)Q!p{A8$~PyZ(t91! zCmMun9kz~3j&WfEVFi4R2F7EMjC+s7HXdQo1qtsFKs6MtI8Cot@h4rrLFQ*#TkrJRyVu*pu?yQM9wgceFt`1C{GoP@VeYyN#FcMoPPe(FQWpCsZrD+abE6|V#2wjhv;P~Jr*9?3+Syd{mJjoETGn=e~p6l9prw? zlW-uxubt_k?tLkhFTk>!NK$EMW_hzddc$lP7gPMGJU6AM>VAJuCEjo-=g{SuS}{!vqfcr*sI-!%)(yJWa!m_kT58>@v~DrAmgrjJG%ZA4Y85K2iKf=| zy4J7W&t~1vwrobwabL$clT0OzIs!WQGJUPC^AzdqYq_6vWO3<{0gRju@kN-~kI` z^ek@CT64!?Xq)_b$s9+-SP+uUVrcSK}HW{w_~Dy;4VlK z2%5hK`xqa%*K{gD&Aoi|h-9BjVf$u3YaW4$W{)I?FpXxTJl@g@L#Vx1uRU>!8cZc@ z!-51C5$!aacfQ%Yui-B+(7bZqzgF|Ef$_|p7vF%$Cuya?5oHhwC?BRVeCjj zZUt5&>$$K zg?;KXv5q~j3noc0!F$y1(HUO8nSmrXr~7_`v0#4u{3QI(zt-!Ml`L4tVmNsQz2`{6G z9o#??LdlU$+`ctm##5kp(bzg(#2@B1QN{6=4yrgI2p$k=Yfinf`GlY8Ht1)zq9D=o zFC?vA)ROs^Tt0)Hb{F7@NR+g6G@VUL%W0qc@(w(j<3`%^8{F}H!wxI>@M-s&4(N;w z!}@9W9i52Fy`702+_Lba(mnYlidHAuasrPVa^}!lmc92b;Zd0Gd^{r zGWZnTpUD3&Z1r;Y9>x=!ZF1jjnp$eiPWCd-qiE>989(KY%@}aQmv^2 zJ==OVrP?MAXN5tJ`k$;^s~DidVCvhcy#{n!Q_pcr2UG3Dwi&5*@ZeHECgcFIJ+ajD zJ=>(-!>RV3`+7D3JCr)ulQ4Sj<6c0hXKPO!F2by-m1?_|d81XKa2wSbkaTEt2h z7hi=>h@~DeZErE&+Pu>!3|?y#My@mpr_PPA)OS*QdzwAuQ#zJR8Eox+(Lj-&*F1X)74z++2--!zI-^<%4lHrY=Yjm5l=({ZR2C= zarFFSrUGSzl37o#{GuBC=y7RvozhUkXW0EQRnxNt-A0{HL89R!dQF5MqmIF!T_~ne zPJ^EUEYv8-81Xb#4taQGqNX$Ip-#Y9LSJw87-|wIugHF`|ENHd$HdWWQ19Y)4YS9=JSi!BPP8~ zi{@F5C?6X+RTvnLk7Gp6$Nap~pjp+knHo=Pb59E`(Jf&15Wr=Ih&njDILy&p_*vGpr7R$BxpoJ6~h_DG+15d58~&{ zus*G+aN6uOqCZelQ&DwmVet0(g>yW!Du-WbG}K4tlaqlUeyxjN;(}qw8(h1vCg`b% ztY>$N_^uDsG=_}2#@e-^@H}4al~mL%M}SkBD+z1(!jTCw|c5;3qHkY!+22U9aV6D-r|u%ZiGW% zsr*TN7NYzK@?Dh=ddx)IP_sPmBVGaNkAU4< z5u@ew_j#uMC1(o{NNFGqL|`BSe-9B*zw=kW>zB(NdrYo5ivN*~KV;+SYywIn1Yyh& z8SLiqG@1T94e5MAm^yFZLdnzGMd<=Tm^ycW)*DKy{P&+_>xplr@7|H}1z}B60AF?S zq|WIQPbc^rXem!i7A3xRg5s|la*`BdO?L=bHj5pT1+*?x!gpgljgz!NHdNuIG7!pd zy01{8`w}Hp|0RMo+lM`3-ad$PRs3ZL=TAw;u_~)_u8D7?IRAhw$M!4dRa~U`zZp^I znb{3aGXzp3X{n^;k~T=%Ea`ShcT3tTX@{gKNqZ$dB`KT8cq)+8kaU`)MUs|ES}tjW zq|K6UmvpzJt&(;~nv%3v(o>SELv#uz2|o-;r%75QX{n^;k~T=%Ea`ShcT3tTsj&K& zUx$_pSv778iUdDa(q)SmUu#S*TZ;o^8ja~QJu^Mirp{^P?2LP7%<@c|HATWg&*|zy z!C>}2e^yV*;2Xj|;0_K{;_2o0>moKm3~x@=rV9M;!0~{3L(WIi0dQ+0Pv0PXag2@RG4VImnO5>)-#& z9Pqggcq!p|qnWyID;I8dkiXLb|B3^?)d8n>rT*f-&jEi4cz^ME*FpY|4tN3jWi-`X zBwDJ*`2^lys`VC~=728*ZdhVw?pELh{ftjKx3jX)V4AYJIK=?o%CntSqJ>E z1OAEwPR~=L^Ui0J%Pn6hcam_l%aHg`S^S}co#6;9*-`f`DbB_@%)5!e3$TtAN&8BE zD%nB3<0Y=@o#SBVCI`I60blQcCmrxdfs>yPl#6vz`T0Eu`F#%fPl3~Ue5$>wU2i(b zzYmm1~pI9|YxPZg2jdk4sFBs>of%Z7@W zpfLwKY*j@#I^9!`bKnANtNqcyItCyTZLF;HRABQ<9l7U^*7|X7TwRDxv(G)I(#@@Z02#kH!_pfcN^vq;xV-LsO(T*MM(&4aMo)rfiiY6{yxp2AH z?_IG3M;!Y7IH%U{_4x(pTe6b*mzCVOXkm%}#-&SFc~|>aFI-gOh2WAetys9ccrhHn z;d_k@{)Pa85D}*p;*3Q)(@{Uc5r+!e&NURr_7$n)_2|$%eoUk|evlucsGlKd3gW9Q z+qsN%JfT@kc5Fuhnq^nZ(*R9?gdL7Zr*~qWVCabR8FMz+U4)^>EPAA1e5oF@LO0x=c#M=+z z6sKS2$ce)&b0B|+dPSX)nOkH(P}3~MA(qa^eDY@L=bMUSI!$GAn5JY7z|ZUC>zq9K zGpCe!A{%O>fwiE~u%J~choe11;RfcZtB-~}>*^Xk4Ph)`;phepTH9ES6T7Q}5?Z*Z zcq*;zT)ZlPV@5r}4RxqO&}dkc;L8GjbSf8g zrAkmzJa*(HdQaE&)joluMvk=g9<1P7kilXrX$-%nBH{}8EQ_dfvqYmwLe!4j6$aL)jp%5YF`l|Jdq7O{UaFKvs3zNpH9)WQds$~)o*YAKS}*X(xBSsRP>k}Poz&Vv+I8c7*(O{ zGXo4IgI}52{}tSs{r?CGbbUkWDY{!VOd3$%p(*-(n|{Y6A*iU5lj?Yu7D>@ouzLL| zsjsO1-5hBuJw?U7kkx+m-mhpkZKP;P=_%+CGJ5^$eOytszpmu%^Y158-waccl$3Nl z4IC}m>;HF@QT<9^?b9f_TGOShz5e6Cbp3{9LP60hsZdL5{3z%hWJcj5hncxgr~X|C zyS(BReIL4RO<#SlP+9^INy!P$;uZcW3TW)A`qjRZ`gcAI85k8trKjTfZ_uSCDt)z| z)wBX2(gP0dS9XS=T-RsiT#d0(K_^RA5v8Yi`mUBRRew>rD48tveXLuFa%$voc*m3V zPqX1l{|XyUzEaYu8atvyT-V6@cT0!qC=>c9|JC|S`^(CAp((C?YXsei_e4FZdKESr Rnf~;*%I|kBuqoJB_P?B8N~{0? diff --git a/main.c b/main.c index d750a3a..457bd02 100644 --- a/main.c +++ b/main.c @@ -84,6 +84,9 @@ #define READ_TIMEOUT 2000 +#define BF_CMD_USER_MULT 0x8001U + + // номера используемых физических каналов // static uint32_t f_channels[ADC_LCH_CNT] = {0}; // режимы измерения для каналов // @@ -297,14 +300,21 @@ int32_t f_setup_params(t_x502_hnd hnd) { // } - X502_SetSyncMode(hnd, X502_SYNC_DI_SYN1_FALL); //set ADC sample frequency from internal generator with frequency 2 MHz //X502_SetRefFreq(hnd, X502_REF_FREQ_2000KHZ); + //=======================================================// + //for real work with Radar + //X502_SetSyncMode(hnd, X502_SYNC_DI_SYN1_FALL); + //X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN2_RISE); //start ADC samping by external trigger - X502_SetSyncStartMode(hnd, X502_SYNC_DI_SYN2_RISE); //start ADC samping by external trigger + //=======================================================// + //for debug purposes: + X502_SetSyncMode(hnd, X502_SYNC_INTERNAL); + X502_SetSyncStartMode(hnd, X502_SYNC_INTERNAL); //start ADC samping after executing X502_StreamsStart() + @@ -383,7 +393,75 @@ int main(int argc, char** argv) { fprintf(stderr, "Ошибка настройки модуля: %s!", X502_GetErrorString(err)); } + char* BF_firmware_filename = "l502-BFfirmware0.ldr"; + printf("loading Blackfin firmware file: %s\n", BF_firmware_filename); + + uint32_t bf_firmware_load_state = X502_BfLoadFirmware(hnd, BF_firmware_filename); //load firmware from l502-BFfirmware0.ldr file to BlackFin + printf("load state: %u \n", bf_firmware_load_state); + + + uint32_t BF_cmd_receive_code = 0; + + uint16_t cmd_code = 3; + uint32_t par = 87; + const uint32_t snd_data[] = {1,1,2,2,3,4,5,56,67,23,1}; + uint32_t snd_size = 11; + uint32_t rcv_data[13] = {0,}; + uint32_t rcv_size = 13; + uint32_t tout = 1; + uint32_t recvd_size = 0; + + +/* + uint16_t cmd_code = BF_CMD_USER_MULT; + uint32_t par = 10; + const uint32_t snd_data[] = {1,1,2,2,3,4,5,56,67,23,1}; + uint32_t snd_size = 11; + uint32_t rcv_data[13] = {0,}; + uint32_t rcv_size = 13; + uint32_t tout = 1; + uint32_t recvd_size = 0; +*/ + + + printf("TX cmd_code: %u\n", cmd_code); + printf("TX tout: %u\n", tout); + printf("TX par: %u\n", par); + printf("TX snd_data size: %u\n", snd_size); + for (int i = 0; i < snd_size; ++i){ + printf(" %u,", snd_data[i]); + } + printf("\n"); + printf("TX rcv_size: %u\n", rcv_size); + + + BF_cmd_receive_code = X502_BfExecCmd (hnd, + cmd_code, + par, + snd_data, + snd_size, + rcv_data, + rcv_size, + tout, + &recvd_size); + + + printf("\n======================\n\n"); + printf("RX received code: %u\n", BF_cmd_receive_code); + printf("RX recvd_size: %u\n", recvd_size); + printf("RX received_data:\n" ); + for (int i = 0; i < recvd_size; ++i){ + printf(" %u,", rcv_data[i]); + } + printf("\n"); + + + X502_Close(hnd); + // освобождаем описатель + X502_Free(hnd); + return 0; + @@ -395,12 +473,13 @@ int main(int argc, char** argv) { // } - f_out = 2; + f_out = 1; struct timespec time_started; struct timespec time_ended; timespec_get(&time_started, TIME_UTC); float total_runs = 0.0; long double delta_time = 0.0; + while(f_out != 1){ total_runs += 1.0; diff --git a/makefile b/makefile index 6435129..6c16bb5 100644 --- a/makefile +++ b/makefile @@ -46,3 +46,5 @@ endif all: $(CC) main.c $(FLAGS) -ll502api -le502api -lx502api -o BF_companion +clean: + -rm BF_companion