]> git.ayabusa.dev Git - eeprom_programmer.git/commitdiff
Finished Programmer
authorayabusa <lebgpub@gmail.com>
Fri, 5 Sep 2025 15:32:53 +0000 (17:32 +0200)
committerayabusa <lebgpub@gmail.com>
Fri, 5 Sep 2025 15:32:53 +0000 (17:32 +0200)
12 files changed:
.vscode/settings.json
Core/Inc/main.h
Core/Src/main.c
build/EEPROM_programmer.bin
build/EEPROM_programmer.elf
build/EEPROM_programmer.hex
build/EEPROM_programmer.map
build/main.lst
build/main.o
build/stm32f4xx_hal_msp.lst
build/stm32f4xx_it.lst
sample.rom [new file with mode: 0644]

index fe5234597b352d2ffdcec5abd51753365934b615..4698bf7ff6d3631c0290a5188cbf3cd7bf812903 100644 (file)
@@ -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
index 7434a08180fce2b2493113bf4b4e44a1ccf5e64f..43409479c5e571d449ef82b4afce974e3b19f8c7 100644 (file)
@@ -45,6 +45,10 @@ void Write_Command_Pins(int CE, int OE, int WE);
 void Write_Command(int addr, int data);\r
 int  Flash_ReadByte(int addr);\r
 void Enter_Device_ID(int *manufacturer, int *device);\r
+void Dump_Flash_UART(int visual_format);\r
+void Chip_Erase(void);\r
+void Chip_Program_Byte(int addr, int data);\r
+void Flash_From_UART(void);\r
 \r
 void debug_print(const char *msg);\r
 \r
index bf42bfa4245674335f758d35c68e9b1434f55ef7..afa1b4116e05f39c930be04c8142c260c45f4e4d 100644 (file)
@@ -62,16 +62,41 @@ int main(void)
   sprintf(manufacturer, "0x%02X \r\n", man_id);\r
   sprintf(device, "0x%02X \r\n", dev_id);\r
 \r
+  debug_print("==========================================\r\n");\r
   debug_print("Manufacturer ID = \r\n");\r
   debug_print(manufacturer);\r
   debug_print("Device ID = \r\n");\r
   debug_print(device);\r
-\r
+  debug_print("==========================================\r\n");\r
 \r
   /* Infinite loop */\r
   while (1)\r
   {\r
-    //debug_print("Hello from STM32!\r\n");\r
+    debug_print("Hello welcome to the EEPROM programmer! What would you like to do?\r\n");\r
+    debug_print("[1] Dump Rom as char\r\n");\r
+    debug_print("[2] Erase chip\r\n");\r
+    debug_print("[3] Program chip via UART\r\n");\r
+    uint8_t resp;\r
+    HAL_UART_Receive(&huart2, &resp, 1, HAL_MAX_DELAY);\r
+\r
+    switch (resp)\r
+    {\r
+    case 0x31:\r
+      debug_print("Dumping ROM...\r\n");\r
+      Dump_Flash_UART(1);\r
+      break;\r
+    case 0x32:\r
+      debug_print("Erasing Chip...\r\n");\r
+      Chip_Erase();\r
+      break;\r
+    case 0x33:\r
+      debug_print("Launching programming sequence...\r\n");\r
+      Flash_From_UART();\r
+      break;\r
+    default:\r
+      debug_print("Invalid input!\r\n");\r
+      break;\r
+    }\r
   }\r
 \r
 }\r
@@ -168,6 +193,57 @@ void Enter_Device_ID(int *manufacturer, int *device){
   Write_Command(0x5555, 0xF0); \r
 }\r
 \r
