From d4965ccb13c97baf9677cfe91d1894332eabbde2 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Fri, 20 Mar 2020 18:31:26 +0100 Subject: [PATCH 1/5] WIP: Allow uploading using open-ocd-supported programmers --- boards.txt | 1 + platform.txt | 25 +++++++++++++++++++++++++ programmers.txt | 15 +++++++++++++++ variants/PILL_F103XX/openocd.cfg | 1 + 4 files changed, 42 insertions(+) create mode 100644 variants/PILL_F103XX/openocd.cfg diff --git a/boards.txt b/boards.txt index 2b41fa80d7..4ec2ea2fb0 100644 --- a/boards.txt +++ b/boards.txt @@ -795,6 +795,7 @@ GenF1.build.mcu=cortex-m3 GenF1.build.series=STM32F1xx GenF1.build.cmsis_lib_gcc=arm_cortexM3l_math GenF1.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags} +GenF1.build.openocd_script=openocd.cfg # BLUEPILL_F103C6 board GenF1.menu.pnum.BLUEPILL_F103C6=BluePill F103C6 (32K) diff --git a/platform.txt b/platform.txt index f9109293f1..ccde38d61a 100644 --- a/platform.txt +++ b/platform.txt @@ -210,3 +210,28 @@ tools.remoteproc_gen.script=run_arduino_gen.sh tools.remoteproc_gen.upload.params.verbose= tools.remoteproc_gen.upload.params.quiet= tools.remoteproc_gen.upload.pattern="{busybox}" sh "{path}/{script}" generate "{build.path}/{build.project_name}.elf" "{build.path}/run_arduino_{build.project_name}.sh" + +# +# OpenOCD, for upload using programmer +# +tools.openocd.path={runtime.tools.openocd-0.10.0-arduino7.path} +tools.openocd.cmd=bin/openocd +tools.openocd.cmd.windows=bin/openocd.exe + +tools.openocd.program.params.verbose=-d2 +tools.openocd.program.params.quiet=-d0 +tools.openocd.program.init_args=-c "telnet_port disabled" -s "{path}/share/openocd/scripts/" +tools.openocd.program.interface_args=-c "source [find interface/{program.interface}]" +tools.openocd.program.board_args=-f "{runtime.platform.path}/variants/{build.variant}/{build.openocd_script}" +tools.openocd.program.program_args=-c "program {{build.path}/{build.project_name}.elf} verify reset; shutdown" +tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} {program.init_args} {program.interface_args} {program.board_args} {program.program_args} + +# Used for burn bootloader, must exist even if empty +tools.openocd.erase.params.verbose=-d2 +tools.openocd.erase.params.quiet=-d0 +tools.openocd.erase.pattern= + +# Upload bootloader, but which? +#tools.openocd.bootloader.params.verbose=-d2 +#tools.openocd.bootloader.params.quiet=-d0 +#tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" diff --git a/programmers.txt b/programmers.txt index e69de29bb2..48fb424a7e 100644 --- a/programmers.txt +++ b/programmers.txt @@ -0,0 +1,15 @@ +cmsis_dap.name=CMSIS-DAP compatible programmer +cmsis_dap.communication=USB +cmsis_dap.protocol= +cmsis_dap.program.protocol= +cmsis_dap.program.interface=cmsis-dap.cfg +cmsis_dap.program.tool=openocd +cmsis_dap.program.extra_params= + +stlink.name=ST-LINK +stlink.communication=USB +stlink.protocol= +stlink.program.protocol= +stlink.program.interface=stlink.cfg +stlink.program.tool=openocd +stlink.program.extra_params= diff --git a/variants/PILL_F103XX/openocd.cfg b/variants/PILL_F103XX/openocd.cfg new file mode 100644 index 0000000000..0938a078a1 --- /dev/null +++ b/variants/PILL_F103XX/openocd.cfg @@ -0,0 +1 @@ +source [find target/stm32f1x.cfg] From 3c84bde37fb6e1a151a158dfd80dd568fee16eda Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Mar 2020 14:08:55 +0100 Subject: [PATCH 2/5] Add hid-bootloader v2.2.2 This adds the compiled binary version of all variants, directly from the upstream zip file. --- .../F103/high_density/hid_generic_pa1.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pa9.bin | Bin 0 -> 1972 bytes .../F103/high_density/hid_generic_pb0.bin | Bin 0 -> 1964 bytes .../F103/high_density/hid_generic_pb12.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pb7.bin | Bin 0 -> 1964 bytes .../F103/high_density/hid_generic_pb9.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pc13.bin | Bin 0 -> 1972 bytes .../F103/high_density/hid_generic_pd1.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pd2.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pe2.bin | Bin 0 -> 1968 bytes .../F103/high_density/hid_generic_pe5.bin | Bin 0 -> 1968 bytes .../low_and_medium_density/hid_generic_pa1.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pa9.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pb0.bin | Bin 0 -> 1968 bytes .../low_and_medium_density/hid_generic_pb12.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pb7.bin | Bin 0 -> 1968 bytes .../low_and_medium_density/hid_generic_pb9.bin | Bin 0 -> 1968 bytes .../low_and_medium_density/hid_generic_pc13.bin | Bin 0 -> 1976 bytes .../low_and_medium_density/hid_generic_pd1.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pd2.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pe2.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_generic_pe5.bin | Bin 0 -> 1972 bytes .../low_and_medium_density/hid_maple_mini.bin | Bin 0 -> 2000 bytes .../low_and_medium_density/hid_mini-stm32v3.bin | Bin 0 -> 2032 bytes .../F407/diymroe_stm32f407vgt_pe0.bin | Bin 0 -> 15796 bytes 25 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pa1.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pa9.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pb0.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pb12.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pb7.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pb9.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pc13.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pd1.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pd2.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pe2.bin create mode 100644 bootloaders/hid-bootloader/F103/high_density/hid_generic_pe5.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa1.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa9.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb0.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb12.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb7.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb9.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pd1.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pd2.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe2.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe5.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_maple_mini.bin create mode 100644 bootloaders/hid-bootloader/F103/low_and_medium_density/hid_mini-stm32v3.bin create mode 100644 bootloaders/hid-bootloader/F407/diymroe_stm32f407vgt_pe0.bin diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pa1.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pa1.bin new file mode 100644 index 0000000000000000000000000000000000000000..4dbb06b76f71dfd3c911fad8431955260f9368d2 GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opWYVJ8o3>;;xswW|TN&UR;TYjB(hGYx~?L#06DtChp?0oy8!g z*@S^fT$V~$+q8v7psrz3*CAlj28%aO>!jdlo2IUjhP^JLw4h}Q;I5_O!ffTyhM4c% zpxxxFO54=B7Isu{<56~xxZcwKCcS2Mu_Qd0}eKi`ZAjrHF(K)hS&$@1C0 zgjoNWKSbC^|5df(Sn&pmY_#owcfLqwz$pB7-m+m+LiAU_t{IVOG9>Ig#@646 zG}d2hNV-(}I4qemGi?SKNgY^#lI3T(X0&fpT=BPwA%L_k;Ze6G&XSn`Bep5L+LoBb z++mqnO+ovt6t1mEii$QVMZ1`hYQS97visp<#2vAXY+)c{-#jC+Bi0dj70)1!XULPn z6B$p^^7e$5-tuNhY4r@55tcGx^tGg+XZIb-PL=9v#g;ca?Nu^)OE-c`(e7$O-C4?DjH9Tq3A?aK(`JsFuwYHc~>HlwWV zy;m=NBSBv`C^{1V?n$Bw|E#u)UypxMrNxo>wJL>e72AUfZ(OKaeyv;o%S{Dq-Dlb9 z!kXvDxr~@(5fd449<=XRzE|OM{qub8Yw?h2(5+a#_^h?J=qA;-y%Z1y(XzUo<0;v% zE?gzkvzU3%^QSViv@bcHPv=h-xZqqNZKU(;8ta@ZIIq)fvOh^^c%QJY@#x-4FzS!D z6K3)7*oh%$g$lO#*DIV<8N25k6_ouqE2}^H&OGIJm(%&Vf;4Znuhxx;UspJBSDX@l zh`T#M*u7#lZQQ7yAhv;P)pY*VI!yfI;;>0OJ|c$aSKh|s-E3J$>m2tq$#RzeKo5WzkK6Zk)j mFT(_Aa16c;$3bL%0M_3Jlg+t?eFkM2?EBzB)L6tF7* literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pa9.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pa9.bin new file mode 100644 index 0000000000000000000000000000000000000000..bf01d0530707e59b7a63a587078949103fa8e6de GIT binary patch literal 1972 zcmYLKe{3699sk}B+vm)rcHF40C{y7xk-OF00a8k*;a8#_ts7xc5%n|7=1L;v)uUzy z<5e`|-|(VL(@+*QjVVj#6>4(@B__>isNr{Pu8f$F8A=T${mM|vqYNeACoj6K`JA$r zjhaiDHMRYPcZy$I_`K}bBX#2$zXC$r^L|}ujn}gK4vH-;Ft6W9@Xd{1HbDr&G094@OK*45oZKEfv?{vA)Vk9ZrDh_|F5$2U6kuYYSjr zA>~g-zTcJntbAFg>#Gyq=(1vQp#0w&m>0?3M04Z0=3i^UeE33Ib;p|v`x$$&! zq<$&a+<2;at#&>um@Iu>b*AQ&E`8<`u249zRf96PX$g3wZ9G{3US$y1+pr2xf&@8` zE<1r=Mq)YSyC?}@>mlGMN%{-}EZnhy^GlHE?vUN3F5Q!!FEY257-k(Zi73;MGRNSW z-tC(vF@9dB_gnmX+&>oi7<21+dM*N0_u_7y4fBNFyMb#O9S12y0iO`e(yl{3nZ64X zr%7BoO@>Fi^j}1J%l+|Bqulf6dD5?sEA%>yX#u(+jWPA+)EL|sdnMwiCPd~gDE(aq z8J4Ky=HkPIevTcC5ca$Os#$TYc>7Ciy#1hWp+siEDE@50vSBlP{B>a0jo1ts=64@w z8}G)N8*ev7U95i;6-|kmF++@~>|cbkZfje&%H>x_iXL}$`nI)^x( zBQNr&vfi}i?Ubr*dox5$IY(ysgt$Z zac{4?99XQkz7j>o{h`vGWA@2oIq2J6cF5RDM^p;--?umuB$t2^s3nUzmej^^9?zI^q=8??Fa5&Z0~M?UujC!Eb| zvOfocC*HYwEl>BkD(qFN@BWI#;Z~Wx_KMI)s=RP4Nv#UP(d6~QSkuAIeq5u4(d5k4PnL$cqvT(kUI_x?v)GS<6K zv(t@rFNkvqG07n&65{+t`>vHC*`FU=@aMmhjF<-9h84`8v-TF>q6T)BLjo^YR`+r| zBL$Vk8)Rk7lV$_z5!D(=IP%JY_+RwfDBF|m zF=^W#bxrqTHr}oFWQR@4)}ywie_Z@|gu5zcMdXXBh_%7MK7`fDJIW*dy=6~@Z`Q2( zEK*MlcTjE$@Xd2}y!UHhC>kgyEdWKq(x4OTHpQUO+3lf#5_oXfrWp=wc4#`OS5dJO zdYa$je!xxBPG);7y-Y8?fqOoM^cWH=^hXY-W6^^#x}V9wVK@k37zE5pNI()|*hgRz p{}cE!Oo9r>;T!M_2+X&^`UhaDHCM6EqAZL306c*jEMu(?{s&r_v!4I} literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb0.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb0.bin new file mode 100644 index 0000000000000000000000000000000000000000..bcfbb26c466eb13440ae1027ce72f514dcb04dc1 GIT binary patch literal 1964 zcmYLKeQX_Bjiw9XG0bal6aif=V1RFRnyH#yD)pwS8_A;sT|O#9gjzXEBIr zHep~Am!^MM+cZKWP}hJ|I=+PXiigoUDL9M?l|}-aE?U)smMMU{b`=+9D=%$`dCm>m zou2pO`F!8s`@GK!V<2<^a3DdM3ZIMItL6@ol9GmBN=CG9h9y-p&M{l7hf+QxYIQO` zRY(3!AIfwcWl_tVwsl^lwpLMM(Tt87ylZQ9)Pl@#YBUuV6 zEoauXj%R;U{Pg0G!W)sgd5Tv-Y&*>xVr#sf4Ih?TT423-Hz71Pf6)Z-VWls}=LS+< zBlhpK_?^i9cu%EYSujqxTyKn8oYa@{8?;>9fX{uXLOlc)`=5uBA54YwFD-&qA?5c* zzsV;h<%&Vq*Cu_@71icI`M))=en<8vnw!rw*K5Ii_)=Q)#G9K>H`}%5=Begr{c^6k z`K9Ld+QqDBar8yaotjs>joJ6OLgCPM4Lr0A0@4naEP(J?1~I(@Yw#q2Y`<_F}|UO-Rf=Q2V=0G9ptat))i@ z{dIOQLfB{iRkP#R@rFulyyLKcu|(#;EdFHCwqY|u{0G2pn6X(hBJ4fMHeQJ}H-Fuf z45|KhRI+4d)(SC_IZ@I~d5=x6ViGN^~VXr3;AT1@gS`T-KMi zy*;PtJKju5S1*t`VI>Un1e;G zsRvcC9&B;;I@)bL+Fjg`?R6IB0Lv*V_b>@`r5KjlyQ zav){QJt=>}r;d}cN2U4;i2FB~*?J-q!TB+<6Or|c=T%OeA#s60&$h-WYP_z`S`@?B z2smk$uTi?g8y>*ke4nBsTv;DD;eAEr+^SZ+4K=j7D z)~@I2zV-@xjq2N9u{qot)7McE`$$y~Pb8@|Q9Pc!Q8;a>JbZQI!+-B`M*nxVtli zJs{?E^G@vyaSYw6>4ldYF!j%?qZZ|UiySraY$q?1-E%@-i$lWF*VP8sV-WkUO^ZNLusrC-noTh%boY2EphN*&jv0mnhZCA^>iekJ1-;Fuxo>kb zw42!(%ip4xe~5dYMfwa9EA~f@reo2=F}k10z)?61VHgC=N=QHwV%SGu3je3@RhR+| iPQvHm6o|}M!2Sndx;59Z&!Q}g{Qx|H8Z2Y45B>++t+1v5 literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb12.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb12.bin new file mode 100644 index 0000000000000000000000000000000000000000..6dd6e8bf42656a2f2ba1a41f12c20f5a92934d26 GIT binary patch literal 1968 zcmYKf4Qv}{_1%x1a~4uNZdCW;c9**aRdJSiaitXqyMnF;}{S>pY5{TLtqx*&S`HKhgL{)t3#NOK8qWWBpj8O>3+_))=l` z$TZd;ZCt6IO^YT+pVb`kIkiil`Gm{m_HS092u@lC0bwhiEP(J02IG1YD)0!%kOBFk z1B7J+mP2|QB?D~UCx3YwvMn7MJBo(n?Rxwunj0|KG%UdR26jDzf_K!}QFVaGv_Lf?jolO!Ua zBts)z`Y(ceihYq!z1*?pdW6@99#5@)EFXMtFt{2|JIn^|!)} z^Sv@-ts*HZ>LeBIQd+73b4knWhxak&93_XhVjv@K=11&|cE+5AGZ@D+=RdWOsj%jpo>TGr6A>n>%dN_Ds5$g8bbc`@6@3Us^BYh{#Iom=~E z+DD(3Z_A(Md#d0~cn|hOB%P^wL$4FN-+fL}>0f0Q7jfRj+E*rP5Rz0uH}YUUL@eqd z8;evU2S8S_e+=GyGEOPAH>hz_TU4bcfjdvO5rmg zx+0yGD_Od?t;AlYdUuyB3Rhuz+e>0EDGTC}7*!F)!?CNm(^%Df1h7}Uz1dSam8JJw zyZqHSeZ!#WaO}~OL=`@)c8FhzeNd&vk=XSrg<}=Rg9>k4tXg)hJO8sy1$*76)#=2Z z=fky(G09*|WQ_9{>^oKl6+Sz#z-PZ43z`PqirtIPSZ9lDQvKVDeo+uDtvfZIlzr;r zH8L}Yl?T0lDKX1?6BD^q?qr?|%;!@^D#xy|ZS(oI8+5zuOAs3VNLc4YWKTH|@x?j_ zvvg?u#86wA3bgpv%bZjmzyBN+kbSqxtKa|j0_Ag+Qn~rOv|x>I){V)R%bd6?MhV}; z)14sf9x;O#b^4=Jf0Dkud}D#09c_R>*1*s2lzz8q9toWvRf` zyp(y!xImnM{^=Pe$=kq@ga+jsFgmg)hus0Zp{n(w{BLc#|n)+1Wde!R967}#< z2j!#y-#bUg+rI^dqJeVIB2W}84LGo8Qw%a4-7X3!QGgcPG{b?-4h;wO0t$9QPvbk> zPq=B?!EDXtAJa>(;hBGga0G!B`+{SMaOgmo?qiZL1_vMj1AtWtQHVhpaS$f)KZdWu kBxrCHz6Fni$b1*9zaOTWYYlN4d1=J`@GwfSjI}@bAFZ^se*gdg literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb7.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb7.bin new file mode 100644 index 0000000000000000000000000000000000000000..56d3d1b56ff05b9de40c575c85ab5ce97af63ea1 GIT binary patch literal 1964 zcmYLKeQX&N&OI9XG0bal6aif=V1RFRnyH#yD)pwS8_A;sT|O#9gjzXEBIr zHep~Am!^MM+cZKWP}hJ|I=+PXiigoUDL9M?l|}-aE?U)s<|%-?b`=+9D=%$`dCm>m zou2pO`F!8s`@GK!;~;bca3Dd63Y`nzt7H$6qLPANN=Bq^h9p%o&M{kShmu|+Vs$ZI zRY(3!FUoWsWf9Aqv2|Xgw$@N$(Tt87eB0LAm<8#P7N0J_OB=H(~-fhnp)b&in zT1l^KozMQJ@ad&tg*U==^AxXw*nXNf#MXE{6FMxlw7`1vZd_4j z=9ik+YZo)3#nBfvS8_q^G3MUm^7%vCHE`212uM3vvH-$o8N~DsRN+aGAq(;q7YM6J zEQkCKN(R_|SpEP5EZlW~>thh_?NZ#u9>bGbEHJlM7-j>~@d(q9(hLm@Y(Halvul^)PW+yj0!X`(UUgUUBAE{|VyD8Zoyi5v8p>xr{eu zdwWjPcf6UBu3jMX!fGahzE(B#?0G=ht5Ut~*z#&SW?jOuwFbQ&j9Q)GRrk)iTmCVo z9ovp)$DS$rQ~o1;G09-+{>aaXGw8h}sr0Y1%gZ?KVV!H!b%;o+V3-B49w#>Un1e;G zsRvZB9&B;;Iy!7U+Fjh4_R9Z>&Rv*V_a>@`r5FX>Bo zvmm9-JxO2Ot4@&dN2U4;i2FB~xq3Vu#`!U^3z7AS=T%OeB{6|P&$h-GYP_z`Sro(A z2xr?BpL$%KB`*l3_)_D`GrWpOm;Qif_W$!|F(#-WyOBQp4vB!Z%UJ}+hB@kJyfQjq zi0qFG+FB5A)wA0$c(k&+4$~Rssq*n$d;iC;y>*ke4nBsTv*WRkeAET!bGpK3LG;AB ztJiaMe@B_UM)mJ6+Z?XS^mmrUeo_&{6A7v+ipLW-^5-$D`50iGcy+t4dM-yFxOweU zN&2=)(b2>g&k|L5x7Hz0sd8KCiwQu})w-u~&?`NkQ>s+M*ERg6T%*wIJ zGou|9D%2L(tZ-6g@{vnaNDkbstbgqbOH{y9*7J)6X~}M1ZkW?Qs&L}I1SNbGcXx)c z2gIyy-l?4-j^SH1J^yk8rvG_$%raeXk)tM_?bKzmdtS(CF=&{<6&kETBIT&ije?YY z+`LTO^M7vL@z?RJg*M=}oxr_|^cv1rkYFe0>|7W_xn0{Ft((f>O}*GSJ!HQd)ri;5 z7_5`QqF?c+CRKJLe{fR$tMT`?tvCFcs714W?U-hdWE^=Ff9!9@9hB|M^jWlHpSEsz zF&pny`ZA*y<>=GeQ{OB6G|XL-G7|D7O~Tq>VjslnRU}eaKHJf5k=<4-QK#2mhIc6CS98PGusPCgJJQy?;50s9|>nbusxK7+Ch_Ji;QYOsvGKKLK&$FgDo literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb9.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pb9.bin new file mode 100644 index 0000000000000000000000000000000000000000..c85b96515fb75bf6bbb1881d1c49cc3bb23e82fb GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTmaJ8o3hal6YMK~ek~f&ni&>V(KyX)EGLp)BWiUp zUR6i_buY?v9c59=oV0abqBfRMV$qC_8vd4zY#jqJny#Wv+8Ol zYAvQ$wf1M~moH`agE03oFGX8qaw zlO7}X@09R^$nLmMzE7Dmj<&SCGi-5UFzGXBsjvoL>n#u0;5b;0|MbY8NrrQ;%!5@S zrH_Zd*CmU}C4;W5jC-R?s?CAYf2&|!AiEQd^=BG?tp;=9^C`_8Z>%40v}uj?CmX}H zi`mBd6OF6Ya~Z+n=yRGYIjeRV(;svB{Qk`R1X++S zxqx3nVmaiuQ4+xB{nDoxVBxj{TwjDlcZcFGb{U@3T!Fc{$S`Y=PDGiyls*bqjc(r* ziScs=z0c;~<^H+A$C#TZ=-CKV+zUGmHp~k!B+6ZHp2z*hm`bm~s2-r}(kN4FOpd}mv6mt(m4wLL0kyBoBtsH) z%vyMW(9f^~5yF1^UsXGf9dBQejkh20%@@fGn1!Ft+cs>PkG~4+ni-oWL;TKTZ2iqx zWBoS`(GY7NMny|vrmYYos{0n8WcwMenH}2{xBNR|@*r+Ydev>ob7UsO2Q|^tGg+XU{##PL=9z#n!L3V&=(?jb-TeVAPdSzv|vv zchf({v}4=x?AVjVKq_#sCoURHEfD=BafZC-MU{RnyRd-cF4nm`QG=+c@`hOe>rrBJ z4?9@ontD(L>)s}3r=!i*Lr&N@;&hfld2O{ee&ZwL)MdCbzo^6d`)OcH; zwkU?N5ze+MKJ|z?MPA@d;g$N6lYSMEF8vf2gv(1``?Oc=<@Kwf9R`KDbU>dmqHl+4kUPKktGwIbHE* zLGZ*oSFYyh-nKG(h3eg1wmIAi)7xGadP#*Bj>^=EARLje<*LcOkV7V(?f6BqeTL6zaj2W2MH;MrBIc;@ zwSt&^)VxUCGkjj8Nfe(#w2zVWw~jduc>m_@Sz?XYH#Bpi8_K>RPpEtKub^jNfG zm$qtnF&pnxdNM;6<>=8`Q$H&FJi=WOGa~XuO~l$@Vjsfl}F6bQ^W!T$SUvN_kV&!8-WeLp;g8Z2Y45B>+e+_NhH literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pc13.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pc13.bin new file mode 100644 index 0000000000000000000000000000000000000000..ce17f6c25b60968df08fe47dbfac7cb931f58093 GIT binary patch literal 1972 zcmYLKe{3699sk}B+vhB#cHF40+`uy78fXOq}|13JBv;6 zmLd#8;u1f_--Y8fE1HScvI9Pbt5FIqJDYjn^{!4vH-;Ft6W<^UaMnnji#~{;V(i zP{OT8|D6X{O1ArfkY_x>LQp| zNa^Fz?{~|eRxaywy*lZMtf&?TO8>2ad6DdmH#eSb{xBH=b^e z)-Pq78&5T_)y`)G(?y@xoQZk0Tc7=y%jXYl)u03}S^^$v8&4L1*BHe0HdNtBkRS`v zWhd|}NGyl^c1i-+dI(&UBz=kj7Vg-<`2~pgbSkc5x9(0Z6qsAf46_cYc!X(4sbg?W z@A1x%D8Hc7`z`)G?jH+$l)3dBJs*aOYiYO6hIm5n-M}@CO@I`nfR77ian~WQLf?hS z(t=F-E2ewG~y6ZX6Rs#$TYc>9ZNtmB|}u}J2?DEw^EvSCwv>@{H5jp!^H;ddWr z8}CG$8^3Idx>)}(BAOC2YX%un-M<7S%g<=t=-i>WU;Z44yrTW2J6#k*uz@f_lK zj=aF1%6O8Nw^Ler+nXV#)pKNyU&%z!*NTRo-S;WGRjQ{ATc6s7*(cjJSE0v^QLE!V z)wR9umVb3|C6-WF%Kt=-Z?PDnp$x0gZW5+T)tD~7a3wQR1l(GuFE0_yK-R@@|# zwFXM`CcLsI3u4OHmGH(r>Npu27V9q}?%!i(>+w_==SPH2MAj>uRXJgX#CQfhTNQVe4uoNZIQ>QQxuyvQ5EtBt3peJUbd`YoQ>|IeSrn4p5>LVEBc5&?6Ey$H5- zW5m{YXJkMZ*q;`()ga!j=eJ<+aAjv5rZUQj^3hyd{}-=*aDz7YJ%XRT{gKan&IxC8 zX~mZX!5! z+3CW%7r?oMm}C(X332|seb?%+;>!&!`f^{A!=^#EVFmMLt-ZyzsKK43puh{3)x8`~ zNda}~2AQ45%!B?vm6?@&$;o^=f4abh77A%2ooCnC_JujF| z0&*u|mXA!F9BHpmAxB`N!iklMhc8eeDR8H<_MLAmQUP~4onI)3i&pz~!g%kG3 z6#s49-ATgs3E8x9yLOV;_TQ|f^KUm`>K|9IMtmQkNrizjj}zN zUX!-%(bjYiX5-yTZ)U`#Y`t1r^2ddrhq$vArNRJ`0!a(?NG8#D;r3aW4zCs5f1VeyX32~4iihUTS p@IQes!xU(69KH_EfWUkUtbY)uTXPNj49YUt55g0u!7|qR;D2&0v-bc1 literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pd1.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pd1.bin new file mode 100644 index 0000000000000000000000000000000000000000..4666df9b9eecdc86f1f8bf69471dba933957366a GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTmaJ8o3>;;xsw20|P%udYNy#yD)pwS8_A;)1F+h`U_b&SDVL zY{Eb#E=wh>ZQ4R3rmh)M=@9?40r4+q$Im+5_AIsfy~#K)4M+)E2!y-i9V zj6BCD_9>SQy0$vujV!A+2TK2~g7qfZ8*gl!YOGZQxzNRw=8iQso@lgbjg6Cyk=mtf zW8-U$Yt;)G(GutjnkzY{b{R7taQXbfttz-_83d$lELi~Iiwt6V8&=^lkRc25Wfus` zNGyl^HcAHAdH{A(viuPSSh(W=*QX)g-J!UPU4|z$Utn%6G0Zxo;}NDVr;o!mquV!4 zqQbmE58C{D+_wutl)3dJJr{hBnGF}e%mil8KM!DzB^B8Z8tModI>3+H{k1@5z)EL|seIeXZiA&5~Q2V<~GAvUk zti=Zj{cU!Cn6Rh*Rkh>T@dk@*to@L0p-5)IEc|rAwqesk>_@<^o6#9EEbKnP)?bS@ zHh$fZ45{{BM6zUN#tJf$I=BcW+s{bN?AW2W6K@hz0BJ|ktL{i%AhSV6Y*%=-JvoQD z!!mQ4g7#S{Qd^Z26>ZXrb|oX#fVrY&55jwhJ4eaUZ46}Wn`b0;#yb=4;(5gJJb6ZV zI^#{*-k#REu0Xd3qpptes(X9g zP5&6vj%~-YV^0R^#;>H!t3y-m(;N1LsOoRD$M=`4f9B}1wgR}8vWwQa7m(GuFE1M2UqcH9(_y#`A1 zC4C8R7NoSfE9r}S)iE;qkW_mXasLi8Q;Vm=I6o?OAhJI3oXUyQBqlKE+140Ajkoj} zi((iX;cTnoQ;(_Bj#PHmU^1gTUOtva`r**H&h)QhoQAZ4S4}^tG48K2j0H;|Xe26ptmY=g(nQ^D)3$@%mQJ>e(FK zd*kZolk_ctWwxku|2Ht=H;sG*S_^HZYfynKFm%x z*1Q1DWyBZ(ZL51Zo|XgZ z;teu0hnWX`e=0M}2T~JxJ%6Uah2{&ospr{swr#%9c8hM811Uno9|-H7i1k)Nu|T4O zFiS_rPY<_Ms8CB_qryp*@dqzbAvtiTvi7a7EKmVYSw z+}&xy_KI2Eyj?v_9D_Hjdj8cqO#b7_h(){JB}Ys=+lfnL=d6&^Vo*1OOEg#mM9NX2 z>jf$Mh-EB1$vq@s~SQM#W=!x1s=% m%Pac?V literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pd2.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pd2.bin new file mode 100644 index 0000000000000000000000000000000000000000..e47bf66cc85381ec4e8cebde0f8859cb10243f37 GIT binary patch literal 1968 zcmYLK4{RG(8UOB&9XkuD9XG0bao5XT10fEXS63n;V;r{Q+CH}laY0oZw7Xo{&e~W^ zvk3#0xGa^hwrLBEn7U?2r9=GF2E@Z?ofI5x6Dp0w>~#@cJ2X#$xofF*VYc#UL(F$> z(C+lTKi}W?e(!tVgHhl+0URJgkqVv;-7aVLlY*Rt--&v-W&}k=)K4=TEBg~3J#2O` z9z{d`H4n-(4P{}|n6h-9r#4nlV$zI;8eGf9%7_W6p~O&}Q-%_5WhnkSdD>;o=akiS z*j!4js_jqyG5?K)L7CG-HRCv^fYAB`rwh&TYC3p8Y-)k|?yVT#SpRJUgnQ(^43`;5 zxb?`tlfrYMyQAHuetBL$+S2mQi0Kgf5?-B_@@w$G=S%D!Fzx^OZ2WVHVD`lYFyAJ{ zPez{Q;(O$aI$f(wc*4ty#ew2~t6;uCcE=j)CmO3&e>QkNsk)+#^~W1+YGeI)W2AN= z(^!ABaiw}LEtougPIV^clrDYd6Gtw$f3pfMS^^$v3riM&|0aW&-h>J~0up3Ey66Oc z8Hsfuzm1XrHt&J$lq7wI0TyoA!1-l}b$7_FLYMAN&gYpMOANCHsaTk)OR1x9Mep`b zlL$Yr(}NcO4)^UmA7O4hLC=Mt>{{HZvq7HFyVt8w932NKKmi{U%)*X?UYWiP6Q@X2 zIz@&@yY!bry~Y0Mr%~>Bb3elA;|je7W15eyOJhu}F*OEvMV=3}lw%@u8~==LjQo>8zSt9kE>Q3E8bv%jkX`~E)>Wt82Mii?y#z)*vh@yl&*de2`e& z!!{PVhUQnm+}-5tw6$4!$O-C4?Di6fjzm!L;EF->D3;AtHc~{JlwbKv)ry-$verO} z-h?;q$$*$Lb|kzpk1|F^?-Og!Anre8W@@oi2P&IdbTu1P~%N) z#-td=LO9bZdzB-~GCp`Tc9Ox$l1b>}~gd@k>rPlhtG{ z1A;r+S-Fy>``SwEWvcJ)lEraUn7;Os&_~L=a5PR;1mQ^hYVHhXH5Ub}6|ZgfR8D8< z-fNe?o}h0S6dj3w`xH_5e^on#uf;#A(!yx`dX>VqitRy}GcHywzt*jPVN=Fh_i1*z zu;%%3E+Hlv#6&`zhwM96?vuIf-UTlE)p*D>=vJ&=T*lg4bdws`UJMAlU|HSC@s#9O z7O#<+Im|rh`&)@w-j|%nX}ME*M{qu`8Cs5AW83EQZ8zw4$)6-N{FSh-iD+**81=_H z2(xr}{N!+3nF_Y}*UJvEJbv$aDk%AHl~=$2@B-y`m$ck`URstbi|}tpL$reMiP!ZvM>5~{U*wGrF%@; zwo6^rJ(!KR%RT8~ld|=wt;wI}e-m>f{;ak^b4Vr-Ik3R(%$! zhlV>S7X|p>KqF`yS6YDm`pwQXvrhpQ7Xt7N*4zSsw;iP_sik;BY zc--+5$29F^w#L$r>7`%eo_~aN6p0o3Lx+-)@PP>3&!pfG9DpF~1SFul{ERFpDJcJr7W33PV2T-Z8TL1t6 literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pe2.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pe2.bin new file mode 100644 index 0000000000000000000000000000000000000000..e08d1c344454fa9175adf51f5e6cc8c76dcf03e1 GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTmaJ8o3>;;xsw21*<ZQ4R3P}eZ2>k$9Mzjzp}lY*mdLZy+wUKdeX&^!fj*HUp|w(@90%y(|k z?)1Gs-{1Fs?|a{aF%Y@|IFO)3h0ccWRhd;d6^aDsP1A<|$qSvHdCD5L@H5Oz5!G(gN$xcj7{G;}=a3A5i;Xa$dCp3vI~S2 zB$h*d2PFe+JpevRmOsP*3wIpg`Xt1AyHt0v$M7T<3e2r#hFOPHJi;{O)Css|^!jE< zR9G&S@`jyZNsL7*bjhRH>0y;MA&_jZM+(7 zZv46_8B+b-h-AsktQBM=ZD{NNJGck|3 z!!q-_iuPG4Qm;y?hBhfxzmk#az+BO@hu~eroulOFHU={Gtuqq4QQoW3;+S%?MqyjS_K3=xmut3P`__MdOT}9EL3X;a z<^^yrBPLnIL`Iy4ox4^aQu*A0MLzdwC2W~=J610~Yws<#MGfvO1w}!$t?uP`N)BjC zH^}TfW*+qasm!b#Oit$0`7;GBv`|Q!={&p6b}SS+Zqc1`AW3NW17Y2hvHg`$ETD7| zX8G8}>5+~K6>1A?R5+jf$Mh=GflP?y28s@G_843B4E@5pju@7Q(@{S2ee{b1Sp_?_kK1WkUMT;P=<4-QK#2mhIc69R98PGusFzT&8~U10 zaNp%-Xcx0RmcK(U{{;8^ZKM-OtT+%pnv6ycN9h431xMj9gx~;RRze&Uh+-dxDf}PD mmthKYI0;{bQy?;51N$F@>DFAwK7+Ch_Ji;!YOsvGKKLJFz_FhI literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/high_density/hid_generic_pe5.bin b/bootloaders/hid-bootloader/F103/high_density/hid_generic_pe5.bin new file mode 100644 index 0000000000000000000000000000000000000000..dc3bc7e4889ad1201b5159631a7ba69b8e6ec6bf GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTmaJ8o3>;;xsw21*<ZQ4R3P}eZ2>k$9Mzjzp}lY*mdLZy+wUKdeX&^!fj*HUp|w(@90%y(|k z?)1Gs-{1Fs?|a{aF%Y@|IFO)3h0ccWRhd;d6^aDsP1A<|$qSvHdCD5L@H5Oz5!G(gN$xcj7{G;}=a3A5i;Xa$dCp3vI~S2 zB$h*d2PFe+JpevRmOsP*3wIpg`Xt1AyHt0v$M7T<3e2r#hFOPHJi;{O)Css|^!jE< zR9G&S@`jyZNsL7*bjhRH>0y;MA&_jZM+(7 zZv46_8B+b-h-AsktQBM=ZD{NNJGck|3 z!!q-_iuPG4Qm;y?hBhfxzmk#az+BO@hu~eroulOFHU={Gtuqq4QQoW3;+S%?MqyjS_K3=xmut3P`__MdOT}9EL3X;a z<^^yrBPLnIL`Iy4ox4^aQu*A0MLzdwC2W~=J610~Yws<#MGfvO1w}!$t?uP`N)BjC zH^}TfW*+qasm!b#Oit$0`7;GBv`|Q!={&p6b}SS+Zqc1`AW3NW17Y2hvHg`$ETD7| zX8G8}>5+~K6>1A?R5+jf$MhLpa{hQ8(# z+;_Pd+Qn>-+(__22Y literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa1.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa1.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebff7654b83269ea39c022f7b6f635aaecf35413 GIT binary patch literal 1972 zcmYLKe{37o9sk}BJLlk~j@_v4#k7~Z21=ZzChoLq8SG>`uFvPf`$<_%!CxdJ+AzbCCK;!hwT1mjpAogZ zj8DrV|C$eF*(}PUmN{nYyg;ojpv0n?ENbvAYYS-$G6Ts0h1Uj>?b?9yHhI=#&!@Dd zT-2J&Ea`2}yk2^6W}nI%k%oDk*FbE2nm5Fa@lq~)K-$m(>*~#f&|Lj<6U04gPoB^B zCEJbIzfWj{6HU}#It%LOr*_mjrKGj^R2MgizDcuuqu0Gjx>&?~U&2-~J zzPb9N=9T)noM^H1Io*|<(mIWaFS%lI|9Txfv4z`{)jxbA~Qmsj{8`d8hKW5?T9X5(!K{4-@T31;a}Gqw$z5#qlGcG-+gkU?SlF?QvR zSabEYresKskE4<$GZR*bk+glYP_g}_8>V-Q>QUYyrU25Gq)*$DJVz!&jM%2~T3d1o zbBAT7bQSIMQnaxssT$g3RQ*y;Y5;Rd&+mti5qHEkwuym^{l*!I9f=ObQ$CA0o+Zx; zCv(1(?d_zV-SlQkS?w&D6y|eL^fj-e=k`0)?Hbk9iY>3TV&*B1wFT&E$Eb_Lyyn?l z_lAFrX~(wX*|EpUfmGmu?zm(yjX?Aj;tcuDOB(%Zes&heovd?Vv;k2`6AZHi)}zGc z9&)hAHM2ntteqR2?GCrChn%o+*y*f-#3jR;4_6FXpJv-!Wn&ez$pp2()$O<`Bzq0C zemiyIA=EXD*4WDnBUuahWPTbyNZESrOl zl{W@^4Uzq0NnZ%z&3a}X`VQ8%HemGo>J!z&h1Q<$T>j`9ZSB1uKd1ZtZ+^=KX9~wu zJ`ZAhykqf7f$niv*~?VVj;hV!7MY&5s@Ownf;gg3i=uc$xmrAfSl3d_NpwWXi^V1^2MtJ&goNt&_Szpj|0f2eWd4uuka zin}{O*j=nS4w{oK2 zen0YvC1wrQ%TPI>22vv$yIkBmqW#18q-E{HKrUv{Y(PJx+anoAJ~a^kr||{K?#y*t zwBt^F$?#!D-l}!y1})0bt+%FrTY4$NU6yhZ@+Dou`e0%o!V2XZ5|BRKu&2VG)$JNB zQI8FJDGvqs=DECYz6A_L1LdMcpeUH@cVX?O7!KwgvpJT3Nzc84dp?QuFcK^FMh>Q8(E~BMm&w3EH~?Yj2h2=JfC4e>BQT2p o6Zkref)2;v5jYMa^AoWDJ{a4W>)7W|mczae9zzY5vDXLx16lj9djJ3c literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa9.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pa9.bin new file mode 100644 index 0000000000000000000000000000000000000000..2a0a6200b4ca22f2f78c6ebf66fd48be261a0730 GIT binary patch literal 1972 zcmYLKe{3699sk}B+vm)rj@_uPz?WSdf$?dv{%jPJLHpG0- z4ceW)@5lG&d!P4x-v^_>cLH!ALWPQ+iQTE?_mOfY1HTuIc*Bf}s%V^HHkMLpzY({5 zj9=A}f5VS5T}N5mGAC`Fm#B>;lvp&QqejrRu{2^qb|^h02i2i;hdLy`PG0cZ^BHv| z7q=F&D_Z;We=dDv?h8uLh&9Y-f+`4Y&jk&kHD1XL?iX8HU|qkR;+yNgYl09_dh@~j zgXs<<@kvJbN$lRFP<=p|HIBGkZ;e=-7)}QaS}Lu=qrKIU1{?>=^`HCY`_s|F%X45| zA(c-@e%K}7r(8DZ#_~~rd{MPIQ2B2itczrKs=5Ab^Plx_A$lRBd6Uic<4up&Tz|Sb z(s(1^Tz{&0t$scySS)>BbEjw2E@S#ru2|f+S%(UEX$g3wEj(EOUSkl~k6{^}1PSsW zU3LJ!h{STp_fQhR=7YddlJq$SSh(!~_m?5n?NhwvE~6teTVif4Fw81sQ*mZZ${vAh zMt5L}B=}i_-fQ#ka{p1{6U?pW=$RPQyz@H^Hp&xv_d2d=bR47z1$;`d$~z7O6#5Pv zJx!9*X)-+8W&Ad_r_z`FEXrMP9Zv?0ag|<$F+D`DNn=c-IXMRRBwmWSYAKPq18QHF zNrolrm^J?pp`T?3Vubzvzw34!JKo+hn{3}7m@AW0V3vM8XWOt@KKTn^SIxvU8RmB$ zW7l3yG}r&s6b-TQeq6L9X4;A{qPlk;Dz=}IhUwd;c;&wmlLv8I+OKX)pC_jxjL@zG z)%NrZ<`2uvXbRfr#du>`R8+LdD%zEt*Z}5=mfr{OBkqW8VhaNa`_>r=ovBXQTRw+4 zo+B^tCv*Oc?d_zdZ+SCCT|Gxm@r$`Q`dZY`bH_c(PL=9z!#1e4VfM+6jV0*rz^Kb( zLDjpp?v{UyX~(wX*|8_fp-kvNPf|3PMkxLYaYpvda_Ok*#}$L_S8bc?Y@&iT*|2)4ZpY0a z*=wN1Ksq4%^B`u;9qB;Iua1$?A+hly;{F3>x{=DpaDGVeA+iDCtjY;fB*`=A+140A zjf?uUMKO$xaK23msE5@l@*-~vFRwj48B`JJ%HQzJ{(t@~#sn24FVX`yNgS+g&N4Vw z&0)vdtHXVU!2YVFEk*EdJ--S42W#6KFp*P^R}UB3dcSh@y&JSO_y~SZ&m#|i(G6z{ zx)RKT(2?w1zE+@nJyrH9)q8K%=5WhQZ+lhfB{g0+B2&wPa9F-xJd0T!Oaj)6*EV~W z&lKoAH?Dp?P2VypIw3!GnyCCob)WDx`DUFKM&%Fd6t;D24=6$Na^3c8-}|3#Dp>D6 z%T6!Wy)e!t#3YZHNQm>7oI93=lwe_CE?D@g9J5Ti4J%kMZ|^O+N%e29LQ@abj)!p$k-03g51+eD7OxRM=P5i?bzh&Tjv>W={OF#tFM* zivKR|?gU})qXi+an;+Fr5Xa!nx?Z$(KDdHavhW@mJrzq{BHK;Ape11qA|?%1KM@O5 z^m<9mKW<(kUi0s*JAM(*dXEb@CsM-+-0L`BK!UBDvvc8_D6{XLqjgg~cvH`>ofydC z>yT%%cE(_>jFdx4C^N3ItHr@_^&R71u8p@sxr9ZtA?=W6k0c!Vl~D3s<71TV%Jo>Z zW0$sK_%R#r)OvEm7Uk&C+A=>Y{U*j;6>}o;MNP!oU}7J^>f|5gkv?eIQ_&CWc6}D9 zCx(5LmjZnA+`iZT0t`h1<)#IoC|DS9W8J106uP@RD4+x$T#hM*1BVluZtCZ#*aOGFoFMZ nd>JM{gJbX*JOcvr9kBm?m~728>~ko~Vc!o=pa#p>>x2IR5FN3@ literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb0.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb0.bin new file mode 100644 index 0000000000000000000000000000000000000000..cffaa0e4c3b045d488c5f02561e23ea06b576a1c GIT binary patch literal 1968 zcmYLK4{RG(8UOB&?Q<4V$8J>j;&qq125oUjy|{>quyL{-*Y>${h^wizk$6{^?F@sM zW)lV`acL@HZPOMSfx3oCU5EH5{>5OlP6`fVLZy)=n=YcXpk)e^+jSEc<|vOg#C(?q z?M~nO^ZkAA_rCW%7y+pZKmY}*O!#c%PQ7rDRG9nbu({OH^PO*A4+^Q1^XZaXC!^454IA3mgPX@T{(+X<<){>v7~`?S7-SQtok z8nJ(;KiSGOFBMwr zUu|7$T*%9oz+TYZsTtC3OnoSnN(VO^;9*sekhZbp0i@4!i0KEg3{QXx1yC+^tjWOa$tl`P~K|mMDAQdIPE>W1xl@kP@<0+4YEDWADK6Gc>NAp~EBH z#?K@7SNr21MY-#(^9j)yBkU@S<^t@RI?6R$6QgiX?8S(yo=~_uK>E8)I;=7$toa8i z`z?MjLiwlv)v)8(@eWk@c*i0CT!l`9S^mkKZNq1!_z!_!HDgnBSlWGpUwbvyTK{cJ zF_h*zQN>cZDJ#S&sZ9kc&>D{4ul7FP81j>$-kL*ZYpwl5v?$AWik($B0;kg-I zL;HdfZ7wSsL7S|mU&$*?;I8O}gYXVwE--3r8v_;lt@Dw)5?x78A)ksamC=8f#@%&GvvFd5cb!F`FR|7^UkI5CPWn?8D<%*$EeLc;^2{M z=7I#Q`?ff{9qqOra>B+@r?Uo%kO~tYt{8GYV%uEjV^y@t2FafrcHA_Qy#`kCr~FA@ z0hFw{E9Fo4$S588jM97_asM_q)l6g~I6oqL5m~={jtKH3jY}MQwly-S@kVaSVmQu5 zxX`Bg$x$*%pO;Mem9?);hy;+aLbar`>R_ctR5kAa};Q zmai4rzV;e_mFe44vpK>t*Vj>#`)FN~$CAvlEFVi=FP+1z7UO_*;H8H5hCg*k&}*yxg$;+Bg0On`x|bA7!Tp>s=7% zDq>PVOjN{q$hm9jAx$g}&WXiHGGdu*8&)o{VDBxy$qekQhGa>$t?uS{Rt=K*8+2+0 zGY|UyTH_W!nLb|1mClrf@N79}=1Tl3-#%Mzzr}W_!8B#zP0D+Y#~-MNN zogQwlGhtV7y)G#Au?H_QVKsQWzVgj4&oM!7EmxW?D|2@Hn>BO%M|DBolVqfC;O*lOK0w*M`Cf~4+^eq` zKFr8F_1^rj#W;HPw)9KopGAbLN?t*}qAOS*OzcBgp?o6}(z{#sO!&QqU7r=^@nJ9H zVF2GdxA(Q*1IMtyxLFw(1{Mb0ShpDth3=kC1{hfamt&F>z~O|Jn|T=(yP&uAl<+-a zl67<2WA(f2!cTF}-$6Qt#LNAW!|7P`P>k*8vTzsO_; jhZFEcI0-WMb+G>dnAn=@*ymA}$9@1FM-85{*9ZRt$YHPd literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb12.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb12.bin new file mode 100644 index 0000000000000000000000000000000000000000..5d848000f0ac44e74b68f0571fb55456ca733ada GIT binary patch literal 1972 zcmYLKe{3699sk}BJLfE(by9FtCR7?}vgsnK7Br7Axm`DLVUF@>L(KQm zpxx>Fetdtv_j%v@pk(QQshAe>ul0Jh~iYxF$Z)K=qj)LX*Pfy~(WGMgY99UIa z{&?sIT?wLIG1x}!s5i2x*&HbUw+_}Nx+~sXd#?G9dLSRVn9|*`=Guv7o8DY|wmH>7c?K zv*sVB>~nm7nDXEISKW?d$J<}xW9ZPKcKHA@=6UDb03;621#V3g<<1`76@=OcHlZr}fO1HOS^#NZnK$ZOOY^j;(y`+9DE9>-n0b7{N*5u!**qSpgy>Lz)*?3>mLx+uY!zWwc2Lv_IGFxG5xi4J`2` zeF<+4NZQBi9^q}#t>?}m6@^_ zjbtur^6wluY^6)n_L}4UsPY3D4~R=g(tI&_Hn`J#>pkz}n_4fn&uSbgaHH z*k{Q6&x`s}5bxFV8?a}zy1fD8-%w9f4(D5YzjW>0o2<3(QT&{3kACh8E;yGzriwX` zJ7S%+>v^`ft-@bpdUsW9j!@%z+beP}txED(f~m>!k;IL{Im~J?23RZJ+~}#D&9l32 zUVA*r-ZmLFnt0|6)ua#W9(g2jtIo<_PJB>ju&rY|q>AR1y6xA#^FP{1VXgZlJKb3G z0ytL?lN@5AAkJTO?pS(674!XbVm_P*TPE9z)l1CTdy8!_d$yN@vLxG9_i{X~1hn~^ zbZQ1O4|@Mv;TAueI$FpS&J=~vY%ybI3j7M+Hd}1F&9*Cn6lLLU%Da!oK2r_F`Vt<> zEgTv6>8Lr>fa90x_Gu}v$6ytLCJWYHO7cwT zMv>&6G%r*4^xIfd>~nq#X?F_L9OFtE_?!n)0HD0FpqFu=$Xv^XX?0USZKqBwp?dkEWuLgHg7ROT#D}gb?%tW+ucT0a5J3FpmET nd>O_;hhy+{I1V!RZLt46FtIt;vCpC`i~SyW3N?7nULX7qAs@8Q literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb7.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb7.bin new file mode 100644 index 0000000000000000000000000000000000000000..eab373bbb1dd23898341a86508eef8c5e8c40d76 GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTma$8J>j;&qq125oUjy|{>quyL{-*Y>${h^wizk+`eNc7{Pr zvk3!}xHOfpwrLBEKwZP6u0#A2|6(v&Ck2Nwq0&f`O&3vG&^(37?YfBzbCgFLV!oFK z?M~nO^ZkAA_rCW%7zL>tKmY|QOz3R*PAz|sl(iK6N--l%E2QX(d6wH)KA7~H5!=Ig z^(^vlcu|(kqAX%tlT_zLW@8y8Hp^vELu}hvPTP@Q{Eb{Uod7svw7xRP3 zE;IV?l>Ghho>*^nK$|m=`&fiv# z`d3@m8W(c1EwC31S8`VGF{eKiip7JQ4REt6NJ!gQ@&MB3ImGk>sKXPWLLSu14v?0R zcmeqxj0&*1PyHANJluAG>mi8udNg;r$LvbYmAG4r9JdOYc!XP1GsobX+3TAkQEAR( z4^aMH?q5n$l)H6`oee|Hy|CNlLlR-{TW>&RbR5(m15#YJ%ex-&Y3v<1eul)nh?qbPU1bv+@P<2t(vV_84DrjBvV*5nx66MZq z3HvR6C`|aL|J9&zXuJbuKGu22H(w?*V3mF{Pi^>&6#F6Yt5$THj7Ymr@N2I|TkF4V zDW=kVC!*LYH*E(wML)0r73wG5v^+aBcjAx4l0ey!^y)j37syPIlRGt0?@Z2O-tgS4 zp`m?Vi8SkqrlU7e=j*iMo4x-CO=K zCXG$w(b$t^f6D(zUraH%ra$rv;tYB(Dmwe?{K5i`dwA#aL=z&4E}2#d?8gY@9&zx< zwXy*n?EAJjyB!@=4>=+8sMA>mMM#EpFRmD}UY*)p=c5(0$prL2H)z}x5?uqU_>#Va zHxEk2+LiRhz4{m#{fyFl9&!IRH{Fb9!Z<%7dk|Tld`=hSDH4-7^h`CmHSCelE)KFU6zj}t{2Z?R*NyfI`P_OU;S)>z5mA5 zN0aO=i(#XQubd&e^nSx5k0ow4Sow2__Zkeg4Q$hzXkBhlzx2lcU^9hv?xXB40g4?A})KctC;p?R?oPK0fXZO6(b=IP#Io6O+ON>G+$YIQfqGipFzxIw08 zG4r7RuT^g8ld0pyZ1GG<2+ftUR<_8m@*Q)fj$3S}8b}cq-Xy&Hc;epD0WJqbqo2JY@O z;rFt#oX=YCH%=4B{+o?#k?OpAC2d=-x5;5E-Gq~u$j%w5V8mbzf))$*KB5$u(Djm% zf6Tf>+%s=tO`+%f2GZU(5LhJJ3Bv0*UqpiKyrcP$K^d)Yj;-4&;BCFIc4~;e9rcKp zW)0TLVA-$vQ{y_nTHHUb|K0p&+s0e|T-0WHzj4H%BNazp%^&-R`2ouA&Gp%=<6dLM z^kPQdsrBVXY{t=Nw5MJw{VXh8RdNdQ6+^-LU|}D`3gsP@klx+0XF~5aXnj_g$45Mj zn*n_9T%Ol{4;;e+<6>oC7+4%~Vcljp6uNr57+_=x+8k4y01hX#T+GX;*bRNHr-bhb zQ>=^I9;@GF7k`R-{tnVHBwii}A5KLhhobBNmx04@2tqIfn3)iV1Vph9!vy|M;>$1r j2AqH|!by<1uLJ!DVRCD3V4p)-4*NlP95r~3t`GhP+P|^0 literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb9.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pb9.bin new file mode 100644 index 0000000000000000000000000000000000000000..27468661a84b3d3bff15b31928be1bf7d7fb57cd GIT binary patch literal 1968 zcmYLK4{RG(8UOB&opTma$8J>j;&zw21&uh%yf_jC!Z>Wl_4(W;#2u>IOx*R#b{3oB zEkziH#HFc(wN0Zm0(A{YT{rPh{ENY8os>B$)3i3yu-8Q^Eod2Ga=UKg!W`w%hM4c% zpxxZ-HJ$>WS(X=mXayI8MA$i zUo((@-H$TEKv~STCLNvUsf{I+*fe9H2H&!=G-5+$C^e+;+EA)P8&WQiXT8pRMqA0o z?1jvV-v0ETieH`koXVTgy7eTlf!KPSH^t_7B|ErJYHES~*IP-UvHsfzh+(xi$LH=( zb(rygr^O#fcPGTked?@vxTWRo5u1}jsenn##Z~xPZ)Kzo$G~>|r$_m8Dw2P34(uu^ ze?0PoE=5u=nRI>mh(ETdIUFeew+8kFvOC#Wf2#41S|}empVqyJ#`>{Fo8DM|qA^l` zBiC4eym7U5E-Ts`eNOkJX0$GI`eUw8*t=PSGI(hj1f(rISpeZ-266oemfmX&T%%WE%m~tJ@)%QZOpd`_@#mv0)uhDS2Cc8lBEvFu z)SiEU&`+@gQNn)rUo|I=6K_w6O|r0to9vg2o@Zuz#UUggik5ws)jZhRll5->cCvqb9>=E#GIq#_!b5-_RaGVJCmJ?w{#Y9JWHMx zp2_;tj<;uYW6PT*8QNKLQdrE!(AT1lo;&VRcWP93E4IAWikYXlHkP2f1EVgF@tSvQ z-A(@((~0fGb7D`Hg6ZJ?o`hsF^UHNlL=`TYfjuWlCuU{ z3Zw#xKL=9A+K~z*{n{8A9g^zLA@1K}rt8T}6z2y;A0itN&uE-DMG^voo*j)5)OgL9 zwkd{j5YDx#0qu}BMV=EZ@x`?#CV35!F29av_W$!|F(zmrdy($DL1JKUbCgi4BKTzFXhl#9uta2#d+WVy|?_Q_v!3Xhkw>|jT&wJoZ-cb1* zh#iT}<*RwRx2?inp?Y^$91ge4^tM;TUQ!jr!wR)5iiebIg)^Add;+jmyt3J|d^%6x zd;Q8oDf*^G(Q)PRQ$!O!tog*RC^u@fII4V5qp+=EyItuQcGY@*-sW6L!=_3WBaH_~fW{ZYp6xda^ZMN8UlWvzoX+p!Bg!LXte5M*ngcKiP z77mV|7;dXlk(SVUm6NLD51gkWa_Cld+D3JgU9<)KBOC|DTqV9ll&6neTlD4;|ET3k~M2QD`>Jk$%Q*aes{C%XuNUYcwJ&=ya_QmNwCIbgxA4FgPFe@Pm3dFIG!UX=u@Ku-q j9gf1+;YkpgZ-Mjo!(?-=W1mG?7W;m96g61JSs(llbAYi= literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin new file mode 100644 index 0000000000000000000000000000000000000000..fe6cfa281c19a375e9d9bfed88955388d3d6d054 GIT binary patch literal 1976 zcmYLKe{3699sk}B+vhB#j@_v4#cMBji#Fn{_2ME5WaDHzuFvN#A+Dyd`4T& z#qEXcvflCBA4-qSeM#lbSkpSeYaq5g%bVincsaN4ptPw4_ItNeLTl~!Ef6DWU!KqJ zO?R4!e`my>#C9dc>VxX6dDP>1ci85na5`wxa%ly=(N`UA!XdCd|G8heKOHT+G6(h* zQu%cFrEcXu^|DDf>&F7|Ma|(r<-ZNEFOuD<*4i_ze>B2{=!J~#OSaZdw%Ya9+S9G! z=B0dV?Wxwa#`&CR`{?t!H$9_un^T{1#o~dD22{XD%OD_a;mHCBI)k`=0(E#2WXOYj z*#*KP63ZdKost1I_JWU+<XuW5Z^JvrloYFF{WyMy-$X znr~~}oBlDT6WfXB#GWXJGNDI%lak3aL-F4ccO-B@(&*Rn^Yb|FX5CBUO^8dHU|J=x zA14m?u!}{mWrQ`bcW-iby4oE*C~pwxU3asMGR)l6k$I6o}<5!s-4R^!A;k`x&9>}U+5 z#zkYwrWnRSINzoQwIkXjc~P*$S5}{%;59_L@@G7=|DQjLF+l^_hxFi05(j&my9}-s zYsj_w=1{*WvcD?nOA)+V&uze-L$&Qq82^@fvU;S@*7wz`@86*9eUIShZhz#9U-rV; z!f}<)gV>qus$VP6eeG5DD%H2E>TtL^)7McI`$$a?#}ukAibs{}#j}{zd=ju;ytUC= zKU1I|xN-HdG=0mW=!EjrX`%@qH~iwLaMcK-20zyWU$_S zmYqJVdtsc*h)EtXkrC&wxOXf)tn!6{Ild56Vzx!MVFly!&fbz6)Sm5?h$x7T)!iJ= z%3*E(2AP_{%!9taRhh*vWR4Y$;^`6>oh=!bQDj%x_SsVVExJPvX9x}N5Y~4r`T1Hj z*{}Esvv7Fq)KGhkih9CpHBPFHJ#>MJ%Hi9!hV^md6mjjl*)WQZ&WBg9N`C!)a>&B|#3izQS}5pAScQm1gT0qX z1uA;IB;_BsE)n1KJ6KbkbH0ew?*Xn2iMWA#8|Mp1u$6aCJ{(1vQ`=mdw>5~j_57+e zkj1y7&Sage!Fm}fhtyDJOk-Dy`^L1toB#BzzZ=RWY?=+}hjnKp<0znplJA+HpzPjU zuT8t|)tAixX5^h(Z*It@T)lc*=4Ykf#JH?2sA0wV&_hnx0P^rMDT zqb2HzAwT7#0N*{Y|E)g)L(xEaX%Q$276!anyD0{R-kwehC{X~9Ym(u><%X7*`Z+3g zL2v6j+>g0Q+RJQ>Rq9@IT}kv_}8{ literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pd1.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pd1.bin new file mode 100644 index 0000000000000000000000000000000000000000..d8da4e09046243ff3704ebf49c4c446682e3c20a GIT binary patch literal 1972 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 literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe2.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe2.bin new file mode 100644 index 0000000000000000000000000000000000000000..653586b78ded0f0ed256dabebaaefcd38d9dbd2d GIT binary patch literal 1972 zcmYLKe{3699sk}BJLfE~#@U3!0}exm`DLVHf4mhM4cA zLA%rU{rLWT@B2RQ`(OlwZU7D>s8W%0(Yy7+AyQG(@H@$f*=9u2B;y>jzH}(%H)58L z@oPEc-}Iv_mqS_1GAA6Jm#Fn6lvp&ALk+%deJNu>b|^KZ@Y+zSOB+&NC(nDG`HZ%l zk68=ZWxeycKb0SyJE-zT)HYA?8i?)B@`kuMUd~4jOPg9?-MEt!T5G>;fw)iYFYtxI zRF@I|cUt^$bXTIcHlWTL$J^T8$yl7!p9&bXTwa049;mTR3k>bm9V7*PM zA7@_Vl|AYegSHzd{INyN;Xw7jO|ae|yOXW8XIjh6P%&~Tt$P!#wWnJhdTZ@eD`Q_S zwAQ}Wy578)7cH5-sC!Z~T8}aHF;^-b+Gv88mO((;$|VaRe3ikRegqA85@aZVe8mOA zA`;6Xzk`wiHugb)lI2e^z``9DcpideuTS+>dW^30Y?-;ez%VP2O~#m2IeQ$g8@+)^ z5*KC-`k=$V$9=mj#F^XA(lb%0d*^o=Y(yaR?zJXVN5()7Qy?TotFq&ffJ)zm6K6?6 zK1+s2dW_#h_f`iIpG3Lmt?NnN7}Mw#7|jLgRe6-LTN9&jU;L$LTRkZ;cR?HIG0Ct@ zowVj3B=q;${ZYa`^RK28$BB2a!X`Qo2j(hd8qD&q<{TR~DQ&w#rU25mlwaGHx=5zOjM%C2T4!no zvBNSmx{CG%DP}h$RYRMss$b1ZHZWK9!XbDM^UhInd@Bbs_M2xUb|}%4rwKw6K_up|3?9J$K!w?$oH>c5HdA9g(NF)|a5S3!^qhdCj}E z?oIy~(~0fGb7D_ag6ZHReF@26>|pE_;tu;SNgDn8!u&jrdsz3=LznA=?giAzN^Kdu;Ze$BDD!N#j-lMQKqZ8~w&NX{B) zDUb>%{sKr@b4MzW^lPJJr^kHTL;(3h|CrLtJ(6ghFL5(+a zQx?TAPKFEZYCt=tO_CP`Q+#>#+Y`KonXdi?&+Px_&tgo_K=vYi_7;hOwar}t*NQpp zT77kRz!2GAmi47D-mK>~VDLzNyA9)CSD&gKE4KH4>Ds$DY3snl__;eC{`?m_aK3m_ zLY4OX-2TcmwCbk)sH?K4uzs{}y$wnG$-6!bu zV$BQTT*jOfFeftRdC0wE=^>Rb?w{j}Q6*}bbURirzToUFu|W-PuZBfIbgb@SJS&H^ z`I}^F29XE-f2%QzpG%)8QtmHv{vV&`q+b)sE8c8Q(ykxH|D62ua+y#mZdqT{lls`{);*%?oue> zySTg4gxy1nVj*XK*gQ>K2W~ZUB}eD|s~L;+yi1Ol85>SrCflclqMm?N2%9um`-oJe zA~(uX;c@da@lL;mHN`pSH<9+X0p~`t-N3z$^93Z>!kvSMub|ASZLZDRn#9|BakUu5 z_rq==Vi7f1FT<6f8cdIA>`LjtnD%$$pKa^!1oLr=W`p`s-5JR^@~gqbKa7u1c7MLl zqFwjv%Z48jdAHt|AGRo0pWdGSY5CVt?wXXBkT2;H)&~>&Fjgr4h=BC|racw;py||T ziF#t#M|mm0H_zjH?a#naG*BK|1d4)%{T{5{6oW!fZx;oWC_tNQlHtJRhL(r=87g)| zU+Zb^N8BXsVYbHd59x(haL;Fu9z$Zqf#{KRJa#xv4=`Cc0*4_2`vH*&Nl+k;eH6y= pe+plRanRu;d<{;4$b1K!e-I`%=Q{Rzl;yD>geOpgWt{cF{{YO?vF`u? literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe5.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_generic_pe5.bin new file mode 100644 index 0000000000000000000000000000000000000000..375c0b08ac6bb209b355943f2d9ff2b3894f2a6b GIT binary patch literal 1972 zcmYLKe{3699sk}BJLfE~#@U3!0}exm`DLVHf4mhM4cA zLA%rU{rLWT@AJOz`(OlwZU7D>s8W%0(Yy7+AyQG(@H@$f*=9u2B;y>jzH}(%H)58L z@oPEc-}Iv_mqS_1GAA6Jm#Fn6lvp&ALk+%deJNu>b|^KZ@Y+zSOB+&NC(nDG`HZ%l zk68=ZWxeycKb0SyJE-zT)HYA?8i?)B@`kuMUd~4jOPg9?-MEt!T5G>;fw)iYFYtxI zRF@I|cUt^$bXTIcHlWTL$J^T8$yl7!p9&bXTwa049;gX>z;gfR)5>R3k>bm9V7*PM zA7@_Vl|AYegSHzd{INyN;Xw7jO|ae|yOXW8XIjh6P%&~Tt$P!#wWnJhdTZ@eD`Q_S zwAQ}Wy578)7cH5-sC!Z~T8}aHF;^-b+Gv88mO((;!jc6LzRDn`A3+121Q`k-UvYu3 zh{STp@1SIWjeQWHWcgDJuyDr(o`)dW>r=gz9-}KgTV`%AFw6>MlQCvh&K`&BMsHw} z#D!UdKIri8ao;Wrapv~3^h^}$-uayd8xaV-d#wr8kui|N6bMPts_b|qpwf5Y#95M% z&ywMh9^*IBz14xlCsFQs>w1zm#x!~bMsq=WRUT#R*2E~>7k??*R!>UIUC;)4OfoD} zC$0Gh3H^O`f0VG#{Hy82apE1Uu!+vYfw>Bq2DALDImd?03W=WsyJE(t$gr^UB)j@* zytVenmSjlwdojt9nJFvGNZP@9s5*W!w&~lZdX+bbDS)&s<=3{QE|TdmBX+91)|r~Y z++mp+T}AtX6tf$Ws-aC*)vx9y8o-@-t~e)EjP?qs*(tz1AHFOcVj zGkJg7@peYfZFw`LoOXds3yb*}`dZY{bJu<9PL1kq$ClUHG4mAH`V#bZVbsPbuX(rD zz3CrgI9gMv~++qJENuz&Xn4iaS59?kUw;?8Jf?<}ydYm}i zqb?S?W-g?GwR@AZ)79bVAtz!SbGvIGajA&r#}z})uQ@h1*mxCfvLWrSO($*|$yoy} z1yTXUUjQj_z(QEfNE3o4W$86?53N z`s(n2A+oq}w0SHdxydyVSfRdYC8gX!X{pJb;O zYhDQFGGbCdOk~7)$h~9fA(b!gpW};BC2E;;J612g;Os52K@D!NhDAYitnTG_Rt{#ogVI}Q<1jNTAh>XV-H@UB68?XeffLen4?0zTCOx(mgb!H53A<*FY27QOQD4C z;_glpb`LFzg`D|e^E7cCxYf*+9G&;CW-P(;E;(XmY&dn9Y@Zg2dIDA!uBT|uy z+$c+h$IZ*cJN*{c6z81ZMB3X1oEyn@1NS=47m#2p@0@)23d)??=GwfiNxZEWSBp`6 zKkNo#iCKg7GF%C&!StBMu9OapX@58V*|z>pFdw&QHmD!fosooU6b+>@+Dou`e0%o#tP*h5s=>Bw5K8;G@TkP zQBMr}C@%&0=6QUt{TUdF2FgQ=KvA%;--ETAVo>Pm?V^AZ1!!|kG90+v(DG0}L&a|B zYdy{Vh?}H6%+^@`A-(Vl?)ePTV@Rwx5IvHP#}3Eo0VWGa;4nmBKVW7;5)_DIABA!J opTgH+9CSDdUxQO1GT#B`AB2g`xsH7vWqIre;R)1W8E1X)KSIN?#{d8T literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_maple_mini.bin b/bootloaders/hid-bootloader/F103/low_and_medium_density/hid_maple_mini.bin new file mode 100644 index 0000000000000000000000000000000000000000..1f2259f467a7732a8fcbc096b6942138938e26d9 GIT binary patch literal 2000 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 beW3q77}*%>$a6TCL%t85Mh%{$>x2ITjlstX literal 0 HcmV?d00001 diff --git a/bootloaders/hid-bootloader/F407/diymroe_stm32f407vgt_pe0.bin b/bootloaders/hid-bootloader/F407/diymroe_stm32f407vgt_pe0.bin new file mode 100644 index 0000000000000000000000000000000000000000..19e3095cfb80daaf10dd31e8e844395daef672cf GIT binary patch literal 15796 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 G_kRFxE%Vp_ literal 0 HcmV?d00001 From 9990d52c8890d1f6ba8f81761658aaff36ea8b38 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Mar 2020 16:19:31 +0100 Subject: [PATCH 3/5] Add stm32duino bootloader binaries This adds the "bootloader_only_binaries" directory from commit df68980 (Updated 'Congratulations' sketch in the combined bootloader...) from https://github.com/rogerclarkmelbourne/STM32duino-bootloader. This intentionally does *not* use the binaries that use the welcome sketch, since that sketch disables the debug port (since it is built with Roger Clark's Arduino_STM32 core, which disables the debug port unconditionally currently). --- bootloaders/stm32duino-bootloader/cc3d.bin | Bin 0 -> 7136 bytes .../stm32duino-bootloader/dso138_boot20.bin | Bin 0 -> 7180 bytes .../gd32f1_frankenmaple.bin | Bin 0 -> 7068 bytes .../gd32f1_generic_boot20_pc13.bin | Bin 0 -> 7136 bytes .../generic-none_bootloader.bin | Bin 0 -> 6960 bytes .../generic_boot20_hytiny.bin | Bin 0 -> 7072 bytes .../stm32duino-bootloader/generic_boot20_pa1.bin | Bin 0 -> 7168 bytes .../generic_boot20_pa1_button_pa8.bin | Bin 0 -> 7168 bytes .../stm32duino-bootloader/generic_boot20_pa9.bin | Bin 0 -> 7132 bytes .../stm32duino-bootloader/generic_boot20_pb0.bin | Bin 0 -> 7132 bytes .../generic_boot20_pb12.bin | Bin 0 -> 7164 bytes .../stm32duino-bootloader/generic_boot20_pb7.bin | Bin 0 -> 7132 bytes .../stm32duino-bootloader/generic_boot20_pb9.bin | Bin 0 -> 7172 bytes .../generic_boot20_pc13.bin | Bin 0 -> 7172 bytes .../generic_boot20_pc13_fastboot.bin | Bin 0 -> 7136 bytes .../stm32duino-bootloader/generic_boot20_pd1.bin | Bin 0 -> 7164 bytes .../stm32duino-bootloader/generic_boot20_pd2.bin | Bin 0 -> 7168 bytes .../stm32duino-bootloader/generic_boot20_pe2.bin | Bin 0 -> 7132 bytes .../stm32duino-bootloader/generic_boot20_pe5.bin | Bin 0 -> 7168 bytes .../generic_boot20_pe5_button_pa0.bin | Bin 0 -> 7172 bytes .../generic_boot20_pg15.bin | Bin 0 -> 7172 bytes .../stm32duino-bootloader/maple_mini_boot20.bin | Bin 0 -> 7100 bytes .../stm32duino-bootloader/maple_rev3_boot20.bin | Bin 0 -> 7100 bytes .../stm32duino-bootloader/maple_rev5_boot20.bin | Bin 0 -> 7112 bytes .../stm32duino-bootloader/naze32_boot20.bin | Bin 0 -> 7136 bytes bootloaders/stm32duino-bootloader/smart-v2.bin | Bin 0 -> 7168 bytes .../stm32duino-bootloader/stbee_boot20.bin | Bin 0 -> 7108 bytes 27 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 bootloaders/stm32duino-bootloader/cc3d.bin create mode 100644 bootloaders/stm32duino-bootloader/dso138_boot20.bin create mode 100644 bootloaders/stm32duino-bootloader/gd32f1_frankenmaple.bin create mode 100644 bootloaders/stm32duino-bootloader/gd32f1_generic_boot20_pc13.bin create mode 100755 bootloaders/stm32duino-bootloader/generic-none_bootloader.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_hytiny.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pa1.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pa1_button_pa8.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pa9.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pb0.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pb12.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pb7.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pb9.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pc13.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pc13_fastboot.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pd1.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pd2.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pe2.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pe5.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pe5_button_pa0.bin create mode 100644 bootloaders/stm32duino-bootloader/generic_boot20_pg15.bin create mode 100644 bootloaders/stm32duino-bootloader/maple_mini_boot20.bin create mode 100644 bootloaders/stm32duino-bootloader/maple_rev3_boot20.bin create mode 100644 bootloaders/stm32duino-bootloader/maple_rev5_boot20.bin create mode 100644 bootloaders/stm32duino-bootloader/naze32_boot20.bin create mode 100755 bootloaders/stm32duino-bootloader/smart-v2.bin create mode 100644 bootloaders/stm32duino-bootloader/stbee_boot20.bin diff --git a/bootloaders/stm32duino-bootloader/cc3d.bin b/bootloaders/stm32duino-bootloader/cc3d.bin new file mode 100755 index 0000000000000000000000000000000000000000..67bb88b5ef8085e7398ece20b579c38b35581b43 GIT binary patch literal 7136 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/gd32f1_frankenmaple.bin b/bootloaders/stm32duino-bootloader/gd32f1_frankenmaple.bin new file mode 100644 index 0000000000000000000000000000000000000000..9053f681e17fdb863a944f5793c6a6d0bd39d3d3 GIT binary patch literal 7068 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 DZ|1;B literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/gd32f1_generic_boot20_pc13.bin b/bootloaders/stm32duino-bootloader/gd32f1_generic_boot20_pc13.bin new file mode 100644 index 0000000000000000000000000000000000000000..e8b980aec2ba46026b6cef6f5c0281b37d081b61 GIT binary patch literal 7136 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic-none_bootloader.bin b/bootloaders/stm32duino-bootloader/generic-none_bootloader.bin new file mode 100755 index 0000000000000000000000000000000000000000..ddb20716d291a13d5876815910d7f247a64e5d0f GIT binary patch literal 6960 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pa1.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pa1.bin new file mode 100644 index 0000000000000000000000000000000000000000..674751ad5946cff2cedc256b3484df5bcdc5e6e8 GIT binary patch literal 7168 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�P<5ilURlqV=4(Kct>ZAaO8RX5%4`K@ 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

