From abdf2d58f0d4352691cb5ed551b628e66d6f3223 Mon Sep 17 00:00:00 2001 From: ayabusa Date: Fri, 5 Sep 2025 17:32:53 +0200 Subject: [PATCH] Finished Programmer --- .vscode/settings.json | 3 +- Core/Inc/main.h | 4 + Core/Src/main.c | 80 +- build/EEPROM_programmer.bin | Bin 10492 -> 11552 bytes build/EEPROM_programmer.elf | Bin 334132 -> 336740 bytes build/EEPROM_programmer.hex | 750 ++++--- build/EEPROM_programmer.map | 938 +++++---- build/main.lst | 3979 +++++++++++++++++++++-------------- build/main.o | Bin 25812 -> 31656 bytes build/stm32f4xx_hal_msp.lst | 36 +- build/stm32f4xx_it.lst | 54 +- sample.rom | 1 + 12 files changed, 3363 insertions(+), 2482 deletions(-) create mode 100644 sample.rom diff --git a/.vscode/settings.json b/.vscode/settings.json index fe52345..4698bf7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,7 @@ "C_Cpp.errorSquiggles": "disabled", "files.associations": { "stm32f4xx_hal.h": "c", - "functional": "c" + "functional": "c", + "cstddef": "c" } } \ No newline at end of file diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 7434a08..4340947 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -45,6 +45,10 @@ void Write_Command_Pins(int CE, int OE, int WE); void Write_Command(int addr, int data); int Flash_ReadByte(int addr); void Enter_Device_ID(int *manufacturer, int *device); +void Dump_Flash_UART(int visual_format); +void Chip_Erase(void); +void Chip_Program_Byte(int addr, int data); +void Flash_From_UART(void); void debug_print(const char *msg); diff --git a/Core/Src/main.c b/Core/Src/main.c index bf42bfa..afa1b41 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -62,16 +62,41 @@ int main(void) sprintf(manufacturer, "0x%02X \r\n", man_id); sprintf(device, "0x%02X \r\n", dev_id); + debug_print("==========================================\r\n"); debug_print("Manufacturer ID = \r\n"); debug_print(manufacturer); debug_print("Device ID = \r\n"); debug_print(device); - + debug_print("==========================================\r\n"); /* Infinite loop */ while (1) { - //debug_print("Hello from STM32!\r\n"); + debug_print("Hello welcome to the EEPROM programmer! What would you like to do?\r\n"); + debug_print("[1] Dump Rom as char\r\n"); + debug_print("[2] Erase chip\r\n"); + debug_print("[3] Program chip via UART\r\n"); + uint8_t resp; + HAL_UART_Receive(&huart2, &resp, 1, HAL_MAX_DELAY); + + switch (resp) + { + case 0x31: + debug_print("Dumping ROM...\r\n"); + Dump_Flash_UART(1); + break; + case 0x32: + debug_print("Erasing Chip...\r\n"); + Chip_Erase(); + break; + case 0x33: + debug_print("Launching programming sequence...\r\n"); + Flash_From_UART(); + break; + default: + debug_print("Invalid input!\r\n"); + break; + } } } @@ -168,6 +193,57 @@ void Enter_Device_ID(int *manufacturer, int *device){ Write_Command(0x5555, 0xF0); } +void Dump_Flash_UART(int visual_format){ + uint8_t byte; + char buf[8]; + + for (int addr = 0; addr < 0x80000; addr++) { // 512 KB + byte = Flash_ReadByte(addr); + + if(visual_format==0){ + // Send as raw byte: + HAL_UART_Transmit(&huart2, &byte, 1, HAL_MAX_DELAY); + }else{ + // Send as str + sprintf(buf, "%02X ", byte); + HAL_UART_Transmit(&huart2, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY); + if ((addr & 0x0F) == 0x0F) { + char newline[] = "\r\n"; + HAL_UART_Transmit(&huart2, (uint8_t*)newline, 2, HAL_MAX_DELAY); + } + } + } +} + +void Chip_Erase(void){ + // Erase sequence + Write_Command(0x5555, 0xAA); + Write_Command(0x2AAA, 0x55); + Write_Command(0x5555, 0x80); + Write_Command(0x5555, 0xAA); + Write_Command(0x2AAA, 0x55); + Write_Command(0x5555, 0x10); + + HAL_Delay(150); // it's 100ms max but by precaution +} + +void Chip_Program_Byte(int addr, int data){ + Write_Command(0x5555, 0xAA); + Write_Command(0x2AAA, 0x55); + Write_Command(0x5555, 0xA0); + Write_Command(addr, data); +} + +void Flash_From_UART(void){ + debug_print("Waiting for file to flash...\r\n"); + uint8_t byte; + for(int i=0; i<8; i++){ + HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + Chip_Program_Byte(i, (int)byte); + } + debug_print("finished\r\n"); +} + /** * @brief System Clock Configuration * @retval None diff --git a/build/EEPROM_programmer.bin b/build/EEPROM_programmer.bin index 5fc51cb5520a39474a831e49b1a673b8019bbd50..76d803e584f627f9743b454179c6f3f6de592a45 100755 GIT binary patch delta 2286 zcmbtVdu&rx7(eIU+qDelitNQ&>S;TmtYvl&$&?w#fXk5SaDpNaU0pj{?bh0DipJQv zfPbJQ$eo0U8jOpX50bh$B8hcGh|vU12Z@4;R>jm8dVO(k%XW|7={lmA7!z;vJLfy! z_dCDyo$s7`J9*2&%~8~k$@wM7pfe$Z9xw|q8&Cj1mpz5xo162`gT5GWedYf`^lt)} zt%v@ncyL5c?ndpQ5BZsy8UZjYD!Op65AA zm^;3yQo60!Qi0_a=^9JfIJUL^j_xNSmak1$=EnUVHm*)f`->|DEZ3^iyT#3ASU#^} z$FCFE{$k^TRX?R1;w+FGf=!jw0qa9my0gS`1(xIL`II3Rj-zpi?J8-B8pd9+uKso7 zda8U(H(Hx6yh5mQlJ@6(AJCcTdzYfes4*9Po9-i6UYs_>>&FDKK%C)@T;d+02XowE zx`66^$@fH6j{8SSQZ8B>ea#;m7En zobV%*34KHz?Kqn{X_s@65G>^$+Zoe|sN%|`c`Y8+lv^lkAEvD`tsNM_FZ)ZIk!-mr z$c22NvnYY<-uMGuebpx{(?j%~k=<$`K})}!V03IN_@xlf27cbf?^F5fO#VYEa+~Jt zRyj9|bGCpeKvc(fDz=VEYjwo1Adb8cQoo-)LwM4|0S2pfGrq9Z7f}|8zj) zVbWHR5?#kML}{VIXyN2 zN6kE^>WypzMvCk7uAk2ez&uU4m@$4Lm(Y*UM-FQ#!&rWE{yM(B_4hApSGFVRhtj!R zLq^g{EqJZ8pv;3aQnbv(wM|LSmX$|$#E`rTPH7mhY>FzovXy@ytYYw7OSzZ%VXC~U z6%b8nnAC}^ub&h|$IbjR)uID-Q>t-b5wNb*>^Hk1$7R$8+0{}9*ltR|UP@W+m6Syn zQ(e*wK0Af8jVjM;-LO89tkuUIG!6m{F-WgQSHEwl{4%m%6C#%xnBG*FpaiPiusuSP%h2Fp= zgmtFv=2h(WH<}JMWlq(@G_Mq2w1R7x+`G7?#5AcX-_h_I_CJc?%))?}OS*gU-snPi z%_io%-4o~ybl*cdLlM#$2>M8Gh;#-$J^reys)BrkIs@H-9>34aZ1?u;EM}tX|MQcj zqnkY4eVv|;-oA)0Le{R53LW#K&AwnTL>}}7J3?LAg?s%zvU>IUw$__SI1;)i;_2%0 zMXcm@zo(Zx80rgp$wQ$&5)9mzWqU(6Olxnc-bPmSb%jY=sEc@dNQd7OVUaC0+sNvO zr^g4LKsd*(-A2|=Ye%zg@<6~tHm+#f0C6V5iUA4awvP}KV7`?gG2?9U^mT(IcxTdN xc8~A=K3{i-Z<@8X`vFfd;3a|Xa9^)=dU2>*_Q4!4Q=gz*)I|~?!!_>+P{?`p;56BL{y|$L`VlQwo$bU4IrGbU%WIJ0Vq3lk!0tZU{+M@9qrt!nJ>>~l`B z#DtM~0g-2d?2-N1=3tT)&b#mUde%{CMr0|>bz#0udiu)a=Zj&h#~)z&Hw^i`1H5q4 zFgv1XO#gzV>A0iWjz1uDdrBpyf3o0}C+ubV73AuVH+S;lGHq+@00qXLbGnO-&Kj(0PrfY%og`Y5dP`S}nu z`I@-~1HL?QJq3fl`R$#3Oix&7^wOyl6KHfzo}!JI6~yeqHjVe9F$Z%L%NR^KHQT;V zNm}+sezihVsqIsXk*ARN$jS_(u>)0_dMi4~-$JvaQIA%V4Gh~K58bPmU?tNlCmF4? zm#d%Y4=k9U*Dc}RmdvxlZllUxgBErD6A<7!o`wxqGtkLmqc>U u(993bXr2ArVD!48gbON!N-xbQKfb6uv|Y)`f{L;-hy)viG6c7Rr+)%GvUCOj diff --git a/build/EEPROM_programmer.elf b/build/EEPROM_programmer.elf index 73c10d3ed82a86a07dbc7961bd84f146cb68c5cc..1e47e80f7ed990b595c0610131ec8eae2c9592d9 100755 GIT binary patch delta 77777 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 BASM6+ delta 74258 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�-5tzmFOESAvKc`YT}QUwi{>136xP!B5u@^l19CJa|gyG zI?sHu>{IVk{d<^P+4OS!9mA$)9Blg5xCnT2hslCiV33523kW`1jgN!;! z5*-6GsX|XlR0ftYhhCEC6gWttRuWZ#dzt2BNpub@W=x$Vx&$63(OVK-1OG#@K9Z;o zOl8)mNTM5#HaK$7_<8h~koE`i{Nr(f0v#b8$WJ>TZLS6CNfaa_o_q6Gf(iy&_}5Xc zJEK}=Fsudm>F7X_uZ(hm`4A7Zl8OAddVL@Px56FhWtL@yv6Gm7AtXiwxA-p)Kr+as zYVb+9ucZZ+u#BhNO|Hcxwo1Yucp8aZksqjK z%(Idx2wgmLj28T}EUqx{EQ@>2|1*?*N?;l@-JWw7bnF*+oM~S03&hk1ip0ZBMlZPz z#i=dQz8R5><0~+`>TB*v#WMB*R2NY#Ijv^Hn*}5d9@R zs~+8B2^b40I1+*{>!Chq=Vw801+*G75u2y4=$Y)5t?+KlXS47K5dM++tGe7}Jpmh| z?E$Uu$nRA>%;vrxCHFAdTYB>LR4t^nE+Mth(C4OT{?;>BePNty^sf*DzA&~M zFLe;bU*f|r?;+ne0TrzM7ip|~F1Bwo02MRGO~zMeBi+*RLJ;Uv0Bt9XMxDOmx81eL zphuH;IZpDFm3$b~L*$H`JPU`A7qW-F0{VZ*L;m07u{z0DL0Le%(bJ}#i}M`uwm7a% z`(>Dei%?W6xyKOJ!!$g4L9QzxauutRrTf`%^T4>8%%N(<*&i`l1!=cQ<6tVsQhchxnCI* zqq(RFA+=?4r2z#9!FTn_*5DC>Z|I$rXK`A&?ynqyU3x-ltK?4eAV5fKtNS~d6=+>R z8qUA09FJ@WsgY!DbsA@a)`)V=_<86&+_qm4z{go$$4F@U>3`miKe`zogwB;|*P@~R zeRh26aXa3B+>S?Y#|xXBm5w_)*Cwgl zEf5#;#D_lfHr*#~NK#GOIl?C0irCEnr%AiyvPr}9F#rKAWW#jzkHjU4g1!nMo4Gof z&3rq^wG@-h+%1{S{1oUv0N6G)viQTG-T^qvgt2<*dVb=gCscQo9AL8#J_M`m?rX(K zezUk>7ixWZEPjm1_7M2S=9D z+LRycP%nTxo5QXjy!BBD1n?#_OZh?W_9w{$wcMA=?H_lh6QAj2i@C{WNcjW8Y{ta! zBTsZ(Hd)uS1jaybjHTaYw-BhdePZ?g&Wgdk%S`NZb*SRNN7eS;t@Q`mY@F zR3yd(&CDNp(vxfi;j~mxUsdX+}=#gK!<7q7@>BAut%wmOAi~vZqAl%^l#+fddl1bxxkC^=1dZ-O(qlg*lj@$f7SsVW#Cw3igXEncZzvc4 z6oVfS9EJA|^Z~peTJ_J+9{|DW(=NeBXwvCY`5fpCfYjeH?V#i+i<*8NHVgr&Pm9{!_JVq>82lO54h&QWk2eynd7hD z;kDx9Z-QeURSu*VpwGpP1yXTifzHx#W8r`A?3Ckgf_qMTsr*X|iTo3E(UU5^0)aD0fK(TlM}*Vcfs43ID1Hh)I1UX}!R zQ7}FR6i(!8aDUc=lssb*j&uRE$QIwWFjq!Puy!W+#-|sn=N~v(rFaC!9U-Yza(JZ@NOo$9PwkH5Qp{1_2urFr}q zk(S4g5y9D!JSrr9R4^@t_zID6|H6q|U(3w46(dU?6-+X|L?jhoA~rv9i(152h?I=4 z5J|;Xh@|2xL{k5mV?^AWhdZtFR-h(leNDc+mt-4lcrUpOH-bw6&b=ht=qh%WnHkX= z!CK6FL=A2X_|T1f<$609&jN6}02o>;>0bJ-GNQEJS=67dOl?|c2B^!40tn}>FDdo98~`wj4u>@tM?c31pQwtM4$ian$n3o-jN{14jQ zI%A6^)xH-IX?8oX((NmdEM#8*PKLc3|1<3sC?;%o!~ZP%D-@q?+X&~_v+zIHehanC zvv)u;-}WJg0{a8}FSO4@YzzBo4{<0gk0!!?cNYL8u z1Xig%45DTBW`xV_-3Yg_uS9|h`xAuQ+K2JKot*?udpiR%9qfm}>1am~uC#N&?_}2^ zTxFk)|DEmDP`8Uc5&3tuug3psdkOw`vww+H-R-pqpLK$LKTwVR82+DVk3&QcI}iU) zvd1Hfp7!5Szh3sMh^^Ip*CN6&E;IaTxTZ(_@g0C(esiCm@;+2aoiO=w4MYJylcpsFk*n~v#W{r`C~O|mO$zz_7zG*6 zSBulznyovgVp+crT|5(~sC{Xc+ysHPi*a!QnK%#!yvh)Y`zz?bEEb|IYLvYMhv9(E z8r2!zH)h&ZNb?SO&jYe1RgsrT-YV?Hj{;;(l5#oZz4CKx{sXcmb)j4Vd4E`jPu~Kv zrXuZOGljf8pkI_cq&@7E(Qi2}&~kK@tcx}Mh$Htjcn<@zE{3^x#7t${i*Lj?#R1{V z;b-%-m6475X4j(Jk0Y~U_TR(bO1@{?DBE7fzkeZZ(8^O9;P;xexXV;-4OJD2$s7>|)DwR4$GV0;X4v~!u= zFwJ!YXxU@Yc5Sg7aH0S^<3sXVBATj)Xrrd0OLI}rFJg!R7`~@0UYgI z=3+1wkSVounJ<9xM}VWku94!V^nPI)EadegWPN(RjxtjlRfT3Nj5$|%s z7#ZFlrJe%lT0PND8Ehb;yrq4n*RNCZi@{k6V2;GgoUlc_(FsS0nWxcByBgDj^Q!}+ zk0YQF_jSS{;`vUvhInzV_-2H;Ao@DOyB)qp9Lkf0##ASr>F_k-EGKLc-v%(Xt9NM( z-04OTZ&VRVD~%<%r4Um~R4t^P5|cmx%pd^mLqr)}8|)RJgkQ1;5IGVJV(rCdUK!(% zWlV9VdnrfrzXm{#L|U$x_l%hpI*9NghfSn4rjIh8Frw7@cTO!d;!RFCM2v69GWR^M zHt&PK7l7P}D3YM>Ct%}?VU!?pBpOs6J&~Z+$yWom{e3}*DfgOLA~ee^7yDUlpk^^I8FbVnh^m`X58PoCqSOcRS{( zZdxjN8h|~M7~d9`?M}>W$ydL=1&{?uS>T33v2>G}Gm-q202EJjvkW#6-QsYG8VV^8 zYc1T6!JH-I2dV-byb4SwkNPzTZk96jhk!!JLrk4zhS{R&jqS&obFD&FiW;Ewcs^f% zsTGK+lgx1RLxev8nA)`9ItC5`bZrn3LGoisb;X8+V#3bVnd2cP&A>MRU5n|iO9_V= zO9;y%KPEarWe3|9`WCqA83_9TP$O#{11SI$PDGIWSW;cF6VzjlAtlW~7ND7WlyI0H z^|A_}p2PL1R|C<$u6i91t^&wbVxSs;!ifk8t*6)t>M_S2N}7RMKr{6y;V?bw)fQwb zZcII0yfwjWA@*Nu7OlF@Tq3)Ics6QYAa*pGsjH@%qm9*_#PaE8uGll#{51ui5j*ZO zf9{OH&{ia#w8jjGho+kaQFhCr0QPC(^PO-D;uoE81@TKRpLn;+k6#pYZ1Bba&}z6`XGT@yF_XS|mCW`$F?Bp9*U9tDVE5V;~$o`>c&FtmtQ^wUIiIdR)qGd9p!9*_sn0mlEhVX@U_8OwsWpF4F3v^`S zMGx>6Jz$+v9ZZe`*5H9?ytsi%Z>Jl@(+~8f9~evT8IimM%;-$1$RMH=S-E(R#jJ># zQDZ%JNU6a@JBQ<+sm+Y8+lc_Hg(|6fc*le%`K?lFDABI~^0G7Fq>iniH8exgqf?~%8Gp`q=J_JBb zqAEmSP9Qo#2J4BK6kMX74wtC5g*0?T)dbU`YI)I7_(m!YZ<9q5FL1&!YpE~j)7*Gs z%2OpZuB>7V1prkh-sOa2@w}|~>5MCqaaHSx#{tksqH}=%;Dnz9!oD4{s)~(Nt`1c4 z@opS3j=VwgdZymuvX7P=t7NzAS*{c@Q{k>cbXH=4uDvYvWg%3C*hwP`R7r>lKD-fG z+N7-$w?AsOYQ(k9)!VTd_5j!{#92@xIu2L$TLy_g z$%KRU0v&RKDi&X6S3zwLYGgnUj#XkyhC8n#cB(X(XozH2ts~wM#6L8EqiExrN6j{R zcwiZW^kl-@XX+m;8F7a{$gYXQPxY2u63TSm9As3!6l=m>xLpY1pq-J?8_)Y21@}xZJNe}40nh}Ge`}YE%K=<>!Y-- zip}L}D2z z)Xw1&^>nyIwGNl)92p!q2WYXwC0gomR|9QyxI~-E9QGz4oZO15KSkRE%=Sk2Rh>f6 z@(@*5n7u^gDf0w@o+wjWDL)(4$RA{e{e-o+yY`p1F9l#|C&zk#%hk)pl0TWh9Jl~w{}jM3P0S(?R{ccva*cA& z0WgIS?E*L&GPK8uAZjX$TQ^ZA+9=}&5UE51)-m+D6G6m6ncD!5ma1ebwG_aKh4?oB z7!E}D0Zi?hIWoIf9X=7WBtIIx?R4IV>Qy_ep z5WxnbvE}jZFOB;w<}e<>0Yzek*}{1*MDQ4#n*J?esmoWx0(9`b5Fhs zn0xLmfSp}?WC6MwG`Gs{1m-^SY+&`{STVF2Iefs*pR<>Y2MgFqgQ8lMi@UhEI$t|o zMs#->H7@Sq;-0|X?$QC77~1w+RRFhWYrvb6FE$@GTlAEtID&S55g=}Xsv$fAG`B-T zSi^B6NIDIGN7Z&0ip(QsWss}V=Rot<*#8I&n}%7VRdHmpW;E0fp*i_m;~*@VoF6gQ zkUN372pWOHxV#|0FK`5SRO^*ptm@K9Q&q;aAhtk|KWf((12zrefn_TfS=H5#UZDgz z_)8JNsbLDG@#7WZk9_`!o61%mv=$rN7KypK6)E5t>kl@^4=*6c4fm=xmW$20Rm3`J z;&t7+F<7`#6}6>YTxnP>&fJS9TT(#d(CJ4}_s4<^Z7^EEiRU=sM)L$fx@W~M;;}D^ zL&Qs86L}W!#@9p*@v?WsP~y=|Vm7g9ikpe&rHW0&zfKjqh`&k`hlo@1M4kEzyY9Ifng2=0tW(t z1A%~nAc5n6z;OU*@8>`ua3B!a;Z=qV&v9XIzS!=w3M%6}{v7vCcV|~8I2*4HpJD8s zoReg=^RdgPv}{CpzAkP{wn7zLe{eaZRz0dj=15@wXCD`lBrC6+A@+0vdpdzVoiNIU z1+7JGvemAL9i5$9<-{;o8H5XA=tHK0x9}|hbq`jhlgC>qZ=QPrVt=v~5nEEMkl5k3 z{2`7FjtfE)*cGA_&W9Kb^frQ*t&06 z1Y4AL5pv|SLvy(}Gt(;dv9p`2#f(g=5?h+K!A@_^6&=IY5Fb0fxk_9gwyH<4^P9K9 z^+~r)UnjdGaiy)#j9?XuY^f;6g}Kc@M7Cwvg=Uk5U>2Nn4NEs~xGF-NWhWDbU`Dv9 zIEu{Ox|o_}4fk;^2Pl*R%;)JnR!t1k~rMVdAeAVV-=mm@n$a5_58RJ9De57W-Jau z^PXm`p81V~b8#H8(Klb*l4lhgbMhM>&$C`Md>n zyVx3{x8l$;A520+hH(k;o(iKP`PQQ)z5(K^~OxArLm@5 zd^6K3FmR{Hn`NzY)cpM{>rKPhQr@`c3Tvir>?{}ItE?49i#Fo!tE@_6LYu}{uCkIl zhwJ4UbNH{G{|1P{`>nSctp{+*TG^l((?*Y+*k|PQ(Y;5Fnl^g+bnW!|GtRxJ z;fg7v`;H!iO|WUBC(RHyJ!qAQZ4X*KMACZe@|1?zL&uDsHfY?HqZ@BnZ{4elCw5q+ zjT1IlDY}^VTkCQ0_I(&`^&71|V(mt&s`2HG*4=*bXrAqFy!Vb&WSg`4a=)wZbV8m#WJZOW(ChE>wn5?=)+v-a9QaFwN4k zTp11t-sx0U${nn4*<2h6*If0(<6*Bkx%yMRSph zvcOQA^JuZKHsr%1t9{=p(C3O_?^|sK?s4sbh+8gcWty=Z6+Z%DUIWs~R6|2tYb`Jr zvau@MIE1FJw?||iqR$7IGWQr_3~;8B zjprj)e_$2($j5zh^9NSBU&)BQA6TWa6g9DuMbTcXppTMT0X{FeqE{h&ewu#@8_COG z09th!r*`7Xy;i$+Dji3hSN@izT1f%=C`k~VekARLf3Z2Q0rcWLC zUj6!f58XW>K9Oc#p8N`()eV@cVVJ;aDDl8Yj>3QX2*wQ*KlqWOxZ+oSZ1u?5=9)(A zwbcO9!It8hkF74oHow^Lu~ky5WK`i^nq`ruO}P_c)d(G2{;pz?xzB1BrHootsWiL? zMm%X0pEjtM&vI3n&mrukdnV9o)F^p3AMyKrR=%$qPI@qGU)^VwQCsyIcr5F_8WT1A6!&ZBk9uEbiArj^STpu824 z=kkH%BUv5xk;cf0=|Fj= z^`_^wap@@IaZW;v@xM&BlI8t_hB1xBfdf{n4Bk??V3QpRDW-_xgH|iwZD7MPJ?$W- zscmUu{6Q@4_oj(O2d#GbS?SmVF|by5t43OWAzn;9XyxjC#d`7ZzTc3kxsJg@uQXYTV&cj3a0W z_2adt0`c81r(tG$56yUPO?u-WO`!K^(lFDo z@oiT`c?JMilGYn^eAf4AgPYMw+E_`8EO&?8=7ocxX ziYxqUOI(;_XGVJ=4_1nmcp5T;paX3xS*e6P_9oDWKxepT8d0A6)m|NQK&y)v!n9ok z`b5-8<&U?;Pti{DRH8QoI(q1{L9447Lhi#rdkf$}WOlLW;>XoI73oy#-<=@00Q3rU zdFYF)m!drhS{X?pDE8&KJ5p>uqbuJ?d=A*X-I)dI4t5J$p4LSq%$ephI>7YM{LKQB3K4@jD^78YwMsI#| zK_^3@dRP92C>Vp$MEzXGTF`&RRHf)&CS>q1=&A0k!y5b^^xjwtq-aloZi#sIE6x%x zB&7cU^w?O1lC|hTFvg)kT5Qbl>x2XWfAbm?f&L2~;w*FJJ0!&S1$`Gr?N&Gb+=Tc` zK~KdYWQb;YQEd`}-g)Q>(0e^KS_pcj70+-9Xm69QO`z`sje5u*hw$$~(`+Y;Bj?Yc zdGiQ?&d{Q!_6iu|{CFe|23z1g(B1<6o~@eQ}qDtO+PS! zzSv9i=6j`=0eT5(G%+CXmzf=7NB zXiSX$jXa-|8eNi*UeWE z-75NXuy4nu@9B!&nvl(U(5bHb2OH)|(D?aRpkXqg#tRAZZ-e$W>_-XlCi;-4t46g9 zGThO|0!k9-9-zB=y24or@fU!80$1{Nw*sRQ;%6~F2uC*z4z|KJ_`CxtZqiQ1w0G7BN}#;OaCMZ^v!@g_7yGsIhy&FsuNM|jG7U`EWT5JMt% ziLszUTp6*;eKc4Q-X5`Y#G^>R+!p7;%~)vYhSycnA$h1 zMP>=u6!7}+Sf11(#qG0MHHKKr=<-R4}ooOebv&c#48A< mHtn;tP(B^FaB_l3ZfzIZR+6pNinguo)<&N!aZYPH=l=nEPUf!w diff --git a/build/EEPROM_programmer.hex b/build/EEPROM_programmer.hex index 6608e45..56bb2ac 100644 --- a/build/EEPROM_programmer.hex +++ b/build/EEPROM_programmer.hex @@ -1,44 +1,44 @@ :020000040800F2 -:10000000008001201D2700082D1900082F19000865 -:1000100031190008331900083519000800000000E4 -:100020000000000000000000000000003719000878 -:1000300039190008000000003B1900083D190008AC -:100040006D2700086D2700086D2700086D27000840 -:100050006D2700086D2700086D2700086D27000830 -:100060006D2700086D2700086D2700086D27000820 -:100070006D2700086D2700086D2700086D27000810 -:100080006D2700086D2700086D270008000000009C -:100090000000000000000000000000006D270008C4 -:1000A0006D2700086D2700086D2700086D270008E0 -:1000B0006D2700086D2700086D2700086D270008D0 -:1000C0006D2700086D2700086D2700086D270008C0 -:1000D0006D2700086D2700086D270008000000004C -:1000E0006D2700086D2700086D270008000000003C -:1000F0000000000000000000000000006D27000864 -:10010000000000006D2700086D2700086D2700081B +:1000000000800120ED290008051B0008071B0008DF +:10001000091B00080B1B00080D1B00080000000056 +:100020000000000000000000000000000F1B00089E +:10003000111B000800000000131B0008151B00081E +:100040003D2A00083D2A00083D2A00083D2A0008F4 +:100050003D2A00083D2A00083D2A00083D2A0008E4 +:100060003D2A00083D2A00083D2A00083D2A0008D4 +:100070003D2A00083D2A00083D2A00083D2A0008C4 +:100080003D2A00083D2A00083D2A00080000000023 +:100090000000000000000000000000003D2A0008F1 +:1000A0003D2A00083D2A00083D2A00083D2A000894 +:1000B0003D2A00083D2A00083D2A00083D2A000884 +:1000C0003D2A00083D2A00083D2A00083D2A000874 +:1000D0003D2A00083D2A00083D2A000800000000D3 +:1000E0003D2A00083D2A00083D2A000800000000C3 +:1000F0000000000000000000000000003D2A000891 +:10010000000000003D2A00083D2A00083D2A0008A2 :1001100000000000000000000000000000000000DF -:100120006D2700086D2700086D2700086D2700085F -:100130006D27000800000000000000000000000023 -:100140000000000000000000000000006D27000813 -:100150006D2700086D2700086D2700086D2700082F -:100160006D2700086D270008000000000000000057 +:100120003D2A00083D2A00083D2A00083D2A000813 +:100130003D2A000800000000000000000000000050 +:100140000000000000000000000000003D2A000840 +:100150003D2A00083D2A00083D2A00083D2A0008E3 +:100160003D2A00083D2A00080000000000000000B1 :10017000000000000000000000000000000000007F -:10018000000000006D2700080000000000000000D3 -:040190006D270008CF +:10018000000000003D2A0008000000000000000000 +:040190003D2A0008FC :1001C0000348044B834202D0034B03B118477047E6 :1001D0007000002070000020000000000548064963 :1001E0000B1AD90F01EBA301491002D0034B03B145 :1001F00018477047700000207000002000000000C9 :1002000010B5064C237843B9FFF7DAFF044B13B15E :100210000448AFF300800123237010BD700000205C -:10022000000000007027000808B5044B1BB104490A +:1002200000000000402A000808B5044B1BB1044937 :100230000448AFF30080BDE80840CFE700000000AD -:100240007400002070270008014B1868704700BF39 +:1002400074000020402A0008014B1868704700BF66 :100250000000002070B50D4E0D4D761BB61006D077 :10026000002455F8043B01349847A642F9D1094EC1 -:10027000094D761B02F07CFAB61006D0002455F822 -:10028000043B01349847A642F9D170BD8428000888 -:10029000842800088828000884280008024B0146AA +:10027000094D761B02F0E4FBB61006D0002455F8B9 +:10028000043B01349847A642F9D170BDA82C000860 +:10029000A82C0008AC2C0008A82C0008024B014632 :1002A000186800F059B900BF00000020024B014659 :1002B000186800F0EFB800BF00000020844641EA53 :1002C000000313F003036DD1403A41D351F8043BCE @@ -94,7 +94,7 @@ :1005E000211A304600F012F8013001D02560D5E71D :1005F0000C233046336000F0D3F80020F8BD3046BD :1006000000F004F87860E0E78C00002038B5074D72 -:100610000022044608462A6002F05CF8431C00D021 +:100610000022044608462A6002F0C4F9431C00D0B8 :1006200038BD2B68002BFBD0236038BD9400002020 :100630000CB410B59CB01EAB6FF00044CDE90614AD :100640000291084953F8042B059102A901930494DF @@ -181,7 +181,7 @@ :100B50003002092AF5D9059364E74021FFF7FCFC30 :100B6000C8F80000C8F8100018B14022C8F81420D6 :100B700004E70C23C9F800304FF0FF3087E700BFCF -:100B800040280008482800084C2800080000000001 +:100B8000642C00086C2C0008702C00080000000089 :100B9000A50700082DE9F84F92461F460A698B68A1 :100BA000DDF828909A42B8BF1A46CAF8002091F89A :100BB00043300C46064613B10132CAF800202268C1 @@ -243,7 +243,7 @@ :100F300003F104050D600CBF1D681D885DE713F00B :100F4000400F0B68626903F104050D601B6814BF54 :100F50001A801A60F5E60A68B2F9005004320A6095 -:100F60002A463CE760687FE75428000868280008A4 +:100F60002A463CE760687FE7782C00088C2C000854 :100F700001F0FF01102A2BDB10F0070F08D010F84A :100F8000013B013A8B422DD010F0070F42B3F6D14E :100F9000F0B441EA012141EA014122F007047FF067 @@ -332,329 +332,395 @@ :1014C00002030393039B04B0704700BF003802403F :1014D00030B595B005464C221E4901A8FEF7EEFE38 :1014E000002409E0002214AB03EB840333F84C1C06 -:1014F000194801F02EF80134122C29DC0D2C0EDCD9 +:1014F000194801F082F90134122C29DC0D2C0EDC84 :1015000045FA04F313F0010FECD0012214AB03EB06 -:10151000840333F84C1C104801F01BF8EBE745FA44 +:10151000840333F84C1C104801F06FF9EBE745FAEF :1015200004F313F0010F09D0012214AB03EB840381 -:1015300033F84C1C094801F00CF8DCE7002214AB2E -:1015400003EB840333F84C1C044801F002F8D2E7A3 -:1015500015B030BD88270008000802400004024092 +:1015300033F84C1C094801F060F9DCE7002214ABD9 +:1015400003EB840333F84C1C044801F056F9D2E74E +:1015500015B030BD582A00080008024000040240BF :1015600070B50E4615460D4C021E18BF01224FF4F1 -:101570008071204600F0EDFF321E18BF01224FF4AB -:101580000071204600F0E5FF2A1E18BF01224FF42B -:101590008061204600F0DDFF70BD00BF000002400A +:101570008071204601F041F9321E18BF01224FF45C +:101580000071204601F039F92A1E18BF01224FF4DC +:101590008061204601F031F970BD00BF00000240BB :1015A00000B587B00023019302930393049305933E :1015B00041F6F3030193012808D00223039301A904 -:1015C000054800F0DFFE07B05DF804FB012302933D +:1015C000054801F033F807B05DF804FB01230293EE :1015D00002230493F3E700BF0000024030B589B056 :1015E0000020FFF7DDFF6C460E4D0FCD0FC495E8D0 :1015F0000F0084E80F000024254600E00134072C8A -:101600000DDC08AB03EB840333F8201C064800F024 -:1016100099FF0128F2D10123A3401D44EEE728469B -:1016200009B030BDD42700080000024070B588B072 +:101600000DDC08AB03EB840333F8201C064801F023 +:10161000EDF80128F2D10123A3401D44EEE728464E +:1016200009B030BDA42A00080000024070B588B09F :1016300006460120FFF7B4FF6C46134D0FCD0FC4D3 :1016400095E80F0084E80F00002409E0002208ABB1 -:1016500003EB840333F8201C0C4800F07AFF0134BC +:1016500003EB840333F8201C0C4801F0CEF801346E :10166000072C0EDC46FA04F313F0010FEED0012232 -:1016700008AB03EB840333F8201C044800F069FF37 -:10168000EDE708B070BD00BFD4270008000002409D +:1016700008AB03EB840333F8201C044801F0BDF8E9 +:10168000EDE708B070BD00BFA42A000800000240CA :1016900038B505460C46012211461046FFF760FF9B :1016A0002846FFF715FF2046FFF7C0FF012211462D :1016B0000020FFF755FF002201211046FFF750FFE1 :1016C000012211460020FFF74BFF01221146104670 -:1016D000FFF746FF38BD10B5FFF7FAFE0020FFF711 -:1016E0005FFF012200210846FFF73AFFFFF776FF70 -:1016F0000446012211461046FFF732FF204610BD76 -:1017000038B505460C46AA2145F25550FFF7C0FFF3 -:10171000552142F6AA20FFF7BBFF902145F2555014 -:10172000FFF7B6FF0020FFF7D6FF28600120FFF784 -:10173000D2FF2060F02145F25550FFF7A9FF38BDD8 -:1017400070B58AB00024059406940794089409940F -:101750004FF6FF730593012606960225089505A905 -:10176000084800F00FFE009401940294039404943E -:101770001F230093019603956946034800F002FE7B -:101780000AB070BD000802400004024000B587B0F6 -:101790000023019302930393049305934FF4E063B2 -:1017A0000193012302930223049301A9024800F04C -:1017B000E9FD07B05DF804FB0000024010B50446E7 -:1017C000FEF77EFF4FF0FF3382B22146014800F062 -:1017D00036FA10BD9800002072B6FEE708B50A4838 -:1017E0000A4B03604FF4E133436000238360C3601E -:1017F00003610C2242618361C36100F0F0F900B91A -:1018000008BDFFF7E9FF00BF98000020004400403A -:1018100000B595B03022002108A8FEF7E9FD0023AD -:101820000393049305930693079301931F4A116C46 -:1018300041F080511164126C02F080520192019AC1 -:1018400002931B490A6822F4404242F400420A60B3 -:101850000A6802F440420292029A0221089101228F -:101860000B9210220C920E910F9310924FF4A873CA -:101870001193042312930723139308A800F046FA48 -:1018800080B90F23039302210491002305934FF4A1 -:1018900080520692079303A800F09EFC20B915B071 -:1018A0005DF804FBFFF798FFFFF796FF0038024052 -:1018B0000070004070B582B000F0D6FEFFF7A8FFC0 -:1018C000FFF7D6FDFFF78AFF0020FFF769FEFFF75D -:1018D00037FFFFF75BFF694601A8FFF711FF0D20F7 -:1018E000FEF7DCFC05460D20FEF7D8FC04460C4E46 -:1018F000019A31462846FEF7B7FE009A3146204647 -:10190000FEF7B2FE0748FFF759FF2846FFF756FFDC -:101910000548FFF753FF2046FFF750FFFEE700BFE3 -:10192000F42700080028000818280008FEE7FEE752 -:10193000FEE7FEE7FEE770477047704708B500F026 -:10194000ADFE08BD82B0002100910B4B5A6C42F4F1 -:1019500080425A645A6C02F480420092009A0191CB -:101960001A6C42F080521A641B6C03F0805301938E -:10197000019B02B0704700BF0038024000B589B03B -:101980000023039304930593069307930268144B73 -:101990009A4202D009B05DF804FB0021019103F5E1 -:1019A000FA331A6C42F400321A641A6C02F40032F0 -:1019B0000192019A02911A6B42F001021A631B6BA9 -:1019C00003F001030293029B0C230393022304936D -:1019D0000723079303A9034800F0D4FCDAE700BF0C -:1019E0000044004000000240026802F10C0353E88A -:1019F000003F23F490730C3242E800310029F3D108 -:101A0000026802F1140353E8003F23F0010314328B -:101A100042E800310029F3D1036B012B05D02023CC -:101A200080F84230002303637047026802F10C0320 -:101A300053E8003F23F010030C3242E80031002944 -:101A4000F3D1ECE738B504460268136923F4405338 -:101A5000C1680B43136183680269134342691343EE -:101A6000C2691A430168CB6823F4164323F00C03C0 -:101A70001343CB600268536923F4407381690B43BD -:101A800053610368314A934206D002F58062934263 -:101A900002D000F057FC01E000F064FCE369B3F50C -:101AA000004F29D00021031849411B1841F10001C2 -:101AB000C90041EA5371DB00181863684FEA8302DA -:101AC0004FEA937341F10001FFF750FB204DA5FB56 -:101AD00000325109642303FB11031B013233A5FBC0 -:101AE00003235B0903F0F00202EB011203F00F0382 -:101AF000216813448B6038BD0023021843EB0301B7 -:101B0000121841F10001C90041EA5271D2001018C7 -:101B100041F10001626892185B41FFF727FB0C4D11 -:101B2000A5FB00325109642303FB1103DB003233B0 -:101B3000A5FB03235B095A0002F4F87202EB0112C1 -:101B400003F00703216813448B60D4E700100140C1 -:101B50001F85EB512DE9F04383B005460E4617462D -:101B60009946DDF828802C68246836EA04030CBF07 -:101B70004FF0010C4FF0000CBC4528D1B8F1FF3FED -:101B8000F1D000F097FDA0EB0900404523D8B8F153 -:101B9000000F22D02B68DA6812F0040FE3D0802EF9 -:101BA000E1D0402EDFD01A6812F0080FDBD00024FD -:101BB00001941A6801925B680193019B2846FFF724 -:101BC00013FF08236B6485F84040012000E00020EB -:101BD00003B0BDE8F0830320FAE70320F8E760B321 -:101BE00010B5044690F8413013B3242384F84130F3 -:101BF0002268D36823F40053D3602046FFF722FF06 -:101C00002268136923F4904313612268536923F017 -:101C10002A0353612268D36843F40053D360002041 -:101C20006064202384F8413084F84230606310BD42 -:101C300080F84030FFF7A2FED7E7012070472DE97A -:101C4000F04182B01E4690F84130DBB2202B56D1D5 -:101C500004460D469046002955D00AB901204FE0B0 -:101C600000234364212380F8413000F023FD074620 -:101C7000A4F82480A4F82680A368B3F5805F02D07E -:101C80004FF0000814E023692BB34FF000080FE079 -:101C9000202384F84130032032E038F8023B2268E8 -:101CA000C3F308035360E28C92B2013A92B2E28429 -:101CB000E38C9BB293B100963B46002280212046E4 -:101CC000FFF748FF0028E3D1002DE6D015F8012BDF -:101CD00023685A60E7E7A8460025E9E700963B46F7 -:101CE000002240212046FFF735FF18B9202384F851 -:101CF000413005E0202384F84130032000E0022039 -:101D000002B0BDE8F0810120FAE70000002800F0F1 -:101D1000E08170B582B00446036813F0010F3BD038 -:101D20009F4B9B6803F00C03042B2CD09C4B9B68AF -:101D300003F00C03082B21D06368B3F5803F4FD02C -:101D4000B3F5A02F52D0964B1A6822F480321A6055 -:101D50001A6822F480221A606368002B50D000F0C9 -:101D6000A9FC05468E4B1B6813F4003F14D100F00C -:101D7000A1FC401B6428F5D90320B1E1884B5B68C6 -:101D800013F4800FD8D0864B1B6813F4003F03D0A8 -:101D90006368002B00F09F81236813F0020F54D07A -:101DA0007F4B9B6813F00C0F3ED07D4B9B6803F07C -:101DB0000C03082B33D0E368002B68D0794B012249 -:101DC0001A6000F077FC0546754B1B6813F0020F94 -:101DD00054D100F06FFC401B0228F5D903207FE1AD -:101DE0006F4A136843F480331360B5E76C4B1A688D -:101DF00042F480221A601A6842F480321A60ABE71B -:101E000000F058FC0546664B1B6813F4003FC3D036 -:101E100000F050FC401B6428F5D9032060E1604BC2 -:101E20005B6813F4800FC6D15D4B1B6813F0020F83 -:101E300003D0E368012B40F05081594A136823F026 -:101E4000F803216943EAC1031360236813F0080F04 -:101E500042D063696BB3534B0122C3F8802E00F06C -:101E600029FC05464E4B5B6F13F0020F34D100F096 -:101E700021FC401B0228F5D9032031E1484A1368B0 -:101E800023F0F803216943EAC1031360DDE7454B02 -:101E900000221A6000F00EFC0546414B1B6813F04F -:101EA000020FD2D000F006FC401B0228F5D9032017 -:101EB00016E13C4B0022C3F8802E00F0FBFB0546E8 -:101EC000374B5B6F13F0020F06D000F0F3FB401BA3 -:101ED0000228F5D9032003E1236813F0040F77D01B -:101EE0002F4B1B6C13F0805F33D1002301932C4BDD -:101EF0001A6C42F080521A641B6C03F080530193F9 -:101F0000019B0125284B1B6813F4807F23D0A36815 -:101F1000012B34D0052B38D0214B1A6F22F001024F -:101F20001A671A6F22F004021A67A368002B3DD0CB -:101F300000F0C0FB06461A4B1B6F13F0020F46D190 -:101F400000F0B8FB801B41F288339842F3D903209C -:101F5000C6E00025D6E7144A136843F48073136083 -:101F600000F0A8FB0646104B1B6813F4807FCED10F -:101F700000F0A0FB801B0228F5D90320B0E0084A3E -:101F8000136F43F001031367CFE7054B1A6F42F05D -:101F900004021A671A6F42F001021A67C5E700BF10 -:101FA00000380240000047420070004000F082FB11 -:101FB0000646524B1B6F13F0020F08D000F07AFB5D -:101FC000801B41F288339842F3D9032088E0EDB9B1 -:101FD000A369002B00F08380484A926802F00C024B -:101FE000082A51D0022B17D0454B00221A6600F068 -:101FF00061FB0446414B1B6813F0007F42D000F0A8 -:1020000059FB001B0228F5D9032069E03B4A136CF9 -:1020100023F080531364DBE7394B00221A6600F08B -:1020200049FB0546354B1B6813F0007F06D000F0D6 -:1020300041FB401B0228F5D9032051E0E369226AE5 -:102040001343626A43EA8213A26A5208013A43EADE -:102050000243E26A43EA0263284A5360284B0122A2 -:102060001A6600F027FB0446244B1B6813F0007F20 -:1020700006D100F01FFB001B0228F5D903202FE03A -:1020800000202DE000202BE0012B2BD01B4B5B68A8 -:1020900003F48001E269914226D103F03F02216AF4 -:1020A0008A4223D1616A47F6C0721A40B2EB811F9F -:1020B0001ED103F44031A26A5208013AB1EB024F3B -:1020C00018D103F07063E26AB3EB026F14D1002001 -:1020D00006E001207047012002E0012000E000201E -:1020E00002B070BD0120FBE70120F9E70120F7E70E -:1020F0000120F5E70120F3E70120F1E70038024075 -:102100000000474208B5314B9B6803F00C03042BD9 -:1021100057D0082B57D12D4B5A6802F03F025B680D -:1021200013F4800F2AD0294B5968C1F3881C4FEA59 -:102130004C11B1EB0C006EEB0E0E4FEA8E1343EA1E -:1021400090638101091A63EB0E03DB0043EA5173CC -:10215000C90011EB0C0C43F10003590200234FEAB4 -:102160004C2041EADC51FFF701F8184B5B68C3F3E0 -:10217000014301335B00B0FBF3F025E0134B5968DA -:10218000C1F3881C4FEA4C11B1EB0C006EEB0E0E44 -:102190004FEA8E1343EA90638101091A63EB0E0341 -:1021A000DB0043EA5173C90011EB0C0C43F100034F -:1021B000990200234FEA8C2041EA9C51FEF7D6FF9A -:1021C000D3E7034800E0034808BD00BF00380240E1 -:1021D00000127A000024F400002800F09B8070B503 -:1021E0000D4604464F4B1B6803F007038B4208D291 -:1021F000CBB24C4A1370136803F007038B4240F0D4 -:102200008B80236813F0020F17D013F0040F04D053 -:10221000454A936843F4E0539360236813F0080F32 -:1022200004D0414A936843F4604393603E4A936804 -:1022300023F0F003A1680B439360236813F0010FB0 -:1022400032D06368012B21D09A1E012A25D9364A43 -:10225000126812F0020F61D033498A6822F003023B -:1022600013438B6000F026FA06462F4B9B6803F061 -:102270000C036268B3EB820F16D000F01BFA801BD0 -:1022800041F288339842F0D9032042E0264A12688E -:1022900012F4003FE0D101203BE0234A126812F023 -:1022A000007FD9D1012034E01E4B1B6803F00703E7 -:1022B000AB4207D9EAB21B4B1A701B6803F0070345 -:1022C000AB422DD1236813F0040F06D0164A936851 -:1022D00023F4E053E1680B439360236813F0080F85 -:1022E00007D0114A936823F46043216943EAC1038C -:1022F0009360FFF707FF0C4B9B68C3F303130B4A74 -:10230000D35CD8400A4B18600A4B186800F086F975 -:10231000002070BD012070470120FAE70120F8E796 -:102320000120F6E7003C024000380240282800085F -:102330006C00002068000020014B1868704700BF47 -:102340006C00002008B5FFF7F7FF044B9B68C3F350 -:102350008223034AD35CD84008BD00BF0038024046 -:102360003828000808B5FFF7E7FF044B9B68C3F364 -:102370004233034AD35CD84008BD00BF0038024056 -:102380003828000800230F2B00F2D28070B582B0ED -:1023900060E085685E000324B44025EA0405CC684B -:1023A000B4402C438460456825EA02054C68C4F3B8 -:1023B00000129A402A4342605AE0DC08083450F880 -:1023C000246003F0070295000F22AA4026EA020EBD -:1023D0000A69AA4042EA0E0240F824205CE0042286 -:1023E00000E0002202FA0EF22A430234514D45F871 -:1023F0002420514A94686FEA0C0224EA0C054E68C6 -:1024000016F4801F01D04CEA04054B4CA560E4682B -:1024100002EA04054E6816F4001F01D04CEA0405D8 -:10242000454CE560646802EA04054E6816F4003F16 -:1024300001D04CEA0405404C6560246822404D6898 -:1024400015F4803F01D04CEA04023B4C226001337A -:102450000F2B6BD801229A400C6804EA020C32EA76 -:102460000404F4D14C6804F00304013C012C90D91D -:102470004A6802F00302032A09D0C4685D000322FF -:10248000AA4024EA02048A68AA402243C2604A6839 -:1024900002F00302022A90D004684FEA430E03229E -:1024A00002FA0EF224EA02044A6802F0030202FA77 -:1024B0000EF2224302604A6812F4403FC7D0002265 -:1024C00001921E4A546C44F480445464526C02F4E9 -:1024D00080420192019A9C08A51C164A52F8255088 -:1024E00003F003024FEA820E0F2202FA0EF225EAEF -:1024F0000205134A90423FF474AF02F580629042A5 -:102500000ED002F5806290420CD002F580629042BB -:102510000AD002F5806290423FF461AF072261E782 -:1025200001225FE702225DE703225BE702B070BD94 -:10253000704700BF00380140003C014000380240B5 -:10254000000002400369194201D0012070470020B9 -:1025500070470AB1816170470904816170470000CA -:10256000074AD36823F4E0631B041B0C000200F449 -:10257000E060034343F0BF6343F40033D36070472C -:1025800000ED00E000B5194BDB68C3F30223C3F193 -:10259000070CBCF1040F28BF4FF0040C03F1040E2C -:1025A000BEF1060F18D9033B4FF0FF3E0EFA0CFCAC -:1025B00021EA0C0199400EFA03F322EA03031943BE -:1025C00000280BDB0901C9B200F1604000F5614051 -:1025D00080F800135DF804FB0023E5E700F00F002E -:1025E0000901C9B2024B1954F4E700BF00ED00E045 -:1025F00014ED00E00138B0F1807F0BD24FF0E02302 -:102600005861054AF02182F82310002098610722C2 -:102610001A6170470120704700ED00E010B50446D4 -:102620000E4B18784FF47A73B3FBF0F30C4A106832 -:10263000B0FBF3F0FFF7DEFF68B90F2C01D90120E2 -:102640000AE0002221464FF0FF30FFF79BFF054BC9 -:102650001C60002000E0012010BD00BF64000020CD -:102660006C0000206800002008B50B4B1A6842F48B -:1026700000721A601A6842F480621A601A6842F4A2 -:1026800080721A600320FFF76BFF0020FFF7C6FF80 -:10269000FFF758F9002008BD003C0240034A1168CA -:1026A000034B1B780B441360704700BFE000002011 -:1026B00064000020014B1868704700BFE000002054 -:1026C000034AD2F8883043F47003C2F88830704768 -:1026D00000ED00E010B503460C4A0D490D480068B6 -:1026E00040B10C4800680344521A934206D8094A84 -:1026F000136010BD0748084C0460F2E7FDF7A4FD25 -:102700000C2303604FF0FF30F3E700BF008001208F -:1027100000040000E4000020E8000020DFF834D0CE -:10272000FFF7CEFF0C480D490D4A002302E0D458B4 -:10273000C4500433C4188C42F9D30A4A0A4C00230B -:1027400001E013600432A242FBD3FDF783FDFFF7E3 -:10275000B1F87047008001200000002070000020C8 -:102760008C28000870000020E8000020FEE7000030 -:10277000F8B500BFF8BC08BC9E467047F8B500BF6E -:08278000F8BC08BC9E4670473E -:102788000100000002000000040000000800000032 -:102798001000000020000000400000008000000041 -:1027A8000001000000020000000400000008000012 -:1027B80000100000002000000100000002000000DE -:1027C80004000000080000001000000001000000E4 -:1027D80002000000000800000010000010000000C7 -:1027E8002000000040000000800000003078253004 -:1027F8003258200D0A0000004D616E7566616374E1 -:1028080075726572204944203D200D0A00000000C1 -:10281800446576696365204944203D200D0A00001F -:102828000000000000000000010203040607080978 -:102838000000000001020304232D302B20000000BB -:10284800686C4C0065666745464700003031323396 -:102858003435363738394142434445460000000094 -:1028680030313233343536373839616263646566FE -:04287800000000005C -:08287C0020E9FF7F01000000CC -:04288400290200081D -:042888000102000841 -:10288C000400002000000000000000000000000018 -:10289C00000000000000000000000000000000002C -:1028AC00000000000000000000000000000000001C -:1028BC00000000000000000000000000000000000C -:1028CC0000000000000000000000000000000000FC -:1028DC0000000000000000000000000000000000EC -:1028EC000000000001000000100000000024F400B3 -:040000050800271DAB +:1016D000FFF746FF38BD08B5AA2145F25550FFF780 +:1016E000D7FF552142F6AA20FFF7D2FF802145F20D +:1016F0005550FFF7CDFFAA2145F25550FFF7C8FF1F +:10170000552142F6AA20FFF7C3FF102145F255509C +:10171000FFF7BEFF962001F027F908BD38B5044653 +:101720000D46AA2145F25550FFF7B2FF552142F66A +:10173000AA20FFF7ADFFA02145F25550FFF7A8FF03 +:1017400029462046FFF7A4FF38BD10B5FFF7C0FEBD +:101750000020FFF725FF012200210846FFF700FFC8 +:10176000FFF73CFF0446012211461046FFF7F8FE42 +:10177000204610BD38B505460C46AA2145F2555005 +:10178000FFF786FF552142F6AA20FFF781FF90213F +:1017900045F25550FFF77CFF0020FFF7D6FF286089 +:1017A0000120FFF7D2FF2060F02145F25550FFF7EE +:1017B0006FFF38BD30B585B00546002412E01C49E6 +:1017C00001A8FEF751FF01A8FEF77AFF4FF0FF33A3 +:1017D00082B201A9174800F01EFB04F00F030F2B83 +:1017E00014D00134B4F5002F1FDA2046FFF7ADFF07 +:1017F000C2B28DF80F20002DE1D14FF0FF3301224E +:101800000DF10F010B4800F006FBEAE70A4B1B68DD +:10181000ADF800301B0C8DF802304FF0FF33022280 +:101820006946044800F0F7FADBE705B030BD00BFB9 +:10183000C42A000898000020582B000870B58AB010 +:101840000024059406940794089409944FF6FF73B6 +:101850000593012606960225089505A9084800F07B +:10186000E5FE009401940294039404941F230093D2 +:10187000019603956946034800F0D8FE0AB070BD92 +:10188000000802400004024000B587B00023019325 +:1018900002930393049305934FF4E06301930123B0 +:1018A00002930223049301A9024800F0BFFE07B08F +:1018B0005DF804FB0000024010B50446FEF700FF8F +:1018C0004FF0FF3382B22146014800F0A4FA10BD68 +:1018D0009800002010B582B00C48FFF7EDFF0024FF +:1018E0000DE04FF0FF3301220DF10701084800F031 +:1018F000F8FA9DF807102046FFF710FF0134072C77 +:10190000EFDD0448FFF7D8FF02B010BDCC2A000875 +:1019100098000020EC2A000872B6FEE708B50A48D5 +:101920000A4B03604FF4E133436000238360C360DC +:1019300003610C2242618361C36100F03CFA00B98B +:1019400008BDFFF7E9FF00BF9800002000440040F9 +:1019500000B595B03022002108A8FEF749FD00230C +:101960000393049305930693079301931F4A116C05 +:1019700041F080511164126C02F080520192019A80 +:1019800002931B490A6822F4404242F400420A6072 +:101990000A6802F440420292029A0221089101224E +:1019A0000B9210220C920E910F9310924FF4A87389 +:1019B0001193042312930723139308A800F0FAFA53 +:1019C00080B90F23039302210491002305934FF460 +:1019D00080520692079303A800F052FD20B915B07B +:1019E0005DF804FBFFF798FFFFF796FF0038024011 +:1019F0000070004070B584B000F08AFFFFF7A8FFC8 +:101A0000FFF736FDFFF78AFF0020FFF7C9FDFFF75C +:101A100015FFFFF739FF02A903A8FFF7ABFE0D2062 +:101A2000FEF73CFC05460D20FEF738FC0446284E28 +:101A3000039A31462846FEF717FE029A31462046A1 +:101A4000FEF712FE234E3046FFF736FF2248FFF71F +:101A500033FF2846FFF730FF2048FFF72DFF2046D1 +:101A6000FFF72AFF3046FFF727FF05E01C48FFF786 +:101A700023FF0120FFF79EFE1A48FFF71DFF1A48BB +:101A8000FFF71AFF1948FFF717FF1948FFF714FF70 +:101A90004FF0FF3301220DF10701164800F021FA43 +:101AA0009DF80730322B07D0332B0BD0312BDDD0F4 +:101AB0001148FFF701FFDFE71048FFF7FDFEFFF7D2 +:101AC0000AFED9E70E48FFF7F7FEFFF703FFD3E75B +:101AD000F82A0008042B0008342B00084C2B0008BF +:101AE000EC2B00085C2B0008A42B0008BC2B000882 +:101AF000D02B000898000020382C0008002C00088B +:101B0000142C0008FEE7FEE7FEE7FEE7FEE770475D +:101B10007047704708B500F015FF08BD82B000217E +:101B200000910B4B5A6C42F480425A645A6C02F496 +:101B300080420092009A01911A6C42F080521A641D +:101B40001B6C03F080530193019B02B0704700BFF0 +:101B50000038024000B589B0002303930493059335 +:101B6000069307930268144B9A4202D009B05DF8BD +:101B700004FB0021019103F5FA331A6C42F40032A0 +:101B80001A641A6C02F400320192019A02911A6BE3 +:101B900042F001021A631B6B03F001030293029BE4 +:101BA0000C230393022304930723079303A90348F9 +:101BB00000F03CFDDAE700BF0044004000000240B6 +:101BC000026802F10C0353E8003F23F490730C32D7 +:101BD00042E800310029F3D1026802F1140353E80E +:101BE000003F23F00103143242E800310029F3D111 +:101BF000036B012B05D0202380F8423000230363C0 +:101C00007047026802F10C0353E8003F23F0100311 +:101C10000C3242E800310029F3D1ECE738B5044634 +:101C20000268136923F44053C1680B43136183684E +:101C30000269134342691343C2691A430168CB68BE +:101C400023F4164323F00C031343CB60026853695B +:101C500023F4407381690B4353610368314A934213 +:101C600006D002F58062934202D000F0BFFC01E092 +:101C700000F0CCFCE369B3F5004F29D00021031834 +:101C800049411B1841F10001C90041EA5371DB00D1 +:101C9000181863684FEA83024FEA937341F1000119 +:101CA000FFF764FA204DA5FB00325109642303FBC2 +:101CB00011031B013233A5FB03235B0903F0F00280 +:101CC00002EB011203F00F03216813448B6038BD4F +:101CD0000023021843EB0301121841F10001C9006F +:101CE00041EA5271D200101841F100016268921865 +:101CF0005B41FFF73BFA0C4DA5FB00325109642311 +:101D000003FB1103DB003233A5FB03235B095A00FD +:101D100002F4F87202EB011203F007032168134486 +:101D20008B60D4E7001001401F85EB512DE9F04393 +:101D300083B005460E4617469946DDF828802C6884 +:101D4000246836EA04030CBF4FF0010C4FF0000C7E +:101D5000BC4528D1B8F1FF3FF1D000F0FFFDA0EB6A +:101D60000900404523D8B8F1000F22D02B68DA686B +:101D700012F0040FE3D0802EE1D0402EDFD01A689D +:101D800012F0080FDBD0002401941A6801925B68FE +:101D90000193019B2846FFF713FF08236B6485F826 +:101DA0004040012000E0002003B0BDE8F0830320A4 +:101DB000FAE70320F8E760B310B5044690F8413025 +:101DC00013B3242384F841302268D36823F40053EA +:101DD000D3602046FFF722FF2268136923F4904363 +:101DE00013612268536923F02A0353612268D36880 +:101DF00043F40053D36000206064202384F8413012 +:101E000084F84230606310BD80F84030FFF7A2FED6 +:101E1000D7E7012070472DE9F04182B01E4690F8C7 +:101E20004130DBB2202B56D104460D4690460029A6 +:101E300055D00AB901204FE000234364212380F8E4 +:101E4000413000F08BFD0746A4F82480A4F82680DA +:101E5000A368B3F5805F02D04FF0000814E0236957 +:101E60002BB34FF000080FE0202384F8413003200B +:101E700032E038F8023B2268C3F308035360E28C77 +:101E800092B2013A92B2E284E38C9BB293B1009693 +:101E90003B46002280212046FFF748FF0028E3D17F +:101EA000002DE6D015F8012B23685A60E7E7A84615 +:101EB0000025E9E700963B46002240212046FFF737 +:101EC00035FF18B9202384F8413005E0202384F839 +:101ED0004130032000E0022002B0BDE8F081012083 +:101EE000FAE72DE9F04182B01E4690F84230DBB2AD +:101EF000202B59D104460D469046002958D00AB9E6 +:101F0000012052E000234364222280F84220036330 +:101F100000F024FD0746A4F82C80A4F82E80A368C6 +:101F2000B3F5805F02D04FF000081CE0236913B1C5 +:101F30004FF0000817E0A846002514E0202384F89D +:101F40004230032031E023685B68C3F3080328F8BC +:101F5000023B03E023685B682B700135E28D92B28F +:101F6000013A92B2E285E38D9BB2C3B100963B4643 +:101F7000002220212046FFF7D9FE0028DED1002DC7 +:101F8000E1D0A368B3F5805FE4D013B92369002BD7 +:101F9000E0D023685B6803F07F032B70DDE720232C +:101FA00084F84230002000E0022002B0BDE8F08159 +:101FB0000120FAE7002800F0E08170B582B0044605 +:101FC000036813F0010F3BD09F4B9B6803F00C0399 +:101FD000042B2CD09C4B9B6803F00C03082B21D0C6 +:101FE0006368B3F5803F4FD0B3F5A02F52D0964B26 +:101FF0001A6822F480321A601A6822F480221A6069 +:102000006368002B50D000F0A9FC05468E4B1B687E +:1020100013F4003F14D100F0A1FC401B6428F5D953 +:102020000320B1E1884B5B6813F4800FD8D0864B56 +:102030001B6813F4003F03D06368002B00F09F81FE +:10204000236813F0020F54D07F4B9B6813F00C0FE2 +:102050003ED07D4B9B6803F00C03082B33D0E36824 +:10206000002B68D0794B01221A6000F077FC0546FE +:10207000754B1B6813F0020F54D100F06FFC401B2E +:102080000228F5D903207FE16F4A136843F48033B7 +:102090001360B5E76C4B1A6842F480221A601A6824 +:1020A00042F480321A60ABE700F058FC0546664BFC +:1020B0001B6813F4003FC3D000F050FC401B6428A1 +:1020C000F5D9032060E1604B5B6813F4800FC6D143 +:1020D0005D4B1B6813F0020F03D0E368012B40F047 +:1020E0005081594A136823F0F803216943EAC10378 +:1020F0001360236813F0080F42D063696BB3534B2E +:102100000122C3F8802E00F029FC05464E4B5B6F80 +:1021100013F0020F34D100F021FC401B0228F5D946 +:10212000032031E1484A136823F0F803216943EAA8 +:10213000C1031360DDE7454B00221A6000F00EFC7E +:102140000546414B1B6813F0020FD2D000F006FC8D +:10215000401B0228F5D9032016E13C4B0022C3F8AE +:10216000802E00F0FBFB0546374B5B6F13F0020F30 +:1021700006D000F0F3FB401B0228F5D9032003E151 +:10218000236813F0040F77D02F4B1B6C13F0805F84 +:1021900033D1002301932C4B1A6C42F080521A6405 +:1021A0001B6C03F080530193019B0125284B1B6896 +:1021B00013F4807F23D0A368012B34D0052B38D0B3 +:1021C000214B1A6F22F001021A671A6F22F00402E3 +:1021D0001A67A368002B3DD000F0C0FB06461A4BDF +:1021E0001B6F13F0020F46D100F0B8FB801B41F2C9 +:1021F00088339842F3D90320C6E00025D6E7144A75 +:10220000136843F48073136000F0A8FB0646104B7C +:102210001B6813F4807FCED100F0A0FB801B022846 +:10222000F5D90320B0E0084A136F43F001031367A8 +:10223000CFE7054B1A6F42F004021A671A6F42F09B +:1022400001021A67C5E700BF00380240000047429C +:102250000070004000F082FB0646524B1B6F13F0EB +:10226000020F08D000F07AFB801B41F288339842BD +:10227000F3D9032088E0EDB9A369002B00F0838037 +:10228000484A926802F00C02082A51D0022B17D05B +:10229000454B00221A6600F061FB0446414B1B6867 +:1022A00013F0007F42D000F059FB001B0228F5D943 +:1022B000032069E03B4A136C23F080531364DBE78F +:1022C000394B00221A6600F049FB0546354B1B6866 +:1022D00013F0007F06D000F041FB401B0228F5D927 +:1022E000032051E0E369226A1343626A43EA8213DE +:1022F000A26A5208013A43EA0243E26A43EA0263ED +:10230000284A5360284B01221A6600F027FB044636 +:10231000244B1B6813F0007F06D100F01FFB001B4D +:102320000228F5D903202FE000202DE000202BE02B +:10233000012B2BD01B4B5B6803F48001E2699142B7 +:1023400026D103F03F02216A8A4223D1616A47F60F +:10235000C0721A40B2EB811F1ED103F44031A26A51 +:102360005208013AB1EB024F18D103F07063E26AF0 +:10237000B3EB026F14D1002006E00120704701206A +:1023800002E0012000E0002002B070BD0120FBE768 +:102390000120F9E70120F7E70120F5E70120F3E745 +:1023A0000120F1E7003802400000474208B5314BF8 +:1023B0009B6803F00C03042B57D0082B57D12D4BEF +:1023C0005A6802F03F025B6813F4800F2AD0294B51 +:1023D0005968C1F3881C4FEA4C11B1EB0C006EEB4D +:1023E0000E0E4FEA8E1343EA90638101091A63EBE4 +:1023F0000E03DB0043EA5173C90011EB0C0C43F1EF +:102400000003590200234FEA4C2041EADC51FEF759 +:10241000ADFE184B5B68C3F3014301335B00B0FBB7 +:10242000F3F025E0134B5968C1F3881C4FEA4C11B7 +:10243000B1EB0C006EEB0E0E4FEA8E1343EA906385 +:102440008101091A63EB0E03DB0043EA5173C900F3 +:1024500011EB0C0C43F10003990200234FEA8C208E +:1024600041EA9C51FEF782FED3E7034800E00348AF +:1024700008BD00BF0038024000127A000024F400BA +:10248000002800F09B8070B50D4604464F4B1B683A +:1024900003F007038B4208D2CBB24C4A1370136887 +:1024A00003F007038B4240F08B80236813F0020F88 +:1024B00017D013F0040F04D0454A936843F4E05357 +:1024C0009360236813F0080F04D0414A936843F4E3 +:1024D000604393603E4A936823F0F003A1680B4386 +:1024E0009360236813F0010F32D06368012B21D071 +:1024F0009A1E012A25D9364A126812F0020F61D0BD +:1025000033498A6822F0030213438B6000F026FAF5 +:1025100006462F4B9B6803F00C036268B3EB820FF7 +:1025200016D000F01BFA801B41F288339842F0D994 +:10253000032042E0264A126812F4003FE0D1012055 +:102540003BE0234A126812F0007FD9D1012034E029 +:102550001E4B1B6803F00703AB4207D9EAB21B4BC3 +:102560001A701B6803F00703AB422DD1236813F0E8 +:10257000040F06D0164A936823F4E053E1680B4336 +:102580009360236813F0080F07D0114A936823F46F +:102590006043216943EAC1039360FFF707FF0C4BD7 +:1025A0009B68C3F303130B4AD35CD8400A4B1860F3 +:1025B0000A4B186800F086F9002070BD01207047B2 +:1025C0000120FAE70120F8E70120F6E7003C02408D +:1025D000003802404C2C00086C00002068000020ED +:1025E000014B1868704700BF6C00002008B5FFF76A +:1025F000F7FF044B9B68C3F38223034AD35CD840A4 +:1026000008BD00BF003802405C2C000808B5FFF789 +:10261000E7FF044B9B68C3F34233034AD35CD840C3 +:1026200008BD00BF003802405C2C000800230F2BBF +:1026300000F2D28070B582B060E085685E0003244D +:10264000B44025EA0405CC68B4402C438460456856 +:1026500025EA02054C68C4F300129A402A434260FE +:102660005AE0DC08083450F8246003F007029500B3 +:102670000F22AA4026EA020E0A69AA4042EA0E0286 +:1026800040F824205CE0042200E0002202FA0EF26E +:102690002A430234514D45F82420514A94686FEA88 +:1026A0000C0224EA0C054E6816F4801F01D04CEA97 +:1026B00004054B4CA560E46802EA04054E6816F474 +:1026C000001F01D04CEA0405454CE560646802EA4D +:1026D00004054E6816F4003F01D04CEA0405404C56 +:1026E0006560246822404D6815F4803F01D04CEAB3 +:1026F00004023B4C226001330F2B6BD801229A401D +:102700000C6804EA020C32EA0404F4D14C6804F0C8 +:102710000304013C012C90D94A6802F00302032A09 +:1027200009D0C4685D000322AA4024EA02048A6832 +:10273000AA402243C2604A6802F00302022A90D0F3 +:1027400004684FEA430E032202FA0EF224EA02045E +:102750004A6802F0030202FA0EF2224302604A685B +:1027600012F4403FC7D0002201921E4A546C44F438 +:1027700080445464526C02F480420192019A9C0895 +:10278000A51C164A52F8255003F003024FEA820EA8 +:102790000F2202FA0EF225EA0205134A90423FF494 +:1027A00074AF02F5806290420ED002F580629042D2 +:1027B0000CD002F5806290420AD002F5806290420D +:1027C0003FF461AF072261E701225FE702225DE784 +:1027D00003225BE702B070BD704700BF00380140C4 +:1027E000003C0140003802400000024003691942E9 +:1027F00001D001207047002070470AB18161704705 +:102800000904816170470000074AD36823F4E0633C +:102810001B041B0C000200F4E060034343F0BF63A1 +:1028200043F40033D360704700ED00E000B5194B6E +:10283000DB68C3F30223C3F1070CBCF1040F28BF0C +:102840004FF0040C03F1040EBEF1060F18D9033B40 +:102850004FF0FF3E0EFA0CFC21EA0C0199400EFAF3 +:1028600003F322EA0303194300280BDB0901C9B271 +:1028700000F1604000F5614080F800135DF804FB52 +:102880000023E5E700F00F000901C9B2024B19541B +:10289000F4E700BF00ED00E014ED00E00138B0F116 +:1028A000807F0BD24FF0E0235861054AF02182F877 +:1028B00023100020986107221A6170470120704799 +:1028C00000ED00E010B504460E4B18784FF47A7313 +:1028D000B3FBF0F30C4A1068B0FBF3F0FFF7DEFF38 +:1028E00068B90F2C01D901200AE0002221464FF0DF +:1028F000FF30FFF79BFF054B1C60002000E001202C +:1029000010BD00BF640000206C00002068000020A3 +:1029100008B50B4B1A6842F400721A601A6842F448 +:1029200080621A601A6842F480721A600320FFF70E +:102930006BFF0020FFF7C6FFFFF7F0F8002008BD8F +:10294000003C0240034A1168034B1B780B441360A0 +:10295000704700BFE000002064000020014B1868B1 +:10296000704700BFE000002038B50446FFF7F6FFCF +:102970000546B4F1FF3F02D0044B1B781C44FFF71F +:10298000EDFF401BA042FAD338BD00BF6400002019 +:10299000034AD2F8883043F47003C2F88830704795 +:1029A00000ED00E010B503460C4A0D490D480068E3 +:1029B00040B10C4800680344521A934206D8094AB1 +:1029C000136010BD0748084C0460F2E7FDF73CFCBB +:1029D0000C2303604FF0FF30F3E700BF00800120BD +:1029E00000040000E4000020E8000020DFF834D0FC +:1029F000FFF7CEFF0C480D490D4A002302E0D458E2 +:102A0000C4500433C4188C42F9D30A4A0A4C002338 +:102A100001E013600432A242FBD3FDF71BFCFEF77A +:102A2000E9FF7047008001200000002070000020B6 +:102A3000B02C000870000020E8000020FEE7000035 +:102A4000F8B500BFF8BC08BC9E467047F8B500BF9B +:082A5000F8BC08BC9E4670476B +:102A5800010000000200000004000000080000005F +:102A6800100000002000000040000000800000006E +:102A7800000100000002000000040000000800003F +:102A8800001000000020000001000000020000000B +:102A98000400000008000000100000000100000011 +:102AA80002000000000800000010000010000000F4 +:102AB800200000004000000080000000253032584F +:102AC8002000000057616974696E6720666F722084 +:102AD80066696C6520746F20666C6173682E2E2E93 +:102AE8000D0A000066696E69736865640D0A000066 +:102AF800307825303258200D0A0000003D3D3D3D1C +:102B08003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DED +:102B18003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DDD +:102B28003D3D3D3D3D3D0D0A000000004D616E7587 +:102B38006661637475726572204944203D200D0AF0 +:102B480000000000446576696365204944203D2003 +:102B58000D0A000048656C6C6F2077656C636F6DBB +:102B68006520746F2074686520454550524F4D208C +:102B780070726F6772616D6D65722120576861743C +:102B880020776F756C6420796F75206C696B652090 +:102B9800746F20646F3F0D0A000000005B315D20F8 +:102BA80044756D7020526F6D206173206368617287 +:102BB8000D0A00005B325D20457261736520636811 +:102BC80069700D0A000000005B335D2050726F676A +:102BD80072616D2063686970207669612055415281 +:102BE800540D0A0044756D70696E6720524F4D2E62 +:102BF8002E2E0D0A0000000045726173696E672071 +:102C0800436869702E2E2E0D0A0000004C61756E07 +:102C18006368696E672070726F6772616D6D696E47 +:102C2800672073657175656E63652E2E2E0D0A001B +:102C3800496E76616C696420696E707574210D0A3D +:102C48000000000000000000000000000102030472 +:102C5800060708090000000001020304232D302B99 +:102C680020000000686C4C00656667454647000018 +:102C780030313233343536373839414243444546AA +:102C8800000000003031323334353637383961626C +:082C98006364656600000000A2 +:082CA000FCE4FF7F01000000CD +:042CA80029020008F5 +:042CAC000102000819 +:102CB00004000020000000000000000000000000F0 +:102CC0000000000000000000000000000000000004 +:102CD00000000000000000000000000000000000F4 +:102CE00000000000000000000000000000000000E4 +:102CF00000000000000000000000000000000000D4 +:102D000000000000000000000000000000000000C3 +:102D10000000000001000000100000000024F4008A +:04000005080029EDD9 :00000001FF diff --git a/build/EEPROM_programmer.map b/build/EEPROM_programmer.map index 97ea3d9..4165524 100644 --- a/build/EEPROM_programmer.map +++ b/build/EEPROM_programmer.map @@ -105,8 +105,6 @@ Discarded input sections 0x0000000000000000 0x2 build/stm32f4xx_hal_uart.o .text.HAL_UART_DeInit 0x0000000000000000 0x34 build/stm32f4xx_hal_uart.o - .text.HAL_UART_Receive - 0x0000000000000000 0xd2 build/stm32f4xx_hal_uart.o .text.HAL_UART_Transmit_IT 0x0000000000000000 0x38 build/stm32f4xx_hal_uart.o .text.HAL_UART_Transmit_DMA @@ -591,8 +589,6 @@ Discarded input sections 0x0000000000000000 0x2c build/stm32f4xx_hal.o .text.HAL_GetTickFreq 0x0000000000000000 0xc build/stm32f4xx_hal.o - .text.HAL_Delay - 0x0000000000000000 0x28 build/stm32f4xx_hal.o .text.HAL_SuspendTick 0x0000000000000000 0xe build/stm32f4xx_hal.o .text.HAL_ResumeTick @@ -887,7 +883,7 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o 0x0000000008000000 g_pfnVectors 0x0000000008000194 . = ALIGN (0x4) -.text 0x00000000080001c0 0x25c8 +.text 0x00000000080001c0 0x2898 0x00000000080001c0 . = ALIGN (0x4) *(.text) .text 0x00000000080001c0 0x88 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o @@ -963,285 +959,309 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o .text.Write_Command 0x0000000008001690 0x46 build/main.o 0x0000000008001690 Write_Command + .text.Chip_Erase + 0x00000000080016d6 0x46 build/main.o + 0x00000000080016d6 Chip_Erase + .text.Chip_Program_Byte + 0x000000000800171c 0x2e build/main.o + 0x000000000800171c Chip_Program_Byte .text.Flash_ReadByte - 0x00000000080016d6 0x2a build/main.o - 0x00000000080016d6 Flash_ReadByte + 0x000000000800174a 0x2a build/main.o + 0x000000000800174a Flash_ReadByte .text.Enter_Device_ID - 0x0000000008001700 0x40 build/main.o - 0x0000000008001700 Enter_Device_ID + 0x0000000008001774 0x40 build/main.o + 0x0000000008001774 Enter_Device_ID + .text.Dump_Flash_UART + 0x00000000080017b4 0x88 build/main.o + 0x00000000080017b4 Dump_Flash_UART .text.Address_Pins_Init - 0x0000000008001740 0x4c build/main.o - 0x0000000008001740 Address_Pins_Init + 0x000000000800183c 0x4c build/main.o + 0x000000000800183c Address_Pins_Init .text.Command_Pins_Init - 0x000000000800178c 0x30 build/main.o - 0x000000000800178c Command_Pins_Init + 0x0000000008001888 0x30 build/main.o + 0x0000000008001888 Command_Pins_Init .text.debug_print - 0x00000000080017bc 0x1c build/main.o - 0x00000000080017bc debug_print + 0x00000000080018b8 0x1c build/main.o + 0x00000000080018b8 debug_print + .text.Flash_From_UART + 0x00000000080018d4 0x44 build/main.o + 0x00000000080018d4 Flash_From_UART .text.Error_Handler - 0x00000000080017d8 0x4 build/main.o - 0x00000000080017d8 Error_Handler + 0x0000000008001918 0x4 build/main.o + 0x0000000008001918 Error_Handler .text.MX_USART2_UART_Init - 0x00000000080017dc 0x34 build/main.o + 0x000000000800191c 0x34 build/main.o .text.SystemClock_Config - 0x0000000008001810 0xa4 build/main.o - 0x0000000008001810 SystemClock_Config - .text.main 0x00000000080018b4 0x78 build/main.o - 0x00000000080018b4 main + 0x0000000008001950 0xa4 build/main.o + 0x0000000008001950 SystemClock_Config + .text.main 0x00000000080019f4 0x110 build/main.o + 0x00000000080019f4 main .text.NMI_Handler - 0x000000000800192c 0x2 build/stm32f4xx_it.o - 0x000000000800192c NMI_Handler + 0x0000000008001b04 0x2 build/stm32f4xx_it.o + 0x0000000008001b04 NMI_Handler .text.HardFault_Handler - 0x000000000800192e 0x2 build/stm32f4xx_it.o - 0x000000000800192e HardFault_Handler + 0x0000000008001b06 0x2 build/stm32f4xx_it.o + 0x0000000008001b06 HardFault_Handler .text.MemManage_Handler - 0x0000000008001930 0x2 build/stm32f4xx_it.o - 0x0000000008001930 MemManage_Handler + 0x0000000008001b08 0x2 build/stm32f4xx_it.o + 0x0000000008001b08 MemManage_Handler .text.BusFault_Handler - 0x0000000008001932 0x2 build/stm32f4xx_it.o - 0x0000000008001932 BusFault_Handler + 0x0000000008001b0a 0x2 build/stm32f4xx_it.o + 0x0000000008001b0a BusFault_Handler .text.UsageFault_Handler - 0x0000000008001934 0x2 build/stm32f4xx_it.o - 0x0000000008001934 UsageFault_Handler + 0x0000000008001b0c 0x2 build/stm32f4xx_it.o + 0x0000000008001b0c UsageFault_Handler .text.SVC_Handler - 0x0000000008001936 0x2 build/stm32f4xx_it.o - 0x0000000008001936 SVC_Handler + 0x0000000008001b0e 0x2 build/stm32f4xx_it.o + 0x0000000008001b0e SVC_Handler .text.DebugMon_Handler - 0x0000000008001938 0x2 build/stm32f4xx_it.o - 0x0000000008001938 DebugMon_Handler + 0x0000000008001b10 0x2 build/stm32f4xx_it.o + 0x0000000008001b10 DebugMon_Handler .text.PendSV_Handler - 0x000000000800193a 0x2 build/stm32f4xx_it.o - 0x000000000800193a PendSV_Handler + 0x0000000008001b12 0x2 build/stm32f4xx_it.o + 0x0000000008001b12 PendSV_Handler .text.SysTick_Handler - 0x000000000800193c 0x8 build/stm32f4xx_it.o - 0x000000000800193c SysTick_Handler + 0x0000000008001b14 0x8 build/stm32f4xx_it.o + 0x0000000008001b14 SysTick_Handler .text.HAL_MspInit - 0x0000000008001944 0x38 build/stm32f4xx_hal_msp.o - 0x0000000008001944 HAL_MspInit + 0x0000000008001b1c 0x38 build/stm32f4xx_hal_msp.o + 0x0000000008001b1c HAL_MspInit .text.HAL_UART_MspInit - 0x000000000800197c 0x6c build/stm32f4xx_hal_msp.o - 0x000000000800197c HAL_UART_MspInit + 0x0000000008001b54 0x6c build/stm32f4xx_hal_msp.o + 0x0000000008001b54 HAL_UART_MspInit .text.UART_EndRxTransfer - 0x00000000080019e8 0x5c build/stm32f4xx_hal_uart.o + 0x0000000008001bc0 0x5c build/stm32f4xx_hal_uart.o .text.UART_SetConfig - 0x0000000008001a44 0x110 build/stm32f4xx_hal_uart.o + 0x0000000008001c1c 0x110 build/stm32f4xx_hal_uart.o .text.UART_WaitOnFlagUntilTimeout - 0x0000000008001b54 0x8a build/stm32f4xx_hal_uart.o + 0x0000000008001d2c 0x8a build/stm32f4xx_hal_uart.o .text.HAL_UART_Init - 0x0000000008001bde 0x60 build/stm32f4xx_hal_uart.o - 0x0000000008001bde HAL_UART_Init + 0x0000000008001db6 0x60 build/stm32f4xx_hal_uart.o + 0x0000000008001db6 HAL_UART_Init .text.HAL_UART_Transmit - 0x0000000008001c3e 0xcc build/stm32f4xx_hal_uart.o - 0x0000000008001c3e HAL_UART_Transmit - *fill* 0x0000000008001d0a 0x2 + 0x0000000008001e16 0xcc build/stm32f4xx_hal_uart.o + 0x0000000008001e16 HAL_UART_Transmit + .text.HAL_UART_Receive + 0x0000000008001ee2 0xd2 build/stm32f4xx_hal_uart.o + 0x0000000008001ee2 HAL_UART_Receive .text.HAL_RCC_OscConfig - 0x0000000008001d0c 0x3f8 build/stm32f4xx_hal_rcc.o - 0x0000000008001d0c HAL_RCC_OscConfig + 0x0000000008001fb4 0x3f8 build/stm32f4xx_hal_rcc.o + 0x0000000008001fb4 HAL_RCC_OscConfig .text.HAL_RCC_GetSysClockFreq - 0x0000000008002104 0xd4 build/stm32f4xx_hal_rcc.o - 0x0000000008002104 HAL_RCC_GetSysClockFreq + 0x00000000080023ac 0xd4 build/stm32f4xx_hal_rcc.o + 0x00000000080023ac HAL_RCC_GetSysClockFreq .text.HAL_RCC_ClockConfig - 0x00000000080021d8 0x160 build/stm32f4xx_hal_rcc.o - 0x00000000080021d8 HAL_RCC_ClockConfig + 0x0000000008002480 0x160 build/stm32f4xx_hal_rcc.o + 0x0000000008002480 HAL_RCC_ClockConfig .text.HAL_RCC_GetHCLKFreq - 0x0000000008002338 0xc build/stm32f4xx_hal_rcc.o - 0x0000000008002338 HAL_RCC_GetHCLKFreq + 0x00000000080025e0 0xc build/stm32f4xx_hal_rcc.o + 0x00000000080025e0 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x0000000008002344 0x20 build/stm32f4xx_hal_rcc.o - 0x0000000008002344 HAL_RCC_GetPCLK1Freq + 0x00000000080025ec 0x20 build/stm32f4xx_hal_rcc.o + 0x00000000080025ec HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x0000000008002364 0x20 build/stm32f4xx_hal_rcc.o - 0x0000000008002364 HAL_RCC_GetPCLK2Freq + 0x000000000800260c 0x20 build/stm32f4xx_hal_rcc.o + 0x000000000800260c HAL_RCC_GetPCLK2Freq .text.HAL_GPIO_Init - 0x0000000008002384 0x1c0 build/stm32f4xx_hal_gpio.o - 0x0000000008002384 HAL_GPIO_Init + 0x000000000800262c 0x1c0 build/stm32f4xx_hal_gpio.o + 0x000000000800262c HAL_GPIO_Init .text.HAL_GPIO_ReadPin - 0x0000000008002544 0xe build/stm32f4xx_hal_gpio.o - 0x0000000008002544 HAL_GPIO_ReadPin + 0x00000000080027ec 0xe build/stm32f4xx_hal_gpio.o + 0x00000000080027ec HAL_GPIO_ReadPin .text.HAL_GPIO_WritePin - 0x0000000008002552 0xc build/stm32f4xx_hal_gpio.o - 0x0000000008002552 HAL_GPIO_WritePin - *fill* 0x000000000800255e 0x2 + 0x00000000080027fa 0xc build/stm32f4xx_hal_gpio.o + 0x00000000080027fa HAL_GPIO_WritePin + *fill* 0x0000000008002806 0x2 .text.HAL_NVIC_SetPriorityGrouping - 0x0000000008002560 0x24 build/stm32f4xx_hal_cortex.o - 0x0000000008002560 HAL_NVIC_SetPriorityGrouping + 0x0000000008002808 0x24 build/stm32f4xx_hal_cortex.o + 0x0000000008002808 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x0000000008002584 0x70 build/stm32f4xx_hal_cortex.o - 0x0000000008002584 HAL_NVIC_SetPriority + 0x000000000800282c 0x70 build/stm32f4xx_hal_cortex.o + 0x000000000800282c HAL_NVIC_SetPriority .text.HAL_SYSTICK_Config - 0x00000000080025f4 0x28 build/stm32f4xx_hal_cortex.o - 0x00000000080025f4 HAL_SYSTICK_Config + 0x000000000800289c 0x28 build/stm32f4xx_hal_cortex.o + 0x000000000800289c HAL_SYSTICK_Config .text.HAL_InitTick - 0x000000000800261c 0x4c build/stm32f4xx_hal.o - 0x000000000800261c HAL_InitTick + 0x00000000080028c4 0x4c build/stm32f4xx_hal.o + 0x00000000080028c4 HAL_InitTick .text.HAL_Init - 0x0000000008002668 0x34 build/stm32f4xx_hal.o - 0x0000000008002668 HAL_Init + 0x0000000008002910 0x34 build/stm32f4xx_hal.o + 0x0000000008002910 HAL_Init .text.HAL_IncTick - 0x000000000800269c 0x18 build/stm32f4xx_hal.o - 0x000000000800269c HAL_IncTick + 0x0000000008002944 0x18 build/stm32f4xx_hal.o + 0x0000000008002944 HAL_IncTick .text.HAL_GetTick - 0x00000000080026b4 0xc build/stm32f4xx_hal.o - 0x00000000080026b4 HAL_GetTick + 0x000000000800295c 0xc build/stm32f4xx_hal.o + 0x000000000800295c HAL_GetTick + .text.HAL_Delay + 0x0000000008002968 0x28 build/stm32f4xx_hal.o + 0x0000000008002968 HAL_Delay .text.SystemInit - 0x00000000080026c0 0x14 build/system_stm32f4xx.o - 0x00000000080026c0 SystemInit - .text._sbrk 0x00000000080026d4 0x48 build/sysmem.o - 0x00000000080026d4 _sbrk + 0x0000000008002990 0x14 build/system_stm32f4xx.o + 0x0000000008002990 SystemInit + .text._sbrk 0x00000000080029a4 0x48 build/sysmem.o + 0x00000000080029a4 _sbrk .text.Reset_Handler - 0x000000000800271c 0x50 build/startup_stm32f401xe.o - 0x000000000800271c Reset_Handler + 0x00000000080029ec 0x50 build/startup_stm32f401xe.o + 0x00000000080029ec Reset_Handler .text.Default_Handler - 0x000000000800276c 0x2 build/startup_stm32f401xe.o - 0x000000000800276c RTC_Alarm_IRQHandler - 0x000000000800276c EXTI2_IRQHandler - 0x000000000800276c SPI4_IRQHandler - 0x000000000800276c TIM1_CC_IRQHandler - 0x000000000800276c DMA2_Stream5_IRQHandler - 0x000000000800276c DMA1_Stream5_IRQHandler - 0x000000000800276c PVD_IRQHandler - 0x000000000800276c SDIO_IRQHandler - 0x000000000800276c TAMP_STAMP_IRQHandler - 0x000000000800276c EXTI3_IRQHandler - 0x000000000800276c TIM1_UP_TIM10_IRQHandler - 0x000000000800276c I2C3_ER_IRQHandler - 0x000000000800276c EXTI0_IRQHandler - 0x000000000800276c I2C2_EV_IRQHandler - 0x000000000800276c DMA1_Stream2_IRQHandler - 0x000000000800276c FPU_IRQHandler - 0x000000000800276c DMA2_Stream2_IRQHandler - 0x000000000800276c SPI1_IRQHandler - 0x000000000800276c TIM1_BRK_TIM9_IRQHandler - 0x000000000800276c DMA2_Stream3_IRQHandler - 0x000000000800276c USART6_IRQHandler - 0x000000000800276c DMA2_Stream0_IRQHandler - 0x000000000800276c TIM4_IRQHandler - 0x000000000800276c I2C1_EV_IRQHandler - 0x000000000800276c DMA1_Stream6_IRQHandler - 0x000000000800276c DMA1_Stream1_IRQHandler - 0x000000000800276c TIM3_IRQHandler - 0x000000000800276c RCC_IRQHandler - 0x000000000800276c Default_Handler - 0x000000000800276c EXTI15_10_IRQHandler - 0x000000000800276c ADC_IRQHandler - 0x000000000800276c DMA1_Stream7_IRQHandler - 0x000000000800276c TIM5_IRQHandler - 0x000000000800276c DMA2_Stream7_IRQHandler - 0x000000000800276c I2C3_EV_IRQHandler - 0x000000000800276c EXTI9_5_IRQHandler - 0x000000000800276c RTC_WKUP_IRQHandler - 0x000000000800276c SPI2_IRQHandler - 0x000000000800276c DMA1_Stream0_IRQHandler - 0x000000000800276c EXTI4_IRQHandler - 0x000000000800276c WWDG_IRQHandler - 0x000000000800276c TIM2_IRQHandler - 0x000000000800276c OTG_FS_WKUP_IRQHandler - 0x000000000800276c TIM1_TRG_COM_TIM11_IRQHandler - 0x000000000800276c EXTI1_IRQHandler - 0x000000000800276c USART2_IRQHandler - 0x000000000800276c I2C2_ER_IRQHandler - 0x000000000800276c DMA2_Stream1_IRQHandler - 0x000000000800276c FLASH_IRQHandler - 0x000000000800276c DMA2_Stream4_IRQHandler - 0x000000000800276c USART1_IRQHandler - 0x000000000800276c OTG_FS_IRQHandler - 0x000000000800276c SPI3_IRQHandler - 0x000000000800276c DMA1_Stream4_IRQHandler - 0x000000000800276c I2C1_ER_IRQHandler - 0x000000000800276c DMA2_Stream6_IRQHandler - 0x000000000800276c DMA1_Stream3_IRQHandler + 0x0000000008002a3c 0x2 build/startup_stm32f401xe.o + 0x0000000008002a3c RTC_Alarm_IRQHandler + 0x0000000008002a3c EXTI2_IRQHandler + 0x0000000008002a3c SPI4_IRQHandler + 0x0000000008002a3c TIM1_CC_IRQHandler + 0x0000000008002a3c DMA2_Stream5_IRQHandler + 0x0000000008002a3c DMA1_Stream5_IRQHandler + 0x0000000008002a3c PVD_IRQHandler + 0x0000000008002a3c SDIO_IRQHandler + 0x0000000008002a3c TAMP_STAMP_IRQHandler + 0x0000000008002a3c EXTI3_IRQHandler + 0x0000000008002a3c TIM1_UP_TIM10_IRQHandler + 0x0000000008002a3c I2C3_ER_IRQHandler + 0x0000000008002a3c EXTI0_IRQHandler + 0x0000000008002a3c I2C2_EV_IRQHandler + 0x0000000008002a3c DMA1_Stream2_IRQHandler + 0x0000000008002a3c FPU_IRQHandler + 0x0000000008002a3c DMA2_Stream2_IRQHandler + 0x0000000008002a3c SPI1_IRQHandler + 0x0000000008002a3c TIM1_BRK_TIM9_IRQHandler + 0x0000000008002a3c DMA2_Stream3_IRQHandler + 0x0000000008002a3c USART6_IRQHandler + 0x0000000008002a3c DMA2_Stream0_IRQHandler + 0x0000000008002a3c TIM4_IRQHandler + 0x0000000008002a3c I2C1_EV_IRQHandler + 0x0000000008002a3c DMA1_Stream6_IRQHandler + 0x0000000008002a3c DMA1_Stream1_IRQHandler + 0x0000000008002a3c TIM3_IRQHandler + 0x0000000008002a3c RCC_IRQHandler + 0x0000000008002a3c Default_Handler + 0x0000000008002a3c EXTI15_10_IRQHandler + 0x0000000008002a3c ADC_IRQHandler + 0x0000000008002a3c DMA1_Stream7_IRQHandler + 0x0000000008002a3c TIM5_IRQHandler + 0x0000000008002a3c DMA2_Stream7_IRQHandler + 0x0000000008002a3c I2C3_EV_IRQHandler + 0x0000000008002a3c EXTI9_5_IRQHandler + 0x0000000008002a3c RTC_WKUP_IRQHandler + 0x0000000008002a3c SPI2_IRQHandler + 0x0000000008002a3c DMA1_Stream0_IRQHandler + 0x0000000008002a3c EXTI4_IRQHandler + 0x0000000008002a3c WWDG_IRQHandler + 0x0000000008002a3c TIM2_IRQHandler + 0x0000000008002a3c OTG_FS_WKUP_IRQHandler + 0x0000000008002a3c TIM1_TRG_COM_TIM11_IRQHandler + 0x0000000008002a3c EXTI1_IRQHandler + 0x0000000008002a3c USART2_IRQHandler + 0x0000000008002a3c I2C2_ER_IRQHandler + 0x0000000008002a3c DMA2_Stream1_IRQHandler + 0x0000000008002a3c FLASH_IRQHandler + 0x0000000008002a3c DMA2_Stream4_IRQHandler + 0x0000000008002a3c USART1_IRQHandler + 0x0000000008002a3c OTG_FS_IRQHandler + 0x0000000008002a3c SPI3_IRQHandler + 0x0000000008002a3c DMA1_Stream4_IRQHandler + 0x0000000008002a3c I2C1_ER_IRQHandler + 0x0000000008002a3c DMA2_Stream6_IRQHandler + 0x0000000008002a3c DMA1_Stream3_IRQHandler *(.glue_7) - .glue_7 0x000000000800276e 0x0 linker stubs + .glue_7 0x0000000008002a3e 0x0 linker stubs *(.glue_7t) - .glue_7t 0x000000000800276e 0x0 linker stubs + .glue_7t 0x0000000008002a3e 0x0 linker stubs *(.eh_frame) - *fill* 0x000000000800276e 0x2 - .eh_frame 0x0000000008002770 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o + *fill* 0x0000000008002a3e 0x2 + .eh_frame 0x0000000008002a40 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o *(.init) - .init 0x0000000008002770 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crti.o - 0x0000000008002770 _init - .init 0x0000000008002774 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o + .init 0x0000000008002a40 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crti.o + 0x0000000008002a40 _init + .init 0x0000000008002a44 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o *(.fini) - .fini 0x000000000800277c 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crti.o - 0x000000000800277c _fini - .fini 0x0000000008002780 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o - 0x0000000008002788 . = ALIGN (0x4) - 0x0000000008002788 _etext = . + .fini 0x0000000008002a4c 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crti.o + 0x0000000008002a4c _fini + .fini 0x0000000008002a50 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o + 0x0000000008002a58 . = ALIGN (0x4) + 0x0000000008002a58 _etext = . -.vfp11_veneer 0x0000000008002788 0x0 - .vfp11_veneer 0x0000000008002788 0x0 linker stubs +.vfp11_veneer 0x0000000008002a58 0x0 + .vfp11_veneer 0x0000000008002a58 0x0 linker stubs -.v4_bx 0x0000000008002788 0x0 - .v4_bx 0x0000000008002788 0x0 linker stubs +.v4_bx 0x0000000008002a58 0x0 + .v4_bx 0x0000000008002a58 0x0 linker stubs -.iplt 0x0000000008002788 0x0 - .iplt 0x0000000008002788 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.iplt 0x0000000008002a58 0x0 + .iplt 0x0000000008002a58 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.rodata 0x0000000008002788 0xf4 - 0x0000000008002788 . = ALIGN (0x4) +.rodata 0x0000000008002a58 0x248 + 0x0000000008002a58 . = ALIGN (0x4) *(.rodata) - .rodata 0x0000000008002788 0x6c build/main.o + .rodata 0x0000000008002a58 0x6c build/main.o *(.rodata*) + .rodata.Dump_Flash_UART.str1.4 + 0x0000000008002ac4 0x6 build/main.o + 0xb (size before relaxing) + *fill* 0x0000000008002aca 0x2 + .rodata.Flash_From_UART.str1.4 + 0x0000000008002acc 0x2b build/main.o + *fill* 0x0000000008002af7 0x1 .rodata.main.str1.4 - 0x00000000080027f4 0x33 build/main.o - *fill* 0x0000000008002827 0x1 + 0x0000000008002af8 0x151 build/main.o + *fill* 0x0000000008002c49 0x3 .rodata.AHBPrescTable - 0x0000000008002828 0x10 build/system_stm32f4xx.o - 0x0000000008002828 AHBPrescTable + 0x0000000008002c4c 0x10 build/system_stm32f4xx.o + 0x0000000008002c4c AHBPrescTable .rodata.APBPrescTable - 0x0000000008002838 0x8 build/system_stm32f4xx.o - 0x0000000008002838 APBPrescTable + 0x0000000008002c5c 0x8 build/system_stm32f4xx.o + 0x0000000008002c5c APBPrescTable .rodata.str1.4 - 0x0000000008002840 0x13 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - *fill* 0x0000000008002853 0x1 + 0x0000000008002c64 0x13 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + *fill* 0x0000000008002c77 0x1 .rodata.str1.4 - 0x0000000008002854 0x25 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - 0x000000000800287c . = ALIGN (0x4) - *fill* 0x0000000008002879 0x3 + 0x0000000008002c78 0x25 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x0000000008002ca0 . = ALIGN (0x4) + *fill* 0x0000000008002c9d 0x3 -.ARM.extab 0x000000000800287c 0x0 - 0x000000000800287c . = ALIGN (0x4) +.ARM.extab 0x0000000008002ca0 0x0 + 0x0000000008002ca0 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x000000000800287c . = ALIGN (0x4) + 0x0000000008002ca0 . = ALIGN (0x4) -.ARM 0x000000000800287c 0x8 - 0x000000000800287c . = ALIGN (0x4) - 0x000000000800287c __exidx_start = . +.ARM 0x0000000008002ca0 0x8 + 0x0000000008002ca0 . = ALIGN (0x4) + 0x0000000008002ca0 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x000000000800287c 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - 0x0000000008002884 __exidx_end = . - 0x0000000008002884 . = ALIGN (0x4) + .ARM.exidx 0x0000000008002ca0 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + 0x0000000008002ca8 __exidx_end = . + 0x0000000008002ca8 . = ALIGN (0x4) -.preinit_array 0x0000000008002884 0x0 - 0x0000000008002884 . = ALIGN (0x4) - 0x0000000008002884 PROVIDE (__preinit_array_start = .) +.preinit_array 0x0000000008002ca8 0x0 + 0x0000000008002ca8 . = ALIGN (0x4) + 0x0000000008002ca8 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x0000000008002884 PROVIDE (__preinit_array_end = .) - 0x0000000008002884 . = ALIGN (0x4) + 0x0000000008002ca8 PROVIDE (__preinit_array_end = .) + 0x0000000008002ca8 . = ALIGN (0x4) -.init_array 0x0000000008002884 0x4 - 0x0000000008002884 . = ALIGN (0x4) - 0x0000000008002884 PROVIDE (__init_array_start = .) +.init_array 0x0000000008002ca8 0x4 + 0x0000000008002ca8 . = ALIGN (0x4) + 0x0000000008002ca8 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x0000000008002884 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o - 0x0000000008002888 PROVIDE (__init_array_end = .) - 0x0000000008002888 . = ALIGN (0x4) + .init_array 0x0000000008002ca8 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x0000000008002cac PROVIDE (__init_array_end = .) + 0x0000000008002cac . = ALIGN (0x4) -.fini_array 0x0000000008002888 0x4 - 0x0000000008002888 . = ALIGN (0x4) - 0x0000000008002888 PROVIDE (__fini_array_start = .) +.fini_array 0x0000000008002cac 0x4 + 0x0000000008002cac . = ALIGN (0x4) + 0x0000000008002cac PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x0000000008002888 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o - 0x000000000800288c PROVIDE (__fini_array_end = .) - 0x000000000800288c . = ALIGN (0x4) - 0x000000000800288c _sidata = LOADADDR (.data) + .fini_array 0x0000000008002cac 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o + 0x0000000008002cb0 PROVIDE (__fini_array_end = .) + 0x0000000008002cb0 . = ALIGN (0x4) + 0x0000000008002cb0 _sidata = LOADADDR (.data) -.rel.dyn 0x000000000800288c 0x0 - .rel.iplt 0x000000000800288c 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o +.rel.dyn 0x0000000008002cb0 0x0 + .rel.iplt 0x0000000008002cb0 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o -.data 0x0000000020000000 0x70 load address 0x000000000800288c +.data 0x0000000020000000 0x70 load address 0x0000000008002cb0 0x0000000020000000 . = ALIGN (0x4) 0x0000000020000000 _sdata = . *(.data) @@ -1264,17 +1284,17 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o 0x0000000020000070 _edata = . .tm_clone_table - 0x0000000020000070 0x0 load address 0x00000000080028fc + 0x0000000020000070 0x0 load address 0x0000000008002d20 .tm_clone_table 0x0000000020000070 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o .tm_clone_table 0x0000000020000070 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtend.o -.igot.plt 0x0000000020000070 0x0 load address 0x00000000080028fc +.igot.plt 0x0000000020000070 0x0 load address 0x0000000008002d20 .igot.plt 0x0000000020000070 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtbegin.o 0x0000000020000070 . = ALIGN (0x4) -.bss 0x0000000020000070 0x78 load address 0x00000000080028fc +.bss 0x0000000020000070 0x78 load address 0x0000000008002d20 0x0000000020000070 _sbss = . 0x0000000020000070 __bss_start__ = _sbss *(.bss) @@ -1297,7 +1317,7 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtn.o 0x00000000200000e8 __bss_end__ = _ebss ._user_heap_stack - 0x00000000200000e8 0x600 load address 0x00000000080028fc + 0x00000000200000e8 0x600 load address 0x0000000008002d20 0x00000000200000e8 . = ALIGN (0x8) [!provide] PROVIDE (end = .) 0x00000000200000e8 PROVIDE (_end = .) @@ -1426,318 +1446,318 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/crtend.o -.debug_info 0x0000000000000000 0x127ad - .debug_info 0x0000000000000000 0x1674 build/main.o - .debug_info 0x0000000000001674 0x15a build/stm32f4xx_it.o - .debug_info 0x00000000000017ce 0xa9a build/stm32f4xx_hal_msp.o - .debug_info 0x0000000000002268 0x430e build/stm32f4xx_hal_uart.o - .debug_info 0x0000000000006576 0xbf8 build/stm32f4xx_hal_rcc.o - .debug_info 0x000000000000716e 0x84e build/stm32f4xx_hal_gpio.o - .debug_info 0x00000000000079bc 0x110c build/stm32f4xx_hal_cortex.o - .debug_info 0x0000000000008ac8 0xa53 build/stm32f4xx_hal.o - .debug_info 0x000000000000951b 0x5cd build/system_stm32f4xx.o - .debug_info 0x0000000000009ae8 0x16d build/sysmem.o - .debug_info 0x0000000000009c55 0x22 build/startup_stm32f401xe.o - .debug_info 0x0000000000009c77 0x7ae /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) - .debug_info 0x000000000000a425 0x863 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) - .debug_info 0x000000000000ac88 0x11a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) - .debug_info 0x000000000000ada2 0x832 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) - .debug_info 0x000000000000b5d4 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) - .debug_info 0x000000000000b5fa 0x137 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) - .debug_info 0x000000000000b731 0x903 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_info 0x000000000000c034 0xa0c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_info 0x000000000000ca40 0x828 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) - .debug_info 0x000000000000d268 0x926 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) - .debug_info 0x000000000000db8e 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) - .debug_info 0x000000000000dbb4 0x7dc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) - .debug_info 0x000000000000e390 0x10d5 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_info 0x000000000000f465 0xe9e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_info 0x0000000000010303 0xa7e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) - .debug_info 0x0000000000010d81 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) - .debug_info 0x0000000000010da7 0x152 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) - .debug_info 0x0000000000010ef9 0x911 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) - .debug_info 0x000000000001180a 0x840 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) - .debug_info 0x000000000001204a 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) - .debug_info 0x0000000000012070 0x717 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - .debug_info 0x0000000000012787 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) +.debug_info 0x0000000000000000 0x12c94 + .debug_info 0x0000000000000000 0x1b5b build/main.o + .debug_info 0x0000000000001b5b 0x15a build/stm32f4xx_it.o + .debug_info 0x0000000000001cb5 0xa9a build/stm32f4xx_hal_msp.o + .debug_info 0x000000000000274f 0x430e build/stm32f4xx_hal_uart.o + .debug_info 0x0000000000006a5d 0xbf8 build/stm32f4xx_hal_rcc.o + .debug_info 0x0000000000007655 0x84e build/stm32f4xx_hal_gpio.o + .debug_info 0x0000000000007ea3 0x110c build/stm32f4xx_hal_cortex.o + .debug_info 0x0000000000008faf 0xa53 build/stm32f4xx_hal.o + .debug_info 0x0000000000009a02 0x5cd build/system_stm32f4xx.o + .debug_info 0x0000000000009fcf 0x16d build/sysmem.o + .debug_info 0x000000000000a13c 0x22 build/startup_stm32f401xe.o + .debug_info 0x000000000000a15e 0x7ae /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + .debug_info 0x000000000000a90c 0x863 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) + .debug_info 0x000000000000b16f 0x11a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_info 0x000000000000b289 0x832 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_info 0x000000000000babb 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) + .debug_info 0x000000000000bae1 0x137 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_info 0x000000000000bc18 0x903 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_info 0x000000000000c51b 0xa0c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_info 0x000000000000cf27 0x828 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_info 0x000000000000d74f 0x926 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_info 0x000000000000e075 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) + .debug_info 0x000000000000e09b 0x7dc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + .debug_info 0x000000000000e877 0x10d5 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_info 0x000000000000f94c 0xe9e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_info 0x00000000000107ea 0xa7e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_info 0x0000000000011268 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) + .debug_info 0x000000000001128e 0x152 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_info 0x00000000000113e0 0x911 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_info 0x0000000000011cf1 0x840 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_info 0x0000000000012531 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_info 0x0000000000012557 0x717 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + .debug_info 0x0000000000012c6e 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) -.debug_abbrev 0x0000000000000000 0x32aa - .debug_abbrev 0x0000000000000000 0x305 build/main.o - .debug_abbrev 0x0000000000000305 0x81 build/stm32f4xx_it.o - .debug_abbrev 0x0000000000000386 0x199 build/stm32f4xx_hal_msp.o - .debug_abbrev 0x000000000000051f 0x35e build/stm32f4xx_hal_uart.o - .debug_abbrev 0x000000000000087d 0x2aa build/stm32f4xx_hal_rcc.o - .debug_abbrev 0x0000000000000b27 0x22b build/stm32f4xx_hal_gpio.o - .debug_abbrev 0x0000000000000d52 0x379 build/stm32f4xx_hal_cortex.o - .debug_abbrev 0x00000000000010cb 0x23a build/stm32f4xx_hal.o - .debug_abbrev 0x0000000000001305 0x11b build/system_stm32f4xx.o - .debug_abbrev 0x0000000000001420 0xea build/sysmem.o - .debug_abbrev 0x000000000000150a 0x12 build/startup_stm32f401xe.o - .debug_abbrev 0x000000000000151c 0x157 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) - .debug_abbrev 0x0000000000001673 0x151 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) - .debug_abbrev 0x00000000000017c4 0xcc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) - .debug_abbrev 0x0000000000001890 0x1b6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) - .debug_abbrev 0x0000000000001a46 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) - .debug_abbrev 0x0000000000001a5a 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) - .debug_abbrev 0x0000000000001b0e 0x235 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_abbrev 0x0000000000001d43 0x290 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_abbrev 0x0000000000001fd3 0x1d6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) - .debug_abbrev 0x00000000000021a9 0x213 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) - .debug_abbrev 0x00000000000023bc 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) - .debug_abbrev 0x00000000000023d0 0x189 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) - .debug_abbrev 0x0000000000002559 0x2ca /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_abbrev 0x0000000000002823 0x25c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_abbrev 0x0000000000002a7f 0x265 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) - .debug_abbrev 0x0000000000002ce4 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) - .debug_abbrev 0x0000000000002cf8 0xc0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) - .debug_abbrev 0x0000000000002db8 0x1d6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) - .debug_abbrev 0x0000000000002f8e 0x191 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) - .debug_abbrev 0x000000000000311f 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) - .debug_abbrev 0x0000000000003133 0x163 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - .debug_abbrev 0x0000000000003296 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) +.debug_abbrev 0x0000000000000000 0x32b5 + .debug_abbrev 0x0000000000000000 0x310 build/main.o + .debug_abbrev 0x0000000000000310 0x81 build/stm32f4xx_it.o + .debug_abbrev 0x0000000000000391 0x199 build/stm32f4xx_hal_msp.o + .debug_abbrev 0x000000000000052a 0x35e build/stm32f4xx_hal_uart.o + .debug_abbrev 0x0000000000000888 0x2aa build/stm32f4xx_hal_rcc.o + .debug_abbrev 0x0000000000000b32 0x22b build/stm32f4xx_hal_gpio.o + .debug_abbrev 0x0000000000000d5d 0x379 build/stm32f4xx_hal_cortex.o + .debug_abbrev 0x00000000000010d6 0x23a build/stm32f4xx_hal.o + .debug_abbrev 0x0000000000001310 0x11b build/system_stm32f4xx.o + .debug_abbrev 0x000000000000142b 0xea build/sysmem.o + .debug_abbrev 0x0000000000001515 0x12 build/startup_stm32f401xe.o + .debug_abbrev 0x0000000000001527 0x157 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + .debug_abbrev 0x000000000000167e 0x151 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) + .debug_abbrev 0x00000000000017cf 0xcc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_abbrev 0x000000000000189b 0x1b6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_abbrev 0x0000000000001a51 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) + .debug_abbrev 0x0000000000001a65 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_abbrev 0x0000000000001b19 0x235 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_abbrev 0x0000000000001d4e 0x290 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_abbrev 0x0000000000001fde 0x1d6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_abbrev 0x00000000000021b4 0x213 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_abbrev 0x00000000000023c7 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) + .debug_abbrev 0x00000000000023db 0x189 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + .debug_abbrev 0x0000000000002564 0x2ca /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_abbrev 0x000000000000282e 0x25c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_abbrev 0x0000000000002a8a 0x265 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_abbrev 0x0000000000002cef 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) + .debug_abbrev 0x0000000000002d03 0xc0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_abbrev 0x0000000000002dc3 0x1d6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_abbrev 0x0000000000002f99 0x191 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_abbrev 0x000000000000312a 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_abbrev 0x000000000000313e 0x163 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + .debug_abbrev 0x00000000000032a1 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) -.debug_loc 0x0000000000000000 0x9afc - .debug_loc 0x0000000000000000 0x5b8 build/main.o - .debug_loc 0x00000000000005b8 0x20 build/stm32f4xx_it.o - .debug_loc 0x00000000000005d8 0x114 build/stm32f4xx_hal_msp.o - .debug_loc 0x00000000000006ec 0x4d51 build/stm32f4xx_hal_uart.o - .debug_loc 0x000000000000543d 0x6e4 build/stm32f4xx_hal_rcc.o - .debug_loc 0x0000000000005b21 0x5e8 build/stm32f4xx_hal_gpio.o - .debug_loc 0x0000000000006109 0x7a4 build/stm32f4xx_hal_cortex.o - .debug_loc 0x00000000000068ad 0x1e1 build/stm32f4xx_hal.o - .debug_loc 0x0000000000006a8e 0xbe build/system_stm32f4xx.o - .debug_loc 0x0000000000006b4c 0x84 build/sysmem.o - .debug_loc 0x0000000000006bd0 0xba /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) - .debug_loc 0x0000000000006c8a 0x64 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) - .debug_loc 0x0000000000006cee 0x22c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) - .debug_loc 0x0000000000006f1a 0x203 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_loc 0x000000000000711d 0x3cd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_loc 0x00000000000074ea 0x6c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) - .debug_loc 0x0000000000007556 0xb7 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) - .debug_loc 0x000000000000760d 0x82e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_loc 0x0000000000007e3b 0x5dd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_loc 0x0000000000008418 0x1cd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) - .debug_loc 0x00000000000085e5 0x34f /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) - .debug_loc 0x0000000000008934 0x133 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) - .debug_loc 0x0000000000008a67 0x86 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) - .debug_loc 0x0000000000008aed 0x100f /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) +.debug_loc 0x0000000000000000 0x9c68 + .debug_loc 0x0000000000000000 0x724 build/main.o + .debug_loc 0x0000000000000724 0x20 build/stm32f4xx_it.o + .debug_loc 0x0000000000000744 0x114 build/stm32f4xx_hal_msp.o + .debug_loc 0x0000000000000858 0x4d51 build/stm32f4xx_hal_uart.o + .debug_loc 0x00000000000055a9 0x6e4 build/stm32f4xx_hal_rcc.o + .debug_loc 0x0000000000005c8d 0x5e8 build/stm32f4xx_hal_gpio.o + .debug_loc 0x0000000000006275 0x7a4 build/stm32f4xx_hal_cortex.o + .debug_loc 0x0000000000006a19 0x1e1 build/stm32f4xx_hal.o + .debug_loc 0x0000000000006bfa 0xbe build/system_stm32f4xx.o + .debug_loc 0x0000000000006cb8 0x84 build/sysmem.o + .debug_loc 0x0000000000006d3c 0xba /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_loc 0x0000000000006df6 0x64 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_loc 0x0000000000006e5a 0x22c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_loc 0x0000000000007086 0x203 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_loc 0x0000000000007289 0x3cd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_loc 0x0000000000007656 0x6c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_loc 0x00000000000076c2 0xb7 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_loc 0x0000000000007779 0x82e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_loc 0x0000000000007fa7 0x5dd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_loc 0x0000000000008584 0x1cd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_loc 0x0000000000008751 0x34f /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_loc 0x0000000000008aa0 0x133 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_loc 0x0000000000008bd3 0x86 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_loc 0x0000000000008c59 0x100f /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) -.debug_aranges 0x0000000000000000 0x8e8 +.debug_aranges 0x0000000000000000 0x908 .debug_aranges - 0x0000000000000000 0x98 build/main.o + 0x0000000000000000 0xb8 build/main.o .debug_aranges - 0x0000000000000098 0x60 build/stm32f4xx_it.o + 0x00000000000000b8 0x60 build/stm32f4xx_it.o .debug_aranges - 0x00000000000000f8 0x30 build/stm32f4xx_hal_msp.o + 0x0000000000000118 0x30 build/stm32f4xx_hal_msp.o .debug_aranges - 0x0000000000000128 0x208 build/stm32f4xx_hal_uart.o + 0x0000000000000148 0x208 build/stm32f4xx_hal_uart.o .debug_aranges - 0x0000000000000330 0x88 build/stm32f4xx_hal_rcc.o + 0x0000000000000350 0x88 build/stm32f4xx_hal_rcc.o .debug_aranges - 0x00000000000003b8 0x58 build/stm32f4xx_hal_gpio.o + 0x00000000000003d8 0x58 build/stm32f4xx_hal_gpio.o .debug_aranges - 0x0000000000000410 0xc0 build/stm32f4xx_hal_cortex.o + 0x0000000000000430 0xc0 build/stm32f4xx_hal_cortex.o .debug_aranges - 0x00000000000004d0 0xf0 build/stm32f4xx_hal.o + 0x00000000000004f0 0xf0 build/stm32f4xx_hal.o .debug_aranges - 0x00000000000005c0 0x28 build/system_stm32f4xx.o + 0x00000000000005e0 0x28 build/system_stm32f4xx.o .debug_aranges - 0x00000000000005e8 0x20 build/sysmem.o + 0x0000000000000608 0x20 build/sysmem.o .debug_aranges - 0x0000000000000608 0x28 build/startup_stm32f401xe.o + 0x0000000000000628 0x28 build/startup_stm32f401xe.o .debug_aranges - 0x0000000000000630 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + 0x0000000000000650 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) .debug_aranges - 0x0000000000000650 0x18 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) + 0x0000000000000670 0x18 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) .debug_aranges - 0x0000000000000668 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + 0x0000000000000688 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) .debug_aranges - 0x0000000000000688 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + 0x00000000000006a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) .debug_aranges - 0x00000000000006a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) + 0x00000000000006c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) .debug_aranges - 0x00000000000006c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + 0x00000000000006e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) .debug_aranges - 0x00000000000006e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + 0x0000000000000708 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) .debug_aranges - 0x0000000000000708 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + 0x0000000000000728 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) .debug_aranges - 0x0000000000000728 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + 0x0000000000000748 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) .debug_aranges - 0x0000000000000748 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + 0x0000000000000768 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) .debug_aranges - 0x0000000000000768 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) + 0x0000000000000788 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) .debug_aranges - 0x0000000000000788 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + 0x00000000000007a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) .debug_aranges - 0x00000000000007a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + 0x00000000000007c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) .debug_aranges - 0x00000000000007c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x00000000000007e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) .debug_aranges - 0x00000000000007e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + 0x0000000000000808 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) .debug_aranges - 0x0000000000000808 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) + 0x0000000000000828 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) .debug_aranges - 0x0000000000000828 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + 0x0000000000000848 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) .debug_aranges - 0x0000000000000848 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + 0x0000000000000868 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) .debug_aranges - 0x0000000000000868 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + 0x0000000000000888 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) .debug_aranges - 0x0000000000000888 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + 0x00000000000008a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) .debug_aranges - 0x00000000000008a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + 0x00000000000008c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) .debug_aranges - 0x00000000000008c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) + 0x00000000000008e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) -.debug_ranges 0x0000000000000000 0x838 - .debug_ranges 0x0000000000000000 0xa0 build/main.o - .debug_ranges 0x00000000000000a0 0x50 build/stm32f4xx_it.o - .debug_ranges 0x00000000000000f0 0x20 build/stm32f4xx_hal_msp.o - .debug_ranges 0x0000000000000110 0x1f8 build/stm32f4xx_hal_uart.o - .debug_ranges 0x0000000000000308 0x90 build/stm32f4xx_hal_rcc.o - .debug_ranges 0x0000000000000398 0x48 build/stm32f4xx_hal_gpio.o - .debug_ranges 0x00000000000003e0 0x110 build/stm32f4xx_hal_cortex.o - .debug_ranges 0x00000000000004f0 0xe0 build/stm32f4xx_hal.o - .debug_ranges 0x00000000000005d0 0x18 build/system_stm32f4xx.o - .debug_ranges 0x00000000000005e8 0x10 build/sysmem.o - .debug_ranges 0x00000000000005f8 0x20 build/startup_stm32f401xe.o - .debug_ranges 0x0000000000000618 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_ranges 0x0000000000000638 0x38 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_ranges 0x0000000000000670 0x40 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_ranges 0x00000000000006b0 0xa0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_ranges 0x0000000000000750 0xe8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) +.debug_ranges 0x0000000000000000 0x878 + .debug_ranges 0x0000000000000000 0xe0 build/main.o + .debug_ranges 0x00000000000000e0 0x50 build/stm32f4xx_it.o + .debug_ranges 0x0000000000000130 0x20 build/stm32f4xx_hal_msp.o + .debug_ranges 0x0000000000000150 0x1f8 build/stm32f4xx_hal_uart.o + .debug_ranges 0x0000000000000348 0x90 build/stm32f4xx_hal_rcc.o + .debug_ranges 0x00000000000003d8 0x48 build/stm32f4xx_hal_gpio.o + .debug_ranges 0x0000000000000420 0x110 build/stm32f4xx_hal_cortex.o + .debug_ranges 0x0000000000000530 0xe0 build/stm32f4xx_hal.o + .debug_ranges 0x0000000000000610 0x18 build/system_stm32f4xx.o + .debug_ranges 0x0000000000000628 0x10 build/sysmem.o + .debug_ranges 0x0000000000000638 0x20 build/startup_stm32f401xe.o + .debug_ranges 0x0000000000000658 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_ranges 0x0000000000000678 0x38 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_ranges 0x00000000000006b0 0x40 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_ranges 0x00000000000006f0 0xa0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_ranges 0x0000000000000790 0xe8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) -.debug_line 0x0000000000000000 0x9d26 - .debug_line 0x0000000000000000 0x6b0 build/main.o - .debug_line 0x00000000000006b0 0x179 build/stm32f4xx_it.o - .debug_line 0x0000000000000829 0x1dd build/stm32f4xx_hal_msp.o - .debug_line 0x0000000000000a06 0x4271 build/stm32f4xx_hal_uart.o - .debug_line 0x0000000000004c77 0xac0 build/stm32f4xx_hal_rcc.o - .debug_line 0x0000000000005737 0x63a build/stm32f4xx_hal_gpio.o - .debug_line 0x0000000000005d71 0x723 build/stm32f4xx_hal_cortex.o - .debug_line 0x0000000000006494 0x4dc build/stm32f4xx_hal.o - .debug_line 0x0000000000006970 0x1c7 build/system_stm32f4xx.o - .debug_line 0x0000000000006b37 0xf9 build/sysmem.o - .debug_line 0x0000000000006c30 0x76 build/startup_stm32f401xe.o - .debug_line 0x0000000000006ca6 0x109 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) - .debug_line 0x0000000000006daf 0xe4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) - .debug_line 0x0000000000006e93 0x138 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) - .debug_line 0x0000000000006fcb 0x15f /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) - .debug_line 0x000000000000712a 0xbe /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) - .debug_line 0x00000000000071e8 0x1bf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) - .debug_line 0x00000000000073a7 0x2ca /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_line 0x0000000000007671 0x2d0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_line 0x0000000000007941 0x183 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) - .debug_line 0x0000000000007ac4 0x209 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) - .debug_line 0x0000000000007ccd 0xaf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) - .debug_line 0x0000000000007d7c 0x13e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) - .debug_line 0x0000000000007eba 0x83a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_line 0x00000000000086f4 0x746 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_line 0x0000000000008e3a 0x2c7 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) - .debug_line 0x0000000000009101 0xa4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) - .debug_line 0x00000000000091a5 0x1ee /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) - .debug_line 0x0000000000009393 0x1c5 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) - .debug_line 0x0000000000009558 0x160 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) - .debug_line 0x00000000000096b8 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) - .debug_line 0x0000000000009718 0x5ae /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) - .debug_line 0x0000000000009cc6 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) +.debug_line 0x0000000000000000 0x9e5c + .debug_line 0x0000000000000000 0x7e6 build/main.o + .debug_line 0x00000000000007e6 0x179 build/stm32f4xx_it.o + .debug_line 0x000000000000095f 0x1dd build/stm32f4xx_hal_msp.o + .debug_line 0x0000000000000b3c 0x4271 build/stm32f4xx_hal_uart.o + .debug_line 0x0000000000004dad 0xac0 build/stm32f4xx_hal_rcc.o + .debug_line 0x000000000000586d 0x63a build/stm32f4xx_hal_gpio.o + .debug_line 0x0000000000005ea7 0x723 build/stm32f4xx_hal_cortex.o + .debug_line 0x00000000000065ca 0x4dc build/stm32f4xx_hal.o + .debug_line 0x0000000000006aa6 0x1c7 build/system_stm32f4xx.o + .debug_line 0x0000000000006c6d 0xf9 build/sysmem.o + .debug_line 0x0000000000006d66 0x76 build/startup_stm32f401xe.o + .debug_line 0x0000000000006ddc 0x109 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + .debug_line 0x0000000000006ee5 0xe4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) + .debug_line 0x0000000000006fc9 0x138 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_line 0x0000000000007101 0x15f /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_line 0x0000000000007260 0xbe /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) + .debug_line 0x000000000000731e 0x1bf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_line 0x00000000000074dd 0x2ca /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_line 0x00000000000077a7 0x2d0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_line 0x0000000000007a77 0x183 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_line 0x0000000000007bfa 0x209 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_line 0x0000000000007e03 0xaf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) + .debug_line 0x0000000000007eb2 0x13e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + .debug_line 0x0000000000007ff0 0x83a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_line 0x000000000000882a 0x746 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_line 0x0000000000008f70 0x2c7 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_line 0x0000000000009237 0xa4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) + .debug_line 0x00000000000092db 0x1ee /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_line 0x00000000000094c9 0x1c5 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_line 0x000000000000968e 0x160 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_line 0x00000000000097ee 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_line 0x000000000000984e 0x5ae /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + .debug_line 0x0000000000009dfc 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) -.debug_str 0x0000000000000000 0x3655 - .debug_str 0x0000000000000000 0xa5e build/main.o - 0xb10 (size before relaxing) - .debug_str 0x0000000000000a5e 0xb4 build/stm32f4xx_it.o +.debug_str 0x0000000000000000 0x36b2 + .debug_str 0x0000000000000000 0xad6 build/main.o + 0xb88 (size before relaxing) + .debug_str 0x0000000000000ad6 0xb4 build/stm32f4xx_it.o 0x224 (size before relaxing) - .debug_str 0x0000000000000b12 0x63 build/stm32f4xx_hal_msp.o + .debug_str 0x0000000000000b8a 0x63 build/stm32f4xx_hal_msp.o 0x7c1 (size before relaxing) - .debug_str 0x0000000000000b75 0x6bf build/stm32f4xx_hal_uart.o + .debug_str 0x0000000000000bed 0x6ae build/stm32f4xx_hal_uart.o 0xd65 (size before relaxing) - .debug_str 0x0000000000001234 0x1d7 build/stm32f4xx_hal_rcc.o + .debug_str 0x000000000000129b 0x1d7 build/stm32f4xx_hal_rcc.o 0x6e2 (size before relaxing) - .debug_str 0x000000000000140b 0x114 build/stm32f4xx_hal_gpio.o + .debug_str 0x0000000000001472 0x114 build/stm32f4xx_hal_gpio.o 0x4c7 (size before relaxing) - .debug_str 0x000000000000151f 0x8d1 build/stm32f4xx_hal_cortex.o + .debug_str 0x0000000000001586 0x8d1 build/stm32f4xx_hal_cortex.o 0xae9 (size before relaxing) - .debug_str 0x0000000000001df0 0x29f build/stm32f4xx_hal.o + .debug_str 0x0000000000001e57 0x295 build/stm32f4xx_hal.o 0x9f4 (size before relaxing) - .debug_str 0x000000000000208f 0x47 build/system_stm32f4xx.o + .debug_str 0x00000000000020ec 0x47 build/system_stm32f4xx.o 0x367 (size before relaxing) - .debug_str 0x00000000000020d6 0x7a build/sysmem.o + .debug_str 0x0000000000002133 0x7a build/sysmem.o 0x205 (size before relaxing) - .debug_str 0x0000000000002150 0x22 build/startup_stm32f401xe.o + .debug_str 0x00000000000021ad 0x22 build/startup_stm32f401xe.o 0x5d (size before relaxing) - .debug_str 0x0000000000002172 0x407 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + .debug_str 0x00000000000021cf 0x407 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) 0x507 (size before relaxing) - .debug_str 0x0000000000002579 0xf2 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) + .debug_str 0x00000000000025d6 0xf2 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-impure.o) 0x55e (size before relaxing) - .debug_str 0x000000000000266b 0xf6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_str 0x00000000000026c8 0xf6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) 0x20b (size before relaxing) - .debug_str 0x0000000000002761 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_str 0x00000000000027be 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) 0x533 (size before relaxing) - .debug_str 0x0000000000002815 0xb6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) - .debug_str 0x00000000000028cb 0xaa /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_str 0x0000000000002872 0xb6 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memcpy.o) + .debug_str 0x0000000000002928 0xaa /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) 0x1c0 (size before relaxing) - .debug_str 0x0000000000002975 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_str 0x00000000000029d2 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) 0x595 (size before relaxing) - .debug_str 0x0000000000002a29 0x46 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_str 0x0000000000002a86 0x46 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) 0x5c0 (size before relaxing) - .debug_str 0x0000000000002a6f 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_str 0x0000000000002acc 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) 0x516 (size before relaxing) - .debug_str 0x0000000000002aa1 0xcb /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_str 0x0000000000002afe 0xcb /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) 0x54c (size before relaxing) - .debug_str 0x0000000000002b6c 0x42 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) + .debug_str 0x0000000000002bc9 0x42 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-strlen.o) 0xb5 (size before relaxing) - .debug_str 0x0000000000002bae 0x4c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + .debug_str 0x0000000000002c0b 0x4c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) 0x52c (size before relaxing) - .debug_str 0x0000000000002bfa 0x287 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_str 0x0000000000002c57 0x287 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) 0x855 (size before relaxing) - .debug_str 0x0000000000002e81 0x94 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_str 0x0000000000002ede 0x94 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) 0x7ec (size before relaxing) - .debug_str 0x0000000000002f15 0x5e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_str 0x0000000000002f72 0x5e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) 0x53e (size before relaxing) - .debug_str 0x0000000000002f73 0x3c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) + .debug_str 0x0000000000002fd0 0x3c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memchr.o) 0xaf (size before relaxing) - .debug_str 0x0000000000002faf 0x66 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_str 0x000000000000300c 0x66 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) 0x1df (size before relaxing) - .debug_str 0x0000000000003015 0x23 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_str 0x0000000000003072 0x23 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) 0x57f (size before relaxing) - .debug_str 0x0000000000003038 0xf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_str 0x0000000000003095 0xf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) 0x55d (size before relaxing) - .debug_str 0x0000000000003047 0x9a /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_str 0x00000000000030a4 0x9a /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) 0xa6 (size before relaxing) - .debug_str 0x00000000000030e1 0x544 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) + .debug_str 0x000000000000313e 0x544 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) 0x647 (size before relaxing) - .debug_str 0x0000000000003625 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) + .debug_str 0x0000000000003682 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_dvmd_tls.o) 0xaa (size before relaxing) -.debug_frame 0x0000000000000000 0x1330 - .debug_frame 0x0000000000000000 0x1d8 build/main.o - .debug_frame 0x00000000000001d8 0xa8 build/stm32f4xx_it.o - .debug_frame 0x0000000000000280 0x60 build/stm32f4xx_hal_msp.o - .debug_frame 0x00000000000002e0 0x5e8 build/stm32f4xx_hal_uart.o - .debug_frame 0x00000000000008c8 0x16c build/stm32f4xx_hal_rcc.o - .debug_frame 0x0000000000000a34 0xd8 build/stm32f4xx_hal_gpio.o - .debug_frame 0x0000000000000b0c 0x178 build/stm32f4xx_hal_cortex.o - .debug_frame 0x0000000000000c84 0x1ec build/stm32f4xx_hal.o - .debug_frame 0x0000000000000e70 0x30 build/system_stm32f4xx.o - .debug_frame 0x0000000000000ea0 0x28 build/sysmem.o - .debug_frame 0x0000000000000ec8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) - .debug_frame 0x0000000000000ee8 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) - .debug_frame 0x0000000000000f14 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) - .debug_frame 0x0000000000000f44 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) - .debug_frame 0x0000000000000f70 0x54 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) - .debug_frame 0x0000000000000fc4 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) - .debug_frame 0x0000000000000ff4 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) - .debug_frame 0x0000000000001020 0x74 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) - .debug_frame 0x0000000000001094 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) - .debug_frame 0x00000000000010c4 0x98 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) - .debug_frame 0x000000000000115c 0x6c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) - .debug_frame 0x00000000000011c8 0x70 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) - .debug_frame 0x0000000000001238 0x40 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) - .debug_frame 0x0000000000001278 0x38 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) - .debug_frame 0x00000000000012b0 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) - .debug_frame 0x00000000000012d0 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) - .debug_frame 0x00000000000012fc 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) +.debug_frame 0x0000000000000000 0x13a4 + .debug_frame 0x0000000000000000 0x24c build/main.o + .debug_frame 0x000000000000024c 0xa8 build/stm32f4xx_it.o + .debug_frame 0x00000000000002f4 0x60 build/stm32f4xx_hal_msp.o + .debug_frame 0x0000000000000354 0x5e8 build/stm32f4xx_hal_uart.o + .debug_frame 0x000000000000093c 0x16c build/stm32f4xx_hal_rcc.o + .debug_frame 0x0000000000000aa8 0xd8 build/stm32f4xx_hal_gpio.o + .debug_frame 0x0000000000000b80 0x178 build/stm32f4xx_hal_cortex.o + .debug_frame 0x0000000000000cf8 0x1ec build/stm32f4xx_hal.o + .debug_frame 0x0000000000000ee4 0x30 build/system_stm32f4xx.o + .debug_frame 0x0000000000000f14 0x28 build/sysmem.o + .debug_frame 0x0000000000000f3c 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-errno.o) + .debug_frame 0x0000000000000f5c 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-init.o) + .debug_frame 0x0000000000000f88 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-malloc.o) + .debug_frame 0x0000000000000fb8 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000000fe4 0x54 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-freer.o) + .debug_frame 0x0000000000001038 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-mallocr.o) + .debug_frame 0x0000000000001068 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sbrkr.o) + .debug_frame 0x0000000000001094 0x74 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-sprintf.o) + .debug_frame 0x0000000000001108 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-mlock.o) + .debug_frame 0x0000000000001138 0x98 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-svfprintf.o) + .debug_frame 0x00000000000011d0 0x6c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_frame 0x000000000000123c 0x70 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-reent.o) + .debug_frame 0x00000000000012ac 0x40 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-memmove.o) + .debug_frame 0x00000000000012ec 0x38 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-reallocr.o) + .debug_frame 0x0000000000001324 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a(lib_a-nano-msizer.o) + .debug_frame 0x0000000000001344 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x0000000000001370 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+fp/hard/libgcc.a(_udivmoddi4.o) Cross Reference Table @@ -1749,6 +1769,8 @@ APBPrescTable build/system_stm32f4xx.o build/stm32f4xx_hal_rcc.o Address_Pins_Init build/main.o BusFault_Handler build/stm32f4xx_it.o +Chip_Erase build/main.o +Chip_Program_Byte build/main.o Command_Pins_Init build/main.o DMA1_Stream0_IRQHandler build/startup_stm32f401xe.o DMA1_Stream1_IRQHandler build/startup_stm32f401xe.o @@ -1769,6 +1791,7 @@ DMA2_Stream7_IRQHandler build/startup_stm32f401xe.o Data_Pins_Init build/main.o DebugMon_Handler build/stm32f4xx_it.o Default_Handler build/startup_stm32f401xe.o +Dump_Flash_UART build/main.o EXTI0_IRQHandler build/startup_stm32f401xe.o EXTI15_10_IRQHandler build/startup_stm32f401xe.o EXTI1_IRQHandler build/startup_stm32f401xe.o @@ -1786,6 +1809,7 @@ FLASH_IRQHandler build/startup_stm32f401xe.o FLASH_WaitForLastOperation build/stm32f4xx_hal_flash.o build/stm32f4xx_hal_flash_ex.o FPU_IRQHandler build/startup_stm32f401xe.o +Flash_From_UART build/main.o Flash_ReadByte build/main.o HAL_CORTEX_ClearEvent build/stm32f4xx_hal_cortex.o HAL_DBGMCU_DisableDBGSleepMode build/stm32f4xx_hal.o @@ -1815,6 +1839,7 @@ HAL_DMA_Start_IT build/stm32f4xx_hal_dma.o HAL_DMA_UnRegisterCallback build/stm32f4xx_hal_dma.o HAL_DeInit build/stm32f4xx_hal.o HAL_Delay build/stm32f4xx_hal.o + build/main.o HAL_DisableCompensationCell build/stm32f4xx_hal.o HAL_EXTI_ClearConfigLine build/stm32f4xx_hal_exti.o HAL_EXTI_ClearPending build/stm32f4xx_hal_exti.o @@ -1995,6 +2020,7 @@ HAL_UART_Init build/stm32f4xx_hal_uart.o HAL_UART_MspDeInit build/stm32f4xx_hal_msp.o HAL_UART_MspInit build/stm32f4xx_hal_msp.o HAL_UART_Receive build/stm32f4xx_hal_uart.o + build/main.o HAL_UART_Receive_DMA build/stm32f4xx_hal_uart.o HAL_UART_Receive_IT build/stm32f4xx_hal_uart.o HAL_UART_RxCpltCallback build/stm32f4xx_hal_uart.o diff --git a/build/main.lst b/build/main.lst index f1656ab..89fe2f9 100644 --- a/build/main.lst +++ b/build/main.lst @@ -1,4 +1,4 @@ -ARM GAS /tmp/ccg6eVgO.s page 1 +ARM GAS /tmp/ccPiCTjg.s page 1 1 .cpu cortex-m4 @@ -25,7 +25,7 @@ ARM GAS /tmp/ccg6eVgO.s page 1 22 .thumb_func 23 .fpu fpv4-sp-d16 25 MX_GPIO_Init: - 26 .LFB151: + 26 .LFB155: 27 .file 1 "Core/Src/main.c" 1:Core/Src/main.c **** /** 2:Core/Src/main.c **** ****************************************************************************** @@ -58,7 +58,7 @@ ARM GAS /tmp/ccg6eVgO.s page 1 29:Core/Src/main.c **** void SystemClock_Config(void); 30:Core/Src/main.c **** static void MX_GPIO_Init(void); 31:Core/Src/main.c **** static void MX_USART2_UART_Init(void); - ARM GAS /tmp/ccg6eVgO.s page 2 + ARM GAS /tmp/ccPiCTjg.s page 2 32:Core/Src/main.c **** @@ -94,254 +94,336 @@ ARM GAS /tmp/ccg6eVgO.s page 1 62:Core/Src/main.c **** sprintf(manufacturer, "0x%02X \r\n", man_id); 63:Core/Src/main.c **** sprintf(device, "0x%02X \r\n", dev_id); 64:Core/Src/main.c **** - 65:Core/Src/main.c **** debug_print("Manufacturer ID = \r\n"); - 66:Core/Src/main.c **** debug_print(manufacturer); - 67:Core/Src/main.c **** debug_print("Device ID = \r\n"); - 68:Core/Src/main.c **** debug_print(device); - 69:Core/Src/main.c **** - 70:Core/Src/main.c **** - 71:Core/Src/main.c **** /* Infinite loop */ - 72:Core/Src/main.c **** while (1) - 73:Core/Src/main.c **** { - 74:Core/Src/main.c **** //debug_print("Hello from STM32!\r\n"); - 75:Core/Src/main.c **** } - 76:Core/Src/main.c **** - 77:Core/Src/main.c **** } - 78:Core/Src/main.c **** - 79:Core/Src/main.c **** void Write_Address(int address){ - 80:Core/Src/main.c **** int pin_array[] = { - 81:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, - 82:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, - 83:Core/Src/main.c **** GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11, - 84:Core/Src/main.c **** GPIO_PIN_12, GPIO_PIN_13, - 85:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4 // These last 3 are our PB pins not - 86:Core/Src/main.c **** }; - 87:Core/Src/main.c **** for(int i=0; i<19; i++){ - 88:Core/Src/main.c **** if(i<14){ - ARM GAS /tmp/ccg6eVgO.s page 3 - - - 89:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); - 90:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); - 91:Core/Src/main.c **** } - 92:Core/Src/main.c **** else{ - 93:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_SET); - 94:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); - 95:Core/Src/main.c **** } - 96:Core/Src/main.c **** } - 97:Core/Src/main.c **** } - 98:Core/Src/main.c **** - 99:Core/Src/main.c **** int Receive_Data(void){ - 100:Core/Src/main.c **** Data_Pins_Init(0); // We make sure it's in input mode - 101:Core/Src/main.c **** int result = 0; - 102:Core/Src/main.c **** int pin_array[] = { - 103:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 104:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, - 105:Core/Src/main.c **** }; - 106:Core/Src/main.c **** for(int i=0; i<8; i++){ - 107:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 108:Core/Src/main.c **** result += 1 << i; - 109:Core/Src/main.c **** } - 110:Core/Src/main.c **** } - 111:Core/Src/main.c **** return result; - 112:Core/Src/main.c **** } - 113:Core/Src/main.c **** - 114:Core/Src/main.c **** void Write_Data(int value){ - 115:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode - 116:Core/Src/main.c **** int pin_array[] = { - 117:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 118:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, - 119:Core/Src/main.c **** }; - 120:Core/Src/main.c **** for(int i=0; i<8; i++){ - 121:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 122:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - 123:Core/Src/main.c **** } - 124:Core/Src/main.c **** } - 125:Core/Src/main.c **** - 126:Core/Src/main.c **** // All arguments must be 0 (low) or 1 (high) - 127:Core/Src/main.c **** void Write_Command_Pins(int CE, int OE, int WE){ - 128:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 129:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 130:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,(WE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 131:Core/Src/main.c **** } - 132:Core/Src/main.c **** - 133:Core/Src/main.c **** void Write_Command(int addr, int data) { - 134:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 135:Core/Src/main.c **** Write_Address(addr); - 136:Core/Src/main.c **** Write_Data(data); - 137:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); - 138:Core/Src/main.c **** // 4. Pulse WE# low to latch data - 139:Core/Src/main.c **** Write_Command_Pins(0, 1, 0); // WE low - 140:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); // WE high - 141:Core/Src/main.c **** - 142:Core/Src/main.c **** // 5. Deassert CE# - 143:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 144:Core/Src/main.c **** } - 145:Core/Src/main.c **** - ARM GAS /tmp/ccg6eVgO.s page 4 - - - 146:Core/Src/main.c **** int Flash_ReadByte(int addr) { - 147:Core/Src/main.c **** Write_Address(addr); - 148:Core/Src/main.c **** Data_Pins_Init(0); - 149:Core/Src/main.c **** Write_Command_Pins(0, 0, 1); - 150:Core/Src/main.c **** int data = Receive_Data(); - 151:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 152:Core/Src/main.c **** return data; - 153:Core/Src/main.c **** } - 154:Core/Src/main.c **** - 155:Core/Src/main.c **** void Enter_Device_ID(int *manufacturer, int *device){ - 156:Core/Src/main.c **** // Enter ID mode - 157:Core/Src/main.c **** Write_Command(0x5555, 0xAA); - 158:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); - 159:Core/Src/main.c **** Write_Command(0x5555, 0x90); - 160:Core/Src/main.c **** - 161:Core/Src/main.c **** // Read Manufacturer ID (it should be 0xBF) - 162:Core/Src/main.c **** *manufacturer = Flash_ReadByte(0x0000); - 163:Core/Src/main.c **** - 164:Core/Src/main.c **** // Read Device ID (it should be 0xB7 for the SST39SF040) - 165:Core/Src/main.c **** *device = Flash_ReadByte(0x0001); + 65:Core/Src/main.c **** debug_print("==========================================\r\n"); + 66:Core/Src/main.c **** debug_print("Manufacturer ID = \r\n"); + 67:Core/Src/main.c **** debug_print(manufacturer); + 68:Core/Src/main.c **** debug_print("Device ID = \r\n"); + 69:Core/Src/main.c **** debug_print(device); + 70:Core/Src/main.c **** debug_print("==========================================\r\n"); + 71:Core/Src/main.c **** + 72:Core/Src/main.c **** /* Infinite loop */ + 73:Core/Src/main.c **** while (1) + 74:Core/Src/main.c **** { + 75:Core/Src/main.c **** debug_print("Hello welcome to the EEPROM programmer! What would you like to do?\r\n"); + 76:Core/Src/main.c **** debug_print("[1] Dump Rom as char\r\n"); + 77:Core/Src/main.c **** debug_print("[2] Erase chip\r\n"); + 78:Core/Src/main.c **** debug_print("[3] Program chip via UART\r\n"); + 79:Core/Src/main.c **** uint8_t resp; + 80:Core/Src/main.c **** HAL_UART_Receive(&huart2, &resp, 1, HAL_MAX_DELAY); + 81:Core/Src/main.c **** + 82:Core/Src/main.c **** switch (resp) + 83:Core/Src/main.c **** { + 84:Core/Src/main.c **** case 0x31: + 85:Core/Src/main.c **** debug_print("Dumping ROM...\r\n"); + 86:Core/Src/main.c **** Dump_Flash_UART(1); + 87:Core/Src/main.c **** break; + 88:Core/Src/main.c **** case 0x32: + ARM GAS /tmp/ccPiCTjg.s page 3 + + + 89:Core/Src/main.c **** debug_print("Erasing Chip...\r\n"); + 90:Core/Src/main.c **** Chip_Erase(); + 91:Core/Src/main.c **** break; + 92:Core/Src/main.c **** case 0x33: + 93:Core/Src/main.c **** debug_print("Launching programming sequence...\r\n"); + 94:Core/Src/main.c **** Flash_From_UART(); + 95:Core/Src/main.c **** break; + 96:Core/Src/main.c **** default: + 97:Core/Src/main.c **** debug_print("Invalid input!\r\n"); + 98:Core/Src/main.c **** break; + 99:Core/Src/main.c **** } + 100:Core/Src/main.c **** } + 101:Core/Src/main.c **** + 102:Core/Src/main.c **** } + 103:Core/Src/main.c **** + 104:Core/Src/main.c **** void Write_Address(int address){ + 105:Core/Src/main.c **** int pin_array[] = { + 106:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, + 107:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, + 108:Core/Src/main.c **** GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11, + 109:Core/Src/main.c **** GPIO_PIN_12, GPIO_PIN_13, + 110:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4 // These last 3 are our PB pins not + 111:Core/Src/main.c **** }; + 112:Core/Src/main.c **** for(int i=0; i<19; i++){ + 113:Core/Src/main.c **** if(i<14){ + 114:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); + 115:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); + 116:Core/Src/main.c **** } + 117:Core/Src/main.c **** else{ + 118:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_SET); + 119:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); + 120:Core/Src/main.c **** } + 121:Core/Src/main.c **** } + 122:Core/Src/main.c **** } + 123:Core/Src/main.c **** + 124:Core/Src/main.c **** int Receive_Data(void){ + 125:Core/Src/main.c **** Data_Pins_Init(0); // We make sure it's in input mode + 126:Core/Src/main.c **** int result = 0; + 127:Core/Src/main.c **** int pin_array[] = { + 128:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 129:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, + 130:Core/Src/main.c **** }; + 131:Core/Src/main.c **** for(int i=0; i<8; i++){ + 132:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 133:Core/Src/main.c **** result += 1 << i; + 134:Core/Src/main.c **** } + 135:Core/Src/main.c **** } + 136:Core/Src/main.c **** return result; + 137:Core/Src/main.c **** } + 138:Core/Src/main.c **** + 139:Core/Src/main.c **** void Write_Data(int value){ + 140:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode + 141:Core/Src/main.c **** int pin_array[] = { + 142:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 143:Core/Src/main.c **** GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, + 144:Core/Src/main.c **** }; + 145:Core/Src/main.c **** for(int i=0; i<8; i++){ + ARM GAS /tmp/ccPiCTjg.s page 4 + + + 146:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 147:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 148:Core/Src/main.c **** } + 149:Core/Src/main.c **** } + 150:Core/Src/main.c **** + 151:Core/Src/main.c **** // All arguments must be 0 (low) or 1 (high) + 152:Core/Src/main.c **** void Write_Command_Pins(int CE, int OE, int WE){ + 153:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 154:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 155:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,(WE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 156:Core/Src/main.c **** } + 157:Core/Src/main.c **** + 158:Core/Src/main.c **** void Write_Command(int addr, int data) { + 159:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 160:Core/Src/main.c **** Write_Address(addr); + 161:Core/Src/main.c **** Write_Data(data); + 162:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); + 163:Core/Src/main.c **** // 4. Pulse WE# low to latch data + 164:Core/Src/main.c **** Write_Command_Pins(0, 1, 0); // WE low + 165:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); // WE high 166:Core/Src/main.c **** - 167:Core/Src/main.c **** // Exit ID mode - 168:Core/Src/main.c **** Write_Command(0x5555, 0xF0); + 167:Core/Src/main.c **** // 5. Deassert CE# + 168:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); 169:Core/Src/main.c **** } 170:Core/Src/main.c **** - 171:Core/Src/main.c **** /** - 172:Core/Src/main.c **** * @brief System Clock Configuration - 173:Core/Src/main.c **** * @retval None - 174:Core/Src/main.c **** */ - 175:Core/Src/main.c **** void SystemClock_Config(void) - 176:Core/Src/main.c **** { - 177:Core/Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 178:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 171:Core/Src/main.c **** int Flash_ReadByte(int addr) { + 172:Core/Src/main.c **** Write_Address(addr); + 173:Core/Src/main.c **** Data_Pins_Init(0); + 174:Core/Src/main.c **** Write_Command_Pins(0, 0, 1); + 175:Core/Src/main.c **** int data = Receive_Data(); + 176:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 177:Core/Src/main.c **** return data; + 178:Core/Src/main.c **** } 179:Core/Src/main.c **** - 180:Core/Src/main.c **** /** Configure the main internal regulator output voltage - 181:Core/Src/main.c **** */ - 182:Core/Src/main.c **** __HAL_RCC_PWR_CLK_ENABLE(); - 183:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 184:Core/Src/main.c **** - 185:Core/Src/main.c **** /** Initializes the RCC Oscillators according to the specified parameters - 186:Core/Src/main.c **** * in the RCC_OscInitTypeDef structure. - 187:Core/Src/main.c **** */ - 188:Core/Src/main.c **** RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - 189:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 190:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 191:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 192:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 193:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; - 194:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; - 195:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; - 196:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; - 197:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 198:Core/Src/main.c **** { - 199:Core/Src/main.c **** Error_Handler(); - 200:Core/Src/main.c **** } - 201:Core/Src/main.c **** - 202:Core/Src/main.c **** /** Initializes the CPU, AHB and APB buses clocks - ARM GAS /tmp/ccg6eVgO.s page 5 - - - 203:Core/Src/main.c **** */ - 204:Core/Src/main.c **** RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 205:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - 206:Core/Src/main.c **** RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 207:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 208:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 209:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 210:Core/Src/main.c **** - 211:Core/Src/main.c **** if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 212:Core/Src/main.c **** { - 213:Core/Src/main.c **** Error_Handler(); - 214:Core/Src/main.c **** } - 215:Core/Src/main.c **** } - 216:Core/Src/main.c **** - 217:Core/Src/main.c **** /** - 218:Core/Src/main.c **** * @brief USART2 Initialization Function - 219:Core/Src/main.c **** * @param None - 220:Core/Src/main.c **** * @retval None - 221:Core/Src/main.c **** */ - 222:Core/Src/main.c **** static void MX_USART2_UART_Init(void) - 223:Core/Src/main.c **** { - 224:Core/Src/main.c **** huart2.Instance = USART2; - 225:Core/Src/main.c **** huart2.Init.BaudRate = 115200; - 226:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; - 227:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; - 228:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; - 229:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; - 230:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 231:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 232:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) - 233:Core/Src/main.c **** { - 234:Core/Src/main.c **** Error_Handler(); - 235:Core/Src/main.c **** } + 180:Core/Src/main.c **** void Enter_Device_ID(int *manufacturer, int *device){ + 181:Core/Src/main.c **** // Enter ID mode + 182:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 183:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 184:Core/Src/main.c **** Write_Command(0x5555, 0x90); + 185:Core/Src/main.c **** + 186:Core/Src/main.c **** // Read Manufacturer ID (it should be 0xBF) + 187:Core/Src/main.c **** *manufacturer = Flash_ReadByte(0x0000); + 188:Core/Src/main.c **** + 189:Core/Src/main.c **** // Read Device ID (it should be 0xB7 for the SST39SF040) + 190:Core/Src/main.c **** *device = Flash_ReadByte(0x0001); + 191:Core/Src/main.c **** + 192:Core/Src/main.c **** // Exit ID mode + 193:Core/Src/main.c **** Write_Command(0x5555, 0xF0); + 194:Core/Src/main.c **** } + 195:Core/Src/main.c **** + 196:Core/Src/main.c **** void Dump_Flash_UART(int visual_format){ + 197:Core/Src/main.c **** uint8_t byte; + 198:Core/Src/main.c **** char buf[8]; + 199:Core/Src/main.c **** + 200:Core/Src/main.c **** for (int addr = 0; addr < 0x80000; addr++) { // 512 KB + 201:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 202:Core/Src/main.c **** + ARM GAS /tmp/ccPiCTjg.s page 5 + + + 203:Core/Src/main.c **** if(visual_format==0){ + 204:Core/Src/main.c **** // Send as raw byte: + 205:Core/Src/main.c **** HAL_UART_Transmit(&huart2, &byte, 1, HAL_MAX_DELAY); + 206:Core/Src/main.c **** }else{ + 207:Core/Src/main.c **** // Send as str + 208:Core/Src/main.c **** sprintf(buf, "%02X ", byte); + 209:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY); + 210:Core/Src/main.c **** if ((addr & 0x0F) == 0x0F) { + 211:Core/Src/main.c **** char newline[] = "\r\n"; + 212:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)newline, 2, HAL_MAX_DELAY); + 213:Core/Src/main.c **** } + 214:Core/Src/main.c **** } + 215:Core/Src/main.c **** } + 216:Core/Src/main.c **** } + 217:Core/Src/main.c **** + 218:Core/Src/main.c **** void Chip_Erase(void){ + 219:Core/Src/main.c **** // Erase sequence + 220:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 221:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 222:Core/Src/main.c **** Write_Command(0x5555, 0x80); + 223:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 224:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 225:Core/Src/main.c **** Write_Command(0x5555, 0x10); + 226:Core/Src/main.c **** + 227:Core/Src/main.c **** HAL_Delay(150); // it's 100ms max but by precaution + 228:Core/Src/main.c **** } + 229:Core/Src/main.c **** + 230:Core/Src/main.c **** void Chip_Program_Byte(int addr, int data){ + 231:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 232:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 233:Core/Src/main.c **** Write_Command(0x5555, 0xA0); + 234:Core/Src/main.c **** Write_Command(addr, data); + 235:Core/Src/main.c **** } 236:Core/Src/main.c **** - 237:Core/Src/main.c **** } - 238:Core/Src/main.c **** - 239:Core/Src/main.c **** // The argument must be 0 (input) or 1 (output) - 240:Core/Src/main.c **** void Data_Pins_Init(int as_output){ - 241:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; - 242:Core/Src/main.c **** - 243:Core/Src/main.c **** // Configure PA0..PA7 as push-pull outputs - 244:Core/Src/main.c **** GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_11 | GPIO_PIN_12 | - 245:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; - 246:Core/Src/main.c **** if(as_output == 1){ - 247:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 248:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 249:Core/Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 250:Core/Src/main.c **** }else{ - 251:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // Input mode - 252:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_PULLDOWN; // No pull-up/down - 253:Core/Src/main.c **** } - 254:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 255:Core/Src/main.c **** } - 256:Core/Src/main.c **** - 257:Core/Src/main.c **** void Address_Pins_Init(void){ - 258:Core/Src/main.c **** GPIO_InitTypeDef GPIOC_InitStruct = {0}; - 259:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs - ARM GAS /tmp/ccg6eVgO.s page 6 - - - 260:Core/Src/main.c **** GPIOC_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | - 261:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | - 262:Core/Src/main.c **** GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10| GPIO_PIN_11| - 263:Core/Src/main.c **** GPIO_PIN_12| GPIO_PIN_13| GPIO_PIN_14| GPIO_PIN_15; - 264:Core/Src/main.c **** GPIOC_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 265:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 266:Core/Src/main.c **** GPIOC_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 267:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); - 268:Core/Src/main.c **** - 269:Core/Src/main.c **** // Then we do the same for the remaining - 270:Core/Src/main.c **** GPIO_InitTypeDef GPIOB_InitStruct = {0}; - 271:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs - 272:Core/Src/main.c **** GPIOB_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4; - 273:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 274:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 275:Core/Src/main.c **** GPIOB_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 276:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); - 277:Core/Src/main.c **** } - 278:Core/Src/main.c **** - 279:Core/Src/main.c **** void Command_Pins_Init(void){ - 280:Core/Src/main.c **** // PA8-10 as outputs pins - 281:Core/Src/main.c **** GPIO_InitTypeDef GPIOA_InitStruct = {0}; - 282:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; - 283:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 284:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 285:Core/Src/main.c **** GPIOA_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 286:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); - 287:Core/Src/main.c **** } - 288:Core/Src/main.c **** - 289:Core/Src/main.c **** void debug_print(const char *msg) { - 290:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); + 237:Core/Src/main.c **** void Flash_From_UART(void){ + 238:Core/Src/main.c **** debug_print("Waiting for file to flash...\r\n"); + 239:Core/Src/main.c **** uint8_t byte; + 240:Core/Src/main.c **** for(int i=0; i<8; i++){ + 241:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 242:Core/Src/main.c **** Chip_Program_Byte(i, (int)byte); + 243:Core/Src/main.c **** } + 244:Core/Src/main.c **** debug_print("finished\r\n"); + 245:Core/Src/main.c **** } + 246:Core/Src/main.c **** + 247:Core/Src/main.c **** /** + 248:Core/Src/main.c **** * @brief System Clock Configuration + 249:Core/Src/main.c **** * @retval None + 250:Core/Src/main.c **** */ + 251:Core/Src/main.c **** void SystemClock_Config(void) + 252:Core/Src/main.c **** { + 253:Core/Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 254:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 255:Core/Src/main.c **** + 256:Core/Src/main.c **** /** Configure the main internal regulator output voltage + 257:Core/Src/main.c **** */ + 258:Core/Src/main.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 259:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + ARM GAS /tmp/ccPiCTjg.s page 6 + + + 260:Core/Src/main.c **** + 261:Core/Src/main.c **** /** Initializes the RCC Oscillators according to the specified parameters + 262:Core/Src/main.c **** * in the RCC_OscInitTypeDef structure. + 263:Core/Src/main.c **** */ + 264:Core/Src/main.c **** RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 265:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 266:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 267:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 268:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + 269:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; + 270:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; + 271:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; + 272:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; + 273:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 274:Core/Src/main.c **** { + 275:Core/Src/main.c **** Error_Handler(); + 276:Core/Src/main.c **** } + 277:Core/Src/main.c **** + 278:Core/Src/main.c **** /** Initializes the CPU, AHB and APB buses clocks + 279:Core/Src/main.c **** */ + 280:Core/Src/main.c **** RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 281:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 282:Core/Src/main.c **** RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + 283:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 284:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + 285:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 286:Core/Src/main.c **** + 287:Core/Src/main.c **** if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) + 288:Core/Src/main.c **** { + 289:Core/Src/main.c **** Error_Handler(); + 290:Core/Src/main.c **** } 291:Core/Src/main.c **** } 292:Core/Src/main.c **** 293:Core/Src/main.c **** /** - 294:Core/Src/main.c **** * @brief GPIO Initialization Function + 294:Core/Src/main.c **** * @brief USART2 Initialization Function 295:Core/Src/main.c **** * @param None 296:Core/Src/main.c **** * @retval None 297:Core/Src/main.c **** */ - 298:Core/Src/main.c **** static void MX_GPIO_Init(void) + 298:Core/Src/main.c **** static void MX_USART2_UART_Init(void) 299:Core/Src/main.c **** { - 28 .loc 1 299 1 view -0 + 300:Core/Src/main.c **** huart2.Instance = USART2; + 301:Core/Src/main.c **** huart2.Init.BaudRate = 115200; + 302:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; + 303:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; + 304:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; + 305:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; + 306:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 307:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; + 308:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) + 309:Core/Src/main.c **** { + 310:Core/Src/main.c **** Error_Handler(); + 311:Core/Src/main.c **** } + 312:Core/Src/main.c **** + 313:Core/Src/main.c **** } + 314:Core/Src/main.c **** + 315:Core/Src/main.c **** // The argument must be 0 (input) or 1 (output) + 316:Core/Src/main.c **** void Data_Pins_Init(int as_output){ + ARM GAS /tmp/ccPiCTjg.s page 7 + + + 317:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 318:Core/Src/main.c **** + 319:Core/Src/main.c **** // Configure PA0..PA7 as push-pull outputs + 320:Core/Src/main.c **** GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_11 | GPIO_PIN_12 | + 321:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; + 322:Core/Src/main.c **** if(as_output == 1){ + 323:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 324:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 325:Core/Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 326:Core/Src/main.c **** }else{ + 327:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // Input mode + 328:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_PULLDOWN; // No pull-up/down + 329:Core/Src/main.c **** } + 330:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 331:Core/Src/main.c **** } + 332:Core/Src/main.c **** + 333:Core/Src/main.c **** void Address_Pins_Init(void){ + 334:Core/Src/main.c **** GPIO_InitTypeDef GPIOC_InitStruct = {0}; + 335:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs + 336:Core/Src/main.c **** GPIOC_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | + 337:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | + 338:Core/Src/main.c **** GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10| GPIO_PIN_11| + 339:Core/Src/main.c **** GPIO_PIN_12| GPIO_PIN_13| GPIO_PIN_14| GPIO_PIN_15; + 340:Core/Src/main.c **** GPIOC_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 341:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 342:Core/Src/main.c **** GPIOC_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 343:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); + 344:Core/Src/main.c **** + 345:Core/Src/main.c **** // Then we do the same for the remaining + 346:Core/Src/main.c **** GPIO_InitTypeDef GPIOB_InitStruct = {0}; + 347:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs + 348:Core/Src/main.c **** GPIOB_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4; + 349:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 350:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 351:Core/Src/main.c **** GPIOB_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 352:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); + 353:Core/Src/main.c **** } + 354:Core/Src/main.c **** + 355:Core/Src/main.c **** void Command_Pins_Init(void){ + 356:Core/Src/main.c **** // PA8-10 as outputs pins + 357:Core/Src/main.c **** GPIO_InitTypeDef GPIOA_InitStruct = {0}; + 358:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + 359:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 360:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 361:Core/Src/main.c **** GPIOA_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 362:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); + 363:Core/Src/main.c **** } + 364:Core/Src/main.c **** + 365:Core/Src/main.c **** void debug_print(const char *msg) { + 366:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); + 367:Core/Src/main.c **** } + 368:Core/Src/main.c **** + 369:Core/Src/main.c **** /** + 370:Core/Src/main.c **** * @brief GPIO Initialization Function + 371:Core/Src/main.c **** * @param None + 372:Core/Src/main.c **** * @retval None + 373:Core/Src/main.c **** */ + ARM GAS /tmp/ccPiCTjg.s page 8 + + + 374:Core/Src/main.c **** static void MX_GPIO_Init(void) + 375:Core/Src/main.c **** { + 28 .loc 1 375 1 view -0 29 .cfi_startproc 30 @ args = 0, pretend = 0, frame = 16 31 @ frame_needed = 0, uses_anonymous_args = 0 @@ -349,101 +431,98 @@ ARM GAS /tmp/ccg6eVgO.s page 1 33 0000 84B0 sub sp, sp, #16 34 .LCFI0: 35 .cfi_def_cfa_offset 16 - 300:Core/Src/main.c **** /* GPIO Ports Clock Enable */ - 301:Core/Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); - 36 .loc 1 301 3 view .LVU1 + 376:Core/Src/main.c **** /* GPIO Ports Clock Enable */ + 377:Core/Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 36 .loc 1 377 3 view .LVU1 37 .LBB4: - 38 .loc 1 301 3 view .LVU2 + 38 .loc 1 377 3 view .LVU2 39 0002 0022 movs r2, #0 40 0004 0092 str r2, [sp] - 41 .loc 1 301 3 view .LVU3 + 41 .loc 1 377 3 view .LVU3 42 0006 154B ldr r3, .L3 - ARM GAS /tmp/ccg6eVgO.s page 7 - - 43 0008 196B ldr r1, [r3, #48] 44 000a 41F00401 orr r1, r1, #4 45 000e 1963 str r1, [r3, #48] - 46 .loc 1 301 3 view .LVU4 + 46 .loc 1 377 3 view .LVU4 47 0010 196B ldr r1, [r3, #48] 48 0012 01F00401 and r1, r1, #4 49 0016 0091 str r1, [sp] - 50 .loc 1 301 3 view .LVU5 + 50 .loc 1 377 3 view .LVU5 51 0018 0099 ldr r1, [sp] 52 .LBE4: - 53 .loc 1 301 3 view .LVU6 - 302:Core/Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); - 54 .loc 1 302 3 view .LVU7 + 53 .loc 1 377 3 view .LVU6 + 378:Core/Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 54 .loc 1 378 3 view .LVU7 55 .LBB5: - 56 .loc 1 302 3 view .LVU8 + 56 .loc 1 378 3 view .LVU8 57 001a 0192 str r2, [sp, #4] - 58 .loc 1 302 3 view .LVU9 + 58 .loc 1 378 3 view .LVU9 59 001c 196B ldr r1, [r3, #48] 60 001e 41F08001 orr r1, r1, #128 61 0022 1963 str r1, [r3, #48] - 62 .loc 1 302 3 view .LVU10 + 62 .loc 1 378 3 view .LVU10 63 0024 196B ldr r1, [r3, #48] 64 0026 01F08001 and r1, r1, #128 65 002a 0191 str r1, [sp, #4] - 66 .loc 1 302 3 view .LVU11 + 66 .loc 1 378 3 view .LVU11 67 002c 0199 ldr r1, [sp, #4] 68 .LBE5: - 69 .loc 1 302 3 view .LVU12 - 303:Core/Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); - 70 .loc 1 303 3 view .LVU13 + 69 .loc 1 378 3 view .LVU12 + 379:Core/Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 70 .loc 1 379 3 view .LVU13 71 .LBB6: - 72 .loc 1 303 3 view .LVU14 + 72 .loc 1 379 3 view .LVU14 73 002e 0292 str r2, [sp, #8] - 74 .loc 1 303 3 view .LVU15 + 74 .loc 1 379 3 view .LVU15 75 0030 196B ldr r1, [r3, #48] 76 0032 41F00101 orr r1, r1, #1 77 0036 1963 str r1, [r3, #48] - 78 .loc 1 303 3 view .LVU16 + 78 .loc 1 379 3 view .LVU16 + ARM GAS /tmp/ccPiCTjg.s page 9 + + 79 0038 196B ldr r1, [r3, #48] 80 003a 01F00101 and r1, r1, #1 81 003e 0291 str r1, [sp, #8] - 82 .loc 1 303 3 view .LVU17 + 82 .loc 1 379 3 view .LVU17 83 0040 0299 ldr r1, [sp, #8] 84 .LBE6: - 85 .loc 1 303 3 view .LVU18 - 304:Core/Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); - 86 .loc 1 304 3 view .LVU19 + 85 .loc 1 379 3 view .LVU18 + 380:Core/Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 86 .loc 1 380 3 view .LVU19 87 .LBB7: - 88 .loc 1 304 3 view .LVU20 + 88 .loc 1 380 3 view .LVU20 89 0042 0392 str r2, [sp, #12] - 90 .loc 1 304 3 view .LVU21 + 90 .loc 1 380 3 view .LVU21 91 0044 1A6B ldr r2, [r3, #48] 92 0046 42F00202 orr r2, r2, #2 93 004a 1A63 str r2, [r3, #48] - 94 .loc 1 304 3 view .LVU22 + 94 .loc 1 380 3 view .LVU22 95 004c 1B6B ldr r3, [r3, #48] 96 004e 03F00203 and r3, r3, #2 - ARM GAS /tmp/ccg6eVgO.s page 8 - - 97 0052 0393 str r3, [sp, #12] - 98 .loc 1 304 3 view .LVU23 + 98 .loc 1 380 3 view .LVU23 99 0054 039B ldr r3, [sp, #12] 100 .LBE7: - 101 .loc 1 304 3 view .LVU24 - 305:Core/Src/main.c **** - 306:Core/Src/main.c **** /*Configure GPIO pin Output Level */ - 307:Core/Src/main.c **** // HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); - 308:Core/Src/main.c **** - 309:Core/Src/main.c **** /*Configure GPIO pin : B1_Pin */ - 310:Core/Src/main.c **** // GPIO_InitStruct.Pin = B1_Pin; - 311:Core/Src/main.c **** // GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - 312:Core/Src/main.c **** // GPIO_InitStruct.Pull = GPIO_NOPULL; - 313:Core/Src/main.c **** // HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); - 314:Core/Src/main.c **** - 315:Core/Src/main.c **** /*Configure GPIO pin : LD2_Pin */ - 316:Core/Src/main.c **** // GPIO_InitStruct.Pin = LD2_Pin; - 317:Core/Src/main.c **** // GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 318:Core/Src/main.c **** // GPIO_InitStruct.Pull = GPIO_NOPULL; - 319:Core/Src/main.c **** // GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 320:Core/Src/main.c **** // HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); - 321:Core/Src/main.c **** } - 102 .loc 1 321 1 is_stmt 0 view .LVU25 + 101 .loc 1 380 3 view .LVU24 + 381:Core/Src/main.c **** + 382:Core/Src/main.c **** /*Configure GPIO pin Output Level */ + 383:Core/Src/main.c **** // HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET); + 384:Core/Src/main.c **** + 385:Core/Src/main.c **** /*Configure GPIO pin : B1_Pin */ + 386:Core/Src/main.c **** // GPIO_InitStruct.Pin = B1_Pin; + 387:Core/Src/main.c **** // GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + 388:Core/Src/main.c **** // GPIO_InitStruct.Pull = GPIO_NOPULL; + 389:Core/Src/main.c **** // HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct); + 390:Core/Src/main.c **** + 391:Core/Src/main.c **** /*Configure GPIO pin : LD2_Pin */ + 392:Core/Src/main.c **** // GPIO_InitStruct.Pin = LD2_Pin; + 393:Core/Src/main.c **** // GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 394:Core/Src/main.c **** // GPIO_InitStruct.Pull = GPIO_NOPULL; + 395:Core/Src/main.c **** // GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 396:Core/Src/main.c **** // HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct); + 397:Core/Src/main.c **** } + 102 .loc 1 397 1 is_stmt 0 view .LVU25 103 0056 04B0 add sp, sp, #16 104 .LCFI1: 105 .cfi_def_cfa_offset 0 @@ -454,64 +533,64 @@ ARM GAS /tmp/ccg6eVgO.s page 1 110 .L3: 111 005c 00380240 .word 1073887232 112 .cfi_endproc - 113 .LFE151: + 113 .LFE155: 115 .section .text.Write_Address,"ax",%progbits 116 .align 1 117 .global Write_Address 118 .syntax unified + ARM GAS /tmp/ccPiCTjg.s page 10 + + 119 .thumb 120 .thumb_func 121 .fpu fpv4-sp-d16 123 Write_Address: 124 .LVL0: 125 .LFB138: - 79:Core/Src/main.c **** int pin_array[] = { - 126 .loc 1 79 32 is_stmt 1 view -0 + 104:Core/Src/main.c **** int pin_array[] = { + 126 .loc 1 104 32 is_stmt 1 view -0 127 .cfi_startproc 128 @ args = 0, pretend = 0, frame = 80 129 @ frame_needed = 0, uses_anonymous_args = 0 - 79:Core/Src/main.c **** int pin_array[] = { - 130 .loc 1 79 32 is_stmt 0 view .LVU27 + 104:Core/Src/main.c **** int pin_array[] = { + 130 .loc 1 104 32 is_stmt 0 view .LVU27 131 0000 30B5 push {r4, r5, lr} 132 .LCFI2: 133 .cfi_def_cfa_offset 12 134 .cfi_offset 4, -12 135 .cfi_offset 5, -8 136 .cfi_offset 14, -4 - ARM GAS /tmp/ccg6eVgO.s page 9 - - 137 0002 95B0 sub sp, sp, #84 138 .LCFI3: 139 .cfi_def_cfa_offset 96 140 0004 0546 mov r5, r0 - 80:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, - 141 .loc 1 80 3 is_stmt 1 view .LVU28 - 80:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, - 142 .loc 1 80 7 is_stmt 0 view .LVU29 + 105:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, + 141 .loc 1 105 3 is_stmt 1 view .LVU28 + 105:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, + 142 .loc 1 105 7 is_stmt 0 view .LVU29 143 0006 4C22 movs r2, #76 144 0008 1E49 ldr r1, .L14 145 000a 01A8 add r0, sp, #4 146 .LVL1: - 80:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, - 147 .loc 1 80 7 view .LVU30 + 105:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, + 147 .loc 1 105 7 view .LVU30 148 000c FFF7FEFF bl memcpy 149 .LVL2: - 87:Core/Src/main.c **** if(i<14){ - 150 .loc 1 87 3 is_stmt 1 view .LVU31 + 112:Core/Src/main.c **** if(i<14){ + 150 .loc 1 112 3 is_stmt 1 view .LVU31 151 .LBB8: - 87:Core/Src/main.c **** if(i<14){ - 152 .loc 1 87 7 view .LVU32 - 87:Core/Src/main.c **** if(i<14){ - 153 .loc 1 87 11 is_stmt 0 view .LVU33 + 112:Core/Src/main.c **** if(i<14){ + 152 .loc 1 112 7 view .LVU32 + 112:Core/Src/main.c **** if(i<14){ + 153 .loc 1 112 11 is_stmt 0 view .LVU33 154 0010 0024 movs r4, #0 - 87:Core/Src/main.c **** if(i<14){ - 155 .loc 1 87 3 view .LVU34 + 112:Core/Src/main.c **** if(i<14){ + 155 .loc 1 112 3 view .LVU34 156 0012 09E0 b .L6 157 .LVL3: 158 .L8: - 90:Core/Src/main.c **** } - 159 .loc 1 90 12 is_stmt 1 view .LVU35 + 115:Core/Src/main.c **** } + 159 .loc 1 115 12 is_stmt 1 view .LVU35 160 0014 0022 movs r2, #0 161 0016 14AB add r3, sp, #80 162 0018 03EB8403 add r3, r3, r4, lsl #2 @@ -519,40 +598,40 @@ ARM GAS /tmp/ccg6eVgO.s page 1 164 0020 1948 ldr r0, .L14+4 165 0022 FFF7FEFF bl HAL_GPIO_WritePin 166 .LVL4: + ARM GAS /tmp/ccPiCTjg.s page 11 + + 167 .L9: - 87:Core/Src/main.c **** if(i<14){ - 168 .loc 1 87 22 discriminator 2 view .LVU36 - 87:Core/Src/main.c **** if(i<14){ - 169 .loc 1 87 23 is_stmt 0 discriminator 2 view .LVU37 + 112:Core/Src/main.c **** if(i<14){ + 168 .loc 1 112 22 discriminator 2 view .LVU36 + 112:Core/Src/main.c **** if(i<14){ + 169 .loc 1 112 23 is_stmt 0 discriminator 2 view .LVU37 170 0026 0134 adds r4, r4, #1 171 .LVL5: 172 .L6: - 87:Core/Src/main.c **** if(i<14){ - 173 .loc 1 87 16 is_stmt 1 discriminator 1 view .LVU38 - 87:Core/Src/main.c **** if(i<14){ - 174 .loc 1 87 3 is_stmt 0 discriminator 1 view .LVU39 + 112:Core/Src/main.c **** if(i<14){ + 173 .loc 1 112 16 is_stmt 1 discriminator 1 view .LVU38 + 112:Core/Src/main.c **** if(i<14){ + 174 .loc 1 112 3 is_stmt 0 discriminator 1 view .LVU39 175 0028 122C cmp r4, #18 176 002a 29DC bgt .L13 - 88:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); - 177 .loc 1 88 5 is_stmt 1 view .LVU40 - 88:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); - 178 .loc 1 88 7 is_stmt 0 view .LVU41 + 113:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); + 177 .loc 1 113 5 is_stmt 1 view .LVU40 + 113:Core/Src/main.c **** if((address >> i) & 1) HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_SET); + 178 .loc 1 113 7 is_stmt 0 view .LVU41 179 002c 0D2C cmp r4, #13 - ARM GAS /tmp/ccg6eVgO.s page 10 - - 180 002e 0EDC bgt .L7 - 89:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); - 181 .loc 1 89 7 is_stmt 1 view .LVU42 - 89:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); - 182 .loc 1 89 19 is_stmt 0 view .LVU43 + 114:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); + 181 .loc 1 114 7 is_stmt 1 view .LVU42 + 114:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); + 182 .loc 1 114 19 is_stmt 0 view .LVU43 183 0030 45FA04F3 asr r3, r5, r4 - 89:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); - 184 .loc 1 89 9 view .LVU44 + 114:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); + 184 .loc 1 114 9 view .LVU44 185 0034 13F0010F tst r3, #1 186 0038 ECD0 beq .L8 - 89:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); - 187 .loc 1 89 30 is_stmt 1 discriminator 1 view .LVU45 + 114:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOC, pin_array[i], GPIO_PIN_RESET); + 187 .loc 1 114 30 is_stmt 1 discriminator 1 view .LVU45 188 003a 0122 movs r2, #1 189 003c 14AB add r3, sp, #80 190 003e 03EB8403 add r3, r3, r4, lsl #2 @@ -562,28 +641,31 @@ ARM GAS /tmp/ccg6eVgO.s page 1 194 .LVL6: 195 004c EBE7 b .L9 196 .L7: - 93:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); - 197 .loc 1 93 7 view .LVU46 - 93:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); - 198 .loc 1 93 19 is_stmt 0 view .LVU47 + 118:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); + 197 .loc 1 118 7 view .LVU46 + 118:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); + 198 .loc 1 118 19 is_stmt 0 view .LVU47 199 004e 45FA04F3 asr r3, r5, r4 - 93:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); - 200 .loc 1 93 9 view .LVU48 + 118:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); + 200 .loc 1 118 9 view .LVU48 201 0052 13F0010F tst r3, #1 202 0056 09D0 beq .L10 - 93:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); - 203 .loc 1 93 30 is_stmt 1 discriminator 1 view .LVU49 + 118:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOB, pin_array[i], GPIO_PIN_RESET); + 203 .loc 1 118 30 is_stmt 1 discriminator 1 view .LVU49 204 0058 0122 movs r2, #1 205 005a 14AB add r3, sp, #80 206 005c 03EB8403 add r3, r3, r4, lsl #2 207 0060 33F84C1C ldrh r1, [r3, #-76] 208 0064 0948 ldr r0, .L14+8 209 0066 FFF7FEFF bl HAL_GPIO_WritePin + ARM GAS /tmp/ccPiCTjg.s page 12 + + 210 .LVL7: 211 006a DCE7 b .L9 212 .L10: - 94:Core/Src/main.c **** } - 213 .loc 1 94 12 view .LVU50 + 119:Core/Src/main.c **** } + 213 .loc 1 119 12 view .LVU50 214 006c 0022 movs r2, #0 215 006e 14AB add r3, sp, #80 216 0070 03EB8403 add r3, r3, r4, lsl #2 @@ -593,14 +675,11 @@ ARM GAS /tmp/ccg6eVgO.s page 1 220 .LVL8: 221 007e D2E7 b .L9 222 .L13: - 94:Core/Src/main.c **** } - 223 .loc 1 94 12 is_stmt 0 view .LVU51 + 119:Core/Src/main.c **** } + 223 .loc 1 119 12 is_stmt 0 view .LVU51 224 .LBE8: - 97:Core/Src/main.c **** - 225 .loc 1 97 1 view .LVU52 - ARM GAS /tmp/ccg6eVgO.s page 11 - - + 122:Core/Src/main.c **** + 225 .loc 1 122 1 view .LVU52 226 0080 15B0 add sp, sp, #84 227 .LCFI4: 228 .cfi_def_cfa_offset 12 @@ -608,8 +687,8 @@ ARM GAS /tmp/ccg6eVgO.s page 1 230 0082 30BD pop {r4, r5, pc} 231 .LVL9: 232 .L15: - 97:Core/Src/main.c **** - 233 .loc 1 97 1 view .LVU53 + 122:Core/Src/main.c **** + 233 .loc 1 122 1 view .LVU53 234 .align 2 235 .L14: 236 0084 00000000 .word .LANCHOR0 @@ -627,46 +706,46 @@ ARM GAS /tmp/ccg6eVgO.s page 1 250 Write_Command_Pins: 251 .LVL10: 252 .LFB141: - 127:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 253 .loc 1 127 48 is_stmt 1 view -0 + 152:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 253 .loc 1 152 48 is_stmt 1 view -0 254 .cfi_startproc 255 @ args = 0, pretend = 0, frame = 0 256 @ frame_needed = 0, uses_anonymous_args = 0 - 127:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 257 .loc 1 127 48 is_stmt 0 view .LVU55 + 152:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, (CE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 257 .loc 1 152 48 is_stmt 0 view .LVU55 258 0000 70B5 push {r4, r5, r6, lr} 259 .LCFI5: 260 .cfi_def_cfa_offset 16 261 .cfi_offset 4, -16 262 .cfi_offset 5, -12 + ARM GAS /tmp/ccPiCTjg.s page 13 + + 263 .cfi_offset 6, -8 264 .cfi_offset 14, -4 265 0002 0E46 mov r6, r1 266 0004 1546 mov r5, r2 - 128:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 267 .loc 1 128 3 is_stmt 1 view .LVU56 + 153:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 267 .loc 1 153 3 is_stmt 1 view .LVU56 268 0006 0D4C ldr r4, .L18 269 0008 021E subs r2, r0, #0 270 .LVL11: - 128:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 271 .loc 1 128 3 is_stmt 0 view .LVU57 + 153:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 271 .loc 1 153 3 is_stmt 0 view .LVU57 272 000a 18BF it ne 273 000c 0122 movne r2, #1 274 000e 4FF48071 mov r1, #256 275 .LVL12: - 128:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 276 .loc 1 128 3 view .LVU58 + 153:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 276 .loc 1 153 3 view .LVU58 277 0012 2046 mov r0, r4 278 .LVL13: - ARM GAS /tmp/ccg6eVgO.s page 12 - - - 128:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 279 .loc 1 128 3 view .LVU59 + 153:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, (OE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 279 .loc 1 153 3 view .LVU59 280 0014 FFF7FEFF bl HAL_GPIO_WritePin 281 .LVL14: - 129:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,(WE) ? GPIO_PIN_SET : GPIO_PIN_RESET); - 282 .loc 1 129 3 is_stmt 1 view .LVU60 + 154:Core/Src/main.c **** HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10,(WE) ? GPIO_PIN_SET : GPIO_PIN_RESET); + 282 .loc 1 154 3 is_stmt 1 view .LVU60 283 0018 321E subs r2, r6, #0 284 001a 18BF it ne 285 001c 0122 movne r2, #1 @@ -674,8 +753,8 @@ ARM GAS /tmp/ccg6eVgO.s page 1 287 0022 2046 mov r0, r4 288 0024 FFF7FEFF bl HAL_GPIO_WritePin 289 .LVL15: - 130:Core/Src/main.c **** } - 290 .loc 1 130 3 view .LVU61 + 155:Core/Src/main.c **** } + 290 .loc 1 155 3 view .LVU61 291 0028 2A1E subs r2, r5, #0 292 002a 18BF it ne 293 002c 0122 movne r2, #1 @@ -683,13 +762,13 @@ ARM GAS /tmp/ccg6eVgO.s page 1 295 0032 2046 mov r0, r4 296 0034 FFF7FEFF bl HAL_GPIO_WritePin 297 .LVL16: - 131:Core/Src/main.c **** - 298 .loc 1 131 1 is_stmt 0 view .LVU62 + 156:Core/Src/main.c **** + 298 .loc 1 156 1 is_stmt 0 view .LVU62 299 0038 70BD pop {r4, r5, r6, pc} 300 .LVL17: 301 .L19: - 131:Core/Src/main.c **** - 302 .loc 1 131 1 view .LVU63 + 156:Core/Src/main.c **** + 302 .loc 1 156 1 view .LVU63 303 003a 00BF .align 2 304 .L18: 305 003c 00000240 .word 1073872896 @@ -699,71 +778,74 @@ ARM GAS /tmp/ccg6eVgO.s page 1 310 .align 1 311 .global Data_Pins_Init 312 .syntax unified + ARM GAS /tmp/ccPiCTjg.s page 14 + + 313 .thumb 314 .thumb_func 315 .fpu fpv4-sp-d16 317 Data_Pins_Init: 318 .LVL18: - 319 .LFB147: - 240:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; - 320 .loc 1 240 35 is_stmt 1 view -0 + 319 .LFB151: + 316:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 320 .loc 1 316 35 is_stmt 1 view -0 321 .cfi_startproc 322 @ args = 0, pretend = 0, frame = 24 323 @ frame_needed = 0, uses_anonymous_args = 0 - 240:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; - 324 .loc 1 240 35 is_stmt 0 view .LVU65 + 316:Core/Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 324 .loc 1 316 35 is_stmt 0 view .LVU65 325 0000 00B5 push {lr} 326 .LCFI6: 327 .cfi_def_cfa_offset 4 328 .cfi_offset 14, -4 329 0002 87B0 sub sp, sp, #28 330 .LCFI7: - ARM GAS /tmp/ccg6eVgO.s page 13 - - 331 .cfi_def_cfa_offset 32 - 241:Core/Src/main.c **** - 332 .loc 1 241 3 is_stmt 1 view .LVU66 - 241:Core/Src/main.c **** - 333 .loc 1 241 20 is_stmt 0 view .LVU67 + 317:Core/Src/main.c **** + 332 .loc 1 317 3 is_stmt 1 view .LVU66 + 317:Core/Src/main.c **** + 333 .loc 1 317 20 is_stmt 0 view .LVU67 334 0004 0023 movs r3, #0 335 0006 0193 str r3, [sp, #4] 336 0008 0293 str r3, [sp, #8] 337 000a 0393 str r3, [sp, #12] 338 000c 0493 str r3, [sp, #16] 339 000e 0593 str r3, [sp, #20] - 244:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; - 340 .loc 1 244 3 is_stmt 1 view .LVU68 - 244:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; - 341 .loc 1 244 23 is_stmt 0 view .LVU69 + 320:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; + 340 .loc 1 320 3 is_stmt 1 view .LVU68 + 320:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; + 341 .loc 1 320 23 is_stmt 0 view .LVU69 342 0010 41F6F303 movw r3, #6387 343 0014 0193 str r3, [sp, #4] - 246:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 344 .loc 1 246 3 is_stmt 1 view .LVU70 - 246:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 345 .loc 1 246 5 is_stmt 0 view .LVU71 + 322:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 344 .loc 1 322 3 is_stmt 1 view .LVU70 + 322:Core/Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 345 .loc 1 322 5 is_stmt 0 view .LVU71 346 0016 0128 cmp r0, #1 347 0018 08D0 beq .L24 - 251:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_PULLDOWN; // No pull-up/down - 348 .loc 1 251 5 is_stmt 1 view .LVU72 - 252:Core/Src/main.c **** } - 349 .loc 1 252 5 view .LVU73 - 252:Core/Src/main.c **** } - 350 .loc 1 252 26 is_stmt 0 view .LVU74 + 327:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_PULLDOWN; // No pull-up/down + 348 .loc 1 327 5 is_stmt 1 view .LVU72 + 328:Core/Src/main.c **** } + 349 .loc 1 328 5 view .LVU73 + 328:Core/Src/main.c **** } + 350 .loc 1 328 26 is_stmt 0 view .LVU74 351 001a 0223 movs r3, #2 352 001c 0393 str r3, [sp, #12] 353 .L22: - 254:Core/Src/main.c **** } - 354 .loc 1 254 3 is_stmt 1 view .LVU75 + 330:Core/Src/main.c **** } + 354 .loc 1 330 3 is_stmt 1 view .LVU75 355 001e 01A9 add r1, sp, #4 356 0020 0548 ldr r0, .L25 357 .LVL19: - 254:Core/Src/main.c **** } - 358 .loc 1 254 3 is_stmt 0 view .LVU76 + 330:Core/Src/main.c **** } + ARM GAS /tmp/ccPiCTjg.s page 15 + + + 358 .loc 1 330 3 is_stmt 0 view .LVU76 359 0022 FFF7FEFF bl HAL_GPIO_Init 360 .LVL20: - 255:Core/Src/main.c **** - 361 .loc 1 255 1 view .LVU77 + 331:Core/Src/main.c **** + 361 .loc 1 331 1 view .LVU77 362 0026 07B0 add sp, sp, #28 363 .LCFI8: 364 .cfi_remember_state @@ -774,21 +856,18 @@ ARM GAS /tmp/ccg6eVgO.s page 1 369 .L24: 370 .LCFI9: 371 .cfi_restore_state - 247:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 372 .loc 1 247 5 is_stmt 1 view .LVU78 - 247:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 373 .loc 1 247 26 is_stmt 0 view .LVU79 - ARM GAS /tmp/ccg6eVgO.s page 14 - - + 323:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 372 .loc 1 323 5 is_stmt 1 view .LVU78 + 323:Core/Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 373 .loc 1 323 26 is_stmt 0 view .LVU79 374 002c 0123 movs r3, #1 375 002e 0293 str r3, [sp, #8] - 248:Core/Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 376 .loc 1 248 5 is_stmt 1 view .LVU80 - 249:Core/Src/main.c **** }else{ - 377 .loc 1 249 5 view .LVU81 - 249:Core/Src/main.c **** }else{ - 378 .loc 1 249 27 is_stmt 0 view .LVU82 + 324:Core/Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 376 .loc 1 324 5 is_stmt 1 view .LVU80 + 325:Core/Src/main.c **** }else{ + 377 .loc 1 325 5 view .LVU81 + 325:Core/Src/main.c **** }else{ + 378 .loc 1 325 27 is_stmt 0 view .LVU82 379 0030 0223 movs r3, #2 380 0032 0493 str r3, [sp, #16] 381 0034 F3E7 b .L22 @@ -797,7 +876,7 @@ ARM GAS /tmp/ccg6eVgO.s page 1 384 .L25: 385 0038 00000240 .word 1073872896 386 .cfi_endproc - 387 .LFE147: + 387 .LFE151: 389 .section .text.Receive_Data,"ax",%progbits 390 .align 1 391 .global Receive_Data @@ -807,8 +886,8 @@ ARM GAS /tmp/ccg6eVgO.s page 1 395 .fpu fpv4-sp-d16 397 Receive_Data: 398 .LFB139: - 99:Core/Src/main.c **** Data_Pins_Init(0); // We make sure it's in input mode - 399 .loc 1 99 23 is_stmt 1 view -0 + 124:Core/Src/main.c **** Data_Pins_Init(0); // We make sure it's in input mode + 399 .loc 1 124 23 is_stmt 1 view -0 400 .cfi_startproc 401 @ args = 0, pretend = 0, frame = 32 402 @ frame_needed = 0, uses_anonymous_args = 0 @@ -819,100 +898,100 @@ ARM GAS /tmp/ccg6eVgO.s page 1 407 .cfi_offset 5, -8 408 .cfi_offset 14, -4 409 0002 89B0 sub sp, sp, #36 + ARM GAS /tmp/ccPiCTjg.s page 16 + + 410 .LCFI11: 411 .cfi_def_cfa_offset 48 - 100:Core/Src/main.c **** int result = 0; - 412 .loc 1 100 3 view .LVU84 + 125:Core/Src/main.c **** int result = 0; + 412 .loc 1 125 3 view .LVU84 413 0004 0020 movs r0, #0 414 0006 FFF7FEFF bl Data_Pins_Init 415 .LVL22: - 101:Core/Src/main.c **** int pin_array[] = { - 416 .loc 1 101 3 view .LVU85 - 102:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 417 .loc 1 102 3 view .LVU86 - 102:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 418 .loc 1 102 7 is_stmt 0 view .LVU87 + 126:Core/Src/main.c **** int pin_array[] = { + 416 .loc 1 126 3 view .LVU85 + 127:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 417 .loc 1 127 3 view .LVU86 + 127:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 418 .loc 1 127 7 is_stmt 0 view .LVU87 419 000a 6C46 mov r4, sp 420 000c 0E4D ldr r5, .L33 421 000e 0FCD ldmia r5!, {r0, r1, r2, r3} 422 0010 0FC4 stmia r4!, {r0, r1, r2, r3} 423 0012 95E80F00 ldm r5, {r0, r1, r2, r3} 424 0016 84E80F00 stm r4, {r0, r1, r2, r3} - ARM GAS /tmp/ccg6eVgO.s page 15 - - - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 425 .loc 1 106 3 is_stmt 1 view .LVU88 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 425 .loc 1 131 3 is_stmt 1 view .LVU88 426 .LBB9: - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 427 .loc 1 106 7 view .LVU89 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 427 .loc 1 131 7 view .LVU89 428 .LVL23: - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 429 .loc 1 106 11 is_stmt 0 view .LVU90 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 429 .loc 1 131 11 is_stmt 0 view .LVU90 430 001a 0024 movs r4, #0 431 .LBE9: - 101:Core/Src/main.c **** int pin_array[] = { - 432 .loc 1 101 7 view .LVU91 + 126:Core/Src/main.c **** int pin_array[] = { + 432 .loc 1 126 7 view .LVU91 433 001c 2546 mov r5, r4 434 .LBB10: - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 435 .loc 1 106 3 view .LVU92 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 435 .loc 1 131 3 view .LVU92 436 001e 00E0 b .L28 437 .LVL24: 438 .L29: - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 439 .loc 1 106 21 is_stmt 1 discriminator 2 view .LVU93 - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 440 .loc 1 106 22 is_stmt 0 discriminator 2 view .LVU94 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 439 .loc 1 131 21 is_stmt 1 discriminator 2 view .LVU93 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 440 .loc 1 131 22 is_stmt 0 discriminator 2 view .LVU94 441 0020 0134 adds r4, r4, #1 442 .LVL25: 443 .L28: - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 444 .loc 1 106 16 is_stmt 1 discriminator 1 view .LVU95 - 106:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ - 445 .loc 1 106 3 is_stmt 0 discriminator 1 view .LVU96 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 444 .loc 1 131 16 is_stmt 1 discriminator 1 view .LVU95 + 131:Core/Src/main.c **** if(HAL_GPIO_ReadPin(GPIOA, pin_array[i]) == GPIO_PIN_SET){ + 445 .loc 1 131 3 is_stmt 0 discriminator 1 view .LVU96 446 0022 072C cmp r4, #7 447 0024 0DDC bgt .L32 - 107:Core/Src/main.c **** result += 1 << i; - 448 .loc 1 107 5 is_stmt 1 view .LVU97 - 107:Core/Src/main.c **** result += 1 << i; - 449 .loc 1 107 41 is_stmt 0 view .LVU98 + 132:Core/Src/main.c **** result += 1 << i; + 448 .loc 1 132 5 is_stmt 1 view .LVU97 + 132:Core/Src/main.c **** result += 1 << i; + 449 .loc 1 132 41 is_stmt 0 view .LVU98 450 0026 08AB add r3, sp, #32 451 0028 03EB8403 add r3, r3, r4, lsl #2 - 107:Core/Src/main.c **** result += 1 << i; - 452 .loc 1 107 8 view .LVU99 + ARM GAS /tmp/ccPiCTjg.s page 17 + + + 132:Core/Src/main.c **** result += 1 << i; + 452 .loc 1 132 8 view .LVU99 453 002c 33F8201C ldrh r1, [r3, #-32] 454 0030 0648 ldr r0, .L33+4 455 0032 FFF7FEFF bl HAL_GPIO_ReadPin 456 .LVL26: - 107:Core/Src/main.c **** result += 1 << i; - 457 .loc 1 107 7 view .LVU100 + 132:Core/Src/main.c **** result += 1 << i; + 457 .loc 1 132 7 view .LVU100 458 0036 0128 cmp r0, #1 459 0038 F2D1 bne .L29 - 108:Core/Src/main.c **** } - 460 .loc 1 108 7 is_stmt 1 view .LVU101 - 108:Core/Src/main.c **** } - 461 .loc 1 108 19 is_stmt 0 view .LVU102 + 133:Core/Src/main.c **** } + 460 .loc 1 133 7 is_stmt 1 view .LVU101 + 133:Core/Src/main.c **** } + 461 .loc 1 133 19 is_stmt 0 view .LVU102 462 003a 0123 movs r3, #1 463 003c A340 lsls r3, r3, r4 - 108:Core/Src/main.c **** } - 464 .loc 1 108 14 view .LVU103 + 133:Core/Src/main.c **** } + 464 .loc 1 133 14 view .LVU103 465 003e 1D44 add r5, r5, r3 - ARM GAS /tmp/ccg6eVgO.s page 16 - - 466 .LVL27: - 108:Core/Src/main.c **** } - 467 .loc 1 108 14 view .LVU104 + 133:Core/Src/main.c **** } + 467 .loc 1 133 14 view .LVU104 468 0040 EEE7 b .L29 469 .L32: - 108:Core/Src/main.c **** } - 470 .loc 1 108 14 view .LVU105 + 133:Core/Src/main.c **** } + 470 .loc 1 133 14 view .LVU105 471 .LBE10: - 111:Core/Src/main.c **** } - 472 .loc 1 111 3 is_stmt 1 view .LVU106 - 112:Core/Src/main.c **** - 473 .loc 1 112 1 is_stmt 0 view .LVU107 + 136:Core/Src/main.c **** } + 472 .loc 1 136 3 is_stmt 1 view .LVU106 + 137:Core/Src/main.c **** + 473 .loc 1 137 1 is_stmt 0 view .LVU107 474 0042 2846 mov r0, r5 475 0044 09B0 add sp, sp, #36 476 .LCFI12: @@ -921,8 +1000,8 @@ ARM GAS /tmp/ccg6eVgO.s page 1 479 0046 30BD pop {r4, r5, pc} 480 .LVL28: 481 .L34: - 112:Core/Src/main.c **** - 482 .loc 1 112 1 view .LVU108 + 137:Core/Src/main.c **** + 482 .loc 1 137 1 view .LVU108 483 .align 2 484 .L33: 485 0048 4C000000 .word .LANCHOR0+76 @@ -939,13 +1018,16 @@ ARM GAS /tmp/ccg6eVgO.s page 1 498 Write_Data: 499 .LVL29: 500 .LFB140: - 114:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode - 501 .loc 1 114 27 is_stmt 1 view -0 + ARM GAS /tmp/ccPiCTjg.s page 18 + + + 139:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode + 501 .loc 1 139 27 is_stmt 1 view -0 502 .cfi_startproc 503 @ args = 0, pretend = 0, frame = 32 504 @ frame_needed = 0, uses_anonymous_args = 0 - 114:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode - 505 .loc 1 114 27 is_stmt 0 view .LVU110 + 139:Core/Src/main.c **** Data_Pins_Init(1); // We make sure it's in output mode + 505 .loc 1 139 27 is_stmt 0 view .LVU110 506 0000 70B5 push {r4, r5, r6, lr} 507 .LCFI13: 508 .cfi_def_cfa_offset 16 @@ -957,78 +1039,75 @@ ARM GAS /tmp/ccg6eVgO.s page 1 514 .LCFI14: 515 .cfi_def_cfa_offset 48 516 0004 0646 mov r6, r0 - 115:Core/Src/main.c **** int pin_array[] = { - ARM GAS /tmp/ccg6eVgO.s page 17 - - - 517 .loc 1 115 3 is_stmt 1 view .LVU111 + 140:Core/Src/main.c **** int pin_array[] = { + 517 .loc 1 140 3 is_stmt 1 view .LVU111 518 0006 0120 movs r0, #1 519 .LVL30: - 115:Core/Src/main.c **** int pin_array[] = { - 520 .loc 1 115 3 is_stmt 0 view .LVU112 + 140:Core/Src/main.c **** int pin_array[] = { + 520 .loc 1 140 3 is_stmt 0 view .LVU112 521 0008 FFF7FEFF bl Data_Pins_Init 522 .LVL31: - 116:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 523 .loc 1 116 3 is_stmt 1 view .LVU113 - 116:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, - 524 .loc 1 116 7 is_stmt 0 view .LVU114 + 141:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 523 .loc 1 141 3 is_stmt 1 view .LVU113 + 141:Core/Src/main.c **** GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_11, GPIO_PIN_12, + 524 .loc 1 141 7 is_stmt 0 view .LVU114 525 000c 6C46 mov r4, sp 526 000e 134D ldr r5, .L42 527 0010 0FCD ldmia r5!, {r0, r1, r2, r3} 528 0012 0FC4 stmia r4!, {r0, r1, r2, r3} 529 0014 95E80F00 ldm r5, {r0, r1, r2, r3} 530 0018 84E80F00 stm r4, {r0, r1, r2, r3} - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 531 .loc 1 120 3 is_stmt 1 view .LVU115 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 531 .loc 1 145 3 is_stmt 1 view .LVU115 532 .LBB11: - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 533 .loc 1 120 7 view .LVU116 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 533 .loc 1 145 7 view .LVU116 534 .LVL32: - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 535 .loc 1 120 11 is_stmt 0 view .LVU117 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 535 .loc 1 145 11 is_stmt 0 view .LVU117 536 001c 0024 movs r4, #0 - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 537 .loc 1 120 3 view .LVU118 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 537 .loc 1 145 3 view .LVU118 538 001e 09E0 b .L36 539 .LVL33: 540 .L37: - 122:Core/Src/main.c **** } - 541 .loc 1 122 10 is_stmt 1 view .LVU119 + 147:Core/Src/main.c **** } + 541 .loc 1 147 10 is_stmt 1 view .LVU119 542 0020 0022 movs r2, #0 543 0022 08AB add r3, sp, #32 544 0024 03EB8403 add r3, r3, r4, lsl #2 545 0028 33F8201C ldrh r1, [r3, #-32] 546 002c 0C48 ldr r0, .L42+4 + ARM GAS /tmp/ccPiCTjg.s page 19 + + 547 002e FFF7FEFF bl HAL_GPIO_WritePin 548 .LVL34: 549 .L38: - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 550 .loc 1 120 21 discriminator 2 view .LVU120 - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 551 .loc 1 120 22 is_stmt 0 discriminator 2 view .LVU121 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 550 .loc 1 145 21 discriminator 2 view .LVU120 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 551 .loc 1 145 22 is_stmt 0 discriminator 2 view .LVU121 552 0032 0134 adds r4, r4, #1 553 .LVL35: 554 .L36: - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 555 .loc 1 120 16 is_stmt 1 discriminator 1 view .LVU122 - 120:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); - 556 .loc 1 120 3 is_stmt 0 discriminator 1 view .LVU123 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 555 .loc 1 145 16 is_stmt 1 discriminator 1 view .LVU122 + 145:Core/Src/main.c **** if((value >> i) & 1) HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_SET); + 556 .loc 1 145 3 is_stmt 0 discriminator 1 view .LVU123 557 0034 072C cmp r4, #7 558 0036 0EDC bgt .L41 - 121:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - 559 .loc 1 121 5 is_stmt 1 view .LVU124 - 121:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - ARM GAS /tmp/ccg6eVgO.s page 18 - - - 560 .loc 1 121 15 is_stmt 0 view .LVU125 + 146:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 559 .loc 1 146 5 is_stmt 1 view .LVU124 + 146:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 560 .loc 1 146 15 is_stmt 0 view .LVU125 561 0038 46FA04F3 asr r3, r6, r4 - 121:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - 562 .loc 1 121 7 view .LVU126 + 146:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 562 .loc 1 146 7 view .LVU126 563 003c 13F0010F tst r3, #1 564 0040 EED0 beq .L37 - 121:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - 565 .loc 1 121 26 is_stmt 1 discriminator 1 view .LVU127 + 146:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 565 .loc 1 146 26 is_stmt 1 discriminator 1 view .LVU127 566 0042 0122 movs r2, #1 567 0044 08AB add r3, sp, #32 568 0046 03EB8403 add r3, r3, r4, lsl #2 @@ -1038,11 +1117,11 @@ ARM GAS /tmp/ccg6eVgO.s page 1 572 .LVL36: 573 0054 EDE7 b .L38 574 .L41: - 121:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); - 575 .loc 1 121 26 is_stmt 0 discriminator 1 view .LVU128 + 146:Core/Src/main.c **** else HAL_GPIO_WritePin(GPIOA, pin_array[i], GPIO_PIN_RESET); + 575 .loc 1 146 26 is_stmt 0 discriminator 1 view .LVU128 576 .LBE11: - 124:Core/Src/main.c **** - 577 .loc 1 124 1 view .LVU129 + 149:Core/Src/main.c **** + 577 .loc 1 149 1 view .LVU129 578 0056 08B0 add sp, sp, #32 579 .LCFI15: 580 .cfi_def_cfa_offset 16 @@ -1050,8 +1129,8 @@ ARM GAS /tmp/ccg6eVgO.s page 1 582 0058 70BD pop {r4, r5, r6, pc} 583 .LVL37: 584 .L43: - 124:Core/Src/main.c **** - 585 .loc 1 124 1 view .LVU130 + 149:Core/Src/main.c **** + 585 .loc 1 149 1 view .LVU130 586 005a 00BF .align 2 587 .L42: 588 005c 4C000000 .word .LANCHOR0+76 @@ -1059,6 +1138,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 590 .cfi_endproc 591 .LFE140: 593 .section .text.Write_Command,"ax",%progbits + ARM GAS /tmp/ccPiCTjg.s page 20 + + 594 .align 1 595 .global Write_Command 596 .syntax unified @@ -1068,512 +1150,930 @@ ARM GAS /tmp/ccg6eVgO.s page 1 601 Write_Command: 602 .LVL38: 603 .LFB142: - 133:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 604 .loc 1 133 40 is_stmt 1 view -0 + 158:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 604 .loc 1 158 40 is_stmt 1 view -0 605 .cfi_startproc 606 @ args = 0, pretend = 0, frame = 0 607 @ frame_needed = 0, uses_anonymous_args = 0 - 133:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 608 .loc 1 133 40 is_stmt 0 view .LVU132 + 158:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 608 .loc 1 158 40 is_stmt 0 view .LVU132 609 0000 38B5 push {r3, r4, r5, lr} 610 .LCFI16: 611 .cfi_def_cfa_offset 16 - ARM GAS /tmp/ccg6eVgO.s page 19 - - 612 .cfi_offset 3, -16 613 .cfi_offset 4, -12 614 .cfi_offset 5, -8 615 .cfi_offset 14, -4 616 0002 0546 mov r5, r0 617 0004 0C46 mov r4, r1 - 134:Core/Src/main.c **** Write_Address(addr); - 618 .loc 1 134 5 is_stmt 1 view .LVU133 + 159:Core/Src/main.c **** Write_Address(addr); + 618 .loc 1 159 5 is_stmt 1 view .LVU133 619 0006 0122 movs r2, #1 620 0008 1146 mov r1, r2 621 .LVL39: - 134:Core/Src/main.c **** Write_Address(addr); - 622 .loc 1 134 5 is_stmt 0 view .LVU134 + 159:Core/Src/main.c **** Write_Address(addr); + 622 .loc 1 159 5 is_stmt 0 view .LVU134 623 000a 1046 mov r0, r2 624 .LVL40: - 134:Core/Src/main.c **** Write_Address(addr); - 625 .loc 1 134 5 view .LVU135 + 159:Core/Src/main.c **** Write_Address(addr); + 625 .loc 1 159 5 view .LVU135 626 000c FFF7FEFF bl Write_Command_Pins 627 .LVL41: - 135:Core/Src/main.c **** Write_Data(data); - 628 .loc 1 135 5 is_stmt 1 view .LVU136 + 160:Core/Src/main.c **** Write_Data(data); + 628 .loc 1 160 5 is_stmt 1 view .LVU136 629 0010 2846 mov r0, r5 630 0012 FFF7FEFF bl Write_Address 631 .LVL42: - 136:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); - 632 .loc 1 136 5 view .LVU137 + 161:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); + 632 .loc 1 161 5 view .LVU137 633 0016 2046 mov r0, r4 634 0018 FFF7FEFF bl Write_Data 635 .LVL43: - 137:Core/Src/main.c **** // 4. Pulse WE# low to latch data - 636 .loc 1 137 5 view .LVU138 + 162:Core/Src/main.c **** // 4. Pulse WE# low to latch data + 636 .loc 1 162 5 view .LVU138 637 001c 0122 movs r2, #1 638 001e 1146 mov r1, r2 639 0020 0020 movs r0, #0 640 0022 FFF7FEFF bl Write_Command_Pins 641 .LVL44: - 139:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); // WE high - 642 .loc 1 139 5 view .LVU139 + 164:Core/Src/main.c **** Write_Command_Pins(0, 1, 1); // WE high + 642 .loc 1 164 5 view .LVU139 + ARM GAS /tmp/ccPiCTjg.s page 21 + + 643 0026 0022 movs r2, #0 644 0028 0121 movs r1, #1 645 002a 1046 mov r0, r2 646 002c FFF7FEFF bl Write_Command_Pins 647 .LVL45: - 140:Core/Src/main.c **** - 648 .loc 1 140 5 view .LVU140 + 165:Core/Src/main.c **** + 648 .loc 1 165 5 view .LVU140 649 0030 0122 movs r2, #1 650 0032 1146 mov r1, r2 651 0034 0020 movs r0, #0 652 0036 FFF7FEFF bl Write_Command_Pins 653 .LVL46: - 143:Core/Src/main.c **** } - 654 .loc 1 143 5 view .LVU141 + 168:Core/Src/main.c **** } + 654 .loc 1 168 5 view .LVU141 655 003a 0122 movs r2, #1 656 003c 1146 mov r1, r2 657 003e 1046 mov r0, r2 658 0040 FFF7FEFF bl Write_Command_Pins 659 .LVL47: - ARM GAS /tmp/ccg6eVgO.s page 20 - - - 144:Core/Src/main.c **** - 660 .loc 1 144 1 is_stmt 0 view .LVU142 + 169:Core/Src/main.c **** + 660 .loc 1 169 1 is_stmt 0 view .LVU142 661 0044 38BD pop {r3, r4, r5, pc} - 144:Core/Src/main.c **** - 662 .loc 1 144 1 view .LVU143 + 169:Core/Src/main.c **** + 662 .loc 1 169 1 view .LVU143 663 .cfi_endproc 664 .LFE142: - 666 .section .text.Flash_ReadByte,"ax",%progbits + 666 .section .text.Chip_Erase,"ax",%progbits 667 .align 1 - 668 .global Flash_ReadByte + 668 .global Chip_Erase 669 .syntax unified 670 .thumb 671 .thumb_func 672 .fpu fpv4-sp-d16 - 674 Flash_ReadByte: - 675 .LVL48: - 676 .LFB143: - 146:Core/Src/main.c **** Write_Address(addr); - 677 .loc 1 146 30 is_stmt 1 view -0 - 678 .cfi_startproc - 679 @ args = 0, pretend = 0, frame = 0 - 680 @ frame_needed = 0, uses_anonymous_args = 0 - 146:Core/Src/main.c **** Write_Address(addr); - 681 .loc 1 146 30 is_stmt 0 view .LVU145 - 682 0000 10B5 push {r4, lr} - 683 .LCFI17: - 684 .cfi_def_cfa_offset 8 - 685 .cfi_offset 4, -8 - 686 .cfi_offset 14, -4 - 147:Core/Src/main.c **** Data_Pins_Init(0); - 687 .loc 1 147 5 is_stmt 1 view .LVU146 - 688 0002 FFF7FEFF bl Write_Address - 689 .LVL49: - 148:Core/Src/main.c **** Write_Command_Pins(0, 0, 1); - 690 .loc 1 148 5 view .LVU147 - 691 0006 0020 movs r0, #0 - 692 0008 FFF7FEFF bl Data_Pins_Init - 693 .LVL50: - 149:Core/Src/main.c **** int data = Receive_Data(); - 694 .loc 1 149 5 view .LVU148 - 695 000c 0122 movs r2, #1 - 696 000e 0021 movs r1, #0 - 697 0010 0846 mov r0, r1 - 698 0012 FFF7FEFF bl Write_Command_Pins - 699 .LVL51: - 150:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 700 .loc 1 150 5 view .LVU149 - 150:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); - 701 .loc 1 150 16 is_stmt 0 view .LVU150 - 702 0016 FFF7FEFF bl Receive_Data - 703 .LVL52: - 704 001a 0446 mov r4, r0 - 705 .LVL53: - 151:Core/Src/main.c **** return data; - 706 .loc 1 151 5 is_stmt 1 view .LVU151 - 707 001c 0122 movs r2, #1 - 708 001e 1146 mov r1, r2 - ARM GAS /tmp/ccg6eVgO.s page 21 - - - 709 0020 1046 mov r0, r2 - 710 .LVL54: - 151:Core/Src/main.c **** return data; - 711 .loc 1 151 5 is_stmt 0 view .LVU152 - 712 0022 FFF7FEFF bl Write_Command_Pins - 713 .LVL55: - 152:Core/Src/main.c **** } - 714 .loc 1 152 5 is_stmt 1 view .LVU153 - 153:Core/Src/main.c **** - 715 .loc 1 153 1 is_stmt 0 view .LVU154 - 716 0026 2046 mov r0, r4 - 717 0028 10BD pop {r4, pc} - 153:Core/Src/main.c **** - 718 .loc 1 153 1 view .LVU155 - 719 .cfi_endproc - 720 .LFE143: - 722 .section .text.Enter_Device_ID,"ax",%progbits - 723 .align 1 - 724 .global Enter_Device_ID - 725 .syntax unified - 726 .thumb - 727 .thumb_func - 728 .fpu fpv4-sp-d16 - 730 Enter_Device_ID: - 731 .LVL56: - 732 .LFB144: - 155:Core/Src/main.c **** // Enter ID mode - 733 .loc 1 155 53 is_stmt 1 view -0 - 734 .cfi_startproc - 735 @ args = 0, pretend = 0, frame = 0 - 736 @ frame_needed = 0, uses_anonymous_args = 0 - 155:Core/Src/main.c **** // Enter ID mode - 737 .loc 1 155 53 is_stmt 0 view .LVU157 - 738 0000 38B5 push {r3, r4, r5, lr} - 739 .LCFI18: - 740 .cfi_def_cfa_offset 16 - 741 .cfi_offset 3, -16 - 742 .cfi_offset 4, -12 - 743 .cfi_offset 5, -8 - 744 .cfi_offset 14, -4 - 745 0002 0546 mov r5, r0 - 746 0004 0C46 mov r4, r1 - 157:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); - 747 .loc 1 157 3 is_stmt 1 view .LVU158 - 748 0006 AA21 movs r1, #170 - 749 .LVL57: - 157:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); - 750 .loc 1 157 3 is_stmt 0 view .LVU159 - 751 0008 45F25550 movw r0, #21845 - 752 .LVL58: - 157:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); - 753 .loc 1 157 3 view .LVU160 - 754 000c FFF7FEFF bl Write_Command - 755 .LVL59: - 158:Core/Src/main.c **** Write_Command(0x5555, 0x90); - 756 .loc 1 158 3 is_stmt 1 view .LVU161 - 757 0010 5521 movs r1, #85 - ARM GAS /tmp/ccg6eVgO.s page 22 - - - 758 0012 42F6AA20 movw r0, #10922 - 759 0016 FFF7FEFF bl Write_Command - 760 .LVL60: - 159:Core/Src/main.c **** - 761 .loc 1 159 3 view .LVU162 - 762 001a 9021 movs r1, #144 - 763 001c 45F25550 movw r0, #21845 - 764 0020 FFF7FEFF bl Write_Command - 765 .LVL61: - 162:Core/Src/main.c **** - 766 .loc 1 162 3 view .LVU163 - 162:Core/Src/main.c **** - 767 .loc 1 162 19 is_stmt 0 view .LVU164 - 768 0024 0020 movs r0, #0 - 769 0026 FFF7FEFF bl Flash_ReadByte - 770 .LVL62: - 162:Core/Src/main.c **** - 771 .loc 1 162 17 view .LVU165 - 772 002a 2860 str r0, [r5] - 165:Core/Src/main.c **** - 773 .loc 1 165 3 is_stmt 1 view .LVU166 - 165:Core/Src/main.c **** - 774 .loc 1 165 13 is_stmt 0 view .LVU167 - 775 002c 0120 movs r0, #1 - 776 002e FFF7FEFF bl Flash_ReadByte - 777 .LVL63: - 165:Core/Src/main.c **** - 778 .loc 1 165 11 view .LVU168 - 779 0032 2060 str r0, [r4] - 168:Core/Src/main.c **** } - 780 .loc 1 168 3 is_stmt 1 view .LVU169 - 781 0034 F021 movs r1, #240 - 782 0036 45F25550 movw r0, #21845 - 783 003a FFF7FEFF bl Write_Command - 784 .LVL64: - 169:Core/Src/main.c **** - 785 .loc 1 169 1 is_stmt 0 view .LVU170 - 786 003e 38BD pop {r3, r4, r5, pc} - 169:Core/Src/main.c **** - 787 .loc 1 169 1 view .LVU171 - 788 .cfi_endproc - 789 .LFE144: - 791 .section .text.Address_Pins_Init,"ax",%progbits - 792 .align 1 - 793 .global Address_Pins_Init - 794 .syntax unified - 795 .thumb - 796 .thumb_func - 797 .fpu fpv4-sp-d16 - 799 Address_Pins_Init: - 800 .LFB148: - 257:Core/Src/main.c **** GPIO_InitTypeDef GPIOC_InitStruct = {0}; - 801 .loc 1 257 29 is_stmt 1 view -0 - 802 .cfi_startproc - 803 @ args = 0, pretend = 0, frame = 40 - 804 @ frame_needed = 0, uses_anonymous_args = 0 - 805 0000 70B5 push {r4, r5, r6, lr} - ARM GAS /tmp/ccg6eVgO.s page 23 - - - 806 .LCFI19: - 807 .cfi_def_cfa_offset 16 - 808 .cfi_offset 4, -16 - 809 .cfi_offset 5, -12 - 810 .cfi_offset 6, -8 - 811 .cfi_offset 14, -4 - 812 0002 8AB0 sub sp, sp, #40 - 813 .LCFI20: - 814 .cfi_def_cfa_offset 56 - 258:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs - 815 .loc 1 258 3 view .LVU173 - 258:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs - 816 .loc 1 258 20 is_stmt 0 view .LVU174 - 817 0004 0024 movs r4, #0 - 818 0006 0594 str r4, [sp, #20] - 819 0008 0694 str r4, [sp, #24] - 820 000a 0794 str r4, [sp, #28] - 821 000c 0894 str r4, [sp, #32] - 822 000e 0994 str r4, [sp, #36] - 260:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | - 823 .loc 1 260 3 is_stmt 1 view .LVU175 - 260:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | - 824 .loc 1 260 24 is_stmt 0 view .LVU176 - 825 0010 4FF6FF73 movw r3, #65535 - 826 0014 0593 str r3, [sp, #20] - 264:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 827 .loc 1 264 3 is_stmt 1 view .LVU177 - 264:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 828 .loc 1 264 25 is_stmt 0 view .LVU178 - 829 0016 0126 movs r6, #1 - 830 0018 0696 str r6, [sp, #24] - 265:Core/Src/main.c **** GPIOC_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 831 .loc 1 265 3 is_stmt 1 view .LVU179 - 266:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); - 832 .loc 1 266 3 view .LVU180 - 266:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); - 833 .loc 1 266 26 is_stmt 0 view .LVU181 - 834 001a 0225 movs r5, #2 - 835 001c 0895 str r5, [sp, #32] - 267:Core/Src/main.c **** - 836 .loc 1 267 3 is_stmt 1 view .LVU182 - 837 001e 05A9 add r1, sp, #20 - 838 0020 0848 ldr r0, .L52 - 839 0022 FFF7FEFF bl HAL_GPIO_Init - 840 .LVL65: - 270:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs - 841 .loc 1 270 3 view .LVU183 - 270:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs - 842 .loc 1 270 20 is_stmt 0 view .LVU184 - 843 0026 0094 str r4, [sp] - 844 0028 0194 str r4, [sp, #4] - 845 002a 0294 str r4, [sp, #8] - 846 002c 0394 str r4, [sp, #12] - 847 002e 0494 str r4, [sp, #16] - 272:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 848 .loc 1 272 3 is_stmt 1 view .LVU185 - 272:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - ARM GAS /tmp/ccg6eVgO.s page 24 - - - 849 .loc 1 272 24 is_stmt 0 view .LVU186 - 850 0030 1F23 movs r3, #31 - 851 0032 0093 str r3, [sp] - 273:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 852 .loc 1 273 3 is_stmt 1 view .LVU187 - 273:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 853 .loc 1 273 25 is_stmt 0 view .LVU188 - 854 0034 0196 str r6, [sp, #4] - 274:Core/Src/main.c **** GPIOB_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 855 .loc 1 274 3 is_stmt 1 view .LVU189 - 275:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); - 856 .loc 1 275 3 view .LVU190 - 275:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); - 857 .loc 1 275 26 is_stmt 0 view .LVU191 - 858 0036 0395 str r5, [sp, #12] - 276:Core/Src/main.c **** } - 859 .loc 1 276 3 is_stmt 1 view .LVU192 - 860 0038 6946 mov r1, sp - 861 003a 0348 ldr r0, .L52+4 - 862 003c FFF7FEFF bl HAL_GPIO_Init - 863 .LVL66: - 277:Core/Src/main.c **** - 864 .loc 1 277 1 is_stmt 0 view .LVU193 - 865 0040 0AB0 add sp, sp, #40 - 866 .LCFI21: - 867 .cfi_def_cfa_offset 16 - 868 @ sp needed - 869 0042 70BD pop {r4, r5, r6, pc} - 870 .L53: - 871 .align 2 - 872 .L52: - 873 0044 00080240 .word 1073874944 - 874 0048 00040240 .word 1073873920 - 875 .cfi_endproc - 876 .LFE148: - 878 .section .text.Command_Pins_Init,"ax",%progbits - 879 .align 1 - 880 .global Command_Pins_Init - 881 .syntax unified - 882 .thumb - 883 .thumb_func - 884 .fpu fpv4-sp-d16 - 886 Command_Pins_Init: - 887 .LFB149: - 279:Core/Src/main.c **** // PA8-10 as outputs pins - 888 .loc 1 279 29 is_stmt 1 view -0 - 889 .cfi_startproc - 890 @ args = 0, pretend = 0, frame = 24 - 891 @ frame_needed = 0, uses_anonymous_args = 0 - 892 0000 00B5 push {lr} - 893 .LCFI22: - 894 .cfi_def_cfa_offset 4 - 895 .cfi_offset 14, -4 - 896 0002 87B0 sub sp, sp, #28 - 897 .LCFI23: - 898 .cfi_def_cfa_offset 32 - 281:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; - ARM GAS /tmp/ccg6eVgO.s page 25 - - - 899 .loc 1 281 3 view .LVU195 - 281:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; - 900 .loc 1 281 20 is_stmt 0 view .LVU196 - 901 0004 0023 movs r3, #0 - 902 0006 0193 str r3, [sp, #4] - 903 0008 0293 str r3, [sp, #8] - 904 000a 0393 str r3, [sp, #12] - 905 000c 0493 str r3, [sp, #16] - 906 000e 0593 str r3, [sp, #20] - 282:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 907 .loc 1 282 3 is_stmt 1 view .LVU197 - 282:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output - 908 .loc 1 282 24 is_stmt 0 view .LVU198 - 909 0010 4FF4E063 mov r3, #1792 - 910 0014 0193 str r3, [sp, #4] - 283:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 911 .loc 1 283 3 is_stmt 1 view .LVU199 - 283:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down - 912 .loc 1 283 25 is_stmt 0 view .LVU200 - 913 0016 0123 movs r3, #1 - 914 0018 0293 str r3, [sp, #8] - 284:Core/Src/main.c **** GPIOA_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching - 915 .loc 1 284 3 is_stmt 1 view .LVU201 - 285:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); - 916 .loc 1 285 3 view .LVU202 - 285:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); - 917 .loc 1 285 26 is_stmt 0 view .LVU203 - 918 001a 0223 movs r3, #2 - 919 001c 0493 str r3, [sp, #16] - 286:Core/Src/main.c **** } - 920 .loc 1 286 3 is_stmt 1 view .LVU204 - 921 001e 01A9 add r1, sp, #4 - 922 0020 0248 ldr r0, .L56 - 923 0022 FFF7FEFF bl HAL_GPIO_Init - 924 .LVL67: - 287:Core/Src/main.c **** - 925 .loc 1 287 1 is_stmt 0 view .LVU205 - 926 0026 07B0 add sp, sp, #28 - 927 .LCFI24: - 928 .cfi_def_cfa_offset 4 - 929 @ sp needed - 930 0028 5DF804FB ldr pc, [sp], #4 - 931 .L57: - 932 .align 2 - 933 .L56: - 934 002c 00000240 .word 1073872896 - 935 .cfi_endproc - 936 .LFE149: - 938 .section .text.debug_print,"ax",%progbits - 939 .align 1 - 940 .global debug_print - 941 .syntax unified - 942 .thumb - 943 .thumb_func - 944 .fpu fpv4-sp-d16 - 946 debug_print: - 947 .LVL68: - ARM GAS /tmp/ccg6eVgO.s page 26 - - - 948 .LFB150: - 289:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); - 949 .loc 1 289 35 is_stmt 1 view -0 - 950 .cfi_startproc - 951 @ args = 0, pretend = 0, frame = 0 - 952 @ frame_needed = 0, uses_anonymous_args = 0 - 289:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); - 953 .loc 1 289 35 is_stmt 0 view .LVU207 - 954 0000 10B5 push {r4, lr} - 955 .LCFI25: - 956 .cfi_def_cfa_offset 8 - 957 .cfi_offset 4, -8 - 958 .cfi_offset 14, -4 - 959 0002 0446 mov r4, r0 - 290:Core/Src/main.c **** } - 960 .loc 1 290 3 is_stmt 1 view .LVU208 - 290:Core/Src/main.c **** } - 961 .loc 1 290 45 is_stmt 0 view .LVU209 - 962 0004 FFF7FEFF bl strlen - 963 .LVL69: - 290:Core/Src/main.c **** } - 964 .loc 1 290 3 view .LVU210 - 965 0008 4FF0FF33 mov r3, #-1 - 966 000c 82B2 uxth r2, r0 - 967 000e 2146 mov r1, r4 - 968 0010 0148 ldr r0, .L60 - 969 0012 FFF7FEFF bl HAL_UART_Transmit - 970 .LVL70: - 291:Core/Src/main.c **** - 971 .loc 1 291 1 view .LVU211 - 972 0016 10BD pop {r4, pc} - 973 .LVL71: - 974 .L61: - 291:Core/Src/main.c **** - 975 .loc 1 291 1 view .LVU212 - 976 .align 2 - 977 .L60: - 978 0018 00000000 .word .LANCHOR1 - 979 .cfi_endproc - 980 .LFE150: - 982 .section .text.Error_Handler,"ax",%progbits - 983 .align 1 - 984 .global Error_Handler - 985 .syntax unified - 986 .thumb - 987 .thumb_func - 988 .fpu fpv4-sp-d16 - 990 Error_Handler: - 991 .LFB152: - 322:Core/Src/main.c **** - 323:Core/Src/main.c **** - 324:Core/Src/main.c **** /** - 325:Core/Src/main.c **** * @brief This function is executed in case of error occurrence. - 326:Core/Src/main.c **** * @retval None - 327:Core/Src/main.c **** */ - 328:Core/Src/main.c **** void Error_Handler(void) - 329:Core/Src/main.c **** { - ARM GAS /tmp/ccg6eVgO.s page 27 - - - 992 .loc 1 329 1 is_stmt 1 view -0 - 993 .cfi_startproc - 994 @ Volatile: function does not return. - 995 @ args = 0, pretend = 0, frame = 0 - 996 @ frame_needed = 0, uses_anonymous_args = 0 - 997 @ link register save eliminated. - 330:Core/Src/main.c **** /* USER CODE BEGIN Error_Handler_Debug */ - 331:Core/Src/main.c **** /* User can add his own implementation to report the HAL error return state */ - 332:Core/Src/main.c **** __disable_irq(); - 998 .loc 1 332 3 view .LVU214 - 999 .LBB12: - 1000 .LBI12: - 1001 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" + 674 Chip_Erase: + 675 .LFB146: + 218:Core/Src/main.c **** // Erase sequence + 676 .loc 1 218 22 is_stmt 1 view -0 + 677 .cfi_startproc + 678 @ args = 0, pretend = 0, frame = 0 + 679 @ frame_needed = 0, uses_anonymous_args = 0 + 680 0000 08B5 push {r3, lr} + 681 .LCFI17: + 682 .cfi_def_cfa_offset 8 + 683 .cfi_offset 3, -8 + 684 .cfi_offset 14, -4 + 220:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 685 .loc 1 220 3 view .LVU145 + 686 0002 AA21 movs r1, #170 + 687 0004 45F25550 movw r0, #21845 + 688 0008 FFF7FEFF bl Write_Command + 689 .LVL48: + 221:Core/Src/main.c **** Write_Command(0x5555, 0x80); + 690 .loc 1 221 3 view .LVU146 + 691 000c 5521 movs r1, #85 + 692 000e 42F6AA20 movw r0, #10922 + 693 0012 FFF7FEFF bl Write_Command + 694 .LVL49: + ARM GAS /tmp/ccPiCTjg.s page 22 + + + 222:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 695 .loc 1 222 3 view .LVU147 + 696 0016 8021 movs r1, #128 + 697 0018 45F25550 movw r0, #21845 + 698 001c FFF7FEFF bl Write_Command + 699 .LVL50: + 223:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 700 .loc 1 223 3 view .LVU148 + 701 0020 AA21 movs r1, #170 + 702 0022 45F25550 movw r0, #21845 + 703 0026 FFF7FEFF bl Write_Command + 704 .LVL51: + 224:Core/Src/main.c **** Write_Command(0x5555, 0x10); + 705 .loc 1 224 3 view .LVU149 + 706 002a 5521 movs r1, #85 + 707 002c 42F6AA20 movw r0, #10922 + 708 0030 FFF7FEFF bl Write_Command + 709 .LVL52: + 225:Core/Src/main.c **** + 710 .loc 1 225 3 view .LVU150 + 711 0034 1021 movs r1, #16 + 712 0036 45F25550 movw r0, #21845 + 713 003a FFF7FEFF bl Write_Command + 714 .LVL53: + 227:Core/Src/main.c **** } + 715 .loc 1 227 3 view .LVU151 + 716 003e 9620 movs r0, #150 + 717 0040 FFF7FEFF bl HAL_Delay + 718 .LVL54: + 228:Core/Src/main.c **** + 719 .loc 1 228 1 is_stmt 0 view .LVU152 + 720 0044 08BD pop {r3, pc} + 721 .cfi_endproc + 722 .LFE146: + 724 .section .text.Chip_Program_Byte,"ax",%progbits + 725 .align 1 + 726 .global Chip_Program_Byte + 727 .syntax unified + 728 .thumb + 729 .thumb_func + 730 .fpu fpv4-sp-d16 + 732 Chip_Program_Byte: + 733 .LVL55: + 734 .LFB147: + 230:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 735 .loc 1 230 43 is_stmt 1 view -0 + 736 .cfi_startproc + 737 @ args = 0, pretend = 0, frame = 0 + 738 @ frame_needed = 0, uses_anonymous_args = 0 + 230:Core/Src/main.c **** Write_Command(0x5555, 0xAA); + 739 .loc 1 230 43 is_stmt 0 view .LVU154 + 740 0000 38B5 push {r3, r4, r5, lr} + 741 .LCFI18: + 742 .cfi_def_cfa_offset 16 + 743 .cfi_offset 3, -16 + 744 .cfi_offset 4, -12 + 745 .cfi_offset 5, -8 + ARM GAS /tmp/ccPiCTjg.s page 23 + + + 746 .cfi_offset 14, -4 + 747 0002 0446 mov r4, r0 + 748 0004 0D46 mov r5, r1 + 231:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 749 .loc 1 231 3 is_stmt 1 view .LVU155 + 750 0006 AA21 movs r1, #170 + 751 .LVL56: + 231:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 752 .loc 1 231 3 is_stmt 0 view .LVU156 + 753 0008 45F25550 movw r0, #21845 + 754 .LVL57: + 231:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 755 .loc 1 231 3 view .LVU157 + 756 000c FFF7FEFF bl Write_Command + 757 .LVL58: + 232:Core/Src/main.c **** Write_Command(0x5555, 0xA0); + 758 .loc 1 232 3 is_stmt 1 view .LVU158 + 759 0010 5521 movs r1, #85 + 760 0012 42F6AA20 movw r0, #10922 + 761 0016 FFF7FEFF bl Write_Command + 762 .LVL59: + 233:Core/Src/main.c **** Write_Command(addr, data); + 763 .loc 1 233 3 view .LVU159 + 764 001a A021 movs r1, #160 + 765 001c 45F25550 movw r0, #21845 + 766 0020 FFF7FEFF bl Write_Command + 767 .LVL60: + 234:Core/Src/main.c **** } + 768 .loc 1 234 3 view .LVU160 + 769 0024 2946 mov r1, r5 + 770 0026 2046 mov r0, r4 + 771 0028 FFF7FEFF bl Write_Command + 772 .LVL61: + 235:Core/Src/main.c **** + 773 .loc 1 235 1 is_stmt 0 view .LVU161 + 774 002c 38BD pop {r3, r4, r5, pc} + 235:Core/Src/main.c **** + 775 .loc 1 235 1 view .LVU162 + 776 .cfi_endproc + 777 .LFE147: + 779 .section .text.Flash_ReadByte,"ax",%progbits + 780 .align 1 + 781 .global Flash_ReadByte + 782 .syntax unified + 783 .thumb + 784 .thumb_func + 785 .fpu fpv4-sp-d16 + 787 Flash_ReadByte: + 788 .LVL62: + 789 .LFB143: + 171:Core/Src/main.c **** Write_Address(addr); + 790 .loc 1 171 30 is_stmt 1 view -0 + 791 .cfi_startproc + 792 @ args = 0, pretend = 0, frame = 0 + 793 @ frame_needed = 0, uses_anonymous_args = 0 + 171:Core/Src/main.c **** Write_Address(addr); + 794 .loc 1 171 30 is_stmt 0 view .LVU164 + ARM GAS /tmp/ccPiCTjg.s page 24 + + + 795 0000 10B5 push {r4, lr} + 796 .LCFI19: + 797 .cfi_def_cfa_offset 8 + 798 .cfi_offset 4, -8 + 799 .cfi_offset 14, -4 + 172:Core/Src/main.c **** Data_Pins_Init(0); + 800 .loc 1 172 5 is_stmt 1 view .LVU165 + 801 0002 FFF7FEFF bl Write_Address + 802 .LVL63: + 173:Core/Src/main.c **** Write_Command_Pins(0, 0, 1); + 803 .loc 1 173 5 view .LVU166 + 804 0006 0020 movs r0, #0 + 805 0008 FFF7FEFF bl Data_Pins_Init + 806 .LVL64: + 174:Core/Src/main.c **** int data = Receive_Data(); + 807 .loc 1 174 5 view .LVU167 + 808 000c 0122 movs r2, #1 + 809 000e 0021 movs r1, #0 + 810 0010 0846 mov r0, r1 + 811 0012 FFF7FEFF bl Write_Command_Pins + 812 .LVL65: + 175:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 813 .loc 1 175 5 view .LVU168 + 175:Core/Src/main.c **** Write_Command_Pins(1, 1, 1); + 814 .loc 1 175 16 is_stmt 0 view .LVU169 + 815 0016 FFF7FEFF bl Receive_Data + 816 .LVL66: + 817 001a 0446 mov r4, r0 + 818 .LVL67: + 176:Core/Src/main.c **** return data; + 819 .loc 1 176 5 is_stmt 1 view .LVU170 + 820 001c 0122 movs r2, #1 + 821 001e 1146 mov r1, r2 + 822 0020 1046 mov r0, r2 + 823 .LVL68: + 176:Core/Src/main.c **** return data; + 824 .loc 1 176 5 is_stmt 0 view .LVU171 + 825 0022 FFF7FEFF bl Write_Command_Pins + 826 .LVL69: + 177:Core/Src/main.c **** } + 827 .loc 1 177 5 is_stmt 1 view .LVU172 + 178:Core/Src/main.c **** + 828 .loc 1 178 1 is_stmt 0 view .LVU173 + 829 0026 2046 mov r0, r4 + 830 0028 10BD pop {r4, pc} + 178:Core/Src/main.c **** + 831 .loc 1 178 1 view .LVU174 + 832 .cfi_endproc + 833 .LFE143: + 835 .section .text.Enter_Device_ID,"ax",%progbits + 836 .align 1 + 837 .global Enter_Device_ID + 838 .syntax unified + 839 .thumb + 840 .thumb_func + 841 .fpu fpv4-sp-d16 + 843 Enter_Device_ID: + ARM GAS /tmp/ccPiCTjg.s page 25 + + + 844 .LVL70: + 845 .LFB144: + 180:Core/Src/main.c **** // Enter ID mode + 846 .loc 1 180 53 is_stmt 1 view -0 + 847 .cfi_startproc + 848 @ args = 0, pretend = 0, frame = 0 + 849 @ frame_needed = 0, uses_anonymous_args = 0 + 180:Core/Src/main.c **** // Enter ID mode + 850 .loc 1 180 53 is_stmt 0 view .LVU176 + 851 0000 38B5 push {r3, r4, r5, lr} + 852 .LCFI20: + 853 .cfi_def_cfa_offset 16 + 854 .cfi_offset 3, -16 + 855 .cfi_offset 4, -12 + 856 .cfi_offset 5, -8 + 857 .cfi_offset 14, -4 + 858 0002 0546 mov r5, r0 + 859 0004 0C46 mov r4, r1 + 182:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 860 .loc 1 182 3 is_stmt 1 view .LVU177 + 861 0006 AA21 movs r1, #170 + 862 .LVL71: + 182:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 863 .loc 1 182 3 is_stmt 0 view .LVU178 + 864 0008 45F25550 movw r0, #21845 + 865 .LVL72: + 182:Core/Src/main.c **** Write_Command(0x2AAA, 0x55); + 866 .loc 1 182 3 view .LVU179 + 867 000c FFF7FEFF bl Write_Command + 868 .LVL73: + 183:Core/Src/main.c **** Write_Command(0x5555, 0x90); + 869 .loc 1 183 3 is_stmt 1 view .LVU180 + 870 0010 5521 movs r1, #85 + 871 0012 42F6AA20 movw r0, #10922 + 872 0016 FFF7FEFF bl Write_Command + 873 .LVL74: + 184:Core/Src/main.c **** + 874 .loc 1 184 3 view .LVU181 + 875 001a 9021 movs r1, #144 + 876 001c 45F25550 movw r0, #21845 + 877 0020 FFF7FEFF bl Write_Command + 878 .LVL75: + 187:Core/Src/main.c **** + 879 .loc 1 187 3 view .LVU182 + 187:Core/Src/main.c **** + 880 .loc 1 187 19 is_stmt 0 view .LVU183 + 881 0024 0020 movs r0, #0 + 882 0026 FFF7FEFF bl Flash_ReadByte + 883 .LVL76: + 187:Core/Src/main.c **** + 884 .loc 1 187 17 view .LVU184 + 885 002a 2860 str r0, [r5] + 190:Core/Src/main.c **** + 886 .loc 1 190 3 is_stmt 1 view .LVU185 + 190:Core/Src/main.c **** + 887 .loc 1 190 13 is_stmt 0 view .LVU186 + 888 002c 0120 movs r0, #1 + ARM GAS /tmp/ccPiCTjg.s page 26 + + + 889 002e FFF7FEFF bl Flash_ReadByte + 890 .LVL77: + 190:Core/Src/main.c **** + 891 .loc 1 190 11 view .LVU187 + 892 0032 2060 str r0, [r4] + 193:Core/Src/main.c **** } + 893 .loc 1 193 3 is_stmt 1 view .LVU188 + 894 0034 F021 movs r1, #240 + 895 0036 45F25550 movw r0, #21845 + 896 003a FFF7FEFF bl Write_Command + 897 .LVL78: + 194:Core/Src/main.c **** + 898 .loc 1 194 1 is_stmt 0 view .LVU189 + 899 003e 38BD pop {r3, r4, r5, pc} + 194:Core/Src/main.c **** + 900 .loc 1 194 1 view .LVU190 + 901 .cfi_endproc + 902 .LFE144: + 904 .section .rodata.Dump_Flash_UART.str1.4,"aMS",%progbits,1 + 905 .align 2 + 906 .LC2: + 907 0000 25303258 .ascii "%02X \000" + 907 2000 + 908 0006 0000 .align 2 + 909 .LC3: + 910 0008 0D0A00 .ascii "\015\012\000" + 911 .section .text.Dump_Flash_UART,"ax",%progbits + 912 .align 1 + 913 .global Dump_Flash_UART + 914 .syntax unified + 915 .thumb + 916 .thumb_func + 917 .fpu fpv4-sp-d16 + 919 Dump_Flash_UART: + 920 .LVL79: + 921 .LFB145: + 196:Core/Src/main.c **** uint8_t byte; + 922 .loc 1 196 40 is_stmt 1 view -0 + 923 .cfi_startproc + 924 @ args = 0, pretend = 0, frame = 16 + 925 @ frame_needed = 0, uses_anonymous_args = 0 + 196:Core/Src/main.c **** uint8_t byte; + 926 .loc 1 196 40 is_stmt 0 view .LVU192 + 927 0000 30B5 push {r4, r5, lr} + 928 .LCFI21: + 929 .cfi_def_cfa_offset 12 + 930 .cfi_offset 4, -12 + 931 .cfi_offset 5, -8 + 932 .cfi_offset 14, -4 + 933 0002 85B0 sub sp, sp, #20 + 934 .LCFI22: + 935 .cfi_def_cfa_offset 32 + 936 0004 0546 mov r5, r0 + 197:Core/Src/main.c **** char buf[8]; + 937 .loc 1 197 3 is_stmt 1 view .LVU193 + 198:Core/Src/main.c **** + 938 .loc 1 198 3 view .LVU194 + ARM GAS /tmp/ccPiCTjg.s page 27 + + + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 939 .loc 1 200 3 view .LVU195 + 940 .LBB12: + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 941 .loc 1 200 8 view .LVU196 + 942 .LVL80: + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 943 .loc 1 200 12 is_stmt 0 view .LVU197 + 944 0006 0024 movs r4, #0 + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 945 .loc 1 200 3 view .LVU198 + 946 0008 12E0 b .L55 + 947 .LVL81: + 948 .L56: + 208:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY); + 949 .loc 1 208 7 is_stmt 1 view .LVU199 + 950 000a 1C49 ldr r1, .L62 + 951 000c 01A8 add r0, sp, #4 + 952 000e FFF7FEFF bl sprintf + 953 .LVL82: + 209:Core/Src/main.c **** if ((addr & 0x0F) == 0x0F) { + 954 .loc 1 209 7 view .LVU200 + 209:Core/Src/main.c **** if ((addr & 0x0F) == 0x0F) { + 955 .loc 1 209 49 is_stmt 0 view .LVU201 + 956 0012 01A8 add r0, sp, #4 + 957 0014 FFF7FEFF bl strlen + 958 .LVL83: + 209:Core/Src/main.c **** if ((addr & 0x0F) == 0x0F) { + 959 .loc 1 209 7 view .LVU202 + 960 0018 4FF0FF33 mov r3, #-1 + 961 001c 82B2 uxth r2, r0 + 962 001e 01A9 add r1, sp, #4 + 963 0020 1748 ldr r0, .L62+4 + 964 0022 FFF7FEFF bl HAL_UART_Transmit + 965 .LVL84: + 210:Core/Src/main.c **** char newline[] = "\r\n"; + 966 .loc 1 210 7 is_stmt 1 view .LVU203 + 210:Core/Src/main.c **** char newline[] = "\r\n"; + 967 .loc 1 210 17 is_stmt 0 view .LVU204 + 968 0026 04F00F03 and r3, r4, #15 + 210:Core/Src/main.c **** char newline[] = "\r\n"; + 969 .loc 1 210 10 view .LVU205 + 970 002a 0F2B cmp r3, #15 + 971 002c 14D0 beq .L60 + 972 .L57: + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 973 .loc 1 200 38 is_stmt 1 discriminator 2 view .LVU206 + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 974 .loc 1 200 42 is_stmt 0 discriminator 2 view .LVU207 + 975 002e 0134 adds r4, r4, #1 + 976 .LVL85: + 977 .L55: + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 978 .loc 1 200 22 is_stmt 1 discriminator 1 view .LVU208 + 200:Core/Src/main.c **** byte = Flash_ReadByte(addr); + 979 .loc 1 200 3 is_stmt 0 discriminator 1 view .LVU209 + 980 0030 B4F5002F cmp r4, #524288 + ARM GAS /tmp/ccPiCTjg.s page 28 + + + 981 0034 1FDA bge .L61 + 201:Core/Src/main.c **** + 982 .loc 1 201 5 is_stmt 1 view .LVU210 + 201:Core/Src/main.c **** + 983 .loc 1 201 12 is_stmt 0 view .LVU211 + 984 0036 2046 mov r0, r4 + 985 0038 FFF7FEFF bl Flash_ReadByte + 986 .LVL86: + 201:Core/Src/main.c **** + 987 .loc 1 201 10 view .LVU212 + 988 003c C2B2 uxtb r2, r0 + 989 003e 8DF80F20 strb r2, [sp, #15] + 203:Core/Src/main.c **** // Send as raw byte: + 990 .loc 1 203 5 is_stmt 1 view .LVU213 + 203:Core/Src/main.c **** // Send as raw byte: + 991 .loc 1 203 7 is_stmt 0 view .LVU214 + 992 0042 002D cmp r5, #0 + 993 0044 E1D1 bne .L56 + 205:Core/Src/main.c **** }else{ + 994 .loc 1 205 7 is_stmt 1 view .LVU215 + 995 0046 4FF0FF33 mov r3, #-1 + 996 004a 0122 movs r2, #1 + 997 004c 0DF10F01 add r1, sp, #15 + 998 0050 0B48 ldr r0, .L62+4 + 999 0052 FFF7FEFF bl HAL_UART_Transmit + 1000 .LVL87: + 1001 0056 EAE7 b .L57 + 1002 .L60: + 1003 .LBB13: + 211:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)newline, 2, HAL_MAX_DELAY); + 1004 .loc 1 211 9 view .LVU216 + 211:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)newline, 2, HAL_MAX_DELAY); + 1005 .loc 1 211 14 is_stmt 0 view .LVU217 + 1006 0058 0A4B ldr r3, .L62+8 + 1007 005a 1B68 ldr r3, [r3] + 1008 005c ADF80030 strh r3, [sp] @ movhi + 1009 0060 1B0C lsrs r3, r3, #16 + 1010 0062 8DF80230 strb r3, [sp, #2] + 212:Core/Src/main.c **** } + 1011 .loc 1 212 9 is_stmt 1 view .LVU218 + 1012 0066 4FF0FF33 mov r3, #-1 + 1013 006a 0222 movs r2, #2 + 1014 006c 6946 mov r1, sp + 1015 006e 0448 ldr r0, .L62+4 + 1016 0070 FFF7FEFF bl HAL_UART_Transmit + 1017 .LVL88: + 1018 0074 DBE7 b .L57 + 1019 .L61: + 212:Core/Src/main.c **** } + 1020 .loc 1 212 9 is_stmt 0 view .LVU219 + 1021 .LBE13: + 1022 .LBE12: + 216:Core/Src/main.c **** + 1023 .loc 1 216 1 view .LVU220 + 1024 0076 05B0 add sp, sp, #20 + 1025 .LCFI23: + 1026 .cfi_def_cfa_offset 12 + ARM GAS /tmp/ccPiCTjg.s page 29 + + + 1027 @ sp needed + 1028 0078 30BD pop {r4, r5, pc} + 1029 .LVL89: + 1030 .L63: + 216:Core/Src/main.c **** + 1031 .loc 1 216 1 view .LVU221 + 1032 007a 00BF .align 2 + 1033 .L62: + 1034 007c 00000000 .word .LC2 + 1035 0080 00000000 .word .LANCHOR1 + 1036 0084 08000000 .word .LC3 + 1037 .cfi_endproc + 1038 .LFE145: + 1040 .section .text.Address_Pins_Init,"ax",%progbits + 1041 .align 1 + 1042 .global Address_Pins_Init + 1043 .syntax unified + 1044 .thumb + 1045 .thumb_func + 1046 .fpu fpv4-sp-d16 + 1048 Address_Pins_Init: + 1049 .LFB152: + 333:Core/Src/main.c **** GPIO_InitTypeDef GPIOC_InitStruct = {0}; + 1050 .loc 1 333 29 is_stmt 1 view -0 + 1051 .cfi_startproc + 1052 @ args = 0, pretend = 0, frame = 40 + 1053 @ frame_needed = 0, uses_anonymous_args = 0 + 1054 0000 70B5 push {r4, r5, r6, lr} + 1055 .LCFI24: + 1056 .cfi_def_cfa_offset 16 + 1057 .cfi_offset 4, -16 + 1058 .cfi_offset 5, -12 + 1059 .cfi_offset 6, -8 + 1060 .cfi_offset 14, -4 + 1061 0002 8AB0 sub sp, sp, #40 + 1062 .LCFI25: + 1063 .cfi_def_cfa_offset 56 + 334:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs + 1064 .loc 1 334 3 view .LVU223 + 334:Core/Src/main.c **** // Configure PC0..PC15 as push-pull outputs + 1065 .loc 1 334 20 is_stmt 0 view .LVU224 + 1066 0004 0024 movs r4, #0 + 1067 0006 0594 str r4, [sp, #20] + 1068 0008 0694 str r4, [sp, #24] + 1069 000a 0794 str r4, [sp, #28] + 1070 000c 0894 str r4, [sp, #32] + 1071 000e 0994 str r4, [sp, #36] + 336:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | + 1072 .loc 1 336 3 is_stmt 1 view .LVU225 + 336:Core/Src/main.c **** GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | + 1073 .loc 1 336 24 is_stmt 0 view .LVU226 + 1074 0010 4FF6FF73 movw r3, #65535 + 1075 0014 0593 str r3, [sp, #20] + 340:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1076 .loc 1 340 3 is_stmt 1 view .LVU227 + 340:Core/Src/main.c **** GPIOC_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1077 .loc 1 340 25 is_stmt 0 view .LVU228 + ARM GAS /tmp/ccPiCTjg.s page 30 + + + 1078 0016 0126 movs r6, #1 + 1079 0018 0696 str r6, [sp, #24] + 341:Core/Src/main.c **** GPIOC_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 1080 .loc 1 341 3 is_stmt 1 view .LVU229 + 342:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); + 1081 .loc 1 342 3 view .LVU230 + 342:Core/Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIOC_InitStruct); + 1082 .loc 1 342 26 is_stmt 0 view .LVU231 + 1083 001a 0225 movs r5, #2 + 1084 001c 0895 str r5, [sp, #32] + 343:Core/Src/main.c **** + 1085 .loc 1 343 3 is_stmt 1 view .LVU232 + 1086 001e 05A9 add r1, sp, #20 + 1087 0020 0848 ldr r0, .L66 + 1088 0022 FFF7FEFF bl HAL_GPIO_Init + 1089 .LVL90: + 346:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs + 1090 .loc 1 346 3 view .LVU233 + 346:Core/Src/main.c **** // Configure PB0..PB2 as push-pull outputs + 1091 .loc 1 346 20 is_stmt 0 view .LVU234 + 1092 0026 0094 str r4, [sp] + 1093 0028 0194 str r4, [sp, #4] + 1094 002a 0294 str r4, [sp, #8] + 1095 002c 0394 str r4, [sp, #12] + 1096 002e 0494 str r4, [sp, #16] + 348:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 1097 .loc 1 348 3 is_stmt 1 view .LVU235 + 348:Core/Src/main.c **** GPIOB_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 1098 .loc 1 348 24 is_stmt 0 view .LVU236 + 1099 0030 1F23 movs r3, #31 + 1100 0032 0093 str r3, [sp] + 349:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1101 .loc 1 349 3 is_stmt 1 view .LVU237 + 349:Core/Src/main.c **** GPIOB_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1102 .loc 1 349 25 is_stmt 0 view .LVU238 + 1103 0034 0196 str r6, [sp, #4] + 350:Core/Src/main.c **** GPIOB_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 1104 .loc 1 350 3 is_stmt 1 view .LVU239 + 351:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); + 1105 .loc 1 351 3 view .LVU240 + 351:Core/Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIOB_InitStruct); + 1106 .loc 1 351 26 is_stmt 0 view .LVU241 + 1107 0036 0395 str r5, [sp, #12] + 352:Core/Src/main.c **** } + 1108 .loc 1 352 3 is_stmt 1 view .LVU242 + 1109 0038 6946 mov r1, sp + 1110 003a 0348 ldr r0, .L66+4 + 1111 003c FFF7FEFF bl HAL_GPIO_Init + 1112 .LVL91: + 353:Core/Src/main.c **** + 1113 .loc 1 353 1 is_stmt 0 view .LVU243 + 1114 0040 0AB0 add sp, sp, #40 + 1115 .LCFI26: + 1116 .cfi_def_cfa_offset 16 + 1117 @ sp needed + 1118 0042 70BD pop {r4, r5, r6, pc} + 1119 .L67: + ARM GAS /tmp/ccPiCTjg.s page 31 + + + 1120 .align 2 + 1121 .L66: + 1122 0044 00080240 .word 1073874944 + 1123 0048 00040240 .word 1073873920 + 1124 .cfi_endproc + 1125 .LFE152: + 1127 .section .text.Command_Pins_Init,"ax",%progbits + 1128 .align 1 + 1129 .global Command_Pins_Init + 1130 .syntax unified + 1131 .thumb + 1132 .thumb_func + 1133 .fpu fpv4-sp-d16 + 1135 Command_Pins_Init: + 1136 .LFB153: + 355:Core/Src/main.c **** // PA8-10 as outputs pins + 1137 .loc 1 355 29 is_stmt 1 view -0 + 1138 .cfi_startproc + 1139 @ args = 0, pretend = 0, frame = 24 + 1140 @ frame_needed = 0, uses_anonymous_args = 0 + 1141 0000 00B5 push {lr} + 1142 .LCFI27: + 1143 .cfi_def_cfa_offset 4 + 1144 .cfi_offset 14, -4 + 1145 0002 87B0 sub sp, sp, #28 + 1146 .LCFI28: + 1147 .cfi_def_cfa_offset 32 + 357:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + 1148 .loc 1 357 3 view .LVU245 + 357:Core/Src/main.c **** GPIOA_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + 1149 .loc 1 357 20 is_stmt 0 view .LVU246 + 1150 0004 0023 movs r3, #0 + 1151 0006 0193 str r3, [sp, #4] + 1152 0008 0293 str r3, [sp, #8] + 1153 000a 0393 str r3, [sp, #12] + 1154 000c 0493 str r3, [sp, #16] + 1155 000e 0593 str r3, [sp, #20] + 358:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 1156 .loc 1 358 3 is_stmt 1 view .LVU247 + 358:Core/Src/main.c **** GPIOA_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Push-pull output + 1157 .loc 1 358 24 is_stmt 0 view .LVU248 + 1158 0010 4FF4E063 mov r3, #1792 + 1159 0014 0193 str r3, [sp, #4] + 359:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1160 .loc 1 359 3 is_stmt 1 view .LVU249 + 359:Core/Src/main.c **** GPIOA_InitStruct.Pull = GPIO_NOPULL; // No pull-up/down + 1161 .loc 1 359 25 is_stmt 0 view .LVU250 + 1162 0016 0123 movs r3, #1 + 1163 0018 0293 str r3, [sp, #8] + 360:Core/Src/main.c **** GPIOA_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // Fast switching + 1164 .loc 1 360 3 is_stmt 1 view .LVU251 + 361:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); + 1165 .loc 1 361 3 view .LVU252 + 361:Core/Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIOA_InitStruct); + 1166 .loc 1 361 26 is_stmt 0 view .LVU253 + 1167 001a 0223 movs r3, #2 + 1168 001c 0493 str r3, [sp, #16] + ARM GAS /tmp/ccPiCTjg.s page 32 + + + 362:Core/Src/main.c **** } + 1169 .loc 1 362 3 is_stmt 1 view .LVU254 + 1170 001e 01A9 add r1, sp, #4 + 1171 0020 0248 ldr r0, .L70 + 1172 0022 FFF7FEFF bl HAL_GPIO_Init + 1173 .LVL92: + 363:Core/Src/main.c **** + 1174 .loc 1 363 1 is_stmt 0 view .LVU255 + 1175 0026 07B0 add sp, sp, #28 + 1176 .LCFI29: + 1177 .cfi_def_cfa_offset 4 + 1178 @ sp needed + 1179 0028 5DF804FB ldr pc, [sp], #4 + 1180 .L71: + 1181 .align 2 + 1182 .L70: + 1183 002c 00000240 .word 1073872896 + 1184 .cfi_endproc + 1185 .LFE153: + 1187 .section .text.debug_print,"ax",%progbits + 1188 .align 1 + 1189 .global debug_print + 1190 .syntax unified + 1191 .thumb + 1192 .thumb_func + 1193 .fpu fpv4-sp-d16 + 1195 debug_print: + 1196 .LVL93: + 1197 .LFB154: + 365:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); + 1198 .loc 1 365 35 is_stmt 1 view -0 + 1199 .cfi_startproc + 1200 @ args = 0, pretend = 0, frame = 0 + 1201 @ frame_needed = 0, uses_anonymous_args = 0 + 365:Core/Src/main.c **** HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); + 1202 .loc 1 365 35 is_stmt 0 view .LVU257 + 1203 0000 10B5 push {r4, lr} + 1204 .LCFI30: + 1205 .cfi_def_cfa_offset 8 + 1206 .cfi_offset 4, -8 + 1207 .cfi_offset 14, -4 + 1208 0002 0446 mov r4, r0 + 366:Core/Src/main.c **** } + 1209 .loc 1 366 3 is_stmt 1 view .LVU258 + 366:Core/Src/main.c **** } + 1210 .loc 1 366 45 is_stmt 0 view .LVU259 + 1211 0004 FFF7FEFF bl strlen + 1212 .LVL94: + 366:Core/Src/main.c **** } + 1213 .loc 1 366 3 view .LVU260 + 1214 0008 4FF0FF33 mov r3, #-1 + 1215 000c 82B2 uxth r2, r0 + 1216 000e 2146 mov r1, r4 + 1217 0010 0148 ldr r0, .L74 + 1218 0012 FFF7FEFF bl HAL_UART_Transmit + 1219 .LVL95: + 367:Core/Src/main.c **** + ARM GAS /tmp/ccPiCTjg.s page 33 + + + 1220 .loc 1 367 1 view .LVU261 + 1221 0016 10BD pop {r4, pc} + 1222 .LVL96: + 1223 .L75: + 367:Core/Src/main.c **** + 1224 .loc 1 367 1 view .LVU262 + 1225 .align 2 + 1226 .L74: + 1227 0018 00000000 .word .LANCHOR1 + 1228 .cfi_endproc + 1229 .LFE154: + 1231 .section .rodata.Flash_From_UART.str1.4,"aMS",%progbits,1 + 1232 .align 2 + 1233 .LC4: + 1234 0000 57616974 .ascii "Waiting for file to flash...\015\012\000" + 1234 696E6720 + 1234 666F7220 + 1234 66696C65 + 1234 20746F20 + 1235 001f 00 .align 2 + 1236 .LC5: + 1237 0020 66696E69 .ascii "finished\015\012\000" + 1237 73686564 + 1237 0D0A00 + 1238 .section .text.Flash_From_UART,"ax",%progbits + 1239 .align 1 + 1240 .global Flash_From_UART + 1241 .syntax unified + 1242 .thumb + 1243 .thumb_func + 1244 .fpu fpv4-sp-d16 + 1246 Flash_From_UART: + 1247 .LFB148: + 237:Core/Src/main.c **** debug_print("Waiting for file to flash...\r\n"); + 1248 .loc 1 237 27 is_stmt 1 view -0 + 1249 .cfi_startproc + 1250 @ args = 0, pretend = 0, frame = 8 + 1251 @ frame_needed = 0, uses_anonymous_args = 0 + 1252 0000 10B5 push {r4, lr} + 1253 .LCFI31: + 1254 .cfi_def_cfa_offset 8 + 1255 .cfi_offset 4, -8 + 1256 .cfi_offset 14, -4 + 1257 0002 82B0 sub sp, sp, #8 + 1258 .LCFI32: + 1259 .cfi_def_cfa_offset 16 + 238:Core/Src/main.c **** uint8_t byte; + 1260 .loc 1 238 3 view .LVU264 + 1261 0004 0C48 ldr r0, .L80 + 1262 0006 FFF7FEFF bl debug_print + 1263 .LVL97: + 239:Core/Src/main.c **** for(int i=0; i<8; i++){ + 1264 .loc 1 239 3 view .LVU265 + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1265 .loc 1 240 3 view .LVU266 + 1266 .LBB14: + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + ARM GAS /tmp/ccPiCTjg.s page 34 + + + 1267 .loc 1 240 7 view .LVU267 + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1268 .loc 1 240 11 is_stmt 0 view .LVU268 + 1269 000a 0024 movs r4, #0 + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1270 .loc 1 240 3 view .LVU269 + 1271 000c 0DE0 b .L77 + 1272 .LVL98: + 1273 .L78: + 241:Core/Src/main.c **** Chip_Program_Byte(i, (int)byte); + 1274 .loc 1 241 5 is_stmt 1 discriminator 3 view .LVU270 + 1275 000e 4FF0FF33 mov r3, #-1 + 1276 0012 0122 movs r2, #1 + 1277 0014 0DF10701 add r1, sp, #7 + 1278 0018 0848 ldr r0, .L80+4 + 1279 001a FFF7FEFF bl HAL_UART_Receive + 1280 .LVL99: + 242:Core/Src/main.c **** } + 1281 .loc 1 242 5 discriminator 3 view .LVU271 + 1282 001e 9DF80710 ldrb r1, [sp, #7] @ zero_extendqisi2 + 1283 0022 2046 mov r0, r4 + 1284 0024 FFF7FEFF bl Chip_Program_Byte + 1285 .LVL100: + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1286 .loc 1 240 21 discriminator 3 view .LVU272 + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1287 .loc 1 240 22 is_stmt 0 discriminator 3 view .LVU273 + 1288 0028 0134 adds r4, r4, #1 + 1289 .LVL101: + 1290 .L77: + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1291 .loc 1 240 16 is_stmt 1 discriminator 1 view .LVU274 + 240:Core/Src/main.c **** HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY); + 1292 .loc 1 240 3 is_stmt 0 discriminator 1 view .LVU275 + 1293 002a 072C cmp r4, #7 + 1294 002c EFDD ble .L78 + 1295 .LBE14: + 244:Core/Src/main.c **** } + 1296 .loc 1 244 3 is_stmt 1 view .LVU276 + 1297 002e 0448 ldr r0, .L80+8 + 1298 0030 FFF7FEFF bl debug_print + 1299 .LVL102: + 245:Core/Src/main.c **** + 1300 .loc 1 245 1 is_stmt 0 view .LVU277 + 1301 0034 02B0 add sp, sp, #8 + 1302 .LCFI33: + 1303 .cfi_def_cfa_offset 8 + 1304 @ sp needed + 1305 0036 10BD pop {r4, pc} + 1306 .LVL103: + 1307 .L81: + 245:Core/Src/main.c **** + 1308 .loc 1 245 1 view .LVU278 + 1309 .align 2 + 1310 .L80: + 1311 0038 00000000 .word .LC4 + 1312 003c 00000000 .word .LANCHOR1 + ARM GAS /tmp/ccPiCTjg.s page 35 + + + 1313 0040 20000000 .word .LC5 + 1314 .cfi_endproc + 1315 .LFE148: + 1317 .section .text.Error_Handler,"ax",%progbits + 1318 .align 1 + 1319 .global Error_Handler + 1320 .syntax unified + 1321 .thumb + 1322 .thumb_func + 1323 .fpu fpv4-sp-d16 + 1325 Error_Handler: + 1326 .LFB156: + 398:Core/Src/main.c **** + 399:Core/Src/main.c **** + 400:Core/Src/main.c **** /** + 401:Core/Src/main.c **** * @brief This function is executed in case of error occurrence. + 402:Core/Src/main.c **** * @retval None + 403:Core/Src/main.c **** */ + 404:Core/Src/main.c **** void Error_Handler(void) + 405:Core/Src/main.c **** { + 1327 .loc 1 405 1 is_stmt 1 view -0 + 1328 .cfi_startproc + 1329 @ Volatile: function does not return. + 1330 @ args = 0, pretend = 0, frame = 0 + 1331 @ frame_needed = 0, uses_anonymous_args = 0 + 1332 @ link register save eliminated. + 406:Core/Src/main.c **** /* USER CODE BEGIN Error_Handler_Debug */ + 407:Core/Src/main.c **** /* User can add his own implementation to report the HAL error return state */ + 408:Core/Src/main.c **** __disable_irq(); + 1333 .loc 1 408 3 view .LVU280 + 1334 .LBB15: + 1335 .LBI15: + 1336 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file @@ -1598,6 +2098,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccPiCTjg.s page 36 + + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H 27:Drivers/CMSIS/Include/cmsis_gcc.h **** @@ -1618,9 +2121,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline - ARM GAS /tmp/ccg6eVgO.s page 28 - - 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline @@ -1658,6 +2158,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + ARM GAS /tmp/ccPiCTjg.s page 37 + + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- @@ -1678,9 +2181,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif - ARM GAS /tmp/ccg6eVgO.s page 29 - - 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" @@ -1718,6 +2218,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t const* src; 137:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest; 138:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen; + ARM GAS /tmp/ccPiCTjg.s page 38 + + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** } __copy_table_t; 140:Drivers/CMSIS/Include/cmsis_gcc.h **** 141:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct { @@ -1738,9 +2241,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 156:Drivers/CMSIS/Include/cmsis_gcc.h **** 157:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable 158:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; iwlen; ++i) { - ARM GAS /tmp/ccg6eVgO.s page 30 - - 159:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = 0u; 160:Drivers/CMSIS/Include/cmsis_gcc.h **** } 161:Drivers/CMSIS/Include/cmsis_gcc.h **** } @@ -1778,6 +2278,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 193:Drivers/CMSIS/Include/cmsis_gcc.h **** 194:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __TZ_STACK_SEAL_VALUE 195:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL + ARM GAS /tmp/ccPiCTjg.s page 39 + + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 197:Drivers/CMSIS/Include/cmsis_gcc.h **** 198:Drivers/CMSIS/Include/cmsis_gcc.h **** @@ -1798,9 +2301,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 213:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ 214:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) 215:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) - ARM GAS /tmp/ccg6eVgO.s page 31 - - 216:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) 217:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) 218:Drivers/CMSIS/Include/cmsis_gcc.h **** #else @@ -1838,6 +2338,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 250:Drivers/CMSIS/Include/cmsis_gcc.h **** 251:Drivers/CMSIS/Include/cmsis_gcc.h **** 252:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/ccPiCTjg.s page 40 + + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier 254:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, 255:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, @@ -1858,9 +2361,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 270:Drivers/CMSIS/Include/cmsis_gcc.h **** { 271:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); 272:Drivers/CMSIS/Include/cmsis_gcc.h **** } - ARM GAS /tmp/ccg6eVgO.s page 32 - - 273:Drivers/CMSIS/Include/cmsis_gcc.h **** 274:Drivers/CMSIS/Include/cmsis_gcc.h **** 275:Drivers/CMSIS/Include/cmsis_gcc.h **** /** @@ -1898,6 +2398,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 307:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 308:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse 309:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + ARM GAS /tmp/ccPiCTjg.s page 41 + + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 311:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) 312:Drivers/CMSIS/Include/cmsis_gcc.h **** { @@ -1918,9 +2421,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 327:Drivers/CMSIS/Include/cmsis_gcc.h **** { 328:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) 329:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); - ARM GAS /tmp/ccg6eVgO.s page 33 - - 330:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 331:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; 332:Drivers/CMSIS/Include/cmsis_gcc.h **** @@ -1958,6 +2458,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 364:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) 365:Drivers/CMSIS/Include/cmsis_gcc.h **** 366:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccPiCTjg.s page 42 + + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value 369:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. @@ -1978,9 +2481,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 384:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ 385:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) 386:Drivers/CMSIS/Include/cmsis_gcc.h **** { - ARM GAS /tmp/ccg6eVgO.s page 34 - - 387:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; 388:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; 389:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; @@ -2018,6 +2518,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 421:Drivers/CMSIS/Include/cmsis_gcc.h **** 422:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ 423:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + ARM GAS /tmp/ccPiCTjg.s page 43 + + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ 425:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) 426:Drivers/CMSIS/Include/cmsis_gcc.h **** /** @@ -2038,9 +2541,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 441:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 442:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); 443:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif - ARM GAS /tmp/ccg6eVgO.s page 35 - - 444:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint8_t) result); /* Add explicit type cast here */ 445:Drivers/CMSIS/Include/cmsis_gcc.h **** } 446:Drivers/CMSIS/Include/cmsis_gcc.h **** @@ -2078,6 +2578,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 479:Drivers/CMSIS/Include/cmsis_gcc.h **** 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + ARM GAS /tmp/ccPiCTjg.s page 44 + + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } 483:Drivers/CMSIS/Include/cmsis_gcc.h **** @@ -2098,9 +2601,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 498:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 499:Drivers/CMSIS/Include/cmsis_gcc.h **** } 500:Drivers/CMSIS/Include/cmsis_gcc.h **** - ARM GAS /tmp/ccg6eVgO.s page 36 - - 501:Drivers/CMSIS/Include/cmsis_gcc.h **** 502:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 503:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (16 bit) @@ -2138,6 +2638,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 535:Drivers/CMSIS/Include/cmsis_gcc.h **** 536:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 537:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Remove the exclusive lock + ARM GAS /tmp/ccPiCTjg.s page 45 + + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Removes the exclusive lock which is created by LDREX. 539:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 540:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __CLREX(void) @@ -2158,9 +2661,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Signed Saturate 556:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Saturates a signed value. 557:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ARG1 Value to be saturated - ARM GAS /tmp/ccg6eVgO.s page 37 - - 558:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ARG2 Bit position to saturate to (1..32) 559:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Saturated value 560:Drivers/CMSIS/Include/cmsis_gcc.h **** */ @@ -2198,6 +2698,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 592:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 593:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) 594:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccPiCTjg.s page 46 + + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 596:Drivers/CMSIS/Include/cmsis_gcc.h **** 597:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); @@ -2218,9 +2721,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 612:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) 613:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); 614:Drivers/CMSIS/Include/cmsis_gcc.h **** #else - ARM GAS /tmp/ccg6eVgO.s page 38 - - 615:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not 616:Drivers/CMSIS/Include/cmsis_gcc.h **** accepted by assembler. So has to use following less efficient pattern. 617:Drivers/CMSIS/Include/cmsis_gcc.h **** */ @@ -2258,6 +2758,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 649:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data 650:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint32_t at (*ptr) 651:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccPiCTjg.s page 47 + + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) 653:Drivers/CMSIS/Include/cmsis_gcc.h **** { 654:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; @@ -2278,9 +2781,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 669:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); 670:Drivers/CMSIS/Include/cmsis_gcc.h **** } 671:Drivers/CMSIS/Include/cmsis_gcc.h **** - ARM GAS /tmp/ccg6eVgO.s page 39 - - 672:Drivers/CMSIS/Include/cmsis_gcc.h **** 673:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 674:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STRT Unprivileged (16 bit) @@ -2318,6 +2818,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 706:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 707:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) 708:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccPiCTjg.s page 48 + + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** if ((sat >= 1U) && (sat <= 32U)) 710:Drivers/CMSIS/Include/cmsis_gcc.h **** { 711:Drivers/CMSIS/Include/cmsis_gcc.h **** const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); @@ -2338,9 +2841,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 726:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Unsigned Saturate 727:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Saturates an unsigned value. 728:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to be saturated - ARM GAS /tmp/ccg6eVgO.s page 40 - - 729:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] sat Bit position to saturate to (0..31) 730:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Saturated value 731:Drivers/CMSIS/Include/cmsis_gcc.h **** */ @@ -2378,6 +2878,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 763:Drivers/CMSIS/Include/cmsis_gcc.h **** { 764:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 765:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccPiCTjg.s page 49 + + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); 767:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint8_t) result); 768:Drivers/CMSIS/Include/cmsis_gcc.h **** } @@ -2398,9 +2901,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 783:Drivers/CMSIS/Include/cmsis_gcc.h **** } 784:Drivers/CMSIS/Include/cmsis_gcc.h **** 785:Drivers/CMSIS/Include/cmsis_gcc.h **** - ARM GAS /tmp/ccg6eVgO.s page 41 - - 786:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 787:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Load-Acquire (32 bit) 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a LDA instruction for 32 bit values. @@ -2438,6 +2938,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 820:Drivers/CMSIS/Include/cmsis_gcc.h **** { 821:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) : "memory" ); 822:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccPiCTjg.s page 50 + + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** 824:Drivers/CMSIS/Include/cmsis_gcc.h **** 825:Drivers/CMSIS/Include/cmsis_gcc.h **** /** @@ -2458,9 +2961,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data 841:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint8_t at (*ptr) 842:Drivers/CMSIS/Include/cmsis_gcc.h **** */ - ARM GAS /tmp/ccg6eVgO.s page 42 - - 843:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) 844:Drivers/CMSIS/Include/cmsis_gcc.h **** { 845:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; @@ -2498,6 +2998,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) : "memory" ); 878:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 879:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccPiCTjg.s page 51 + + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** 881:Drivers/CMSIS/Include/cmsis_gcc.h **** 882:Drivers/CMSIS/Include/cmsis_gcc.h **** /** @@ -2518,9 +3021,6 @@ ARM GAS /tmp/ccg6eVgO.s page 1 897:Drivers/CMSIS/Include/cmsis_gcc.h **** 898:Drivers/CMSIS/Include/cmsis_gcc.h **** 899:Drivers/CMSIS/Include/cmsis_gcc.h **** /** - ARM GAS /tmp/ccg6eVgO.s page 43 - - 900:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Store-Release Exclusive (16 bit) 901:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a STLH exclusive instruction for 16 bit values. 902:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store @@ -2558,6 +3058,9 @@ ARM GAS /tmp/ccg6eVgO.s page 1 934:Drivers/CMSIS/Include/cmsis_gcc.h **** 935:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@}*/ /* end of group CMSIS_Core_InstructionInterface */ 936:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccPiCTjg.s page 52 + + 937:Drivers/CMSIS/Include/cmsis_gcc.h **** 938:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ 939:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface @@ -2578,645 +3081,849 @@ ARM GAS /tmp/ccg6eVgO.s page 1 954:Drivers/CMSIS/Include/cmsis_gcc.h **** 955:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 956:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts - ARM GAS /tmp/ccg6eVgO.s page 44 - - 957:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting special-purpose register PRIMASK. 958:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 959:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 960:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) - 1002 .loc 2 960 27 view .LVU215 - 1003 .LBB13: + 1337 .loc 2 960 27 view .LVU281 + 1338 .LBB16: 961:Drivers/CMSIS/Include/cmsis_gcc.h **** { 962:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); - 1004 .loc 2 962 3 view .LVU216 - 1005 .syntax unified - 1006 @ 962 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 - 1007 0000 72B6 cpsid i - 1008 @ 0 "" 2 - 1009 .thumb - 1010 .syntax unified - 1011 .L63: - 1012 .LBE13: - 1013 .LBE12: - 333:Core/Src/main.c **** while (1) - 1014 .loc 1 333 3 discriminator 1 view .LVU217 - 334:Core/Src/main.c **** { - 335:Core/Src/main.c **** } - 1015 .loc 1 335 3 discriminator 1 view .LVU218 - 333:Core/Src/main.c **** while (1) - 1016 .loc 1 333 9 discriminator 1 view .LVU219 - 1017 0002 FEE7 b .L63 - 1018 .cfi_endproc - 1019 .LFE152: - 1021 .section .text.MX_USART2_UART_Init,"ax",%progbits - 1022 .align 1 - 1023 .syntax unified - 1024 .thumb - 1025 .thumb_func - 1026 .fpu fpv4-sp-d16 - 1028 MX_USART2_UART_Init: - 1029 .LFB146: - 223:Core/Src/main.c **** huart2.Instance = USART2; - 1030 .loc 1 223 1 view -0 - 1031 .cfi_startproc - 1032 @ args = 0, pretend = 0, frame = 0 - 1033 @ frame_needed = 0, uses_anonymous_args = 0 - 1034 0000 08B5 push {r3, lr} - 1035 .LCFI26: - 1036 .cfi_def_cfa_offset 8 - 1037 .cfi_offset 3, -8 - 1038 .cfi_offset 14, -4 - 224:Core/Src/main.c **** huart2.Init.BaudRate = 115200; - 1039 .loc 1 224 3 view .LVU221 - 224:Core/Src/main.c **** huart2.Init.BaudRate = 115200; - 1040 .loc 1 224 19 is_stmt 0 view .LVU222 - 1041 0002 0A48 ldr r0, .L68 - 1042 0004 0A4B ldr r3, .L68+4 - 1043 0006 0360 str r3, [r0] - 225:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; - 1044 .loc 1 225 3 is_stmt 1 view .LVU223 - 225:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; - 1045 .loc 1 225 24 is_stmt 0 view .LVU224 - ARM GAS /tmp/ccg6eVgO.s page 45 - - - 1046 0008 4FF4E133 mov r3, #115200 - 1047 000c 4360 str r3, [r0, #4] - 226:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; - 1048 .loc 1 226 3 is_stmt 1 view .LVU225 - 226:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; - 1049 .loc 1 226 26 is_stmt 0 view .LVU226 - 1050 000e 0023 movs r3, #0 - 1051 0010 8360 str r3, [r0, #8] - 227:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; - 1052 .loc 1 227 3 is_stmt 1 view .LVU227 - 227:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; - 1053 .loc 1 227 24 is_stmt 0 view .LVU228 - 1054 0012 C360 str r3, [r0, #12] - 228:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; - 1055 .loc 1 228 3 is_stmt 1 view .LVU229 - 228:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; - 1056 .loc 1 228 22 is_stmt 0 view .LVU230 - 1057 0014 0361 str r3, [r0, #16] - 229:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 1058 .loc 1 229 3 is_stmt 1 view .LVU231 - 229:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 1059 .loc 1 229 20 is_stmt 0 view .LVU232 - 1060 0016 0C22 movs r2, #12 - 1061 0018 4261 str r2, [r0, #20] - 230:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 1062 .loc 1 230 3 is_stmt 1 view .LVU233 - 230:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 1063 .loc 1 230 25 is_stmt 0 view .LVU234 - 1064 001a 8361 str r3, [r0, #24] - 231:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) - 1065 .loc 1 231 3 is_stmt 1 view .LVU235 - 231:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) - 1066 .loc 1 231 28 is_stmt 0 view .LVU236 - 1067 001c C361 str r3, [r0, #28] - 232:Core/Src/main.c **** { - 1068 .loc 1 232 3 is_stmt 1 view .LVU237 - 232:Core/Src/main.c **** { - 1069 .loc 1 232 7 is_stmt 0 view .LVU238 - 1070 001e FFF7FEFF bl HAL_UART_Init - 1071 .LVL72: - 232:Core/Src/main.c **** { - 1072 .loc 1 232 6 view .LVU239 - 1073 0022 00B9 cbnz r0, .L67 - 237:Core/Src/main.c **** - 1074 .loc 1 237 1 view .LVU240 - 1075 0024 08BD pop {r3, pc} - 1076 .L67: - 234:Core/Src/main.c **** } - 1077 .loc 1 234 5 is_stmt 1 view .LVU241 - 1078 0026 FFF7FEFF bl Error_Handler - 1079 .LVL73: - 1080 .L69: - 1081 002a 00BF .align 2 - 1082 .L68: - 1083 002c 00000000 .word .LANCHOR1 - 1084 0030 00440040 .word 1073759232 - 1085 .cfi_endproc - ARM GAS /tmp/ccg6eVgO.s page 46 - - - 1086 .LFE146: - 1088 .section .text.SystemClock_Config,"ax",%progbits - 1089 .align 1 - 1090 .global SystemClock_Config - 1091 .syntax unified - 1092 .thumb - 1093 .thumb_func - 1094 .fpu fpv4-sp-d16 - 1096 SystemClock_Config: - 1097 .LFB145: - 176:Core/Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 1098 .loc 1 176 1 view -0 - 1099 .cfi_startproc - 1100 @ args = 0, pretend = 0, frame = 80 - 1101 @ frame_needed = 0, uses_anonymous_args = 0 - 1102 0000 00B5 push {lr} - 1103 .LCFI27: - 1104 .cfi_def_cfa_offset 4 - 1105 .cfi_offset 14, -4 - 1106 0002 95B0 sub sp, sp, #84 - 1107 .LCFI28: - 1108 .cfi_def_cfa_offset 88 - 177:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 1109 .loc 1 177 3 view .LVU243 - 177:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 1110 .loc 1 177 22 is_stmt 0 view .LVU244 - 1111 0004 3022 movs r2, #48 - 1112 0006 0021 movs r1, #0 - 1113 0008 08A8 add r0, sp, #32 - 1114 000a FFF7FEFF bl memset - 1115 .LVL74: - 178:Core/Src/main.c **** - 1116 .loc 1 178 3 is_stmt 1 view .LVU245 - 178:Core/Src/main.c **** - 1117 .loc 1 178 22 is_stmt 0 view .LVU246 - 1118 000e 0023 movs r3, #0 - 1119 0010 0393 str r3, [sp, #12] - 1120 0012 0493 str r3, [sp, #16] - 1121 0014 0593 str r3, [sp, #20] - 1122 0016 0693 str r3, [sp, #24] - 1123 0018 0793 str r3, [sp, #28] - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1124 .loc 1 182 3 is_stmt 1 view .LVU247 - 1125 .LBB14: - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1126 .loc 1 182 3 view .LVU248 - 1127 001a 0193 str r3, [sp, #4] - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1128 .loc 1 182 3 view .LVU249 - 1129 001c 1F4A ldr r2, .L76 - 1130 001e 116C ldr r1, [r2, #64] - 1131 0020 41F08051 orr r1, r1, #268435456 - 1132 0024 1164 str r1, [r2, #64] - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1133 .loc 1 182 3 view .LVU250 - 1134 0026 126C ldr r2, [r2, #64] - 1135 0028 02F08052 and r2, r2, #268435456 - ARM GAS /tmp/ccg6eVgO.s page 47 - - - 1136 002c 0192 str r2, [sp, #4] - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1137 .loc 1 182 3 view .LVU251 - 1138 002e 019A ldr r2, [sp, #4] - 1139 .LBE14: - 182:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); - 1140 .loc 1 182 3 view .LVU252 - 183:Core/Src/main.c **** - 1141 .loc 1 183 3 view .LVU253 - 1142 .LBB15: - 183:Core/Src/main.c **** - 1143 .loc 1 183 3 view .LVU254 - 1144 0030 0293 str r3, [sp, #8] - 183:Core/Src/main.c **** - 1145 .loc 1 183 3 view .LVU255 - 1146 0032 1B49 ldr r1, .L76+4 - 1147 0034 0A68 ldr r2, [r1] - 1148 0036 22F44042 bic r2, r2, #49152 - 1149 003a 42F40042 orr r2, r2, #32768 - 1150 003e 0A60 str r2, [r1] - 183:Core/Src/main.c **** - 1151 .loc 1 183 3 view .LVU256 - 1152 0040 0A68 ldr r2, [r1] - 1153 0042 02F44042 and r2, r2, #49152 - 1154 0046 0292 str r2, [sp, #8] - 183:Core/Src/main.c **** - 1155 .loc 1 183 3 view .LVU257 - 1156 0048 029A ldr r2, [sp, #8] - 1157 .LBE15: - 183:Core/Src/main.c **** - 1158 .loc 1 183 3 view .LVU258 - 188:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 1159 .loc 1 188 3 view .LVU259 - 188:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; - 1160 .loc 1 188 36 is_stmt 0 view .LVU260 - 1161 004a 0221 movs r1, #2 - 1162 004c 0891 str r1, [sp, #32] - 189:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 1163 .loc 1 189 3 is_stmt 1 view .LVU261 - 189:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; - 1164 .loc 1 189 30 is_stmt 0 view .LVU262 - 1165 004e 0122 movs r2, #1 - 1166 0050 0B92 str r2, [sp, #44] - 190:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 1167 .loc 1 190 3 is_stmt 1 view .LVU263 - 190:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 1168 .loc 1 190 41 is_stmt 0 view .LVU264 - 1169 0052 1022 movs r2, #16 - 1170 0054 0C92 str r2, [sp, #48] - 191:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 1171 .loc 1 191 3 is_stmt 1 view .LVU265 - 191:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - 1172 .loc 1 191 34 is_stmt 0 view .LVU266 - 1173 0056 0E91 str r1, [sp, #56] - 192:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; - 1174 .loc 1 192 3 is_stmt 1 view .LVU267 - 192:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; - ARM GAS /tmp/ccg6eVgO.s page 48 - - - 1175 .loc 1 192 35 is_stmt 0 view .LVU268 - 1176 0058 0F93 str r3, [sp, #60] - 193:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; - 1177 .loc 1 193 3 is_stmt 1 view .LVU269 - 193:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; - 1178 .loc 1 193 30 is_stmt 0 view .LVU270 - 1179 005a 1092 str r2, [sp, #64] - 194:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; - 1180 .loc 1 194 3 is_stmt 1 view .LVU271 - 194:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; - 1181 .loc 1 194 30 is_stmt 0 view .LVU272 - 1182 005c 4FF4A873 mov r3, #336 - 1183 0060 1193 str r3, [sp, #68] - 195:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; - 1184 .loc 1 195 3 is_stmt 1 view .LVU273 - 195:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; - 1185 .loc 1 195 30 is_stmt 0 view .LVU274 - 1186 0062 0423 movs r3, #4 - 1187 0064 1293 str r3, [sp, #72] - 196:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 1188 .loc 1 196 3 is_stmt 1 view .LVU275 - 196:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 1189 .loc 1 196 30 is_stmt 0 view .LVU276 - 1190 0066 0723 movs r3, #7 - 1191 0068 1393 str r3, [sp, #76] - 197:Core/Src/main.c **** { - 1192 .loc 1 197 3 is_stmt 1 view .LVU277 - 197:Core/Src/main.c **** { - 1193 .loc 1 197 7 is_stmt 0 view .LVU278 - 1194 006a 08A8 add r0, sp, #32 - 1195 006c FFF7FEFF bl HAL_RCC_OscConfig - 1196 .LVL75: - 197:Core/Src/main.c **** { - 1197 .loc 1 197 6 view .LVU279 - 1198 0070 80B9 cbnz r0, .L74 - 204:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - 1199 .loc 1 204 3 is_stmt 1 view .LVU280 - 204:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - 1200 .loc 1 204 31 is_stmt 0 view .LVU281 - 1201 0072 0F23 movs r3, #15 - 1202 0074 0393 str r3, [sp, #12] - 206:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 1203 .loc 1 206 3 is_stmt 1 view .LVU282 - 206:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 1204 .loc 1 206 34 is_stmt 0 view .LVU283 - 1205 0076 0221 movs r1, #2 - 1206 0078 0491 str r1, [sp, #16] - 207:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 1207 .loc 1 207 3 is_stmt 1 view .LVU284 - 207:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - 1208 .loc 1 207 35 is_stmt 0 view .LVU285 - 1209 007a 0023 movs r3, #0 - 1210 007c 0593 str r3, [sp, #20] - 208:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 1211 .loc 1 208 3 is_stmt 1 view .LVU286 - 208:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - 1212 .loc 1 208 36 is_stmt 0 view .LVU287 - ARM GAS /tmp/ccg6eVgO.s page 49 - - - 1213 007e 4FF48052 mov r2, #4096 - 1214 0082 0692 str r2, [sp, #24] - 209:Core/Src/main.c **** - 1215 .loc 1 209 3 is_stmt 1 view .LVU288 - 209:Core/Src/main.c **** - 1216 .loc 1 209 36 is_stmt 0 view .LVU289 - 1217 0084 0793 str r3, [sp, #28] - 211:Core/Src/main.c **** { - 1218 .loc 1 211 3 is_stmt 1 view .LVU290 - 211:Core/Src/main.c **** { - 1219 .loc 1 211 7 is_stmt 0 view .LVU291 - 1220 0086 03A8 add r0, sp, #12 - 1221 0088 FFF7FEFF bl HAL_RCC_ClockConfig - 1222 .LVL76: - 211:Core/Src/main.c **** { - 1223 .loc 1 211 6 view .LVU292 - 1224 008c 20B9 cbnz r0, .L75 - 215:Core/Src/main.c **** - 1225 .loc 1 215 1 view .LVU293 - 1226 008e 15B0 add sp, sp, #84 - 1227 .LCFI29: - 1228 .cfi_remember_state - 1229 .cfi_def_cfa_offset 4 - 1230 @ sp needed - 1231 0090 5DF804FB ldr pc, [sp], #4 - 1232 .L74: - 1233 .LCFI30: - 1234 .cfi_restore_state - 199:Core/Src/main.c **** } - 1235 .loc 1 199 5 is_stmt 1 view .LVU294 - 1236 0094 FFF7FEFF bl Error_Handler - 1237 .LVL77: - 1238 .L75: - 213:Core/Src/main.c **** } - 1239 .loc 1 213 5 view .LVU295 - 1240 0098 FFF7FEFF bl Error_Handler - 1241 .LVL78: - 1242 .L77: - 1243 .align 2 - 1244 .L76: - 1245 009c 00380240 .word 1073887232 - 1246 00a0 00700040 .word 1073770496 - 1247 .cfi_endproc - 1248 .LFE145: - 1250 .section .rodata.main.str1.4,"aMS",%progbits,1 - 1251 .align 2 - 1252 .LC2: - 1253 0000 30782530 .ascii "0x%02X \015\012\000" - 1253 3258200D - 1253 0A00 - 1254 000a 0000 .align 2 - 1255 .LC3: - 1256 000c 4D616E75 .ascii "Manufacturer ID = \015\012\000" - 1256 66616374 - 1256 75726572 - 1256 20494420 - 1256 3D200D0A - ARM GAS /tmp/ccg6eVgO.s page 50 - - - 1257 0021 000000 .align 2 - 1258 .LC4: - 1259 0024 44657669 .ascii "Device ID = \015\012\000" - 1259 63652049 - 1259 44203D20 - 1259 0D0A00 - 1260 .section .text.main,"ax",%progbits - 1261 .align 1 - 1262 .global main - 1263 .syntax unified - 1264 .thumb - 1265 .thumb_func - 1266 .fpu fpv4-sp-d16 - 1268 main: - 1269 .LFB137: + 1339 .loc 2 962 3 view .LVU282 + 1340 .syntax unified + 1341 @ 962 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 1342 0000 72B6 cpsid i + 1343 @ 0 "" 2 + 1344 .thumb + 1345 .syntax unified + 1346 .L83: + 1347 .LBE16: + 1348 .LBE15: + 409:Core/Src/main.c **** while (1) + 1349 .loc 1 409 3 discriminator 1 view .LVU283 + 410:Core/Src/main.c **** { + 411:Core/Src/main.c **** } + 1350 .loc 1 411 3 discriminator 1 view .LVU284 + 409:Core/Src/main.c **** while (1) + 1351 .loc 1 409 9 discriminator 1 view .LVU285 + 1352 0002 FEE7 b .L83 + 1353 .cfi_endproc + 1354 .LFE156: + 1356 .section .text.MX_USART2_UART_Init,"ax",%progbits + 1357 .align 1 + 1358 .syntax unified + 1359 .thumb + 1360 .thumb_func + 1361 .fpu fpv4-sp-d16 + 1363 MX_USART2_UART_Init: + 1364 .LFB150: + 299:Core/Src/main.c **** huart2.Instance = USART2; + ARM GAS /tmp/ccPiCTjg.s page 53 + + + 1365 .loc 1 299 1 view -0 + 1366 .cfi_startproc + 1367 @ args = 0, pretend = 0, frame = 0 + 1368 @ frame_needed = 0, uses_anonymous_args = 0 + 1369 0000 08B5 push {r3, lr} + 1370 .LCFI34: + 1371 .cfi_def_cfa_offset 8 + 1372 .cfi_offset 3, -8 + 1373 .cfi_offset 14, -4 + 300:Core/Src/main.c **** huart2.Init.BaudRate = 115200; + 1374 .loc 1 300 3 view .LVU287 + 300:Core/Src/main.c **** huart2.Init.BaudRate = 115200; + 1375 .loc 1 300 19 is_stmt 0 view .LVU288 + 1376 0002 0A48 ldr r0, .L88 + 1377 0004 0A4B ldr r3, .L88+4 + 1378 0006 0360 str r3, [r0] + 301:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; + 1379 .loc 1 301 3 is_stmt 1 view .LVU289 + 301:Core/Src/main.c **** huart2.Init.WordLength = UART_WORDLENGTH_8B; + 1380 .loc 1 301 24 is_stmt 0 view .LVU290 + 1381 0008 4FF4E133 mov r3, #115200 + 1382 000c 4360 str r3, [r0, #4] + 302:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; + 1383 .loc 1 302 3 is_stmt 1 view .LVU291 + 302:Core/Src/main.c **** huart2.Init.StopBits = UART_STOPBITS_1; + 1384 .loc 1 302 26 is_stmt 0 view .LVU292 + 1385 000e 0023 movs r3, #0 + 1386 0010 8360 str r3, [r0, #8] + 303:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; + 1387 .loc 1 303 3 is_stmt 1 view .LVU293 + 303:Core/Src/main.c **** huart2.Init.Parity = UART_PARITY_NONE; + 1388 .loc 1 303 24 is_stmt 0 view .LVU294 + 1389 0012 C360 str r3, [r0, #12] + 304:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; + 1390 .loc 1 304 3 is_stmt 1 view .LVU295 + 304:Core/Src/main.c **** huart2.Init.Mode = UART_MODE_TX_RX; + 1391 .loc 1 304 22 is_stmt 0 view .LVU296 + 1392 0014 0361 str r3, [r0, #16] + 305:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 1393 .loc 1 305 3 is_stmt 1 view .LVU297 + 305:Core/Src/main.c **** huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 1394 .loc 1 305 20 is_stmt 0 view .LVU298 + 1395 0016 0C22 movs r2, #12 + 1396 0018 4261 str r2, [r0, #20] + 306:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; + 1397 .loc 1 306 3 is_stmt 1 view .LVU299 + 306:Core/Src/main.c **** huart2.Init.OverSampling = UART_OVERSAMPLING_16; + 1398 .loc 1 306 25 is_stmt 0 view .LVU300 + 1399 001a 8361 str r3, [r0, #24] + 307:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) + 1400 .loc 1 307 3 is_stmt 1 view .LVU301 + 307:Core/Src/main.c **** if (HAL_UART_Init(&huart2) != HAL_OK) + 1401 .loc 1 307 28 is_stmt 0 view .LVU302 + 1402 001c C361 str r3, [r0, #28] + 308:Core/Src/main.c **** { + 1403 .loc 1 308 3 is_stmt 1 view .LVU303 + 308:Core/Src/main.c **** { + ARM GAS /tmp/ccPiCTjg.s page 54 + + + 1404 .loc 1 308 7 is_stmt 0 view .LVU304 + 1405 001e FFF7FEFF bl HAL_UART_Init + 1406 .LVL104: + 308:Core/Src/main.c **** { + 1407 .loc 1 308 6 view .LVU305 + 1408 0022 00B9 cbnz r0, .L87 + 313:Core/Src/main.c **** + 1409 .loc 1 313 1 view .LVU306 + 1410 0024 08BD pop {r3, pc} + 1411 .L87: + 310:Core/Src/main.c **** } + 1412 .loc 1 310 5 is_stmt 1 view .LVU307 + 1413 0026 FFF7FEFF bl Error_Handler + 1414 .LVL105: + 1415 .L89: + 1416 002a 00BF .align 2 + 1417 .L88: + 1418 002c 00000000 .word .LANCHOR1 + 1419 0030 00440040 .word 1073759232 + 1420 .cfi_endproc + 1421 .LFE150: + 1423 .section .text.SystemClock_Config,"ax",%progbits + 1424 .align 1 + 1425 .global SystemClock_Config + 1426 .syntax unified + 1427 .thumb + 1428 .thumb_func + 1429 .fpu fpv4-sp-d16 + 1431 SystemClock_Config: + 1432 .LFB149: + 252:Core/Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 1433 .loc 1 252 1 view -0 + 1434 .cfi_startproc + 1435 @ args = 0, pretend = 0, frame = 80 + 1436 @ frame_needed = 0, uses_anonymous_args = 0 + 1437 0000 00B5 push {lr} + 1438 .LCFI35: + 1439 .cfi_def_cfa_offset 4 + 1440 .cfi_offset 14, -4 + 1441 0002 95B0 sub sp, sp, #84 + 1442 .LCFI36: + 1443 .cfi_def_cfa_offset 88 + 253:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 1444 .loc 1 253 3 view .LVU309 + 253:Core/Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 1445 .loc 1 253 22 is_stmt 0 view .LVU310 + 1446 0004 3022 movs r2, #48 + 1447 0006 0021 movs r1, #0 + 1448 0008 08A8 add r0, sp, #32 + 1449 000a FFF7FEFF bl memset + 1450 .LVL106: + 254:Core/Src/main.c **** + 1451 .loc 1 254 3 is_stmt 1 view .LVU311 + 254:Core/Src/main.c **** + 1452 .loc 1 254 22 is_stmt 0 view .LVU312 + 1453 000e 0023 movs r3, #0 + 1454 0010 0393 str r3, [sp, #12] + ARM GAS /tmp/ccPiCTjg.s page 55 + + + 1455 0012 0493 str r3, [sp, #16] + 1456 0014 0593 str r3, [sp, #20] + 1457 0016 0693 str r3, [sp, #24] + 1458 0018 0793 str r3, [sp, #28] + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1459 .loc 1 258 3 is_stmt 1 view .LVU313 + 1460 .LBB17: + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1461 .loc 1 258 3 view .LVU314 + 1462 001a 0193 str r3, [sp, #4] + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1463 .loc 1 258 3 view .LVU315 + 1464 001c 1F4A ldr r2, .L96 + 1465 001e 116C ldr r1, [r2, #64] + 1466 0020 41F08051 orr r1, r1, #268435456 + 1467 0024 1164 str r1, [r2, #64] + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1468 .loc 1 258 3 view .LVU316 + 1469 0026 126C ldr r2, [r2, #64] + 1470 0028 02F08052 and r2, r2, #268435456 + 1471 002c 0192 str r2, [sp, #4] + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1472 .loc 1 258 3 view .LVU317 + 1473 002e 019A ldr r2, [sp, #4] + 1474 .LBE17: + 258:Core/Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); + 1475 .loc 1 258 3 view .LVU318 + 259:Core/Src/main.c **** + 1476 .loc 1 259 3 view .LVU319 + 1477 .LBB18: + 259:Core/Src/main.c **** + 1478 .loc 1 259 3 view .LVU320 + 1479 0030 0293 str r3, [sp, #8] + 259:Core/Src/main.c **** + 1480 .loc 1 259 3 view .LVU321 + 1481 0032 1B49 ldr r1, .L96+4 + 1482 0034 0A68 ldr r2, [r1] + 1483 0036 22F44042 bic r2, r2, #49152 + 1484 003a 42F40042 orr r2, r2, #32768 + 1485 003e 0A60 str r2, [r1] + 259:Core/Src/main.c **** + 1486 .loc 1 259 3 view .LVU322 + 1487 0040 0A68 ldr r2, [r1] + 1488 0042 02F44042 and r2, r2, #49152 + 1489 0046 0292 str r2, [sp, #8] + 259:Core/Src/main.c **** + 1490 .loc 1 259 3 view .LVU323 + 1491 0048 029A ldr r2, [sp, #8] + 1492 .LBE18: + 259:Core/Src/main.c **** + 1493 .loc 1 259 3 view .LVU324 + 264:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 1494 .loc 1 264 3 view .LVU325 + 264:Core/Src/main.c **** RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 1495 .loc 1 264 36 is_stmt 0 view .LVU326 + 1496 004a 0221 movs r1, #2 + 1497 004c 0891 str r1, [sp, #32] + ARM GAS /tmp/ccPiCTjg.s page 56 + + + 265:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 1498 .loc 1 265 3 is_stmt 1 view .LVU327 + 265:Core/Src/main.c **** RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 1499 .loc 1 265 30 is_stmt 0 view .LVU328 + 1500 004e 0122 movs r2, #1 + 1501 0050 0B92 str r2, [sp, #44] + 266:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 1502 .loc 1 266 3 is_stmt 1 view .LVU329 + 266:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 1503 .loc 1 266 41 is_stmt 0 view .LVU330 + 1504 0052 1022 movs r2, #16 + 1505 0054 0C92 str r2, [sp, #48] + 267:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + 1506 .loc 1 267 3 is_stmt 1 view .LVU331 + 267:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + 1507 .loc 1 267 34 is_stmt 0 view .LVU332 + 1508 0056 0E91 str r1, [sp, #56] + 268:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; + 1509 .loc 1 268 3 is_stmt 1 view .LVU333 + 268:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 16; + 1510 .loc 1 268 35 is_stmt 0 view .LVU334 + 1511 0058 0F93 str r3, [sp, #60] + 269:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; + 1512 .loc 1 269 3 is_stmt 1 view .LVU335 + 269:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 336; + 1513 .loc 1 269 30 is_stmt 0 view .LVU336 + 1514 005a 1092 str r2, [sp, #64] + 270:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; + 1515 .loc 1 270 3 is_stmt 1 view .LVU337 + 270:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; + 1516 .loc 1 270 30 is_stmt 0 view .LVU338 + 1517 005c 4FF4A873 mov r3, #336 + 1518 0060 1193 str r3, [sp, #68] + 271:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; + 1519 .loc 1 271 3 is_stmt 1 view .LVU339 + 271:Core/Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 7; + 1520 .loc 1 271 30 is_stmt 0 view .LVU340 + 1521 0062 0423 movs r3, #4 + 1522 0064 1293 str r3, [sp, #72] + 272:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 1523 .loc 1 272 3 is_stmt 1 view .LVU341 + 272:Core/Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 1524 .loc 1 272 30 is_stmt 0 view .LVU342 + 1525 0066 0723 movs r3, #7 + 1526 0068 1393 str r3, [sp, #76] + 273:Core/Src/main.c **** { + 1527 .loc 1 273 3 is_stmt 1 view .LVU343 + 273:Core/Src/main.c **** { + 1528 .loc 1 273 7 is_stmt 0 view .LVU344 + 1529 006a 08A8 add r0, sp, #32 + 1530 006c FFF7FEFF bl HAL_RCC_OscConfig + 1531 .LVL107: + 273:Core/Src/main.c **** { + 1532 .loc 1 273 6 view .LVU345 + 1533 0070 80B9 cbnz r0, .L94 + 280:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 1534 .loc 1 280 3 is_stmt 1 view .LVU346 + ARM GAS /tmp/ccPiCTjg.s page 57 + + + 280:Core/Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 1535 .loc 1 280 31 is_stmt 0 view .LVU347 + 1536 0072 0F23 movs r3, #15 + 1537 0074 0393 str r3, [sp, #12] + 282:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 1538 .loc 1 282 3 is_stmt 1 view .LVU348 + 282:Core/Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 1539 .loc 1 282 34 is_stmt 0 view .LVU349 + 1540 0076 0221 movs r1, #2 + 1541 0078 0491 str r1, [sp, #16] + 283:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + 1542 .loc 1 283 3 is_stmt 1 view .LVU350 + 283:Core/Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + 1543 .loc 1 283 35 is_stmt 0 view .LVU351 + 1544 007a 0023 movs r3, #0 + 1545 007c 0593 str r3, [sp, #20] + 284:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 1546 .loc 1 284 3 is_stmt 1 view .LVU352 + 284:Core/Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 1547 .loc 1 284 36 is_stmt 0 view .LVU353 + 1548 007e 4FF48052 mov r2, #4096 + 1549 0082 0692 str r2, [sp, #24] + 285:Core/Src/main.c **** + 1550 .loc 1 285 3 is_stmt 1 view .LVU354 + 285:Core/Src/main.c **** + 1551 .loc 1 285 36 is_stmt 0 view .LVU355 + 1552 0084 0793 str r3, [sp, #28] + 287:Core/Src/main.c **** { + 1553 .loc 1 287 3 is_stmt 1 view .LVU356 + 287:Core/Src/main.c **** { + 1554 .loc 1 287 7 is_stmt 0 view .LVU357 + 1555 0086 03A8 add r0, sp, #12 + 1556 0088 FFF7FEFF bl HAL_RCC_ClockConfig + 1557 .LVL108: + 287:Core/Src/main.c **** { + 1558 .loc 1 287 6 view .LVU358 + 1559 008c 20B9 cbnz r0, .L95 + 291:Core/Src/main.c **** + 1560 .loc 1 291 1 view .LVU359 + 1561 008e 15B0 add sp, sp, #84 + 1562 .LCFI37: + 1563 .cfi_remember_state + 1564 .cfi_def_cfa_offset 4 + 1565 @ sp needed + 1566 0090 5DF804FB ldr pc, [sp], #4 + 1567 .L94: + 1568 .LCFI38: + 1569 .cfi_restore_state + 275:Core/Src/main.c **** } + 1570 .loc 1 275 5 is_stmt 1 view .LVU360 + 1571 0094 FFF7FEFF bl Error_Handler + 1572 .LVL109: + 1573 .L95: + 289:Core/Src/main.c **** } + 1574 .loc 1 289 5 view .LVU361 + 1575 0098 FFF7FEFF bl Error_Handler + 1576 .LVL110: + ARM GAS /tmp/ccPiCTjg.s page 58 + + + 1577 .L97: + 1578 .align 2 + 1579 .L96: + 1580 009c 00380240 .word 1073887232 + 1581 00a0 00700040 .word 1073770496 + 1582 .cfi_endproc + 1583 .LFE149: + 1585 .section .rodata.main.str1.4,"aMS",%progbits,1 + 1586 .align 2 + 1587 .LC6: + 1588 0000 30782530 .ascii "0x%02X \015\012\000" + 1588 3258200D + 1588 0A00 + 1589 000a 0000 .align 2 + 1590 .LC7: + 1591 000c 3D3D3D3D .ascii "==========================================\015\012\000" + 1591 3D3D3D3D + 1591 3D3D3D3D + 1591 3D3D3D3D + 1591 3D3D3D3D + 1592 0039 000000 .align 2 + 1593 .LC8: + 1594 003c 4D616E75 .ascii "Manufacturer ID = \015\012\000" + 1594 66616374 + 1594 75726572 + 1594 20494420 + 1594 3D200D0A + 1595 0051 000000 .align 2 + 1596 .LC9: + 1597 0054 44657669 .ascii "Device ID = \015\012\000" + 1597 63652049 + 1597 44203D20 + 1597 0D0A00 + 1598 0063 00 .align 2 + 1599 .LC10: + 1600 0064 48656C6C .ascii "Hello welcome to the EEPROM programmer! What would " + 1600 6F207765 + 1600 6C636F6D + 1600 6520746F + 1600 20746865 + 1601 0097 796F7520 .ascii "you like to do?\015\012\000" + 1601 6C696B65 + 1601 20746F20 + 1601 646F3F0D + 1601 0A00 + 1602 00a9 000000 .align 2 + 1603 .LC11: + 1604 00ac 5B315D20 .ascii "[1] Dump Rom as char\015\012\000" + 1604 44756D70 + 1604 20526F6D + 1604 20617320 + 1604 63686172 + 1605 00c3 00 .align 2 + 1606 .LC12: + 1607 00c4 5B325D20 .ascii "[2] Erase chip\015\012\000" + 1607 45726173 + 1607 65206368 + ARM GAS /tmp/ccPiCTjg.s page 59 + + + 1607 69700D0A + 1607 00 + 1608 00d5 000000 .align 2 + 1609 .LC13: + 1610 00d8 5B335D20 .ascii "[3] Program chip via UART\015\012\000" + 1610 50726F67 + 1610 72616D20 + 1610 63686970 + 1610 20766961 + 1611 .align 2 + 1612 .LC14: + 1613 00f4 44756D70 .ascii "Dumping ROM...\015\012\000" + 1613 696E6720 + 1613 524F4D2E + 1613 2E2E0D0A + 1613 00 + 1614 0105 000000 .align 2 + 1615 .LC15: + 1616 0108 45726173 .ascii "Erasing Chip...\015\012\000" + 1616 696E6720 + 1616 43686970 + 1616 2E2E2E0D + 1616 0A00 + 1617 011a 0000 .align 2 + 1618 .LC16: + 1619 011c 4C61756E .ascii "Launching programming sequence...\015\012\000" + 1619 6368696E + 1619 67207072 + 1619 6F677261 + 1619 6D6D696E + 1620 .align 2 + 1621 .LC17: + 1622 0140 496E7661 .ascii "Invalid input!\015\012\000" + 1622 6C696420 + 1622 696E7075 + 1622 74210D0A + 1622 00 + 1623 .section .text.main,"ax",%progbits + 1624 .align 1 + 1625 .global main + 1626 .syntax unified + 1627 .thumb + 1628 .thumb_func + 1629 .fpu fpv4-sp-d16 + 1631 main: + 1632 .LFB137: 40:Core/Src/main.c **** /* MCU Configuration--------------------------------------------------------*/ - 1270 .loc 1 40 1 view -0 - 1271 .cfi_startproc - 1272 @ args = 0, pretend = 0, frame = 8 - 1273 @ frame_needed = 0, uses_anonymous_args = 0 - 1274 0000 70B5 push {r4, r5, r6, lr} - 1275 .LCFI31: - 1276 .cfi_def_cfa_offset 16 - 1277 .cfi_offset 4, -16 - 1278 .cfi_offset 5, -12 - 1279 .cfi_offset 6, -8 - 1280 .cfi_offset 14, -4 - 1281 0002 82B0 sub sp, sp, #8 - 1282 .LCFI32: - 1283 .cfi_def_cfa_offset 24 + 1633 .loc 1 40 1 view -0 + 1634 .cfi_startproc + 1635 @ args = 0, pretend = 0, frame = 16 + 1636 @ frame_needed = 0, uses_anonymous_args = 0 + 1637 0000 70B5 push {r4, r5, r6, lr} + 1638 .LCFI39: + 1639 .cfi_def_cfa_offset 16 + 1640 .cfi_offset 4, -16 + 1641 .cfi_offset 5, -12 + 1642 .cfi_offset 6, -8 + ARM GAS /tmp/ccPiCTjg.s page 60 + + + 1643 .cfi_offset 14, -4 + 1644 0002 84B0 sub sp, sp, #16 + 1645 .LCFI40: + 1646 .cfi_def_cfa_offset 32 44:Core/Src/main.c **** - 1284 .loc 1 44 3 view .LVU297 - 1285 0004 FFF7FEFF bl HAL_Init - 1286 .LVL79: + 1647 .loc 1 44 3 view .LVU363 + 1648 0004 FFF7FEFF bl HAL_Init + 1649 .LVL111: 47:Core/Src/main.c **** - 1287 .loc 1 47 3 view .LVU298 - 1288 0008 FFF7FEFF bl SystemClock_Config - 1289 .LVL80: + 1650 .loc 1 47 3 view .LVU364 + 1651 0008 FFF7FEFF bl SystemClock_Config + 1652 .LVL112: 50:Core/Src/main.c **** MX_USART2_UART_Init(); - 1290 .loc 1 50 3 view .LVU299 - 1291 000c FFF7FEFF bl MX_GPIO_Init - 1292 .LVL81: + 1653 .loc 1 50 3 view .LVU365 + 1654 000c FFF7FEFF bl MX_GPIO_Init + 1655 .LVL113: 51:Core/Src/main.c **** - 1293 .loc 1 51 3 view .LVU300 - 1294 0010 FFF7FEFF bl MX_USART2_UART_Init - 1295 .LVL82: + 1656 .loc 1 51 3 view .LVU366 + 1657 0010 FFF7FEFF bl MX_USART2_UART_Init + 1658 .LVL114: 53:Core/Src/main.c **** Address_Pins_Init(); - 1296 .loc 1 53 3 view .LVU301 - 1297 0014 0020 movs r0, #0 - 1298 0016 FFF7FEFF bl Data_Pins_Init - 1299 .LVL83: + 1659 .loc 1 53 3 view .LVU367 + 1660 0014 0020 movs r0, #0 + 1661 0016 FFF7FEFF bl Data_Pins_Init + 1662 .LVL115: 54:Core/Src/main.c **** Command_Pins_Init(); - 1300 .loc 1 54 3 view .LVU302 - 1301 001a FFF7FEFF bl Address_Pins_Init - 1302 .LVL84: + 1663 .loc 1 54 3 view .LVU368 + 1664 001a FFF7FEFF bl Address_Pins_Init + 1665 .LVL116: 55:Core/Src/main.c **** - 1303 .loc 1 55 3 view .LVU303 - ARM GAS /tmp/ccg6eVgO.s page 51 - - - 1304 001e FFF7FEFF bl Command_Pins_Init - 1305 .LVL85: + 1666 .loc 1 55 3 view .LVU369 + 1667 001e FFF7FEFF bl Command_Pins_Init + 1668 .LVL117: 57:Core/Src/main.c **** Enter_Device_ID(&man_id, &dev_id); - 1306 .loc 1 57 3 view .LVU304 + 1669 .loc 1 57 3 view .LVU370 58:Core/Src/main.c **** - 1307 .loc 1 58 3 view .LVU305 - 1308 0022 6946 mov r1, sp - 1309 0024 01A8 add r0, sp, #4 - 1310 0026 FFF7FEFF bl Enter_Device_ID - 1311 .LVL86: + 1670 .loc 1 58 3 view .LVU371 + 1671 0022 02A9 add r1, sp, #8 + 1672 0024 03A8 add r0, sp, #12 + 1673 0026 FFF7FEFF bl Enter_Device_ID + 1674 .LVL118: 60:Core/Src/main.c **** char *device = (char*)malloc(13 * sizeof(char)); - 1312 .loc 1 60 3 view .LVU306 + 1675 .loc 1 60 3 view .LVU372 60:Core/Src/main.c **** char *device = (char*)malloc(13 * sizeof(char)); - 1313 .loc 1 60 31 is_stmt 0 view .LVU307 - 1314 002a 0D20 movs r0, #13 - 1315 002c FFF7FEFF bl malloc - 1316 .LVL87: - 1317 0030 0546 mov r5, r0 - 1318 .LVL88: + 1676 .loc 1 60 31 is_stmt 0 view .LVU373 + 1677 002a 0D20 movs r0, #13 + 1678 002c FFF7FEFF bl malloc + 1679 .LVL119: + 1680 0030 0546 mov r5, r0 + 1681 .LVL120: 61:Core/Src/main.c **** sprintf(manufacturer, "0x%02X \r\n", man_id); - 1319 .loc 1 61 3 is_stmt 1 view .LVU308 + 1682 .loc 1 61 3 is_stmt 1 view .LVU374 61:Core/Src/main.c **** sprintf(manufacturer, "0x%02X \r\n", man_id); - 1320 .loc 1 61 25 is_stmt 0 view .LVU309 - 1321 0032 0D20 movs r0, #13 - 1322 .LVL89: + 1683 .loc 1 61 25 is_stmt 0 view .LVU375 + 1684 0032 0D20 movs r0, #13 + 1685 .LVL121: 61:Core/Src/main.c **** sprintf(manufacturer, "0x%02X \r\n", man_id); - 1323 .loc 1 61 25 view .LVU310 - 1324 0034 FFF7FEFF bl malloc - 1325 .LVL90: - 1326 0038 0446 mov r4, r0 - 1327 .LVL91: + ARM GAS /tmp/ccPiCTjg.s page 61 + + + 1686 .loc 1 61 25 view .LVU376 + 1687 0034 FFF7FEFF bl malloc + 1688 .LVL122: + 1689 0038 0446 mov r4, r0 + 1690 .LVL123: 62:Core/Src/main.c **** sprintf(device, "0x%02X \r\n", dev_id); - 1328 .loc 1 62 3 is_stmt 1 view .LVU311 - 1329 003a 0C4E ldr r6, .L81 - 1330 003c 019A ldr r2, [sp, #4] - 1331 003e 3146 mov r1, r6 - 1332 0040 2846 mov r0, r5 - 1333 .LVL92: + 1691 .loc 1 62 3 is_stmt 1 view .LVU377 + 1692 003a 284E ldr r6, .L106 + 1693 003c 039A ldr r2, [sp, #12] + 1694 003e 3146 mov r1, r6 + 1695 0040 2846 mov r0, r5 + 1696 .LVL124: 62:Core/Src/main.c **** sprintf(device, "0x%02X \r\n", dev_id); - 1334 .loc 1 62 3 is_stmt 0 view .LVU312 - 1335 0042 FFF7FEFF bl sprintf - 1336 .LVL93: + 1697 .loc 1 62 3 is_stmt 0 view .LVU378 + 1698 0042 FFF7FEFF bl sprintf + 1699 .LVL125: 63:Core/Src/main.c **** - 1337 .loc 1 63 3 is_stmt 1 view .LVU313 - 1338 0046 009A ldr r2, [sp] - 1339 0048 3146 mov r1, r6 - 1340 004a 2046 mov r0, r4 - 1341 004c FFF7FEFF bl sprintf - 1342 .LVL94: - 65:Core/Src/main.c **** debug_print(manufacturer); - 1343 .loc 1 65 3 view .LVU314 - 1344 0050 0748 ldr r0, .L81+4 - 1345 0052 FFF7FEFF bl debug_print - 1346 .LVL95: - 66:Core/Src/main.c **** debug_print("Device ID = \r\n"); - 1347 .loc 1 66 3 view .LVU315 - 1348 0056 2846 mov r0, r5 - ARM GAS /tmp/ccg6eVgO.s page 52 - - - 1349 0058 FFF7FEFF bl debug_print - 1350 .LVL96: - 67:Core/Src/main.c **** debug_print(device); - 1351 .loc 1 67 3 view .LVU316 - 1352 005c 0548 ldr r0, .L81+8 - 1353 005e FFF7FEFF bl debug_print - 1354 .LVL97: - 68:Core/Src/main.c **** - 1355 .loc 1 68 3 view .LVU317 - 1356 0062 2046 mov r0, r4 - 1357 0064 FFF7FEFF bl debug_print - 1358 .LVL98: - 1359 .L79: - 72:Core/Src/main.c **** { - 1360 .loc 1 72 3 discriminator 1 view .LVU318 - 75:Core/Src/main.c **** - 1361 .loc 1 75 3 discriminator 1 view .LVU319 - 72:Core/Src/main.c **** { - 1362 .loc 1 72 9 discriminator 1 view .LVU320 - 1363 0068 FEE7 b .L79 - 1364 .L82: - 1365 006a 00BF .align 2 - 1366 .L81: - 1367 006c 00000000 .word .LC2 - 1368 0070 0C000000 .word .LC3 - 1369 0074 24000000 .word .LC4 - 1370 .cfi_endproc - 1371 .LFE137: - 1373 .global huart2 - 1374 .section .rodata - 1375 .align 2 - 1376 .set .LANCHOR0,. + 0 - 1377 .LC0: - 1378 0000 01000000 .word 1 - 1379 0004 02000000 .word 2 - 1380 0008 04000000 .word 4 - 1381 000c 08000000 .word 8 - 1382 0010 10000000 .word 16 - 1383 0014 20000000 .word 32 - 1384 0018 40000000 .word 64 - 1385 001c 80000000 .word 128 - 1386 0020 00010000 .word 256 - 1387 0024 00020000 .word 512 - 1388 0028 00040000 .word 1024 - 1389 002c 00080000 .word 2048 - 1390 0030 00100000 .word 4096 - 1391 0034 00200000 .word 8192 - 1392 0038 01000000 .word 1 - 1393 003c 02000000 .word 2 - 1394 0040 04000000 .word 4 - 1395 0044 08000000 .word 8 - 1396 0048 10000000 .word 16 - 1397 .LC1: - 1398 004c 01000000 .word 1 - 1399 0050 02000000 .word 2 - 1400 0054 00080000 .word 2048 - 1401 0058 00100000 .word 4096 - ARM GAS /tmp/ccg6eVgO.s page 53 - - - 1402 005c 10000000 .word 16 - 1403 0060 20000000 .word 32 - 1404 0064 40000000 .word 64 - 1405 0068 80000000 .word 128 - 1406 .section .bss.huart2,"aw",%nobits - 1407 .align 2 - 1408 .set .LANCHOR1,. + 0 - 1411 huart2: - 1412 0000 00000000 .space 72 - 1412 00000000 - 1412 00000000 - 1412 00000000 - 1412 00000000 - 1413 .text - 1414 .Letext0: - 1415 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" - 1416 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h" - 1417 .file 5 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" - 1418 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h" - 1419 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h" - 1420 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h" - 1421 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h" - 1422 .file 10 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" - 1423 .file 11 "/usr/include/newlib/string.h" - 1424 .file 12 "" - 1425 .file 13 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" - 1426 .file 14 "/usr/include/newlib/stdlib.h" - 1427 .file 15 "/usr/include/newlib/stdio.h" - ARM GAS /tmp/ccg6eVgO.s page 54 + 1700 .loc 1 63 3 is_stmt 1 view .LVU379 + 1701 0046 029A ldr r2, [sp, #8] + 1702 0048 3146 mov r1, r6 + 1703 004a 2046 mov r0, r4 + 1704 004c FFF7FEFF bl sprintf + 1705 .LVL126: + 65:Core/Src/main.c **** debug_print("Manufacturer ID = \r\n"); + 1706 .loc 1 65 3 view .LVU380 + 1707 0050 234E ldr r6, .L106+4 + 1708 0052 3046 mov r0, r6 + 1709 0054 FFF7FEFF bl debug_print + 1710 .LVL127: + 66:Core/Src/main.c **** debug_print(manufacturer); + 1711 .loc 1 66 3 view .LVU381 + 1712 0058 2248 ldr r0, .L106+8 + 1713 005a FFF7FEFF bl debug_print + 1714 .LVL128: + 67:Core/Src/main.c **** debug_print("Device ID = \r\n"); + 1715 .loc 1 67 3 view .LVU382 + 1716 005e 2846 mov r0, r5 + 1717 0060 FFF7FEFF bl debug_print + 1718 .LVL129: + 68:Core/Src/main.c **** debug_print(device); + 1719 .loc 1 68 3 view .LVU383 + 1720 0064 2048 ldr r0, .L106+12 + 1721 0066 FFF7FEFF bl debug_print + 1722 .LVL130: + 69:Core/Src/main.c **** debug_print("==========================================\r\n"); + 1723 .loc 1 69 3 view .LVU384 + 1724 006a 2046 mov r0, r4 + 1725 006c FFF7FEFF bl debug_print + 1726 .LVL131: + 70:Core/Src/main.c **** + 1727 .loc 1 70 3 view .LVU385 + 1728 0070 3046 mov r0, r6 + 1729 0072 FFF7FEFF bl debug_print + 1730 .LVL132: + 1731 0076 05E0 b .L103 + 1732 .L105: + 1733 .LBB19: + ARM GAS /tmp/ccPiCTjg.s page 62 + + + 85:Core/Src/main.c **** Dump_Flash_UART(1); + 1734 .loc 1 85 7 view .LVU386 + 1735 0078 1C48 ldr r0, .L106+16 + 1736 007a FFF7FEFF bl debug_print + 1737 .LVL133: + 86:Core/Src/main.c **** break; + 1738 .loc 1 86 7 view .LVU387 + 1739 007e 0120 movs r0, #1 + 1740 0080 FFF7FEFF bl Dump_Flash_UART + 1741 .LVL134: + 87:Core/Src/main.c **** case 0x32: + 1742 .loc 1 87 7 view .LVU388 + 1743 .L103: + 1744 .LBE19: + 73:Core/Src/main.c **** { + 1745 .loc 1 73 3 view .LVU389 + 1746 .LBB20: + 75:Core/Src/main.c **** debug_print("[1] Dump Rom as char\r\n"); + 1747 .loc 1 75 5 view .LVU390 + 1748 0084 1A48 ldr r0, .L106+20 + 1749 0086 FFF7FEFF bl debug_print + 1750 .LVL135: + 76:Core/Src/main.c **** debug_print("[2] Erase chip\r\n"); + 1751 .loc 1 76 5 view .LVU391 + 1752 008a 1A48 ldr r0, .L106+24 + 1753 008c FFF7FEFF bl debug_print + 1754 .LVL136: + 77:Core/Src/main.c **** debug_print("[3] Program chip via UART\r\n"); + 1755 .loc 1 77 5 view .LVU392 + 1756 0090 1948 ldr r0, .L106+28 + 1757 0092 FFF7FEFF bl debug_print + 1758 .LVL137: + 78:Core/Src/main.c **** uint8_t resp; + 1759 .loc 1 78 5 view .LVU393 + 1760 0096 1948 ldr r0, .L106+32 + 1761 0098 FFF7FEFF bl debug_print + 1762 .LVL138: + 79:Core/Src/main.c **** HAL_UART_Receive(&huart2, &resp, 1, HAL_MAX_DELAY); + 1763 .loc 1 79 5 view .LVU394 + 80:Core/Src/main.c **** + 1764 .loc 1 80 5 view .LVU395 + 1765 009c 4FF0FF33 mov r3, #-1 + 1766 00a0 0122 movs r2, #1 + 1767 00a2 0DF10701 add r1, sp, #7 + 1768 00a6 1648 ldr r0, .L106+36 + 1769 00a8 FFF7FEFF bl HAL_UART_Receive + 1770 .LVL139: + 82:Core/Src/main.c **** { + 1771 .loc 1 82 5 view .LVU396 + 1772 00ac 9DF80730 ldrb r3, [sp, #7] @ zero_extendqisi2 + 1773 00b0 322B cmp r3, #50 + 1774 00b2 07D0 beq .L99 + 1775 00b4 332B cmp r3, #51 + 1776 00b6 0BD0 beq .L100 + 1777 00b8 312B cmp r3, #49 + 1778 00ba DDD0 beq .L105 + 97:Core/Src/main.c **** break; + ARM GAS /tmp/ccPiCTjg.s page 63 + + + 1779 .loc 1 97 7 view .LVU397 + 1780 00bc 1148 ldr r0, .L106+40 + 1781 00be FFF7FEFF bl debug_print + 1782 .LVL140: + 98:Core/Src/main.c **** } + 1783 .loc 1 98 7 view .LVU398 + 1784 .LBE20: + 73:Core/Src/main.c **** { + 1785 .loc 1 73 9 view .LVU399 + 74:Core/Src/main.c **** debug_print("Hello welcome to the EEPROM programmer! What would you like to do?\r\n"); + 1786 .loc 1 74 3 is_stmt 0 view .LVU400 + 1787 00c2 DFE7 b .L103 + 1788 .L99: + 1789 .LBB21: + 89:Core/Src/main.c **** Chip_Erase(); + 1790 .loc 1 89 7 is_stmt 1 view .LVU401 + 1791 00c4 1048 ldr r0, .L106+44 + 1792 00c6 FFF7FEFF bl debug_print + 1793 .LVL141: + 90:Core/Src/main.c **** break; + 1794 .loc 1 90 7 view .LVU402 + 1795 00ca FFF7FEFF bl Chip_Erase + 1796 .LVL142: + 91:Core/Src/main.c **** case 0x33: + 1797 .loc 1 91 7 view .LVU403 + 1798 00ce D9E7 b .L103 + 1799 .L100: + 93:Core/Src/main.c **** Flash_From_UART(); + 1800 .loc 1 93 7 view .LVU404 + 1801 00d0 0E48 ldr r0, .L106+48 + 1802 00d2 FFF7FEFF bl debug_print + 1803 .LVL143: + 94:Core/Src/main.c **** break; + 1804 .loc 1 94 7 view .LVU405 + 1805 00d6 FFF7FEFF bl Flash_From_UART + 1806 .LVL144: + 95:Core/Src/main.c **** default: + 1807 .loc 1 95 7 view .LVU406 + 1808 00da D3E7 b .L103 + 1809 .L107: + 1810 .align 2 + 1811 .L106: + 1812 00dc 00000000 .word .LC6 + 1813 00e0 0C000000 .word .LC7 + 1814 00e4 3C000000 .word .LC8 + 1815 00e8 54000000 .word .LC9 + 1816 00ec F4000000 .word .LC14 + 1817 00f0 64000000 .word .LC10 + 1818 00f4 AC000000 .word .LC11 + 1819 00f8 C4000000 .word .LC12 + 1820 00fc D8000000 .word .LC13 + 1821 0100 00000000 .word .LANCHOR1 + 1822 0104 40010000 .word .LC17 + 1823 0108 08010000 .word .LC15 + 1824 010c 1C010000 .word .LC16 + 1825 .LBE21: + 1826 .cfi_endproc + ARM GAS /tmp/ccPiCTjg.s page 64 + + + 1827 .LFE137: + 1829 .global huart2 + 1830 .section .rodata + 1831 .align 2 + 1832 .set .LANCHOR0,. + 0 + 1833 .LC0: + 1834 0000 01000000 .word 1 + 1835 0004 02000000 .word 2 + 1836 0008 04000000 .word 4 + 1837 000c 08000000 .word 8 + 1838 0010 10000000 .word 16 + 1839 0014 20000000 .word 32 + 1840 0018 40000000 .word 64 + 1841 001c 80000000 .word 128 + 1842 0020 00010000 .word 256 + 1843 0024 00020000 .word 512 + 1844 0028 00040000 .word 1024 + 1845 002c 00080000 .word 2048 + 1846 0030 00100000 .word 4096 + 1847 0034 00200000 .word 8192 + 1848 0038 01000000 .word 1 + 1849 003c 02000000 .word 2 + 1850 0040 04000000 .word 4 + 1851 0044 08000000 .word 8 + 1852 0048 10000000 .word 16 + 1853 .LC1: + 1854 004c 01000000 .word 1 + 1855 0050 02000000 .word 2 + 1856 0054 00080000 .word 2048 + 1857 0058 00100000 .word 4096 + 1858 005c 10000000 .word 16 + 1859 0060 20000000 .word 32 + 1860 0064 40000000 .word 64 + 1861 0068 80000000 .word 128 + 1862 .section .bss.huart2,"aw",%nobits + 1863 .align 2 + 1864 .set .LANCHOR1,. + 0 + 1867 huart2: + 1868 0000 00000000 .space 72 + 1868 00000000 + 1868 00000000 + 1868 00000000 + 1868 00000000 + 1869 .text + 1870 .Letext0: + 1871 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1872 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h" + 1873 .file 5 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" + 1874 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h" + 1875 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h" + 1876 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h" + 1877 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h" + 1878 .file 10 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" + 1879 .file 11 "/usr/include/newlib/string.h" + 1880 .file 12 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" + 1881 .file 13 "/usr/include/newlib/stdio.h" + 1882 .file 14 "" + ARM GAS /tmp/ccPiCTjg.s page 65 + + + 1883 .file 15 "/usr/include/newlib/stdlib.h" + ARM GAS /tmp/ccPiCTjg.s page 66 DEFINED SYMBOLS *ABS*:0000000000000000 main.c - /tmp/ccg6eVgO.s:18 .text.MX_GPIO_Init:0000000000000000 $t - /tmp/ccg6eVgO.s:25 .text.MX_GPIO_Init:0000000000000000 MX_GPIO_Init - /tmp/ccg6eVgO.s:111 .text.MX_GPIO_Init:000000000000005c $d - /tmp/ccg6eVgO.s:116 .text.Write_Address:0000000000000000 $t - /tmp/ccg6eVgO.s:123 .text.Write_Address:0000000000000000 Write_Address - /tmp/ccg6eVgO.s:236 .text.Write_Address:0000000000000084 $d - /tmp/ccg6eVgO.s:243 .text.Write_Command_Pins:0000000000000000 $t - /tmp/ccg6eVgO.s:250 .text.Write_Command_Pins:0000000000000000 Write_Command_Pins - /tmp/ccg6eVgO.s:305 .text.Write_Command_Pins:000000000000003c $d - /tmp/ccg6eVgO.s:310 .text.Data_Pins_Init:0000000000000000 $t - /tmp/ccg6eVgO.s:317 .text.Data_Pins_Init:0000000000000000 Data_Pins_Init - /tmp/ccg6eVgO.s:385 .text.Data_Pins_Init:0000000000000038 $d - /tmp/ccg6eVgO.s:390 .text.Receive_Data:0000000000000000 $t - /tmp/ccg6eVgO.s:397 .text.Receive_Data:0000000000000000 Receive_Data - /tmp/ccg6eVgO.s:485 .text.Receive_Data:0000000000000048 $d - /tmp/ccg6eVgO.s:491 .text.Write_Data:0000000000000000 $t - /tmp/ccg6eVgO.s:498 .text.Write_Data:0000000000000000 Write_Data - /tmp/ccg6eVgO.s:588 .text.Write_Data:000000000000005c $d - /tmp/ccg6eVgO.s:594 .text.Write_Command:0000000000000000 $t - /tmp/ccg6eVgO.s:601 .text.Write_Command:0000000000000000 Write_Command - /tmp/ccg6eVgO.s:667 .text.Flash_ReadByte:0000000000000000 $t - /tmp/ccg6eVgO.s:674 .text.Flash_ReadByte:0000000000000000 Flash_ReadByte - /tmp/ccg6eVgO.s:723 .text.Enter_Device_ID:0000000000000000 $t - /tmp/ccg6eVgO.s:730 .text.Enter_Device_ID:0000000000000000 Enter_Device_ID - /tmp/ccg6eVgO.s:792 .text.Address_Pins_Init:0000000000000000 $t - /tmp/ccg6eVgO.s:799 .text.Address_Pins_Init:0000000000000000 Address_Pins_Init - /tmp/ccg6eVgO.s:873 .text.Address_Pins_Init:0000000000000044 $d - /tmp/ccg6eVgO.s:879 .text.Command_Pins_Init:0000000000000000 $t - /tmp/ccg6eVgO.s:886 .text.Command_Pins_Init:0000000000000000 Command_Pins_Init - /tmp/ccg6eVgO.s:934 .text.Command_Pins_Init:000000000000002c $d - /tmp/ccg6eVgO.s:939 .text.debug_print:0000000000000000 $t - /tmp/ccg6eVgO.s:946 .text.debug_print:0000000000000000 debug_print - /tmp/ccg6eVgO.s:978 .text.debug_print:0000000000000018 $d - /tmp/ccg6eVgO.s:983 .text.Error_Handler:0000000000000000 $t - /tmp/ccg6eVgO.s:990 .text.Error_Handler:0000000000000000 Error_Handler - /tmp/ccg6eVgO.s:1022 .text.MX_USART2_UART_Init:0000000000000000 $t - /tmp/ccg6eVgO.s:1028 .text.MX_USART2_UART_Init:0000000000000000 MX_USART2_UART_Init - /tmp/ccg6eVgO.s:1083 .text.MX_USART2_UART_Init:000000000000002c $d - /tmp/ccg6eVgO.s:1089 .text.SystemClock_Config:0000000000000000 $t - /tmp/ccg6eVgO.s:1096 .text.SystemClock_Config:0000000000000000 SystemClock_Config - /tmp/ccg6eVgO.s:1245 .text.SystemClock_Config:000000000000009c $d - /tmp/ccg6eVgO.s:1251 .rodata.main.str1.4:0000000000000000 $d - /tmp/ccg6eVgO.s:1261 .text.main:0000000000000000 $t - /tmp/ccg6eVgO.s:1268 .text.main:0000000000000000 main - /tmp/ccg6eVgO.s:1367 .text.main:000000000000006c $d - /tmp/ccg6eVgO.s:1411 .bss.huart2:0000000000000000 huart2 - /tmp/ccg6eVgO.s:1375 .rodata:0000000000000000 $d - /tmp/ccg6eVgO.s:1407 .bss.huart2:0000000000000000 $d + /tmp/ccPiCTjg.s:18 .text.MX_GPIO_Init:0000000000000000 $t + /tmp/ccPiCTjg.s:25 .text.MX_GPIO_Init:0000000000000000 MX_GPIO_Init + /tmp/ccPiCTjg.s:111 .text.MX_GPIO_Init:000000000000005c $d + /tmp/ccPiCTjg.s:116 .text.Write_Address:0000000000000000 $t + /tmp/ccPiCTjg.s:123 .text.Write_Address:0000000000000000 Write_Address + /tmp/ccPiCTjg.s:236 .text.Write_Address:0000000000000084 $d + /tmp/ccPiCTjg.s:243 .text.Write_Command_Pins:0000000000000000 $t + /tmp/ccPiCTjg.s:250 .text.Write_Command_Pins:0000000000000000 Write_Command_Pins + /tmp/ccPiCTjg.s:305 .text.Write_Command_Pins:000000000000003c $d + /tmp/ccPiCTjg.s:310 .text.Data_Pins_Init:0000000000000000 $t + /tmp/ccPiCTjg.s:317 .text.Data_Pins_Init:0000000000000000 Data_Pins_Init + /tmp/ccPiCTjg.s:385 .text.Data_Pins_Init:0000000000000038 $d + /tmp/ccPiCTjg.s:390 .text.Receive_Data:0000000000000000 $t + /tmp/ccPiCTjg.s:397 .text.Receive_Data:0000000000000000 Receive_Data + /tmp/ccPiCTjg.s:485 .text.Receive_Data:0000000000000048 $d + /tmp/ccPiCTjg.s:491 .text.Write_Data:0000000000000000 $t + /tmp/ccPiCTjg.s:498 .text.Write_Data:0000000000000000 Write_Data + /tmp/ccPiCTjg.s:588 .text.Write_Data:000000000000005c $d + /tmp/ccPiCTjg.s:594 .text.Write_Command:0000000000000000 $t + /tmp/ccPiCTjg.s:601 .text.Write_Command:0000000000000000 Write_Command + /tmp/ccPiCTjg.s:667 .text.Chip_Erase:0000000000000000 $t + /tmp/ccPiCTjg.s:674 .text.Chip_Erase:0000000000000000 Chip_Erase + /tmp/ccPiCTjg.s:725 .text.Chip_Program_Byte:0000000000000000 $t + /tmp/ccPiCTjg.s:732 .text.Chip_Program_Byte:0000000000000000 Chip_Program_Byte + /tmp/ccPiCTjg.s:780 .text.Flash_ReadByte:0000000000000000 $t + /tmp/ccPiCTjg.s:787 .text.Flash_ReadByte:0000000000000000 Flash_ReadByte + /tmp/ccPiCTjg.s:836 .text.Enter_Device_ID:0000000000000000 $t + /tmp/ccPiCTjg.s:843 .text.Enter_Device_ID:0000000000000000 Enter_Device_ID + /tmp/ccPiCTjg.s:905 .rodata.Dump_Flash_UART.str1.4:0000000000000000 $d + /tmp/ccPiCTjg.s:912 .text.Dump_Flash_UART:0000000000000000 $t + /tmp/ccPiCTjg.s:919 .text.Dump_Flash_UART:0000000000000000 Dump_Flash_UART + /tmp/ccPiCTjg.s:1034 .text.Dump_Flash_UART:000000000000007c $d + /tmp/ccPiCTjg.s:1041 .text.Address_Pins_Init:0000000000000000 $t + /tmp/ccPiCTjg.s:1048 .text.Address_Pins_Init:0000000000000000 Address_Pins_Init + /tmp/ccPiCTjg.s:1122 .text.Address_Pins_Init:0000000000000044 $d + /tmp/ccPiCTjg.s:1128 .text.Command_Pins_Init:0000000000000000 $t + /tmp/ccPiCTjg.s:1135 .text.Command_Pins_Init:0000000000000000 Command_Pins_Init + /tmp/ccPiCTjg.s:1183 .text.Command_Pins_Init:000000000000002c $d + /tmp/ccPiCTjg.s:1188 .text.debug_print:0000000000000000 $t + /tmp/ccPiCTjg.s:1195 .text.debug_print:0000000000000000 debug_print + /tmp/ccPiCTjg.s:1227 .text.debug_print:0000000000000018 $d + /tmp/ccPiCTjg.s:1232 .rodata.Flash_From_UART.str1.4:0000000000000000 $d + /tmp/ccPiCTjg.s:1239 .text.Flash_From_UART:0000000000000000 $t + /tmp/ccPiCTjg.s:1246 .text.Flash_From_UART:0000000000000000 Flash_From_UART + /tmp/ccPiCTjg.s:1311 .text.Flash_From_UART:0000000000000038 $d + /tmp/ccPiCTjg.s:1318 .text.Error_Handler:0000000000000000 $t + /tmp/ccPiCTjg.s:1325 .text.Error_Handler:0000000000000000 Error_Handler + /tmp/ccPiCTjg.s:1357 .text.MX_USART2_UART_Init:0000000000000000 $t + /tmp/ccPiCTjg.s:1363 .text.MX_USART2_UART_Init:0000000000000000 MX_USART2_UART_Init + /tmp/ccPiCTjg.s:1418 .text.MX_USART2_UART_Init:000000000000002c $d + /tmp/ccPiCTjg.s:1424 .text.SystemClock_Config:0000000000000000 $t + /tmp/ccPiCTjg.s:1431 .text.SystemClock_Config:0000000000000000 SystemClock_Config + /tmp/ccPiCTjg.s:1580 .text.SystemClock_Config:000000000000009c $d + /tmp/ccPiCTjg.s:1586 .rodata.main.str1.4:0000000000000000 $d + /tmp/ccPiCTjg.s:1624 .text.main:0000000000000000 $t + ARM GAS /tmp/ccPiCTjg.s page 67 + + + /tmp/ccPiCTjg.s:1631 .text.main:0000000000000000 main + /tmp/ccPiCTjg.s:1812 .text.main:00000000000000dc $d + /tmp/ccPiCTjg.s:1867 .bss.huart2:0000000000000000 huart2 + /tmp/ccPiCTjg.s:1831 .rodata:0000000000000000 $d + /tmp/ccPiCTjg.s:1863 .bss.huart2:0000000000000000 $d UNDEFINED SYMBOLS memcpy HAL_GPIO_WritePin HAL_GPIO_Init HAL_GPIO_ReadPin +HAL_Delay +sprintf strlen - ARM GAS /tmp/ccg6eVgO.s page 55 - - HAL_UART_Transmit +HAL_UART_Receive HAL_UART_Init memset HAL_RCC_OscConfig HAL_RCC_ClockConfig HAL_Init malloc -sprintf diff --git a/build/main.o b/build/main.o index 7e9131016c3a35dc78a3664d31e7d5bc390f07db..88057ca34b2407af447a70d6f277e78049f3921e 100644 GIT binary patch literal 31656 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 CR1?Yo diff --git a/build/stm32f4xx_hal_msp.lst b/build/stm32f4xx_hal_msp.lst index ea76e65..5e1873d 100644 --- a/build/stm32f4xx_hal_msp.lst +++ b/build/stm32f4xx_hal_msp.lst @@ -1,4 +1,4 @@ -ARM GAS /tmp/ccE2gFHF.s page 1 +ARM GAS /tmp/ccOpL6Dp.s page 1 1 .cpu cortex-m4 @@ -58,7 +58,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 28:Core/Src/stm32f4xx_hal_msp.c **** /* USER CODE BEGIN TD */ 29:Core/Src/stm32f4xx_hal_msp.c **** 30:Core/Src/stm32f4xx_hal_msp.c **** /* USER CODE END TD */ - ARM GAS /tmp/ccE2gFHF.s page 2 + ARM GAS /tmp/ccOpL6Dp.s page 2 31:Core/Src/stm32f4xx_hal_msp.c **** @@ -118,7 +118,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 43 0006 0B4B ldr r3, .L3 44 0008 5A6C ldr r2, [r3, #68] 45 000a 42F48042 orr r2, r2, #16384 - ARM GAS /tmp/ccE2gFHF.s page 3 + ARM GAS /tmp/ccOpL6Dp.s page 3 46 000e 5A64 str r2, [r3, #68] @@ -178,7 +178,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 94 .LFB135: 79:Core/Src/stm32f4xx_hal_msp.c **** 80:Core/Src/stm32f4xx_hal_msp.c **** /** - ARM GAS /tmp/ccE2gFHF.s page 4 + ARM GAS /tmp/ccOpL6Dp.s page 4 81:Core/Src/stm32f4xx_hal_msp.c **** * @brief UART MSP Initialization @@ -238,7 +238,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 106:Core/Src/stm32f4xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF7_USART2; 107:Core/Src/stm32f4xx_hal_msp.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 108:Core/Src/stm32f4xx_hal_msp.c **** - ARM GAS /tmp/ccE2gFHF.s page 5 + ARM GAS /tmp/ccOpL6Dp.s page 5 109:Core/Src/stm32f4xx_hal_msp.c **** /* USER CODE BEGIN USART2_MspInit 1 */ @@ -298,7 +298,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 161 .loc 1 97 5 view .LVU31 162 0042 1B6B ldr r3, [r3, #48] 163 0044 03F00103 and r3, r3, #1 - ARM GAS /tmp/ccE2gFHF.s page 6 + ARM GAS /tmp/ccOpL6Dp.s page 6 164 0048 0293 str r3, [sp, #8] @@ -358,7 +358,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 208 HAL_UART_MspDeInit: 209 .LVL5: 210 .LFB136: - ARM GAS /tmp/ccE2gFHF.s page 7 + ARM GAS /tmp/ccOpL6Dp.s page 7 116:Core/Src/stm32f4xx_hal_msp.c **** @@ -418,7 +418,7 @@ ARM GAS /tmp/ccE2gFHF.s page 1 235 000c 054A ldr r2, .L15+4 236 000e 136C ldr r3, [r2, #64] 237 0010 23F40033 bic r3, r3, #131072 - ARM GAS /tmp/ccE2gFHF.s page 8 + ARM GAS /tmp/ccOpL6Dp.s page 8 238 0014 1364 str r3, [r2, #64] @@ -449,20 +449,20 @@ ARM GAS /tmp/ccE2gFHF.s page 1 262 .file 5 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h" 263 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h" 264 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h" - ARM GAS /tmp/ccE2gFHF.s page 9 + ARM GAS /tmp/ccOpL6Dp.s page 9 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_hal_msp.c - /tmp/ccE2gFHF.s:18 .text.HAL_MspInit:0000000000000000 $t - /tmp/ccE2gFHF.s:26 .text.HAL_MspInit:0000000000000000 HAL_MspInit - /tmp/ccE2gFHF.s:80 .text.HAL_MspInit:0000000000000034 $d - /tmp/ccE2gFHF.s:85 .text.HAL_UART_MspInit:0000000000000000 $t - /tmp/ccE2gFHF.s:92 .text.HAL_UART_MspInit:0000000000000000 HAL_UART_MspInit - /tmp/ccE2gFHF.s:195 .text.HAL_UART_MspInit:0000000000000064 $d - /tmp/ccE2gFHF.s:201 .text.HAL_UART_MspDeInit:0000000000000000 $t - /tmp/ccE2gFHF.s:208 .text.HAL_UART_MspDeInit:0000000000000000 HAL_UART_MspDeInit - /tmp/ccE2gFHF.s:251 .text.HAL_UART_MspDeInit:0000000000000020 $d + /tmp/ccOpL6Dp.s:18 .text.HAL_MspInit:0000000000000000 $t + /tmp/ccOpL6Dp.s:26 .text.HAL_MspInit:0000000000000000 HAL_MspInit + /tmp/ccOpL6Dp.s:80 .text.HAL_MspInit:0000000000000034 $d + /tmp/ccOpL6Dp.s:85 .text.HAL_UART_MspInit:0000000000000000 $t + /tmp/ccOpL6Dp.s:92 .text.HAL_UART_MspInit:0000000000000000 HAL_UART_MspInit + /tmp/ccOpL6Dp.s:195 .text.HAL_UART_MspInit:0000000000000064 $d + /tmp/ccOpL6Dp.s:201 .text.HAL_UART_MspDeInit:0000000000000000 $t + /tmp/ccOpL6Dp.s:208 .text.HAL_UART_MspDeInit:0000000000000000 HAL_UART_MspDeInit + /tmp/ccOpL6Dp.s:251 .text.HAL_UART_MspDeInit:0000000000000020 $d UNDEFINED SYMBOLS HAL_GPIO_Init diff --git a/build/stm32f4xx_it.lst b/build/stm32f4xx_it.lst index bf8e192..143618e 100644 --- a/build/stm32f4xx_it.lst +++ b/build/stm32f4xx_it.lst @@ -1,4 +1,4 @@ -ARM GAS /tmp/ccjI409r.s page 1 +ARM GAS /tmp/ccvHq5vA.s page 1 1 .cpu cortex-m4 @@ -58,7 +58,7 @@ ARM GAS /tmp/ccjI409r.s page 1 28:Core/Src/stm32f4xx_it.c **** /* USER CODE BEGIN TD */ 29:Core/Src/stm32f4xx_it.c **** 30:Core/Src/stm32f4xx_it.c **** /* USER CODE END TD */ - ARM GAS /tmp/ccjI409r.s page 2 + ARM GAS /tmp/ccvHq5vA.s page 2 31:Core/Src/stm32f4xx_it.c **** @@ -118,7 +118,7 @@ ARM GAS /tmp/ccjI409r.s page 1 77:Core/Src/stm32f4xx_it.c **** } 37 .loc 1 77 3 discriminator 1 view .LVU2 75:Core/Src/stm32f4xx_it.c **** { - ARM GAS /tmp/ccjI409r.s page 3 + ARM GAS /tmp/ccvHq5vA.s page 3 38 .loc 1 75 10 discriminator 1 view .LVU3 @@ -178,7 +178,7 @@ ARM GAS /tmp/ccjI409r.s page 1 96:Core/Src/stm32f4xx_it.c **** /** 97:Core/Src/stm32f4xx_it.c **** * @brief This function handles Memory management fault. 98:Core/Src/stm32f4xx_it.c **** */ - ARM GAS /tmp/ccjI409r.s page 4 + ARM GAS /tmp/ccvHq5vA.s page 4 99:Core/Src/stm32f4xx_it.c **** void MemManage_Handler(void) @@ -238,7 +238,7 @@ ARM GAS /tmp/ccjI409r.s page 1 122:Core/Src/stm32f4xx_it.c **** /* USER CODE END W1_BusFault_IRQn 0 */ 123:Core/Src/stm32f4xx_it.c **** } 109 .loc 1 123 3 discriminator 1 view .LVU14 - ARM GAS /tmp/ccjI409r.s page 5 + ARM GAS /tmp/ccvHq5vA.s page 5 119:Core/Src/stm32f4xx_it.c **** { @@ -298,7 +298,7 @@ ARM GAS /tmp/ccjI409r.s page 1 141:Core/Src/stm32f4xx_it.c **** /** 142:Core/Src/stm32f4xx_it.c **** * @brief This function handles System service call via SWI instruction. 143:Core/Src/stm32f4xx_it.c **** */ - ARM GAS /tmp/ccjI409r.s page 6 + ARM GAS /tmp/ccvHq5vA.s page 6 144:Core/Src/stm32f4xx_it.c **** void SVC_Handler(void) @@ -358,7 +358,7 @@ ARM GAS /tmp/ccjI409r.s page 1 184 .thumb_func 185 .fpu fpv4-sp-d16 187 PendSV_Handler: - ARM GAS /tmp/ccjI409r.s page 7 + ARM GAS /tmp/ccvHq5vA.s page 7 188 .LFB141: @@ -418,7 +418,7 @@ ARM GAS /tmp/ccjI409r.s page 1 189:Core/Src/stm32f4xx_it.c **** /* USER CODE BEGIN SysTick_IRQn 1 */ 190:Core/Src/stm32f4xx_it.c **** 191:Core/Src/stm32f4xx_it.c **** /* USER CODE END SysTick_IRQn 1 */ - ARM GAS /tmp/ccjI409r.s page 8 + ARM GAS /tmp/ccvHq5vA.s page 8 192:Core/Src/stm32f4xx_it.c **** } @@ -429,29 +429,29 @@ ARM GAS /tmp/ccjI409r.s page 1 226 .text 227 .Letext0: 228 .file 2 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" - ARM GAS /tmp/ccjI409r.s page 9 + ARM GAS /tmp/ccvHq5vA.s page 9 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_it.c - /tmp/ccjI409r.s:18 .text.NMI_Handler:0000000000000000 $t - /tmp/ccjI409r.s:26 .text.NMI_Handler:0000000000000000 NMI_Handler - /tmp/ccjI409r.s:44 .text.HardFault_Handler:0000000000000000 $t - /tmp/ccjI409r.s:51 .text.HardFault_Handler:0000000000000000 HardFault_Handler - /tmp/ccjI409r.s:68 .text.MemManage_Handler:0000000000000000 $t - /tmp/ccjI409r.s:75 .text.MemManage_Handler:0000000000000000 MemManage_Handler - /tmp/ccjI409r.s:92 .text.BusFault_Handler:0000000000000000 $t - /tmp/ccjI409r.s:99 .text.BusFault_Handler:0000000000000000 BusFault_Handler - /tmp/ccjI409r.s:116 .text.UsageFault_Handler:0000000000000000 $t - /tmp/ccjI409r.s:123 .text.UsageFault_Handler:0000000000000000 UsageFault_Handler - /tmp/ccjI409r.s:140 .text.SVC_Handler:0000000000000000 $t - /tmp/ccjI409r.s:147 .text.SVC_Handler:0000000000000000 SVC_Handler - /tmp/ccjI409r.s:160 .text.DebugMon_Handler:0000000000000000 $t - /tmp/ccjI409r.s:167 .text.DebugMon_Handler:0000000000000000 DebugMon_Handler - /tmp/ccjI409r.s:180 .text.PendSV_Handler:0000000000000000 $t - /tmp/ccjI409r.s:187 .text.PendSV_Handler:0000000000000000 PendSV_Handler - /tmp/ccjI409r.s:200 .text.SysTick_Handler:0000000000000000 $t - /tmp/ccjI409r.s:207 .text.SysTick_Handler:0000000000000000 SysTick_Handler + /tmp/ccvHq5vA.s:18 .text.NMI_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:26 .text.NMI_Handler:0000000000000000 NMI_Handler + /tmp/ccvHq5vA.s:44 .text.HardFault_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:51 .text.HardFault_Handler:0000000000000000 HardFault_Handler + /tmp/ccvHq5vA.s:68 .text.MemManage_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:75 .text.MemManage_Handler:0000000000000000 MemManage_Handler + /tmp/ccvHq5vA.s:92 .text.BusFault_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:99 .text.BusFault_Handler:0000000000000000 BusFault_Handler + /tmp/ccvHq5vA.s:116 .text.UsageFault_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:123 .text.UsageFault_Handler:0000000000000000 UsageFault_Handler + /tmp/ccvHq5vA.s:140 .text.SVC_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:147 .text.SVC_Handler:0000000000000000 SVC_Handler + /tmp/ccvHq5vA.s:160 .text.DebugMon_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:167 .text.DebugMon_Handler:0000000000000000 DebugMon_Handler + /tmp/ccvHq5vA.s:180 .text.PendSV_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:187 .text.PendSV_Handler:0000000000000000 PendSV_Handler + /tmp/ccvHq5vA.s:200 .text.SysTick_Handler:0000000000000000 $t + /tmp/ccvHq5vA.s:207 .text.SysTick_Handler:0000000000000000 SysTick_Handler UNDEFINED SYMBOLS HAL_IncTick diff --git a/sample.rom b/sample.rom new file mode 100644 index 0000000..5a04ede --- /dev/null +++ b/sample.rom @@ -0,0 +1 @@ +Þ­¾ïabcd \ No newline at end of file -- 2.43.0