+void Dump_Flash_UART(int visual_format){\r
+  uint8_t byte;\r
+  char buf[8];\r
+\r
+  for (int addr = 0; addr < 0x80000; addr++) { // 512 KB\r
+    byte = Flash_ReadByte(addr);\r
+\r
+    if(visual_format==0){\r
+      // Send as raw byte:\r
+      HAL_UART_Transmit(&huart2, &byte, 1, HAL_MAX_DELAY);\r
+    }else{\r
+      // Send as str\r
+      sprintf(buf, "%02X ", byte);\r
+      HAL_UART_Transmit(&huart2, (uint8_t*)buf, strlen(buf), HAL_MAX_DELAY);\r
+      if ((addr & 0x0F) == 0x0F) {\r
+        char newline[] = "\r\n";\r
+        HAL_UART_Transmit(&huart2, (uint8_t*)newline, 2, HAL_MAX_DELAY);\r
+      }\r
+    } \r
+  }\r
+}\r
+\r
+void Chip_Erase(void){\r
+  // Erase sequence\r
+  Write_Command(0x5555, 0xAA);\r
+  Write_Command(0x2AAA, 0x55);\r
+  Write_Command(0x5555, 0x80);\r
+  Write_Command(0x5555, 0xAA);\r
+  Write_Command(0x2AAA, 0x55);\r
+  Write_Command(0x5555, 0x10);\r
+\r
+  HAL_Delay(150); // it's 100ms max but by precaution\r
+}\r
+\r
+void Chip_Program_Byte(int addr, int data){\r
+  Write_Command(0x5555, 0xAA);\r
+  Write_Command(0x2AAA, 0x55);\r
+  Write_Command(0x5555, 0xA0);\r
+  Write_Command(addr, data);\r
+}\r
+\r
+void Flash_From_UART(void){\r
+  debug_print("Waiting for file to flash...\r\n");\r
+  uint8_t byte;\r
+  for(int i=0; i<8; i++){\r
+    HAL_UART_Receive(&huart2, &byte, 1, HAL_MAX_DELAY);\r
+    Chip_Program_Byte(i, (int)byte);\r
+  }\r
+  debug_print("finished\r\n");\r
+}\r
+\r
 /**\r
   * @brief System Clock Configuration\r
   * @retval None\r
index 5fc51cb5520a39474a831e49b1a673b8019bbd50..76d803e584f627f9743b454179c6f3f6de592a45 100755 (executable)
Binary files a/build/EEPROM_programmer.bin and b/build/EEPROM_programmer.bin differ
index 73c10d3ed82a86a07dbc7961bd84f146cb68c5cc..1e47e80f7ed990b595c0610131ec8eae2c9592d9 100755 (executable)
Binary files a/build/EEPROM_programmer.elf and b/build/EEPROM_programmer.elf differ
index 6608e4501ee4910fc3d88dc13a23ee4cd059a560..56bb2aca6ea44e48f4eab1d842659568a265859c 100644 (file)
@@ -1,44 +1,44 @@
 :020000040800F2\r
-:10000000008001201D2700082D1900082F19000865\r
-:1000100031190008331900083519000800000000E4\r
-:100020000000000000000000000000003719000878\r
-:1000300039190008000000003B1900083D190008AC\r
-:100040006D2700086D2700086D2700086D27000840\r
-:100050006D2700086D2700086D2700086D27000830\r
-:100060006D2700086D2700086D2700086D27000820\r
-:100070006D2700086D2700086D2700086D27000810\r
-:100080006D2700086D2700086D270008000000009C\r
-:100090000000000000000000000000006D270008C4\r
-:1000A0006D2700086D2700086D2700086D270008E0\r
-:1000B0006D2700086D2700086D2700086D270008D0\r
-:1000C0006D2700086D2700086D2700086D270008C0\r
-:1000D0006D2700086D2700086D270008000000004C\r
-:1000E0006D2700086D2700086D270008000000003C\r
-:1000F0000000000000000000000000006D27000864\r
-:10010000000000006D2700086D2700086D2700081B\r
+:1000000000800120ED290008051B0008071B0008DF\r
+:10001000091B00080B1B00080D1B00080000000056\r
+:100020000000000000000000000000000F1B00089E\r
+:10003000111B000800000000131B0008151B00081E\r
+:100040003D2A00083D2A00083D2A00083D2A0008F4\r
+:100050003D2A00083D2A00083D2A00083D2A0008E4\r
+:100060003D2A00083D2A00083D2A00083D2A0008D4\r
+:100070003D2A00083D2A00083D2A00083D2A0008C4\r
+:100080003D2A00083D2A00083D2A00080000000023\r
+:100090000000000000000000000000003D2A0008F1\r
+:1000A0003D2A00083D2A00083D2A00083D2A000894\r
+:1000B0003D2A00083D2A00083D2A00083D2A000884\r
+:1000C0003D2A00083D2A00083D2A00083D2A000874\r
+:1000D0003D2A00083D2A00083D2A000800000000D3\r
+:1000E0003D2A00083D2A00083D2A000800000000C3\r
+:1000F0000000000000000000000000003D2A000891\r
+:10010000000000003D2A00083D2A00083D2A0008A2\r
 :1001100000000000000000000000000000000000DF\r
-:100120006D2700086D2700086D2700086D2700085F\r
-:100130006D27000800000000000000000000000023\r
-:100140000000000000000000000000006D27000813\r
-:100150006D2700086D2700086D2700086D2700082F\r
-:100160006D2700086D270008000000000000000057\r
+:100120003D2A00083D2A00083D2A00083D2A000813\r
+:100130003D2A000800000000000000000000000050\r
+:100140000000000000000000000000003D2A000840\r
+:100150003D2A00083D2A00083D2A00083D2A0008E3\r
+:100160003D2A00083D2A00080000000000000000B1\r
 :10017000000000000000000000000000000000007F\r
-:10018000000000006D2700080000000000000000D3\r
-:040190006D270008CF\r
+:10018000000000003D2A0008000000000000000000\r
+:040190003D2A0008FC\r
 :1001C0000348044B834202D0034B03B118477047E6\r
 :1001D0007000002070000020000000000548064963\r
 :1001E0000B1AD90F01EBA301491002D0034B03B145\r
 :1001F00018477047700000207000002000000000C9\r
 :1002000010B5064C237843B9FFF7DAFF044B13B15E\r
 :100210000448AFF300800123237010BD700000205C\r
-:10022000000000007027000808B5044B1BB104490A\r
+:1002200000000000402A000808B5044B1BB1044937\r
 :100230000448AFF30080BDE80840CFE700000000AD\r
-:100240007400002070270008014B1868704700BF39\r
+:1002400074000020402A0008014B1868704700BF66\r
 :100250000000002070B50D4E0D4D761BB61006D077\r
 :10026000002455F8043B01349847A642F9D1094EC1\r
-:10027000094D761B02F07CFAB61006D0002455F822\r
-:10028000043B01349847A642F9D170BD8428000888\r
-:10029000842800088828000884280008024B0146AA\r
+:10027000094D761B02F0E4FBB61006D0002455F8B9\r
+:10028000043B01349847A642F9D170BDA82C000860\r
+:10029000A82C0008AC2C0008A82C0008024B014632\r
 :1002A000186800F059B900BF00000020024B014659\r
 :1002B000186800F0EFB800BF00000020844641EA53\r
 :1002C000000313F003036DD1403A41D351F8043BCE\r
@@ -94,7 +94,7 @@
 :1005E000211A304600F012F8013001D02560D5E71D\r
 :1005F0000C233046336000F0D3F80020F8BD3046BD\r
 :1006000000F004F87860E0E78C00002038B5074D72\r
-:100610000022044608462A6002F05CF8431C00D021\r
+:100610000022044608462A6002F0C4F9431C00D0B8\r
 :1006200038BD2B68002BFBD0236038BD9400002020\r
 :100630000CB410B59CB01EAB6FF00044CDE90614AD\r
 :100640000291084953F8042B059102A901930494DF\r
 :100B50003002092AF5D9059364E74021FFF7FCFC30\r
 :100B6000C8F80000C8F8100018B14022C8F81420D6\r
 :100B700004E70C23C9F800304FF0FF3087E700BFCF\r
-:100B800040280008482800084C2800080000000001\r
+:100B8000642C00086C2C0008702C00080000000089\r
 :100B9000A50700082DE9F84F92461F460A698B68A1\r
 :100BA000DDF828909A42B8BF1A46CAF8002091F89A\r
 :100BB00043300C46064613B10132CAF800202268C1\r
 :100F300003F104050D600CBF1D681D885DE713F00B\r
 :100F4000400F0B68626903F104050D601B6814BF54\r
 :100F50001A801A60F5E60A68B2F9005004320A6095\r
-:100F60002A463CE760687FE75428000868280008A4\r
+:100F60002A463CE760687FE7782C00088C2C000854\r
 :100F700001F0FF01102A2BDB10F0070F08D010F84A\r
 :100F8000013B013A8B422DD010F0070F42B3F6D14E\r
 :100F9000F0B441EA012141EA014122F007047FF067\r
 :1014C00002030393039B04B0704700BF003802403F\r
 :1014D00030B595B005464C221E4901A8FEF7EEFE38\r
 :1014E000002409E0002214AB03EB840333F84C1C06\r
-:1014F000194801F02EF80134122C29DC0D2C0EDCD9\r
+:1014F000194801F082F90134122C29DC0D2C0EDC84\r
 :1015000045FA04F313F0010FECD0012214AB03EB06\r
-:10151000840333F84C1C104801F01BF8EBE745FA44\r
+:10151000840333F84C1C104801F06FF9EBE745FAEF\r
 :1015200004F313F0010F09D0012214AB03EB840381\r
-:1015300033F84C1C094801F00CF8DCE7002214AB2E\r
-:1015400003EB840333F84C1C044801F002F8D2E7A3\r
-:1015500015B030BD88270008000802400004024092\r
+:1015300033F84C1C094801F060F9DCE7002214ABD9\r
+:1015400003EB840333F84C1C044801F056F9D2E74E\r
+:1015500015B030BD582A00080008024000040240BF\r
 :1015600070B50E4615460D4C021E18BF01224FF4F1\r
-:101570008071204600F0EDFF321E18BF01224FF4AB\r
-:101580000071204600F0E5FF2A1E18BF01224FF42B\r
-:101590008061204600F0DDFF70BD00BF000002400A\r
+:101570008071204601F041F9321E18BF01224FF45C\r
+:101580000071204601F039F92A1E18BF01224FF4DC\r
+:101590008061204601F031F970BD00BF00000240BB\r
 :1015A00000B587B00023019302930393049305933E\r
 :1015B00041F6F3030193012808D00223039301A904\r
-:1015C000054800F0DFFE07B05DF804FB012302933D\r
+:1015C000054801F033F807B05DF804FB01230293EE\r
 :1015D00002230493F3E700BF0000024030B589B056\r
 :1015E0000020FFF7DDFF6C460E4D0FCD0FC495E8D0\r
 :1015F0000F0084E80F000024254600E00134072C8A\r
-:101600000DDC08AB03EB840333F8201C064800F024\r
-:1016100099FF0128F2D10123A3401D44EEE728469B\r
-:1016200009B030BDD42700080000024070B588B072\r
+:101600000DDC08AB03EB840333F8201C064801F023\r
+:10161000EDF80128F2D10123A3401D44EEE728464E\r
+:1016200009B030BDA42A00080000024070B588B09F\r
 :1016300006460120FFF7B4FF6C46134D0FCD0FC4D3\r
 :1016400095E80F0084E80F00002409E0002208ABB1\r
-:1016500003EB840333F8201C0C4800F07AFF0134BC\r
+:1016500003EB840333F8201C0C4801F0CEF801346E\r
 :10166000072C0EDC46FA04F313F0010FEED0012232\r
-:1016700008AB03EB840333F8201C044800F069FF37\r
-:10168000EDE708B070BD00BFD4270008000002409D\r
+:1016700008AB03EB840333F8201C044801F0BDF8E9\r
+:10168000EDE708B070BD00BFA42A000800000240CA\r
 :1016900038B505460C46012211461046FFF760FF9B\r
 :1016A0002846FFF715FF2046FFF7C0FF012211462D\r
 :1016B0000020FFF755FF002201211046FFF750FFE1\r
 :1016C000012211460020FFF74BFF01221146104670\r
-:1016D000FFF746FF38BD10B5FFF7FAFE0020FFF711\r
-:1016E0005FFF012200210846FFF73AFFFFF776FF70\r
-:1016F0000446012211461046FFF732FF204610BD76\r
-:1017000038B505460C46AA2145F25550FFF7C0FFF3\r
-:10171000552142F6AA20FFF7BBFF902145F2555014\r
-:10172000FFF7B6FF0020FFF7D6FF28600120FFF784\r
-:10173000D2FF2060F02145F25550FFF7A9FF38BDD8\r
-:1017400070B58AB00024059406940794089409940F\r
-:101750004FF6FF730593012606960225089505A905\r
-:10176000084800F00FFE009401940294039404943E\r
-:101770001F230093019603956946034800F002FE7B\r
-:101780000AB070BD000802400004024000B587B0F6\r
-:101790000023019302930393049305934FF4E063B2\r
-:1017A0000193012302930223049301A9024800F04C\r
-:1017B000E9FD07B05DF804FB0000024010B50446E7\r
-:1017C000FEF77EFF4FF0FF3382B22146014800F062\r
-:1017D00036FA10BD9800002072B6FEE708B50A4838\r
-:1017E0000A4B03604FF4E133436000238360C3601E\r
-:1017F00003610C2242618361C36100F0F0F900B91A\r
-:1018000008BDFFF7E9FF00BF98000020004400403A\r
-:1018100000B595B03022002108A8FEF7E9FD0023AD\r
-:101820000393049305930693079301931F4A116C46\r
-:1018300041F080511164126C02F080520192019AC1\r
-:1018400002931B490A6822F4404242F400420A60B3\r
-:101850000A6802F440420292029A0221089101228F\r
-:101860000B9210220C920E910F9310924FF4A873CA\r
-:101870001193042312930723139308A800F046FA48\r
-:1018800080B90F23039302210491002305934FF4A1\r
-:1018900080520692079303A800F09EFC20B915B071\r
-:1018A0005DF804FBFFF798FFFFF796FF0038024052\r
-:1018B0000070004070B582B000F0D6FEFFF7A8FFC0\r
-:1018C000FFF7D6FDFFF78AFF0020FFF769FEFFF75D\r
-:1018D00037FFFFF75BFF694601A8FFF711FF0D20F7\r
-:1018E000FEF7DCFC05460D20FEF7D8FC04460C4E46\r
-:1018F000019A31462846FEF7B7FE009A3146204647\r
-:10190000FEF7B2FE0748FFF759FF2846FFF756FFDC\r
-:101910000548FFF753FF2046FFF750FFFEE700BFE3\r
-:10192000F42700080028000818280008FEE7FEE752\r
-:10193000FEE7FEE7FEE770477047704708B500F026\r
-:10194000ADFE08BD82B0002100910B4B5A6C42F4F1\r
-:1019500080425A645A6C02F480420092009A0191CB\r
-:101960001A6C42F080521A641B6C03F0805301938E\r
-:10197000019B02B0704700BF0038024000B589B03B\r
-:101980000023039304930593069307930268144B73\r
-:101990009A4202D009B05DF804FB0021019103F5E1\r
-:1019A000FA331A6C42F400321A641A6C02F40032F0\r
-:1019B0000192019A02911A6B42F001021A631B6BA9\r
-:1019C00003F001030293029B0C230393022304936D\r
-:1019D0000723079303A9034800F0D4FCDAE700BF0C\r
-:1019E0000044004000000240026802F10C0353E88A\r
-:1019F000003F23F490730C3242E800310029F3D108\r
-:101A0000026802F1140353E8003F23F0010314328B\r
-:101A100042E800310029F3D1036B012B05D02023CC\r
-:101A200080F84230002303637047026802F10C0320\r
-:101A300053E8003F23F010030C3242E80031002944\r
-:101A4000F3D1ECE738B504460268136923F4405338\r
-:101A5000C1680B43136183680269134342691343EE\r
-:101A6000C2691A430168CB6823F4164323F00C03C0\r
-:101A70001343CB600268536923F4407381690B43BD\r
-:101A800053610368314A934206D002F58062934263\r
-:101A900002D000F057FC01E000F064FCE369B3F50C\r
-:101AA000004F29D00021031849411B1841F10001C2\r
-:101AB000C90041EA5371DB00181863684FEA8302DA\r
-:101AC0004FEA937341F10001FFF750FB204DA5FB56\r
-:101AD00000325109642303FB11031B013233A5FBC0\r
-:101AE00003235B0903F0F00202EB011203F00F0382\r
-:101AF000216813448B6038BD0023021843EB0301B7\r
-:101B0000121841F10001C90041EA5271D2001018C7\r
-:101B100041F10001626892185B41FFF727FB0C4D11\r
-:101B2000A5FB00325109642303FB1103DB003233B0\r
-:101B3000A5FB03235B095A0002F4F87202EB0112C1\r
-:101B400003F00703216813448B60D4E700100140C1\r
-:101B50001F85EB512DE9F04383B005460E4617462D\r
-:101B60009946DDF828802C68246836EA04030CBF07\r
-:101B70004FF0010C4FF0000CBC4528D1B8F1FF3FED\r
-:101B8000F1D000F097FDA0EB0900404523D8B8F153\r
-:101B9000000F22D02B68DA6812F0040FE3D0802EF9\r
-:101BA000E1D0402EDFD01A6812F0080FDBD00024FD\r
-:101BB00001941A6801925B680193019B2846FFF724\r
-:101BC00013FF08236B6485F84040012000E00020EB\r
-:101BD00003B0BDE8F0830320FAE70320F8E760B321\r
-:101BE00010B5044690F8413013B3242384F84130F3\r
-:101BF0002268D36823F40053D3602046FFF722FF06\r
-:101C00002268136923F4904313612268536923F017\r
-:101C10002A0353612268D36843F40053D360002041\r
-:101C20006064202384F8413084F84230606310BD42\r
-:101C300080F84030FFF7A2FED7E7012070472DE97A\r
-:101C4000F04182B01E4690F84130DBB2202B56D1D5\r
-:101C500004460D469046002955D00AB901204FE0B0\r
-:101C600000234364212380F8413000F023FD074620\r
-:101C7000A4F82480A4F82680A368B3F5805F02D07E\r
-:101C80004FF0000814E023692BB34FF000080FE079\r
-:101C9000202384F84130032032E038F8023B2268E8\r
-:101CA000C3F308035360E28C92B2013A92B2E28429\r
-:101CB000E38C9BB293B100963B46002280212046E4\r
-:101CC000FFF748FF0028E3D1002DE6D015F8012BDF\r
-:101CD00023685A60E7E7A8460025E9E700963B46F7\r
-:101CE000002240212046FFF735FF18B9202384F851\r
-:101CF000413005E0202384F84130032000E0022039\r
-:101D000002B0BDE8F0810120FAE70000002800F0F1\r
-:101D1000E08170B582B00446036813F0010F3BD038\r
-:101D20009F4B9B6803F00C03042B2CD09C4B9B68AF\r
-:101D300003F00C03082B21D06368B3F5803F4FD02C\r
-:101D4000B3F5A02F52D0964B1A6822F480321A6055\r
-:101D50001A6822F480221A606368002B50D000F0C9\r
-:101D6000A9FC05468E4B1B6813F4003F14D100F00C\r
-:101D7000A1FC401B6428F5D90320B1E1884B5B68C6\r
-:101D800013F4800FD8D0864B1B6813F4003F03D0A8\r
-:101D90006368002B00F09F81236813F0020F54D07A\r
-:101DA0007F4B9B6813F00C0F3ED07D4B9B6803F07C\r
-:101DB0000C03082B33D0E368002B68D0794B012249\r
-:101DC0001A6000F077FC0546754B1B6813F0020F94\r
-:101DD00054D100F06FFC401B0228F5D903207FE1AD\r
-:101DE0006F4A136843F480331360B5E76C4B1A688D\r
-:101DF00042F480221A601A6842F480321A60ABE71B\r
-:101E000000F058FC0546664B1B6813F4003FC3D036\r
-:101E100000F050FC401B6428F5D9032060E1604BC2\r
-:101E20005B6813F4800FC6D15D4B1B6813F0020F83\r
-:101E300003D0E368012B40F05081594A136823F026\r
-:101E4000F803216943EAC1031360236813F0080F04\r
-:101E500042D063696BB3534B0122C3F8802E00F06C\r
-:101E600029FC05464E4B5B6F13F0020F34D100F096\r
-:101E700021FC401B0228F5D9032031E1484A1368B0\r
-:101E800023F0F803216943EAC1031360DDE7454B02\r
-:101E900000221A6000F00EFC0546414B1B6813F04F\r
-:101EA000020FD2D000F006FC401B0228F5D9032017\r
-:101EB00016E13C4B0022C3F8802E00F0FBFB0546E8\r
-:101EC000374B5B6F13F0020F06D000F0F3FB401BA3\r
-:101ED0000228F5D9032003E1236813F0040F77D01B\r
-:101EE0002F4B1B6C13F0805F33D1002301932C4BDD\r
-:101EF0001A6C42F080521A641B6C03F080530193F9\r
-:101F0000019B0125284B1B6813F4807F23D0A36815\r
-:101F1000012B34D0052B38D0214B1A6F22F001024F\r
-:101F20001A671A6F22F004021A67A368002B3DD0CB\r
-:101F300000F0C0FB06461A4B1B6F13F0020F46D190\r
-:101F400000F0B8FB801B41F288339842F3D903209C\r
-:101F5000C6E00025D6E7144A136843F48073136083\r
-:101F600000F0A8FB0646104B1B6813F4807FCED10F\r
-:101F700000F0A0FB801B0228F5D90320B0E0084A3E\r
-:101F8000136F43F001031367CFE7054B1A6F42F05D\r
-:101F900004021A671A6F42F001021A67C5E700BF10\r
-:101FA00000380240000047420070004000F082FB11\r
-:101FB0000646524B1B6F13F0020F08D000F07AFB5D\r
-:101FC000801B41F288339842F3D9032088E0EDB9B1\r
-:101FD000A369002B00F08380484A926802F00C024B\r
-:101FE000082A51D0022B17D0454B00221A6600F068\r
-:101FF00061FB0446414B1B6813F0007F42D000F0A8\r
-:1020000059FB001B0228F5D9032069E03B4A136CF9\r
-:1020100023F080531364DBE7394B00221A6600F08B\r
-:1020200049FB0546354B1B6813F0007F06D000F0D6\r
-:1020300041FB401B0228F5D9032051E0E369226AE5\r
-:102040001343626A43EA8213A26A5208013A43EADE\r
-:102050000243E26A43EA0263284A5360284B0122A2\r
-:102060001A6600F027FB0446244B1B6813F0007F20\r
-:1020700006D100F01FFB001B0228F5D903202FE03A\r
-:1020800000202DE000202BE0012B2BD01B4B5B68A8\r
-:1020900003F48001E269914226D103F03F02216AF4\r
-:1020A0008A4223D1616A47F6C0721A40B2EB811F9F\r
-:1020B0001ED103F44031A26A5208013AB1EB024F3B\r
-:1020C00018D103F07063E26AB3EB026F14D1002001\r
-:1020D00006E001207047012002E0012000E000201E\r
-:1020E00002B070BD0120FBE70120F9E70120F7E70E\r
-:1020F0000120F5E70120F3E70120F1E70038024075\r
-:102100000000474208B5314B9B6803F00C03042BD9\r
-:1021100057D0082B57D12D4B5A6802F03F025B680D\r
-:1021200013F4800F2AD0294B5968C1F3881C4FEA59\r
-:102130004C11B1EB0C006EEB0E0E4FEA8E1343EA1E\r
-:1021400090638101091A63EB0E03DB0043EA5173CC\r
-:10215000C90011EB0C0C43F10003590200234FEAB4\r
-:102160004C2041EADC51FFF701F8184B5B68C3F3E0\r
-:10217000014301335B00B0FBF3F025E0134B5968DA\r
-:10218000C1F3881C4FEA4C11B1EB0C006EEB0E0E44\r
-:102190004FEA8E1343EA90638101091A63EB0E0341\r
-:1021A000DB0043EA5173C90011EB0C0C43F100034F\r
-:1021B000990200234FEA8C2041EA9C51FEF7D6FF9A\r
-:1021C000D3E7034800E0034808BD00BF00380240E1\r
-:1021D00000127A000024F400002800F09B8070B503\r
-:1021E0000D4604464F4B1B6803F007038B4208D291\r
-:1021F000CBB24C4A1370136803F007038B4240F0D4\r
-:102200008B80236813F0020F17D013F0040F04D053\r
-:10221000454A936843F4E0539360236813F0080F32\r
-:1022200004D0414A936843F4604393603E4A936804\r
-:1022300023F0F003A1680B439360236813F0010FB0\r
-:1022400032D06368012B21D09A1E012A25D9364A43\r
-:10225000126812F0020F61D033498A6822F003023B\r
-:1022600013438B6000F026FA06462F4B9B6803F061\r
-:102270000C036268B3EB820F16D000F01BFA801BD0\r
-:1022800041F288339842F0D9032042E0264A12688E\r
-:1022900012F4003FE0D101203BE0234A126812F023\r
-:1022A000007FD9D1012034E01E4B1B6803F00703E7\r
-:1022B000AB4207D9EAB21B4B1A701B6803F0070345\r
-:1022C000AB422DD1236813F0040F06D0164A936851\r
-:1022D00023F4E053E1680B439360236813F0080F85\r
-:1022E00007D0114A936823F46043216943EAC1038C\r
-:1022F0009360FFF707FF0C4B9B68C3F303130B4A74\r
-:10230000D35CD8400A4B18600A4B186800F086F975\r
-:10231000002070BD012070470120FAE70120F8E796\r
-:102320000120F6E7003C024000380240282800085F\r
-:102330006C00002068000020014B1868704700BF47\r
-:102340006C00002008B5FFF7F7FF044B9B68C3F350\r
-:102350008223034AD35CD84008BD00BF0038024046\r
-:102360003828000808B5FFF7E7FF044B9B68C3F364\r
-:102370004233034AD35CD84008BD00BF0038024056\r
-:102380003828000800230F2B00F2D28070B582B0ED\r
-:1023900060E085685E000324B44025EA0405CC684B\r
-:1023A000B4402C438460456825EA02054C68C4F3B8\r
-:1023B00000129A402A4342605AE0DC08083450F880\r
-:1023C000246003F0070295000F22AA4026EA020EBD\r
-:1023D0000A69AA4042EA0E0240F824205CE0042286\r
-:1023E00000E0002202FA0EF22A430234514D45F871\r
-:1023F0002420514A94686FEA0C0224EA0C054E68C6\r
-:1024000016F4801F01D04CEA04054B4CA560E4682B\r
-:1024100002EA04054E6816F4001F01D04CEA0405D8\r
-:10242000454CE560646802EA04054E6816F4003F16\r
-:1024300001D04CEA0405404C6560246822404D6898\r
-:1024400015F4803F01D04CEA04023B4C226001337A\r
-:102450000F2B6BD801229A400C6804EA020C32EA76\r
-:102460000404F4D14C6804F00304013C012C90D91D\r
-:102470004A6802F00302032A09D0C4685D000322FF\r
-:10248000AA4024EA02048A68AA402243C2604A6839\r
-:1024900002F00302022A90D004684FEA430E03229E\r
-:1024A00002FA0EF224EA02044A6802F0030202FA77\r
-:1024B0000EF2224302604A6812F4403FC7D0002265\r
-:1024C00001921E4A546C44F480445464526C02F4E9\r
-:1024D00080420192019A9C08A51C164A52F8255088\r
-:1024E00003F003024FEA820E0F2202FA0EF225EAEF\r
-:1024F0000205134A90423FF474AF02F580629042A5\r
-:102500000ED002F5806290420CD002F580629042BB\r
-:102510000AD002F5806290423FF461AF072261E782\r
-:1025200001225FE702225DE703225BE702B070BD94\r
-:10253000704700BF00380140003C014000380240B5\r
-:10254000000002400369194201D0012070470020B9\r
-:1025500070470AB1816170470904816170470000CA\r
-:10256000074AD36823F4E0631B041B0C000200F449\r
-:10257000E060034343F0BF6343F40033D36070472C\r
-:1025800000ED00E000B5194BDB68C3F30223C3F193\r
-:10259000070CBCF1040F28BF4FF0040C03F1040E2C\r
-:1025A000BEF1060F18D9033B4FF0FF3E0EFA0CFCAC\r
-:1025B00021EA0C0199400EFA03F322EA03031943BE\r
-:1025C00000280BDB0901C9B200F1604000F5614051\r
-:1025D00080F800135DF804FB0023E5E700F00F002E\r
-:1025E0000901C9B2024B1954F4E700BF00ED00E045\r
-:1025F00014ED00E00138B0F1807F0BD24FF0E02302\r
-:102600005861054AF02182F82310002098610722C2\r
-:102610001A6170470120704700ED00E010B50446D4\r
-:102620000E4B18784FF47A73B3FBF0F30C4A106832\r
-:10263000B0FBF3F0FFF7DEFF68B90F2C01D90120E2\r
-:102640000AE0002221464FF0FF30FFF79BFF054BC9\r
-:102650001C60002000E0012010BD00BF64000020CD\r
-:102660006C0000206800002008B50B4B1A6842F48B\r
-:1026700000721A601A6842F480621A601A6842F4A2\r
-:1026800080721A600320FFF76BFF0020FFF7C6FF80\r
-:10269000FFF758F9002008BD003C0240034A1168CA\r
-:1026A000034B1B780B441360704700BFE000002011\r
-:1026B00064000020014B1868704700BFE000002054\r
-:1026C000034AD2F8883043F47003C2F88830704768\r
-:1026D00000ED00E010B503460C4A0D490D480068B6\r
-:1026E00040B10C4800680344521A934206D8094A84\r
-:1026F000136010BD0748084C0460F2E7FDF7A4FD25\r
-:102700000C2303604FF0FF30F3E700BF008001208F\r
-:1027100000040000E4000020E8000020DFF834D0CE\r
-:10272000FFF7CEFF0C480D490D4A002302E0D458B4\r
-:10273000C4500433C4188C42F9D30A4A0A4C00230B\r
-:1027400001E013600432A242FBD3FDF783FDFFF7E3\r
-:10275000B1F87047008001200000002070000020C8\r
-:102760008C28000870000020E8000020FEE7000030\r
-:10277000F8B500BFF8BC08BC9E467047F8B500BF6E\r
-:08278000F8BC08BC9E4670473E\r
-:102788000100000002000000040000000800000032\r
-:102798001000000020000000400000008000000041\r
-:1027A8000001000000020000000400000008000012\r
-:1027B80000100000002000000100000002000000DE\r
-:1027C80004000000080000001000000001000000E4\r
-:1027D80002000000000800000010000010000000C7\r
-:1027E8002000000040000000800000003078253004\r
-:1027F8003258200D0A0000004D616E7566616374E1\r
-:1028080075726572204944203D200D0A00000000C1\r
-:10281800446576696365204944203D200D0A00001F\r
-:102828000000000000000000010203040607080978\r
-:102838000000000001020304232D302B20000000BB\r
-:10284800686C4C0065666745464700003031323396\r
-:102858003435363738394142434445460000000094\r
-:1028680030313233343536373839616263646566FE\r
-:04287800000000005C\r
-:08287C0020E9FF7F01000000CC\r
-:04288400290200081D\r
-:042888000102000841\r
-:10288C000400002000000000000000000000000018\r
-:10289C00000000000000000000000000000000002C\r
-:1028AC00000000000000000000000000000000001C\r
-:1028BC00000000000000000000000000000000000C\r
-:1028CC0000000000000000000000000000000000FC\r
-:1028DC0000000000000000000000000000000000EC\r
-:1028EC000000000001000000100000000024F400B3\r
-:040000050800271DAB\r
+:1016D000FFF746FF38BD08B5AA2145F25550FFF780\r
+:1016E000D7FF552142F6AA20FFF7D2FF802145F20D\r
+:1016F0005550FFF7CDFFAA2145F25550FFF7C8FF1F\r
+:10170000552142F6AA20FFF7C3FF102145F255509C\r
+:10171000FFF7BEFF962001F027F908BD38B5044653\r
+:101720000D46AA2145F25550FFF7B2FF552142F66A\r
+:10173000AA20FFF7ADFFA02145F25550FFF7A8FF03\r
+:1017400029462046FFF7A4FF38BD10B5FFF7C0FEBD\r
+:101750000020FFF725FF012200210846FFF700FFC8\r
+:10176000FFF73CFF0446012211461046FFF7F8FE42\r
+:10177000204610BD38B505460C46AA2145F2555005\r
+:10178000FFF786FF552142F6AA20FFF781FF90213F\r
+:1017900045F25550FFF77CFF0020FFF7D6FF286089\r
+:1017A0000120FFF7D2FF2060F02145F25550FFF7EE\r
+:1017B0006FFF38BD30B585B00546002412E01C49E6\r
+:1017C00001A8FEF751FF01A8FEF77AFF4FF0FF33A3\r
+:1017D00082B201A9174800F01EFB04F00F030F2B83\r
+:1017E00014D00134B4F5002F1FDA2046FFF7ADFF07\r
+:1017F000C2B28DF80F20002DE1D14FF0FF3301224E\r
+:101800000DF10F010B4800F006FBEAE70A4B1B68DD\r
+:10181000ADF800301B0C8DF802304FF0FF33022280\r
+:101820006946044800F0F7FADBE705B030BD00BFB9\r
+:10183000C42A000898000020582B000870B58AB010\r
+:101840000024059406940794089409944FF6FF73B6\r
+:101850000593012606960225089505A9084800F07B\r
+:10186000E5FE009401940294039404941F230093D2\r
+:10187000019603956946034800F0D8FE0AB070BD92\r
+:10188000000802400004024000B587B00023019325\r
+:1018900002930393049305934FF4E06301930123B0\r
+:1018A00002930223049301A9024800F0BFFE07B08F\r
+:1018B0005DF804FB0000024010B50446FEF700FF8F\r
+:1018C0004FF0FF3382B22146014800F0A4FA10BD68\r
+:1018D0009800002010B582B00C48FFF7EDFF0024FF\r
+:1018E0000DE04FF0FF3301220DF10701084800F031\r
+:1018F000F8FA9DF807102046FFF710FF0134072C77\r
+:10190000EFDD0448FFF7D8FF02B010BDCC2A000875\r
+:1019100098000020EC2A000872B6FEE708B50A48D5\r
+:101920000A4B03604FF4E133436000238360C360DC\r
+:1019300003610C2242618361C36100F03CFA00B98B\r
+:1019400008BDFFF7E9FF00BF9800002000440040F9\r
+:1019500000B595B03022002108A8FEF749FD00230C\r
+:101960000393049305930693079301931F4A116C05\r
+:1019700041F080511164126C02F080520192019A80\r
+:1019800002931B490A6822F4404242F400420A6072\r
+:101990000A6802F440420292029A0221089101224E\r
+:1019A0000B9210220C920E910F9310924FF4A87389\r
+:1019B0001193042312930723139308A800F0FAFA53\r
+:1019C00080B90F23039302210491002305934FF460\r
+:1019D00080520692079303A800F052FD20B915B07B\r
+:1019E0005DF804FBFFF798FFFFF796FF0038024011\r
+:1019F0000070004070B584B000F08AFFFFF7A8FFC8\r
+:101A0000FFF736FDFFF78AFF0020FFF7C9FDFFF75C\r
+:101A100015FFFFF739FF02A903A8FFF7ABFE0D2062\r
+:101A2000FEF73CFC05460D20FEF738FC0446284E28\r
+:101A3000039A31462846FEF717FE029A31462046A1\r
+:101A4000FEF712FE234E3046FFF736FF2248FFF71F\r
+:101A500033FF2846FFF730FF2048FFF72DFF2046D1\r
+:101A6000FFF72AFF3046FFF727FF05E01C48FFF786\r
+:101A700023FF0120FFF79EFE1A48FFF71DFF1A48BB\r
+:101A8000FFF71AFF1948FFF717FF1948FFF714FF70\r
+:101A90004FF0FF3301220DF10701164800F021FA43\r
+:101AA0009DF80730322B07D0332B0BD0312BDDD0F4\r
+:101AB0001148FFF701FFDFE71048FFF7FDFEFFF7D2\r
+:101AC0000AFED9E70E48FFF7F7FEFFF703FFD3E75B\r
+:101AD000F82A0008042B0008342B00084C2B0008BF\r
+:101AE000EC2B00085C2B0008A42B0008BC2B000882\r
+:101AF000D02B000898000020382C0008002C00088B\r
+:101B0000142C0008FEE7FEE7FEE7FEE7FEE770475D\r
+:101B10007047704708B500F015FF08BD82B000217E\r
+:101B200000910B4B5A6C42F480425A645A6C02F496\r
+:101B300080420092009A01911A6C42F080521A641D\r
+:101B40001B6C03F080530193019B02B0704700BFF0\r
+:101B50000038024000B589B0002303930493059335\r
+:101B6000069307930268144B9A4202D009B05DF8BD\r
+:101B700004FB0021019103F5FA331A6C42F40032A0\r
+:101B80001A641A6C02F400320192019A02911A6BE3\r
+:101B900042F001021A631B6B03F001030293029BE4\r
+:101BA0000C230393022304930723079303A90348F9\r
+:101BB00000F03CFDDAE700BF0044004000000240B6\r
+:101BC000026802F10C0353E8003F23F490730C32D7\r
+:101BD00042E800310029F3D1026802F1140353E80E\r
+:101BE000003F23F00103143242E800310029F3D111\r
+:101BF000036B012B05D0202380F8423000230363C0\r
+:101C00007047026802F10C0353E8003F23F0100311\r
+:101C10000C3242E800310029F3D1ECE738B5044634\r
+:101C20000268136923F44053C1680B43136183684E\r
+:101C30000269134342691343C2691A430168CB68BE\r
+:101C400023F4164323F00C031343CB60026853695B\r
+:101C500023F4407381690B4353610368314A934213\r
+:101C600006D002F58062934202D000F0BFFC01E092\r
+:101C700000F0CCFCE369B3F5004F29D00021031834\r
+:101C800049411B1841F10001C90041EA5371DB00D1\r
+:101C9000181863684FEA83024FEA937341F1000119\r
+:101CA000FFF764FA204DA5FB00325109642303FBC2\r
+:101CB00011031B013233A5FB03235B0903F0F00280\r
+:101CC00002EB011203F00F03216813448B6038BD4F\r
+:101CD0000023021843EB0301121841F10001C9006F\r
+:101CE00041EA5271D200101841F100016268921865\r
+:101CF0005B41FFF73BFA0C4DA5FB00325109642311\r
+:101D000003FB1103DB003233A5FB03235B095A00FD\r
+:101D100002F4F87202EB011203F007032168134486\r
+:101D20008B60D4E7001001401F85EB512DE9F04393\r
+:101D300083B005460E4617469946DDF828802C6884\r
+:101D4000246836EA04030CBF4FF0010C4FF0000C7E\r
+:101D5000BC4528D1B8F1FF3FF1D000F0FFFDA0EB6A\r
+:101D60000900404523D8B8F1000F22D02B68DA686B\r
+:101D700012F0040FE3D0802EE1D0402EDFD01A689D\r
+:101D800012F0080FDBD0002401941A6801925B68FE\r
+:101D90000193019B2846FFF713FF08236B6485F826\r
+:101DA0004040012000E0002003B0BDE8F0830320A4\r
+:101DB000FAE70320F8E760B310B5044690F8413025\r
+:101DC00013B3242384F841302268D36823F40053EA\r
+:101DD000D3602046FFF722FF2268136923F4904363\r
+:101DE00013612268536923F02A0353612268D36880\r
+:101DF00043F40053D36000206064202384F8413012\r
+:101E000084F84230606310BD80F84030FFF7A2FED6\r
+:101E1000D7E7012070472DE9F04182B01E4690F8C7\r
+:101E20004130DBB2202B56D104460D4690460029A6\r
+:101E300055D00AB901204FE000234364212380F8E4\r
+:101E4000413000F08BFD0746A4F82480A4F82680DA\r
+:101E5000A368B3F5805F02D04FF0000814E0236957\r
+:101E60002BB34FF000080FE0202384F8413003200B\r
+:101E700032E038F8023B2268C3F308035360E28C77\r
+:101E800092B2013A92B2E284E38C9BB293B1009693\r
+:101E90003B46002280212046FFF748FF0028E3D17F\r
+:101EA000002DE6D015F8012B23685A60E7E7A84615\r
+:101EB0000025E9E700963B46002240212046FFF737\r
+:101EC00035FF18B9202384F8413005E0202384F839\r
+:101ED0004130032000E0022002B0BDE8F081012083\r
+:101EE000FAE72DE9F04182B01E4690F84230DBB2AD\r
+:101EF000202B59D104460D469046002958D00AB9E6\r
+:101F0000012052E000234364222280F84220036330\r
+:101F100000F024FD0746A4F82C80A4F82E80A368C6\r
+:101F2000B3F5805F02D04FF000081CE0236913B1C5\r
+:101F30004FF0000817E0A846002514E0202384F89D\r
+:101F40004230032031E023685B68C3F3080328F8BC\r
+:101F5000023B03E023685B682B700135E28D92B28F\r
+:101F6000013A92B2E285E38D9BB2C3B100963B4643\r
+:101F7000002220212046FFF7D9FE0028DED1002DC7\r
+:101F8000E1D0A368B3F5805FE4D013B92369002BD7\r
+:101F9000E0D023685B6803F07F032B70DDE720232C\r
+:101FA00084F84230002000E0022002B0BDE8F08159\r
+:101FB0000120FAE7002800F0E08170B582B0044605\r
+:101FC000036813F0010F3BD09F4B9B6803F00C0399\r
+:101FD000042B2CD09C4B9B6803F00C03082B21D0C6\r
+:101FE0006368B3F5803F4FD0B3F5A02F52D0964B26\r
+:101FF0001A6822F480321A601A6822F480221A6069\r
+:102000006368002B50D000F0A9FC05468E4B1B687E\r
+:1020100013F4003F14D100F0A1FC401B6428F5D953\r
+:102020000320B1E1884B5B6813F4800FD8D0864B56\r
+:102030001B6813F4003F03D06368002B00F09F81FE\r
+:10204000236813F0020F54D07F4B9B6813F00C0FE2\r
+:102050003ED07D4B9B6803F00C03082B33D0E36824\r
+:10206000002B68D0794B01221A6000F077FC0546FE\r
+:10207000754B1B6813F0020F54D100F06FFC401B2E\r
+:102080000228F5D903207FE16F4A136843F48033B7\r
+:102090001360B5E76C4B1A6842F480221A601A6824\r
+:1020A00042F480321A60ABE700F058FC0546664BFC\r
+:1020B0001B6813F4003FC3D000F050FC401B6428A1\r
+:1020C000F5D9032060E1604B5B6813F4800FC6D143\r
+:1020D0005D4B1B6813F0020F03D0E368012B40F047\r
+:1020E0005081594A136823F0F803216943EAC10378\r
+:1020F0001360236813F0080F42D063696BB3534B2E\r
+:102100000122C3F8802E00F029FC05464E4B5B6F80\r
+:1021100013F0020F34D100F021FC401B0228F5D946\r
+:10212000032031E1484A136823F0F803216943EAA8\r
+:10213000C1031360DDE7454B00221A6000F00EFC7E\r
+:102140000546414B1B6813F0020FD2D000F006FC8D\r
+:10215000401B0228F5D9032016E13C4B0022C3F8AE\r
+:10216000802E00F0FBFB0546374B5B6F13F0020F30\r
+:1021700006D000F0F3FB401B0228F5D9032003E151\r
+:10218000236813F0040F77D02F4B1B6C13F0805F84\r
+:1021900033D1002301932C4B1A6C42F080521A6405\r
+:1021A0001B6C03F080530193019B0125284B1B6896\r
+:1021B00013F4807F23D0A368012B34D0052B38D0B3\r
+:1021C000214B1A6F22F001021A671A6F22F00402E3\r
+:1021D0001A67A368002B3DD000F0C0FB06461A4BDF\r
+:1021E0001B6F13F0020F46D100F0B8FB801B41F2C9\r
+:1021F00088339842F3D90320C6E00025D6E7144A75\r
+:10220000136843F48073136000F0A8FB0646104B7C\r
+:102210001B6813F4807FCED100F0A0FB801B022846\r
+:10222000F5D90320B0E0084A136F43F001031367A8\r
+:10223000CFE7054B1A6F42F004021A671A6F42F09B\r
+:1022400001021A67C5E700BF00380240000047429C\r
+:102250000070004000F082FB0646524B1B6F13F0EB\r
+:10226000020F08D000F07AFB801B41F288339842BD\r
+:10227000F3D9032088E0EDB9A369002B00F0838037\r
+:10228000484A926802F00C02082A51D0022B17D05B\r
+:10229000454B00221A6600F061FB0446414B1B6867\r
+:1022A00013F0007F42D000F059FB001B0228F5D943\r
+:1022B000032069E03B4A136C23F080531364DBE78F\r
+:1022C000394B00221A6600F049FB0546354B1B6866\r
+:1022D00013F0007F06D000F041FB401B0228F5D927\r
+:1022E000032051E0E369226A1343626A43EA8213DE\r
+:1022F000A26A5208013A43EA0243E26A43EA0263ED\r
+:10230000284A5360284B01221A6600F027FB044636\r
+:10231000244B1B6813F0007F06D100F01FFB001B4D\r
+:102320000228F5D903202FE000202DE000202BE02B\r
+:10233000012B2BD01B4B5B6803F48001E2699142B7\r
+:1023400026D103F03F02216A8A4223D1616A47F60F\r
+:10235000C0721A40B2EB811F1ED103F44031A26A51\r
+:102360005208013AB1EB024F18D103F07063E26AF0\r
+:10237000B3EB026F14D1002006E00120704701206A\r
+:1023800002E0012000E0002002B070BD0120FBE768\r
+:102390000120F9E70120F7E70120F5E70120F3E745\r
+:1023A0000120F1E7003802400000474208B5314BF8\r
+:1023B0009B6803F00C03042B57D0082B57D12D4BEF\r
+:1023C0005A6802F03F025B6813F4800F2AD0294B51\r
+:1023D0005968C1F3881C4FEA4C11B1EB0C006EEB4D\r
+:1023E0000E0E4FEA8E1343EA90638101091A63EBE4\r
+:1023F0000E03DB0043EA5173C90011EB0C0C43F1EF\r
+:102400000003590200234FEA4C2041EADC51FEF759\r
+:10241000ADFE184B5B68C3F3014301335B00B0FBB7\r
+:10242000F3F025E0134B5968C1F3881C4FEA4C11B7\r
+:10243000B1EB0C006EEB0E0E4FEA8E1343EA906385\r
+:102440008101091A63EB0E03DB0043EA5173C900F3\r
+:1024500011EB0C0C43F10003990200234FEA8C208E\r
+:1024600041EA9C51FEF782FED3E7034800E00348AF\r
+:1024700008BD00BF0038024000127A000024F400BA\r
+:10248000002800F09B8070B50D4604464F4B1B683A\r
+:1024900003F007038B4208D2CBB24C4A1370136887\r
+:1024A00003F007038B4240F08B80236813F0020F88\r
+:1024B00017D013F0040F04D0454A936843F4E05357\r
+:1024C0009360236813F0080F04D0414A936843F4E3\r
+:1024D000604393603E4A936823F0F003A1680B4386\r
+:1024E0009360236813F0010F32D06368012B21D071\r
+:1024F0009A1E012A25D9364A126812F0020F61D0BD\r
+:1025000033498A6822F0030213438B6000F026FAF5\r
+:1025100006462F4B9B6803F00C036268B3EB820FF7\r
+:1025200016D000F01BFA801B41F288339842F0D994\r
+:10253000032042E0264A126812F4003FE0D1012055\r
+:102540003BE0234A126812F0007FD9D1012034E029\r
+:102550001E4B1B6803F00703AB4207D9EAB21B4BC3\r
+:102560001A701B6803F00703AB422DD1236813F0E8\r
+:10257000040F06D0164A936823F4E053E1680B4336\r
+:102580009360236813F0080F07D0114A936823F46F\r
+:102590006043216943EAC1039360FFF707FF0C4BD7\r
+:1025A0009B68C3F303130B4AD35CD8400A4B1860F3\r
+:1025B0000A4B186800F086F9002070BD01207047B2\r
+:1025C0000120FAE70120F8E70120F6E7003C02408D\r
+:1025D000003802404C2C00086C00002068000020ED\r
+:1025E000014B1868704700BF6C00002008B5FFF76A\r
+:1025F000F7FF044B9B68C3F38223034AD35CD840A4\r
+:1026000008BD00BF003802405C2C000808B5FFF789\r
+:10261000E7FF044B9B68C3F34233034AD35CD840C3\r
+:1026200008BD00BF003802405C2C000800230F2BBF\r
+:1026300000F2D28070B582B060E085685E0003244D\r
+:10264000B44025EA0405CC68B4402C438460456856\r
+:1026500025EA02054C68C4F300129A402A434260FE\r
+:102660005AE0DC08083450F8246003F007029500B3\r
+:102670000F22AA4026EA020E0A69AA4042EA0E0286\r
+:1026800040F824205CE0042200E0002202FA0EF26E\r
+:102690002A430234514D45F82420514A94686FEA88\r
+:1026A0000C0224EA0C054E6816F4801F01D04CEA97\r
+:1026B00004054B4CA560E46802EA04054E6816F474\r
+:1026C000001F01D04CEA0405454CE560646802EA4D\r
+:1026D00004054E6816F4003F01D04CEA0405404C56\r
+:1026E0006560246822404D6815F4803F01D04CEAB3\r
+:1026F00004023B4C226001330F2B6BD801229A401D\r
+:102700000C6804EA020C32EA0404F4D14C6804F0C8\r
+:102710000304013C012C90D94A6802F00302032A09\r
+:1027200009D0C4685D000322AA4024EA02048A6832\r
+:10273000AA402243C2604A6802F00302022A90D0F3\r
+:1027400004684FEA430E032202FA0EF224EA02045E\r
+:102750004A6802F0030202FA0EF2224302604A685B\r
+:1027600012F4403FC7D0002201921E4A546C44F438\r
+:1027700080445464526C02F480420192019A9C0895\r
+:10278000A51C164A52F8255003F003024FEA820EA8\r
+:102790000F2202FA0EF225EA0205134A90423FF494\r
+:1027A00074AF02F5806290420ED002F580629042D2\r
+:1027B0000CD002F5806290420AD002F5806290420D\r
+:1027C0003FF461AF072261E701225FE702225DE784\r
+:1027D00003225BE702B070BD704700BF00380140C4\r
+:1027E000003C0140003802400000024003691942E9\r
+:1027F00001D001207047002070470AB18161704705\r
+:102800000904816170470000074AD36823F4E0633C\r
+:102810001B041B0C000200F4E060034343F0BF63A1\r
+:1028200043F40033D360704700ED00E000B5194B6E\r
+:10283000DB68C3F30223C3F1070CBCF1040F28BF0C\r
+:102840004FF0040C03F1040EBEF1060F18D9033B40\r
+:102850004FF0FF3E0EFA0CFC21EA0C0199400EFAF3\r
+:1028600003F322EA0303194300280BDB0901C9B271\r
+:1028700000F1604000F5614080F800135DF804FB52\r
+:102880000023E5E700F00F000901C9B2024B19541B\r
+:10289000F4E700BF00ED00E014ED00E00138B0F116\r
+:1028A000807F0BD24FF0E0235861054AF02182F877\r
+:1028B00023100020986107221A6170470120704799\r
+:1028C00000ED00E010B504460E4B18784FF47A7313\r
+:1028D000B3FBF0F30C4A1068B0FBF3F0FFF7DEFF38\r
+:1028E00068B90F2C01D901200AE0002221464FF0DF\r
+:1028F000FF30FFF79BFF054B1C60002000E001202C\r
+:1029000010BD00BF640000206C00002068000020A3\r
+:1029100008B50B4B1A6842F400721A601A6842F448\r
+:1029200080621A601A6842F480721A600320FFF70E\r
+:102930006BFF0020FFF7C6FFFFF7F0F8002008BD8F\r
+:10294000003C0240034A1168034B1B780B441360A0\r
+:10295000704700BFE000002064000020014B1868B1\r
+:10296000704700BFE000002038B50446FFF7F6FFCF\r
+:102970000546B4F1FF3F02D0044B1B781C44FFF71F\r
+:10298000EDFF401BA042FAD338BD00BF6400002019\r
+:10299000034AD2F8883043F47003C2F88830704795\r
+:1029A00000ED00E010B503460C4A0D490D480068E3\r
+:1029B00040B10C4800680344521A934206D8094AB1\r
+:1029C000136010BD0748084C0460F2E7FDF73CFCBB\r
+:1029D0000C2303604FF0FF30F3E700BF00800120BD\r
+:1029E00000040000E4000020E8000020DFF834D0FC\r
+:1029F000FFF7CEFF0C480D490D4A002302E0D458E2\r
+:102A0000C4500433C4188C42F9D30A4A0A4C002338\r
+:102A100001E013600432A242FBD3FDF71BFCFEF77A\r
+:102A2000E9FF7047008001200000002070000020B6\r
+:102A3000B02C000870000020E8000020FEE7000035\r
+:102A4000F8B500BFF8BC08BC9E467047F8B500BF9B\r
+:082A5000F8BC08BC9E4670476B\r
+:102A5800010000000200000004000000080000005F\r
+:102A6800100000002000000040000000800000006E\r
+:102A7800000100000002000000040000000800003F\r
+:102A8800001000000020000001000000020000000B\r
+:102A98000400000008000000100000000100000011\r
+:102AA80002000000000800000010000010000000F4\r
+:102AB800200000004000000080000000253032584F\r
+:102AC8002000000057616974696E6720666F722084\r
+:102AD80066696C6520746F20666C6173682E2E2E93\r
+:102AE8000D0A000066696E69736865640D0A000066\r
+:102AF800307825303258200D0A0000003D3D3D3D1C\r
+:102B08003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DED\r
+:102B18003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DDD\r
+:102B28003D3D3D3D3D3D0D0A000000004D616E7587\r
+:102B38006661637475726572204944203D200D0AF0\r
+:102B480000000000446576696365204944203D2003\r
+:102B58000D0A000048656C6C6F2077656C636F6DBB\r
+:102B68006520746F2074686520454550524F4D208C\r
+:102B780070726F6772616D6D65722120576861743C\r
+:102B880020776F756C6420796F75206C696B652090\r
+:102B9800746F20646F3F0D0A000000005B315D20F8\r
+:102BA80044756D7020526F6D206173206368617287\r
+:102BB8000D0A00005B325D20457261736520636811\r
+:102BC80069700D0A000000005B335D2050726F676A\r
+:102BD80072616D2063686970207669612055415281\r
+:102BE800540D0A0044756D70696E6720524F4D2E62\r
+:102BF8002E2E0D0A0000000045726173696E672071\r
+:102C0800436869702E2E2E0D0A0000004C61756E07\r
+:102C18006368696E672070726F6772616D6D696E47\r
+:102C2800672073657175656E63652E2E2E0D0A001B\r
+:102C3800496E76616C696420696E707574210D0A3D\r
+:102C48000000000000000000000000000102030472\r
+:102C5800060708090000000001020304232D302B99\r
+:102C680020000000686C4C00656667454647000018\r
+:102C780030313233343536373839414243444546AA\r
+:102C8800000000003031323334353637383961626C\r
+:082C98006364656600000000A2\r
+:082CA000FCE4FF7F01000000CD\r
+:042CA80029020008F5\r
+:042CAC000102000819\r
+:102CB00004000020000000000000000000000000F0\r
+:102CC0000000000000000000000000000000000004\r
+:102CD00000000000000000000000000000000000F4\r
+:102CE00000000000000000000000000000000000E4\r
+:102CF00000000000000000000000000000000000D4\r
+:102D000000000000000000000000000000000000C3\r
+:102D10000000000001000000100000000024F4008A\r
+:04000005080029EDD9\r
 :00000001FF\r
index 97ea3d95970de58956aaeee2bc387a85292d33d6..41655248b1d3f2cce62c1371e1cf12fa20600ce5 100644 (file)
@@ -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
index f1656abfcbecfe0b9360830e600ae9874e72b7c7..89fe2f9bd358e71875541337c772863790f4292b 100644 (file)
@@ -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);
-\fARM GAS  /tmp/ccg6eVgO.s                      page 2
+\fARM 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){
-\fARM 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 **** 
-\fARM 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:
+\fARM 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++){
+\fARM 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
-\fARM 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 **** 
+\fARM 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
-\fARM 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);
+\fARM 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){
+\fARM 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 ****   */
+\fARM 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
-\fARM 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
+\fARM 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
-\fARM 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
+\fARM 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
-\fARM 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:
+\fARM 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
-\fARM 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
+\fARM 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
-\fARM 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
+\fARM 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:
-\fARM 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
+\fARM 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:
-\fARM 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 **** }
+\fARM 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
-\fARM 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
+\fARM 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}
-\fARM 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
+\fARM 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
-\fARM 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
+\fARM 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[] = {
-\fARM 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
+\fARM 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);
-\fARM 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
+\fARM 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
-\fARM 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
+\fARM 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:
-\fARM 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
-\fARM 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
-\fARM 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}
-\fARM 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
-\fARM 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;
-\fARM 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:
-\fARM 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 **** {
-\fARM 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:
+\fARM 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
+\fARM 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
+\fARM 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:
+\fARM 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
+\fARM 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
+\fARM 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
+\fARM 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
+\fARM 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
+\fARM 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:
+\fARM 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]
+\fARM 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 **** 
+\fARM 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);
+\fARM 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
+\fARM 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 **** 
+\fARM 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
-\fARM 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"
+\fARM 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
-\fARM 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;
+\fARM 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; i<pTable->wlen; ++i) {
-\fARM 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
+\fARM 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)
-\fARM 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 **** /**
+\fARM 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 **** }
-\fARM 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
+\fARM 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);
-\fARM 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 **** 
+\fARM 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 ****   {
-\fARM 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)) || \
+\fARM 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
-\fARM 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) );
+\fARM 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 **** 
-\fARM 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
+\fARM 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
-\fARM 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 **** {
+\fARM 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
-\fARM 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 ****  */
+\fARM 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 **** 
-\fARM 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 **** {
+\fARM 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
-\fARM 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 **** 
+\fARM 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 **** 
-\fARM 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 **** }
+\fARM 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 ****  */
-\fARM 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 **** }
+\fARM 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 **** /**
-\fARM 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 **** 
+\fARM 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
-\fARM 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
-\fARM 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
-\fARM 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
-\fARM 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;
-\fARM 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
-\fARM 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 
-\fARM 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;
+\fARM 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 ****   {
+\fARM 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]
+\fARM 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]
+\fARM 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
+\fARM 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:
+\fARM 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 
+\fARM 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
+\fARM 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
-\fARM 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:
+\fARM 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
-\fARM 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
-\fARM 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 "<built-in>"
- 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"
-\fARM 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:
+\fARM 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;
+\fARM 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
+\fARM 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 "<built-in>"
+\fARM GAS  /tmp/ccPiCTjg.s                      page 65
+
+
+ 1883                          .file 15 "/usr/include/newlib/stdlib.h"
+\fARM 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
+\fARM 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
-\fARM 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
index 7e9131016c3a35dc78a3664d31e7d5bc390f07db..88057ca34b2407af447a70d6f277e78049f3921e 100644 (file)
Binary files a/build/main.o and b/build/main.o differ
index ea76e6575c46f3192f6486ca1fdece42e1392712..5e1873d58f5b62280d348937cdb7b426bed46a86 100644 (file)
@@ -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 */
-\fARM GAS  /tmp/ccE2gFHF.s                      page 2
+\fARM 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
-\fARM GAS  /tmp/ccE2gFHF.s                      page 3
+\fARM 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 **** /**
-\fARM GAS  /tmp/ccE2gFHF.s                      page 4
+\fARM 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 **** 
-\fARM GAS  /tmp/ccE2gFHF.s                      page 5
+\fARM 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
-\fARM GAS  /tmp/ccE2gFHF.s                      page 6
+\fARM 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:
-\fARM GAS  /tmp/ccE2gFHF.s                      page 7
+\fARM 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
-\fARM GAS  /tmp/ccE2gFHF.s                      page 8
+\fARM 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"
-\fARM GAS  /tmp/ccE2gFHF.s                      page 9
+\fARM 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
index bf8e1920084c973bb7ad01a15a0c9384fca32475..143618ef2702217083183b67b01b409d78ee8777 100644 (file)
@@ -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 */
-\fARM GAS  /tmp/ccjI409r.s                      page 2
+\fARM 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 ****   {
-\fARM GAS  /tmp/ccjI409r.s                      page 3
+\fARM 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 ****   */
-\fARM GAS  /tmp/ccjI409r.s                      page 4
+\fARM 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
-\fARM GAS  /tmp/ccjI409r.s                      page 5
+\fARM 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 ****   */
-\fARM GAS  /tmp/ccjI409r.s                      page 6
+\fARM 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:
-\fARM GAS  /tmp/ccjI409r.s                      page 7
+\fARM 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 */
-\fARM GAS  /tmp/ccjI409r.s                      page 8
+\fARM 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"
-\fARM GAS  /tmp/ccjI409r.s                      page 9
+\fARM 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 (file)
index 0000000..5a04ede
--- /dev/null
@@ -0,0 +1 @@
+Þ­¾ïabcd
\ No newline at end of file