>l9)G%FxR5FeLBNa56s0h`*FGz2Uqk2k8vlEwV% z#nLP81IOA}=47X~S@aAckqv;sWl_GoQvcWOrcRQ*Z(&zhIkt4F3mlh!XRifM!5Fhj(f~3;KuA zJ_h(6;D-R@F+7$N@>$INInaf5I{<@#zXyB?@E~9aupjUh0HuVSW%&|(8Y%HO&~~D& zMq7i{hBl5?L93xfy+k@;FV;FJ!D!r}>>b*IL4mgj7H%`4lqiiBMty~H z0y>m+4CrvIW3+hrA|YlQweg*#lXT$}4&m2CKAv!3;)`T}{2itT$R4tvyiUq;R`XpL zNsxV*UtOl~y<{iIG?7MfANdLyBwr>EVs;PyK1dz{?t@r!A65)w^s8hGxdH4v_}xW% z@aqQLfUnP&=$3IkSjTAekmizrjN(K1-Vgc-{2m0Yhd}W@tlal!^Z!#EqmXw1d{8_> g$|TuZQqIk#zoEYhuf{99-iOXN!-}{&mEK_fA1MRZ;{X5v literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pb0.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pb0.bin new file mode 100644 index 0000000000000000000000000000000000000000..4e3e6623c02a05eacf8b35cf3327abd4b8e6fdbe GIT binary patch literal 7132 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pb9.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pb9.bin new file mode 100644 index 0000000000000000000000000000000000000000..dab292d4eb82a8abc65c27f174ca2822c1ec869a GIT binary patch literal 7172 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pc13.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pc13.bin new file mode 100644 index 0000000000000000000000000000000000000000..33218e9a12b734bc632764ad26abf45a25bbec96 GIT binary patch literal 7172 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 Mz>9EqD!;+}KWA9wtpET3 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pc13_fastboot.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pc13_fastboot.bin new file mode 100644 index 0000000000000000000000000000000000000000..5e788f8144bf8b76cae46f57a23f78472559e076 GIT binary patch literal 7136 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 M0xQDZsr&}>{}_$vfdBvi literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pd2.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pd2.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e273a120a7bd1615773a0ce9700bbbed7312705 GIT binary patch literal 7168 zcmcgxdvIITnLp>=tEZh<4?|@+4@uVnS#m(JVF`~GSvIn*YsZOAXNV0OIf3PdrA2mV zS20X;W7w(U(%Hl*Ot4{>mSLwe><(D0cj9TiPMdZXT1s^jG7S#h-ad96UfXLTM@pRd z?(ax3q@{m#IvdUBbM86c`M&Rbuk)P~5+uF_Laeva&jR_Qe=9g_c%}cBZZ8O*mE$kP zV@J`tK>S1(j#fzh_q1#kHrdC#0F-gdf2kyt z=GeGnis)azk;) zf$VJiN^|-? z&L65#iGJ+TtCR9NA?QB+tFzFa$>OpRnW>pKA2LG@oBC9|!R_*nl8`b-uR(`VWe7ETKt^n>G+>Texo+GI4o1)DJ3 z9|KoI-#TRlc5Ry1_woL)8SR# z?UjBKAo}zLBGSWj;FbKg@cPcIntTi|>hIJs?CZ zQs3Z_L88C3%)c68ysR{eokf}7dUdefroWz&>APQYG9Sc(T`K6&6 z*$#_z=kJU$|0&H)t?RS|J+r=)m^OtQp=(~}&GyyT`i;VW8zIdo{KgQ(>orc?mEuKF z+m)ubpULh@?Mk1U76PBss;=;KfTu|mQ+D7vWWz*Gt+QR{jiFF70Gu;|>C~3<#-4DJ<$y+`ywYP5P8kKK(fu)- zDX%+ZvM_2rp`;_>Ow&zoWSuESVXn+&S2$?_1?LqCwE}-?=4>iT^mo6Xg72_By$Rhj zowD4+a?UN#%S%O~|0iIvXcQ)viEg<-^gA!mpb+PBT(Bu;)yP54A8a=Ty7MoHM1P>z zqS3m#cJeLGzcSWe^tTheSPV`Qy{jm!@yyb?h_)7E|65GHmY=5qGWNN4&flF^+(d5$ zxA&Kimt9jxp#|EiJY-~kd^&vt;{vusCu|T=avn1fA&qnD0%cY#;k&m5IBFx9E4jSF~ zp5FF+(f2}i{3i?4Vq|ZNEAa#Ib#bHcU&g;p-WvfZXLDW|a3-nTtSf^Q zJe+!T-%<{9I!B$z;5N&pQ{%g1`Q@SUfjP8p1FY+7jsRZ20kpV9e)p5O8qPHJxrpTr>dmZk30Qy zyVu6cYbq12Z;oY0W2Ri|$6exhjL(re8~l)HTpf#>obkbKQ9suE!2mlGO8W#Ij})0Y zBe$l{v>ZRjiN_ZNPPoW@TvhjObbp#pS4OK_koV{tq>dVar=p`#Ucbci3&|FKaiHa7 zk@RkOpQC}Oz2$h3h{O-MZ0uyr}q&7oP+u zezble&{EVJm@XNP1Luhn5aM3sn^Turt~CnJqx~&TPKj>dxT2CC zUX5(KM)oFGC9aV_vMjw#pa0kFT?*@8dYhncy3(&J`7V)Lyv(93vQ}tONX~qfee;r# zz-hCPX)Nb!0b?S4@GeX6^;zrYDp4W)MV#d=%p(wU8L~(s3YTir3dVXts?F>V-!zL{ zfc#5J`JRohN)VCryHmZX!>N-g=V0%kJz?)~C+!KhVox~H(#1@(6T9bu1swp~sZ`tA z3gYtsNG0)Ii}pvzamN5_(9fY2(ORcgORL*!_L9IGSz6B}tt#iQ8T6)%LY*;l)(XA9 z`+cW=xyqa?kC(^pm}S1ZLf<#dLx;7pcO=zD+spNWAGF!H`H#lg8Z#<~$n;!h`{*`r z%?M6uCDqnHig;-)uVu1UBL`ch$aJl2O*k`sqoZC%-P~bD?dFoLa{s8K^=f>!H@4Rl zYA4s0+Vo8_7Zw)C{gt!A;tQ?9BDvd#EcN~}*-$BYGh^AOW9B)#l&pF09;0w!S-AP! z{3e-=+glrx$UF)=7nq(H%@ui&6Px#UjC4|;H6=o0XR=&4km^&dsjqd|b>e$an^q|@plsQ@n6HY-&?NG9_`oz3#MQ%qwoui z{c8Ek?MC65WyG@2D13bRhnij7sc}KSY7@o5pJaAJTb|7BgpzeA-i!o^`&xE@V#Q-L z%;&hUP5tWx(RL*6D{*;id57dlz5p8HATLg6=HMMUK3J181@F-KaD}=x;gWmOd`M7H zs|+H>j8V-LxDc3=7PM+i#t;lDK`JOW(rrUEy#MkX&SbwCo>h3y!i1vsu!$% zeEDI`9PY~TVJT+{?^N6IRiWMj&2*&sdS0~x3)<35^>?eM=Plv$IcxasoGpBZdP9jK z7v8AmGMiu9)X|fv$ZYJI$o96>CvM#0PTnY=C=z9|NRG9&Hp%NRK6UBA)_;lxCH}M> z`}Zm}+F!{VWv4t;+v8>5%#I^5>q%xuQ)%xuaV?~wDko0N^I;14T+rv!^Y-v+wF=(Y zpT?+a7oVCpg_m+dmjB4#k|%c>QR0o+dlh*?%+qwto89c za=_J?VqO7W3V2WCqrIP<{Y`1MR;aD~ZAaO8P?m z%4`K@yWel&Z0|_6*UiE#zhE>?WGA?mJZTX$$@+$+eU>&&aPBMX%~+qB>P&P>PC1jU z6g*0F;h@rX-WYTyy_xn-POstuDH7VD#yjI(0Xe>f%SU@cNt6|bH(=9?aX1qFThrd zM_bm)^@8n`hjAUG(VC=7qPO)H1Cb+bVe`Jly|4Jwka6f6pWu6BdMk&!jZNysX?&#Z z!THq8N}a1QAB7!GpnV*cco0PB<`VUesjS#XvPv3r0!X+geqCd;)7^Yz~W|6$+~ zz`KkN#vD`TPS3O`<2EvaTLP?Ji;CVS+au*W!=J{PDB)E80gg}dAmf8O=&VcB$e^uM zrrq&seV?#OO$;A0x6a}mO1boCl{Z~I8^D>&YRYPjHmuKa4eM0fUJC1v5pF?=af?S| zPF<;T$vC}Wc}K{iLdKM!F@MM|Dm%{4Gas(qeWZK`@3J97H)8otdXyJERc)Lt5WIfl22 z>xAo`j|FGf#)I(}!DWA(Rb;)(p*W4V<7GfzsxOT^v@DKxL#F;(ab(x%+SUlD*rW$W zyvpe!iL4u%Ia_=J^$uiW_Nqe;S&1WNL&ua|vUk)X&yJ@L#q1~FNjFbFm$_+re27Ib zyIuLPGp5@fxY`16cv+09vqC7r4JeivA+q-l6m+3D~vpfD7 ztQX~A+`D&fXguxRQ+`)qwr8};bZ!KmC+*Pp5kc)64j_X1hJY8`qV{D-s8j9ROF|v0 zckgvw0bLg{3^^LiS;U``L7EbP?tuC`D zSDxba2=555SAUdcC;7K8`{EJY$@?!~tMSN%ufdv5H8{OmVlOX7;pdmBW)!}5S(HDG zL6$Scq=o4Ow!r>NFC=BXmUQxoUe-!$yJ{eteJ|t{USv^K%GCtbB$Jlt5km6Ot^X1W zoaoF5-z!cY7=CYZB~}@ZSGMG?&M6MgtX-XTlpeefK$3~8B)Qr))+uJYzTsF&mn^2v zlrUG`RhZt{{iAo(GkqZQQ?DD7$)Ica_8px2Ddtn7_;QkrMEO@Ej}1jZ`K%IUhN+~VqU--z?Y0Q zi2DyqxbKx{{14`yHUAcKQ_HJ0in^wv;azYZUAAak=ocz&Sjh1WCo!_ha7_Muo&>+I zHp)As@*YtyB=3_V(2H5bdzu)M-9v9{<^~V;(PMsGolD;>(GaIHTRaSUtXKQcgBoAz z^*^*z^M`h0Y~rE&G}3T~x;;bc2h={?Ck-yUNbc;vq7Olx$dEA6Usie`W2O3qglDe{ zF?g_z1Uu9)-ZV)#sz0Z+fJd`hyZ6?1Uaz8~pX4-`Ow#U>AF`~*a@qda#uIKmRTWZ6 zXrFq$W^Lfr+H}A9v7BGCH>?L=_KrwHUUhuPloW4 zc=yO*+!$Hzuxr=C)55ZA_dUoFe2`O}@F$ZNmht8?=p7x6QPmdUQKgccYuXC?->MzH zKpdq0#<_Pg^bkEV5;L_s-=X8)k@Z@+b|}>c@Hdu6SUte<8jHcv*yT z(#Dn+@^q;>;F_lXO5ANYd8`=mjgJ_G8!wwQynErKV!6|+7=~eA@5C+oywAF9V8G;jRW*94=Ra&FYK01EViberNKZN1s8izBV4guEkMHe4><% ziLa@37r14X8j-a(BWu4@6i0g}YY|_JFO4(K2bOT7hUbW*-x(c`ai_yFAK7hz3B%A%tA-qn>j>G}nGT50>QCbm}YlqF61vRIgMLDvqwd8ro`B9@#`yb_aUWv<< zywCI&L5#0S6Y<4ZB}W0{kk+Ey`u$SB{+ ze~Nq3$~jP$i7t?Bw2>}GxAizW2oVp*$O1=fIY*J+>nL)at?!%a{6#TJn-=DAho1T@ zzA3j2^S+`RIE8t~%+vUPiv5&W?*udh>N#Tl8K4FI18AQHd>ils0P+|f)Cu`K=KdV$ z!n$pM-GILZd_Yp+&t!I$f8n>>+QGvYgd?7e-R#Va%^AQ}|wTH^?-RMsh#- z3fWD*Odi4PPW*j@JPO=Lu;zZO7{cgR$tH3G*!l3gi}c{v4Y&bcUo6or@@5NAbM}^i%jf0$PuP;{90p@Sn~9PjQSx-U0AI@dzo?WOGS5H<$iK{$F@CUg7m2 ObiNT*#NDa%2J?UXaq08` literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/generic_boot20_pe2.bin b/bootloaders/stm32duino-bootloader/generic_boot20_pe2.bin new file mode 100644 index 0000000000000000000000000000000000000000..b65e79862683d1cc3e6cefce3882560510578e4f GIT binary patch literal 7132 zcmcgxeQ;aVmB07Br%yYvJ`9!Rd`Nl@$dUt!4NLfFk!2&>dUl-H=?<}>krTQ+vuTkX z+Ev_6^J3Up#ig@}U6^3gErsb0Gwd!{tajolUZtfw1C+LUflPx#r?1_%4qwYNkz*xJ zto>anhP3prPN&fv-}~-8_ndRj*FE=!_=#tM5c93{(?I^{-zp9pUhV&-+Y7>{<@ihS z*j+F$5HHb%;}uf>-7VXNE!K9c6md;Piuv=;TVh1#j}tLc5N%VSPe)saBpEaZYoR!RL-A+63U*0A<|rUn&Wu zIW}&~5dABcyplIoE0a2h{N(V-1D6+4rhLJEm zoIa%6XieNMUn3n(SG4w%u(u}eloj7pnqMHj{9?GbpSa^h-?Xw;@|59_~*K9j}3^qDjTh0{U@eeY#T^_Pw_Z893)hD{jm zi@?>;H)qViu1)g#LEalQLcT9tBL2#fbHz^_ zlKO^@4H11}g?}N$c$sM!I}0syu7u)|9Ch zzg2)|;jba|t%5N`pQY%VLPY=I0{_Cj1!0-R#Oy`*PhBnIp}6$JqDeBv)-j#5I2B{e z880rKDH^18aa+lkR(Y@Lag_&s_7g5;4liBdKu98Ueb@D!LHYV^Q)yB0rJ7RC@GgVl zRQLH}Q!p+{{qnIkHtG(K3$59%^Tpvn+y|U9g5lJ*^TqwaILiTz#qvs*K{!=hvKPBQ zVl(A+M-3)MttSw-#q3GC<<+!3!6?j?x$F(bO`u@ELZMdRPtBf9go*yzO9}W6+tcgN zJ<}=6JuK(k0=;~8f@?TZ4YK;F_*L+k0V+Mny7V!unNy>p-FZ z0@cW-U(FLwIW~w3v9TR_)q@BT`HOVnM5l;_%9u^2VLQvI`XfW$yt1X7UzJiG74s{+GcHI3{tRhsT$qqzK|pH; zT!WYb6^A?SmL2Wm{PHPB%;B}ipFV$S*e*Bc&)S>w%78siR}Z{*iRGfCZgvGL`C;(5972te_o^$Nb0g5ChlWEqYPXNBSuqHg4p`OD0oic8O< z{Sc=kI}?jb@vIGY;9|Tq7bn@v^T_AqqJiW(HAC6HJ*MfVw|%|@tSw;E-qbI5pF&=zeQ%_*4D;2GK|7`_>qZ~k#@`1xHzrv)_Kl1RFUKA-Rf6yj(;`w z4-)h7U&FWGS*g$->evqpCSb4P(l0RftCcUe7ndGiK`eWUOCMeSk!BV5Xq?}xT10W^ zwbUTADaZjQm!REiN z8G_Yn3$k8sk_OG{8>xzEUi@etl?m2N;teuLT3P};ji zTn}le%866+e2_vu2lV;ayfwI1t%5i9Co!s8#Yg82!R4F~4Ngg!u|PJDDG{bF>=Y%x_q{u~?&$E6H*lTgS4OLdb#=CX2_z zy!@I`%xf*89_FXg?b(NQ8$V`bt%v841Fpst^9t}1z{-5_d!!4llsd?j7^N@tivpB`w<-HS-6?<9?Zx0h9D`~b5b|)#_1xoXR#N)o> zx@u0qT?P5<%6h&uUjv$K9f!F!(&y?|XDcw<{ca0qc}udqVidCcLa}KoJ;k-;NsFLK z=2uPaS=uzkIj^iYVtpdh8S9knaw=UZxRmh15vA>XamXHbr`kI?y^8ZCNMN@b?TmK$ zDC}?&?VEt@sAq2im@}rBNiySP z!C5-YYJ6whgnVm{munT~>%Rs5KHw6-+l&szY#C#xYetlD(-_4K09LO>weFFvq4Is; zPvcCLa4P=*$0NCr@xdK*HpFUV&{isw&SaP_?_l~V^4S|Y9`r@ctIb9&34a2i%3lEp?%FJGM$RVq7#B6BGSS4#m zE%NMS@@T~R##_nenI}^>%}frn2xd1Y4|c|t>K|sqBg}qiw`SJH)^<8%Q63+39e5&n zq)n73M@FU-Gkpj4%=|L>`5AV9KZEt6?2oz+%neT_-TTXL2F&)1R+-L?z;h*S`avS7 zeIq_ZP~R}{{M*#N6bW>yeFsROLv7c(X;`oOHlK)mf^CD9wj= zJR7;`B&l!AO^rPKBCv3BA8&OSMY-}6uZMVBaHIO;G&{+^ci9sS;lAB}`C5%fE_@Nz zw5$G^wGw+(!5!l=)rw2sxGc(_#30L=V%)@Z0$X7JrPq(LUQ0UpSTF0P^<6cP&3XXx z3eT{pD&=Z|YLZDy^bjHW@b-U;_)d1FgdY^950AVvy&9_w$1R(3SLYNPXVk9FI!X`j z{*YwqDoL)kjXA??*EbR=>5|3NnG)ven+el9yMOeKxn>The&TkbIx@?wA}a64oT-qA zr>u*P%NDG6jhOvL6}5OCycMHl!|C|Kf`w<*EU04djQ?s**q?cP+v8HB{CL-R+KJrm zmVYKm3F;et1qngbmN7?n#osfa->I4|2Du zmIh8OEsu>!p)QJn6hXm-HS?tp0fOk=ygqJL-QzImJOYYn}-{4dy5o4xYvh+^I zti}8N>dhL%%d7n($BYZO-+!sN4sri}3HO~6jo)ML3FH4_F0-;$qo`{t8r}xyu@#fX z1%9E@hJ_s8@CHWK6m8Q#pC|s8)JA!?RNf=%h4{Tv2zoJ!cqKE24L7s;Ld zSM(vMQz;T8`g2MTWUN#_7jqqOAO?@L5r2mo#Cs(PhV>_v7Vv0RYY*Jo&g)fl?Bkr~ zkV(>6@_f*USyPTAS=Qel6$KtPLB%m%S0vfLom$`O);Q z)bz}%RLY$;b;DKs@5775?b89g67C$Gz>SgR4y$%8JS`|Y2Jc3W;QgFxhd&v#pp5sF zA@|r=gsK)Fk1Cbq95ZIv|5k0{0lHa+M!e*z~5LN zVf6sZYb*xGB5O}l`6yx-R8JDGK^tFQ$kXL&pJRr4D{;5s!}rt3k#Z&2tUfd78+&g0 z>FIwRdmOp?+Gq&77ROA{sZus3o~G8l;Fel$MAqJlto{9hIMzE|i}+%EX_Rq3yo?() zJVzXRdTcVnoes*pkJDE`%G^k#Q3@-5ub@vo<#2H!Fktnl&oP@-f$r7Zn4H` zlRnQ&VdPv_JT%Mn+j$QO+cM5hQFf1T0h$vKBZ!YnBBXF?#(+)jOBw=}lE)j>W69#u z>&4P5?gPi#SmtD>wpsKcGRn8|pWvRfdJdFjq6=gPZKR9g9X+-VLd1y(S>T8zXDiTq zYz3~f^<6`qw;+aT)51LN(3wx;8*)1^?Se7IM8;Y ztwvje)`m8YRza(wMZH8iVK3G?D8XtHetrW_C`UOSU+f*)fpS(`Wa#r(Q z7)g+Qm|tC{@V#Uw$TX2gav%8$86;mO4`Ox?{ys<^0`7xYb01a=WAv+J3%LR8Jow#3 zdhqK8+<>pom*|#pJy^$R^pNI~fQ;fp_}<3H%-et%pGIKCImLXY>D49HWqT0DMq9 hLdqoBT2ju`+!Q40$o^R8e6zaS9V`*rjCHVTRoy7OS0jidQLVXMs}COUMu$x;)zMI^kpcMC3?` z6TdxIiXoK#>U1`m<9pw^=bm%!`MMuLe&op`#NLFz4d{>lEz%J5V*fAQUSPhh$6rdu zwi261UZgQcs)YVKBAb|XmUfE}c8-Vj!ueOtF{IH)5Em{nx0nQiyYMQ~Zoe3B+favC zShD9$sshzC^615dY`l&9X#bO0%7Z+lj}R@mrHK*8BqbPpE-~K50Ie0ELRK;<%-NhW4iG$`}n$ zqgipCXp^oH_NJ>^`w{Q06CIN5n@H1n)JxCtz5U1~B5nP`Qo$2-O9x6JE7G1^@I;Ze zV!wf#>%@ytZ_d>S)%I^SmUNU5sv_v5b}Hk-$c(18M|PJx};@MdxFw-Q{F(G zg0!QT4o^xe7{BAx$7jHL29w>4%mSmD1quKG_+V9@=z)PPqX*kO(GAm-XTvm+W3EE% zI)J@{s;%=o4KG#GVOLkU7P4;Lna>ti5}LSd;Mh3HXH2{t{?a z=(8CXsND%#+f93eM$j*Q3Hhtb-eEy9J6&1h`b=GCwP%%tw8!TCJYSG+TqR!9UhPFb zq)lBw96o?2UYkR^spEJ8Hy39sv{Hq3)he*)L-Q8ljkHs=2uIJEJdc+e00PJ)^bH*x zLfT6U^x+VZ#bO>-#*?`D9Q12|wK0NA8cT<@YRV;20$q*+9&Al)%n04*=ZEVg3wWfv za9fzfPkAh}qSNGeW<7B(VF)&Xt!a%mT9#hx)rdY!4z9YY!Y$E#+XCYi>Gyi zuuQa;V`)+Lq8%4y;FrIaQjzfP6$uE%GpoB+cLt@^8z<77>`OK$9sE{<;bixDy*Vgy zLcesdjbL5;7}J{VIQfcxK)_*!8W`_R~T+6~_Bg6u$AD@glvo(0-3 z=JAb&HGlXGYWza60rdwZcCx0OQI|kpDLE&rpuOk95+aX72TbjY@;Kn|zy++LRUgkH zPbD{y6LMn{)Kw2;2uEMU`Qv#^ZO9^@13$~-0a8mT!6_X*CnFMLY%S*3oYmT%FL_?5 zjlP}7COv&~RF3YAu88Wz|I+_$^2X>jlPHV7J3q@uJEA>+J)wUScXJfqsu$nXf1jS6 zoj#-eXo;}2!zG0^40%xngQYF4t79us}ORMnDkTppBK{5zl7L?o+7Nu%f3d9*U8I%a=r zES(A)a;;x>apPe+hw9BLu16|WPx2TWzM|(dTAbUc2oxsN_gfge4*2L+^v2zr6 zEYDEPMe56%`j7ZM2|7{D*G8c3;kQsd)_qU%DW29Y(R5yn&~pP3ut)EzPbuu zM<=jvtC`kT($q!z932anydhGP5v&b;f>e{xt?5n2O0wrz=?MVY3$2&&MM_#@*_J?K zh5bbKF;N%Po0FGGt<{UqL;E|}LCL`wj7zT__vTGR6D|I6FSV1SkqZ(j+=ErGtpsE@lSPIp4ndB0e#IBLP zFwMV@pa0kN?K0_KdLKdGaHU^gj$I^0T*RX!vle+_(46>)eA5CGgWV>dY^v0225=m{ z_jZ&2%`Cg2hLaI}5%%&3i3rHKB$`7ZnTofmMSUeBxRZN=H)J8|Ao39LdY0gq#1Kb$ z9r51yf%u8IZK!w160>wTL`%#eTVgh7@m#XS2CJum3Ty!2h{xNOS0RrR097N;wb1?o zYTQwPWzf$-%R$R#mI_PT>vkdETWQ=tiL63->xNu$y;!eLpJBo7AH8nVF4q`y6?_GE zYnH_BB7e^m4K{R3uF-fKZm*mdyuh2_jemqEbBu6u2u;l-x286`>PBIgmg8;xDae=B z%3PvrE!1FE2u-;qHfBrqrBW`!-PmD-vzuLFrT&z)^=f*uHnP?@oSp0&-H96{D#+x~ z-PKuU?uAxn4sG#3mHKo6t*RDW$+7g)VdIQN5bMs~p%*VKFgKo?T_+K|rL{?f$|I9~ zf!K-gT+|0@V#}V6(N64P;~ZG*beanK;(ZDmf2_kSwI{GYpuCwxex&_U9%(l}LW#Jc zTcau8P*sjevY$jDx@Q;s=2Hc;N@_dhwYB$YqaS z{POY}s)gIGQhu*u=D4A^lY?L_XL2wmr>(LpDS*a(k!`@S>Jc2Ib5zi*{B;be+hTW> zrM$baO>l}Y01s}6<|b65|JEGsuge+yx2kloO4$^%OFaoXz$kE58G;r0wy~+Te zo(?ua`Dumbw#TdDWc*Rp5Uf=qQ1yBfILIm|l2wy5_vI{{USRH{3-_zWU{{U~3OPe? zyV4F{Rmys>Oh&qOe;2I^D-0<4Ej-F&y za!uDnx;N4gTf5OAu9c3LkUUvJN84JPrIi<-ymW8tKZX4QeaZsscgc0?UrB2un>6h1 zaglH0$I&o*g80!;Ub~rF4%%Ra;wEP4AO`*HV9%##Ey1Nq4Mbyq0`9s0{ zrjg0gdA)feJwZhZD8i@$`7X$Cdd;m>1#wb9JwDhad<7LSJi%xl z$|t&$r;OA|PO3ASPWr%ZHDEUmZX*Mi?5Yb+n?8vz+mhf0FS4qW`S)+&em&1gf#lcz zQW)@PLGFE;@y19G^*Z4GxDF^5J^xPG=Tv$)gRka}M3zepjQOOKNFBm_ zooE;E&AlaG=wMsWxO;BbtKJ0YIQ-+U=$#V2iGsV0S?Gn`_+Z<;v+?Q0bFNBa6#Q@; z+V=rA!I}3405)TanFJPg7T8ON$vwa!nxNj=#L8KP#QN`n{(hiE03Q)PfU{LlPTS0^0NT5UJ8M2U^; zH@0SBABx*GzQ&cP&H7+ZCTGf86*sQTQH?7U^DYeDA461L4pVbS!ZuB=u}iRff#Bxzp$=26J;))3d^gKg@ztu8yG1r#$Eh!+UJ1in#dXYe&xiflzEnr|p$?pxqe-Jnyyn;YGcTHYE0E@t7LQI~wGghDHZr_Yog zuiU4Jzv`ieEanmMp*3R>EFEsBv*U^VVatgR6D?EEC2yD-A0`=0ZdV>y8C5?25FhR% z{)2WyW@&6`r(NQtu|emqXA}F{IB9%jWHLV0w`=>LDhi^EJ8k%wwBagoZRIqa&X|)?Usrn?Xg=lMVrSgk3 z*~x!;*%J-HoxK0@wJHs@@HOzJP4Q1H70AnrUVQH|R`udzmpSR{93(Z96HUY>;0suP z`Gurn*RoB%vdeN|c~>3iX4wV$GKWZ3m1{ME(4=rciKwz3Hd7@aPsJ7;m(4KWIl}sl3Y^6YAX_#HR@fa6=gl-Z%>q|g zJCVOw6Lw~v+4zjmBt6qLmUcjGcS%91Zp7SBlN(F-T*L_g3G3)FKB~+lwg@;tDa04|13%Jp-*>M{mwWy9ZCAa4LBLJi zcbAG9Z&kJ?QNw`JC;2p;O3$I&`mfl7Q6`coh_qMa9?-E``CiPq%MLlXuMPP-lpwrm zq9Ct5Cr3a=i{jpOQ#-BI;M7+&%`TyYqa25%s*zf@C%opkLyOl06cpI4tXA1ZT5%`( zjgREKs-P0aDjU4yM9Ok7H>+ z(~8*30HsW@t5M=cDks4f<~}r;(GqgX8xHWUh(*NB+AJ;bP;;GPXqwo!^G?KDGmcJ9a*a>{oMRwI zAU`f~poK#<2CPb7!VoZ*Bi^VSOz6dT^zuvZeFxh}7|Bg$!hHc#40JH*7@$Luj?wI;b%aT2GI}D zgD|=s{yvBv0@?>*&fPF$7_bkcb?AB!=Yikts0V)C0N2CU_se`Mv>up8c=Vu_vVw%; zL-4&5_{ZV*AnPZ!>+sR(Gm#@D zPOSZ1DTcK4uTE#9IllMZd+s^sp09iE4e=At0wLx*=qG{v!M_z8HoVgRbGMg;Ps;J< z;<2Y-ULang3nwb1zWbs(g)P=Ls}ymKM~b;iFInP5=T8tZQV{MkNo?%$OGLltO0so( z4KZWOp4YfCRPw}A%rDO-TiK8IKQ+sFh==tF;iX!6V%Ry!Nd})gk!%%!YXg*V%YUgP zl;+sDZHnlJuX-hKyjCW44*9vE(+51U-l28z^-^`BM)u}DX!hz!+MFYUhch*$5e*|@ zdN^}Px6zt}UA{>=oT+H(BVlh%!YM1hi44C$dicd~Pakn7hjb~^+%GObdj^xkLM)P?StJfX06y%>6Fb&_@5u31Pi)%^=h-&H z_^hfR=B1(VpzT!u^$9ZDLWzg<-$9?rVqp4AnS#POp`E^eic&p$f@zb{_!?}& zaDM64sxgI1Z~RCmvJ91<8IghjXu6)m0r!b5?1NtMU&@=LOmcr zOj7UQ@j;^h>oWgxi19MhFm@JZe)9q3tH<61$t{m%B6=m~PH+-m@`EsR&2%hCU6+=I zYGf-c(v`bA!u+Q+H?^+Ax>$9e* zYVoTDcozN|LSHQyL-gAeeN%|&^a}s-0|jA;#e{kV{!>?rcqrz-S2Rhc_!_2@s8cb< zorz-pe9<7SN!Uuhw8DEuk1IUrw?F1m=8(Ny=0HetYGdcdj-b48$3#X{eCejNGrZei zINNop*c42NQlEUhm5sW?V?xVp=cVFMAmIbfdBJdY$ED)_V1ng<#$tJ;%OIRB=IzC< z57|t4-BE*yQR@yQY;k*vZh1XpPcjN~WiI=I2@@#TuT!WM__H$?l3}9%{JTl`4%^ck z&^^;B%RMaT+z!2bt3dQ002T|y{KPWREtiSje3|-%7?X_Cy+PcO}fW9_kSjGig}{@9%{ zy1kfxt@xYF{QS%X{qI*vtJ~djM5l<0%D7FYVLQvO`jdm+oU)~yYn4(?6?4nHGa*O> zz71(?T$qqzK|pH;+=Tc76^A?FmK|+l{L)!R+~Kt+zIo~DkX>%hU9dOjlzw}H%FVhm zNWsIdhYv1gF{g9Xjtp)wT|GNK5XmhMjrY%?CEOg-0ORA~!dB3?HTm=^E~1;cXu;M1 z%QU(ZXA1geUoOc-a*E>=`bnz! zA#R?E%C-b2k6bjTkGHZsY5pzI%o1eLPj=7szp$8X0=1kn#A4g_cW&8N>R*@f5fa`u zRVB52*x{WUSQ{&^sf;_mI+huY7_u!Nc8cQ>K1=E>8m%K5SI1%}TYP^&)KB)j-_Op4 z(q2KwC55KW%Ppz%(Nh;W@zjFA30JretLokkA4>75%5ZfQxsSe1>S)pTRCqMZ>sNVx zAra*l`=e(Hq-Vo>9QB2*(NhH?@+s=uZQ=FxJa>h^$j2iEZ;0h(g1wPn63rxa>BYuV z1;ul!@FYO-qV)>CXhCl%=@K|LoGFS=h`Et-&Rk>p7IBC6mpDb)*;&jdW^J$$7w4t9 z1ev`ykGxN=7#I($WSer!9DK$Sx69QryH2Yvt49(MjQC`SPU(_blb{|OWMVWb0k=D2P4aI|OK;Mz|9j>hh4rt#NzgZ3@7I<5m&j2!vnY$M6uxHR3x3)VI*0@u##_ee7V!GLm-SfbL z4gk(%vUP0*@wfn_l6Y=L`+elOlYlkoXVHpi%~PwT)onEgi0}0bt>+SEmGjmNx|79x zU2*1u8G4`lu3f)YWz3ex%VXPTneVR9_e}H9VXf>QNw(6qa?RicZ8mQFgK@UTi0UCU zJ(u1+y31WNf|FWFw)Tx8URug)nXJ{w!)7ToT`Qa8_H^&)sGCtYwi{8uIb^fkH)?CS z5ufdi?KO$|$+4q0b(_oug$43p<*cyye2cJ1?)4y3y|+v@R7&pjSmx=7an33wYTmuC zn7_O%Y`r+YMP}pHmc|6KkHXFdrYA;oMIPkE=0oix9n@n^iqP2k3>WkzdsTDt%k37q zEk*qS^|dtd6aBxH;Wo<`xdg56(s|A|Sdr!G-Rk2w?;nrWNeB%EkWYm z=pIn4_#zGRSuSW%|0+(jJ@E%hTz;~=M{*^e2MuwM7bi5Me|whq*JKU;?HV7fPbR5Ju_)dbM#Za1emKdc3bj2hu zemIW`25Y~x{D@`@c4qmYlr;qRs%`kHP;ZB3+EaWzubP1cZE1%3d)0IErr@QlIrwJQ z65OudTB67WH>uh5wpX^acc&}Tn>r^lJ<>?;)yUX|IjGrw5X_u`H4*1>=U|; zA2qVp!}G`iH)4u81$ar|J&_Cdd~)_zrP*4cw(<|>`UK-yPHwyOkNchBD5!j5-gv`2 zBw_O`PI1S1|0HC^o)*J9!-U96hV6shT}pR`(!3z?xEHx@m=kcPK|Z^_o-fVUfF@hV zVQ!W5m-Q>N6`1XMFUncok}R(og;{=~*ff!u;G#Ja6*S5Gx~XlJHcfEO>+6kJpPcH5 zcSv?Qov9RDN_gRj(t4>lXivD)Z5+L2n{%B>h(%nj00TPY#!K z$;Jk*m^GL1pT9Tu<0VlJq(8QoD!`&SrRQnE8)rSzmb_So&r zF~TpvR*NU1Yvp>ua@NJT4$^Q1-`W%9T7~)g zZ-D;@a0%dTMh9cIDPxCgT9k1k8Np2fR?~$#c^1b1Y<4lxrDt`~hBe{_A!5wtg z#cO2HRw`4@ShapoSf$2?j~ZKMaSkONdbrA+s-E@XOlEauwMHA(XSs%Ts^tKM^~VUe zphURE6A`7UP@V zEkvv3BQbIGmSJz#3)8}_4%O3cP0@f=U5`q3J@PQu(oLL+knc{VBDqnsiFYZcTSV;-T+6k`=x&vGC}V{LdHkeBL9BM&c&qg{}xuT~t{H@dbZ z1S%HkvmI`C}jNUJE14-Zc!r+W|Voqi|v znQ3;{vB#>nglx3 z-UB4iuDTE0(&^I`@+1)!lxDhkqS+#EN;zPm>RGCXD9wd;eLHg7X;R;qofv-N6=31y zKGEVZigM*yUJvoM;Cl7@8FrF?)|I#Z-S+6CXe59AP(%Q}%$YwnNd4(5PRF!fyK{d&wC3=XE zTzKcdMSQ0_(!zHNlZS`jom`1khU1n^*&B0;jWcRDW*wy)Zv>EJ;s!}>w2gU+*{*ju zQqm=hsq-bwmA4h9cXt2i8Fft`PXEa5M0I4ASw&Rdk9n#>BA&7?+OJu#-ZgCY8&%Ze zIq+7Dk`1Th%L^8sRkNUqy)*tRIbr|QGdrG<8s%p?$1+ajcDEdqYlbcLRoSsj_x0#H z8L_8olDks7lSk9L75m|5m9fKf3Lb>Nvb4uTBh;;O*Iq^L&F-9Y>6rvZ>O08nYJf_p4hqhL=uqBPGz=u1oT+1 z_Th&#zSQe`c(3LS3}9^H;RiI*uwC7qCiVSluk6!{TxOBn-FICdf;y2VL88B?bVJ5U z^)KVD0}jOCkyhewSA%%hB*C!$oDv0(X0`Uf9c{c`MMpo%X%3mBoFzYGS&ikgLy=9V zoqDn=ppw8rb)#l(;MLkxpYe-XuV!sn55DXzkp|rA`0%TfyVH}?D^e+U+thV8@P805 z8+T0x@S1q<$T8d)S?;iEH^b9{vSZ*rwQZT7e5xO-&1R<0dN^#S~i|G?kAc zhC%f-@fx(TrG*?_s`fdiskah$8%`c8ggoOT#r)=L1`TgtIH_3fbSuUDlgr%8Nt{6c zG%rZc0mkQ9u4F#F!H)M&8*c4r3sb?)23Z^~SAxyz3j@B<7bm|t`7fi-AXncU3t`vd zs3|s4%ErXg)UprU(o2oV+S`z|zf}-NdnRiUUyLt}G0umVaHEFjh@;;e9glG5f->*p zwA#s_jQ8oGN-ZE8z4jrzP|3FVVcasqKv^cbKz7kax)|QoZEGh)JQg7f9I<3=1$w`&z;(2|XQ=ZQ#4v4I zn8zJ@>XZ0}>@LiE3QpkU=WR1jOi228WDEf!dJ`MN=;Cle%F+8dh z@@dTdDbR^^y8r`#zX5y>@F-vqupjUR0HuUnVEGb!8Y%HO&~~7$Mq7i{hBkp#L93xf zy+k@-FV;FJ!D!r}?7iB8L4mgj7H$)vlqiiBMtzxb0y>m+4CrvIW3+hr zA|YlQwecOKgLL8)4&m2CKALb~;n}zp_l>d&s>Y z(?lA{gX9ZjfP9`jirKyR`zUz~xQ}AZgIFR#Zj6vRh@ImniDN|%yNjY0fe?$K- Uyc)0b`T#oL1S{h1RCnXV@LESntHsdYzK)6k6KqC1e^LXkR~e9X>jJCUT_2 ziM78g#gLZ%)#)^v<9pw|=bm%!`MT%c5I^xO5MsWaeiFzZ{9D0c!z=wicY8_rq#S=P z9=i+X1>z;TaJ)k5yEnQ+*lcaHN)gw1q?o(-k|j=b{x}gM1>sJU#KtbYMD)8aCtJ7G z5Hq&yd5tSWB~LuX{PJwFmHl}Cle3(McvznhUaFNRhMkj~WbnBY$yNclHb5D-{Fh2X zX^xHCrigy%idXW+Yh_aBke?emwciu#9aH%raSzV~;!TBVhs%Ld5enzL}g`ryPj2vtA#J0|Go~<*C z&#DSy-U3*(67xF%+D`RfA1AXdlz3SG9rT$j2By!HDJYy3+UffzDb=&bnKl`XufZk^ z_Xoh$&^J$+fnA&8^#i;&XoP%2SBSr|WF0d&n`g>D7!YVU`WMaoaDy5 z5tz1_pFnmdgAv~1P8j3FV{CUNY>-duwkk|QGRx*$0Oryj7@hz;TcW(XkLQbdebzKp zEk0F%XW_3Q^i;tZqTiU%Dyn4DT`+ z&U9TYHU$%+)F&TnWuxx!n9wrYd9gSYNcezrPB5I=ezCYOm|!`eu~=T|G6-jid3&+z zLpD=hcf?>~)Vc!+Til+an_th^lZ?V#nakc_!UPKTYZPh){>;qzWSHnb|85e#!}jzB zbkB6kau3Tnw?Qx8DiHk#fW<;FKe0@7%O#>WU!r~?#$`EwQ`W4J!&P2?o59zWdtM~^ z=L%7c*44FjCTOeBKV5K5R-k?G(khLL^qkqy6?C!TU_AacWG2lA>15hC)J>B6Z6%59w`J|}%PO#4|bl&sWEOxIj(C%pEZ$b||(kR?Ppr_@9$oVmC~ZS^DXv`EaZ~){W8A#or&h zBSyCs^RE?ulbN5NIj{f2Drt4QTaM@yaZwq!$uw+d`Bi^n(3?{>mvgOB%Bf;*nRg}x ziNLoZjg1QvQY;8)&43#aU!dY}C)~25ZH!+!&AIdT=A6=RPf)p8 zR|Y9~*!A#%r7Y%jj@psIEv74H#s?y~<)QKZIkbeEV;W$5JY3ic`jt&SJ-H{MlReQw zWkZ*)MBItfh1@2LMk2b>eG+}9Cjojg0ADrnZ?5bO83**s^mv(XbA?~V`EYOK-e!!E zMG1~-cIc12&w(alTvai&?CgZ~- zymhKdYWc9kJ2$X4R$fyXcRV$g8I2gSEgyD@;}Jef>MZa@qH%RBcCy9y2Soiu&-?xC zTqx}obX-zs>YUt?Iu|{8ffG+I2%K=4`>?9+?eM`ApQ;R3N0IyJ>!gkreNTo*!@Pcl z=NA%Dez8A#xr*cv@qAR?clzFihxU(a)w`3rnJQt*aYUMAQZ`6bazQkPzA zJXugYCksyi6fat@;ENXY2Bu4fW5b!E_=K1nIp_3MmTwVvXn%=Ql%1W$d}7uH8*y=7 znoE$`tMjk{xoluOtdecYEpzZ0OWZD3$Lu<-x}+XXL@?r$9Xh2;YE6QAY>jgW zNY4C~ee;qK$BDC$ZY<|)0b?S4@NSd;wORAlDp4W)Wul*mGLJyqrO6@*DO|Eu%NN%R zQf>NR@YY%61LR;*%K2=3Rh)>N*O}}|9!;K3+6Q|Et#NC+GhvN86>Hp%mM*57?btmJ zEa(8>OeR~`RuGR1Kq`snMzr5Yo;v|pgMJpRh}Jx{T3X#!v!D20&(L}D~sGl6$Yg4z%Tu@jb4^++yi_fm>=(;lXe;KQSw<{-iun((zN%TpJsRitsuock{9$?k+H$1_;!4J*xYH6O z?v3sS#fmS{AfM%e7WJ>=MB5#|zr^Jy%ey64;(5>z2YGQqGy1n>d4EmT;NPb4!3uRp z+#z?T_<*3IUKvD;6-PBg;1*2)o$hvXiu3a-FYZZJB-#9zHAApkjUwyyq-fBro=#Ux z^5Tc{s9>=6%gYaI#$acb4@y}>aF5!CuL|`xXr?{I*Ym0wSkRVcsJ}-&J8ueJ%$kF5 zW-Y;O>MbRTTyUeBO>cc=b9;BXBE7M5BGVJCk8j%UOl*=*6^JrfASYT|n&kDDpS<#5 z%fCeY5`Wf;{kxSK?XTpGvRxjk?RK+oX2+3;`82bmp|p34xE9h-l@llC`5=XS4(Rjg zd24XBS_N2O0aIQ}$*7scN*lgYwP*ad<|%_ zbsXkaNuQ}-nXSNV*LzXU@|I+I%_z+B3&p01%mf$Bk*J_a=GRSav$Sb~b6#6-#QNk^ zN4!I_%jry|;8Ma1hn3cg#X)<*oo?&k^eWDmB!S&(tRvRxlVjVtT(~=+_+(BGagAtk zszz|4bMTWK>Gt82@Z~g&gxQGh;e3hO^jRZ!MwDxerZYb1tqOV*aUEksc@Rkeh+AV)-{pHn;KVYqrO3 zXO0qn0k&E^9$hQf3zjo3#&wW}YZ4BL-qBO=g^slbjRzL@zvN9p#-Xo%gzu8+?Hukm z7O4lP@v+ti=aVxlwXVi|6m~d;_D#SJ)V;R?%u}YgNiySP!C5-Q?gGw)3HjEZDAy{? z*M9^2hk;7~Z!lCl1HvjbK77R3GK+I4>CnSf?o{=x4`(u~E2}lyus+K*tWz!fDXc$6 zxCJG`Egp~9b*0K7{2{Zb?7le9e7JVtSS#0No3X{p@>;PcCbJmd z_--LuEgz1Fqc;tEyIz6<@HJf;+V!BDx zzBT${1n(6$2{(N`;-6g`^T%EQmxD1@k@YMGVl>u<*8zE{zBKaCvN+lWnfhwQk-ej9 zTSA~>kv=!#R?ZekXx-4v`NHFT5N*pm8+NP|MwY?U3c06??VmiFsohb+ot1FrqgrVh7?^7!!ZWOBN9|DNf0 zQlFh>_xy8MFUtOyd;i?fc*?!6{Ix)o@yLa*z?yc|KfPLFuP?>?Pp?v~ znE%REQT{jvSt)<^7naDkS15>!SUt1?yeIX1`HI zEuI5!#VFZuI=;MM;aN2cs@OZ@zmgO7O+B;y8L3fzrgJRgL~eJ>LAhqwQeTxF%XD9h zt`iY^swTNJwJUify-TqldR7@bG^ZfKhUU`urAVM(b;G&`xI0u!1E&`AFD|!ehK4Hj z=q1iW0(8zSc4~9LyR44GOY-W(FbUq4y)e%=IMs2)m?@hoy{9p2@qWL$MPqn5wQu;C zaRKiDpD(UK+<#EQeYZs8|1kHg@zfE`)_aK^(s30QBHHnB;_pmA*gm83Q)8H)RM|N*-@ikEM$FH;Sd#-iMC0vdqa& zZL{b@WR!2^Kf*m}L>I_T+DI3}JG*V|gosBYWPu}=tgS%rvlY0GmiG*G-hvpW zO$+n5Lr;AY-;mvjc~8L!ocz3P=4t$2#X(BUcLACK^&Bz(7!XDO5Zb2!-vE3MfINmr zbwWOkxjzLuv2G_|0Pwef&jTI-3d5DSQvP z2V|N^BYA*)kqnS8kVi1P2Y(+Sj{^4*ta$({hA{dV*-UN$I}d($lWzRF0Jq@lvn9G^ zTo2YU8r`J1Bp{>sD8BcBeiFY&KRmx#XpYO1Z^ zAy#bJ_ZnA$YM%Iv;!-Zv#(sS8=^W=HKGr9Mm+Iw-5%(k~nF8Kqs!af`15lx@{H2mm z9%FdN6wyC@%`f>A^)gxKlAj+wz26t_8(x!GE7d0JWPjnkX1|`I%>^=aC|g&?Xuw42 zq3l83LFvo9-eDRqJj;J?Db^1M$W3rya9=AV4q68pBi0^HDGdZ_Rxg=BEE3b;X(wu&P z^M~qGqJRC`%aigNA?QB$>kH7H$>OpRn;BT~= z8*4hSrb!f2cF;LyKBDTMwj{bQ|6!j~u8O*o<^U&oF>VH>W9H|OoylN^M|hLw1o4?W zJV^)S(|YU*laS=tcq_n)Jy@n{#jlj$9r$aCe5GWL&~H=pEfJz$zrw%#a7kEXe*M#{ z@PT#p@M)u{8WzctSjG0-;#SNFchV@HH%!v1q@(N)%eX(nVF|0RwRA|k0T{eb8$pC213#PN% zE*ty8NfyU3qcYQD63!Y$ztQ~x8>!4YVzMx9J)xu{;Y`y_uV{_rc(_`d1@_1Thja%H=qRipol zl4sJ6cF&b+jmSXy*e`?5I zP&QR^rBcp`VquAQCk2VXzafo-ixOg#1hiJbEr=a(ae0$o+0}lOUp(tdxctuKH!ois zcFN6#3(n?(GT=;7xmj0+DAsW5(F2QljOiS8A_Lnj*UpX)#tKWr;{&s32{+3$z}E3` zQ5*ON^cpUvTOnz;t_;s6drLxNK-YnDa4qOF9kD!O0!f->w)3JJ$Q zLzZ&?hJ25a=$5G(sr7?S|LoxEcx6s?!u6G-*|C@@-}*t9I3DBkWStE@NHlI8iV0>B<@EAC!N(&-rq0W)>GLhGUgE@8=LJr<%6(9??(OKoG@q`H*0vz0(bvg3 zY6PB+jzxL>8qd!sTlj^6mNO;Nd)qr44MgoNua=0&r)glPjn~)m+*SS(pNN(G5qMpW zU~lAqh-Q(xb))IklHz-{^b|nxqxB1cmXco9C8KdnStKPO#J$Khzr4=!C;+D)JM)a< z?wkX*;S#(wn^RNLw*;`0DVHSyhw_D9HVrvR(a&!ZL5TBlY@E8FY#lfdg)+Q22P zD(9~o@}`X9?Z(UnEA*~?->F}(G3P7z3T|tT`Ry`)-!u;$*2~_}R2yxtob`V2W_a_T z;Mp8APW{OAY-Z=!4sYEkPG2R})<1?=X|2p(bmNnc?lNO-W=Og`EdXPmJfXJjjR52RlYPsn41cp|SH>E*wbp zsn*n&I&5-#ng&DaYZ(&6X`zg?+rGdhX+yWpbAh3%JlEh=KaVr~^ND|wn1BBk{(W(& zN_(PXA1s)Hy^P{p!2NpZv+YLl*(JoW&nOnI|4_4wyEQK8S8bv=^pngWwB^YRCX}p0 z@n$4Q+}E-T9IL)S!+f3#+tj~L5N%iD;qod!U)m*kk}rUVIK+z+nmM>N&j;)Brr=hM z4_B$%6E3+Y&4&aPHOP=rOd4aFDRhS>fKN|{HO&Qil^1uXs#0wHi<&81tF|EH^`>dq zs-DSIP4eOgbErx%_lrx9Y36WOo)1fTQ+T)9j;|{9ZfK?>%{TC>6;#lcW@>mqJvV0w zU(Q>@Z{}^`t?C_Rj$C+yn$K)`Wm88_rYf_cYa-j*(vaA=&7IsRpDqz)vP4d`wQiQz zUVZx7qpklI3rhSsJNEBY>a@R=H^@$TxW32BzL_0IW7adwj;8Y7ZQ^Q3Lsd?knB&6~ z^0}bTXXfnTm1+&Vu|Ey0Y8RiLGlduPLYN1oIE1Jx&#pn$}+Lz$j;eXd^5jc@y23}N}e=gzC4d*FNKhKB}x`fMtS)sX0f2Ph&DLn9p)@`{jS#=Z?03 z%g4seH;qFQHqPP{cawKdL00T(A-X+Eh^%DUKG>b3TGJI!`U53kyj>s-rHLWM2@$G%?B3tzvNFt#^Eo2Nbiy9 zJsj>VHmMgU@$t4t=TbAv^{vKy6m~d`_D#TcLVR}utW%bRMY7^#!C5-Y>VJ3Af_&>t zR_YYy>%Rm2W1uB~w;3Pc98=~_&$KAxHZqFa0jyq+O5P{iBbB?tpQo89(^UTvjZg9* z<70L3S(B)f!CR?LyW_R`0bzxj7&&5Y&EXtMx%6m_H(i?x;7n%qWUWRU*XFs#HL7ht zh4qgTZeEFT3nybvU8!-&IK5zbN64Z=#+0Bjf5vbBOmT zmfJ<`TVpTA@Xm0%aQoL{!QAS2Fn$879E`JStam9Cr}1{&>gC0TGG_0RIMxlB`s>Bf zJ!7j|Bj93_K0WGH&Xq`H&G5{H(vy|DFtgV>zy(^$AjMY0}V?pBQ=a z6;R>iKH2Iri*of@UXSpO@LKgpS$2|t%!Ckxm`mGv|T=)vC=~RQ$D<$@7VibRI zooYt$OV>sDqZnj4Q%qWzPGAe{zx=vU(Q8>JAL?bbw7RPfvf1}TUf~3bs&cL-s3w`T zM2`?sh;IK*EO5FrBYdwkd1&O~nJ_A_d}A2nSxNgII&xkc> zR#Ar+u(o2B95@|cp11L=ngv(vovpu|6ZTC#yX{%2Nq)BLXx5F~?v=xG-H5HBCVw>B zb0fM=#hmH7)Q;YV1ratpn|UZrLIbK7);+-8tJ)el)hNEW)T)^p zYt&;`I3EeoS*zHk&4TW#Iu0)>suLq5e0ToR9N*|x#}Q+ee7gJ&#;nB$gX&!xqbsQW zBgf72xch&`ScSNMuS|Qf%;WbMd(Qk@j7=@A)F|qjs>Zjm^4O9^<3hhwY2$pJZ#)Cc z3d1q^i#ZbfzS<=3k}7*dy^wrZia;-B5pQ8)NOljushJx+*hi1~i|TCp0f~k6B!aF`in{r zWUN;IF5%hlLJS^mBf$1r7JFnN!u@7^aOD1V|*$-J(W4Y{L zY{O}{o~j9{By>PsuUQ*;wLaZ%{zBfb*&EklUG@e@Ltb@!r z1DsYr8J6*`JY21XWV7Enj8`eykvN1~20JsV$}_@p{fJq!pysr*C`Y!nmOT$SKWY@~ ze^80%<+xnV`%G^U#Q3T-5l_UbPb2sA;JoWOLRPRUZ#We7w%C(&vp&a5QRG}tGBU&T z+xZZQI`Ez<%H9z!MDqe-1o3fAgcNSg9CE0AX;a8n_IR^;JZ%);Fv_pAdyluV%*jq| zs~A9JRBq)z#XV{H9H_`d=gAJ*L>HnvdK?{uh{s}No+GxrqeLHal(^2;cTDU2B{51j z&(GlwJ@s*VQ+@}=eI++&igS*co%lb7gOphB2Q&j3IAZ-7pauOyXrBRm1Mpt}d+{Uy+ac{>1ufPVyh2Jkpw2(Soif~bD`}-TZ^_1tpjZmt%6oV zi+YK4!d|R(QG(ed`qCPnP>ymuzStYI4M>5v2{vv6p_C|1HpYF4asoP(bxi1RtYfzM zd4mwEgF5(5(n-2-3PI@V(># zu-QzS$Rp%)WRQH8JdV-b`1?3{0<@1~&LfyH4D9F0CUOUs^WpbN(t}?&;0}C!s?4`S z>%%<8qlYw?1!Nqb!1q4zPvQ4Ccs&7*k6`9wfARW%ZpAp{9l$y$9wB9#Y$+?}uJYf= W|I1oUH`aO&I^O^*;_g&_gZV$J{>`-j literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/maple_rev3_boot20.bin b/bootloaders/stm32duino-bootloader/maple_rev3_boot20.bin new file mode 100644 index 0000000000000000000000000000000000000000..018d93f0e3e9c925b851d5daaba6a455cc29d0a7 GIT binary patch literal 7100 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 X;lIgRP1o0Y4?15DE8^}{euMdcASuo^ literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/maple_rev5_boot20.bin b/bootloaders/stm32duino-bootloader/maple_rev5_boot20.bin new file mode 100644 index 0000000000000000000000000000000000000000..acb9868291a4a24a4c8c73bf69ae5b507918662a GIT binary patch literal 7112 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 literal 0 HcmV?d00001 diff --git a/bootloaders/stm32duino-bootloader/naze32_boot20.bin b/bootloaders/stm32duino-bootloader/naze32_boot20.bin new file mode 100644 index 0000000000000000000000000000000000000000..67bb88b5ef8085e7398ece20b579c38b35581b43 GIT binary patch literal 7136 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 SS7m(!n{R*@ad#@e!TcZE7tKQe literal 0 HcmV?d00001 From 78dc77b9b12e98f72f6c2ba8d4101bb061532431 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Mar 2020 16:59:55 +0100 Subject: [PATCH 4/5] Revert "Unified shell scripts naming" This reverts commit 84e4091347b30face42d0c560d35e0ccb89e1d26. Temporarily reverted, because the tool package change needed for this does not seem to be published yet. --- platform.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platform.txt b/platform.txt index ccde38d61a..37d9abb6bc 100644 --- a/platform.txt +++ b/platform.txt @@ -155,8 +155,9 @@ recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* # ------------------- # Upload to board via mass storage -tools.massStorageCopy.cmd=massStorageCopy.sh +tools.massStorageCopy.cmd=massStorageCopy tools.massStorageCopy.cmd.windows=massStorageCopy.bat +tools.massStorageCopy.cmd.macosx=massStorageCopyMacOsX tools.massStorageCopy.path={runtime.tools.STM32Tools.path}/tools/win tools.massStorageCopy.path.macosx={runtime.tools.STM32Tools.path}/tools/macosx tools.massStorageCopy.path.linux={runtime.tools.STM32Tools.path}/tools/linux @@ -166,6 +167,7 @@ tools.massStorageCopy.upload.pattern="{path}/{cmd}" {upload.verbose} -I "{build. # STM32CubeProgrammer upload tools.stm32CubeProg.cmd=stm32CubeProg.sh +tools.stm32CubeProg.cmd.macosx=stm32CubeProg tools.stm32CubeProg.cmd.windows=stm32CubeProg.bat tools.stm32CubeProg.path.linux={runtime.tools.STM32Tools.path}/tools/linux tools.stm32CubeProg.path.macosx={runtime.tools.STM32Tools.path}/tools/macosx @@ -193,7 +195,7 @@ tools.hid_upload.upload.params.quiet=n tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} # Upload using Maple bootloader over DFU -tools.maple_upload.cmd=maple_upload.sh +tools.maple_upload.cmd=maple_upload tools.maple_upload.cmd.windows=maple_upload.bat tools.maple_upload.path={runtime.tools.STM32Tools.path}/tools/win tools.maple_upload.path.macosx={runtime.tools.STM32Tools.path}/tools/macosx From 793c16e3fb041290f0875488bcfb94a7d960def8 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 26 Mar 2020 14:05:24 +0100 Subject: [PATCH 5/5] WIP: Allow using "Burn bootloader" in the Arduino IDE This allows uploading the HID bootloader and the stm32duino bootloader (aka maple bootloader 2.0) to the bluepill and blackpill boards (other boards could also be added, but a bootloader version must be explicitly selected for each board). The bootloader is chosen based on the "Upload method" selected and uploaded with the selected programmer using openocd. This uses the non-fastboot bootloader, since the current bootloader autoreset for this bootloader just does a normal reset. If that would be modified to set the right RTC register with a magic value to stop the fastboot in the bootloader (pretty much exactly like the hid bootloader), we could instead use the fastboot version. --- boards.txt | 12 ++++++++++++ platform.txt | 22 ++++++++++++++-------- programmers.txt | 2 ++ 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/boards.txt b/boards.txt index 4ec2ea2fb0..b883dfc2fc 100644 --- a/boards.txt +++ b/boards.txt @@ -804,6 +804,8 @@ GenF1.menu.pnum.BLUEPILL_F103C6.upload.maximum_data_size=10240 GenF1.menu.pnum.BLUEPILL_F103C6.build.board=BLUEPILL_F103C6 GenF1.menu.pnum.BLUEPILL_F103C6.build.product_line=STM32F103x6 GenF1.menu.pnum.BLUEPILL_F103C6.build.variant=PILL_F103XX +GenF1.menu.pnum.BLUEPILL_F103C6.hid_bootloader=hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin +GenF1.menu.pnum.BLUEPILL_F103C6.stm32duino_bootloader=stm32duino-bootloader/generic_boot20_pc13.bin # BLUEPILL_F103C8 board GenF1.menu.pnum.BLUEPILL_F103C8=BluePill F103C8 @@ -812,6 +814,8 @@ GenF1.menu.pnum.BLUEPILL_F103C8.upload.maximum_data_size=20480 GenF1.menu.pnum.BLUEPILL_F103C8.build.board=BLUEPILL_F103C8 GenF1.menu.pnum.BLUEPILL_F103C8.build.product_line=STM32F103xB GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=PILL_F103XX +GenF1.menu.pnum.BLUEPILL_F103C8.hid_bootloader=hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin +GenF1.menu.pnum.BLUEPILL_F103C8.stm32duino_bootloader=stm32duino-bootloader/generic_boot20_pc13.bin GenF1.menu.pnum.BLUEPILL_F103C8B=BluePill F103C8 (128k) GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_size=131072 @@ -819,6 +823,8 @@ GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_data_size=20480 GenF1.menu.pnum.BLUEPILL_F103C8B.build.board=BLUEPILL_F103C8 GenF1.menu.pnum.BLUEPILL_F103C8B.build.product_line=STM32F103xB GenF1.menu.pnum.BLUEPILL_F103C8B.build.variant=PILL_F103XX +GenF1.menu.pnum.BLUEPILL_F103C8B.hid_bootloader=hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin +GenF1.menu.pnum.BLUEPILL_F103C8B.stm32duino_bootloader=stm32duino-bootloader/generic_boot20_pc13.bin # BLACKPILL_F103C8 board GenF1.menu.pnum.BLACKPILL_F103C8=BlackPill F103C8 @@ -827,6 +833,8 @@ GenF1.menu.pnum.BLACKPILL_F103C8.upload.maximum_data_size=20480 GenF1.menu.pnum.BLACKPILL_F103C8.build.board=BLACKPILL_F103C8 GenF1.menu.pnum.BLACKPILL_F103C8.build.product_line=STM32F103xB GenF1.menu.pnum.BLACKPILL_F103C8.build.variant=PILL_F103XX +GenF1.menu.pnum.BLACKPILL_F103C8.hid_bootloader=hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin +GenF1.menu.pnum.BLACKPILL_F103C8.stm32duino_bootloader=stm32duino-bootloader/generic_boot20_pc13.bin GenF1.menu.pnum.BLACKPILL_F103C8B=BlackPill F103C8 (128k) GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_size=131072 @@ -834,6 +842,8 @@ GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_data_size=20480 GenF1.menu.pnum.BLACKPILL_F103C8B.build.board=BLACKPILL_F103C8 GenF1.menu.pnum.BLACKPILL_F103C8B.build.product_line=STM32F103xB GenF1.menu.pnum.BLACKPILL_F103C8B.build.variant=PILL_F103XX +GenF1.menu.pnum.BLACKPILL_F103C8B.hid_bootloader=hid-bootloader/F103/low_and_medium_density/hid_generic_pc13.bin +GenF1.menu.pnum.BLACKPILL_F103C8B.stm32duino_bootloader=stm32duino-bootloader/generic_boot20_pc13.bin # Generic STM32F103Rx boards (Blue button) GenF1.menu.pnum.Generic_F103R8T6=Generic F103R8T6 (Blue Button) @@ -957,6 +967,7 @@ GenF1.menu.upload_method.hidMethod.upload.protocol=hid22 GenF1.menu.upload_method.hidMethod.upload.tool=hid_upload GenF1.menu.upload_method.hidMethod.build.flash_offset=0x800 GenF1.menu.upload_method.hidMethod.build.bootloader_flags=-DBL_HID -DVECT_TAB_OFFSET={build.flash_offset} +GenF1.menu.upload_method.hidMethod.bootloader.file={hid_bootloader} GenF1.menu.upload_method.dfu2Method=Maple DFU Bootloader 2.0 GenF1.menu.upload_method.dfu2Method.upload.protocol=maple @@ -965,6 +976,7 @@ GenF1.menu.upload_method.dfu2Method.upload.usbID=1EAF:0003 GenF1.menu.upload_method.dfu2Method.upload.altID=2 GenF1.menu.upload_method.dfu2Method.build.flash_offset=0x2000 GenF1.menu.upload_method.dfu2Method.build.bootloader_flags=-DBL_LEGACY_LEAF -DVECT_TAB_OFFSET={build.flash_offset} +GenF1.menu.upload_method.dfu2Method.bootloader.file={stm32duino_bootloader} GenF1.menu.upload_method.dfuoMethod=Maple DFU Bootloader original GenF1.menu.upload_method.dfuoMethod.upload.protocol=maple diff --git a/platform.txt b/platform.txt index 37d9abb6bc..63dd96dea7 100644 --- a/platform.txt +++ b/platform.txt @@ -219,21 +219,27 @@ tools.remoteproc_gen.upload.pattern="{busybox}" sh "{path}/{script}" generate "{ tools.openocd.path={runtime.tools.openocd-0.10.0-arduino7.path} tools.openocd.cmd=bin/openocd tools.openocd.cmd.windows=bin/openocd.exe +tools.openocd.init_args=-c "telnet_port disabled" -s "{path}/share/openocd/scripts/" +tools.openocd.interface_args=-c "source [find interface/{program.interface}]" +tools.openocd.board_args=-f "{runtime.platform.path}/variants/{build.variant}/{build.openocd_script}" +# This looks up the flash base address and puts it in the flash_base variable +# This uses the flash list command that returns a list of flash banks, +# using lindex to extract the first bank, which is a list of name/value +# pairs, which is transformed to an (associative) array with array set, +# and then the 'base' element is extracted. +tools.openocd.flash_base_args=-c "array set flash_bank [lindex [flash list] 0]; set flash_base $flash_bank(base)" tools.openocd.program.params.verbose=-d2 tools.openocd.program.params.quiet=-d0 -tools.openocd.program.init_args=-c "telnet_port disabled" -s "{path}/share/openocd/scripts/" -tools.openocd.program.interface_args=-c "source [find interface/{program.interface}]" -tools.openocd.program.board_args=-f "{runtime.platform.path}/variants/{build.variant}/{build.openocd_script}" tools.openocd.program.program_args=-c "program {{build.path}/{build.project_name}.elf} verify reset; shutdown" -tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} {program.init_args} {program.interface_args} {program.board_args} {program.program_args} +tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} {init_args} {interface_args} {board_args} {program.program_args} # Used for burn bootloader, must exist even if empty tools.openocd.erase.params.verbose=-d2 tools.openocd.erase.params.quiet=-d0 tools.openocd.erase.pattern= -# Upload bootloader, but which? -#tools.openocd.bootloader.params.verbose=-d2 -#tools.openocd.bootloader.params.quiet=-d0 -#tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" +tools.openocd.bootloader.params.verbose=-d2 +tools.openocd.bootloader.params.quiet=-d0 +tools.openocd.bootloader.program_args={flash_base_args} -c "program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset $flash_base; shutdown" +tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} {init_args} {interface_args} {board_args} {bootloader.program_args} diff --git a/programmers.txt b/programmers.txt index 48fb424a7e..d207f02f9d 100644 --- a/programmers.txt +++ b/programmers.txt @@ -5,6 +5,7 @@ cmsis_dap.program.protocol= cmsis_dap.program.interface=cmsis-dap.cfg cmsis_dap.program.tool=openocd cmsis_dap.program.extra_params= +cmsis_dap.bootloader.tool=openocd stlink.name=ST-LINK stlink.communication=USB @@ -13,3 +14,4 @@ stlink.program.protocol= stlink.program.interface=stlink.cfg stlink.program.tool=openocd stlink.program.extra_params= +stlink.bootloader.tool=openocd