From 053f6701d2c9727c8e6062eafce2c0a03c6d771e Mon Sep 17 00:00:00 2001 From: dekunukem Date: Thu, 10 Nov 2022 10:05:14 +0000 Subject: [PATCH] working on sirius 1 firmware --- captures/sirius 1/uiop.sal | Bin 18271 -> 18210 bytes firmware/sirius 1/MDK-ARM/my_adb.uvguix.allen | 8 +- firmware/sirius 1/MDK-ARM/my_adb/main.crf | Bin 517245 -> 517777 bytes firmware/sirius 1/MDK-ARM/my_adb/main.o | Bin 572472 -> 576228 bytes firmware/sirius 1/MDK-ARM/my_adb/my_adb.axf | Bin 578876 -> 579336 bytes .../MDK-ARM/my_adb/my_adb.build_log.htm | 12 +- firmware/sirius 1/MDK-ARM/my_adb/my_adb.hex | 936 +++++++++--------- firmware/sirius 1/MDK-ARM/my_adb/my_adb.htm | 200 ++-- firmware/sirius 1/MDK-ARM/my_adb/my_adb.map | 692 ++++++------- .../sirius 1/MDK-ARM/my_adb/my_adb_my_adb.dep | 2 +- firmware/sirius 1/Src/main.c | 44 +- firmware/sirius 1/scrap.c | 29 +- 12 files changed, 995 insertions(+), 928 deletions(-) diff --git a/captures/sirius 1/uiop.sal b/captures/sirius 1/uiop.sal index 03fcc2f65d433e34aff87b11a214ab0bef97e1c2..8ee68eb0c0320606ea4271240607652629308e02 100644 GIT binary patch delta 3299 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 delta 3342 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 l2 3 - -1 - -1 + -32000 + -32000 -1 @@ -3607,8 +3607,8 @@ ../Src/main.c 0 - 205 - 206 + 201 + 202 1 0 diff --git a/firmware/sirius 1/MDK-ARM/my_adb/main.crf b/firmware/sirius 1/MDK-ARM/my_adb/main.crf index b9d7f63c97ec84e337034a622ba37f4c2a1f9df1..c6aabff7d77b6dfa774c7ef8ff5c66f23287944a 100644 GIT binary patch delta 5408 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 delta 4963 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 C{mMW9 delta 30920 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 diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.axf b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.axf index 6ab9a9d2f349ab17e8e2c3556cacba663c692443..37705815d4846664185ee17efb44dd12c6cbe2bc 100644 GIT binary patch delta 18023 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 P_}5vgsoso>8^8Yx+&+=7 diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.build_log.htm b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.build_log.htm index 06cc800..65e9334 100644 --- a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.build_log.htm +++ b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.build_log.htm @@ -28,15 +28,15 @@ Project File Date: 11/09/2022 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'my_adb' compiling main.c... -../Src/main.c(209): warning: #111-D: statement is unreachable +../Src/main.c(208): warning: #185-D: dynamic initialization in unreachable code + uint32_t entry_time = HAL_GetTick(); +../Src/main.c(216): warning: #111-D: statement is unreachable return KB_WRITE_ERROR; -../Src/main.c(214): warning: #188-D: enumerated type mixed with another type - HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, value); -../Src/main.c(221): warning: #940-D: missing return statement at end of non-void function "SendBit" - } +../Src/main.c(221): warning: #188-D: enumerated type mixed with another type + HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, bit); ../Src/main.c: 3 warnings, 0 errors linking... -Program Size: Code=7812 RO-data=308 RW-data=32 ZI-data=1904 +Program Size: Code=7840 RO-data=308 RW-data=32 ZI-data=1904 FromELF: creating hex file... "my_adb\my_adb.axf" - 0 Error(s), 3 Warning(s). diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.hex b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.hex index 4d318f4..6dfc091 100644 --- a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.hex +++ b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.hex @@ -1,36 +1,36 @@ :020000040800F2 -:1000000090070020D500000855120008ED100008E8 +:1000000090070020D500000849120008E110000800 :1000100000000000000000000000000000000000E0 -:100020000000000000000000000000009315000820 -:1000300000000000000000009D120008CB15000821 +:10002000000000000000000000000000871500082C +:10003000000000000000000091120008891500086F :100040000501000805010008050100080501000878 :100050000501000805010008050100080501000868 :100060000501000805010008050100080501000858 :100070000501000805010008050100080501000848 :100080000501000800000000000000000501000854 :100090000000000005010008050100080501000836 -:1000A00000000000A1120008050100080501000879 +:1000A0000000000095120008050100080501000885 :1000B0000501000800000000050100080501000816 -:1000C0000348854600F05AF800480047391D0008EB +:1000C0000348854600F05AF800480047091D00081B :1000D000900700200C4880F308880C480168090E3E :1000E0000B4A914205D10B480B4901600B480C4962 :1000F00001600C4880470C480047FEE7FEE7FEE73A :10010000FEE7FEE7FEE70000900700200400000085 :100110001F00000018100240010000000000014014 -:100120000000000031160008C100000830B50B4681 +:1001200000000000F1150008C100000830B50B46C2 :10013000014600202022012409E00D46D5409D42C1 :1001400005D31D469540491B254695404019154647 :10015000521E002DF1DC30BDD2B201E00270401C15 :10016000491EFBD270470022F6E710B513460A4637 :1001700004461946FFF7F0FF204610BD064C012546 :10018000064E05E0E36807CC2B430C3C984710343F -:10019000B442F7D3FFF798FF981F0008B81F000874 +:10019000B442F7D3FFF798FFB41F0008D41F00083C :1001A00070B50024014620314A78022A03D0042188 :1001B0008163012416E0026813680E25AB431360C7 :1001C000026813685B085B0013600122056C13462C :1001D000AB40C56B6B604A7000220A70416B00290E -:1001E00000D08847204670BD31B500F0B9F8009CBA -:1001F0000546601C00D0641C00F0B2F8401BA04211 +:1001E00000D08847204670BD31B500F0B3F8009CC0 +:1001F0000546601C00D0641C00F0ACF8401BA04217 :10020000FAD338BDF8B5002389E001249C402A4682 :10021000A44622407ED04C68022C01D0122C0CD176 :10022000DC08A40027183C6A5D07ED0E0F26AE40DF @@ -51,463 +51,465 @@ :10031000B60200E002E000D51543E5605B1C0A6808 :100320001546DA4000D070E7F8BD0000001002402A :10033000000001400004004800080048000401409B -:100340000069084000D00120704742694A4042617C -:100350007047002A01D081617047816270470000B8 -:1003600001480068704700000C00002070B50400D0 -:1003700005D025466035687A002802D006E00120C5 -:1003800070BD00202872204600F028FE24206872EC -:1003900020680168490849000160204601F088FA98 -:1003A0000128EDD0606A002802D0204601F0E7F96C -:1003B000206841680922D202914341602068816827 -:1003C0002222914381602068816808221143816064 -:1003D00020680168012211430160204601F034FACF -:1003E00070BD000002480168491C016070470000B0 -:1003F0000C00002010B5064801681022114301606E -:10040000002000F007F800F017F8002010BD0000F1 -:100410000020024010B5044600F0E8F87D21C90034 -:10042000FFF784FE00F0EAFC00222146501E00F097 -:100430002FF8002010BD000008B50F488169012287 -:1004400011438161816911400091C26901040A432D -:10045000C261C0690022084000901146501F00F0A0 -:1004600017F800221146901E00F012F800221146E3 -:10047000501E00F00DF808BD00100240C106C90E64 -:1004800001208840014908607047000000E100E059 -:1004900010B500F0E1FE10BDF8B505464E480E4619 -:1004A0000068C007C00FB0420AD24B480168490833 -:1004B0004900314301600068C007C00FB04270D1ED -:1004C0002878464C800705D56068F0218843A968E4 -:1004D000084360602878C00753D06868012817D0A7 -:1004E000022818D0032819D021688907002958DA72 -:1004F00061688908890001436160FFF731FF69681D -:100500000746012913D002291DD0032927D034E042 -:1005100021688903EAE721688901E7E7616BC9037C -:10052000E4E7FFF71DFFC11B2D48814223D8606817 -:100530000007800F0128F4D123E0FFF711FFC11B52 -:100540002748814217D860680007800F0228F4D13D -:1005500017E0FFF705FFC11B214881420BD86068F7 -:100560000007800F0328F4D10BE0FFF7F9FEC11B51 -:100570001B48814201D90320F8BD60680007800F45 -:10058000F3D115480168C907C90FB1420BD90168F9 -:1005900049084900314301600068C007C00FB042FC -:1005A00001D00120F8BD2878400706D560680721F2 -:1005B00009028843E9680843606000F02DF861682B -:1005C000084A0906090F515CC84007490860002025 -:1005D000FFF720FF0020F8BD00200240001002407D -:1005E000881300007F1F00081000002001480068E9 -:1005F0007047000010000020044805490068496861 -:10060000044A4905490F515CC8407047100000205A -:10061000001002408F1F000830B516A30FCB89B021 -:100620006C460FC417A30FCB0FC41A494A680C209D -:10063000144604401848042C05D0184B082C04D04C -:100640000C2C00D1184609B030BD9402240F6D4621 -:100650002C5DC96A04AD0907090FD203695C920FCA -:10066000022A02D0032A00D11846FFF75FFD60433B -:10067000E9E7000002030405060708090A0B0C0D50 -:100680000E0F10100102030405060708090A0B0CDF -:100690000D0E0F100010024000127A00006CDC02F8 -:1006A000FEB504460078F04EF04DC00748D06868AB -:1006B0000007800F01281FD068680007800F0228FC -:1006C00004D16868C003800F022815D06168012931 -:1006D00019D001208004002901D0052917D02968EC -:1006E000B1432960296881432960606800281BD0D4 -:1006F000FFF736FE074613E02868800320D56068C0 -:10070000002876D01CE0286830432860EDE729688F -:1007100001432960F7E7FFF723FEC01B642869D86F -:1007200028688003F7D50BE0FFF71AFE074604E0C0 -:10073000FFF716FEC01B6428F1D828688003F7D4A1 -:10074000207880073ED568680007800F14D068685D -:100750000007800F022804D16868C003800F0128B9 -:100760000AD0E068002828681DD0012108432860CD -:10077000FFF7F6FD07460BE0286880070BD5E06819 -:10078000012836D107E0FFF7EBFDC01B0228C6D8D1 -:1007900028688007F7D52868F82188432169C900AF -:1007A000084328600EE0400840002860FFF7D8FDAD -:1007B000074604E0FFF7D4FDC01B0228AFD8286825 -:1007C0008007F7D42078000724D5E0690028686AFC -:1007D00011D0012108436862FFF7C2FD074604E01B -:1007E000FFF7BEFDC01B022899D8686A8007F7D5BD -:1007F00010E036E1D1E0400840006862FFF7B0FD4C -:10080000074604E0FFF7ACFDC01B022887D8686AE2 -:100810008007F7D4207804274007002861DA0020F9 -:100820000190E869C00008D4E969B8060143E961AC -:10083000E96901400120009101908D480168C905D6 -:1008400011D40168821511430160FFF789FD009002 -:1008500005E0FFF785FD0099401A642897D8844881 -:100860000068C005F5D5A06801280AD0002801D08D -:10087000052811D0286A400840002862286AB84339 -:1008800002E0286A012108432862A068002812D0EB -:10089000FFF766FD00900AE0286A38432862F0E717 -:1008A000FFF75EFD0099411A7248814275D8286AA7 -:1008B0008007F5D50DE0FFF753FD009006E0FFF748 -:1008C0004FFD0099411A6B48814266D8286A80071B -:1008D000F5D40198002804D0E9690120000781437C -:1008E000E9612078C00635D5606901280CD0401D2B -:1008F000686B24D038436863686B400840006863C5 -:10090000FFF72EFD074622E0686B38436863686B8B -:10091000012108436863FFF723FD074604E0FFF762 -:100920001FFDC01B022838D8686B8007F7D5686B9D -:10093000F8218843A169C900084368630AE0B84305 -:100940006863F4E7FFF70CFDC01B022825D8686B2D -:100950008007F7D42078800637D568680007800FB5 -:10096000032813D068680007800F022804D1686844 -:10097000C003800F032809D0206A0028686B16D0B6 -:1009800030436863FFF7ECFC06460CE0686BC0037D -:100990001BD5206A012864D117E05BE0FFF7E0FC7B -:1009A000801B022856D8686BC003F7D50DE0B04312 -:1009B0006863FFF7D5FC064604E0FFF7D1FC801B17 -:1009C000022847D8686BC003F7D4606A002846D075 -:1009D00069680907890F022943D0012636060228D3 -:1009E000286805D0B0432860FFF7BAFC044633E01E -:1009F000B0432860FFF7B4FC074604E0FFF7B0FC03 -:100A0000C01B022826D828688001F7D4E86A216B29 -:100A1000000900010843E862A16AE06A08436968C6 -:100A20007B22D203914308436860286830432860E2 -:100A3000FFF796FC044604E0FFF792FC001B022837 -:100A400008D828688001F7D509E0FFF789FC001B6A -:100A5000022801D90320FEBD28688001F5D40020BA -:100A6000FEBD0120FEBD000000000100001002409C -:100A7000007000408813000070470000F8B504467D -:100A80000068426881684B0605D4CB0703D0530643 -:100A900001D5E16C04E08B0705D5130603D5216D64 -:100AA00020468847F8BDFF2361331942FAD09306E8 -:100AB000F8D523464D064033002D09DA5D7F032D1E -:100AC0003CD0256E042635432566C56885680095AB -:100AD0008E060125002E08DA266E2E4326668668CD -:100AE000009606684027BE430660C80506D5206EFE -:100AF000082108432066206880680090206E002846 -:100B0000D0D020684168E026B14341605D7790070E -:100B100018D020684168890889004160A06D0B4D9C -:100B2000002803D04563A06DFFF73AFB606D0028F5 -:100B3000B8D04563606DFFF733FBF8BDC1688068CE -:100B40000090F8BD2046FFF797FFF8BD131400088A -:100B5000F8B5040007D0002625464035A662687F18 -:100B6000002802D005E00120F8BD2E77204600F0D5 -:100B70004BF802236B7720680168402291430160A3 -:100B80000721E0680902884201D9002201E0012220 -:100B900012030F273F02B84202D0884200D0A6625B -:100BA000276B002F05D1884201D9236301E0012082 -:100BB0002063A16860686369084321691943084399 -:100BC0000123A1695B0219400843E1690843216AD6 -:100BD0000843A16A084321680860616B606AA369E1 -:100BE00008431B0C0427E1683B4019430843216874 -:100BF000104348602068C1697A029143C16126664A -:100C0000012068770020F8BD00B50068114987B061 -:100C100088421DD11048826981140A43826180692B -:100C200008400590F0200090022001900021032050 -:100C300003900291049109206946C006FFF7E2FA89 -:100C4000002211461920FFF723FC1920FFF716FC9C -:100C500007B000BD003001400010024070470000A6 -:100C6000F0B504468C464034217F0025C76896467F -:100C700001290CD001212177667F4168012E0CD01B -:100C8000CA1FFD3A07D18168002904D101E0022082 -:100C9000F0BD042E01D0022540E0614600291BD0A2 -:100CA0007146002918D0002B16D0617F042901D08D -:100CB0000521617700210166614681638387C387CF -:100CC00071460164A380E380072109028F4205D9A0 -:100CD000144AC264144A04E001251FE0134AC264A6 -:100CE000134A0265012212038F4202D8E1880229C9 -:100CF00003D301684B68934302E001684B681343D8 -:100D00004B6001684A68E0231A434A600068016842 -:100D1000490603D401684022114301600020207776 -:100D20002846F0BDB112000845130008E71200087C -:100D30007913000870B5012211022548FFF709FB5D -:100D4000FFF70EFB23491E30234C48602078012515 -:100D5000DE2800D00D70A078082802D0012807D026 -:100D60002EE01D48A2792179203000F08FFF27E086 -:100D7000194820212038FFF7F6F91748CD212038EF -:100D8000017061784170802686700521C170002154 -:100D90004171817108220446C5714C34635C002B9B -:100DA0000BD0022B02D0012B02D004E0815402E0D0 -:100DB0000B4633438354521CD2B2491C1029EDDB3D -:100DC000054A2023D11A0548FFF74AFF70BD0000ED -:100DD00000040048040000205401002020000020EE -:100DE000042204490428086902D09043086170472E -:100DF0001043FBE700E000E070470000094910B530 -:100E0000401E884201D9012010BD074C60610321BA -:100E1000081F00F021FA0020A061072020610020B7 -:100E200010BD0000FFFFFF0000E000E010B5FFF77D -:100E3000E3FF10BD70B502462032137F012B1BD09B -:100E40000123137702245477046865687026B5433C -:100E50006560046865680E68354365600468A56868 -:100E60008026B543A5600068846849680C438460A7 -:100E700053770020107770BD022070BD70B504005C -:100E800005D025462035687F002802D006E00120E5 -:100E900070BD00202877204600F00AF8022068770D -:100EA000211D206800F0F2FB01206877002070BD52 -:100EB00008B5006801218907884207D10448C16943 -:100EC00001221143C161C0691040009008BD0000BB -:100ED000001002400222014620314A77026813685E -:100EE000012003431360487700207047F8B505469A -:100EF00004462035287F012817D001272F770220AC -:100F00006877226890687726FF23B0431B029843D6 -:100F100090600868502837D00EDC202857D006DCB7 -:100F200000284ED0102840D14EE00220F8BD3028D5 -:100F300050D0402839D13CE060282DD0702817D0FF -:100F400001221203801A0ED090422ED1CB684A683B -:100F50008968206800F0DCFB206881680122920328 -:100F60001143816021E020688168C908C900F8E761 -:100F7000CB684A688968206800F0CAFB21688868E5 -:100F8000B0433043886010E0CA684968206800F0C8 -:100F9000D2FB5021206806E0CA684968206800F04A -:100FA000DBFB6021206800F0BEFB6F770020287714 -:100FB000F8BDCA684968206800F0BDFB4021206880 -:100FC000F1E700212068EEE710212068EBE72021FF -:100FD0002068E8E730212068E5E7000000B50068F8 -:100FE0000E4987B0884216D10D48C26901214904D3 -:100FF0000A43C261C0690840059004200090122095 -:101000000190012103200390029104910920694677 -:10101000C006FFF7F7F807B000BD0000004400402D -:1010200000100240FFB5064604466036707A83B071 -:101030000D46202858D1002D0CD00598002809D045 -:101040000120A1680003814207D12069002804D152 -:10105000E80702D0012007B0F0BD307A012843D064 -:10106000012030720020E06621207072FFF778F9CD -:10107000019027464037059838820598788218E015 -:10108000788A401E788206980090002280212046AF -:10109000019B00F0A5FC002818D10120A1680003E5 -:1010A000814202D12069002812D021682878088561 -:1010B0006D1C788A0028E3D1069800900022402118 -:1010C0002046019B00F08CFC002808D00320C2E7DA -:1010D00028882168C005C00D0885AD1CE9E72020DF -:1010E000707200203072B6E70220B4E7FEE700001D -:1010F000F0B5244887B04269012189040A4342615E -:1011000042690A400592426949100A4342614069B6 -:101110004C1208400590002221461B48FFF719F9A0 -:101120000921CF0601223846FFF713F900220221D8 -:101130003846FFF70EF9009400240125019502942A -:10114000694611480394FFF75DF8092000901120CB -:1011500001900294694603943846FFF753F802263B -:10116000029469463846009601950394FFF74AF8C1 -:1011700001946946044800960294FFF743F807B0CB -:10118000F0BD0000001002400004004810B50D48FA -:101190000B49016000214160816001614161816111 -:1011A0000722016212024162C2608162072201636A -:1011B000C2624163FFF7CCFC002800D0FEE710BDFF -:1011C000003001402000002010B50121124886B0F7 -:1011D0008907016000242F21846041600461611E41 -:1011E0008461C160FFF74AFE002800D0FEE70120BD -:1011F0000003009069460848FFF778FE002800D0F9 -:10120000FEE7049404A904480594FFF713FE0028A0 -:1012100000D0FEE706B010BD8400002010B50C48D9 -:101220000A490160E1214902416000218160C160F9 -:1012300001618161C1610822016242614162FFF77F -:1012400095F8002800D0FEE710BD000000440040E3 -:10125000C4000020704700008307FF22DB0E9A4085 -:101260008907090E994000280BDA0007000F08389B -:10127000830808489B001818C36993430B43C36154 -:101280007047830804489B001B1818689043084364 -:101290001860704700ED00E000E400E070470000D7 -:1012A00010B50248FFF7EAFB10BD00002000002047 -:1012B00010B50168C968026C1180016C891C016459 -:1012C00001464031CA88521ECA80C988002909D106 -:1012D00001684A6840239A434A60C18F002901D1BE -:1012E00000F06EF810BD10B501464031CC8803689F -:1012F000026C012C11D9DB681380026C921C026411 -:10130000CA88921ECA80CA88012A0DD10268536811 -:10131000012424032343536006E01C7B531C036415 -:101320001470CA88521ECA80C988002909D1016870 -:101330004A6860239A434A60C18F002901D100F0B6 -:101340003FF810BD10B5816B02680988D160816BD0 -:10135000891C8163C18F491EC187C18F00290AD1B1 -:1013600001684A6880239A434A604621095A002945 -:1013700001D100F025F810BD10B5C38F0268816B54 -:10138000022B07D30988D160816B891C8163C18FCF -:10139000891E05E04B1C836309781173C18F491EB8 -:1013A000C187C18F00290AD101684A6880239A4306 -:1013B0004A604621095A002901D100F001F810BD08 -:1013C00070B50446FEF7CCFF024620684168202530 -:1013D000A94341606421204600F024F8002802D08F -:1013E000206E28432066226E204601214030002ACC -:1013F00004D041772046FFF73FFB70BD427F417725 -:10140000042A204602D0FFF795FC70BDFFF726FCAA -:1014100070BD10B5406A002146221152C187FFF706 -:101420002BFB10BDF8B50F460B4615460092032165 -:1014300004460022C90200F01BF82026002812D121 -:101440003B46002280212046009500F05CF80028F1 -:1014500009D103213B46002249022046009500F0B5 -:1014600007F8002803D0206E304320660320F8BD23 -:10147000F8B51D4617460E4604463DE003214902D5 -:101480008E4205D1002F03D1017B684601700078A0 -:10149000681C31D0002D05D0FEF762FF0699401A76 -:1014A000A84229D320684168E022914341606068E6 -:1014B000C11FFD390CD10121A068C903884202D0A7 -:1014C0004911884204D1206801684022914301609B -:1014D0000120A16A4003814207D121680A68824342 -:1014E0000A6021680A6802430A600120403460777C -:1014F000002020770320F8BD206881683140B94280 -:10150000BCD10020F8BDF8B51D4617460E4604466E -:1015100033E0681C31D0002D05D0FEF721FF06997D -:10152000401AA84229D320684168E02291434160D3 -:101530006068C11FFD390CD10121A068C903884230 -:1015400002D04911884204D12068016840229143A9 -:1015500001600120A16A4003814207D121680A6825 -:1015600082430A6021680A6802430A60012040340D -:101570006077002020770320F8BD2068816830461E -:10158000884304D00020B842C3D10020F8BD012018 -:10159000F9E7704770B509240246E40601212046A8 -:1015A000FEF7D7FE002208212046FEF7D2FEFF25D7 -:1015B0009135284600F04CFB012208212046FEF719 -:1015C000C8FE284600F044FB70BD10B5FEF70AFFC8 -:1015D000FFF72CFC10BD10B592B020200090012028 -:1015E0000024089009946846FFF75AF8002800D0B4 -:1015F000FEE707200D9003200E900F940121109418 -:101600000DA8FEF749FF002800D0FEE7FEF7EEFF29 -:101610007D21C900FEF78AFDFFF7F0FB0420FFF7EC -:10162000DFFB00221146501EFEF732FF12B010BD44 -:10163000134801680122114301604168114A1140B9 -:1016400041600168104A1140016001680122920462 -:101650009143016041683F22120491434160C16A95 -:1016600009090901C162016BFF22D4329143016370 -:10167000416B4908490041630021816070470000C7 -:10168000001002400CB8FF08FFFFF6FEF0B502683C -:101690001A4B0124A4071A4D984203D0A04201D04E -:1016A000A84203D17026B2434E683243154E164FFE -:1016B00098420AD0A04208D0A84206D0134CA042BB -:1016C00003D0B04201D0B84204D103242402A24383 -:1016D000CC6822438024A2434C69224302608A687A -:1016E000C2620A688262984203D0B04201D0B84216 -:1016F00001D10969016301214161F0BD002C014064 -:101700000004004000440140004801400020004027 -:1017100030B58468FF252D021B021343AC430B43F5 -:101720002343836030BD826870239A430A430721B4 -:101730000A438260704730B5036A046A6408640033 -:1017400004628469F025AC43120122430A24A343B6 -:101750000B438261036230BD30B5036A1024A3439A -:1017600003628469036A0F252D031203AC432243ED -:10177000A024A343090119438261016230BD10B561 -:10178000818CC90707D001684A6801235B049A432A -:10179000836A1A434A60818C890707D501684A68C1 -:1017A00001231B049A43C36A1A434A60818C490788 -:1017B00007D501684A6801239B049A43036B1A43C7 -:1017C0004A60818C090707D501684A680123DB0359 -:1017D0009A43436B1A434A60818CC90607D5026855 -:1017E000916801231B039943836B19439160818C9A -:1017F000890607D501688A6801235B039A43C36B96 -:101800001A438A60818C490612D503685A680121FF -:101810000905046C8A4322435A60026C8A4207D14C -:101820000268516803235B059943436C1943516077 -:10183000818C090607D501684A680123DB04806CA6 -:101840009A4302434A6010BDF8B500260446C666B6 -:10185000FEF786FD05461449206888421DD10068C0 -:10186000124F000709D501212B46002249052046C9 -:10187000009700F0B5F800280DD1206800684007F7 -:101880000BD501212B46002289052046009700F048 -:10189000A7F8002801D00320F8BD20206034607232 -:1018A000A07226720020F8BD00380140FFFFFF0142 -:1018B000F8B504462369A268E5691A4363691020F4 -:1018C0002B43002125681A432B680E463E4F3B40B0 -:1018D00013432B6023685A6803252D03AA43E56848 -:1018E0002A435A60236AA26925681A43AB680B270A -:1018F0003F02BB431343AB60344A2568954210D185 -:10190000334A126B9207920F0ED0012A05D0022A99 -:1019100005D0032A09D1022007E0042005E00820B1 -:1019200003E02C4A954200D100200122E369D20352 -:10193000934224D100280CD002280DD0042813D0C3 -:10194000082817D001260A0912010807400F104382 -:101950002FE0FEF751FE09E061681F4A4808801831 -:10196000FEF7E4FB81B2EEE7FEF756FE6168400049 -:101970004A08F4E76168012248081204EFE70028EA -:1019800008D0022809D004280BD0082814D001263A -:101990003046F8BDFEF730FE05E061680F4A4808A2 -:1019A0000CE0FEF739FE61684A088018FEF7BEFBBE -:1019B00080B22168C860EBE7616848088018FEF7CC -:1019C000B5FB80B2E860E3E7F369FFEF0038014060 -:1019D00000100240004400400024F40000127A008D -:1019E000FFB581B017460E4604460A9D1DE0681CEF -:1019F0001BD0002D05D0FEF7B3FC0499401AA84275 -:101A000013D920680168FF22A13291430160206848 -:101A10008168490849008160202060346072A072AA -:101A200000202072032005B0F0BD2068C169304657 -:101A3000884304D00020B842D9D00020F3E7012029 -:101A4000F9E700000FB410B503A9044B044A02984B -:101A500000F018F810BC08BC04B01847751C00084A -:101A60001400002002E008C8121F08C1002AFAD1A1 -:101A700070477047002001E001C1121F002AFBD10E -:101A800070470000FFB58DB00F460546002606E002 -:101A900025280AD0109A0F9990476D1C761C28783B -:101AA0000028F5D1304611B0F0BD00240121674A6D -:101AB000009400E004436D1C2B780846203B9840BE -:101AC0001042F7D128782E2815D1042004436878D5 -:101AD0006D1C2A280AD101CF6D1C00900BE00099E3 -:101AE0000A225143303940186D1C00902878014675 -:101AF00030390929F3D92878692843D006DC002831 -:101B0000D0D063280BD0642804D13BE073280FD0D9 -:101B100075284CD0109A0F999047761C94E038782D -:101B2000694608720020487202A80190012003E073 -:101B3000386801900020C0433F1D61070CD5002488 -:101B400000E0641C00998C420FDA8442F9DB0199B1 -:101B5000095D0029F5D108E0002400E0641C8442FE -:101B6000FCDB0199095D0029F8D1361907E00198DD -:101B700001990078491C0191109A0F999047641EB1 -:101B8000F5D261E00A20019001CF002802DA40423C -:101B90002D2102E0210504D52B216A461172012175 -:101BA00003E0E10701D02021F7E70C9104E00A20CF -:101BB000019001CF00210C910BA90B9108E0019934 -:101BC000FEF7B4FA0A460B993032491E0B910A709F -:101BD0000028F4D10B9803A9081A2030019060075F -:101BE00001D5009801E0012000900199884203DDB1 -:101BF00001460198081A00E000200024009006E049 -:101C000002A8109A005D0F999047641C761C0C98EE -:101C10008442F5DB04E0109A30200F999047761C3F -:101C20000099481E00900029F5DC08E00B980B99FC -:101C30000078491C0B91109A0F999047761C0199D6 -:101C4000481E01900029F1DC6D1C28E709280100DD -:101C500000B5014600F00CF9411800F009F988427E -:101C6000FBD300BD10B502490860FFF733F910BD82 -:101C70000000002013B50A23012269460248FFF73D -:101C8000D1F900981CBD0000C400002010B50C461E -:101C9000034600F01FF8002801D0012010BD19787C -:101CA000586844541978986842541878401C400782 -:101CB000400F1870002010BD10B50446082000F039 -:101CC000A1F86060082000F09DF8A060204600F0B8 -:101CD00025F810BD41780078401C4007400F814234 -:101CE00001D1012070470020704710B54378047877 -:101CF000A34201D1012010BD4468E35C0B708168F0 -:101D00004078085C1070002010BD41780278914244 -:101D100003D0491C4907490F4170704710B504466C -:101D200000202070607008216068FEF71CFA08210E -:101D3000A068FEF718FA10BD0EB5FEF75BFBFFF7C3 -:101D40004AFCFFF7D5F9FFF721FAFFF767FAFFF72B -:101D50003BFA0120002300901A46214921A0FFF7F9 -:101D600071FE2448FFF77EFF00F08AF82148F0302A -:101D7000FFF7A2FF1F482021B030FEF7F4F91D4AFB -:101D80001C482023D032D11A6438FEF769FF1A4C60 -:101D9000FF251A4E01352078002801D000F07EF88A -:101DA000FEF7DEFA6168884204D9002229463046EF -:101DB000FEF7CFFA0F4802AA01A9F030FFF795FF0E -:101DC000002806D10120FFF7E5FB0A48F030FFF7B5 -:101DD0009CFF00F0A1F8014609A0FFF733FEDAE707 -:101DE000441F00082573207625642E25642E256463 -:101DF0000A000000840000200400002000040048C5 -:101E000025640A00F0B50B30C108C900144F002644 -:101E1000144A0FE003688B420BD38B4205D95C1A3E -:101E20004318456830C3083B00E04368136002C0B4 -:101E300004E0021D10680028ECD13046002803D1D0 -:101E40003868002801D00020F0BD064A064810601E -:101E5000064A121AD208D20044C001203860D7E7DF -:101E60001C00002018000020940100209003002096 -:101E7000024800680068406A7047000000000020C7 -:101E800005480021016641668166C166024901205C -:101E90006031C873704700002001002012A0FFF7D6 -:101EA000D1FD144D0024295D13A0FFF7CBFD641C68 -:101EB000202CF8DB11A0FFF7C5FD0024FF25134EF1 -:101EC000013529463046FEF740FA6420FEF78CF9CA -:101ED000641C642CF5DBBFF34F8F0E490C48C860BF -:101EE000BFF34F8F00BFFDE7535049204552524F7B -:101EF000520A000054010020256420000A72656225 -:101F00006F6F74696E672E2E2E0A00000004004861 -:101F10000400FA0500ED00E070B5FEF721FA084D67 -:101F2000044602212846FEF70BFA012806D0FEF7E8 -:101F300017FA001B1428F4D9012070BD002070BDD1 -:101F4000000400485553423456432050726F746F5A -:101F5000636F6C20436172640A5369726975732000 -:101F600031202F20566963746F7220393030300A67 -:101F700064656B754E756B656D20323032320000D2 -:101F80000000000000000001020304060708090029 -:101F90000000000102030400B81F00080000002038 -:101FA00020000000641A0008D81F0008200000204C -:101FB00070070000741A0008000000000000000014 -:101FC000000000000000000000127A000000000085 -:081FD000000000000000000009 +:1003400042694A4042617047002A01D0816170478A +:100350008162704701480068704700000C0000206F +:1003600070B5040005D025466035687A002802D0B3 +:1003700006E0012070BD00202872204600F028FE13 +:1003800024206872206801684908490001602046FD +:1003900001F06EFA0128EDD0606A002802D02046F4 +:1003A00001F0CDF9206841680922D20291434160F1 +:1003B0002068816822229143816020688168082238 +:1003C00011438160206801680122114301602046C9 +:1003D00001F01AFA70BD000002480168491C016072 +:1003E000704700000C00002010B50648016810227C +:1003F00011430160002000F007F800F017F800201A +:1004000010BD00000020024010B5044600F0E8F8DE +:100410007D21C900FFF78AFE00F0EAFC0022214698 +:10042000501E00F02FF8002010BD000008B50F4846 +:100430008169012211438161816911400091C26982 +:1004400001040A43C261C0690022084000901146BD +:10045000501F00F017F800221146901E00F012F80D +:1004600000221146501E00F00DF808BD0010024099 +:10047000C106C90E0120884001490860704700008C +:1004800000E100E010B500F0E1FE10BDF8B5054652 +:100490004E480E460068C007C00FB0420AD24B4813 +:1004A000016849084900314301600068C007C00F76 +:1004B000B04270D12878464C800705D56068F0219D +:1004C0008843A968084360602878C00753D06868EB +:1004D000012817D0022818D0032819D021688907CD +:1004E000002958DA61688908890001436160FFF7D3 +:1004F00031FF69680746012913D002291DD003295D +:1005000027D034E021688903EAE721688901E7E719 +:10051000616BC903E4E7FFF71DFFC11B2D48814252 +:1005200023D860680007800F0128F4D123E0FFF78B +:1005300011FFC11B2748814217D860680007800F50 +:100540000228F4D117E0FFF705FFC11B21488142C3 +:100550000BD860680007800F0328F4D10BE0FFF789 +:10056000F9FEC11B1B48814201D90320F8BD606818 +:100570000007800FF3D115480168C907C90FB142C0 +:100580000BD9016849084900314301600068C00780 +:10059000C00FB04201D00120F8BD2878400706D531 +:1005A0006068072109028843E9680843606000F039 +:1005B0002DF86168084A0906090F515CC8400749CF +:1005C00008600020FFF720FF0020F8BD0020024057 +:1005D00000100240881300009B1F0008100000203C +:1005E00001480068704700001000002004480549D9 +:1005F00000684968044A4905490F515CC840704782 +:100600001000002000100240AB1F000830B516A3F8 +:100610000FCB89B06C460FC417A30FCB0FC41A4978 +:100620004A680C20144604401848042C05D0184B86 +:10063000082C04D00C2C00D1184609B030BD94020F +:10064000240F6D462C5DC96A04AD0907090FD2035A +:10065000695C920F022A02D0032A00D11846FFF7E4 +:1006600065FD6043E9E70000020304050607080989 +:100670000A0B0C0D0E0F10100102030405060708EB +:10068000090A0B0C0D0E0F100010024000127A0028 +:10069000006CDC02FEB504460078F04EF04DC00759 +:1006A00048D068680007800F01281FD068680007DD +:1006B000800F022804D16868C003800F022815D07B +:1006C0006168012919D001208004002901D0052981 +:1006D00017D02968B143296029688143296060687F +:1006E00000281BD0FFF736FE074613E0286880037A +:1006F00020D56068002876D01CE028683043286048 +:10070000EDE7296801432960F7E7FFF723FEC01BE7 +:10071000642869D828688003F7D50BE0FFF71AFE34 +:10072000074604E0FFF716FEC01B6428F1D82868CE +:100730008003F7D4207880073ED568680007800FD3 +:1007400014D068680007800F022804D16868C003CD +:10075000800F01280AD0E068002828681DD00121F8 +:1007600008432860FFF7F6FD07460BE0286880077E +:100770000BD5E068012836D107E0FFF7EBFDC01B81 +:100780000228C6D828688007F7D52868F82188434A +:100790002169C900084328600EE040084000286035 +:1007A000FFF7D8FD074604E0FFF7D4FDC01B022881 +:1007B000AFD828688007F7D42078000724D5E069EF +:1007C0000028686A11D0012108436862FFF7C2FD62 +:1007D000074604E0FFF7BEFDC01B022899D8686AEF +:1007E0008007F7D510E036E1D1E0400840006862AC +:1007F000FFF7B0FD074604E0FFF7ACFDC01B022881 +:1008000087D8686A8007F7D4207804274007002833 +:1008100061DA00200190E869C00008D4E969B806EF +:100820000143E961E96901400120009101908D488F +:100830000168C90511D40168821511430160FFF7F1 +:1008400089FD009005E0FFF785FD0099401A6428B6 +:1008500097D884480068C005F5D5A06801280AD05B +:10086000002801D0052811D0286A400840002862DD +:10087000286AB84302E0286A012108432862A06878 +:10088000002812D0FFF766FD00900AE0286A38437E +:100890002862F0E7FFF75EFD0099411A7248814235 +:1008A00075D8286A8007F5D50DE0FFF753FD009055 +:1008B00006E0FFF74FFD0099411A6B48814266D868 +:1008C000286A8007F5D40198002804D0E96901203E +:1008D00000078143E9612078C00635D560690128A9 +:1008E0000CD0401D686B24D038436863686B4008A7 +:1008F00040006863FFF72EFD074622E0686B38432F +:100900006863686B012108436863FFF723FD0746AE +:1009100004E0FFF71FFDC01B022838D8686B800772 +:10092000F7D5686BF8218843A169C900084368635B +:100930000AE0B8436863F4E7FFF70CFDC01B022828 +:1009400025D8686B8007F7D42078800637D568688B +:100950000007800F032813D068680007800F022863 +:1009600004D16868C003800F032809D0206A0028DA +:10097000686B16D030436863FFF7ECFC06460CE06A +:10098000686BC0031BD5206A012864D117E05BE0C7 +:10099000FFF7E0FC801B022856D8686BC003F7D530 +:1009A0000DE0B0436863FFF7D5FC064604E0FFF7AF +:1009B000D1FC801B022847D8686BC003F7D4606A5B +:1009C000002846D069680907890F022943D001260B +:1009D00036060228286805D0B0432860FFF7BAFC25 +:1009E000044633E0B0432860FFF7B4FC074604E058 +:1009F000FFF7B0FCC01B022826D828688001F7D476 +:100A0000E86A216B000900010843E862A16AE06A14 +:100A1000084369687B22D2039143084368602868D1 +:100A200030432860FFF796FC044604E0FFF792FC91 +:100A3000001B022808D828688001F7D509E0FFF7D5 +:100A400089FC001B022801D90320FEBD2868800113 +:100A5000F5D40020FEBD0120FEBD00000000010015 +:100A60000010024000700040881300007047000032 +:100A7000F8B504460068426881684B0605D4CB0788 +:100A800003D0530601D5E16C04E08B0705D51306AE +:100A900003D5216D20468847F8BDFF2361331942F5 +:100AA000FAD09306F8D523464D064033002D09DAD7 +:100AB0005D7F032D3CD0256E042635432566C56831 +:100AC000856800958E060125002E08DA266E2E43D5 +:100AD00026668668009606684027BE430660C805FD +:100AE00006D5206E082108432066206880680090A3 +:100AF000206E0028D0D020684168E026B1434160D4 +:100B00005D77900718D020684168890889004160A6 +:100B1000A06D0B4D002803D04563A06DFFF740FB8F +:100B2000606D0028B8D04563606DFFF739FBF8BDF4 +:100B3000C16880680090F8BD2046FFF797FFF8BDB8 +:100B400007140008F8B5040007D0002625464035F4 +:100B5000A662687F002802D005E00120F8BD2E774C +:100B6000204600F04BF802236B7720680168402292 +:100B7000914301600721E0680902884201D90022FF +:100B800001E0012212030F273F02B84202D088423F +:100B900000D0A662276B002F05D1884201D92363BC +:100BA00001E001202063A16860686369084321694E +:100BB000194308430123A1695B0219400843E16915 +:100BC0000843216A0843A16A084321680860616BF1 +:100BD000606AA36908431B0C0427E1683B40194382 +:100BE00008432168104348602068C1697A02914334 +:100BF000C1612666012068770020F8BD00B5006855 +:100C0000114987B088421DD11048826981140A4376 +:100C10008261806908400590F020009002200190D8 +:100C20000021032003900291049109206946C00627 +:100C3000FFF7E8FA002211461920FFF723FC1920DC +:100C4000FFF716FC07B000BD003001400010024065 +:100C500070470000F0B504468C464034217F0025E3 +:100C6000C768964601290CD001212177667F41682B +:100C7000012E0CD0CA1FFD3A07D18168002904D18A +:100C800001E00220F0BD042E01D0022540E06146C3 +:100C900000291BD07146002918D0002B16D0617F87 +:100CA000042901D005216177002101666146816335 +:100CB0008387C38771460164A380E380072109020B +:100CC0008F4205D9144AC264144A04E001251FE08A +:100CD000134AC264134A0265012212038F4202D8EA +:100CE000E188022903D301684B68934302E001685D +:100CF0004B6813434B6001684A68E0231A434A601B +:100D000000680168490603D401684022114301606C +:100D1000002020772846F0BDA512000839130008EE +:100D2000DB1200086D13000870B50122110225487E +:100D3000FFF70AFBFFF70EFB23491E30234C4860E8 +:100D400020780125DE2800D00D70A078082802D078 +:100D5000012807D02EE01D48A2792179203000F02B +:100D60007DFF27E0194820212038FFF7FCF91748BC +:100D7000CD21203801706178417080268670052170 +:100D8000C17000214171817108220446C5714C3443 +:100D9000635C002B0BD0022B02D0012B02D004E0AD +:100DA000815402E00B4633438354521CD2B2491C97 +:100DB0001029EDDB054A2023D11A0548FFF74AFF29 +:100DC00070BD000000040048040000205401002011 +:100DD00020000020042204490428086902D090431E +:100DE000086170471043FBE700E000E07047000037 +:100DF000094910B5401E884201D9012010BD074C99 +:100E000060610321081F00F021FA0020A061072083 +:100E10002061002010BD0000FFFFFF0000E000E0A7 +:100E200010B5FFF7E3FF10BD70B502462032137F07 +:100E3000012B1BD0012313770224547704686568C3 +:100E40007026B5436560046865680E683543656063 +:100E50000468A5688026B543A56000688468496871 +:100E60000C43846053770020107770BD022070BD62 +:100E700070B5040005D025462035687F002802D0D3 +:100E800006E0012070BD00202877204600F00AF817 +:100E900002206877211D206800F0D8FB01206877C8 +:100EA000002070BD08B5006801218907884207D17C +:100EB0000448C16901221143C161C069104000901A +:100EC00008BD0000001002400222014620314A778E +:100ED00002681368012003431360487700207047BD +:100EE000F8B5054604462035287F012817D001278C +:100EF0002F7702206877226890687726FF23B04317 +:100F00001B02984390600868502837D00EDC2028D8 +:100F100057D006DC00284ED0102840D14EE00220E9 +:100F2000F8BD302850D0402839D13CE060282DD081 +:100F3000702817D001221203801A0ED090422ED1B1 +:100F4000CB684A688968206800F0C2FB2068816825 +:100F5000012292031143816021E020688168C90861 +:100F6000C900F8E7CB684A688968206800F0B0FBE0 +:100F700021688868B0433043886010E0CA684968D7 +:100F8000206800F0B8FB5021206806E0CA68496874 +:100F9000206800F0C1FB6021206800F0A4FB6F779F +:100FA00000202877F8BDCA684968206800F0A3FBD4 +:100FB00040212068F1E700212068EEE71021206839 +:100FC000EBE720212068E8E730212068E5E7000012 +:100FD00000B500680E4987B0884216D10D48C26935 +:100FE000012149040A43C261C069084005900420F8 +:100FF000009012200190012103200390029104919E +:1010000009206946C006FFF7FDF807B000BD0000E3 +:101010000044004000100240FFB50646044660361A +:10102000707A83B00D46202858D1002D0CD0059839 +:10103000002809D00120A1680003814207D120695E +:10104000002804D1E80702D0012007B0F0BD307AB3 +:10105000012843D0012030720020E0662120707208 +:10106000FFF778F9019027464037059838820598B0 +:10107000788218E0788A401E7882069800900022D4 +:1010800080212046019B00F08BFC002818D1012014 +:10109000A1680003814202D12069002812D0216892 +:1010A000287808856D1C788A0028E3D1069800907E +:1010B000002240212046019B00F072FC002808D04D +:1010C0000320C2E728882168C005C00D0885AD1C33 +:1010D000E9E72020707200203072B6E70220B4E702 +:1010E000FEE70000F0B5244887B042690121890479 +:1010F0000A43426142690A400592426949100A4323 +:10110000426140694C1208400590002221461B486C +:10111000FFF71AF90921CF0601223846FFF714F923 +:10112000002202213846FFF70FF900940024012520 +:1011300001950294694611480394FFF763F809206A +:101140000090112001900294694603943846FFF7FD +:1011500059F8022602946946384600960195039490 +:10116000FFF750F801946946044800960294FFF78F +:1011700049F807B0F0BD000000100240000400482C +:1011800010B50D480B49016000214160816001618B +:10119000416181610722016212024162C260816283 +:1011A00007220163C2624163FFF7CCFC002800D034 +:1011B000FEE710BD003001402000002010B50121E5 +:1011C000124886B08907016000242F2184604160A5 +:1011D0000461611E8461C160FFF74AFE002800D0EF +:1011E000FEE701200003009069460848FFF778FEFB +:1011F000002800D0FEE7049404A904480594FFF7F2 +:1012000013FE002800D0FEE706B010BD84000020C9 +:1012100010B50C480A490160E121490241600021F2 +:101220008160C16001618161C16108220162426126 +:101230004162FFF795F8002800D0FEE710BD0000DE +:1012400000440040C4000020704700008307FF22D4 +:10125000DB0E9A408907090E994000280BDA000737 +:10126000000F0838830808489B001818C369934387 +:101270000B43C3617047830804489B001B18186820 +:10128000904308431860704700ED00E000E400E080 +:101290007047000010B50248FFF7EAFB10BD0000E0 +:1012A0002000002010B50168C968026C1180016C33 +:1012B000891C016401464031CA88521ECA80C9880F +:1012C000002909D101684A6840239A434A60C18FC6 +:1012D000002901D100F06EF810BD10B50146403173 +:1012E000CC880368026C012C11D9DB681380026C76 +:1012F000921C0264CA88921ECA80CA88012A0DD133 +:1013000002685368012424032343536006E01C7BD6 +:10131000531C03641470CA88521ECA80C9880029ED +:1013200009D101684A6860239A434A60C18F002945 +:1013300001D100F03FF810BD10B5816B026809883B +:10134000D160816B891C8163C18F491EC187C18FA8 +:1013500000290AD101684A6880239A434A604621DD +:10136000095A002901D100F025F810BD10B5C38F2E +:101370000268816B022B07D30988D160816B891CBD +:101380008163C18F891E05E04B1C8363097811734B +:10139000C18F491EC187C18F00290AD101684A68DF +:1013A00080239A434A604621095A002901D100F05E +:1013B00001F810BD70B50446FEF7CCFF0246206868 +:1013C00041682025A94341606421204600F024F8AB +:1013D000002802D0206E28432066226E204601217C +:1013E0004030002A04D041772046FFF73FFB70BD14 +:1013F000427F4177042A204602D0FFF795FC70BD5A +:10140000FFF726FC70BD10B5406A0021462211523C +:10141000C187FFF72BFB10BDF8B50F460B461546ED +:101420000092032104460022C90200F01BF8202686 +:10143000002812D13B46002280212046009500F072 +:101440005CF8002809D103213B46002249022046CE +:10145000009500F007F8002803D0206E3043206686 +:101460000320F8BDF8B51D4617460E4604463DE07C +:10147000032149028E4205D1002F03D1017B68462A +:1014800001700078681C31D0002D05D0FEF762FF96 +:101490000699401AA84229D320684168E022914366 +:1014A00041606068C11FFD390CD10121A068C903EA +:1014B000884202D04911884204D120680168402244 +:1014C000914301600120A16A4003814207D1216854 +:1014D0000A6882430A6021680A6802430A600120A0 +:1014E00040346077002020770320F8BD20688168B1 +:1014F0003140B942BCD10020F8BDF8B51D461746B1 +:101500000E46044633E0681C31D0002D05D0FEF7AE +:1015100021FF0699401AA84229D320684168E02299 +:10152000914341606068C11FFD390CD10121A06861 +:10153000C903884202D04911884204D12068016859 +:101540004022914301600120A16A4003814207D1FA +:1015500021680A6882430A6021680A6802430A60B7 +:10156000012040346077002020770320F8BD2068F8 +:1015700081683046884304D00020B842C3D100209F +:10158000F8BD0120F9E7704710B5FEF725FFFFF71A +:1015900047FC10BD10B592B020200090012000241F +:1015A000089009946846FFF775F8002800D0FEE718 +:1015B00007200D9003200E900F94012110940DA888 +:1015C000FEF764FF002800D0FEE7FFF709F87D2151 +:1015D000C900FEF7ABFDFFF70BFC0420FFF7FAFB99 +:1015E00000221146501EFEF74DFF12B010BD000044 +:1015F000134801680122114301604168114A1140FA +:1016000041600168104A11400160016801229204A2 +:101610009143016041683F22120491434160C16AD5 +:1016200009090901C162016BFF22D43291430163B0 +:10163000416B490849004163002181607047000007 +:10164000001002400CB8FF08FFFFF6FEF0B502687C +:101650001A4B0124A4071A4D984203D0A04201D08E +:10166000A84203D17026B2434E683243154E164F3E +:1016700098420AD0A04208D0A84206D0134CA042FB +:1016800003D0B04201D0B84204D103242402A243C3 +:10169000CC6822438024A2434C69224302608A68BA +:1016A000C2620A688262984203D0B04201D0B84256 +:1016B00001D10969016301214161F0BD002C0140A4 +:1016C0000004004000440140004801400020004068 +:1016D00030B58468FF252D021B021343AC430B4336 +:1016E0002343836030BD826870239A430A430721F5 +:1016F0000A438260704730B5036A046A6408640074 +:1017000004628469F025AC43120122430A24A343F6 +:101710000B438261036230BD30B5036A1024A343DA +:1017200003628469036A0F252D031203AC4322432D +:10173000A024A343090119438261016230BD10B5A1 +:10174000818CC90707D001684A6801235B049A436A +:10175000836A1A434A60818C890707D501684A6801 +:1017600001231B049A43C36A1A434A60818C4907C8 +:1017700007D501684A6801239B049A43036B1A4307 +:101780004A60818C090707D501684A680123DB0399 +:101790009A43436B1A434A60818CC90607D5026895 +:1017A000916801231B039943836B19439160818CDA +:1017B000890607D501688A6801235B039A43C36BD6 +:1017C0001A438A60818C490612D503685A68012140 +:1017D0000905046C8A4322435A60026C8A4207D18D +:1017E0000268516803235B059943436C19435160B8 +:1017F000818C090607D501684A680123DB04806CE7 +:101800009A4302434A6010BDF8B500260446C666F6 +:10181000FEF7A0FD05461449206888421DD10068E6 +:10182000124F000709D501212B4600224905204609 +:10183000009700F0B5F800280DD120680068400737 +:101840000BD501212B46002289052046009700F088 +:10185000A7F8002801D00320F8BD20206034607272 +:10186000A07226720020F8BD00380140FFFFFF0182 +:10187000F8B504462369A268E5691A436369102034 +:101880002B43002125681A432B680E463E4F3B40F0 +:1018900013432B6023685A6803252D03AA43E56888 +:1018A0002A435A60236AA26925681A43AB680B274A +:1018B0003F02BB431343AB60344A2568954210D1C5 +:1018C000334A126B9207920F0ED0012A05D0022ADA +:1018D00005D0032A09D1022007E0042005E00820F2 +:1018E00003E02C4A954200D100200122E369D20393 +:1018F000934224D100280CD002280DD0042813D004 +:10190000082817D001260A0912010807400F1043C2 +:101910002FE0FEF76BFE09E061681F4A4808801857 +:10192000FEF704FC81B2EEE7FEF770FE616840004E +:101930004A08F4E76168012248081204EFE700282A +:1019400008D0022809D004280BD0082814D001267A +:101950003046F8BDFEF74AFE05E061680F4A4808C8 +:101960000CE0FEF753FE61684A088018FEF7DEFBC4 +:1019700080B22168C860EBE7616848088018FEF70C +:10198000D5FB80B2E860E3E7F369FFEF0038014080 +:1019900000100240004400400024F40000127A00CD +:1019A000FFB581B017460E4604460A9D1DE0681C2F +:1019B0001BD0002D05D0FEF7CDFC0499401AA8429B +:1019C00013D920680168FF22A13291430160206889 +:1019D0008168490849008160202060346072A072EB +:1019E00000202072032005B0F0BD2068C169304698 +:1019F000884304D00020B842D9D00020F3E701206A +:101A0000F9E700000FB410B503A9044B044A02988B +:101A100000F018F810BC08BC04B01847351C0008CA +:101A20001400002002E008C8121F08C1002AFAD1E1 +:101A300070477047002001E001C1121F002AFBD14E +:101A400070470000FFB58DB00F460546002606E042 +:101A500025280AD0109A0F9990476D1C761C28787B +:101A60000028F5D1304611B0F0BD00240121674AAD +:101A7000009400E004436D1C2B780846203B9840FE +:101A80001042F7D128782E2815D104200443687815 +:101A90006D1C2A280AD101CF6D1C00900BE0009923 +:101AA0000A225143303940186D1C009028780146B5 +:101AB00030390929F3D92878692843D006DC002871 +:101AC000D0D063280BD0642804D13BE073280FD01A +:101AD00075284CD0109A0F999047761C94E038786E +:101AE000694608720020487202A80190012003E0B4 +:101AF000386801900020C0433F1D61070CD50024C9 +:101B000000E0641C00998C420FDA8442F9DB0199F1 +:101B1000095D0029F5D108E0002400E0641C84423E +:101B2000FCDB0199095D0029F8D1361907E001981D +:101B300001990078491C0191109A0F999047641EF1 +:101B4000F5D261E00A20019001CF002802DA40427C +:101B50002D2102E0210504D52B216A4611720121B5 +:101B600003E0E10701D02021F7E70C9104E00A200F +:101B7000019001CF00210C910BA90B9108E0019974 +:101B8000FEF7D4FA0A460B993032491E0B910A70BF +:101B90000028F4D10B9803A9081A2030019060079F +:101BA00001D5009801E0012000900199884203DDF1 +:101BB00001460198081A00E000200024009006E089 +:101BC00002A8109A005D0F999047641C761C0C982F +:101BD0008442F5DB04E0109A30200F999047761C80 +:101BE0000099481E00900029F5DC08E00B980B993D +:101BF0000078491C0B91109A0F999047761C019917 +:101C0000481E01900029F1DC6D1C28E7092801001D +:101C100000B5014600F00EF9411800F00BF98842BA +:101C2000FBD300BD10B502490860FFF74DF910BDA8 +:101C30000000002013B50A23012269460248FFF77D +:101C4000EBF900981CBD0000C400002001228A406E +:101C5000024201D0012070470020704710B50C46A9 +:101C6000034600F01FF8002801D0012010BD1978AC +:101C7000586844541978986842541878401C4007B2 +:101C8000400F1870002010BD10B50446082000F069 +:101C90009BF86060082000F097F8A060204600F0F4 +:101CA00025F810BD41780078401C4007400F814264 +:101CB00001D1012070470020704710B543780478A7 +:101CC000A34201D1012010BD4468E35C0B70816820 +:101CD0004078085C1070002010BD41780278914275 +:101CE00003D0491C4907490F4170704710B504469D +:101CF00000202070607008216068FEF734FA082127 +:101D0000A068FEF730FA10BD0EB5FEF76DFBFFF7C9 +:101D100041FCFFF7E7F9FFF733FAFFF779FAFFF72E +:101D20004DFA0120002300901A461F491FA0FFF71B +:101D300069FE2248FFF776FF00F084F81F48F03074 +:101D4000FFF7A2FF1D482021B030FEF70CFA1B4A16 +:101D50001A482023D032D11A6438FEF77BFF184C82 +:101D6000FF25184E01352078002801D000F09EF89C +:101D7000FEF7F0FA6168884204D90022294630460D +:101D8000FEF7E2FA0D4801AA02A9F030FFF795FF2D +:101D90000028E8D168460179282000F06FF807484C +:101DA000F030FFF79AFFDEE7601F0008257320760A +:101DB00025642E25642E25640A000000840000207E +:101DC0000400002000040048F0B50B30C108C90031 +:101DD000144F0026144A0FE003688B420BD38B424A +:101DE00005D95C1A4318456830C3083B00E04368D6 +:101DF000136002C004E0021D10680028ECD13046D8 +:101E0000002803D13868002801D00020F0BD064A20 +:101E100006481060064A121AD208D20044C00120B7 +:101E20003860D7E71C000020180000209401002033 +:101E300090030020024800680068406A7047000074 +:101E40000000002005480021016641668166C166E8 +:101E5000024901206031C873704700002001002052 +:101E600010B509240122E40611462046FEF76CFA5B +:101E7000012208212046FEF767FA10BD70B545061D +:101E80006D0E002901D0802005430024E1B22846D0 +:101E9000FFF7DCFE00F048F8641C082CF6DB00209D +:101EA00000F042F8FFF7DCFF002070BD12A0FFF742 +:101EB000A9FD144D0024295D13A0FFF7A3FD641CA8 +:101EC000202CF8DB11A0FFF79DFD0024FF25134E09 +:101ED000013529463046FEF733FA6420FEF784F9CF +:101EE000641C642CF5DBBFF34F8F0E490C48C860AF +:101EF000BFF34F8F00BFFDE7535049204552524F6B +:101F0000520A000054010020256420000A72656214 +:101F10006F6F74696E672E2E2E0A00000004004851 +:101F20000400FA0500ED00E070B509240246E4065D +:101F300001212046FEF708FA002208212046FEF77C +:101F400003FAFF2591352846FFF762FE012208219A +:101F50002046FEF7F9F92846FFF75AFE002070BD2B +:101F60005553423456432050726F746F636F6C2028 +:101F7000436172640A5369726975732031202F209E +:101F8000566963746F7220393030300A64656B753E +:101F90004E756B656D20323032320000000000005B +:101FA0000000000102030406070809000000000108 +:101FB00002030400D41F00080000002020000000DD +:101FC000241A0008F41F00082000002070070000F9 +:101FD000341A0008000000000000000000000000AB +:101FE0000000000000127A00000000000000000065 +:041FF00000000000ED :04000005080000C12E :00000001FF diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.htm b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.htm index 6944b75..4193ab4 100644 --- a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.htm +++ b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.htm @@ -3,7 +3,7 @@ Static Call Graph - [my_adb\my_adb.axf]

