From 1faf1d6b0dd7175ec81c9b540b8d0775b162d0e8 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sat, 18 Apr 2015 11:24:00 +1000 Subject: [PATCH] Using modified version of latest fork of stm32flash --- .gitignore | 16 +- tools/src/stm32flash_serial/src/dev_table.o | Bin 6080 -> 3835 bytes tools/src/stm32flash_serial/src/i2c.c | 2 +- tools/src/stm32flash_serial/src/i2c.o | Bin 5116 -> 3507 bytes tools/src/stm32flash_serial/src/init.o | Bin 12908 -> 7701 bytes tools/src/stm32flash_serial/src/main.o | Bin 36824 -> 28084 bytes .../stm32flash_serial/src/parsers/binary.o | Bin 9588 -> 4937 bytes tools/src/stm32flash_serial/src/parsers/hex.o | Bin 10340 -> 6144 bytes .../stm32flash_serial/src/parsers/parsers.a | Bin 20464 -> 11500 bytes tools/src/stm32flash_serial/src/port.o | Bin 6008 -> 4124 bytes .../src/stm32flash_serial/src/serial_common.o | Bin 8304 -> 5555 bytes .../stm32flash_serial/src/serial_platform.o | Bin 14896 -> 11790 bytes .../src/stm32flash_serial/src/serial_posix.c | 17 +- tools/src/stm32flash_serial/src/serial_w32.c | 683 +++++++++--------- tools/src/stm32flash_serial/src/stm32.c | 2 +- tools/src/stm32flash_serial/src/stm32.o | Bin 38156 -> 27270 bytes tools/src/stm32flash_serial/src/utils.o | Bin 3548 -> 2147 bytes tools/win/stm32flash.exe | Bin 160128 -> 160128 bytes 18 files changed, 368 insertions(+), 352 deletions(-) diff --git a/.gitignore b/.gitignore index f281811..f685d48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ -.DS_store -other/maple-bootloader/.dep -other/maple-bootloader/TAGS -other/maple-bootloader/tags -other/maple-bootloader/cscope.out -other/maple-bootloader/build -other/maple-bootloader/*~ +.DS_store +other/maple-bootloader/.dep +other/maple-bootloader/TAGS +other/maple-bootloader/tags +other/maple-bootloader/cscope.out +other/maple-bootloader/build +other/maple-bootloader/*~ +*.o +tools/src/stm32flash/src/parsers/parsers.a diff --git a/tools/src/stm32flash_serial/src/dev_table.o b/tools/src/stm32flash_serial/src/dev_table.o index 096f5555a5017982d37ce1024136c7e219f39b5b..4ccec3966038cbaede493616d9ee9f12a22f3b6b 100644 GIT binary patch literal 3835 zcmb`KPi)(C6vv;Pr16%GWwdM^+o*xUQi&!`oTgc~LDoO(Mzb-&U`SNz(!@=oB~F#N zYg&ZV!;VN?c0wF?*o_`Jp(1gZI3Xk?4oH9m5{Dfs#9;_T`M#g+Uz?>JL*f_t=kI&J z&+qyDp6%GqEBlGtZwH8;5h|#}9jomKy?3XRaU)(TIEB3tF_I%=BR=11{R>8G%r!d$ zZuAh{Rfz6I+}S6w%h8QoBHbBnMkOj~L|qAqAI9kMOW;*PwDF?xe=P=t74coSg zPW2W->9wkD(Ytv$-OXnE;O3~A$kGMVNVUfkreShFlJ&A=Z#tGqWQUkA+v$X9VoUks zX(Qn;D4iNjn4{jjw2^F&$0mk$n3J)oA<7#g?RGn1WYAL{#c5|^*~B;ow)J_}m~eNK z?rzE}$=sw{A^mFJjeUJMnaa-iIyI7+5$7it^iEThbnzp?)uw202kGI~Km;2-z=r)K zoZ_;10(J`QaSq*&sJwC9HIi`;aojK6xEH~m^4XlnlB(g-*Z8=Cz3;M5gEg5|!NvB7 zyXmq~u&?>-)$O=&i?xZk9@_`!6`v(VheRE;&Kx{e2m2lXkpovvuxjVpJT?Zl?z3w? zyL;SzupcnX^(6%x=Me17VclJu0rn#RAaq(&bfGBP$^PiFhrxaf036{Hqpa@L)eHm2PnEZa0KiivwV(o*hE}ai(=0OkS&qB*c=i<7b5FwRn*$lJ zlRmrQ$L;CP0qiK)8K2E5I>!M-dh_&blscx_Td@mvpRT>g$sCR zTL-)7vpJs)^65b?|9_jtpOl+KP?^5+wmzY!TxF!_ zwNNXxDsu~s=1s8WLKDjx{T8E|@K`o*VIK%B)O;YzK$IO~T$p`q zE-to6J zCDwGTauAMv+?_;K!>#J7<*Y1Pv>%nI7OfTqPE27i6j%cr?t>)du=0}D8wqH~wdheq z8>C3&RhW3`J3;|%EOI7tsTWo0RRUTh!lnW(gi>Tc37vuVOegUD# z6yWZWw)5);huNLk@#TY}?au7@>Opb9+(WYbt<%}w@Jti|41e=*#Lgz(xZvW|1{D6@ z>26ie6~;cG@U`8&xVFb|jROjQ=XAH*o{Os*P!4wi{C~!GG2gtrE>*mX#Y@)wQhBaw tFEq&0h57lWbxT^!f?dYF?+uDC4o|n7Cb{2;gR85nKJgzziE4}a{{UL}fT;ig literal 6080 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 literal 5116 zcmb_feQaA-6~FKK`PnZ{oDa99Xc<_zOH)dn#7)+Oc5R#{T}-p2a-A*%y2p$C;+Q$M z_3V6XY$8Z75&q~_RfsWFD12x`8h;?@L?x&+G1w}Nk4lqJ0U@C=B=}=6Z3VFwQGVyW z^BVglmCD4G?>YCJd+zU^d+)jT9sm0JTmK0NA^8LdD)Ds{B#MgiLDWH#Z&Ox7PRC1Z zv|STEtK-Nd2IrBXEY zlCgkj-W)II8PAQEPcvQx{_z|QkS<<%_Oo`tc+dA5k4>R5{;|Z*juZpcf z_q^LhoSfZ>x`O%q;FrPs!3oBVVTuc?f_&R8qS@W%U54PaOwU)Q3R*>LZ}4`UGe|eF`+FehXAnUj%JZFN22E z--9-*e*YAzr=-2$iu>eP zR1(T{ST=nML<-G;hEBs@q0EBTX@#;vi;=Hja3C1?3WPV%ls_3bi{?AjoUStutw9?) z4dOr8&+Cw4Nuai_TF#TS2p3x+fg*`@-!~n|fCm+FimIJ{$_+>f*MffTOh9%&$nH z(8ogu(V=$3rn3d7y#rmou%it|BwyGy(OO`VicrsBQvzd}wo9qV?q)33Z^Jdy6WY>m zTODa8I~hq)I1UUFb~mRY?NWy{3}veyR-{Zt$VN~iDckRhB;5$NU^8%hSPFh|Aqt6X zJPT1&%2q8tPwJ{^6^x?O7OK#&fll#tNq$*v3PxlZC`l-tF3KY*^a(;QS89cFscP@L zttgagrZs0|O+g{EWLQPBq-Pg$HfEAOoY9GiQx8O!Osk5K(f)WM+MO*THQd*q7>M`A z6N7uA-Lpp3%tg^{+wPAis!OFk?0wHPT(0&QxrIWhfG@jID_cFI49*e#qFY5k5FUr7yO{4k-yufQ`q>_Mvg$P@->>U-rO8v%W3R;5?Ov-AqlMN=~FkImC53 z0vw1F@cKeIhf`Us>P9YS2|9Oc#rf>(3&x75)e8-wo-LNErm##SCyM1#KH3mF`152~ z$U^jL;W3jYbJ(&~z|rR`g|fK+L~2S;XHGhe(M;NDjHHjdo{<@b=FOU(oy+T#r{es_^9B!vk|p+BqQo;gBXVkm#@v&U%iS|SfbGLTu@vD++V~x=@Io+=idLnDc!g6 zlS#?}>=%Sy5j=HvA)SO*hYGc~g;ySW_4VoFgJ_SV+K)H54{r{YRaCNji(e@hmvmIT zxHnP$7aP3sg6cK`L!oKOKOeF(KQcDLBR$PWZE}NbD0d^-EtI=b+DFCKuzxw#~m!G|F{rT746A$mb+PnJY(7AW6+%@**wdG%)JM@DeKJ}{~zxclkNP>(GpOH0y@2{EDrG-l_B$PM-fhYjNJTlq z4saAo0Z2vPeO8@;NUAQ>U8pGZ)h88wS{aMd2vSiV!B&(qW>}L*PPR32qBW;wkPGIEl%`e7o8nYTbbX0Gn5aEU@TzN zHfKT#FOtLk;7AiP%#~i2nJd45j4>JJ%4L?BD?ekIx$+Xr%$1+8%v`z1GIQku%gmMU zv&>xi9?Q&?@3PEX`3}p>m35YxE9Y5et~|psa|NQkFW4gy#)i0MJIT#Lxc|#LNyetT u|GOwONuHsBC^WPcZ8zf+y7SKA+0k!3aT9u+-qEpf=ZWv#=!%>3Li`s%665Xw diff --git a/tools/src/stm32flash_serial/src/init.o b/tools/src/stm32flash_serial/src/init.o index 85f0f9bfe20c19571cc3324d6e93e1e7c2d98964..36468ac40a596bcf3cce68e0180a38d539250aa7 100644 GIT binary patch literal 7701 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 bGXmW#R&<^3lJSjzJ|$U372gJ&L-v0GtHly$ literal 12908 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 KabMhenEHRi?d;|N literal 36824 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 diff --git a/tools/src/stm32flash_serial/src/parsers/hex.o b/tools/src/stm32flash_serial/src/parsers/hex.o index 6055d4eb49835e41a9b48b78dd7be173edadd591..1de9478b2dbc1f984619223a0de182546dd2e104 100644 GIT binary patch literal 6144 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 W<@|BT;>lth6Io%hZB{2b(*FXw56%|= diff --git a/tools/src/stm32flash_serial/src/parsers/parsers.a b/tools/src/stm32flash_serial/src/parsers/parsers.a index d782c6a7cf8b89362e1314209216c3a661aac26a..0429510d929c9da13895b30b4c847ba2811a5b23 100644 GIT binary patch literal 11500 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 literal 20464 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 literal 14896 zcmb_j4Rlo1wZ8Yxy*HBtk_i(b5-39xAPD&(fQBlPXhv@;fd~nLqQfwmkVyWT%s{kK zK@!Sz%#)PbT9>+LpSJiauYXTV<)^49*iy|~r3?Cs7T?2X(nT#+v^=5mzJ1QV$;?gY zYP)*$oPEB%_t|Hk-+S+#@a89f_%uaPRF{GRndmMPg%26&YUDD)S4ewjNWmf2u`z5a zl)c<85Qv1kA`CzRfm;8{+F@+hE~U#F+0#+&DpHi$#L|_`MC=p@)Q8tb*9Dqd8`_8$ z2vputvFsLGtk`yb;g+oZ<0L&>TeuYOlGeHB3EU$=-|X#gKn<Ys3p7l4{6Ppj6Iqf~i_9oIIAT_hS za~SVD$#VE--&b_v>POgnjR$J4<+fSUNJ8nb7iw$4I3s~*>&B+m`aocDWrD8qOSV_e z>(R^hcFa|jv{C&FHwGFyu)0#{+%Fzp&)saVAD1!@T{OV8-I&-vIZH?WH2S0Y@Li`U z9yFlq-QL4=W^^9kAk*Z?s~s4Ul9Z z6`9>*P#*DLqMipAqO{`vfh}EbdRk@nu#ko~=wqQ3@A60k`Uss%;E;h~9cr3v=i~?- znxSN!{}|FK6J1#`|7mN>rqf_MG`}J=H=U+ly%g|rlN%Tik?wGgj;0zLbXj;2l3B~;<<7L<>Wa6}R29pM*eo`Lt znU-vjj@gi;H*v3ALy|b!#j8(SGheb|AQB$6RDwqbyDwk9oHRDfS_4wiKWBV27{~Z( zrBhcLADw{AzjqW*jWUYNDVt#`X?;{LO-m$nYNV*cZ?>i*1b zKWvGS#Qn#&4rnp|vCQsiNjx>?KbqOoWb=;rPtnO7tVe;mSgMt%JNF$}%HSy!2WjZE zo8$7dCEpBUzdsKRUai4rWnJ)}q?QNojp*g5C{{1Fo3Qf(MeLnXEUky0?MZhA0Crru z|5VI>crZ(%c=f3*A7EZDPdy55+<(|Q*b>nG*;x_d$;i=ib^O&SPxT z1*`(HIE&}7d(V;G%x*r==Pctf>L=zO81ztuFH^##h|vwu>BiRQ^G#Qcuqg(7P%3S@ z5MKn<3zp%gMzNRWNs8B9h<`5TKR<-5*om0`oP=8sd*}o>_rFK34tEk?B$QzT_sppJ zCDz{Enu?lu1RN1<51M#ipaIf$E03l1(FQj ziQ*vbuNMiDO1x~yO7%c|0Tu^$+)Hkf#@>ke&&c-R4$0`TCuDrXP>Wdgg_!@8n6#~j zOYVL}uGf~c^06ZyX>s!V0$rl9=owshvFcNm*bZ_38MtX}{iD~4^)zDRSg`|ZKr+Al z6m`^VY=Xa5yjO@q+1oAk<;(w#E4%*(;16yi9RN3W&ES0u)}#V7GdP4VrojM%%{Y65 z%NQuP0nh;@1IpI{%53lsz$_cQtSW<_u|c;>5nEkss3ZRK;vjtoB|T4KFIhPI7{^L6 zj@}wE4s=7~FyuIdC}A8&Ayo$PdO>a+rI(07dPfler+-kaB}vf7puDDKr*lN7r|7!T zVm*t|Rjk*d4!akVMPwx|*joqGSWl&p3|~D$(sL-YXSS`39uH9?yZb{PoFTjWL!J^x z_dkMjIQ`T;%$JMqZ*X=(Z0dyG(&Z66;@>Me;bHBiuj8a)-3hy5?;3KW@eZcl9Pe6V zZF%qVrAyc&s9up(1Feg=grHT!T8&`62xq`*WY$WsE=ktPgbw4;{-I+-?_6766Mn=u zfqkGv=>OS@KTow-&uo-@LZXMPbUb*|qkF9_Zz!8F2oRhjI+s>_=^88b11koCzJ=6gJTfDGa; zAoG>+UNTr2f0Qg$#Y~d*FC@lp6e+r)YdNNvCi68g zRP)y)Gv7n$Qc`XNp{rk;tS`aAGIZB0(@VXW`6yL$K1$8J1*OZp1Ep>@qBP9=QJUt% zC{xU*P`b?@qD(apqf9eTpiDP^k8+Ip7nEa74~%D+c_=f@Yf*a4&!fyT??E}v>_F*N zQr4s2ZK!G$+Or^r?mhxipv_2i!AL2&S)k=9YHAuFO}#c#%X6!#UxSvAUZdrC)YM&o zACh#ImY1WZ?y=!)EpL*VN|7ERE!6U`i25hcOuGw(n%;mi{chM+^tC7xxQgBd#u)8) zXq@6s`3k@XsA_kn^r1>oMXfGDJv|0)`V%M={kteJt)Dl&&{EAwq-#z?iP^`KLn$K0 zlElWpp~mE*qMt!EjfN(jQ}oMVX!oFrTTP)kZKl=*?k^J2u1j43I)NN36Y~_Y;Q}pB z#aKTJk^5i3tkG^rrPC;8ZK2TpHXuG;741ebr}R$PNu4bcb9x*ty9t(yIsGrd0|YB* z5>wqUDd0_7UV)mL0r&|?Z`Sfk)YKaQ)6qby)bh&IR12_*pkK=?S5vnE(sXIJXnB^Z zjC~j#(^gdVRcflsjt6Bt2{rw8RV9yo;*2WFdZy}%%*RlLm{w5h>+%#hG_t-$^5v>V zN2#wJd+`ObH&az<<#(V?X^O+%Ot#ma`D{}3)OZEmC~zBVMzG2P-=E5SB)jbGPR!-K5{6Q?GXNTDdQ%R z;!)wAw5ce)4)>1Qlk_C4=&#eQqG78{Wqn&+I{ORh!Wzu~Y%=W^ru$8)`~*MjY=`|k zH1B(4+W)BVs@{8+&@Imhw8ndx(5=r4wAwo!rgZC7fmV7xVZ+~G!`a0o{`?fYBWry% z*$W8Wb^)cBc0@@mx7 z?*TqT(tKCmW4NtTeh9E1Og%^cGxe;yK5M=TteC$-shaPg)XYDkbeVrasgue?GYcz^ z$2UsVybh&iR-tr}@Mbe0gme^Ca|;O-?fW2xJLMj1j=iYr(eYtaU#IGes!mT67Zv&z za9!kx9;ey>dPzw^?E})B>3SU1lxt9!n04Lf`ZvP2qWBD9%OxU~YL+@J!)v%QvQ&?m zivWR^uedU9Oi#y7#G6Z%7pj?p7`mFC{<-w)AutP|GifZ$jfcpUA-Qg^>dLTHQpZB2 z%1e^6v{JN5yGpI{&cNqTx*^Psp_jL@^Mux-G0-zKgoiVVV1vMnF;(6yb(~rbW~Kox zVpe%c$CD1H$6+UCQR`v;IBuJs*w)K!(`DOiZo=@Y;U;!xe92zUMa)-uh$gwIfV0knJPc=nVFJ_EIiR}Y`|BIC3XlF-pQ){R>S|2X% zyss0F^>9a1usP7)9E>!yb+iweIQXMIbdiX8m<$DdB8CCxYwbsm1Os! z%|1ho8VcB&nFatAZGRs#-TB58^sva#x>;hRpd*)iouQvFT>C`1|6N0Sca^l_UTw_! zD-9A=Kc)`d`L$o`v${(G%r(aCbC~Ih!xHEVl;F1pjJB`wL7&Z)Cq>_UZ~*-sH%AT5&K9{=m%_i6{md|Xlsu&wY7FC zbOXxmDDF+(d*by_=ry&1)esDY6?(JX5bS6Uw+2Ej^8g*!R|5v4x7p$U_-HW;m67L0_I<^E+=6^jEmRn%1m=9HF{Bs0n!jM8}y z#yqFSf@>Wba~3$Q&Mk9VnSb4gR&(Y%o6RXjU&;QJ&Mk48DxD8g$y)QSEpd7|A36># z;X`u61*LOF_$3-9tIZk38l0z;G@DgRR#Ysmsp5>&GwAc&~#lm5(qV{3(%ht;5-EgcZA!U?^F0F z4ewg9ld|%RM-C>5C1xXuBWHV7@yDb)ihI*x~xgNKX5(+fYc~v4IA{c8Z&?Xom%oGVifo219NOOn^Edy*bQkX;GXNm z59w>84NB|U`>;JaP~n zE5h3~d)xc$BTK&iR@;w$U+~pWcHTex+xJF4{Mq_via*}@r<6-O zpN2mDet#JGIPw`}3ZLreEE_o=c^+~lGJOkzDBq)wkm&Q8a3fw~DbYth;Xi>-iNYX+ zPlHmTND$#a@Czn|fC%d>r>}6reQb}u^9e6vOrO$(>BE>3g?tFta(fDO5N_uF?KveL zCFh*dy!|~o_+k-%?~yI6;R6Sh)&`$q_>Wdj_D_6r5idJpJxD@*Q+s>`h&80X>FLEk~a}J^hcbf8of}dp(bgwYC@ie*13sZ~ph!6Q7%z64?LA zD~~TM*}Og7f9CwgS8wdjJvVb)u`l=RBQ-mJ_=a-Ntdp=b!p> z4?Hmc;@fGDKCtV%zxcn|n1n^h%aFs!6#k4OQ>>RFy@!!0%1bfczaZ1+c^)#wb}6{G z8o3SmA>>DqcO&mZegpX(-5 z>uig@w~0j`+^j|6U}Di*G25az3b80A!det+C)NNmv*f@o+cDIiUO{fh zdmoXON7(mak}2IL$q2a}Nvykq+zud4yMlZuGIj;I9r!zjNktmbKX~??qTatuQM){< zXH1Hlri~_={@SSjH*{lMzHG-Cm5L0{HtpuISbdR5uM)ZJw^EO%S{Y5R8G7xk$5TG4 z-q)a4a7x?;T@n8fqkI3<0q$q;>WteKO@pK z3v>{4Cg^WLXMo-gS^`=CinwWE8Ynf{j|aC8v=0QEd#|I6y}3Y1|7hbF9t>ALdc&3oeKOEDD_LRLh5%VC|sC)UKe|K(7JK0WAPMiOELOLi+iMlBsyOH@U<8Lu-Vj5(6 zJ=3{NuV$LX^b#f$b7gLp^JSKSVyk3eZ_quQfjOo3jtn0trY0i?6hp}HfFjYKaM626 z#x6-~nd(n4W~x8Nn5j;80ov6v)psyvsz1z_slJ^tQ@xupQ++dIruqYnnd)7Pnd-E! zFos&DI=z>K7O@)z33#s-I)bR6om@sXoA%seXnrQ~fk!rur$yO!bqDnd-+GGu8VUGu4kV zW~v`$%v3+jn5me5Oo2(`CwdxkqKBC7V!D~>8m8q;eM~__yLvRvK(^CH!ej7mN`F~| z^q?)rCa3f;WBXD2IAiOk6zn@Avd~B=~VYP=>%JP{AJZI2AYO2_65IVM*~a_1_NDt=1_txJZ~hKE)ZZgg;kvm@E$ i??|q2c_f>>9)&v`txgn<=uiwIQG=#C5sMiohVuUpp8HAw diff --git a/tools/src/stm32flash_serial/src/serial_posix.c b/tools/src/stm32flash_serial/src/serial_posix.c index 46b8a94..30b5ff8 100644 --- a/tools/src/stm32flash_serial/src/serial_posix.c +++ b/tools/src/stm32flash_serial/src/serial_posix.c @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -197,13 +198,27 @@ static port_err_t serial_setup(serial_t *h, const serial_baud_t baud, return PORT_ERR_OK; } +static int startswith(const char *haystack, const char *needle) { + return strncmp(haystack, needle, strlen(needle)) == 0; +} + +static int is_tty(const char *path) { + char resolved[PATH_MAX]; + + if(!realpath(path, resolved)) return 0; + + if(startswith(resolved, "/dev/tty")) return 1; + + return 0; +} + static port_err_t serial_posix_open(struct port_interface *port, struct port_options *ops) { serial_t *h; /* 1. check device name match */ - if (strncmp(ops->device, "/dev/tty", strlen("/dev/tty"))) + if (!is_tty(ops->device)) return PORT_ERR_NODEV; /* 2. check options */ diff --git a/tools/src/stm32flash_serial/src/serial_w32.c b/tools/src/stm32flash_serial/src/serial_w32.c index cf5cd39..56772c0 100644 --- a/tools/src/stm32flash_serial/src/serial_w32.c +++ b/tools/src/stm32flash_serial/src/serial_w32.c @@ -1,342 +1,341 @@ -/* - stm32flash - Open Source ST STM32 flash program for *nix - Copyright (C) 2010 Geoffrey McRae - Copyright (C) 2010 Gareth McMullin - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "serial.h" -#include "port.h" - -struct serial { - HANDLE fd; - DCB oldtio; - DCB newtio; - char setup_str[11]; -}; - -static serial_t *serial_open(const char *device) -{ - serial_t *h = calloc(sizeof(serial_t), 1); - char *devName; - - /* timeout in ms */ - COMMTIMEOUTS timeouts = {MAXDWORD, MAXDWORD, 500, 0, 0}; - - /* Fix the device name if required */ - if (strlen(device) > 4 && device[0] != '\\') { - devName = calloc(1, strlen(device) + 5); - sprintf(devName, "\\\\.\\%s", device); - } else { - devName = (char *)device; - } - - /* Create file handle for port */ - h->fd = CreateFile(devName, GENERIC_READ | GENERIC_WRITE, - 0, /* Exclusive access */ - NULL, /* No security */ - OPEN_EXISTING, - 0, /* No overlap */ - NULL); - - if (devName != device) - free(devName); - - if (h->fd == INVALID_HANDLE_VALUE) { - if (GetLastError() == ERROR_FILE_NOT_FOUND) - fprintf(stderr, "File not found: %s\n", device); - return NULL; - } - - SetupComm(h->fd, 4096, 4096); /* Set input and output buffer size */ - - SetCommTimeouts(h->fd, &timeouts); - - SetCommMask(h->fd, EV_ERR); /* Notify us of error events */ - - GetCommState(h->fd, &h->oldtio); /* Retrieve port parameters */ - GetCommState(h->fd, &h->newtio); /* Retrieve port parameters */ - - /* PurgeComm(h->fd, PURGE_RXABORT | PURGE_TXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); */ - - return h; -} - -static void serial_flush(const serial_t *h) -{ - /* We shouldn't need to flush in non-overlapping (blocking) mode */ - /* tcflush(h->fd, TCIFLUSH); */ -} - -static void serial_close(serial_t *h) -{ - serial_flush(h); - SetCommState(h->fd, &h->oldtio); - CloseHandle(h->fd); - free(h); -} - -static port_err_t serial_setup(serial_t *h, - const serial_baud_t baud, - const serial_bits_t bits, - const serial_parity_t parity, - const serial_stopbit_t stopbit) -{ - switch (baud) { - case SERIAL_BAUD_1200: h->newtio.BaudRate = CBR_1200; break; - /* case SERIAL_BAUD_1800: h->newtio.BaudRate = CBR_1800; break; */ - case SERIAL_BAUD_2400: h->newtio.BaudRate = CBR_2400; break; - case SERIAL_BAUD_4800: h->newtio.BaudRate = CBR_4800; break; - case SERIAL_BAUD_9600: h->newtio.BaudRate = CBR_9600; break; - case SERIAL_BAUD_19200: h->newtio.BaudRate = CBR_19200; break; - case SERIAL_BAUD_38400: h->newtio.BaudRate = CBR_38400; break; - case SERIAL_BAUD_57600: h->newtio.BaudRate = CBR_57600; break; - case SERIAL_BAUD_115200: h->newtio.BaudRate = CBR_115200; break; - case SERIAL_BAUD_128000: h->newtio.BaudRate = CBR_128000; break; - case SERIAL_BAUD_256000: h->newtio.BaudRate = CBR_256000; break; - /* These are not defined in WinBase.h and might work or not */ - case SERIAL_BAUD_230400: h->newtio.BaudRate = 230400; break; - case SERIAL_BAUD_460800: h->newtio.BaudRate = 460800; break; - case SERIAL_BAUD_500000: h->newtio.BaudRate = 500000; break; - case SERIAL_BAUD_576000: h->newtio.BaudRate = 576000; break; - case SERIAL_BAUD_921600: h->newtio.BaudRate = 921600; break; - case SERIAL_BAUD_1000000: h->newtio.BaudRate = 1000000; break; - case SERIAL_BAUD_1500000: h->newtio.BaudRate = 1500000; break; - case SERIAL_BAUD_2000000: h->newtio.BaudRate = 2000000; break; - case SERIAL_BAUD_INVALID: - - default: - return PORT_ERR_UNKNOWN; - } - - switch (bits) { - case SERIAL_BITS_5: h->newtio.ByteSize = 5; break; - case SERIAL_BITS_6: h->newtio.ByteSize = 6; break; - case SERIAL_BITS_7: h->newtio.ByteSize = 7; break; - case SERIAL_BITS_8: h->newtio.ByteSize = 8; break; - - default: - return PORT_ERR_UNKNOWN; - } - - switch (parity) { - case SERIAL_PARITY_NONE: h->newtio.Parity = NOPARITY; break; - case SERIAL_PARITY_EVEN: h->newtio.Parity = EVENPARITY; break; - case SERIAL_PARITY_ODD: h->newtio.Parity = ODDPARITY; break; - - default: - return PORT_ERR_UNKNOWN; - } - - switch (stopbit) { - case SERIAL_STOPBIT_1: h->newtio.StopBits = ONESTOPBIT; break; - case SERIAL_STOPBIT_2: h->newtio.StopBits = TWOSTOPBITS; break; - - default: - return PORT_ERR_UNKNOWN; - } - - /* reset the settings */ - h->newtio.fOutxCtsFlow = FALSE; - h->newtio.fOutxDsrFlow = FALSE; - h->newtio.fOutX = FALSE; - h->newtio.fInX = FALSE; - h->newtio.fNull = 0; - h->newtio.fAbortOnError = 0; - - /* set the settings */ - serial_flush(h); - if (!SetCommState(h->fd, &h->newtio)) - return PORT_ERR_UNKNOWN; - - snprintf(h->setup_str, sizeof(h->setup_str), "%u %d%c%d", - serial_get_baud_int(baud), - serial_get_bits_int(bits), - serial_get_parity_str(parity), - serial_get_stopbit_int(stopbit) - ); - return PORT_ERR_OK; -} - -static port_err_t serial_w32_open(struct port_interface *port, - struct port_options *ops) -{ - serial_t *h; - - /* 1. check device name match */ - /* Roger Clark. Added support for com10 and higher numbers */ - if (!((strlen(ops->device) == 4 || strlen(ops->device) == 5) - && !strncmp(ops->device, "COM", 3) && isdigit(ops->device[3])) - && !(!strncmp(ops->device, "\\\\.\\COM", strlen("\\\\.\\COM")) - && isdigit(ops->device[strlen("\\\\.\\COM")]))) - return PORT_ERR_NODEV; - - /* 2. check options */ - if (ops->baudRate == SERIAL_BAUD_INVALID) - return PORT_ERR_UNKNOWN; - if (serial_get_bits(ops->serial_mode) == SERIAL_BITS_INVALID) - return PORT_ERR_UNKNOWN; - if (serial_get_parity(ops->serial_mode) == SERIAL_PARITY_INVALID) - return PORT_ERR_UNKNOWN; - if (serial_get_stopbit(ops->serial_mode) == SERIAL_STOPBIT_INVALID) - return PORT_ERR_UNKNOWN; - - /* 3. open it */ - h = serial_open(ops->device); - if (h == NULL) - return PORT_ERR_UNKNOWN; - - /* 4. set options */ - if (serial_setup(h, ops->baudRate, - serial_get_bits(ops->serial_mode), - serial_get_parity(ops->serial_mode), - serial_get_stopbit(ops->serial_mode) - ) != PORT_ERR_OK) { - serial_close(h); - return PORT_ERR_UNKNOWN; - } - - port->private = h; - return PORT_ERR_OK; -} - -static port_err_t serial_w32_close(struct port_interface *port) -{ - serial_t *h; - - h = (serial_t *)port->private; - if (h == NULL) - return PORT_ERR_UNKNOWN; - - serial_close(h); - port->private = NULL; - return PORT_ERR_OK; -} - -static port_err_t serial_w32_read(struct port_interface *port, void *buf, - size_t nbyte) -{ - serial_t *h; - DWORD r; - uint8_t *pos = (uint8_t *)buf; - - h = (serial_t *)port->private; - if (h == NULL) - return PORT_ERR_UNKNOWN; - - while (nbyte) { - ReadFile(h->fd, pos, nbyte, &r, NULL); - if (r == 0) - return PORT_ERR_TIMEDOUT; - if (r < 0) - return PORT_ERR_UNKNOWN; - - nbyte -= r; - pos += r; - } - return PORT_ERR_OK; -} - -static port_err_t serial_w32_write(struct port_interface *port, void *buf, - size_t nbyte) -{ - serial_t *h; - DWORD r; - uint8_t *pos = (uint8_t *)buf; - - h = (serial_t *)port->private; - if (h == NULL) - return PORT_ERR_UNKNOWN; - - while (nbyte) { - if (!WriteFile(h->fd, pos, nbyte, &r, NULL)) - return PORT_ERR_UNKNOWN; - if (r < 1) - return PORT_ERR_UNKNOWN; - - nbyte -= r; - pos += r; - } - return PORT_ERR_OK; -} - -static port_err_t serial_w32_gpio(struct port_interface *port, - serial_gpio_t n, int level) -{ - serial_t *h; - int bit; - - h = (serial_t *)port->private; - if (h == NULL) - return PORT_ERR_UNKNOWN; - - switch (n) { - case GPIO_RTS: - bit = level ? SETRTS : CLRRTS; - break; - - case GPIO_DTR: - bit = level ? SETDTR : CLRDTR; - break; - - case GPIO_BRK: - if (level == 0) - return PORT_ERR_OK; - if (EscapeCommFunction(h->fd, SETBREAK) == 0) - return PORT_ERR_UNKNOWN; - usleep(500000); - if (EscapeCommFunction(h->fd, CLRBREAK) == 0) - return PORT_ERR_UNKNOWN; - return PORT_ERR_OK; - - default: - return PORT_ERR_UNKNOWN; - } - - /* handle RTS/DTR */ - if (EscapeCommFunction(h->fd, bit) == 0) - return PORT_ERR_UNKNOWN; - - return PORT_ERR_OK; -} - -static const char *serial_w32_get_cfg_str(struct port_interface *port) -{ - serial_t *h; - - h = (serial_t *)port->private; - return h ? h->setup_str : "INVALID"; -} - -struct port_interface port_serial = { - .name = "serial_w32", - .flags = PORT_BYTE | PORT_GVR_ETX | PORT_CMD_INIT | PORT_RETRY, - .open = serial_w32_open, - .close = serial_w32_close, - .read = serial_w32_read, - .write = serial_w32_write, - .gpio = serial_w32_gpio, - .get_cfg_str = serial_w32_get_cfg_str, -}; +/* + stm32flash - Open Source ST STM32 flash program for *nix + Copyright (C) 2010 Geoffrey McRae + Copyright (C) 2010 Gareth McMullin + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "serial.h" +#include "port.h" + +struct serial { + HANDLE fd; + DCB oldtio; + DCB newtio; + char setup_str[11]; +}; + +static serial_t *serial_open(const char *device) +{ + serial_t *h = calloc(sizeof(serial_t), 1); + char *devName; + + /* timeout in ms */ + COMMTIMEOUTS timeouts = {MAXDWORD, MAXDWORD, 500, 0, 0}; + + /* Fix the device name if required */ + if (strlen(device) > 4 && device[0] != '\\') { + devName = calloc(1, strlen(device) + 5); + sprintf(devName, "\\\\.\\%s", device); + } else { + devName = (char *)device; + } + + /* Create file handle for port */ + h->fd = CreateFile(devName, GENERIC_READ | GENERIC_WRITE, + 0, /* Exclusive access */ + NULL, /* No security */ + OPEN_EXISTING, + 0, /* No overlap */ + NULL); + + if (devName != device) + free(devName); + + if (h->fd == INVALID_HANDLE_VALUE) { + if (GetLastError() == ERROR_FILE_NOT_FOUND) + fprintf(stderr, "File not found: %s\n", device); + return NULL; + } + + SetupComm(h->fd, 4096, 4096); /* Set input and output buffer size */ + + SetCommTimeouts(h->fd, &timeouts); + + SetCommMask(h->fd, EV_ERR); /* Notify us of error events */ + + GetCommState(h->fd, &h->oldtio); /* Retrieve port parameters */ + GetCommState(h->fd, &h->newtio); /* Retrieve port parameters */ + + /* PurgeComm(h->fd, PURGE_RXABORT | PURGE_TXCLEAR | PURGE_TXABORT | PURGE_TXCLEAR); */ + + return h; +} + +static void serial_flush(const serial_t *h) +{ + /* We shouldn't need to flush in non-overlapping (blocking) mode */ + /* tcflush(h->fd, TCIFLUSH); */ +} + +static void serial_close(serial_t *h) +{ + serial_flush(h); + SetCommState(h->fd, &h->oldtio); + CloseHandle(h->fd); + free(h); +} + +static port_err_t serial_setup(serial_t *h, + const serial_baud_t baud, + const serial_bits_t bits, + const serial_parity_t parity, + const serial_stopbit_t stopbit) +{ + switch (baud) { + case SERIAL_BAUD_1200: h->newtio.BaudRate = CBR_1200; break; + /* case SERIAL_BAUD_1800: h->newtio.BaudRate = CBR_1800; break; */ + case SERIAL_BAUD_2400: h->newtio.BaudRate = CBR_2400; break; + case SERIAL_BAUD_4800: h->newtio.BaudRate = CBR_4800; break; + case SERIAL_BAUD_9600: h->newtio.BaudRate = CBR_9600; break; + case SERIAL_BAUD_19200: h->newtio.BaudRate = CBR_19200; break; + case SERIAL_BAUD_38400: h->newtio.BaudRate = CBR_38400; break; + case SERIAL_BAUD_57600: h->newtio.BaudRate = CBR_57600; break; + case SERIAL_BAUD_115200: h->newtio.BaudRate = CBR_115200; break; + case SERIAL_BAUD_128000: h->newtio.BaudRate = CBR_128000; break; + case SERIAL_BAUD_256000: h->newtio.BaudRate = CBR_256000; break; + /* These are not defined in WinBase.h and might work or not */ + case SERIAL_BAUD_230400: h->newtio.BaudRate = 230400; break; + case SERIAL_BAUD_460800: h->newtio.BaudRate = 460800; break; + case SERIAL_BAUD_500000: h->newtio.BaudRate = 500000; break; + case SERIAL_BAUD_576000: h->newtio.BaudRate = 576000; break; + case SERIAL_BAUD_921600: h->newtio.BaudRate = 921600; break; + case SERIAL_BAUD_1000000: h->newtio.BaudRate = 1000000; break; + case SERIAL_BAUD_1500000: h->newtio.BaudRate = 1500000; break; + case SERIAL_BAUD_2000000: h->newtio.BaudRate = 2000000; break; + case SERIAL_BAUD_INVALID: + + default: + return PORT_ERR_UNKNOWN; + } + + switch (bits) { + case SERIAL_BITS_5: h->newtio.ByteSize = 5; break; + case SERIAL_BITS_6: h->newtio.ByteSize = 6; break; + case SERIAL_BITS_7: h->newtio.ByteSize = 7; break; + case SERIAL_BITS_8: h->newtio.ByteSize = 8; break; + + default: + return PORT_ERR_UNKNOWN; + } + + switch (parity) { + case SERIAL_PARITY_NONE: h->newtio.Parity = NOPARITY; break; + case SERIAL_PARITY_EVEN: h->newtio.Parity = EVENPARITY; break; + case SERIAL_PARITY_ODD: h->newtio.Parity = ODDPARITY; break; + + default: + return PORT_ERR_UNKNOWN; + } + + switch (stopbit) { + case SERIAL_STOPBIT_1: h->newtio.StopBits = ONESTOPBIT; break; + case SERIAL_STOPBIT_2: h->newtio.StopBits = TWOSTOPBITS; break; + + default: + return PORT_ERR_UNKNOWN; + } + + /* reset the settings */ + h->newtio.fOutxCtsFlow = FALSE; + h->newtio.fOutxDsrFlow = FALSE; + h->newtio.fOutX = FALSE; + h->newtio.fInX = FALSE; + h->newtio.fNull = 0; + h->newtio.fAbortOnError = 0; + + /* set the settings */ + serial_flush(h); + if (!SetCommState(h->fd, &h->newtio)) + return PORT_ERR_UNKNOWN; + + snprintf(h->setup_str, sizeof(h->setup_str), "%u %d%c%d", + serial_get_baud_int(baud), + serial_get_bits_int(bits), + serial_get_parity_str(parity), + serial_get_stopbit_int(stopbit) + ); + return PORT_ERR_OK; +} + +static port_err_t serial_w32_open(struct port_interface *port, + struct port_options *ops) +{ + serial_t *h; + + /* 1. check device name match */ + if (!((strlen(ops->device) == 4 || strlen(ops->device) == 5) + && !strncmp(ops->device, "COM", 3) && isdigit(ops->device[3])) + && !(!strncmp(ops->device, "\\\\.\\COM", strlen("\\\\.\\COM")) + && isdigit(ops->device[strlen("\\\\.\\COM")]))) + return PORT_ERR_NODEV; + + /* 2. check options */ + if (ops->baudRate == SERIAL_BAUD_INVALID) + return PORT_ERR_UNKNOWN; + if (serial_get_bits(ops->serial_mode) == SERIAL_BITS_INVALID) + return PORT_ERR_UNKNOWN; + if (serial_get_parity(ops->serial_mode) == SERIAL_PARITY_INVALID) + return PORT_ERR_UNKNOWN; + if (serial_get_stopbit(ops->serial_mode) == SERIAL_STOPBIT_INVALID) + return PORT_ERR_UNKNOWN; + + /* 3. open it */ + h = serial_open(ops->device); + if (h == NULL) + return PORT_ERR_UNKNOWN; + + /* 4. set options */ + if (serial_setup(h, ops->baudRate, + serial_get_bits(ops->serial_mode), + serial_get_parity(ops->serial_mode), + serial_get_stopbit(ops->serial_mode) + ) != PORT_ERR_OK) { + serial_close(h); + return PORT_ERR_UNKNOWN; + } + + port->private = h; + return PORT_ERR_OK; +} + +static port_err_t serial_w32_close(struct port_interface *port) +{ + serial_t *h; + + h = (serial_t *)port->private; + if (h == NULL) + return PORT_ERR_UNKNOWN; + + serial_close(h); + port->private = NULL; + return PORT_ERR_OK; +} + +static port_err_t serial_w32_read(struct port_interface *port, void *buf, + size_t nbyte) +{ + serial_t *h; + DWORD r; + uint8_t *pos = (uint8_t *)buf; + + h = (serial_t *)port->private; + if (h == NULL) + return PORT_ERR_UNKNOWN; + + while (nbyte) { + ReadFile(h->fd, pos, nbyte, &r, NULL); + if (r == 0) + return PORT_ERR_TIMEDOUT; + if (r < 0) + return PORT_ERR_UNKNOWN; + + nbyte -= r; + pos += r; + } + return PORT_ERR_OK; +} + +static port_err_t serial_w32_write(struct port_interface *port, void *buf, + size_t nbyte) +{ + serial_t *h; + DWORD r; + uint8_t *pos = (uint8_t *)buf; + + h = (serial_t *)port->private; + if (h == NULL) + return PORT_ERR_UNKNOWN; + + while (nbyte) { + if (!WriteFile(h->fd, pos, nbyte, &r, NULL)) + return PORT_ERR_UNKNOWN; + if (r < 1) + return PORT_ERR_UNKNOWN; + + nbyte -= r; + pos += r; + } + return PORT_ERR_OK; +} + +static port_err_t serial_w32_gpio(struct port_interface *port, + serial_gpio_t n, int level) +{ + serial_t *h; + int bit; + + h = (serial_t *)port->private; + if (h == NULL) + return PORT_ERR_UNKNOWN; + + switch (n) { + case GPIO_RTS: + bit = level ? SETRTS : CLRRTS; + break; + + case GPIO_DTR: + bit = level ? SETDTR : CLRDTR; + break; + + case GPIO_BRK: + if (level == 0) + return PORT_ERR_OK; + if (EscapeCommFunction(h->fd, SETBREAK) == 0) + return PORT_ERR_UNKNOWN; + usleep(500000); + if (EscapeCommFunction(h->fd, CLRBREAK) == 0) + return PORT_ERR_UNKNOWN; + return PORT_ERR_OK; + + default: + return PORT_ERR_UNKNOWN; + } + + /* handle RTS/DTR */ + if (EscapeCommFunction(h->fd, bit) == 0) + return PORT_ERR_UNKNOWN; + + return PORT_ERR_OK; +} + +static const char *serial_w32_get_cfg_str(struct port_interface *port) +{ + serial_t *h; + + h = (serial_t *)port->private; + return h ? h->setup_str : "INVALID"; +} + +struct port_interface port_serial = { + .name = "serial_w32", + .flags = PORT_BYTE | PORT_GVR_ETX | PORT_CMD_INIT | PORT_RETRY, + .open = serial_w32_open, + .close = serial_w32_close, + .read = serial_w32_read, + .write = serial_w32_write, + .gpio = serial_w32_gpio, + .get_cfg_str = serial_w32_get_cfg_str, +}; diff --git a/tools/src/stm32flash_serial/src/stm32.c b/tools/src/stm32flash_serial/src/stm32.c index ca95b3e..74047d2 100644 --- a/tools/src/stm32flash_serial/src/stm32.c +++ b/tools/src/stm32flash_serial/src/stm32.c @@ -784,7 +784,7 @@ stm32_err_t stm32_erase_memory(const stm32_t *stm, uint8_t spage, uint8_t pages) return STM32_ERR_UNKNOWN; } - s_err = stm32_get_ack_timeout(stm, STM32_SECTERASE_TIMEOUT); + s_err = stm32_get_ack_timeout(stm, pages * STM32_SECTERASE_TIMEOUT); if (s_err != STM32_ERR_OK) { fprintf(stderr, "Page-by-page erase failed. Check the maximum pages your device supports.\n"); if (port->flags & PORT_STRETCH_W diff --git a/tools/src/stm32flash_serial/src/stm32.o b/tools/src/stm32flash_serial/src/stm32.o index 7fdf18a53904f4245e76110245126a6bcad5361a..e214211952dddd1d512c1223bce163055bc5cb69 100644 GIT binary patch literal 27270 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%0AsSW;J6Yuqqr`s~2m zc{l5uY4hglo9pJzuq-1RvMyl{s93_Ozk%KvAYNZySGB^Bj%i5Oi0RLD^_BO~$r7T$ z;;Mj^N5_mjI5}fSzEM|M7VS0-OW7aTyYeoF1&j&MYAm^@-dF;@`f6iIt+A}yD6cn` z)fr98jCx#QU43ax6p6$WNMP_`#*%6jqXe>fS6)+QR8$E8H-gvIHIR%eY?D;pF}b?j z62LoBv=+*b+_AbDMuZ|*K)09XVygupqPBj8ar3-lgazs1QN-%PQOc~MsWW1@XUz^w zErwH3RY3P~eXknXk}jmCn!5Vh#sp$-QhhQ$8rz!{zn5)s z8hT-ZXi*W-R1>H#0S~)J08x`ayi5tDbt?j;OYai42DAZxOS!rPu(7hb zytc`zZ^U!Be`9@lW9d@y&$OQJQF#MmBa zD8D<-U^RlkU={eG0^?p4I(!8)8kI&(ISN@_#^1m%E5}cM2LepT50rzmj_qnJUV)xe z#@|0@h=8F+X@gNxrG_EJ)}Yv|(yL&=I1-5gOo3BcAlGQjGoZe%WC?mGE)7QAl0Z#U zHGxuwE}{x-sbd?cL6BhtcC!Mjgd{c*N9&-+HyF#vf=KMl$SbKD;F>h&QL#zds`H+S`<4|8BG9eD4 zt}?tMa#4mDJh#rBKF{ZsCiJ2YS$e9Q8XCQe%e@6kiC4TWA>Y|5 z)1!_woK`u1)||Ps=lP~a+T(03zP_Zg3gv06^(F{PH4+Gxr)ctjlR6P&DHGIE#U{W! z%=_O^x?ZAEjb5Zgwf}S(Ee(-UCJ-!zzPUv=`>dXH#+I8}QZtHutFo~Ya{@1-ah+F< z9z#=&;*y32jo^xo4cCkzRj9@u=bcx-!rM?+URqhP0+C$xQG~0-==-%5UKPRU5O7x| zwhThljWGwoZS3L|W66@BB}tN{ZR*nU(z}!rOu#Cuo2o^{irOXw8{JPOCN!w7gn`g2 znIk>qhS_IbKQ}X2s?LYO%<7B?NoVMTQ|C@SYZccuRaBt1B#2motDCACEBTm(TGSoA zA=QX>Fpm3PJxO82v7!XS)1>8>dG#RSRh@e*=LZP6;w+fwV+<>6ZNs$ij(lUtkR$QW``O6u1%a_A@7zfqF z^-TOljg5$!95sdxg^%`E;eG`D6dnrcO;s2*;K(ISeDqwr!mB)Edj3@K;_r4e*4I{5 zp|&|Dm6Vp2V}=W-9ftWI+$uUD83yi>23T}=Q)RuD6BnZUYd;(Yx#Jp_Hx6SAS2Gj! zcE?~8i~jL``X7xRhw-V?e{&IbIpS3fPQGZxyA^flR~UFTgo6tZSS~Q|X3D_kXm#MF zhx*$Td;!B3P|c5Pq!X^66wZI` zqV|8k`KiC&wd6$pJ6DhUk4K;W!OAtOFWmoO$~EV{K61-Z_pad!@3DRPwLzmExaPsl zk5u|z%>Lx=Kb&{+?M=V^m%D%c)W4py;ZMcu-~PtwOGghV8xA82a8AQH4`&(9Mx3oU zxgq!ooEvfO#(4neVVoy%I#8fNIEUjbz&Q=)Je*}X8*#Scd<^FkI5*-{?`To3+vMdW z-yK4Xv0vVbs+Zuv2eUG8sCV6fMS`n6D!{*iH&{G=gOmBcLIj7}3FOanh4 z`PKF(;P>-uIUMQ*E#PsnhZ_tiZ?e3=RC{`W{|6f!huT>ISjtAmp|*noZf7InP#Z@8 zpOD6Xjyo}c`^8?hy$kq7qF-%?1I|Cx#Y4Tw1)L}Kq237tKVNXQfe|?Ck%!tQ12|Ij zsqJsT?-YA}hI{I-$H`-&*pnyv)IJE%+oZgf4>J#sL?5QZei0suAJtMB=e&& z1IL$o*WBm5;P}Iz?)v7G^*?_3ug0C19$N8Gcj3ZgH)mzdK7Wm)>?eiK1Qr);&U`o{ zcV&Cp9dplL^XMnt7p&`!va@h@^UUbnbk4}E(-yVK-%d zxtsk@IJr^%0-WP;7U5KHu~AOG#+EIbYR@Z3d@(L0?wE%{wV3JAi<{hGP7?Q(3l}%= zlEei};d&V;NjKvZE`CKo5_jJZ2gJd*>Ll^Cx{$cToFuN6imYuwNt%gMxVUGXBrcQ+ zm)gq;68FN0#vcMD7vIARiCe)*;*zRlPql zByKhkE^f{yi3__Tp4<6J;wA*i$ZhE)aUY_P_`w88+!7%qwYdPKif9Y*n-y}6#5o)% zjss!@KVXoI{FZ=R{Fp#U{L+9VdWK}=Hf)j@u!IXtXk+Qvk#AMV6n9vAFeYefuXJmF z$lrBJ?{o=;n2OLc0luUfn@2CJyCt+ zw>DUPM`iD=-`bR%-$#CHQ*mGE)~4XT(m#?dyM3kS4%LR;twX%FLX*_h+OIaW5Bsd0 zr&Ib!_g|Z5BZk=7`A)o8n)$`w#@W?E`F2Ap2e}q{}@M+)2FSEy^Nv(nO`=ia_CnF`KICA z@O{lE9SMQCH(wR_x`ajfL<#-Bd{-0?+>5xg~ zan89z_@v_`<@*eLhxipSj?d%c`25j^GxN;^pX-@3^Kq{0;xU*=BD zCmlU0-&euse?jv}hfm745qyvA)_l_Olk&X2N4 zADJCnD0mtm`tR7c(7|f}e-2oSUrKoxun~A0U>)%L0jFYTVijNm=ywYJRzUJy28em` zIp+%fkNJ510sUpb>yYmmK=S<%kn+9@SOof40q+1k6L2ozZ}K$Xi-6>N0q`2|-495+ zW+1RqP7xr}uL3MYdH?|h)iU;4fosQU{9{b4;2vXN0c5^ifXufQ@LJ@1Na*~f7Sfvm zsc#VA0`R*4n*h5m({Ll;Qs8p{rvP3GSOxgrr5fJ^NW4Puse-?U0c9EJ`v7Uj3xL$O z1rRYV`%%DqKyMK^3-D^-mjYge^iRg<^2`8ac}4+JPBtLroC|m*_?{oF=}!TY{zE|Y ziR{OP-Y)bOKzzTOeG}k7$eAeVmrD9@z{`<-|0wkwKXwHmnkaiZAo)iDD*b>;KOkH# z+XQ5NWnuou@*YB9#yY^*-vBcI4*;`(mkB)}^x=S%Hw2LKJb(q@{|o~W_5Bu*>D_=# ze-RL_mi;Us^%du6eOZ9imkvmM`-ka#djXkm2OwN2`zL^u`xQxVmh^i7bCLf0p*r8| zfXw$QAY3bZE1-#dYbE_5N&gBUTrS%Lr2fBqaiJbS+Pw~ta@GREWwKiUssC0$%9{X4 zzA=F08wLp1$$kM7CCb|d2v^9i1SDSokbDaO(e&9xfRuM0AmyF7Nb~VWg~<0VAeuD$ zK|soD21HY3j{&5-ivh_u7!XaDZ3CpdgV|c%zX6i(CxGPpJ|LPX`#M0%n*xZY$PQnq z`F;;bzC(a$itL?$l=pQ&+SdR`d6j_VTMRf1d|sh@gq{wFD$RBZ{S-F&lmBBtR8jUH z04e8pLVp7gRgnFf(6(XD`Nu<$n_kT6Vy50a*_p;<<+Mj{s8s+kk_? z|FqD5AoOnoB1`r{q2Da@nSkej{tsNJ_fbH~tpKE+Uk%duw*aZ96OejV10rko9YUWg z^cjGZ_YIHEcNZZ3j}73`2sjIn`ELLOYxZ#ziu$?$$@g7!ZsK18WO?%en*c`&{8Ogx z|C<0Q?{TjeJ(60c*`bYMk+?xKMfTSM=L{j!np+6_|4S@KceTC4+ z3VkFX<@^$tYRF#+SOYi*uom+20OtU|7?Ao?0jb9hn1OudxYPr`36OkO0kVEa1CswD zK=Pjlm=6AvxRCxPAn6AH(?I{J(7z+}#{pA8pDFZfgnk8Jf6#LQsqZhyOxOeH0Q^26 z<*x;#{7yg@_{Rd0?_5CI=Kv(%r%*z^6M+4|w+WE+Cx!k!K+OHK9~OFx(C-Cwg3hn_ zsrN@{T*`kKkn%YfChh}dyPpS$|6^Y<)G>A)KsE52068994R|*o+(Fg*5!`@3<#z%@ z0#^yF6j&mV8Oc9FAO{oTr!qBsNFaY1jPz=Ojd@}XcNdkaZLVa1l}jGQ6N8mV0wYT zf1tgI|5@PA1^!szN`cD--YM`FfnI@w1%8P3r@Z$CJ|eJPV2!{Efdd7m3OoQOX8wHw z9~1ahfwu^pC9pu?Wdi>Ur)K^S1RfB$PvGMM9}?Iouu9=p)Brsjz{5aDk4& zf(vvE5?r7oQ*eO}KI>ARKnH&Ug}6Y6LvVo(8q0Knj?Z8haeT#F3`~>xIo8l!38>Y z2rkgERd9jo7iKVy&6|vR0(4B$aGpR%f#3oi_yq~_%@gRjOmKmY(Si$f3>RFWgMPsL z0+l}yr$10X{eZYYY5ErQYfjIqv>GT8Q0+l}yr#~>Aen4EH@(1FdpsS0q~N)N^PLRSCkTGI;P(lBjo{A-e!bvF1)nAOal!cuIh6N-;CBlC zc!{=WiQvx)UMKib!B-GRd8~!tHG*@}&4b@uGu>J!eO~fEDEW5@e$kgS|I32=1V147 z3c-IT_%8%MD)>>sKO_!)*1|g9o3MP-MW0*n#e(yfe3<_DBCUU@;6D`n62bQiK0)x) zf=?FwLXqba{J7XNOYlqY(DH8;yjbu>f-e-jQt)pIUN89bg8z%)U4ru`c4&Y9g<5`x z;9~{nkL)o0TEY2Oz=_{4INw4MUoZGC1m7Sye+HN7M+Dy`xb04@kMFpdK1lG_1;0&j zzTIMaK=AhkzgO^&1m7+AUj-j2^~=A)&ivO1j!#k*ULp7(!G9z9vx#G1S08Qyj3o|# zSab;x97V$aX+YyQO1ibsACPpXq%ReGqTqK6zEtpg1%FiVRf4}R_*Vr#A@~~Nc(7Z0 zm)4I@1{HotaK58wIv1~aye9Z)!H){QT<}wZuNOQM^B?9PT&?q8B6y+T(*)10(dngv zKPmXVg8OTAI_FuGS10&2AiGhYobU7aF7Dk(pCkHb631!1m|21N$MkNIUnS|*iyhSZ@t(% zDfT@g`5(3HgH1ekOZrD*|I?tU`oB;m8*fVbQptY}aQu%PxwwnPmnPsD3HXcz+?#;Y z&12>9C3P%*OG5g+3Hap+{G$`nf1H4SC4t|-Ms;rES9`<**deX9SYw-eU`Z1`O)>(d zB~{oyX5f<$4FlW?Z|y9X%=!ZZl^ffl@kvCW0^ecOG*%e06`y;|V?Z8YGV-nL7VKriz!;<>x>v)U0*Q- zR;g5(qQ-ufk>HE!y9|1>{v1MApd!lVOsi6@4=bdO<3Gfh85qZ}jx@*e-m94-kT!B@(f{13Tba_^;JS$h8l`GH6m1pJ3x0L2vO7ksy z^R0TzwIJr7FdwSSkU`hAyH?UJ;5@2f@Ssu%j^l3*#)_V&#%A3%Z(Q*o*vUL;+#E^F8&@v p7MG8u#D0DhOOJQGn3M$9iAhQ3$}!2YwWi2P>MNFAc{vHj{{?Ad-0%PZ diff --git a/tools/src/stm32flash_serial/src/utils.o b/tools/src/stm32flash_serial/src/utils.o index 46f6ca55ecfe65e5260fc7de7aa2cd1ccd6d2e29..f588ba053cde1f0a6ed00222b453e79df8f6a566 100644 GIT binary patch literal 2147 zcmb7FU1%It6h3!mXLr_Z)6EZdW33F*Mg=>&Nw#fFyBZThENBIxE#k^{c6Ks5bayt) zPfcS5u?m)=P$>RDK|=dheDyg|MEd4~FCs`^gn&NzYH>a1-kI4QlRosoz4x5&eCOOd zbI-l^b@l|16te&&u4R}WSnC1TMRyB_yKD$RRfEb!y=4SO8s23sKxIpB`u;A*|9}sX zSFWbPJ2>Z@1n`w2a9koRKyk4=eIiBNMC&&>1qt44B?W3|UCjXe66M3xf>%AB;&suw zjl7+RhszMW<0n(Ry$rs-6LTro1X}qhSM0$5vQR$xQf%^Z9s9$``#a*&ClT-5^*^rt zRs3oB;rjXN*k{WR4}1rw*ALvuJYqU}4~NeBFel`T84n*^t@XY8Mm{n#`5uh^J5 zU+y}t{a)E|%}&^|0OFcLf*-VSqx3d0@eBAA@Y-&SfjuidNMtC(kNL#iZU>XoIX zdF^>Dgz2su!BzmeI?2ky``C|h>{(odz?zA6BhkpSkMoMy3*KvqrbXHW z-YvpA0T&ZZUv;p8h5U;bhn*bO2*jZg)j1&yG(2YmU#vBvTIMH!IDjXES2vX_kAmTM zhEm9Ec=tu7;WvghQr=^(;rE5^%)L02?QQB%Xxn5)uM7Q~w8Y=8AS|=Zv@^13M@T4I zW*YXQicv}Aqe#o)C^LFdb}#(%h?D1>(a1^dr(lVnLg1&GdcTm+^Rx`94j=S26 vb)(tztjmez8Ln;lvDtB4E7twM1Kp#C{K&?}2Iv-Eww}>V{EwM*uT1{|Sp!rz literal 3548 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 D9G#c%