Static Call Graph for image my_adb\my_adb.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Nov 09 23:43:47 2022 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Thu Nov 10 09:59:00 2022

Maximum Stack Usage = 180 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -68,7 +68,7 @@ Global Symbols

__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
[Address Reference Count : 1]

  • startup_stm32f042x6.o(.text)
-

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

_main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Calls]

  • >>   __scatterload @@ -78,15 +78,15 @@ Global Symbols

    [Called By]
    • >>   __scatterload
    -

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) +

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) -

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) +

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

    Reset_Handler (Thumb, 38 bytes, Stack size 0 bytes, startup_stm32f042x6.o(.text))
    [Address Reference Count : 1]

    • startup_stm32f042x6.o(RESET) @@ -173,16 +173,16 @@ Global Symbols

      WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f042x6.o(.text))
      [Address Reference Count : 1]

      • startup_stm32f042x6.o(RESET)
      -

      __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED) +

      __aeabi_uidiv (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)

      __aeabi_uidivmod (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))

      [Stack]

      • Max Depth = 12
      • Call Chain = __aeabi_uidivmod
      -
      [Called By]
      • >>   SystemClock_Config +
        [Called By]
        • >>   SystemClock_Config
        • >>   HAL_InitTick
        • >>   HAL_RCC_GetSysClockFreq
        • >>   UART_SetConfig -
        • >>   _printf_core +
        • >>   _printf_core

        __aeabi_memset (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text)) @@ -190,14 +190,14 @@ Global Symbols

      • >>   __aeabi_memclr
      -

      __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

      __aeabi_memset4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) -

      __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

      __aeabi_memset8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

      __aeabi_memclr (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))

      [Calls]

      • >>   __aeabi_memset
      -
      [Called By]
      • >>   kb_buf_reset +
        [Called By]
        • >>   kb_buf_reset

        __aeabi_memclr4 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text)) @@ -205,7 +205,7 @@ Global Symbols

      • >>   HAL_SPI_TxRxCpltCallback
      -

      __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED) +

      __aeabi_memclr8 (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)

      _memset$wrapper (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)

      [Calls]

      • >>   __aeabi_memset @@ -217,7 +217,7 @@ Global Symbols
        [Called By]
        • >>   _main_scatterload
        -

        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)

        HAL_DMA_Abort_IT (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT))

        [Stack]

        • Max Depth = 16
        • Call Chain = HAL_DMA_Abort_IT @@ -230,7 +230,7 @@ Global Symbols

        [Calls]
        • >>   HAL_GetTick
        -
        [Called By]
        • >>   spi_error_dump_reboot +
          [Called By]
          • >>   spi_error_dump_reboot

          HAL_GPIO_Init (Thumb, 294 bytes, Stack size 24 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init)) @@ -241,17 +241,14 @@ Global Symbols

        • >>   MX_GPIO_Init
        -

        HAL_GPIO_ReadPin (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin)) -

        [Called By]

        • >>   wait_for_KBACK -
        - -

        HAL_GPIO_TogglePin (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin)) -

        [Called By]

        • >>   spi_error_dump_reboot +

          HAL_GPIO_TogglePin (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin)) +

          [Called By]

          • >>   spi_error_dump_reboot

          HAL_GPIO_WritePin (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin)) -

          [Called By]

          • >>   main -
          • >>   SendBit +

            [Called By]
            • >>   write_bit +
            • >>   release_kb_line +
            • >>   main
            • >>   HAL_SPI_TxRxCpltCallback
            • >>   MX_GPIO_Init
            @@ -264,7 +261,6 @@ Global Symbols
          • >>   HAL_RCC_OscConfig
          • >>   HAL_RCC_ClockConfig
          • >>   HAL_Delay -
          • >>   wait_for_KBACK
          • >>   main
          • >>   HAL_SPI_TxRxCpltCallback
          • >>   UART_WaitOnFlagUntilTimeout @@ -282,7 +278,7 @@ Global Symbols
            [Called By]
            • >>   MX_USART2_UART_Init
            -

            HAL_IncTick (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick)) +

            HAL_IncTick (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal.o(i.HAL_IncTick))

            [Called By]

            • >>   SysTick_Handler
            @@ -326,7 +322,7 @@ Global Symbols

          [Called By]
          • >>   HAL_SPI_MspInit
          • >>   HAL_MspInit -
          • >>   SystemClock_Config +
          • >>   SystemClock_Config
          • >>   HAL_InitTick
          @@ -337,15 +333,15 @@ Global Symbols
        • >>   HAL_InitTick
        • >>   HAL_RCC_GetSysClockFreq
        -
        [Called By]
        • >>   SystemClock_Config +
          [Called By]
          • >>   SystemClock_Config

          HAL_RCC_GetHCLKFreq (Thumb, 6 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq)) -

          [Called By]

          • >>   SystemClock_Config +

            [Called By]
            • >>   SystemClock_Config
            • >>   HAL_InitTick
            -

            HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq)) +

            HAL_RCC_GetPCLK1Freq (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq))

            [Called By]

            • >>   UART_SetConfig
            @@ -363,7 +359,7 @@ Global Symbols

          [Calls]
          • >>   HAL_GetTick
          -
          [Called By]
          • >>   SystemClock_Config +
            [Called By]
            • >>   SystemClock_Config

            HAL_SPI_ErrorCallback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback)) @@ -422,8 +418,8 @@ Global Symbols
            [Called By]

            • >>   SPI_CloseRxTx_ISR
            -

            HAL_SYSTICK_CLKSourceConfig (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig)) -

            [Called By]

            • >>   SystemClock_Config +

              HAL_SYSTICK_CLKSourceConfig (Thumb, 20 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig)) +

              [Called By]

              • >>   SystemClock_Config

              HAL_SYSTICK_Callback (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback)) @@ -435,7 +431,7 @@ Global Symbols


            [Calls]
            • >>   NVIC_SetPriority
            -
            [Called By]
            • >>   SystemClock_Config +
              [Called By]
              • >>   SystemClock_Config
              • >>   HAL_InitTick
              @@ -468,8 +464,8 @@ Global Symbols
              [Called By]
              • >>   HAL_TIM_Base_Init
              -

              HAL_TIM_Base_Start (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start)) -

              [Called By]

              • >>   delay_us_init +

                HAL_TIM_Base_Start (Thumb, 24 bytes, Stack size 0 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start)) +

                [Called By]

                • >>   delay_us_init

                HAL_TIM_ConfigClockSource (Thumb, 238 bytes, Stack size 24 bytes, stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource)) @@ -523,28 +519,19 @@ Global Symbols

                SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, stm32f0xx_it.o(i.SVC_Handler))
                [Address Reference Count : 1]

                • startup_stm32f042x6.o(RESET)
                -

                SendBit (Thumb, 54 bytes, Stack size 16 bytes, main.o(i.SendBit)) -

                [Stack]

                • Max Depth = 20
                • Call Chain = SendBit ⇒ delay_us -
                -
                [Calls]
                • >>   HAL_GPIO_WritePin -
                • >>   delay_us -
                -
                [Called By]
                • >>   main -
                -

                SysTick_Handler (Thumb, 12 bytes, Stack size 8 bytes, stm32f0xx_it.o(i.SysTick_Handler))

                [Stack]

                • Max Depth = 16
                • Call Chain = SysTick_Handler ⇒ HAL_SYSTICK_IRQHandler

                [Calls]
                • >>   HAL_SYSTICK_IRQHandler -
                • >>   HAL_IncTick +
                • >>   HAL_IncTick

                [Address Reference Count : 1]
                • startup_stm32f042x6.o(RESET)
                -

                SystemClock_Config (Thumb, 90 bytes, Stack size 80 bytes, main.o(i.SystemClock_Config)) +

                SystemClock_Config (Thumb, 90 bytes, Stack size 80 bytes, main.o(i.SystemClock_Config))

                [Stack]

                • Max Depth = 164
                • Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod

                [Calls]
                • >>   HAL_SYSTICK_Config -
                • >>   HAL_SYSTICK_CLKSourceConfig +
                • >>   HAL_SYSTICK_CLKSourceConfig
                • >>   HAL_RCC_OscConfig
                • >>   HAL_RCC_GetHCLKFreq
                • >>   HAL_RCC_ClockConfig @@ -588,7 +575,7 @@ Global Symbols

                  [Stack]
                  • Max Depth = 84
                  • Call Chain = UART_SetConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod

                  [Calls]
                  • >>   HAL_RCC_GetSysClockFreq -
                  • >>   HAL_RCC_GetPCLK1Freq +
                  • >>   HAL_RCC_GetPCLK1Freq
                  • >>   __aeabi_uidivmod

                  [Called By]
                  • >>   HAL_HalfDuplex_Init @@ -603,37 +590,37 @@ Global Symbols
                  • >>   UART_CheckIdleState
                  -

                  __0printf$3 (Thumb, 24 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) -

                  [Calls]

                  • >>   _printf_core +

                    __0printf$3 (Thumb, 24 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                    [Calls]

                    • >>   _printf_core
                    -

                    __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) +

                    __1printf$3 (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED) -

                    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3)) +

                    __2printf (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))

                    [Stack]

                    • Max Depth = 24
                    • Call Chain = __2printf
                    -
                    [Called By]
                    • >>   spi_error_dump_reboot +
                      [Called By]
                      • >>   spi_error_dump_reboot
                      • >>   main
                      -

                      __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

                      __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

                      __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

                      __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

                      __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

                      __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) -

                      delay_us (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us)) +

                      delay_us (Thumb, 20 bytes, Stack size 4 bytes, delay_us.o(i.delay_us))

                      [Stack]

                      • Max Depth = 4
                      • Call Chain = delay_us
                      -
                      [Calls]
                      • >>   micros +
                        [Calls]
                        • >>   micros
                        -
                        [Called By]
                        • >>   SendBit +
                          [Called By]
                          • >>   write_bit
                          -

                          delay_us_init (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init)) +

                          delay_us_init (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))

                          [Stack]

                          • Max Depth = 8
                          • Call Chain = delay_us_init
                          -
                          [Calls]
                          • >>   HAL_TIM_Base_Start +
                            [Calls]
                            • >>   HAL_TIM_Base_Start

                            [Called By]
                            • >>   main
                            @@ -645,28 +632,32 @@ Global Symbols

                          [Address Reference Count : 1]
                          • printf3.o(i.__0printf$3)
                          +

                          get_bit (Thumb, 16 bytes, Stack size 0 bytes, main.o(i.get_bit)) +

                          [Called By]

                          • >>   send_key +
                          +

                          kb_buf_add (Thumb, 44 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_add))

                          [Stack]

                          • Max Depth = 8
                          • Call Chain = kb_buf_add
                          -
                          [Calls]
                          • >>   kb_buf_is_full +
                            [Calls]
                            • >>   kb_buf_is_full

                            [Called By]
                            • >>   HAL_SPI_TxRxCpltCallback
                            -

                            kb_buf_init (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_init)) +

                            kb_buf_init (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_init))

                            [Stack]

                            • Max Depth = 28
                            • Call Chain = kb_buf_init ⇒ malloc
                            -
                            [Calls]
                            • >>   kb_buf_reset -
                            • >>   malloc +
                              [Calls]
                              • >>   kb_buf_reset +
                              • >>   malloc

                              [Called By]
                              • >>   main
                              -

                              kb_buf_is_full (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_is_full)) +

                              kb_buf_is_full (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_is_full))

                              [Called By]

                              • >>   kb_buf_add
                              -

                              kb_buf_peek (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek)) +

                              kb_buf_peek (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))

                              [Stack]

                              • Max Depth = 8
                              • Call Chain = kb_buf_peek

                              [Called By]
                              • >>   main @@ -676,71 +667,88 @@ Global Symbols

                                [Called By]
                                • >>   main
                                -

                                kb_buf_reset (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset)) +

                                kb_buf_reset (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))

                                [Stack]

                                • Max Depth = 8
                                • Call Chain = kb_buf_reset

                                [Calls]
                                • >>   __aeabi_memclr
                                -
                                [Called By]
                                • >>   kb_buf_init +
                                  [Called By]
                                  • >>   kb_buf_init
                                  -

                                  main (Thumb, 168 bytes, Stack size 16 bytes, main.o(i.main)) +

                                  main (Thumb, 160 bytes, Stack size 16 bytes, main.o(i.main))

                                  [Stack]

                                  • Max Depth = 180
                                  • Call Chain = main ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod

                                  [Calls]
                                  • >>   HAL_SPI_TransmitReceive_IT
                                  • >>   HAL_Init
                                  • >>   HAL_GetTick
                                  • >>   HAL_GPIO_WritePin -
                                  • >>   wait_for_KBACK -
                                  • >>   spi_error_dump_reboot -
                                  • >>   protocol_status_lookup_init -
                                  • >>   SystemClock_Config -
                                  • >>   SendBit +
                                  • >>   spi_error_dump_reboot +
                                  • >>   send_key +
                                  • >>   protocol_status_lookup_init +
                                  • >>   SystemClock_Config
                                  • >>   MX_USART2_UART_Init
                                  • >>   MX_TIM2_Init
                                  • >>   MX_SPI1_Init
                                  • >>   MX_GPIO_Init
                                  • >>   kb_buf_pop -
                                  • >>   kb_buf_peek -
                                  • >>   kb_buf_init -
                                  • >>   delay_us_init -
                                  • >>   __2printf +
                                  • >>   kb_buf_peek +
                                  • >>   kb_buf_init +
                                  • >>   delay_us_init +
                                  • >>   __2printf
                                  • >>   __aeabi_memclr4

                                  [Address Reference Count : 1]
                                  • entry9a.o(.ARM.Collect$$$$0000000B)
                                  -

                                  malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc)) +

                                  malloc (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))

                                  [Stack]

                                  • Max Depth = 20
                                  • Call Chain = malloc
                                  -
                                  [Called By]
                                  • >>   kb_buf_init +
                                    [Called By]
                                    • >>   kb_buf_init
                                    -

                                    micros (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros)) -

                                    [Called By]

                                    • >>   delay_us +

                                      micros (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros)) +

                                      [Called By]

                                      • >>   delay_us
                                      -

                                      protocol_status_lookup_init (Thumb, 22 bytes, Stack size 0 bytes, main.o(i.protocol_status_lookup_init)) +

                                      protocol_status_lookup_init (Thumb, 22 bytes, Stack size 0 bytes, main.o(i.protocol_status_lookup_init))

                                      [Called By]

                                      • >>   main
                                      -

                                      spi_error_dump_reboot (Thumb, 76 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot)) -

                                      [Stack]

                                      • Max Depth = 24
                                      • Call Chain = spi_error_dump_reboot ⇒ __2printf +

                                        release_kb_line (Thumb, 28 bytes, Stack size 8 bytes, main.o(i.release_kb_line)) +

                                        [Stack]

                                        • Max Depth = 8
                                        • Call Chain = release_kb_line
                                        -
                                        [Calls]
                                        • >>   HAL_GPIO_TogglePin -
                                        • >>   HAL_Delay -
                                        • >>   __2printf +
                                          [Calls]
                                          • >>   HAL_GPIO_WritePin +
                                          +
                                          [Called By]
                                          • >>   send_key +
                                          + +

                                          send_key (Thumb, 48 bytes, Stack size 16 bytes, main.o(i.send_key)) +

                                          [Stack]

                                          • Max Depth = 36
                                          • Call Chain = send_key ⇒ write_bit ⇒ delay_us +
                                          +
                                          [Calls]
                                          • >>   write_bit +
                                          • >>   release_kb_line +
                                          • >>   get_bit

                                          [Called By]
                                          • >>   main
                                          -

                                          wait_for_KBACK (Thumb, 40 bytes, Stack size 16 bytes, main.o(i.wait_for_KBACK)) -

                                          [Stack]

                                          • Max Depth = 16
                                          • Call Chain = wait_for_KBACK +

                                            spi_error_dump_reboot (Thumb, 76 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot)) +

                                            [Stack]

                                            • Max Depth = 24
                                            • Call Chain = spi_error_dump_reboot ⇒ __2printf
                                            -
                                            [Calls]
                                            • >>   HAL_GetTick -
                                            • >>   HAL_GPIO_ReadPin +
                                              [Calls]
                                              • >>   HAL_GPIO_TogglePin +
                                              • >>   HAL_Delay +
                                              • >>   __2printf

                                              [Called By]
                                              • >>   main
                                              + +

                                              write_bit (Thumb, 56 bytes, Stack size 16 bytes, main.o(i.write_bit)) +

                                              [Stack]

                                              • Max Depth = 20
                                              • Call Chain = write_bit ⇒ delay_us +
                                              +
                                              [Calls]
                                              • >>   HAL_GPIO_WritePin +
                                              • >>   delay_us +
                                              +
                                              [Called By]
                                              • >>   send_key +

                                              Local Symbols @@ -876,10 +884,10 @@ Local Symbols
                                            • >>   HAL_NVIC_SetPriority
                                            -

                                            _printf_core (Thumb, 456 bytes, Stack size 88 bytes, printf3.o(i._printf_core), UNUSED) +

                                            _printf_core (Thumb, 456 bytes, Stack size 88 bytes, printf3.o(i._printf_core), UNUSED)

                                            [Calls]

                                            • >>   __aeabi_uidivmod
                                            -
                                            [Called By]
                                            • >>   __0printf$3 +
                                              [Called By]
                                              • >>   __0printf$3

                                              diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.map b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.map index 3e2a21a..77da750 100644 --- a/firmware/sirius 1/MDK-ARM/my_adb/my_adb.map +++ b/firmware/sirius 1/MDK-ARM/my_adb/my_adb.map @@ -44,8 +44,6 @@ Section Cross References main.o(i.MX_TIM2_Init) refers to main.o(.bss) for .bss main.o(i.MX_USART2_UART_Init) refers to stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init) for HAL_HalfDuplex_Init main.o(i.MX_USART2_UART_Init) refers to main.o(.bss) for .bss - main.o(i.SendBit) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin - main.o(i.SendBit) refers to delay_us.o(i.delay_us) for delay_us main.o(i.SystemClock_Config) refers to stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) for HAL_RCC_OscConfig main.o(i.SystemClock_Config) refers to stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) for HAL_RCC_ClockConfig main.o(i.SystemClock_Config) refers to stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) for HAL_RCC_GetHCLKFreq @@ -74,19 +72,22 @@ Section Cross References main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin main.o(i.main) refers to helpers.o(i.kb_buf_peek) for kb_buf_peek - main.o(i.main) refers to main.o(i.SendBit) for SendBit + main.o(i.main) refers to main.o(i.send_key) for send_key main.o(i.main) refers to helpers.o(i.kb_buf_pop) for kb_buf_pop - main.o(i.main) refers to main.o(i.wait_for_KBACK) for wait_for_KBACK main.o(i.main) refers to main.o(.constdata) for .constdata main.o(i.main) refers to main.o(.bss) for .bss main.o(i.main) refers to main.o(.data) for .data main.o(i.protocol_status_lookup_init) refers to main.o(.bss) for .bss + main.o(i.release_kb_line) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + main.o(i.send_key) refers to main.o(i.get_bit) for get_bit + main.o(i.send_key) refers to main.o(i.write_bit) for write_bit + main.o(i.send_key) refers to main.o(i.release_kb_line) for release_kb_line main.o(i.spi_error_dump_reboot) refers to printf3.o(i.__0printf$3) for __2printf main.o(i.spi_error_dump_reboot) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) for HAL_GPIO_TogglePin main.o(i.spi_error_dump_reboot) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay main.o(i.spi_error_dump_reboot) refers to main.o(.bss) for .bss - main.o(i.wait_for_KBACK) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick - main.o(i.wait_for_KBACK) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin + main.o(i.write_bit) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin + main.o(i.write_bit) refers to delay_us.o(i.delay_us) for delay_us stm32f0xx_it.o(i.SPI1_IRQHandler) refers to stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) for HAL_SPI_IRQHandler stm32f0xx_it.o(i.SPI1_IRQHandler) refers to main.o(.bss) for hspi1 stm32f0xx_it.o(i.SysTick_Handler) refers to stm32f0xx_hal.o(i.HAL_IncTick) for HAL_IncTick @@ -1037,6 +1038,7 @@ Removing Unused input sections from the image. Removing main.o(i.byte_to_int16_t), (8 bytes). Removing main.o(i.handle_protocol_switch), (60 bytes). Removing main.o(i.is_protocol_enabled), (20 bytes). + Removing main.o(i.wait_for_KBACK), (4 bytes). Removing main.o(.constdata), (1 bytes). Removing main.o(.constdata), (1 bytes). Removing main.o(.constdata), (1 bytes). @@ -1425,6 +1427,7 @@ Removing Unused input sections from the image. Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_Callback), (2 bytes). Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_EXTI_IRQHandler), (24 bytes). Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_LockPin), (36 bytes). + Removing stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin), (10 bytes). Removing stm32f0xx_hal_dma.o(.rev16_text), (4 bytes). Removing stm32f0xx_hal_dma.o(.revsh_text), (4 bytes). Removing stm32f0xx_hal_dma.o(i.DMA_CalcBaseAndBitshift), (36 bytes). @@ -1514,7 +1517,7 @@ Removing Unused input sections from the image. Removing stm32f0xx_hal_tim.o(i.__ARM_common_switch8), (26 bytes). Removing depilogue.o(i.__ARM_clz), (46 bytes). -494 unused section(s) (total 34928 bytes) removed from the image. +496 unused section(s) (total 34942 bytes) removed from the image. ============================================================================== @@ -1548,42 +1551,42 @@ Image Symbol Table ../Src/stm32f0xx_it.c 0x00000000 Number 0 stm32f0xx_it.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE - ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE + ../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE ../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE @@ -1640,113 +1643,114 @@ Image Symbol Table i.HAL_DMA_Abort_IT 0x080001a0 Section 0 stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT) i.HAL_Delay 0x080001e8 Section 0 stm32f0xx_hal.o(i.HAL_Delay) i.HAL_GPIO_Init 0x08000204 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init) - i.HAL_GPIO_ReadPin 0x08000340 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - i.HAL_GPIO_TogglePin 0x0800034a Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) - i.HAL_GPIO_WritePin 0x08000352 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) - i.HAL_GetTick 0x08000360 Section 0 stm32f0xx_hal.o(i.HAL_GetTick) - i.HAL_HalfDuplex_Init 0x0800036c Section 0 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init) - i.HAL_IncTick 0x080003e4 Section 0 stm32f0xx_hal.o(i.HAL_IncTick) - i.HAL_Init 0x080003f4 Section 0 stm32f0xx_hal.o(i.HAL_Init) - i.HAL_InitTick 0x08000414 Section 0 stm32f0xx_hal.o(i.HAL_InitTick) - i.HAL_MspInit 0x08000438 Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) - i.HAL_NVIC_EnableIRQ 0x0800047c Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - i.HAL_NVIC_SetPriority 0x08000490 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - i.HAL_RCC_ClockConfig 0x08000498 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - i.HAL_RCC_GetHCLKFreq 0x080005ec Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - i.HAL_RCC_GetPCLK1Freq 0x080005f8 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - i.HAL_RCC_GetSysClockFreq 0x08000618 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - i.HAL_RCC_OscConfig 0x080006a0 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) - i.HAL_SPI_ErrorCallback 0x08000a78 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) - i.HAL_SPI_IRQHandler 0x08000a7c Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) - i.HAL_SPI_Init 0x08000b50 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) - i.HAL_SPI_MspInit 0x08000c08 Section 0 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) - i.HAL_SPI_RxCpltCallback 0x08000c5c Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) - i.HAL_SPI_TransmitReceive_IT 0x08000c60 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) - i.HAL_SPI_TxRxCpltCallback 0x08000d34 Section 0 main.o(i.HAL_SPI_TxRxCpltCallback) - i.HAL_SYSTICK_CLKSourceConfig 0x08000de0 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) - i.HAL_SYSTICK_Callback 0x08000df8 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) - i.HAL_SYSTICK_Config 0x08000dfc Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) - i.HAL_SYSTICK_IRQHandler 0x08000e2c Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) - i.HAL_TIMEx_MasterConfigSynchronization 0x08000e34 Section 0 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - i.HAL_TIM_Base_Init 0x08000e7c Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) - i.HAL_TIM_Base_MspInit 0x08000eb0 Section 0 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) - i.HAL_TIM_Base_Start 0x08000ed4 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) - i.HAL_TIM_ConfigClockSource 0x08000eec Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - i.HAL_UART_MspInit 0x08000fdc Section 0 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) - i.HAL_UART_Transmit 0x08001024 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) - i.HardFault_Handler 0x080010ec Section 0 stm32f0xx_it.o(i.HardFault_Handler) - i.MX_GPIO_Init 0x080010f0 Section 0 main.o(i.MX_GPIO_Init) - MX_GPIO_Init 0x080010f1 Thumb Code 146 main.o(i.MX_GPIO_Init) - i.MX_SPI1_Init 0x0800118c Section 0 main.o(i.MX_SPI1_Init) - MX_SPI1_Init 0x0800118d Thumb Code 52 main.o(i.MX_SPI1_Init) - i.MX_TIM2_Init 0x080011c8 Section 0 main.o(i.MX_TIM2_Init) - MX_TIM2_Init 0x080011c9 Thumb Code 80 main.o(i.MX_TIM2_Init) - i.MX_USART2_UART_Init 0x0800121c Section 0 main.o(i.MX_USART2_UART_Init) - MX_USART2_UART_Init 0x0800121d Thumb Code 46 main.o(i.MX_USART2_UART_Init) - i.NMI_Handler 0x08001254 Section 0 stm32f0xx_it.o(i.NMI_Handler) - i.NVIC_SetPriority 0x08001258 Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) - NVIC_SetPriority 0x08001259 Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) - i.PendSV_Handler 0x0800129c Section 0 stm32f0xx_it.o(i.PendSV_Handler) - i.SPI1_IRQHandler 0x080012a0 Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) - i.SPI_2linesRxISR_16BIT 0x080012b0 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) - SPI_2linesRxISR_16BIT 0x080012b1 Thumb Code 54 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) - i.SPI_2linesRxISR_8BIT 0x080012e6 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) - SPI_2linesRxISR_8BIT 0x080012e7 Thumb Code 94 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) - i.SPI_2linesTxISR_16BIT 0x08001344 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) - SPI_2linesTxISR_16BIT 0x08001345 Thumb Code 52 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) - i.SPI_2linesTxISR_8BIT 0x08001378 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) - SPI_2linesTxISR_8BIT 0x08001379 Thumb Code 72 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) - i.SPI_CloseRxTx_ISR 0x080013c0 Section 0 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) - SPI_CloseRxTx_ISR 0x080013c1 Thumb Code 82 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) - i.SPI_DMAAbortOnError 0x08001412 Section 0 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) - SPI_DMAAbortOnError 0x08001413 Thumb Code 18 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) - i.SPI_EndRxTxTransaction 0x08001424 Section 0 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) - SPI_EndRxTxTransaction 0x08001425 Thumb Code 76 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) - i.SPI_WaitFifoStateUntilTimeout 0x08001470 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) - SPI_WaitFifoStateUntilTimeout 0x08001471 Thumb Code 150 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) - i.SPI_WaitFlagStateUntilTimeout 0x08001506 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - SPI_WaitFlagStateUntilTimeout 0x08001507 Thumb Code 140 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) - i.SVC_Handler 0x08001592 Section 0 stm32f0xx_it.o(i.SVC_Handler) - i.SendBit 0x08001594 Section 0 main.o(i.SendBit) - i.SysTick_Handler 0x080015ca Section 0 stm32f0xx_it.o(i.SysTick_Handler) - i.SystemClock_Config 0x080015d6 Section 0 main.o(i.SystemClock_Config) - i.SystemInit 0x08001630 Section 0 system_stm32f0xx.o(i.SystemInit) - i.TIM_Base_SetConfig 0x0800168c Section 0 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) - i.TIM_ETR_SetConfig 0x08001710 Section 0 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) - i.TIM_ITRx_SetConfig 0x08001726 Section 0 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) - TIM_ITRx_SetConfig 0x08001727 Thumb Code 16 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) - i.TIM_TI1_ConfigInputStage 0x08001736 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - TIM_TI1_ConfigInputStage 0x08001737 Thumb Code 34 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) - i.TIM_TI2_ConfigInputStage 0x08001758 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - TIM_TI2_ConfigInputStage 0x08001759 Thumb Code 38 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) - i.UART_AdvFeatureConfig 0x0800177e Section 0 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) - i.UART_CheckIdleState 0x08001848 Section 0 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) - i.UART_SetConfig 0x080018b0 Section 0 stm32f0xx_hal_uart.o(i.UART_SetConfig) - i.UART_WaitOnFlagUntilTimeout 0x080019e0 Section 0 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - i.__0printf$3 0x08001a44 Section 0 printf3.o(i.__0printf$3) - i.__scatterload_copy 0x08001a64 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08001a72 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08001a74 Section 14 handlers.o(i.__scatterload_zeroinit) - i._printf_core 0x08001a84 Section 0 printf3.o(i._printf_core) - _printf_core 0x08001a85 Thumb Code 456 printf3.o(i._printf_core) - i.delay_us 0x08001c50 Section 0 delay_us.o(i.delay_us) - i.delay_us_init 0x08001c64 Section 0 delay_us.o(i.delay_us_init) - i.fputc 0x08001c74 Section 0 main.o(i.fputc) - i.kb_buf_add 0x08001c8c Section 0 helpers.o(i.kb_buf_add) - i.kb_buf_init 0x08001cb8 Section 0 helpers.o(i.kb_buf_init) - i.kb_buf_is_full 0x08001cd4 Section 0 helpers.o(i.kb_buf_is_full) - i.kb_buf_peek 0x08001cea Section 0 helpers.o(i.kb_buf_peek) - i.kb_buf_pop 0x08001d0a Section 0 helpers.o(i.kb_buf_pop) - i.kb_buf_reset 0x08001d1c Section 0 helpers.o(i.kb_buf_reset) - i.main 0x08001d38 Section 0 main.o(i.main) - i.malloc 0x08001e04 Section 0 malloc.o(i.malloc) - i.micros 0x08001e70 Section 0 delay_us.o(i.micros) - i.protocol_status_lookup_init 0x08001e80 Section 0 main.o(i.protocol_status_lookup_init) - i.spi_error_dump_reboot 0x08001e9c Section 0 main.o(i.spi_error_dump_reboot) - i.wait_for_KBACK 0x08001f18 Section 0 main.o(i.wait_for_KBACK) - .constdata 0x08001f44 Section 59 main.o(.constdata) - .constdata 0x08001f7f Section 16 system_stm32f0xx.o(.constdata) - .constdata 0x08001f8f Section 8 system_stm32f0xx.o(.constdata) + i.HAL_GPIO_TogglePin 0x08000340 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) + i.HAL_GPIO_WritePin 0x08000348 Section 0 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) + i.HAL_GetTick 0x08000354 Section 0 stm32f0xx_hal.o(i.HAL_GetTick) + i.HAL_HalfDuplex_Init 0x08000360 Section 0 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init) + i.HAL_IncTick 0x080003d8 Section 0 stm32f0xx_hal.o(i.HAL_IncTick) + i.HAL_Init 0x080003e8 Section 0 stm32f0xx_hal.o(i.HAL_Init) + i.HAL_InitTick 0x08000408 Section 0 stm32f0xx_hal.o(i.HAL_InitTick) + i.HAL_MspInit 0x0800042c Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) + i.HAL_NVIC_EnableIRQ 0x08000470 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + i.HAL_NVIC_SetPriority 0x08000484 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + i.HAL_RCC_ClockConfig 0x0800048c Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + i.HAL_RCC_GetHCLKFreq 0x080005e0 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + i.HAL_RCC_GetPCLK1Freq 0x080005ec Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + i.HAL_RCC_GetSysClockFreq 0x0800060c Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + i.HAL_RCC_OscConfig 0x08000694 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) + i.HAL_SPI_ErrorCallback 0x08000a6c Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) + i.HAL_SPI_IRQHandler 0x08000a70 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) + i.HAL_SPI_Init 0x08000b44 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) + i.HAL_SPI_MspInit 0x08000bfc Section 0 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) + i.HAL_SPI_RxCpltCallback 0x08000c50 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) + i.HAL_SPI_TransmitReceive_IT 0x08000c54 Section 0 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) + i.HAL_SPI_TxRxCpltCallback 0x08000d28 Section 0 main.o(i.HAL_SPI_TxRxCpltCallback) + i.HAL_SYSTICK_CLKSourceConfig 0x08000dd4 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) + i.HAL_SYSTICK_Callback 0x08000dec Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) + i.HAL_SYSTICK_Config 0x08000df0 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) + i.HAL_SYSTICK_IRQHandler 0x08000e20 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) + i.HAL_TIMEx_MasterConfigSynchronization 0x08000e28 Section 0 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + i.HAL_TIM_Base_Init 0x08000e70 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) + i.HAL_TIM_Base_MspInit 0x08000ea4 Section 0 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) + i.HAL_TIM_Base_Start 0x08000ec8 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) + i.HAL_TIM_ConfigClockSource 0x08000ee0 Section 0 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + i.HAL_UART_MspInit 0x08000fd0 Section 0 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) + i.HAL_UART_Transmit 0x08001018 Section 0 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) + i.HardFault_Handler 0x080010e0 Section 0 stm32f0xx_it.o(i.HardFault_Handler) + i.MX_GPIO_Init 0x080010e4 Section 0 main.o(i.MX_GPIO_Init) + MX_GPIO_Init 0x080010e5 Thumb Code 146 main.o(i.MX_GPIO_Init) + i.MX_SPI1_Init 0x08001180 Section 0 main.o(i.MX_SPI1_Init) + MX_SPI1_Init 0x08001181 Thumb Code 52 main.o(i.MX_SPI1_Init) + i.MX_TIM2_Init 0x080011bc Section 0 main.o(i.MX_TIM2_Init) + MX_TIM2_Init 0x080011bd Thumb Code 80 main.o(i.MX_TIM2_Init) + i.MX_USART2_UART_Init 0x08001210 Section 0 main.o(i.MX_USART2_UART_Init) + MX_USART2_UART_Init 0x08001211 Thumb Code 46 main.o(i.MX_USART2_UART_Init) + i.NMI_Handler 0x08001248 Section 0 stm32f0xx_it.o(i.NMI_Handler) + i.NVIC_SetPriority 0x0800124c Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) + NVIC_SetPriority 0x0800124d Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) + i.PendSV_Handler 0x08001290 Section 0 stm32f0xx_it.o(i.PendSV_Handler) + i.SPI1_IRQHandler 0x08001294 Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) + i.SPI_2linesRxISR_16BIT 0x080012a4 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) + SPI_2linesRxISR_16BIT 0x080012a5 Thumb Code 54 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT) + i.SPI_2linesRxISR_8BIT 0x080012da Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) + SPI_2linesRxISR_8BIT 0x080012db Thumb Code 94 stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT) + i.SPI_2linesTxISR_16BIT 0x08001338 Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) + SPI_2linesTxISR_16BIT 0x08001339 Thumb Code 52 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT) + i.SPI_2linesTxISR_8BIT 0x0800136c Section 0 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) + SPI_2linesTxISR_8BIT 0x0800136d Thumb Code 72 stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT) + i.SPI_CloseRxTx_ISR 0x080013b4 Section 0 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) + SPI_CloseRxTx_ISR 0x080013b5 Thumb Code 82 stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR) + i.SPI_DMAAbortOnError 0x08001406 Section 0 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) + SPI_DMAAbortOnError 0x08001407 Thumb Code 18 stm32f0xx_hal_spi.o(i.SPI_DMAAbortOnError) + i.SPI_EndRxTxTransaction 0x08001418 Section 0 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) + SPI_EndRxTxTransaction 0x08001419 Thumb Code 76 stm32f0xx_hal_spi.o(i.SPI_EndRxTxTransaction) + i.SPI_WaitFifoStateUntilTimeout 0x08001464 Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) + SPI_WaitFifoStateUntilTimeout 0x08001465 Thumb Code 150 stm32f0xx_hal_spi.o(i.SPI_WaitFifoStateUntilTimeout) + i.SPI_WaitFlagStateUntilTimeout 0x080014fa Section 0 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + SPI_WaitFlagStateUntilTimeout 0x080014fb Thumb Code 140 stm32f0xx_hal_spi.o(i.SPI_WaitFlagStateUntilTimeout) + i.SVC_Handler 0x08001586 Section 0 stm32f0xx_it.o(i.SVC_Handler) + i.SysTick_Handler 0x08001588 Section 0 stm32f0xx_it.o(i.SysTick_Handler) + i.SystemClock_Config 0x08001594 Section 0 main.o(i.SystemClock_Config) + i.SystemInit 0x080015f0 Section 0 system_stm32f0xx.o(i.SystemInit) + i.TIM_Base_SetConfig 0x0800164c Section 0 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) + i.TIM_ETR_SetConfig 0x080016d0 Section 0 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) + i.TIM_ITRx_SetConfig 0x080016e6 Section 0 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) + TIM_ITRx_SetConfig 0x080016e7 Thumb Code 16 stm32f0xx_hal_tim.o(i.TIM_ITRx_SetConfig) + i.TIM_TI1_ConfigInputStage 0x080016f6 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + TIM_TI1_ConfigInputStage 0x080016f7 Thumb Code 34 stm32f0xx_hal_tim.o(i.TIM_TI1_ConfigInputStage) + i.TIM_TI2_ConfigInputStage 0x08001718 Section 0 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + TIM_TI2_ConfigInputStage 0x08001719 Thumb Code 38 stm32f0xx_hal_tim.o(i.TIM_TI2_ConfigInputStage) + i.UART_AdvFeatureConfig 0x0800173e Section 0 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) + i.UART_CheckIdleState 0x08001808 Section 0 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) + i.UART_SetConfig 0x08001870 Section 0 stm32f0xx_hal_uart.o(i.UART_SetConfig) + i.UART_WaitOnFlagUntilTimeout 0x080019a0 Section 0 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + i.__0printf$3 0x08001a04 Section 0 printf3.o(i.__0printf$3) + i.__scatterload_copy 0x08001a24 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x08001a32 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x08001a34 Section 14 handlers.o(i.__scatterload_zeroinit) + i._printf_core 0x08001a44 Section 0 printf3.o(i._printf_core) + _printf_core 0x08001a45 Thumb Code 456 printf3.o(i._printf_core) + i.delay_us 0x08001c10 Section 0 delay_us.o(i.delay_us) + i.delay_us_init 0x08001c24 Section 0 delay_us.o(i.delay_us_init) + i.fputc 0x08001c34 Section 0 main.o(i.fputc) + i.get_bit 0x08001c4c Section 0 main.o(i.get_bit) + i.kb_buf_add 0x08001c5c Section 0 helpers.o(i.kb_buf_add) + i.kb_buf_init 0x08001c88 Section 0 helpers.o(i.kb_buf_init) + i.kb_buf_is_full 0x08001ca4 Section 0 helpers.o(i.kb_buf_is_full) + i.kb_buf_peek 0x08001cba Section 0 helpers.o(i.kb_buf_peek) + i.kb_buf_pop 0x08001cda Section 0 helpers.o(i.kb_buf_pop) + i.kb_buf_reset 0x08001cec Section 0 helpers.o(i.kb_buf_reset) + i.main 0x08001d08 Section 0 main.o(i.main) + i.malloc 0x08001dc8 Section 0 malloc.o(i.malloc) + i.micros 0x08001e34 Section 0 delay_us.o(i.micros) + i.protocol_status_lookup_init 0x08001e44 Section 0 main.o(i.protocol_status_lookup_init) + i.release_kb_line 0x08001e60 Section 0 main.o(i.release_kb_line) + i.send_key 0x08001e7c Section 0 main.o(i.send_key) + i.spi_error_dump_reboot 0x08001eac Section 0 main.o(i.spi_error_dump_reboot) + i.write_bit 0x08001f28 Section 0 main.o(i.write_bit) + .constdata 0x08001f60 Section 59 main.o(.constdata) + .constdata 0x08001f9b Section 16 system_stm32f0xx.o(.constdata) + .constdata 0x08001fab Section 8 system_stm32f0xx.o(.constdata) .data 0x20000000 Section 4 delay_us.o(.data) .data 0x20000004 Section 8 main.o(.data) .data 0x2000000c Section 4 stm32f0xx_hal.o(.data) @@ -1863,81 +1867,82 @@ Image Symbol Table HAL_DMA_Abort_IT 0x080001a1 Thumb Code 72 stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT) HAL_Delay 0x080001e9 Thumb Code 28 stm32f0xx_hal.o(i.HAL_Delay) HAL_GPIO_Init 0x08000205 Thumb Code 294 stm32f0xx_hal_gpio.o(i.HAL_GPIO_Init) - HAL_GPIO_ReadPin 0x08000341 Thumb Code 10 stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) - HAL_GPIO_TogglePin 0x0800034b Thumb Code 8 stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) - HAL_GPIO_WritePin 0x08000353 Thumb Code 12 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) - HAL_GetTick 0x08000361 Thumb Code 6 stm32f0xx_hal.o(i.HAL_GetTick) - HAL_HalfDuplex_Init 0x0800036d Thumb Code 118 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init) - HAL_IncTick 0x080003e5 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) - HAL_Init 0x080003f5 Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) - HAL_InitTick 0x08000415 Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) - HAL_MspInit 0x08000439 Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) - HAL_NVIC_EnableIRQ 0x0800047d Thumb Code 14 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) - HAL_NVIC_SetPriority 0x08000491 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) - HAL_RCC_ClockConfig 0x08000499 Thumb Code 320 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) - HAL_RCC_GetHCLKFreq 0x080005ed Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) - HAL_RCC_GetPCLK1Freq 0x080005f9 Thumb Code 20 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) - HAL_RCC_GetSysClockFreq 0x08000619 Thumb Code 90 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) - HAL_RCC_OscConfig 0x080006a1 Thumb Code 966 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) - HAL_SPI_ErrorCallback 0x08000a79 Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) - HAL_SPI_IRQHandler 0x08000a7d Thumb Code 208 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) - HAL_SPI_Init 0x08000b51 Thumb Code 184 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) - HAL_SPI_MspInit 0x08000c09 Thumb Code 76 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) - HAL_SPI_RxCpltCallback 0x08000c5d Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) - HAL_SPI_TransmitReceive_IT 0x08000c61 Thumb Code 196 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) - HAL_SPI_TxRxCpltCallback 0x08000d35 Thumb Code 154 main.o(i.HAL_SPI_TxRxCpltCallback) - HAL_SYSTICK_CLKSourceConfig 0x08000de1 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) - HAL_SYSTICK_Callback 0x08000df9 Thumb Code 2 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) - HAL_SYSTICK_Config 0x08000dfd Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) - HAL_SYSTICK_IRQHandler 0x08000e2d Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) - HAL_TIMEx_MasterConfigSynchronization 0x08000e35 Thumb Code 72 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) - HAL_TIM_Base_Init 0x08000e7d Thumb Code 52 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) - HAL_TIM_Base_MspInit 0x08000eb1 Thumb Code 30 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) - HAL_TIM_Base_Start 0x08000ed5 Thumb Code 24 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) - HAL_TIM_ConfigClockSource 0x08000eed Thumb Code 238 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) - HAL_UART_MspInit 0x08000fdd Thumb Code 62 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) - HAL_UART_Transmit 0x08001025 Thumb Code 200 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) - HardFault_Handler 0x080010ed Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) - NMI_Handler 0x08001255 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) - PendSV_Handler 0x0800129d Thumb Code 2 stm32f0xx_it.o(i.PendSV_Handler) - SPI1_IRQHandler 0x080012a1 Thumb Code 10 stm32f0xx_it.o(i.SPI1_IRQHandler) - SVC_Handler 0x08001593 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) - SendBit 0x08001595 Thumb Code 54 main.o(i.SendBit) - SysTick_Handler 0x080015cb Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) - SystemClock_Config 0x080015d7 Thumb Code 90 main.o(i.SystemClock_Config) - SystemInit 0x08001631 Thumb Code 78 system_stm32f0xx.o(i.SystemInit) - TIM_Base_SetConfig 0x0800168d Thumb Code 112 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) - TIM_ETR_SetConfig 0x08001711 Thumb Code 22 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) - UART_AdvFeatureConfig 0x0800177f Thumb Code 202 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) - UART_CheckIdleState 0x08001849 Thumb Code 96 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) - UART_SetConfig 0x080018b1 Thumb Code 280 stm32f0xx_hal_uart.o(i.UART_SetConfig) - UART_WaitOnFlagUntilTimeout 0x080019e1 Thumb Code 98 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) - __0printf$3 0x08001a45 Thumb Code 24 printf3.o(i.__0printf$3) - __1printf$3 0x08001a45 Thumb Code 0 printf3.o(i.__0printf$3) - __2printf 0x08001a45 Thumb Code 0 printf3.o(i.__0printf$3) - __scatterload_copy 0x08001a65 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08001a73 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08001a75 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - delay_us 0x08001c51 Thumb Code 20 delay_us.o(i.delay_us) - delay_us_init 0x08001c65 Thumb Code 12 delay_us.o(i.delay_us_init) - fputc 0x08001c75 Thumb Code 18 main.o(i.fputc) - kb_buf_add 0x08001c8d Thumb Code 44 helpers.o(i.kb_buf_add) - kb_buf_init 0x08001cb9 Thumb Code 28 helpers.o(i.kb_buf_init) - kb_buf_is_full 0x08001cd5 Thumb Code 22 helpers.o(i.kb_buf_is_full) - kb_buf_peek 0x08001ceb Thumb Code 32 helpers.o(i.kb_buf_peek) - kb_buf_pop 0x08001d0b Thumb Code 18 helpers.o(i.kb_buf_pop) - kb_buf_reset 0x08001d1d Thumb Code 28 helpers.o(i.kb_buf_reset) - main 0x08001d39 Thumb Code 168 main.o(i.main) - malloc 0x08001e05 Thumb Code 92 malloc.o(i.malloc) - micros 0x08001e71 Thumb Code 10 delay_us.o(i.micros) - protocol_status_lookup_init 0x08001e81 Thumb Code 22 main.o(i.protocol_status_lookup_init) - spi_error_dump_reboot 0x08001e9d Thumb Code 76 main.o(i.spi_error_dump_reboot) - wait_for_KBACK 0x08001f19 Thumb Code 40 main.o(i.wait_for_KBACK) - boot_message 0x08001f44 Data 59 main.o(.constdata) - AHBPrescTable 0x08001f7f Data 16 system_stm32f0xx.o(.constdata) - APBPrescTable 0x08001f8f Data 8 system_stm32f0xx.o(.constdata) - Region$$Table$$Base 0x08001f98 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08001fb8 Number 0 anon$$obj.o(Region$$Table) + HAL_GPIO_TogglePin 0x08000341 Thumb Code 8 stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) + HAL_GPIO_WritePin 0x08000349 Thumb Code 12 stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) + HAL_GetTick 0x08000355 Thumb Code 6 stm32f0xx_hal.o(i.HAL_GetTick) + HAL_HalfDuplex_Init 0x08000361 Thumb Code 118 stm32f0xx_hal_uart.o(i.HAL_HalfDuplex_Init) + HAL_IncTick 0x080003d9 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) + HAL_Init 0x080003e9 Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) + HAL_InitTick 0x08000409 Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) + HAL_MspInit 0x0800042d Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) + HAL_NVIC_EnableIRQ 0x08000471 Thumb Code 14 stm32f0xx_hal_cortex.o(i.HAL_NVIC_EnableIRQ) + HAL_NVIC_SetPriority 0x08000485 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) + HAL_RCC_ClockConfig 0x0800048d Thumb Code 320 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) + HAL_RCC_GetHCLKFreq 0x080005e1 Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) + HAL_RCC_GetPCLK1Freq 0x080005ed Thumb Code 20 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetPCLK1Freq) + HAL_RCC_GetSysClockFreq 0x0800060d Thumb Code 90 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) + HAL_RCC_OscConfig 0x08000695 Thumb Code 966 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) + HAL_SPI_ErrorCallback 0x08000a6d Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_ErrorCallback) + HAL_SPI_IRQHandler 0x08000a71 Thumb Code 208 stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) + HAL_SPI_Init 0x08000b45 Thumb Code 184 stm32f0xx_hal_spi.o(i.HAL_SPI_Init) + HAL_SPI_MspInit 0x08000bfd Thumb Code 76 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit) + HAL_SPI_RxCpltCallback 0x08000c51 Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback) + HAL_SPI_TransmitReceive_IT 0x08000c55 Thumb Code 196 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) + HAL_SPI_TxRxCpltCallback 0x08000d29 Thumb Code 154 main.o(i.HAL_SPI_TxRxCpltCallback) + HAL_SYSTICK_CLKSourceConfig 0x08000dd5 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) + HAL_SYSTICK_Callback 0x08000ded Thumb Code 2 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback) + HAL_SYSTICK_Config 0x08000df1 Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) + HAL_SYSTICK_IRQHandler 0x08000e21 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) + HAL_TIMEx_MasterConfigSynchronization 0x08000e29 Thumb Code 72 stm32f0xx_hal_tim_ex.o(i.HAL_TIMEx_MasterConfigSynchronization) + HAL_TIM_Base_Init 0x08000e71 Thumb Code 52 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Init) + HAL_TIM_Base_MspInit 0x08000ea5 Thumb Code 30 stm32f0xx_hal_msp.o(i.HAL_TIM_Base_MspInit) + HAL_TIM_Base_Start 0x08000ec9 Thumb Code 24 stm32f0xx_hal_tim.o(i.HAL_TIM_Base_Start) + HAL_TIM_ConfigClockSource 0x08000ee1 Thumb Code 238 stm32f0xx_hal_tim.o(i.HAL_TIM_ConfigClockSource) + HAL_UART_MspInit 0x08000fd1 Thumb Code 62 stm32f0xx_hal_msp.o(i.HAL_UART_MspInit) + HAL_UART_Transmit 0x08001019 Thumb Code 200 stm32f0xx_hal_uart.o(i.HAL_UART_Transmit) + HardFault_Handler 0x080010e1 Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) + NMI_Handler 0x08001249 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) + PendSV_Handler 0x08001291 Thumb Code 2 stm32f0xx_it.o(i.PendSV_Handler) + SPI1_IRQHandler 0x08001295 Thumb Code 10 stm32f0xx_it.o(i.SPI1_IRQHandler) + SVC_Handler 0x08001587 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) + SysTick_Handler 0x08001589 Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) + SystemClock_Config 0x08001595 Thumb Code 90 main.o(i.SystemClock_Config) + SystemInit 0x080015f1 Thumb Code 78 system_stm32f0xx.o(i.SystemInit) + TIM_Base_SetConfig 0x0800164d Thumb Code 112 stm32f0xx_hal_tim.o(i.TIM_Base_SetConfig) + TIM_ETR_SetConfig 0x080016d1 Thumb Code 22 stm32f0xx_hal_tim.o(i.TIM_ETR_SetConfig) + UART_AdvFeatureConfig 0x0800173f Thumb Code 202 stm32f0xx_hal_uart.o(i.UART_AdvFeatureConfig) + UART_CheckIdleState 0x08001809 Thumb Code 96 stm32f0xx_hal_uart.o(i.UART_CheckIdleState) + UART_SetConfig 0x08001871 Thumb Code 280 stm32f0xx_hal_uart.o(i.UART_SetConfig) + UART_WaitOnFlagUntilTimeout 0x080019a1 Thumb Code 98 stm32f0xx_hal_uart.o(i.UART_WaitOnFlagUntilTimeout) + __0printf$3 0x08001a05 Thumb Code 24 printf3.o(i.__0printf$3) + __1printf$3 0x08001a05 Thumb Code 0 printf3.o(i.__0printf$3) + __2printf 0x08001a05 Thumb Code 0 printf3.o(i.__0printf$3) + __scatterload_copy 0x08001a25 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x08001a33 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x08001a35 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + delay_us 0x08001c11 Thumb Code 20 delay_us.o(i.delay_us) + delay_us_init 0x08001c25 Thumb Code 12 delay_us.o(i.delay_us_init) + fputc 0x08001c35 Thumb Code 18 main.o(i.fputc) + get_bit 0x08001c4d Thumb Code 16 main.o(i.get_bit) + kb_buf_add 0x08001c5d Thumb Code 44 helpers.o(i.kb_buf_add) + kb_buf_init 0x08001c89 Thumb Code 28 helpers.o(i.kb_buf_init) + kb_buf_is_full 0x08001ca5 Thumb Code 22 helpers.o(i.kb_buf_is_full) + kb_buf_peek 0x08001cbb Thumb Code 32 helpers.o(i.kb_buf_peek) + kb_buf_pop 0x08001cdb Thumb Code 18 helpers.o(i.kb_buf_pop) + kb_buf_reset 0x08001ced Thumb Code 28 helpers.o(i.kb_buf_reset) + main 0x08001d09 Thumb Code 160 main.o(i.main) + malloc 0x08001dc9 Thumb Code 92 malloc.o(i.malloc) + micros 0x08001e35 Thumb Code 10 delay_us.o(i.micros) + protocol_status_lookup_init 0x08001e45 Thumb Code 22 main.o(i.protocol_status_lookup_init) + release_kb_line 0x08001e61 Thumb Code 28 main.o(i.release_kb_line) + send_key 0x08001e7d Thumb Code 48 main.o(i.send_key) + spi_error_dump_reboot 0x08001ead Thumb Code 76 main.o(i.spi_error_dump_reboot) + write_bit 0x08001f29 Thumb Code 56 main.o(i.write_bit) + boot_message 0x08001f60 Data 59 main.o(.constdata) + AHBPrescTable 0x08001f9b Data 16 system_stm32f0xx.o(.constdata) + APBPrescTable 0x08001fab Data 8 system_stm32f0xx.o(.constdata) + Region$$Table$$Base 0x08001fb4 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08001fd4 Number 0 anon$$obj.o(Region$$Table) us_timer 0x20000000 Data 4 delay_us.o(.data) spi_error_occured 0x20000004 Data 1 main.o(.data) led_off_after 0x20000008 Data 4 main.o(.data) @@ -1965,146 +1970,147 @@ Memory Map of the image Image Entry point : 0x080000c1 - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001fd8, Max: 0x00008000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001ff4, Max: 0x00008000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001fb8, Max: 0x00008000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001fd4, Max: 0x00008000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000c0 Data RO 3 RESET startup_stm32f042x6.o - 0x080000c0 0x080000c0 0x00000000 Code RO 3502 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) - 0x080000c0 0x080000c0 0x00000004 Code RO 3800 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) - 0x080000c4 0x080000c4 0x00000004 Code RO 3803 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) - 0x080000c8 0x080000c8 0x00000000 Code RO 3805 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) - 0x080000c8 0x080000c8 0x00000000 Code RO 3807 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) - 0x080000c8 0x080000c8 0x00000008 Code RO 3808 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) - 0x080000d0 0x080000d0 0x00000000 Code RO 3810 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) - 0x080000d0 0x080000d0 0x00000000 Code RO 3812 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) - 0x080000d0 0x080000d0 0x00000004 Code RO 3801 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) + 0x080000c0 0x080000c0 0x00000000 Code RO 3518 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) + 0x080000c0 0x080000c0 0x00000004 Code RO 3816 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) + 0x080000c4 0x080000c4 0x00000004 Code RO 3819 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) + 0x080000c8 0x080000c8 0x00000000 Code RO 3821 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) + 0x080000c8 0x080000c8 0x00000000 Code RO 3823 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) + 0x080000c8 0x080000c8 0x00000008 Code RO 3824 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) + 0x080000d0 0x080000d0 0x00000000 Code RO 3826 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) + 0x080000d0 0x080000d0 0x00000000 Code RO 3828 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) + 0x080000d0 0x080000d0 0x00000004 Code RO 3817 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x080000d4 0x080000d4 0x00000058 Code RO 4 .text startup_stm32f042x6.o - 0x0800012c 0x0800012c 0x0000002c Code RO 3505 .text mc_p.l(uidiv.o) - 0x08000158 0x08000158 0x00000024 Code RO 3509 .text mc_p.l(memseta.o) - 0x0800017c 0x0800017c 0x00000024 Code RO 3834 .text mc_p.l(init.o) - 0x080001a0 0x080001a0 0x00000048 Code RO 2959 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o - 0x080001e8 0x080001e8 0x0000001c Code RO 2288 i.HAL_Delay stm32f0xx_hal.o - 0x08000204 0x08000204 0x0000013c Code RO 2897 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o - 0x08000340 0x08000340 0x0000000a Code RO 2899 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o - 0x0800034a 0x0800034a 0x00000008 Code RO 2900 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o - 0x08000352 0x08000352 0x0000000c Code RO 2901 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o - 0x0800035e 0x0800035e 0x00000002 PAD - 0x08000360 0x08000360 0x0000000c Code RO 2292 i.HAL_GetTick stm32f0xx_hal.o - 0x0800036c 0x0800036c 0x00000076 Code RO 1707 i.HAL_HalfDuplex_Init stm32f0xx_hal_uart.o - 0x080003e2 0x080003e2 0x00000002 PAD - 0x080003e4 0x080003e4 0x00000010 Code RO 2296 i.HAL_IncTick stm32f0xx_hal.o - 0x080003f4 0x080003f4 0x00000020 Code RO 2297 i.HAL_Init stm32f0xx_hal.o - 0x08000414 0x08000414 0x00000022 Code RO 2298 i.HAL_InitTick stm32f0xx_hal.o - 0x08000436 0x08000436 0x00000002 PAD - 0x08000438 0x08000438 0x00000044 Code RO 430 i.HAL_MspInit stm32f0xx_hal_msp.o - 0x0800047c 0x0800047c 0x00000014 Code RO 3054 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o - 0x08000490 0x08000490 0x00000008 Code RO 3058 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o - 0x08000498 0x08000498 0x00000154 Code RO 2106 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o - 0x080005ec 0x080005ec 0x0000000c Code RO 2111 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o - 0x080005f8 0x080005f8 0x00000020 Code RO 2113 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o - 0x08000618 0x08000618 0x00000088 Code RO 2114 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o - 0x080006a0 0x080006a0 0x000003d8 Code RO 2117 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o - 0x08000a78 0x08000a78 0x00000002 Code RO 493 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o - 0x08000a7a 0x08000a7a 0x00000002 PAD - 0x08000a7c 0x08000a7c 0x000000d4 Code RO 496 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o - 0x08000b50 0x08000b50 0x000000b8 Code RO 497 i.HAL_SPI_Init stm32f0xx_hal_spi.o - 0x08000c08 0x08000c08 0x00000054 Code RO 432 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o - 0x08000c5c 0x08000c5c 0x00000002 Code RO 503 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o - 0x08000c5e 0x08000c5e 0x00000002 PAD - 0x08000c60 0x08000c60 0x000000d4 Code RO 508 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o - 0x08000d34 0x08000d34 0x000000ac Code RO 257 i.HAL_SPI_TxRxCpltCallback main.o - 0x08000de0 0x08000de0 0x00000018 Code RO 3060 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o - 0x08000df8 0x08000df8 0x00000002 Code RO 3061 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o - 0x08000dfa 0x08000dfa 0x00000002 PAD - 0x08000dfc 0x08000dfc 0x00000030 Code RO 3062 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o - 0x08000e2c 0x08000e2c 0x00000008 Code RO 3063 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o - 0x08000e34 0x08000e34 0x00000048 Code RO 1487 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o - 0x08000e7c 0x08000e7c 0x00000034 Code RO 831 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o - 0x08000eb0 0x08000eb0 0x00000024 Code RO 434 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o - 0x08000ed4 0x08000ed4 0x00000018 Code RO 834 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o - 0x08000eec 0x08000eec 0x000000ee Code RO 840 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o - 0x08000fda 0x08000fda 0x00000002 PAD - 0x08000fdc 0x08000fdc 0x00000048 Code RO 436 i.HAL_UART_MspInit stm32f0xx_hal_msp.o - 0x08001024 0x08001024 0x000000c8 Code RO 1737 i.HAL_UART_Transmit stm32f0xx_hal_uart.o - 0x080010ec 0x080010ec 0x00000002 Code RO 376 i.HardFault_Handler stm32f0xx_it.o - 0x080010ee 0x080010ee 0x00000002 PAD - 0x080010f0 0x080010f0 0x0000009c Code RO 258 i.MX_GPIO_Init main.o - 0x0800118c 0x0800118c 0x0000003c Code RO 259 i.MX_SPI1_Init main.o - 0x080011c8 0x080011c8 0x00000054 Code RO 260 i.MX_TIM2_Init main.o - 0x0800121c 0x0800121c 0x00000038 Code RO 261 i.MX_USART2_UART_Init main.o - 0x08001254 0x08001254 0x00000002 Code RO 377 i.NMI_Handler stm32f0xx_it.o - 0x08001256 0x08001256 0x00000002 PAD - 0x08001258 0x08001258 0x00000044 Code RO 3064 i.NVIC_SetPriority stm32f0xx_hal_cortex.o - 0x0800129c 0x0800129c 0x00000002 Code RO 378 i.PendSV_Handler stm32f0xx_it.o - 0x0800129e 0x0800129e 0x00000002 PAD - 0x080012a0 0x080012a0 0x00000010 Code RO 379 i.SPI1_IRQHandler stm32f0xx_it.o - 0x080012b0 0x080012b0 0x00000036 Code RO 515 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o - 0x080012e6 0x080012e6 0x0000005e Code RO 516 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o - 0x08001344 0x08001344 0x00000034 Code RO 517 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o - 0x08001378 0x08001378 0x00000048 Code RO 518 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o - 0x080013c0 0x080013c0 0x00000052 Code RO 521 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o - 0x08001412 0x08001412 0x00000012 Code RO 524 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o - 0x08001424 0x08001424 0x0000004c Code RO 535 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o - 0x08001470 0x08001470 0x00000096 Code RO 540 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o - 0x08001506 0x08001506 0x0000008c Code RO 541 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o - 0x08001592 0x08001592 0x00000002 Code RO 380 i.SVC_Handler stm32f0xx_it.o - 0x08001594 0x08001594 0x00000036 Code RO 262 i.SendBit main.o - 0x080015ca 0x080015ca 0x0000000c Code RO 381 i.SysTick_Handler stm32f0xx_it.o - 0x080015d6 0x080015d6 0x0000005a Code RO 263 i.SystemClock_Config main.o - 0x08001630 0x08001630 0x0000005c Code RO 3471 i.SystemInit system_stm32f0xx.o - 0x0800168c 0x0800168c 0x00000084 Code RO 917 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o - 0x08001710 0x08001710 0x00000016 Code RO 924 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o - 0x08001726 0x08001726 0x00000010 Code RO 925 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o - 0x08001736 0x08001736 0x00000022 Code RO 931 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o - 0x08001758 0x08001758 0x00000026 Code RO 933 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o - 0x0800177e 0x0800177e 0x000000ca Code RO 1742 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o - 0x08001848 0x08001848 0x00000068 Code RO 1743 i.UART_CheckIdleState stm32f0xx_hal_uart.o - 0x080018b0 0x080018b0 0x00000130 Code RO 1758 i.UART_SetConfig stm32f0xx_hal_uart.o - 0x080019e0 0x080019e0 0x00000062 Code RO 1760 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o + 0x0800012c 0x0800012c 0x0000002c Code RO 3521 .text mc_p.l(uidiv.o) + 0x08000158 0x08000158 0x00000024 Code RO 3525 .text mc_p.l(memseta.o) + 0x0800017c 0x0800017c 0x00000024 Code RO 3850 .text mc_p.l(init.o) + 0x080001a0 0x080001a0 0x00000048 Code RO 2975 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o + 0x080001e8 0x080001e8 0x0000001c Code RO 2304 i.HAL_Delay stm32f0xx_hal.o + 0x08000204 0x08000204 0x0000013c Code RO 2913 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o + 0x08000340 0x08000340 0x00000008 Code RO 2916 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o + 0x08000348 0x08000348 0x0000000c Code RO 2917 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o + 0x08000354 0x08000354 0x0000000c Code RO 2308 i.HAL_GetTick stm32f0xx_hal.o + 0x08000360 0x08000360 0x00000076 Code RO 1723 i.HAL_HalfDuplex_Init stm32f0xx_hal_uart.o + 0x080003d6 0x080003d6 0x00000002 PAD + 0x080003d8 0x080003d8 0x00000010 Code RO 2312 i.HAL_IncTick stm32f0xx_hal.o + 0x080003e8 0x080003e8 0x00000020 Code RO 2313 i.HAL_Init stm32f0xx_hal.o + 0x08000408 0x08000408 0x00000022 Code RO 2314 i.HAL_InitTick stm32f0xx_hal.o + 0x0800042a 0x0800042a 0x00000002 PAD + 0x0800042c 0x0800042c 0x00000044 Code RO 446 i.HAL_MspInit stm32f0xx_hal_msp.o + 0x08000470 0x08000470 0x00000014 Code RO 3070 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o + 0x08000484 0x08000484 0x00000008 Code RO 3074 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o + 0x0800048c 0x0800048c 0x00000154 Code RO 2122 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o + 0x080005e0 0x080005e0 0x0000000c Code RO 2127 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o + 0x080005ec 0x080005ec 0x00000020 Code RO 2129 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o + 0x0800060c 0x0800060c 0x00000088 Code RO 2130 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o + 0x08000694 0x08000694 0x000003d8 Code RO 2133 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o + 0x08000a6c 0x08000a6c 0x00000002 Code RO 509 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o + 0x08000a6e 0x08000a6e 0x00000002 PAD + 0x08000a70 0x08000a70 0x000000d4 Code RO 512 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o + 0x08000b44 0x08000b44 0x000000b8 Code RO 513 i.HAL_SPI_Init stm32f0xx_hal_spi.o + 0x08000bfc 0x08000bfc 0x00000054 Code RO 448 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o + 0x08000c50 0x08000c50 0x00000002 Code RO 519 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o + 0x08000c52 0x08000c52 0x00000002 PAD + 0x08000c54 0x08000c54 0x000000d4 Code RO 524 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o + 0x08000d28 0x08000d28 0x000000ac Code RO 257 i.HAL_SPI_TxRxCpltCallback main.o + 0x08000dd4 0x08000dd4 0x00000018 Code RO 3076 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o + 0x08000dec 0x08000dec 0x00000002 Code RO 3077 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o + 0x08000dee 0x08000dee 0x00000002 PAD + 0x08000df0 0x08000df0 0x00000030 Code RO 3078 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o + 0x08000e20 0x08000e20 0x00000008 Code RO 3079 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o + 0x08000e28 0x08000e28 0x00000048 Code RO 1503 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o + 0x08000e70 0x08000e70 0x00000034 Code RO 847 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o + 0x08000ea4 0x08000ea4 0x00000024 Code RO 450 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o + 0x08000ec8 0x08000ec8 0x00000018 Code RO 850 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o + 0x08000ee0 0x08000ee0 0x000000ee Code RO 856 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o + 0x08000fce 0x08000fce 0x00000002 PAD + 0x08000fd0 0x08000fd0 0x00000048 Code RO 452 i.HAL_UART_MspInit stm32f0xx_hal_msp.o + 0x08001018 0x08001018 0x000000c8 Code RO 1753 i.HAL_UART_Transmit stm32f0xx_hal_uart.o + 0x080010e0 0x080010e0 0x00000002 Code RO 392 i.HardFault_Handler stm32f0xx_it.o + 0x080010e2 0x080010e2 0x00000002 PAD + 0x080010e4 0x080010e4 0x0000009c Code RO 258 i.MX_GPIO_Init main.o + 0x08001180 0x08001180 0x0000003c Code RO 259 i.MX_SPI1_Init main.o + 0x080011bc 0x080011bc 0x00000054 Code RO 260 i.MX_TIM2_Init main.o + 0x08001210 0x08001210 0x00000038 Code RO 261 i.MX_USART2_UART_Init main.o + 0x08001248 0x08001248 0x00000002 Code RO 393 i.NMI_Handler stm32f0xx_it.o + 0x0800124a 0x0800124a 0x00000002 PAD + 0x0800124c 0x0800124c 0x00000044 Code RO 3080 i.NVIC_SetPriority stm32f0xx_hal_cortex.o + 0x08001290 0x08001290 0x00000002 Code RO 394 i.PendSV_Handler stm32f0xx_it.o + 0x08001292 0x08001292 0x00000002 PAD + 0x08001294 0x08001294 0x00000010 Code RO 395 i.SPI1_IRQHandler stm32f0xx_it.o + 0x080012a4 0x080012a4 0x00000036 Code RO 531 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o + 0x080012da 0x080012da 0x0000005e Code RO 532 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o + 0x08001338 0x08001338 0x00000034 Code RO 533 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o + 0x0800136c 0x0800136c 0x00000048 Code RO 534 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o + 0x080013b4 0x080013b4 0x00000052 Code RO 537 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o + 0x08001406 0x08001406 0x00000012 Code RO 540 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o + 0x08001418 0x08001418 0x0000004c Code RO 551 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o + 0x08001464 0x08001464 0x00000096 Code RO 556 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o + 0x080014fa 0x080014fa 0x0000008c Code RO 557 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o + 0x08001586 0x08001586 0x00000002 Code RO 396 i.SVC_Handler stm32f0xx_it.o + 0x08001588 0x08001588 0x0000000c Code RO 397 i.SysTick_Handler stm32f0xx_it.o + 0x08001594 0x08001594 0x0000005a Code RO 262 i.SystemClock_Config main.o + 0x080015ee 0x080015ee 0x00000002 PAD + 0x080015f0 0x080015f0 0x0000005c Code RO 3487 i.SystemInit system_stm32f0xx.o + 0x0800164c 0x0800164c 0x00000084 Code RO 933 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o + 0x080016d0 0x080016d0 0x00000016 Code RO 940 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o + 0x080016e6 0x080016e6 0x00000010 Code RO 941 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o + 0x080016f6 0x080016f6 0x00000022 Code RO 947 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o + 0x08001718 0x08001718 0x00000026 Code RO 949 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o + 0x0800173e 0x0800173e 0x000000ca Code RO 1758 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o + 0x08001808 0x08001808 0x00000068 Code RO 1759 i.UART_CheckIdleState stm32f0xx_hal_uart.o + 0x08001870 0x08001870 0x00000130 Code RO 1774 i.UART_SetConfig stm32f0xx_hal_uart.o + 0x080019a0 0x080019a0 0x00000062 Code RO 1776 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o + 0x08001a02 0x08001a02 0x00000002 PAD + 0x08001a04 0x08001a04 0x00000020 Code RO 3616 i.__0printf$3 mc_p.l(printf3.o) + 0x08001a24 0x08001a24 0x0000000e Code RO 3862 i.__scatterload_copy mc_p.l(handlers.o) + 0x08001a32 0x08001a32 0x00000002 Code RO 3863 i.__scatterload_null mc_p.l(handlers.o) + 0x08001a34 0x08001a34 0x0000000e Code RO 3864 i.__scatterload_zeroinit mc_p.l(handlers.o) 0x08001a42 0x08001a42 0x00000002 PAD - 0x08001a44 0x08001a44 0x00000020 Code RO 3600 i.__0printf$3 mc_p.l(printf3.o) - 0x08001a64 0x08001a64 0x0000000e Code RO 3846 i.__scatterload_copy mc_p.l(handlers.o) - 0x08001a72 0x08001a72 0x00000002 Code RO 3847 i.__scatterload_null mc_p.l(handlers.o) - 0x08001a74 0x08001a74 0x0000000e Code RO 3848 i.__scatterload_zeroinit mc_p.l(handlers.o) - 0x08001a82 0x08001a82 0x00000002 PAD - 0x08001a84 0x08001a84 0x000001cc Code RO 3607 i._printf_core mc_p.l(printf3.o) - 0x08001c50 0x08001c50 0x00000014 Code RO 12 i.delay_us delay_us.o - 0x08001c64 0x08001c64 0x00000010 Code RO 13 i.delay_us_init delay_us.o - 0x08001c74 0x08001c74 0x00000018 Code RO 266 i.fputc main.o - 0x08001c8c 0x08001c8c 0x0000002c Code RO 149 i.kb_buf_add helpers.o - 0x08001cb8 0x08001cb8 0x0000001c Code RO 150 i.kb_buf_init helpers.o - 0x08001cd4 0x08001cd4 0x00000016 Code RO 152 i.kb_buf_is_full helpers.o - 0x08001cea 0x08001cea 0x00000020 Code RO 153 i.kb_buf_peek helpers.o - 0x08001d0a 0x08001d0a 0x00000012 Code RO 154 i.kb_buf_pop helpers.o - 0x08001d1c 0x08001d1c 0x0000001c Code RO 155 i.kb_buf_reset helpers.o - 0x08001d38 0x08001d38 0x000000cc Code RO 269 i.main main.o - 0x08001e04 0x08001e04 0x0000006c Code RO 3773 i.malloc mc_p.l(malloc.o) - 0x08001e70 0x08001e70 0x00000010 Code RO 14 i.micros delay_us.o - 0x08001e80 0x08001e80 0x0000001c Code RO 270 i.protocol_status_lookup_init main.o - 0x08001e9c 0x08001e9c 0x0000007c Code RO 271 i.spi_error_dump_reboot main.o - 0x08001f18 0x08001f18 0x0000002c Code RO 272 i.wait_for_KBACK main.o - 0x08001f44 0x08001f44 0x0000003b Data RO 278 .constdata main.o - 0x08001f7f 0x08001f7f 0x00000010 Data RO 3472 .constdata system_stm32f0xx.o - 0x08001f8f 0x08001f8f 0x00000008 Data RO 3473 .constdata system_stm32f0xx.o - 0x08001f97 0x08001f97 0x00000001 PAD - 0x08001f98 0x08001f98 0x00000020 Data RO 3844 Region$$Table anon$$obj.o + 0x08001a44 0x08001a44 0x000001cc Code RO 3623 i._printf_core mc_p.l(printf3.o) + 0x08001c10 0x08001c10 0x00000014 Code RO 12 i.delay_us delay_us.o + 0x08001c24 0x08001c24 0x00000010 Code RO 13 i.delay_us_init delay_us.o + 0x08001c34 0x08001c34 0x00000018 Code RO 265 i.fputc main.o + 0x08001c4c 0x08001c4c 0x00000010 Code RO 266 i.get_bit main.o + 0x08001c5c 0x08001c5c 0x0000002c Code RO 149 i.kb_buf_add helpers.o + 0x08001c88 0x08001c88 0x0000001c Code RO 150 i.kb_buf_init helpers.o + 0x08001ca4 0x08001ca4 0x00000016 Code RO 152 i.kb_buf_is_full helpers.o + 0x08001cba 0x08001cba 0x00000020 Code RO 153 i.kb_buf_peek helpers.o + 0x08001cda 0x08001cda 0x00000012 Code RO 154 i.kb_buf_pop helpers.o + 0x08001cec 0x08001cec 0x0000001c Code RO 155 i.kb_buf_reset helpers.o + 0x08001d08 0x08001d08 0x000000c0 Code RO 269 i.main main.o + 0x08001dc8 0x08001dc8 0x0000006c Code RO 3789 i.malloc mc_p.l(malloc.o) + 0x08001e34 0x08001e34 0x00000010 Code RO 14 i.micros delay_us.o + 0x08001e44 0x08001e44 0x0000001c Code RO 270 i.protocol_status_lookup_init main.o + 0x08001e60 0x08001e60 0x0000001c Code RO 271 i.release_kb_line main.o + 0x08001e7c 0x08001e7c 0x00000030 Code RO 272 i.send_key main.o + 0x08001eac 0x08001eac 0x0000007c Code RO 273 i.spi_error_dump_reboot main.o + 0x08001f28 0x08001f28 0x00000038 Code RO 275 i.write_bit main.o + 0x08001f60 0x08001f60 0x0000003b Data RO 281 .constdata main.o + 0x08001f9b 0x08001f9b 0x00000010 Data RO 3488 .constdata system_stm32f0xx.o + 0x08001fab 0x08001fab 0x00000008 Data RO 3489 .constdata system_stm32f0xx.o + 0x08001fb3 0x08001fb3 0x00000001 PAD + 0x08001fb4 0x08001fb4 0x00000020 Data RO 3860 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001fb8, Size: 0x00000790, Max: 0x00001800, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001fd4, Size: 0x00000790, Max: 0x00001800, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08001fb8 0x00000004 Data RW 15 .data delay_us.o - 0x20000004 0x08001fbc 0x00000008 Data RW 279 .data main.o - 0x2000000c 0x08001fc4 0x00000004 Data RW 2303 .data stm32f0xx_hal.o - 0x20000010 0x08001fc8 0x00000004 Data RW 3474 .data system_stm32f0xx.o - 0x20000014 0x08001fcc 0x00000004 Data RW 3814 .data mc_p.l(stdout.o) - 0x20000018 0x08001fd0 0x00000004 Data RW 3821 .data mc_p.l(mvars.o) - 0x2000001c 0x08001fd4 0x00000004 Data RW 3822 .data mc_p.l(mvars.o) - 0x20000020 - 0x00000170 Zero RW 273 .bss main.o + 0x20000000 0x08001fd4 0x00000004 Data RW 15 .data delay_us.o + 0x20000004 0x08001fd8 0x00000008 Data RW 282 .data main.o + 0x2000000c 0x08001fe0 0x00000004 Data RW 2319 .data stm32f0xx_hal.o + 0x20000010 0x08001fe4 0x00000004 Data RW 3490 .data system_stm32f0xx.o + 0x20000014 0x08001fe8 0x00000004 Data RW 3830 .data mc_p.l(stdout.o) + 0x20000018 0x08001fec 0x00000004 Data RW 3837 .data mc_p.l(mvars.o) + 0x2000001c 0x08001ff0 0x00000004 Data RW 3838 .data mc_p.l(mvars.o) + 0x20000020 - 0x00000170 Zero RW 276 .bss main.o 0x20000190 - 0x00000200 Zero RW 2 HEAP startup_stm32f042x6.o 0x20000390 - 0x00000400 Zero RW 1 STACK startup_stm32f042x6.o @@ -2118,12 +2124,12 @@ Image component sizes 52 10 0 4 0 449275 delay_us.o 172 0 0 0 0 4930 helpers.o - 1096 150 59 8 368 14721 main.o + 1134 142 59 8 368 15794 main.o 88 38 192 0 1536 644 startup_stm32f042x6.o 122 18 0 4 0 3619 stm32f0xx_hal.o 178 28 0 0 0 10515 stm32f0xx_hal_cortex.o 72 0 0 0 0 1099 stm32f0xx_hal_dma.o - 346 22 0 0 0 3432 stm32f0xx_hal_gpio.o + 336 22 0 0 0 2813 stm32f0xx_hal_gpio.o 260 28 0 0 0 2666 stm32f0xx_hal_msp.o 1504 102 0 0 0 5169 stm32f0xx_hal_rcc.o 1350 20 0 0 0 10502 stm32f0xx_hal_spi.o @@ -2134,7 +2140,7 @@ Image component sizes 92 14 24 4 0 1135 system_stm32f0xx.o ---------------------------------------------------------------------- - 7044 488 308 20 1904 523893 Object Totals + 7072 480 308 20 1904 524347 Object Totals 0 0 32 0 0 0 (incl. Generated) 22 0 1 0 0 0 (incl. Padding) @@ -2179,15 +2185,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 7812 532 308 32 1904 520965 Grand Totals - 7812 532 308 32 1904 520965 ELF Image Totals - 7812 532 308 32 0 0 ROM Totals + 7840 524 308 32 1904 521375 Grand Totals + 7840 524 308 32 1904 521375 ELF Image Totals + 7840 524 308 32 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 8120 ( 7.93kB) + Total RO Size (Code + RO Data) 8148 ( 7.96kB) Total RW Size (RW Data + ZI Data) 1936 ( 1.89kB) - Total ROM Size (Code + RO Data + RW Data) 8152 ( 7.96kB) + Total ROM Size (Code + RO Data + RW Data) 8180 ( 7.99kB) ============================================================================== diff --git a/firmware/sirius 1/MDK-ARM/my_adb/my_adb_my_adb.dep b/firmware/sirius 1/MDK-ARM/my_adb/my_adb_my_adb.dep index 44c7a3f..92d5ee3 100644 --- a/firmware/sirius 1/MDK-ARM/my_adb/my_adb_my_adb.dep +++ b/firmware/sirius 1/MDK-ARM/my_adb/my_adb_my_adb.dep @@ -75,7 +75,7 @@ I (../Inc/shared.h)(0x617487BD) F (..\Inc\adb.h)(0x628770DE)() F (..\Inc\delay_us.h)(0x617487C7)() F (..\Inc\helpers.h)(0x636C1D41)() -F (../Src/main.c)(0x636C3B30)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_my_adb -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F042x6 -DUSE_HAL_DRIVER -DSTM32F042x6 -o my_adb\main.o --omf_browse my_adb\main.crf --depend my_adb\main.d) +F (../Src/main.c)(0x636CCB60)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I.\RTE\_my_adb -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F042x6 -DUSE_HAL_DRIVER -DSTM32F042x6 -o my_adb\main.o --omf_browse my_adb\main.crf --depend my_adb\main.d) I (../Inc/main.h)(0x636C271F) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x636C271F) diff --git a/firmware/sirius 1/Src/main.c b/firmware/sirius 1/Src/main.c index dc3edbf..bdb5786 100644 --- a/firmware/sirius 1/Src/main.c +++ b/firmware/sirius 1/Src/main.c @@ -196,12 +196,19 @@ void protocol_status_lookup_init(void) #define KB_WRITE_ERROR 2 #define SIRIUS_1_KB_BIT_ACK_TIMEOUT_MS 20 -uint8_t wait_for_KBACK(void) +void release_kb_line(void) { + HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(KBRDY_GPIO_Port, KBRDY_Pin, GPIO_PIN_SET); +} + +uint8_t wait_for_KBACK(uint8_t level) +{ + return KB_WRITE_SUCCESS; uint32_t entry_time = HAL_GetTick(); while(1) { - if(HAL_GPIO_ReadPin(KBACK_GPIO_Port, KBACK_Pin) == GPIO_PIN_SET) + if(HAL_GPIO_ReadPin(KBACK_GPIO_Port, KBACK_Pin) == level) return KB_WRITE_SUCCESS; if(HAL_GetTick() - entry_time > SIRIUS_1_KB_BIT_ACK_TIMEOUT_MS) return KB_WRITE_TIMEOUT; @@ -209,15 +216,35 @@ uint8_t wait_for_KBACK(void) return KB_WRITE_ERROR; } -uint8_t SendBit(uint8_t value) +uint8_t write_bit(uint8_t bit) { - HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, value); + HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, bit); HAL_GPIO_WritePin(KBRDY_GPIO_Port, KBRDY_Pin, GPIO_PIN_RESET); - // while(HAL_GPIO_ReadPin(KBACK_GPIO_Port, KBACK_Pin)); + if(wait_for_KBACK(GPIO_PIN_RESET) != KB_WRITE_SUCCESS) + return KB_WRITE_TIMEOUT; delay_us(400); HAL_GPIO_WritePin(KBRDY_GPIO_Port, KBRDY_Pin, GPIO_PIN_SET); - // while(!digitalRead(KBACK)); + if(wait_for_KBACK(GPIO_PIN_SET) != KB_WRITE_SUCCESS) + return KB_WRITE_TIMEOUT; delay_us(400); + return KB_WRITE_SUCCESS; +} + +uint8_t get_bit(uint8_t x, uint8_t n) +{ + return (x & (1 << n)) ? 1 : 0; +} + +uint8_t send_key(uint8_t data, uint8_t key_status) +{ + data &= 0x7f; + if(key_status) + data |= 0x80; + for (int i = 0; i < 8; ++i) + write_bit(get_bit(data, i)); + write_bit(0); // stop bit + release_kb_line(); + return KB_WRITE_SUCCESS; } /* USER CODE END 0 */ @@ -278,12 +305,9 @@ int main(void) /* USER CODE BEGIN 3 */ if(kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0) { - SendBit(1); + send_key(0x28, buffered_value); kb_buf_pop(&my_kb_buf); } - - printf("%d\n", wait_for_KBACK()); - } /* USER CODE END 3 */ diff --git a/firmware/sirius 1/scrap.c b/firmware/sirius 1/scrap.c index bcf3c06..7e733f9 100644 --- a/firmware/sirius 1/scrap.c +++ b/firmware/sirius 1/scrap.c @@ -1,3 +1,30 @@ HAL_GPIO_TogglePin(KBDATA_GPIO_Port, KBDATA_Pin); HAL_GPIO_TogglePin(KBRDY_GPIO_Port, KBRDY_Pin); - HAL_Delay(10); \ No newline at end of file + HAL_Delay(10); + +// uint8_t write_stop_bit() +// { +// HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, GPIO_PIN_RESET); +// HAL_GPIO_WritePin(KBRDY_GPIO_Port, KBRDY_Pin, GPIO_PIN_RESET); +// if(wait_for_KBACK(GPIO_PIN_RESET) != KB_WRITE_SUCCESS) +// return KB_WRITE_TIMEOUT; +// HAL_GPIO_WritePin(KBDATA_GPIO_Port, KBDATA_Pin, GPIO_PIN_SET); +// HAL_GPIO_WritePin(KBRDY_GPIO_Port, KBRDY_Pin, GPIO_PIN_SET); +// HAL_Delay(1); +// if(wait_for_KBACK(GPIO_PIN_SET) != KB_WRITE_SUCCESS) +// return KB_WRITE_TIMEOUT; +// return KB_WRITE_SUCCESS; +// } +uint8_t send_key(uint8_t data, uint8_t key_status) +{ + for (int i = 0; i < 7; ++i) + { + if(write_bit(get_bit(data, i)) != KB_WRITE_SUCCESS) + return KB_WRITE_TIMEOUT; + } + if(write_bit(key_status) != KB_WRITE_SUCCESS) + return KB_WRITE_TIMEOUT + if(write_bit(0) != KB_WRITE_SUCCESS) // stop bit + return KB_WRITE_TIMEOUT + return KB_WRITE_SUCCESS; +} \ No newline at end of file