before ps2 output buffer

This commit is contained in:
dekunukem
2021-12-11 16:44:42 +00:00
parent a9370efd4a
commit 3304820983
20 changed files with 991 additions and 852 deletions

View File

@@ -16,7 +16,7 @@ void ps2mouse_init(GPIO_TypeDef* clk_port, uint16_t clk_pin, GPIO_TypeDef* data_
uint8_t ps2mouse_get_bus_status(void);
uint8_t ps2mouse_read(uint8_t* result, uint8_t timeout_ms);
uint8_t ps2mouse_write(uint8_t data, uint8_t delay_start, uint8_t timeout_ms);
void ps2mouse_host_req_reply(uint8_t cmd);
void ps2mouse_host_req_reply(uint8_t cmd, mouse_event* mevent);
uint8_t ps2mouse_send_update(mouse_event* this_event);
void ps2mouse_release_lines(void);

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -27,10 +27,9 @@ Project File Date: 12/07/2021
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'ibmpc'
compiling ps2kb.c...
compiling ps2mouse.c...
compiling main.c...
linking...
Program Size: Code=11664 RO-data=372 RW-data=96 ZI-data=2112
Program Size: Code=11968 RO-data=372 RW-data=100 ZI-data=2124
FromELF: creating hex file...
"ibmpc\ibmpc.axf" - 0 Error(s), 0 Warning(s).
@@ -55,7 +54,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.3.0
Build Time Elapsed: 00:00:02
Build Time Elapsed: 00:00:01
</pre>
</body>
</html>

View File

@@ -1,5 +1,5 @@
:020000040800F2
:10000000A0080020D5000008ED17000869150008B9
:10000000B0080020D5000008ED17000869150008A9
:1000100000000000000000000000000000000000E0
:100020000000000000000000000000002B1B000882
:100030000000000000000000351800082D1B00081B
@@ -12,7 +12,7 @@
:1000A000E700000839180008E7000008E70000082A
:1000B000E70000082D210008E7000008E70000081D
:1000C0000348854600F04EF800480047A12200088A
:1000D000A00800200448804704480047FEE7FEE7E8
:1000D000B00800200448804704480047FEE7FEE7D8
:1000E000FEE7FEE7FEE7FEE7A51B0008C1000008EB
:1000F00030B50B46014600202022012409E00D46C0
:10010000D5409D4205D31D469540491B2546954047
@@ -23,7 +23,7 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:10018000E42E0008042F000870B500240146203139
:10018000143000083430000870B5002401462031D6
:100190004A78022A03D004218163012416E0026810
:1001A00013680E25AB431360026813685B085B009D
:1001B00013600122056C1346AB40C56B6B604A703F
@@ -53,7 +53,7 @@
:100330000004004800080048000C00480010004875
:10034000000401400069084000D001207047426964
:100350004A4042617047002A01D081617047816242
:100360007047000001480068704700004C00002002
:1003600070470000014800687047000050000020FE
:1003700070B5024640325378202B1CD11378012BE4
:1003800019D00123137024245470046825689D43F8
:100390002560046825681E03B54325600468256848
@@ -80,7 +80,7 @@
:1004E00085FE0748C269012189050A43C261C069C6
:1004F0000840059007B000BD0058004000040048C7
:100500000010024002480168491C01607047000069
:100510004C00002010B5064801681022114301600C
:100510005000002010B50648016810221143016008
:10052000002000F007F800F017F8002010BD0000D0
:100530000020024010B5044600F086F97D21C90074
:10054000FFF7D6FD00F0A0FD00222146501E00F06E
@@ -131,10 +131,10 @@
:10081000E9680843606000F02DF86168084A09063D
:10082000090F515CC840074908600020FFF782FEAD
:100830000020F8BD00200240001002408813000094
:10084000C92E0008500000200148006870470000D1
:10085000500000200448054900684968044A4905D9
:10086000490F515CC8407047500000200010024002
:10087000D92E000830B516A30FCB89B06C460FC433
:10084000F92F00085400002001480068704700009C
:10085000540000200448054900684968044A4905D5
:10086000490F515CC84070475400002000100240FE
:100870000930000830B516A30FCB89B06C460FC401
:1008800017A30FCB0FC41A494A680C201446044022
:100890001848042C05D0184B082C04D00C2C00D17F
:1008A000184609B030BD9402240F6D462C5DC96A0C
@@ -248,20 +248,20 @@
:100F60004A68E0231A434A6000680168490603D4CE
:100F70000168402211430160002020772846F0BD1F
:100F800049180008DD1800087F180008111900082A
:100F9000FEB50122D50309202946C006FFF7DBF97B
:100F9000F8B50122D50309202946C006FFF7DBF981
:100FA0002D492022881AFFF7B9F82B4A2023114631
:100FB00040392A48FFF782FF274C203C2078DE2862
:100FC0000DD0274F002608213846FFF7C0F96420CE
:100FD000FFF7FEF8761C142EF5DBFFF7EDFAA0788C
:100FE000012805D11C48227AA179203001F03AFA73
:100FF000A078022820D16179207901F0D4F86946DF
:101000000880E179A07901F0CEF840426946488035
:10101000617A207A01F0C7F8404269468880607B97
:101020008871A07B0872E07BC871207C4872607C6C
:1010300088720C4801F06EFCA078042804D1C1022B
:1010400000220948FFF787F9092000222946C00637
:10105000FFF781F9FEBD000070020020AC00002007
:10106000000400484400002000080048042204490D
:100FE000012805D11C48227AA179203001F0E6F9C8
:100FF000A078022821D16179207901F0D4F8164A2D
:101000002C321080E179A07901F0CDF84042508077
:10101000617A207A01F0C7F840429080607B90713D
:10102000A07B1072E07BD071207C5072607C0A49FA
:1010300090722C310B4801F067FCA078042804D191
:10104000C10200220848FFF786F90920002229463C
:10105000C006FFF780F9F8BD74020020B000002040
:101060000004004848000020000800480422044909
:101070000428086902D09043086170471043FBE7D9
:1010800000E000E070470000094910B5401E8842AA
:1010900001D9012010BD074C60610321081F00F039
@@ -364,30 +364,30 @@
:1016A000C161C2600162FEF7ADFE002800D0FEE716
:1016B00000210848FEF75CFE002800D0FEE700216C
:1016C0000448FEF77AFE002800D0FEE710BD0000B7
:1016D00000580040600000205D3E302010B50D48ED
:1016D00000580040640000205D3E302010B50D48E9
:1016E0000B490160002141608160016141618161BC
:1016F0000722016212024162C26081620722016315
:10170000C2624163FFF752FB002800D0FEE710BD24
:1017100000300140AC00002010B50121124886B015
:1017100000300140B000002010B50121124886B011
:101720008907016000242F21846041600461611EEB
:101730008461C160FFF7E8FC002800D0FEE70120CB
:101740000003009069460848FFF716FD002800D006
:10175000FEE7049404A904480594FFF7B1FC0028AF
:1017600000D0FEE706B010BD1001002010B50C48F7
:1017600000D0FEE706B010BD1401002010B50C48F3
:101770000A490160E1214902416000218160C160A4
:1017800001618161C1610C22016242614162FFF726
:1017900007FE002800D0FEE710BD00000038014021
:1017A0005001002010B510480E4901604B2109017D
:1017A0005401002010B510480E4901604B21090179
:1017B00041600121090781600021C16001618161EF
:1017C0000C22C161426101623021416201210903A1
:1017D00081634900C163FFF7E3FD002800D0FEE705
:1017E00010BD000000480040C0010020704700000C
:1017E00010BD000000480040C40100207047000008
:1017F0008307FF22DB0E9A408907090E99400028D3
:101800000BDA0007000F0838830808489B001818F7
:10181000C36993430B43C3617047830804489B002B
:101820001B181868904308431860704700ED00E0EB
:1018300000E400E07047000010B50248FFF74CFAE2
:1018400010BD0000AC00002010B50168C968026C32
:1018400010BD0000B000002010B50168C968026C2E
:101850001180016C891C016401464031CA88521E06
:10186000CA80C988002909D101684A6840239A437F
:101870004A60C18F002901D100F06EF810BD10B58B
@@ -530,233 +530,252 @@
:102100008160202060346072A07200202072032061
:1021100005B0F0BD2068C1693046884304D0002076
:10212000B842D9D00020F3E70120F9E710B5024802
:10213000FFF79CF810BD0000C001002010B5024A56
:10214000024900F021F810BDD521000854000020FC
:10213000FFF79CF810BD0000C401002010B5024A52
:10214000024900F021F810BDD521000858000020F8
:1021500030B47446641E2578641CAB4200D21D4620
:10216000635D5B00E31830BC184702E008C8121F2B
:1021700008C1002AFAD170477047002001E001C170
:10218000121F002AFBD17047F8B516460F460446C9
:10219000002503E03946B047641C6D1C20780028F8
:1021A000F8D12846F8BD0902014308B2704700B5CE
:1021B000014600F04FF9411800F04CF98842FBD37A
:1021B000014600F0FBF8411800F0F8F88842FBD324
:1021C00000BD000010B502490860FEF7C9FF10BD50
:1021D0000000002013B56423012269460248FFF77E
:1021E0005EF900981CBD00005001002038B5ED38A4
:1021E0005EF900981CBD00005401002038B5ED38A0
:1021F0000D462A4C0300FFF7ABFF13413B24252477
:102200002D251D164C242424242424244C0B240086
:1022100014220121FA2000F0E9FA00F0DFFAFA2294
:102220000021AA2027E014220121FA2000F0DEFA82
:10223000002005E014220121FA2000F0D7FA012045
:10224000607038BD14220121FA2000F0CFFA1E215F
:1022500068461AE014220121FA2000F0C7FA14227D
:102260000021AB2000F0C2FA14220021832002E0FA
:1022700014220121EE2000F0B9FA38BD1422012108
:10228000FA2000F0B3FA1E21284600F019FA0028BF
:1022100014220121FA2000F0E3FA00F08BFAFA22EE
:102220000021AA2027E014220121FA2000F0D8FA88
:10223000002005E014220121FA2000F0D1FA01204B
:10224000607038BD14220121FA2000F0C9FA1E2165
:1022500068461AE014220121FA2000F0C1FA142283
:102260000021AB2000F0BCFA14220021832002E000
:1022700014220121EE2000F0B3FA38BD142201210E
:10228000FA2000F0ADFA1E21284600F0C5F900281A
:10229000F3D114220121FA20EDE700000400002010
:1022A000FEF738F9FFF748FCFFF760F9FFF7ECF9A4
:1022B000FFF714FAFFF730FAFFF758FAFFF772FA50
:1022C0004048FFF77FFF404CFF230133224659006F
:1022D000104600F045F9224610232021104600F058
:1022E0001BFC1021394800F0ECF81021384800F0B0
:1022F0003EFB364820216038FDF729FF334A31483C
:10230000203A1146202340396438FEF7D7FD31A02A
:10231000FFF714FF2E4C083C00F04EFB60710228C2
:1023200002D0012803D00AE000F082FC07E0284830
:102330000A21801F00F0FEFBA07800F06DFB24480E
:1023400000F001FB002801D000F09CFC00F0E6F852
:10235000A071022802D0012803D026E000F02EFA56
:1023600023E0FF2060701A480A21083800F0A8F91D
:1023700017492078C91FFFF739FF6578FF2D14D062
:10238000124820216038FDF7E2FE1048CD21603868
:102390000170014620314978417001218170C5707A
:1023A0000A4649030F48FDF7D6FF094A0748121F9E
:1023B000511E00F06FF80028AED12179E07800F0CE
:1023C000DDF8A9E710010020000400489002002079
:1023D0004400002068656C6C6F20776F726C640A33
:1023E0000000000000080048F0B50B30C108C9002B
:1023F000144F0026144A0FE003688B420BD38B4224
:1024000005D95C1A4318456830C3083B00E04368AF
:10241000136002C004E0021D10680028ECD13046B1
:10242000002803D13868002801D00020F0BD064AFA
:1024300006481060064A121AD208D20044C0012091
:102440003860D7E75C00002058000020A40200207C
:10245000A0040020024800680068406A704700003D
:102460000000002070B515460E46044600F039F80D
:10247000002801D0012070BD217860684654217881
:10248000A06845542078A178401CFDF731FE2170EA
:10249000002070BD10B5044640782378984201D1E1
:1024A000012010BD6368185C08706178A068405C0A
:1024B00010706078A178401CFDF71AFE6170002052
:1024C00010BD70B50D46044681702846FFF78CFF9D
:1024D00060602846FFF788FFA060204600F00FF8F4
:1024E00070BD10B5044681780078401CFDF700FEF1
:1024F0006078814201D1012010BD002010BD10B5CF
:102500000446002020706070A1786068FDF71FFE0F
:10251000A178A068FDF71BFE10BD000070B50F4D3F
:102520006988A868FDF70EFF0446A988E868FDF7EA
:1025300009FF012802D0002809D00AE0012C02D0AE
:10254000002C02D005E0032070BD022070BD012CDC
:1025500001D0002070BD012070BD000004000020EB
:1025600010B5054CA0606180E260A38000F026F900
:1025700000F034F910BD00000400002010B54E4AF0
:102580005278002A0AD059280FD24C4A145CFF2CEA
:102590007ED0002904D01422002104E0012010BDC7
:1025A000142200217FE0204645E0632812D07728DE
:1025B00045D00246603A1F2A7BD8404A593210184B
:1025C00060380478FF2C65D0002965D014220021E2
:1025D000E02069E0002912D014220021E02000F060
:1025E00005F914220121122000F000F91422012122
:1025F000E02000F0FBF8142201217C201BE01422D3
:102600000021E02000F0F2F814220121F02000F077
:10261000EDF8142201217C2000F0E8F814220121B9
:10262000E02000F0E3F814220121F02000F0DEF8B1
:1026300014220121122000F0D9F8002010BD002939
:10264000BBD014220021E12000F0D0F81422012197
:10265000104600F0CBF814220121772000F0C6F8D4
:1026600014220121E12000F0C1F814220121F02000
:1026700000F0BCF814220121104600F0B7F8142233
:102680000121F02000F0B2F8142201217720D2E7D6
:1026900000E00EE0022010BD14220021E02000F036
:1026A000A5F814220121F02000F0A0F81422012145
:1026B00079E7032010BD000004000020502E000820
:1026C000F3B581B00F4600250126FDF74BFE3A4CCD
:1026D000206107E0FDF746FE2169401AB84201D3A8
:1026E0000120FEBDFFF71AFF0128F3D11220FFF7EA
:1026F0005EFD00226188A068FDF72DFE2420FFF713
:1027000056FD01226188A068FDF725FE1220FFF723
:102710004EFDA188E068FDF715FE012800D1354384
:102720007004060C1220FFF742FD00226188A068A9
:10273000FDF711FE2420FFF73AFD01226188A06811
:10274000FDF709FE1220FFF732FDFF2EE1D912201E
:10275000FFF72DFD00226188A068FDF7FCFD242015
:10276000FFF725FD01226188A068FDF7F4FD122026
:10277000FFF71DFD1220FFF71AFD0022A188E06877
:10278000FDF7E9FD00226188A068FDF7E4FD242043
:10279000FFF70DFD01226188A068FDF7DCFD122026
:1027A000FFF705FD0122A188E068FDF7D4FD01983F
:1027B00005700020FEBD00000400002010B5064C8E
:1027C00001226188A068FDF7C6FD0122A188E068AA
:1027D000FDF7C1FD10BD00000400002002480221E9
:1027E000017001214170704704000020F7B51646C2
:1027F00005460127FDF7B6FD454C206107E0FDF7D2
:10280000B1FD2169401AB04201D30120FEBDFFF79E
:1028100085FE0328F3D10198002803D0AF20800063
:10282000FFF7C5FC0022A188E068FDF794FD1220A7
:10283000FFF7BDFC00226188A068FDF78CFD242015
:10284000FFF7B5FC01226188A068FDF784FD122026
:10285000FFF7ADFC0026E80701D0012200E00022CE
:10286000A188E068FDF777FD1220FFF7A0FC0022A9
:102870006188A068FDF76FFD2420FFF798FC012216
:102880006188A068FDF767FD1220FFF790FCE8075C
:10289000C00F761C47406D08F6B2082EDBD3002F20
:1028A00001D0012200E00022A188E068FDF753FD7D
:1028B0001220FFF77CFC00226188A068FDF74BFD29
:1028C0002420FFF774FC01226188A068FDF743FD16
:1028D0001220FFF76CFC0122A188E068FDF73BFDA8
:1028E0001220FFF764FC00226188A068FDF733FD29
:1028F0002420FFF75CFC01226188A068FDF72BFD16
:102900001220FFF754FCC820FFF751FC0020FEBD49
:102910000400002070B50D46044600F034F800288D
:1029200001D0012070BD20780C2261685043081846
:102930002946FDF7F3FB2078A178401CFDF7D8FB72
:102940002170002070BD70B50446407822780021C7
:10295000904201D1084670BD0C2141436268401C81
:102960005518A178FDF7C4FB6170284670BD10B5FD
:10297000044681700C204843FFF736FD6060204616
:1029800000F00FF810BD10B5044681780078401CA7
:10299000FDF7AEFB6078814201D1012010BD00201F
:1029A00010BD10B500210170417081780C22514397
:1029B0004068FDF7CCFB10BD10B5164C618920694D
:1029C000FDF7C0FC012805D12189E068FDF7BAFCBC
:1029D000012806D061892069FDF7B4FC012802D0E6
:1029E00007E0032010BD2189E068FDF7ABFC00285B
:1029F00006D061892069FDF7A5FC002802D007E018
:102A0000022010BD2189E068FDF79CFC0128F8D068
:102A1000002010BD18000020F8B53E4FE6383C46B7
:102A2000002501261C3C0300FFF792FB1A656C553C
:102A3000616161616161616161392523211E6161AB
:102A40006161616161610E6100F002F9142201218E
:102A5000FA2000F069F9FA220021AA2000F064F9B6
:102A600014220021084633E000F0FEF83FE0257014
:102A70003DE026703BE014220121FA2000F054F9D9
:102A800024481E211B3800F055F8002822D1207957
:102A90006178395407282AD2401C207127E014227B
:102AA0000121FA2000F040F96571207902280CD943
:102AB00038182038C17F502907D1817F642904D17B
:102AC000407FC82801D10320607114220021607961
:102AD00000F02AF9F8BD14220121FA2000F024F9AF
:102AE0000C481E211A3800F025F80028F2D11422D3
:102AF0000121FA20ECE714220121FA2000F014F958
:102B0000E670F8BD14220121FA2000F00DF9022030
:102B1000E070F8BD3400002010B5054CE060218164
:102B20002261638100F094F800F082F810BD00008B
:102B300018000020F3B581B00F4600250126FDF7EF
:102B400011FC3A4C606107E0FDF70CFC6169401A2A
:102B5000B84201D30120FEBDFFF72EFF0128F3D1BB
:102B60001220FFF724FB00222189E068FDF7F3FB28
:102B70002420FFF71CFB01222189E068FDF7EBFB15
:102B80001220FFF714FB61892069FDF7DBFB0128A8
:102B900000D135437004060C1220FFF708FB002219
:102BA0002189E068FDF7D7FB2420FFF700FB012215
:102BB0002189E068FDF7CFFB1220FFF7F8FAFF2E1E
:102BC000E1D91220FFF7F3FA00222189E068FDF72E
:102BD000C2FB2420FFF7EBFA01222189E068FDF710
:102BE000BAFB1220FFF7E3FA1220FFF7E0FA002207
:102BF00061892069FDF7AFFB00222189E068FDF7BC
:102C0000AAFB2420FFF7D3FA01222189E068FDF70F
:102C1000A2FB1220FFF7CBFA012261892069FDF7A0
:102C20009AFB019805700020FEBD000018000020EE
:102C300010B5064C01222189E068FDF78CFB0122CA
:102C400061892069FDF787FB10BD00001800002096
:102C500000B500F009F8034900200871C861086256
:102C6000487100BD18000020054864214170022110
:102C700081700121C17000210170817170470000D5
:102C80001800002070B50546FFF796FE032801D016
:102C9000012070BD234E3078002841D00020B06163
:102CA0003446082018342070A879002801D0092063
:102CB0002070287A002803D0207802210843207051
:102CC000E879002803D020780421084320700020F0
:102CD000285E002803DA20781021084320700220A3
:102CE000285E002803DA2078202108432070287805
:102CF0006070A878A0702879E0700025605D1422CB
:102D0000002100F011F86D1C032DF7DB707900280D
:102D100004D0E0781422002100F006F8002070BDF5
:102D2000022070BD18000020F7B5164605460127A1
:102D3000FDF718FB454C606107E0FDF713FB616987
:102D4000401AB04201D30120FEBDFFF735FE032833
:102D5000F3D10198002803D0AF208000FFF727FAB5
:102D6000002261892069FDF7F6FA1220FFF71FFAA9
:102D700000222189E068FDF7EEFA2420FFF717FA18
:102D800001222189E068FDF7E6FA1220FFF70FFA29
:102D90000026E80701D0012200E0002261892069B5
:102DA000FDF7D9FA1220FFF702FA00222189E06824
:102DB000FDF7D1FA2420FFF7FAF901222189E06812
:102DC000FDF7C9FA1220FFF7F2F9E807C00F761CE9
:102DD00047406D08F6B2082EDBD3002F01D0012248
:102DE00000E0002261892069FDF7B5FA1220FFF7A3
:102DF000DEF900222189E068FDF7ADFA2420FFF713
:102E0000D6F901222189E068FDF7A5FA1220FFF723
:102E1000CEF9012261892069FDF79DFA1220FFF7A2
:102E2000C6F900222189E068FDF795FA2420FFF712
:102E3000BEF901222189E068FDF78DFA1220FFF723
:102E4000B6F9C820FFF7B3F90020FEBD1800002036
:102E5000FF76161E26252E363D3E46454E55660DFE
:102E6000151D242D2C353C43444D545B5A141C1B1A
:102E7000232B34333B424B4C520E125D1A22212A33
:102E800032313A41494A597C1129580506040C034C
:102E90000B830A0109777E6C757D7B6B737479698E
:102EA000727A7071FFFF6178075A144AFF11FF6C44
:102EB000757D6B7469727A7071FFFFFFFFFFFFFF12
:102EC000FFFFFFFFFFFF1F272F0000000000000093
:102ED00000010203040607080900000000010203C4
:102EE00004000000042F0008000000206000000023
:102EF0006A210008642F00086000002040080000DC
:102F00007A2100080000000002010000000000001B
:102F100000000000000000000000000000000000B1
:102F200000000000000000000000000000000000A1
:102F30000000000000000000000000000000000091
:102F40000000000000000000000000000000000081
:102F50000000000000127A000000000000000000E5
:042F6000000000006D
:1022C0001748FFF77FFF174CFF23013322465900C1
:1022D000104600F0F1F8224610232021104600F0AD
:1022E0006DFC1021104800F098F810210F4800F004
:1022F00038FB0D4820216038FDF729FF0A4A0848BD
:10230000203A1146202340396438FEF7D7FD08A053
:10231000FFF714FF00F016FA00F072FDFAE7000074
:10232000140100200004004894020020480000200E
:1023300068656C6C6F20776F726C640A0000000037
:10234000F0B50B30C108C900144F0026144A0FE045
:1023500003688B420BD38B4205D95C1A431845683E
:1023600030C3083B00E04368136002C004E0021D74
:1023700010680028ECD13046002803D138680028C6
:1023800001D00020F0BD064A06481060064A121A25
:10239000D208D20044C001203860D7E76000002096
:1023A0005C000020B4020020B00400200248006855
:1023B0000068406A704700000000002070B51546B4
:1023C0000E46044600F039F8002801D0012070BD07
:1023D0002178606846542178A06845542078A17817
:1023E000401CFDF785FE2170002070BD10B504462D
:1023F00040782378984201D1012010BD6368185CB1
:1024000008706178A068405C10706078A178401C0A
:10241000FDF76EFE6170002010BD70B50D460446DC
:1024200081702846FFF78CFF60602846FFF788FF21
:10243000A060204600F00FF870BD10B5044681780A
:102440000078401CFDF754FE6078814201D10120E4
:1024500010BD002010BD10B5044600202070607033
:10246000A1786068FDF773FEA178A068FDF76FFEA4
:1024700010BD000070B50F4D6988A868FDF762FFB8
:102480000446A988E868FDF75DFF012802D000280E
:1024900009D00AE0012C02D0002C02D005E0032074
:1024A00070BD022070BD012C01D0002070BD012044
:1024B00070BD00000400002010B5054CA0606180D4
:1024C000E260A38000F026F900F034F910BD0000AE
:1024D0000400002010B54E4A5278002A0AD059282C
:1024E0000FD24C4A145CFF2C7ED0002904D0142259
:1024F000002104E0012010BD142200217FE02046CD
:1025000045E0632812D0772845D00246603A1F2A5A
:102510007BD8404A5932101860380478FF2C65D0B7
:10252000002965D014220021E02069E0002912D0A2
:1025300014220021E02000F053F91422012112207E
:1025400000F04EF914220121E02000F049F9142294
:1025500001217C201BE014220021E02000F040F942
:1025600014220121F02000F03BF9142201217C20EB
:1025700000F036F914220121E02000F031F9142294
:102580000121F02000F02CF914220121122000F08A
:1025900027F9002010BD0029BBD014220021E12022
:1025A00000F01EF914220121104600F019F914223E
:1025B0000121772000F014F914220121E12000F01C
:1025C0000FF914220121F02000F00AF91422012150
:1025D000104600F005F914220121F02000F000F966
:1025E000142201217720D2E700E00EE0022010BD86
:1025F00014220021E02000F0F3F814220121F02041
:1026000000F0EEF81422012179E7032010BD00004C
:1026100004000020802F0008F3B581B00F4600258C
:102620000126FDF79FFE3A4C206107E0FDF79AFE78
:102630002169401AB84201D30120FEBDFFF71AFFFD
:102640000128F3D11220FFF7B2FD00226188A068B3
:10265000FDF781FE2420FFF7AAFD01226188A06812
:10266000FDF779FE1220FFF7A2FDA188E068FDF7D3
:1026700069FE012800D135437004060C1220FFF7D3
:1026800096FD00226188A068FDF765FE2420FFF713
:102690008EFD01226188A068FDF75DFE1220FFF724
:1026A00086FDFF2EE1D91220FFF781FD002261880F
:1026B000A068FDF750FE2420FFF779FD0122618814
:1026C000A068FDF748FE1220FFF771FD1220FFF70A
:1026D0006EFD0022A188E068FDF73DFE00226188C2
:1026E000A068FDF738FE2420FFF761FD0122618814
:1026F000A068FDF730FE1220FFF759FD0122A188E6
:10270000E068FDF728FE019805700020FEBD00007E
:102710000400002010B5064C01226188A068FDF776
:102720001AFE0122A188E068FDF715FE10BD000029
:10273000040000200248022101700121417070470D
:102740000400002038B5FFF795FE214C0228607187
:1027500002D0012803D02CE0FFF7DCFF38BDFF20BA
:102760006946087003211A48FFF756FF002805D074
:10277000012208211748FDF7EEFD38BD6946207893
:10278000FFF734FD68460578FF2D12D0202112484E
:10279000FDF7DDFC1048CD2101700146203149785C
:1027A000417001218170C5700A4649030B48FDF74D
:1027B000D2FD074A0848D21C511E6030FFF716FEB2
:1027C0000028DAD1E178A078FFF784FE38BD000058
:1027D00040000020000400483402002000080048A7
:1027E000F7B5164605460127FDF7BCFD454C2061AF
:1027F00007E0FDF7B7FD2169401AB04201D301207F
:10280000FEBDFFF737FE0328F3D10198002803D05F
:10281000AF208000FFF7CBFC0022A188E068FDF725
:102820009AFD1220FFF7C3FC00226188A068FDF723
:1028300092FD2420FFF7BBFC01226188A068FDF710
:102840008AFD1220FFF7B3FC0026E80701D0012221
:1028500000E00022A188E068FDF77DFD1220FFF76F
:10286000A6FC00226188A068FDF775FD2420FFF713
:102870009EFC01226188A068FDF76DFD1220FFF724
:1028800096FCE807C00F761C47406D08F6B2082E8C
:10289000DBD3002F01D0012200E00022A188E068F4
:1028A000FDF759FD1220FFF782FC00226188A06825
:1028B000FDF751FD2420FFF77AFC01226188A06812
:1028C000FDF749FD1220FFF772FC0122A188E068A4
:1028D000FDF741FD1220FFF76AFC00226188A06825
:1028E000FDF739FD2420FFF762FC01226188A06812
:1028F000FDF731FD1220FFF75AFCC820FFF757FC07
:102900000020FEBD0400002070B50D46044600F016
:1029100034F8002801D0012070BD20780C226168B5
:10292000504308182946FDF7F9FB2078A178401C90
:10293000FDF7DEFB2170002070BD70B504464078C5
:1029400022780021904201D1084670BD0C214143FC
:102950006268401C5518A178FDF7CAFB61702846D3
:1029600070BD10B5044681700C204843FFF7E8FCA9
:102970006060204600F00FF810BD10B50446817865
:102980000078401CFDF7B4FB6078814201D1012042
:1029900010BD002010BD10B500210170417081787C
:1029A0000C2251434068FDF7D2FB10BD10B5164C08
:1029B000E1896069FDF7C6FC012805D1A18920697C
:1029C000FDF7C0FC012806D0E1896069FDF7BAFC7B
:1029D000012802D007E0032010BDA1892069FDF77E
:1029E000B1FC002806D0E1896069FDF7ABFC002846
:1029F00002D007E0022010BDA1892069FDF7A2FCEA
:102A00000128F8D0002010BD18000020F8B50025DE
:102A10000E46FF2814D0684CEC2821D0A179022959
:102A200020D0E63801270300FFF792FB11B6BDA3C3
:102A3000726FB23E3E693E633E422725221F3E0032
:102A400000F058F914220121FA2000F0FDF9FA22D1
:102A50000021AA2000F0F8F914220021084645E0E0
:102A6000E0794EE01422002140E000F04FF91BE035
:102A70000020207046E0277044E014220121FA2053
:102A800000F0E2F900F074FA4B481E21401C00F0FF
:102A9000A3F800282CD148492079203162780A54C3
:102AA000072801D2401C207114220121FA201DE0C8
:102AB00000F05EFA14220121FA2000F0C5F900208E
:102AC0006071207902280ED93B492031081820383E
:102AD000C17F502907D1817F642904D1407FC82854
:102AE00001D10320607114220021607900F0ACF95B
:102AF000F8BD00F03DFAA079E071A771D4E7E1716B
:102B00000220A07100F034FACEE7E1710020F8E76E
:102B100014220121FA2000F097F9A079012800D1B0
:102B200040252078002801D020200543E0780228A5
:102B300001D110200543B079002801D004200543BD
:102B4000F079002801D002200543307A002800D017
:102B50003D4314220021284600F076F9142200217A
:102B6000A07800F071F914220021607800F06CF96F
:102B70000BE014220121FA2000F066F90E481E2114
:102B8000801C00F029F8002802D000F0F1F9F8BD0F
:102B900014220121FA20E9E714220121FA2000F091
:102BA00053F9E770F8BD14220121FA2000F04CF926
:102BB0000220E070F8BD00001800002010B5054CA0
:102BC0002061A1816261E38100F094F800F082F855
:102BD00010BD000018000020F3B581B00F4600259D
:102BE0000126FDF7BFFB3A4CA06107E0FDF7BAFBF9
:102BF000A169401AB84201D30120FEBDFFF7D6FEFD
:102C00000128F3D11220FFF7D2FA0022A18920690E
:102C1000FDF7A1FB2420FFF7CAFA0122A189206950
:102C2000FDF799FB1220FFF7C2FAE1896069FDF711
:102C300089FB012800D135437004060C1220FFF7F0
:102C4000B6FA0022A1892069FDF785FB2420FFF751
:102C5000AEFA0122A1892069FDF77DFB1220FFF762
:102C6000A6FAFF2EE1D91220FFF7A1FA0022A189CE
:102C70002069FDF770FB2420FFF799FA0122A18952
:102C80002069FDF768FB1220FFF791FA1220FFF789
:102C90008EFA0022E1896069FDF75DFB0022A189BF
:102CA0002069FDF758FB2420FFF781FA0122A18952
:102CB0002069FDF750FB1220FFF779FA0122E18924
:102CC0006069FDF748FB019805700020FEBD00001B
:102CD0001800002010B5064C0122A1892069FDF7DB
:102CE0003AFB0122E1896069FDF735FB10BD000068
:102CF0001800002000B500F009F803490020087111
:102D000008624862487100BD1800002000B50748FD
:102D100064214170022181700121C1700021017084
:102D20008171C17100F024F900BD0000180000207D
:102D300070B5324E0546B07901280AD0022815D068
:102D40003078002814D0FFF731FE032812D003207A
:102D500070BD2878317A40183072A878717A40189E
:102D600070722879B17A4018B07244E0012070BDC9
:102D7000022070BD21480021204CC16108201C3474
:102D80002070A879002801D009202070287A002816
:102D900003D02078022108432070E879002803D06E
:102DA00020780421084320700020285E002803DAE0
:102DB00020781021084320700220285E002803DAC2
:102DC000207820210843207028786070A878A070AF
:102DD0002879E0700025605D1422002100F034F8AD
:102DE0006D1C032DF7DB7079002804D0E0781422E5
:102DF000002100F029F8002070BD0000180000201C
:102E000010B5FFF7D3FD0E4C0228207102D0012827
:102E100003D00BE0FFF75EFF10BD09480A21401CFC
:102E2000FFF7DAFE07496078FFF7F0FD0448083045
:102E3000FFF783FD0028EFD0FFF77AFF10BD0000F9
:102E400040000020A0020020F7B5164605460127E5
:102E5000FDF788FA454CA06107E0FDF783FAA16908
:102E6000401AB04201D30120FEBDFFF79FFD0328A9
:102E7000F3D10198002803D0AF208000FFF797F925
:102E80000022E1896069FDF766FA1220FFF78FF9E9
:102E90000022A1892069FDF75EFA2420FFF787F957
:102EA0000122A1892069FDF756FA1220FFF77FF968
:102EB0000026E80701D0012200E00022E1896069D4
:102EC000FDF749FA1220FFF772F90022A189206963
:102ED000FDF741FA2420FFF76AF90122A189206950
:102EE000FDF739FA1220FFF762F9E807C00F761CE8
:102EF00047406D08F6B2082EDBD3002F01D0012227
:102F000000E00022E1896069FDF725FA1220FFF751
:102F10004EF90022A1892069FDF71DFA2420FFF750
:102F200046F90122A1892069FDF715FA1220FFF761
:102F30003EF90122E1896069FDF70DFA1220FFF7E1
:102F400036F90022A1892069FDF705FA2420FFF750
:102F50002EF90122A1892069FDF7FDF91220FFF762
:102F600026F9C820FFF723F90020FEBD1800002035
:102F700002480021017241728172704718000020DE
:102F8000FF76161E26252E363D3E46454E55660DCD
:102F9000151D242D2C353C43444D545B5A141C1BE9
:102FA000232B34333B424B4C520E125D1A22212A02
:102FB00032313A41494A597C1129580506040C031B
:102FC0000B830A0109777E6C757D7B6B737479695D
:102FD000727A7071FFFF6178075A144AFF11FF6C13
:102FE000757D6B7469727A7071FFFFFFFFFFFFFFE1
:102FF000FFFFFFFFFFFF1F272F0000000000000062
:103000000001020304060708090000000001020392
:1030100004000000343000080000002064000000BC
:103020006A21000898300008640000204C08000065
:103030007A210008000000000201000000000000EA
:103040000000000000000000000000000000000080
:103050000000000000000000000000000000000070
:103060000000000000000000000000000000000060
:103070000000000000000000000000000000000050
:10308000000000000000000000127A0000000000B4
:08309000000000000000000038
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [ibmpc\ibmpc.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image ibmpc\ibmpc.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Thu Dec 09 10:08:07 2021
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Sat Dec 11 16:32:34 2021
<BR><P>
<H3>Maximum Stack Usage = 196 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -74,7 +74,7 @@ Global Symbols
<P><STRONG><a name="[28]"></a>__main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(.text)
</UL>
<P><STRONG><a name="[a7]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[aa]"></a>_main_stk</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))
<P><STRONG><a name="[30]"></a>_main_scatterload</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))
<BR><BR>[Calls]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
@@ -84,15 +84,15 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[31]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__scatterload
</UL>
<P><STRONG><a name="[a8]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[ab]"></a>_main_clock</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008))
<P><STRONG><a name="[a9]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[ac]"></a>_main_cpp_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A))
<P><STRONG><a name="[aa]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[ad]"></a>_main_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B))
<P><STRONG><a name="[ab]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[ae]"></a>__rt_final_cpp</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D))
<P><STRONG><a name="[ac]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[af]"></a>__rt_final_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))
<P><STRONG><a name="[0]"></a>Reset_Handler</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
@@ -191,24 +191,24 @@ Global Symbols
<P><STRONG><a name="[6]"></a>WWDG_IRQHandler</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f072xb.o(.text))
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f072xb.o(RESET)
</UL>
<P><STRONG><a name="[ad]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[b0]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
<P><STRONG><a name="[3f]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_is_full
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_get
<LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_is_full
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_get
<LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_add
<LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_is_full
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_get
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_is_full
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_get
<LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_add
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[69]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
</UL>
<P><STRONG><a name="[a2]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
<P><STRONG><a name="[9e]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_add
</UL>
@@ -216,29 +216,30 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[ae]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[b1]"></a>__aeabi_memcpy8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memcpya.o(.text), UNUSED)
<P><STRONG><a name="[33]"></a>__aeabi_memset</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[34]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_memset$wrapper
<LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<P><STRONG><a name="[af]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[b2]"></a>__aeabi_memset4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[b0]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[b3]"></a>__aeabi_memset8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[32]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_reset
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_reset
<BR>[Called By]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_reset
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_reset
</UL>
<P><STRONG><a name="[91]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR><BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[b1]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[b4]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text), UNUSED)
<P><STRONG><a name="[34]"></a>_memset$wrapper</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, memseta.o(.text), UNUSED)
<BR><BR>[Calls]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
@@ -250,7 +251,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[30]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_main_scatterload
</UL>
<P><STRONG><a name="[b2]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[b5]"></a>__scatterload_rt2</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED)
<P><STRONG><a name="[48]"></a>HAL_DMA_Abort_IT</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, stm32f0xx_hal_dma.o(i.HAL_DMA_Abort_IT))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = HAL_DMA_Abort_IT
@@ -276,9 +277,9 @@ Global Symbols
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
<P><STRONG><a name="[a0]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<BR><BR>[Called By]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<P><STRONG><a name="[9a]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<BR><BR>[Called By]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
</UL>
@@ -288,14 +289,14 @@ Global Symbols
</UL>
<P><STRONG><a name="[4e]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR><BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
@@ -305,8 +306,8 @@ Global Symbols
<LI><a href="#[44]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[43]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[36]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[7b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
@@ -486,8 +487,8 @@ Global Symbols
<LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[4d]"></a>HAL_SPI_TxRxCpltCallback</STRONG> (Thumb, 198 bytes, Stack size 32 bytes, main.o(i.HAL_SPI_TxRxCpltCallback))
<BR><BR>[Stack]<UL><LI>Max Depth = 68<LI>Call Chain = HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<P><STRONG><a name="[4d]"></a>HAL_SPI_TxRxCpltCallback</STRONG> (Thumb, 200 bytes, Stack size 24 bytes, main.o(i.HAL_SPI_TxRxCpltCallback))
<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[52]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_NVIC_SystemReset
@@ -751,7 +752,7 @@ Global Symbols
<BR><BR>[Calls]<UL><LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;_printf_core
</UL>
<P><STRONG><a name="[b3]"></a>__1printf$bare</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)
<P><STRONG><a name="[b6]"></a>__1printf$bare</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)
<P><STRONG><a name="[92]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __2printf
@@ -762,15 +763,15 @@ Global Symbols
<P><STRONG><a name="[89]"></a>__ARM_common_switch8</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.__ARM_common_switch8))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<BR>[Called By]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[b4]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[b7]"></a>__scatterload_copy</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED)
<P><STRONG><a name="[b5]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[b8]"></a>__scatterload_null</STRONG> (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED)
<P><STRONG><a name="[b6]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[b9]"></a>__scatterload_zeroinit</STRONG> (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED)
<P><STRONG><a name="[54]"></a>byte_to_int16_t</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.byte_to_int16_t))
<BR><BR>[Called By]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
@@ -781,8 +782,8 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
</UL>
<BR>[Called By]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<BR>[Called By]<UL><LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
@@ -810,14 +811,16 @@ Global Symbols
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 292 bytes, Stack size 0 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 126 bytes, Stack size 0 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 196<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[3b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[76]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART3_UART_Init
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
@@ -825,30 +828,17 @@ Global Symbols
<LI><a href="#[72]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[6f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
<LI><a href="#[6e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_init
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_get
<LI><a href="#[8f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_init
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_get
<LI><a href="#[86]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P><STRONG><a name="[9e]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<P><STRONG><a name="[97]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_init
@@ -862,30 +852,30 @@ Global Symbols
<P><STRONG><a name="[53]"></a>ps2kb_buf_add</STRONG> (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.ps2kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = ps2kb_buf_add &rArr; ps2kb_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_is_full
<BR>[Calls]<UL><LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_is_full
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[9b]"></a>ps2kb_buf_get</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_get))
<P><STRONG><a name="[96]"></a>ps2kb_buf_get</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_get))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = ps2kb_buf_get &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[8f]"></a>ps2kb_buf_init</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.ps2kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = ps2kb_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_reset
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_reset
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[9d]"></a>ps2kb_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_is_full))
<P><STRONG><a name="[95]"></a>ps2kb_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = ps2kb_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
@@ -893,7 +883,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[53]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_add
</UL>
<P><STRONG><a name="[9f]"></a>ps2kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_reset))
<P><STRONG><a name="[98]"></a>ps2kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2kb_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2kb_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
@@ -904,9 +894,9 @@ Global Symbols
<P><STRONG><a name="[99]"></a>ps2kb_get_bus_status</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2kb_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
@@ -915,7 +905,7 @@ Global Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2kb_init &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_reset
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -925,7 +915,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[8c]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
@@ -933,20 +923,20 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[9a]"></a>ps2kb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines))
<P><STRONG><a name="[9b]"></a>ps2kb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
</UL>
@@ -955,6 +945,21 @@ Global Symbols
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[93]"></a>ps2kb_update</STRONG> (Thumb, 138 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = ps2kb_update &rArr; keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[8c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_buf_get
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8a]"></a>ps2kb_write</STRONG> (Thumb, 292 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = ps2kb_write &rArr; ps2kb_get_bus_status
</UL>
@@ -970,31 +975,31 @@ Global Symbols
<P><STRONG><a name="[55]"></a>ps2mouse_buf_add</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.ps2mouse_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_is_full
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_is_full
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[97]"></a>ps2mouse_buf_get</STRONG> (Thumb, 40 bytes, Stack size 16 bytes, helpers.o(i.ps2mouse_buf_get))
<P><STRONG><a name="[9f]"></a>ps2mouse_buf_get</STRONG> (Thumb, 40 bytes, Stack size 16 bytes, helpers.o(i.ps2mouse_buf_get))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = ps2mouse_buf_get &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[90]"></a>ps2mouse_buf_init</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.ps2mouse_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = ps2mouse_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_reset
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
<BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_reset
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[a1]"></a>ps2mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2mouse_buf_is_full))
<P><STRONG><a name="[9d]"></a>ps2mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.ps2mouse_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
@@ -1002,7 +1007,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_add
</UL>
<P><STRONG><a name="[a3]"></a>ps2mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.ps2mouse_buf_reset))
<P><STRONG><a name="[a0]"></a>ps2mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.ps2mouse_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2mouse_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
@@ -1010,93 +1015,116 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_init
</UL>
<P><STRONG><a name="[93]"></a>ps2mouse_get_bus_status</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))
<P><STRONG><a name="[a1]"></a>ps2mouse_get_bus_status</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
</UL>
<P><STRONG><a name="[96]"></a>ps2mouse_host_req_reply</STRONG> (Thumb, 252 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply))
<P><STRONG><a name="[a2]"></a>ps2mouse_host_req_reply</STRONG> (Thumb, 426 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2mouse_host_req_reply &rArr; ps2mouse_write &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<BR>[Calls]<UL><LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_accumulators
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[8e]"></a>ps2mouse_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2mouse_init &rArr; ps2mouse_release_lines
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2mouse_init &rArr; ps2mouse_reset &rArr; ps2mouse_restore_defaults
</UL>
<BR>[Calls]<UL><LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[95]"></a>ps2mouse_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_read))
<P><STRONG><a name="[a7]"></a>ps2mouse_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = ps2mouse_read &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<BR>[Calls]<UL><LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[94]"></a>ps2mouse_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines))
<P><STRONG><a name="[a8]"></a>ps2mouse_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
</UL>
<P><STRONG><a name="[a4]"></a>ps2mouse_reset</STRONG> (Thumb, 20 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = ps2mouse_reset
<P><STRONG><a name="[a3]"></a>ps2mouse_reset</STRONG> (Thumb, 20 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2mouse_reset &rArr; ps2mouse_restore_defaults
</UL>
<BR>[Calls]<UL><LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
</UL>
<BR>[Called By]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[a6]"></a>ps2mouse_restore_defaults</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, ps2mouse.o(i.ps2mouse_restore_defaults))
<BR><BR>[Called By]<UL><LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<P><STRONG><a name="[a5]"></a>ps2mouse_restore_defaults</STRONG> (Thumb, 30 bytes, Stack size 4 bytes, ps2mouse.o(i.ps2mouse_restore_defaults))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = ps2mouse_restore_defaults
</UL>
<BR>[Calls]<UL><LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_accumulators
</UL>
<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[98]"></a>ps2mouse_send_update</STRONG> (Thumb, 160 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_send_update))
<P><STRONG><a name="[a9]"></a>ps2mouse_send_update</STRONG> (Thumb, 202 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_send_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = ps2mouse_send_update &rArr; ps2mouse_write &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<BR>[Calls]<UL><LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
</UL>
<BR>[Called By]<UL><LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[94]"></a>ps2mouse_update</STRONG> (Thumb, 62 bytes, Stack size 8 bytes, main.o(i.ps2mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = ps2mouse_update &rArr; ps2mouse_host_req_reply &rArr; ps2mouse_write &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_buf_get
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[a5]"></a>ps2mouse_write</STRONG> (Thumb, 292 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_write))
<P><STRONG><a name="[a4]"></a>ps2mouse_write</STRONG> (Thumb, 292 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = ps2mouse_write &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<BR>[Calls]<UL><LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<BR>[Called By]<UL><LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[a6]"></a>reset_accumulators</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, ps2mouse.o(i.reset_accumulators))
<BR><BR>[Called By]<UL><LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P>
<H3>
@@ -1156,35 +1184,35 @@ Local Symbols
</UL>
<P><STRONG><a name="[2a]"></a>SPI_2linesRxISR_16BIT</STRONG> (Thumb, 54 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_16BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = SPI_2linesRxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = SPI_2linesRxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2c]"></a>SPI_2linesRxISR_8BIT</STRONG> (Thumb, 94 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesRxISR_8BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = SPI_2linesRxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = SPI_2linesRxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2b]"></a>SPI_2linesTxISR_16BIT</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_16BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = SPI_2linesTxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = SPI_2linesTxISR_16BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[2d]"></a>SPI_2linesTxISR_8BIT</STRONG> (Thumb, 72 bytes, Stack size 8 bytes, stm32f0xx_hal_spi.o(i.SPI_2linesTxISR_8BIT))
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = SPI_2linesTxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = SPI_2linesTxISR_8BIT &rArr; SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
</UL>
<BR>[Address Reference Count : 1]<UL><LI> stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
</UL>
<P><STRONG><a name="[77]"></a>SPI_CloseRxTx_ISR</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f0xx_hal_spi.o(i.SPI_CloseRxTx_ISR))
<BR><BR>[Stack]<UL><LI>Max Depth = 84<LI>Call Chain = SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = SPI_CloseRxTx_ISR &rArr; HAL_SPI_TxRxCpltCallback &rArr; ps2mouse_buf_add &rArr; ps2mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick

View File

@@ -67,6 +67,7 @@ Section Cross References
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(i.ps2mouse_reset) for ps2mouse_reset
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(i.ps2mouse_write) for ps2mouse_write
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(i.ps2mouse_restore_defaults) for ps2mouse_restore_defaults
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(i.reset_accumulators) for reset_accumulators
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(i.ps2mouse_read) for ps2mouse_read
ps2mouse.o(i.ps2mouse_host_req_reply) refers to ps2mouse.o(.data) for .data
ps2mouse.o(i.ps2mouse_init) refers to ps2mouse.o(i.ps2mouse_reset) for ps2mouse_reset
@@ -82,6 +83,7 @@ Section Cross References
ps2mouse.o(i.ps2mouse_release_lines) refers to ps2mouse.o(.data) for .data
ps2mouse.o(i.ps2mouse_reset) refers to ps2mouse.o(i.ps2mouse_restore_defaults) for ps2mouse_restore_defaults
ps2mouse.o(i.ps2mouse_reset) refers to ps2mouse.o(.data) for .data
ps2mouse.o(i.ps2mouse_restore_defaults) refers to ps2mouse.o(i.reset_accumulators) for reset_accumulators
ps2mouse.o(i.ps2mouse_restore_defaults) refers to ps2mouse.o(.data) for .data
ps2mouse.o(i.ps2mouse_send_update) refers to ps2mouse.o(i.ps2mouse_get_bus_status) for ps2mouse_get_bus_status
ps2mouse.o(i.ps2mouse_send_update) refers to ps2mouse.o(i.ps2mouse_write) for ps2mouse_write
@@ -91,6 +93,7 @@ Section Cross References
ps2mouse.o(i.ps2mouse_write) refers to delay_us.o(i.delay_us) for delay_us
ps2mouse.o(i.ps2mouse_write) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
ps2mouse.o(i.ps2mouse_write) refers to ps2mouse.o(.data) for .data
ps2mouse.o(i.reset_accumulators) refers to ps2mouse.o(.data) for .data
main.o(i.HAL_SPI_TxRxCpltCallback) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.HAL_SPI_TxRxCpltCallback) refers to memcpya.o(.text) for __aeabi_memcpy4
main.o(i.HAL_SPI_TxRxCpltCallback) refers to stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) for HAL_SPI_TransmitReceive_IT
@@ -144,21 +147,28 @@ Section Cross References
main.o(i.main) refers to memseta.o(.text) for __aeabi_memclr4
main.o(i.main) refers to stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT) for HAL_SPI_TransmitReceive_IT
main.o(i.main) refers to printfb.o(i.__0printf$bare) for __2printf
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_get_bus_status) for ps2mouse_get_bus_status
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_release_lines) for ps2mouse_release_lines
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_read) for ps2mouse_read
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_host_req_reply) for ps2mouse_host_req_reply
main.o(i.main) refers to helpers.o(i.ps2mouse_buf_get) for ps2mouse_buf_get
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_send_update) for ps2mouse_send_update
main.o(i.main) refers to ps2kb.o(i.ps2kb_get_bus_status) for ps2kb_get_bus_status
main.o(i.main) refers to ps2kb.o(i.ps2kb_release_lines) for ps2kb_release_lines
main.o(i.main) refers to ps2kb.o(i.ps2kb_read) for ps2kb_read
main.o(i.main) refers to ps2kb.o(i.keyboard_reply) for keyboard_reply
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.ps2kb_buf_get) for ps2kb_buf_get
main.o(i.main) refers to ps2kb.o(i.ps2kb_press_key) for ps2kb_press_key
main.o(i.main) refers to main.o(i.ps2kb_update) for ps2kb_update
main.o(i.main) refers to main.o(i.ps2mouse_update) for ps2mouse_update
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.ps2kb_update) refers to ps2kb.o(i.ps2kb_get_bus_status) for ps2kb_get_bus_status
main.o(i.ps2kb_update) refers to ps2kb.o(i.ps2kb_release_lines) for ps2kb_release_lines
main.o(i.ps2kb_update) refers to ps2kb.o(i.ps2kb_read) for ps2kb_read
main.o(i.ps2kb_update) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.ps2kb_update) refers to ps2kb.o(i.keyboard_reply) for keyboard_reply
main.o(i.ps2kb_update) refers to memseta.o(.text) for __aeabi_memclr4
main.o(i.ps2kb_update) refers to helpers.o(i.ps2kb_buf_get) for ps2kb_buf_get
main.o(i.ps2kb_update) refers to ps2kb.o(i.ps2kb_press_key) for ps2kb_press_key
main.o(i.ps2kb_update) refers to main.o(.data) for .data
main.o(i.ps2kb_update) refers to main.o(.bss) for .bss
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_get_bus_status) for ps2mouse_get_bus_status
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_release_lines) for ps2mouse_release_lines
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_read) for ps2mouse_read
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_host_req_reply) for ps2mouse_host_req_reply
main.o(i.ps2mouse_update) refers to helpers.o(i.ps2mouse_buf_get) for ps2mouse_buf_get
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_send_update) for ps2mouse_send_update
main.o(i.ps2mouse_update) refers to main.o(.data) for .data
main.o(i.ps2mouse_update) refers to main.o(.bss) for .bss
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
@@ -1615,41 +1625,41 @@ 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 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.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 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.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 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.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 malloc.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.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 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.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 printf2.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/stdio/streams.c 0x00000000 Number 0 stdout.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/memcpy.c 0x00000000 Number 0 memcpya.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
@@ -1829,49 +1839,52 @@ Image Symbol Table
i.fputc 0x080021d4 Section 0 main.o(i.fputc)
i.keyboard_reply 0x080021ec Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x080022a0 Section 0 main.o(i.main)
i.malloc 0x080023e8 Section 0 malloc.o(i.malloc)
i.micros 0x08002454 Section 0 delay_us.o(i.micros)
i.ps2kb_buf_add 0x08002464 Section 0 helpers.o(i.ps2kb_buf_add)
i.ps2kb_buf_get 0x08002494 Section 0 helpers.o(i.ps2kb_buf_get)
i.ps2kb_buf_init 0x080024c2 Section 0 helpers.o(i.ps2kb_buf_init)
i.ps2kb_buf_is_full 0x080024e2 Section 0 helpers.o(i.ps2kb_buf_is_full)
i.ps2kb_buf_reset 0x080024fe Section 0 helpers.o(i.ps2kb_buf_reset)
i.ps2kb_get_bus_status 0x0800251c Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x08002560 Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x0800257c Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_read 0x080026c0 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x080027bc Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x080027dc Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_write 0x080027ec Section 0 ps2kb.o(i.ps2kb_write)
i.ps2mouse_buf_add 0x08002914 Section 0 helpers.o(i.ps2mouse_buf_add)
i.ps2mouse_buf_get 0x08002946 Section 0 helpers.o(i.ps2mouse_buf_get)
i.ps2mouse_buf_init 0x0800296e Section 0 helpers.o(i.ps2mouse_buf_init)
i.ps2mouse_buf_is_full 0x08002986 Section 0 helpers.o(i.ps2mouse_buf_is_full)
i.ps2mouse_buf_reset 0x080029a2 Section 0 helpers.o(i.ps2mouse_buf_reset)
i.ps2mouse_get_bus_status 0x080029b8 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_host_req_reply 0x08002a18 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08002b18 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08002b34 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08002c30 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08002c50 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08002c68 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08002c84 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_write 0x08002d28 Section 0 ps2mouse.o(i.ps2mouse_write)
.constdata 0x08002e50 Section 121 ps2kb.o(.constdata)
.constdata 0x08002ec9 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08002ed9 Section 8 system_stm32f0xx.o(.constdata)
i.malloc 0x08002340 Section 0 malloc.o(i.malloc)
i.micros 0x080023ac Section 0 delay_us.o(i.micros)
i.ps2kb_buf_add 0x080023bc Section 0 helpers.o(i.ps2kb_buf_add)
i.ps2kb_buf_get 0x080023ec Section 0 helpers.o(i.ps2kb_buf_get)
i.ps2kb_buf_init 0x0800241a Section 0 helpers.o(i.ps2kb_buf_init)
i.ps2kb_buf_is_full 0x0800243a Section 0 helpers.o(i.ps2kb_buf_is_full)
i.ps2kb_buf_reset 0x08002456 Section 0 helpers.o(i.ps2kb_buf_reset)
i.ps2kb_get_bus_status 0x08002474 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080024b8 Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x080024d4 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_read 0x08002618 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x08002714 Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x08002734 Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x08002744 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x080027e0 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2mouse_buf_add 0x08002908 Section 0 helpers.o(i.ps2mouse_buf_add)
i.ps2mouse_buf_get 0x0800293a Section 0 helpers.o(i.ps2mouse_buf_get)
i.ps2mouse_buf_init 0x08002962 Section 0 helpers.o(i.ps2mouse_buf_init)
i.ps2mouse_buf_is_full 0x0800297a Section 0 helpers.o(i.ps2mouse_buf_is_full)
i.ps2mouse_buf_reset 0x08002996 Section 0 helpers.o(i.ps2mouse_buf_reset)
i.ps2mouse_get_bus_status 0x080029ac Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_host_req_reply 0x08002a0c Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08002bbc Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08002bd8 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08002cd4 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08002cf4 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08002d0c Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08002d30 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08002e00 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_write 0x08002e48 Section 0 ps2mouse.o(i.ps2mouse_write)
i.reset_accumulators 0x08002f70 Section 0 ps2mouse.o(i.reset_accumulators)
.constdata 0x08002f80 Section 121 ps2kb.o(.constdata)
.constdata 0x08002ff9 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08003009 Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 20 ps2kb.o(.data)
.data 0x20000018 Section 36 ps2mouse.o(.data)
.data 0x2000003c Section 16 main.o(.data)
.data 0x2000004c Section 4 stm32f0xx_hal.o(.data)
.data 0x20000050 Section 4 system_stm32f0xx.o(.data)
.data 0x20000054 Section 4 stdout.o(.data)
.data 0x20000058 Section 4 mvars.o(.data)
.data 0x20000018 Section 40 ps2mouse.o(.data)
.data 0x20000040 Section 16 main.o(.data)
.data 0x20000050 Section 4 stm32f0xx_hal.o(.data)
.data 0x20000054 Section 4 system_stm32f0xx.o(.data)
.data 0x20000058 Section 4 stdout.o(.data)
.data 0x2000005c Section 4 mvars.o(.data)
.bss 0x20000060 Section 572 main.o(.bss)
HEAP 0x200002a0 Section 512 startup_stm32f072xb.o(HEAP)
STACK 0x200004a0 Section 1024 startup_stm32f072xb.o(STACK)
.data 0x20000060 Section 4 mvars.o(.data)
.bss 0x20000064 Section 584 main.o(.bss)
HEAP 0x200002b0 Section 512 startup_stm32f072xb.o(HEAP)
STACK 0x200004b0 Section 1024 startup_stm32f072xb.o(STACK)
Global Symbols
@@ -1971,7 +1984,7 @@ Image Symbol Table
HAL_SPI_MspInit 0x08000e65 Thumb Code 76 stm32f0xx_hal_msp.o(i.HAL_SPI_MspInit)
HAL_SPI_RxCpltCallback 0x08000eb9 Thumb Code 2 stm32f0xx_hal_spi.o(i.HAL_SPI_RxCpltCallback)
HAL_SPI_TransmitReceive_IT 0x08000ebd Thumb Code 196 stm32f0xx_hal_spi.o(i.HAL_SPI_TransmitReceive_IT)
HAL_SPI_TxRxCpltCallback 0x08000f91 Thumb Code 198 main.o(i.HAL_SPI_TxRxCpltCallback)
HAL_SPI_TxRxCpltCallback 0x08000f91 Thumb Code 200 main.o(i.HAL_SPI_TxRxCpltCallback)
HAL_SYSTICK_CLKSourceConfig 0x0800106d Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig)
HAL_SYSTICK_Callback 0x08001085 Thumb Code 2 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Callback)
HAL_SYSTICK_Config 0x08001089 Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config)
@@ -2019,41 +2032,44 @@ Image Symbol Table
delay_us_init 0x080021c5 Thumb Code 12 delay_us.o(i.delay_us_init)
fputc 0x080021d5 Thumb Code 18 main.o(i.fputc)
keyboard_reply 0x080021ed Thumb Code 174 ps2kb.o(i.keyboard_reply)
main 0x080022a1 Thumb Code 292 main.o(i.main)
malloc 0x080023e9 Thumb Code 92 malloc.o(i.malloc)
micros 0x08002455 Thumb Code 10 delay_us.o(i.micros)
ps2kb_buf_add 0x08002465 Thumb Code 48 helpers.o(i.ps2kb_buf_add)
ps2kb_buf_get 0x08002495 Thumb Code 46 helpers.o(i.ps2kb_buf_get)
ps2kb_buf_init 0x080024c3 Thumb Code 32 helpers.o(i.ps2kb_buf_init)
ps2kb_buf_is_full 0x080024e3 Thumb Code 28 helpers.o(i.ps2kb_buf_is_full)
ps2kb_buf_reset 0x080024ff Thumb Code 28 helpers.o(i.ps2kb_buf_reset)
ps2kb_get_bus_status 0x0800251d Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x08002561 Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x0800257d Thumb Code 314 ps2kb.o(i.ps2kb_press_key)
ps2kb_read 0x080026c1 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x080027bd Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x080027dd Thumb Code 12 ps2kb.o(i.ps2kb_reset)
ps2kb_write 0x080027ed Thumb Code 292 ps2kb.o(i.ps2kb_write)
ps2mouse_buf_add 0x08002915 Thumb Code 50 helpers.o(i.ps2mouse_buf_add)
ps2mouse_buf_get 0x08002947 Thumb Code 40 helpers.o(i.ps2mouse_buf_get)
ps2mouse_buf_init 0x0800296f Thumb Code 24 helpers.o(i.ps2mouse_buf_init)
ps2mouse_buf_is_full 0x08002987 Thumb Code 28 helpers.o(i.ps2mouse_buf_is_full)
ps2mouse_buf_reset 0x080029a3 Thumb Code 22 helpers.o(i.ps2mouse_buf_reset)
ps2mouse_get_bus_status 0x080029b9 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_host_req_reply 0x08002a19 Thumb Code 252 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08002b19 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08002b35 Thumb Code 246 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08002c31 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08002c51 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08002c69 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08002c85 Thumb Code 160 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_write 0x08002d29 Thumb Code 292 ps2mouse.o(i.ps2mouse_write)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08002e50 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x08002ea9 Data 32 ps2kb.o(.constdata)
AHBPrescTable 0x08002ec9 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08002ed9 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002ee4 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002f04 Number 0 anon$$obj.o(Region$$Table)
main 0x080022a1 Thumb Code 126 main.o(i.main)
malloc 0x08002341 Thumb Code 92 malloc.o(i.malloc)
micros 0x080023ad Thumb Code 10 delay_us.o(i.micros)
ps2kb_buf_add 0x080023bd Thumb Code 48 helpers.o(i.ps2kb_buf_add)
ps2kb_buf_get 0x080023ed Thumb Code 46 helpers.o(i.ps2kb_buf_get)
ps2kb_buf_init 0x0800241b Thumb Code 32 helpers.o(i.ps2kb_buf_init)
ps2kb_buf_is_full 0x0800243b Thumb Code 28 helpers.o(i.ps2kb_buf_is_full)
ps2kb_buf_reset 0x08002457 Thumb Code 28 helpers.o(i.ps2kb_buf_reset)
ps2kb_get_bus_status 0x08002475 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080024b9 Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x080024d5 Thumb Code 314 ps2kb.o(i.ps2kb_press_key)
ps2kb_read 0x08002619 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x08002715 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x08002735 Thumb Code 12 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x08002745 Thumb Code 138 main.o(i.ps2kb_update)
ps2kb_write 0x080027e1 Thumb Code 292 ps2kb.o(i.ps2kb_write)
ps2mouse_buf_add 0x08002909 Thumb Code 50 helpers.o(i.ps2mouse_buf_add)
ps2mouse_buf_get 0x0800293b Thumb Code 40 helpers.o(i.ps2mouse_buf_get)
ps2mouse_buf_init 0x08002963 Thumb Code 24 helpers.o(i.ps2mouse_buf_init)
ps2mouse_buf_is_full 0x0800297b Thumb Code 28 helpers.o(i.ps2mouse_buf_is_full)
ps2mouse_buf_reset 0x08002997 Thumb Code 22 helpers.o(i.ps2mouse_buf_reset)
ps2mouse_get_bus_status 0x080029ad Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_host_req_reply 0x08002a0d Thumb Code 426 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08002bbd Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08002bd9 Thumb Code 246 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08002cd5 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08002cf5 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08002d0d Thumb Code 30 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08002d31 Thumb Code 202 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08002e01 Thumb Code 62 main.o(i.ps2mouse_update)
ps2mouse_write 0x08002e49 Thumb Code 292 ps2mouse.o(i.ps2mouse_write)
reset_accumulators 0x08002f71 Thumb Code 12 ps2mouse.o(i.reset_accumulators)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08002f80 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x08002fd9 Data 32 ps2kb.o(.constdata)
AHBPrescTable 0x08002ff9 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08003009 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08003014 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08003034 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
ps2kb_current_scancode_set 0x20000004 Data 1 ps2kb.o(.data)
ps2kb_data_reporting_enabled 0x20000005 Data 1 ps2kb.o(.data)
@@ -2069,38 +2085,42 @@ Image Symbol Table
sample_rate_history_index 0x2000001c Data 1 ps2mouse.o(.data)
mouse_device_id 0x2000001d Data 1 ps2mouse.o(.data)
ps2mouse_current_mode 0x2000001e Data 1 ps2mouse.o(.data)
ps2mouse_clk_pin 0x20000020 Data 2 ps2mouse.o(.data)
ps2mouse_data_pin 0x20000022 Data 2 ps2mouse.o(.data)
ps2mouse_clk_port 0x20000024 Data 4 ps2mouse.o(.data)
ps2mouse_data_port 0x20000028 Data 4 ps2mouse.o(.data)
ps2mouse_wait_start 0x2000002c Data 4 ps2mouse.o(.data)
ps2mouse_out_buf 0x20000030 Data 4 ps2mouse.o(.data)
sample_rate_history 0x20000034 Data 8 ps2mouse.o(.data)
ps2kb_host_cmd 0x2000003c Data 1 main.o(.data)
ps2kb_leds 0x2000003d Data 1 main.o(.data)
ps2mouse_host_cmd 0x2000003e Data 1 main.o(.data)
buffered_code 0x2000003f Data 1 main.o(.data)
buffered_value 0x20000040 Data 1 main.o(.data)
ps2mouse_bus_status 0x20000041 Data 1 main.o(.data)
ps2kb_bus_status 0x20000042 Data 1 main.o(.data)
my_ps2mouse_buf 0x20000044 Data 8 main.o(.data)
uwTick 0x2000004c Data 4 stm32f0xx_hal.o(.data)
SystemCoreClock 0x20000050 Data 4 system_stm32f0xx.o(.data)
__stdout 0x20000054 Data 4 stdout.o(.data)
__microlib_freelist 0x20000058 Data 4 mvars.o(.data)
__microlib_freelist_initialised 0x2000005c Data 4 mvars.o(.data)
hi2c2 0x20000060 Data 76 main.o(.bss)
hspi1 0x200000ac Data 100 main.o(.bss)
htim2 0x20000110 Data 64 main.o(.bss)
huart1 0x20000150 Data 112 main.o(.bss)
huart3 0x200001c0 Data 112 main.o(.bss)
spi_transmit_buf 0x20000230 Data 32 main.o(.bss)
backup_spi1_recv_buf 0x20000250 Data 32 main.o(.bss)
spi_recv_buf 0x20000270 Data 32 main.o(.bss)
my_ps2kb_buf 0x20000290 Data 12 main.o(.bss)
__heap_base 0x200002a0 Data 0 startup_stm32f072xb.o(HEAP)
__heap_limit 0x200004a0 Data 0 startup_stm32f072xb.o(HEAP)
__initial_sp 0x200008a0 Data 0 startup_stm32f072xb.o(STACK)
ps2mouse_prev_mode 0x2000001f Data 1 ps2mouse.o(.data)
x_accumulator 0x20000020 Data 1 ps2mouse.o(.data)
y_accumulator 0x20000021 Data 1 ps2mouse.o(.data)
scroll_accumulator 0x20000022 Data 1 ps2mouse.o(.data)
ps2mouse_clk_pin 0x20000024 Data 2 ps2mouse.o(.data)
ps2mouse_data_pin 0x20000026 Data 2 ps2mouse.o(.data)
ps2mouse_clk_port 0x20000028 Data 4 ps2mouse.o(.data)
ps2mouse_data_port 0x2000002c Data 4 ps2mouse.o(.data)
ps2mouse_wait_start 0x20000030 Data 4 ps2mouse.o(.data)
ps2mouse_out_buf 0x20000034 Data 4 ps2mouse.o(.data)
sample_rate_history 0x20000038 Data 8 ps2mouse.o(.data)
ps2kb_host_cmd 0x20000040 Data 1 main.o(.data)
ps2mouse_host_cmd 0x20000041 Data 1 main.o(.data)
buffered_code 0x20000042 Data 1 main.o(.data)
buffered_value 0x20000043 Data 1 main.o(.data)
ps2mouse_bus_status 0x20000044 Data 1 main.o(.data)
ps2kb_bus_status 0x20000045 Data 1 main.o(.data)
my_ps2mouse_buf 0x20000048 Data 8 main.o(.data)
uwTick 0x20000050 Data 4 stm32f0xx_hal.o(.data)
SystemCoreClock 0x20000054 Data 4 system_stm32f0xx.o(.data)
__stdout 0x20000058 Data 4 stdout.o(.data)
__microlib_freelist 0x2000005c Data 4 mvars.o(.data)
__microlib_freelist_initialised 0x20000060 Data 4 mvars.o(.data)
hi2c2 0x20000064 Data 76 main.o(.bss)
hspi1 0x200000b0 Data 100 main.o(.bss)
htim2 0x20000114 Data 64 main.o(.bss)
huart1 0x20000154 Data 112 main.o(.bss)
huart3 0x200001c4 Data 112 main.o(.bss)
spi_transmit_buf 0x20000234 Data 32 main.o(.bss)
backup_spi1_recv_buf 0x20000254 Data 32 main.o(.bss)
spi_recv_buf 0x20000274 Data 32 main.o(.bss)
my_ps2kb_buf 0x20000294 Data 12 main.o(.bss)
latest_mouse_event 0x200002a0 Data 12 main.o(.bss)
__heap_base 0x200002b0 Data 0 startup_stm32f072xb.o(HEAP)
__heap_limit 0x200004b0 Data 0 startup_stm32f072xb.o(HEAP)
__initial_sp 0x200008b0 Data 0 startup_stm32f072xb.o(STACK)
@@ -2110,192 +2130,195 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002f64, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00003098, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002f04, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00003034, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000c0 Data RO 3 RESET startup_stm32f072xb.o
0x080000c0 0x080000c0 0x00000000 Code RO 3640 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3941 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3944 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3946 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3948 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3949 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3951 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3953 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3942 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3658 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3959 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3962 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3964 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3966 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3967 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3969 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3971 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3960 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o
0x080000f0 0x080000f0 0x0000002c Code RO 3643 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3647 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3649 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3971 .text mc_p.l(init.o)
0x08000188 0x08000188 0x00000048 Code RO 3087 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001d0 0x080001d0 0x0000001c Code RO 2890 i.HAL_Delay stm32f0xx_hal.o
0x080001ec 0x080001ec 0x00000158 Code RO 3025 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000344 0x08000344 0x0000000a Code RO 3027 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800034e 0x0800034e 0x00000008 Code RO 3028 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000356 0x08000356 0x0000000c Code RO 3029 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080000f0 0x080000f0 0x0000002c Code RO 3661 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3665 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3667 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 3989 .text mc_p.l(init.o)
0x08000188 0x08000188 0x00000048 Code RO 3105 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001d0 0x080001d0 0x0000001c Code RO 2908 i.HAL_Delay stm32f0xx_hal.o
0x080001ec 0x080001ec 0x00000158 Code RO 3043 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000344 0x08000344 0x0000000a Code RO 3045 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800034e 0x0800034e 0x00000008 Code RO 3046 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000356 0x08000356 0x0000000c Code RO 3047 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x08000362 0x08000362 0x00000002 PAD
0x08000364 0x08000364 0x0000000c Code RO 2894 i.HAL_GetTick stm32f0xx_hal.o
0x08000370 0x08000370 0x0000004a Code RO 1034 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o
0x080003ba 0x080003ba 0x00000048 Code RO 1035 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o
0x08000364 0x08000364 0x0000000c Code RO 2912 i.HAL_GetTick stm32f0xx_hal.o
0x08000370 0x08000370 0x0000004a Code RO 1052 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o
0x080003ba 0x080003ba 0x00000048 Code RO 1053 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o
0x08000402 0x08000402 0x00000002 PAD
0x08000404 0x08000404 0x000000b4 Code RO 621 i.HAL_I2C_Init stm32f0xx_hal_i2c.o
0x080004b8 0x080004b8 0x0000004c Code RO 543 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o
0x08000504 0x08000504 0x00000010 Code RO 2898 i.HAL_IncTick stm32f0xx_hal.o
0x08000514 0x08000514 0x00000020 Code RO 2899 i.HAL_Init stm32f0xx_hal.o
0x08000534 0x08000534 0x00000022 Code RO 2900 i.HAL_InitTick stm32f0xx_hal.o
0x08000404 0x08000404 0x000000b4 Code RO 639 i.HAL_I2C_Init stm32f0xx_hal_i2c.o
0x080004b8 0x080004b8 0x0000004c Code RO 561 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o
0x08000504 0x08000504 0x00000010 Code RO 2916 i.HAL_IncTick stm32f0xx_hal.o
0x08000514 0x08000514 0x00000020 Code RO 2917 i.HAL_Init stm32f0xx_hal.o
0x08000534 0x08000534 0x00000022 Code RO 2918 i.HAL_InitTick stm32f0xx_hal.o
0x08000556 0x08000556 0x00000002 PAD
0x08000558 0x08000558 0x00000044 Code RO 544 i.HAL_MspInit stm32f0xx_hal_msp.o
0x0800059c 0x0800059c 0x00000014 Code RO 3182 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080005b0 0x080005b0 0x00000008 Code RO 3186 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080005b8 0x080005b8 0x0000001c Code RO 3187 i.HAL_NVIC_SystemReset stm32f0xx_hal_cortex.o
0x080005d4 0x080005d4 0x00000120 Code RO 2810 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080006f4 0x080006f4 0x00000154 Code RO 2708 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000848 0x08000848 0x0000000c Code RO 2713 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000854 0x08000854 0x00000020 Code RO 2715 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000874 0x08000874 0x00000088 Code RO 2716 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x080008fc 0x080008fc 0x000003d8 Code RO 2719 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000cd4 0x08000cd4 0x00000002 Code RO 1091 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000558 0x08000558 0x00000044 Code RO 562 i.HAL_MspInit stm32f0xx_hal_msp.o
0x0800059c 0x0800059c 0x00000014 Code RO 3200 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080005b0 0x080005b0 0x00000008 Code RO 3204 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080005b8 0x080005b8 0x0000001c Code RO 3205 i.HAL_NVIC_SystemReset stm32f0xx_hal_cortex.o
0x080005d4 0x080005d4 0x00000120 Code RO 2828 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080006f4 0x080006f4 0x00000154 Code RO 2726 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000848 0x08000848 0x0000000c Code RO 2731 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000854 0x08000854 0x00000020 Code RO 2733 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000874 0x08000874 0x00000088 Code RO 2734 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x080008fc 0x080008fc 0x000003d8 Code RO 2737 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000cd4 0x08000cd4 0x00000002 Code RO 1109 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000cd6 0x08000cd6 0x00000002 PAD
0x08000cd8 0x08000cd8 0x000000d4 Code RO 1094 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000dac 0x08000dac 0x000000b8 Code RO 1095 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000e64 0x08000e64 0x00000054 Code RO 546 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000eb8 0x08000eb8 0x00000002 Code RO 1101 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000cd8 0x08000cd8 0x000000d4 Code RO 1112 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000dac 0x08000dac 0x000000b8 Code RO 1113 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000e64 0x08000e64 0x00000054 Code RO 564 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000eb8 0x08000eb8 0x00000002 Code RO 1119 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000eba 0x08000eba 0x00000002 PAD
0x08000ebc 0x08000ebc 0x000000d4 Code RO 1106 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000f90 0x08000f90 0x000000dc Code RO 392 i.HAL_SPI_TxRxCpltCallback main.o
0x0800106c 0x0800106c 0x00000018 Code RO 3188 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08001084 0x08001084 0x00000002 Code RO 3189 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000ebc 0x08000ebc 0x000000d4 Code RO 1124 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000f90 0x08000f90 0x000000dc Code RO 398 i.HAL_SPI_TxRxCpltCallback main.o
0x0800106c 0x0800106c 0x00000018 Code RO 3206 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08001084 0x08001084 0x00000002 Code RO 3207 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08001086 0x08001086 0x00000002 PAD
0x08001088 0x08001088 0x00000030 Code RO 3190 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x080010b8 0x080010b8 0x00000008 Code RO 3191 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x080010c0 0x080010c0 0x00000048 Code RO 2083 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08001108 0x08001108 0x00000034 Code RO 1429 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x0800113c 0x0800113c 0x00000024 Code RO 548 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001160 0x08001160 0x00000018 Code RO 1432 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001178 0x08001178 0x000000ee Code RO 1438 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x08001266 0x08001266 0x00000002 Code RO 2652 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o
0x08001268 0x08001268 0x00000002 Code RO 2327 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o
0x08001088 0x08001088 0x00000030 Code RO 3208 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x080010b8 0x080010b8 0x00000008 Code RO 3209 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x080010c0 0x080010c0 0x00000048 Code RO 2101 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08001108 0x08001108 0x00000034 Code RO 1447 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x0800113c 0x0800113c 0x00000024 Code RO 566 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001160 0x08001160 0x00000018 Code RO 1450 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001178 0x08001178 0x000000ee Code RO 1456 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x08001266 0x08001266 0x00000002 Code RO 2670 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o
0x08001268 0x08001268 0x00000002 Code RO 2345 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o
0x0800126a 0x0800126a 0x00000002 PAD
0x0800126c 0x0800126c 0x00000134 Code RO 2330 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o
0x080013a0 0x080013a0 0x0000006c Code RO 2331 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x0800140c 0x0800140c 0x00000090 Code RO 550 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x0800149c 0x0800149c 0x00000002 Code RO 2337 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o
0x0800149e 0x0800149e 0x000000c8 Code RO 2339 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001566 0x08001566 0x00000002 Code RO 2342 i.HAL_UART_TxCpltCallback stm32f0xx_hal_uart.o
0x08001568 0x08001568 0x00000002 Code RO 482 i.HardFault_Handler stm32f0xx_it.o
0x0800126c 0x0800126c 0x00000134 Code RO 2348 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o
0x080013a0 0x080013a0 0x0000006c Code RO 2349 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x0800140c 0x0800140c 0x00000090 Code RO 568 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x0800149c 0x0800149c 0x00000002 Code RO 2355 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o
0x0800149e 0x0800149e 0x000000c8 Code RO 2357 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001566 0x08001566 0x00000002 Code RO 2360 i.HAL_UART_TxCpltCallback stm32f0xx_hal_uart.o
0x08001568 0x08001568 0x00000002 Code RO 500 i.HardFault_Handler stm32f0xx_it.o
0x0800156a 0x0800156a 0x00000002 PAD
0x0800156c 0x0800156c 0x0000011c Code RO 393 i.MX_GPIO_Init main.o
0x08001688 0x08001688 0x00000054 Code RO 394 i.MX_I2C2_Init main.o
0x080016dc 0x080016dc 0x0000003c Code RO 395 i.MX_SPI1_Init main.o
0x08001718 0x08001718 0x00000054 Code RO 396 i.MX_TIM2_Init main.o
0x0800176c 0x0800176c 0x00000038 Code RO 397 i.MX_USART1_UART_Init main.o
0x080017a4 0x080017a4 0x00000048 Code RO 398 i.MX_USART3_UART_Init main.o
0x080017ec 0x080017ec 0x00000002 Code RO 483 i.NMI_Handler stm32f0xx_it.o
0x0800156c 0x0800156c 0x0000011c Code RO 399 i.MX_GPIO_Init main.o
0x08001688 0x08001688 0x00000054 Code RO 400 i.MX_I2C2_Init main.o
0x080016dc 0x080016dc 0x0000003c Code RO 401 i.MX_SPI1_Init main.o
0x08001718 0x08001718 0x00000054 Code RO 402 i.MX_TIM2_Init main.o
0x0800176c 0x0800176c 0x00000038 Code RO 403 i.MX_USART1_UART_Init main.o
0x080017a4 0x080017a4 0x00000048 Code RO 404 i.MX_USART3_UART_Init main.o
0x080017ec 0x080017ec 0x00000002 Code RO 501 i.NMI_Handler stm32f0xx_it.o
0x080017ee 0x080017ee 0x00000002 PAD
0x080017f0 0x080017f0 0x00000044 Code RO 3192 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001834 0x08001834 0x00000002 Code RO 484 i.PendSV_Handler stm32f0xx_it.o
0x080017f0 0x080017f0 0x00000044 Code RO 3210 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001834 0x08001834 0x00000002 Code RO 502 i.PendSV_Handler stm32f0xx_it.o
0x08001836 0x08001836 0x00000002 PAD
0x08001838 0x08001838 0x00000010 Code RO 485 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001848 0x08001848 0x00000036 Code RO 1113 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x0800187e 0x0800187e 0x0000005e Code RO 1114 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080018dc 0x080018dc 0x00000034 Code RO 1115 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001910 0x08001910 0x00000048 Code RO 1116 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001958 0x08001958 0x00000052 Code RO 1119 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080019aa 0x080019aa 0x00000012 Code RO 1122 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080019bc 0x080019bc 0x0000004c Code RO 1133 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001a08 0x08001a08 0x00000096 Code RO 1138 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x08001a9e 0x08001a9e 0x0000008c Code RO 1139 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001b2a 0x08001b2a 0x00000002 Code RO 486 i.SVC_Handler stm32f0xx_it.o
0x08001b2c 0x08001b2c 0x0000000c Code RO 487 i.SysTick_Handler stm32f0xx_it.o
0x08001b38 0x08001b38 0x0000006a Code RO 399 i.SystemClock_Config main.o
0x08001838 0x08001838 0x00000010 Code RO 503 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001848 0x08001848 0x00000036 Code RO 1131 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x0800187e 0x0800187e 0x0000005e Code RO 1132 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080018dc 0x080018dc 0x00000034 Code RO 1133 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001910 0x08001910 0x00000048 Code RO 1134 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001958 0x08001958 0x00000052 Code RO 1137 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080019aa 0x080019aa 0x00000012 Code RO 1140 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080019bc 0x080019bc 0x0000004c Code RO 1151 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001a08 0x08001a08 0x00000096 Code RO 1156 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x08001a9e 0x08001a9e 0x0000008c Code RO 1157 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001b2a 0x08001b2a 0x00000002 Code RO 504 i.SVC_Handler stm32f0xx_it.o
0x08001b2c 0x08001b2c 0x0000000c Code RO 505 i.SysTick_Handler stm32f0xx_it.o
0x08001b38 0x08001b38 0x0000006a Code RO 405 i.SystemClock_Config main.o
0x08001ba2 0x08001ba2 0x00000002 PAD
0x08001ba4 0x08001ba4 0x0000005c Code RO 3609 i.SystemInit system_stm32f0xx.o
0x08001c00 0x08001c00 0x00000094 Code RO 1515 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001c94 0x08001c94 0x00000016 Code RO 1522 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001caa 0x08001caa 0x00000010 Code RO 1523 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001cba 0x08001cba 0x00000022 Code RO 1529 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001cdc 0x08001cdc 0x00000026 Code RO 1531 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001d02 0x08001d02 0x000000ca Code RO 2344 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001dcc 0x08001dcc 0x00000074 Code RO 2345 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001e40 0x08001e40 0x00000014 Code RO 2346 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o
0x08001e54 0x08001e54 0x0000001e Code RO 2356 i.UART_EndRxTransfer stm32f0xx_hal_uart.o
0x08001e72 0x08001e72 0x0000001a Code RO 2357 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o
0x08001e8c 0x08001e8c 0x0000007a Code RO 2359 i.UART_Receive_IT stm32f0xx_hal_uart.o
0x08001ba4 0x08001ba4 0x0000005c Code RO 3627 i.SystemInit system_stm32f0xx.o
0x08001c00 0x08001c00 0x00000094 Code RO 1533 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001c94 0x08001c94 0x00000016 Code RO 1540 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001caa 0x08001caa 0x00000010 Code RO 1541 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001cba 0x08001cba 0x00000022 Code RO 1547 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001cdc 0x08001cdc 0x00000026 Code RO 1549 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001d02 0x08001d02 0x000000ca Code RO 2362 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001dcc 0x08001dcc 0x00000074 Code RO 2363 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001e40 0x08001e40 0x00000014 Code RO 2364 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o
0x08001e54 0x08001e54 0x0000001e Code RO 2374 i.UART_EndRxTransfer stm32f0xx_hal_uart.o
0x08001e72 0x08001e72 0x0000001a Code RO 2375 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o
0x08001e8c 0x08001e8c 0x0000007a Code RO 2377 i.UART_Receive_IT stm32f0xx_hal_uart.o
0x08001f06 0x08001f06 0x00000002 PAD
0x08001f08 0x08001f08 0x0000015c Code RO 2360 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08002064 0x08002064 0x00000066 Code RO 2361 i.UART_Transmit_IT stm32f0xx_hal_uart.o
0x080020ca 0x080020ca 0x00000062 Code RO 2362 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x0800212c 0x0800212c 0x00000010 Code RO 488 i.USART3_4_IRQHandler stm32f0xx_it.o
0x0800213c 0x0800213c 0x00000014 Code RO 3654 i.__0printf$bare mc_p.l(printfb.o)
0x08001f08 0x08001f08 0x0000015c Code RO 2378 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08002064 0x08002064 0x00000066 Code RO 2379 i.UART_Transmit_IT stm32f0xx_hal_uart.o
0x080020ca 0x080020ca 0x00000062 Code RO 2380 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x0800212c 0x0800212c 0x00000010 Code RO 506 i.USART3_4_IRQHandler stm32f0xx_it.o
0x0800213c 0x0800213c 0x00000014 Code RO 3672 i.__0printf$bare mc_p.l(printfb.o)
0x08002150 0x08002150 0x0000001a Code RO 309 i.__ARM_common_switch8 ps2kb.o
0x0800216a 0x0800216a 0x0000000e Code RO 3983 i.__scatterload_copy mc_p.l(handlers.o)
0x08002178 0x08002178 0x00000002 Code RO 3984 i.__scatterload_null mc_p.l(handlers.o)
0x0800217a 0x0800217a 0x0000000e Code RO 3985 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08002188 0x08002188 0x0000001e Code RO 3661 i._printf_core mc_p.l(printfb.o)
0x080021a6 0x080021a6 0x00000008 Code RO 401 i.byte_to_int16_t main.o
0x0800216a 0x0800216a 0x0000000e Code RO 4001 i.__scatterload_copy mc_p.l(handlers.o)
0x08002178 0x08002178 0x00000002 Code RO 4002 i.__scatterload_null mc_p.l(handlers.o)
0x0800217a 0x0800217a 0x0000000e Code RO 4003 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08002188 0x08002188 0x0000001e Code RO 3679 i._printf_core mc_p.l(printfb.o)
0x080021a6 0x080021a6 0x00000008 Code RO 407 i.byte_to_int16_t main.o
0x080021ae 0x080021ae 0x00000014 Code RO 12 i.delay_us delay_us.o
0x080021c2 0x080021c2 0x00000002 PAD
0x080021c4 0x080021c4 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x080021d4 0x080021d4 0x00000018 Code RO 402 i.fputc main.o
0x080021d4 0x080021d4 0x00000018 Code RO 408 i.fputc main.o
0x080021ec 0x080021ec 0x000000b4 Code RO 245 i.keyboard_reply ps2kb.o
0x080022a0 0x080022a0 0x00000148 Code RO 403 i.main main.o
0x080023e8 0x080023e8 0x0000006c Code RO 3914 i.malloc mc_p.l(malloc.o)
0x08002454 0x08002454 0x00000010 Code RO 14 i.micros delay_us.o
0x08002464 0x08002464 0x00000030 Code RO 149 i.ps2kb_buf_add helpers.o
0x08002494 0x08002494 0x0000002e Code RO 150 i.ps2kb_buf_get helpers.o
0x080024c2 0x080024c2 0x00000020 Code RO 151 i.ps2kb_buf_init helpers.o
0x080024e2 0x080024e2 0x0000001c Code RO 153 i.ps2kb_buf_is_full helpers.o
0x080024fe 0x080024fe 0x0000001c Code RO 154 i.ps2kb_buf_reset helpers.o
0x0800251a 0x0800251a 0x00000002 PAD
0x0800251c 0x0800251c 0x00000044 Code RO 247 i.ps2kb_get_bus_status ps2kb.o
0x08002560 0x08002560 0x0000001c Code RO 248 i.ps2kb_init ps2kb.o
0x0800257c 0x0800257c 0x00000144 Code RO 249 i.ps2kb_press_key ps2kb.o
0x080026c0 0x080026c0 0x000000fc Code RO 250 i.ps2kb_read ps2kb.o
0x080027bc 0x080027bc 0x00000020 Code RO 251 i.ps2kb_release_lines ps2kb.o
0x080027dc 0x080027dc 0x00000010 Code RO 252 i.ps2kb_reset ps2kb.o
0x080027ec 0x080027ec 0x00000128 Code RO 253 i.ps2kb_write ps2kb.o
0x08002914 0x08002914 0x00000032 Code RO 155 i.ps2mouse_buf_add helpers.o
0x08002946 0x08002946 0x00000028 Code RO 156 i.ps2mouse_buf_get helpers.o
0x0800296e 0x0800296e 0x00000018 Code RO 157 i.ps2mouse_buf_init helpers.o
0x08002986 0x08002986 0x0000001c Code RO 159 i.ps2mouse_buf_is_full helpers.o
0x080029a2 0x080029a2 0x00000016 Code RO 160 i.ps2mouse_buf_reset helpers.o
0x080029b8 0x080029b8 0x00000060 Code RO 320 i.ps2mouse_get_bus_status ps2mouse.o
0x08002a18 0x08002a18 0x00000100 Code RO 321 i.ps2mouse_host_req_reply ps2mouse.o
0x08002b18 0x08002b18 0x0000001c Code RO 322 i.ps2mouse_init ps2mouse.o
0x08002b34 0x08002b34 0x000000fc Code RO 323 i.ps2mouse_read ps2mouse.o
0x08002c30 0x08002c30 0x00000020 Code RO 324 i.ps2mouse_release_lines ps2mouse.o
0x08002c50 0x08002c50 0x00000018 Code RO 325 i.ps2mouse_reset ps2mouse.o
0x08002c68 0x08002c68 0x0000001c Code RO 326 i.ps2mouse_restore_defaults ps2mouse.o
0x08002c84 0x08002c84 0x000000a4 Code RO 327 i.ps2mouse_send_update ps2mouse.o
0x08002d28 0x08002d28 0x00000128 Code RO 328 i.ps2mouse_write ps2mouse.o
0x08002e50 0x08002e50 0x00000079 Data RO 254 .constdata ps2kb.o
0x08002ec9 0x08002ec9 0x00000010 Data RO 3610 .constdata system_stm32f0xx.o
0x08002ed9 0x08002ed9 0x00000008 Data RO 3611 .constdata system_stm32f0xx.o
0x08002ee1 0x08002ee1 0x00000003 PAD
0x08002ee4 0x08002ee4 0x00000020 Data RO 3981 Region$$Table anon$$obj.o
0x080022a0 0x080022a0 0x000000a0 Code RO 409 i.main main.o
0x08002340 0x08002340 0x0000006c Code RO 3932 i.malloc mc_p.l(malloc.o)
0x080023ac 0x080023ac 0x00000010 Code RO 14 i.micros delay_us.o
0x080023bc 0x080023bc 0x00000030 Code RO 149 i.ps2kb_buf_add helpers.o
0x080023ec 0x080023ec 0x0000002e Code RO 150 i.ps2kb_buf_get helpers.o
0x0800241a 0x0800241a 0x00000020 Code RO 151 i.ps2kb_buf_init helpers.o
0x0800243a 0x0800243a 0x0000001c Code RO 153 i.ps2kb_buf_is_full helpers.o
0x08002456 0x08002456 0x0000001c Code RO 154 i.ps2kb_buf_reset helpers.o
0x08002472 0x08002472 0x00000002 PAD
0x08002474 0x08002474 0x00000044 Code RO 247 i.ps2kb_get_bus_status ps2kb.o
0x080024b8 0x080024b8 0x0000001c Code RO 248 i.ps2kb_init ps2kb.o
0x080024d4 0x080024d4 0x00000144 Code RO 249 i.ps2kb_press_key ps2kb.o
0x08002618 0x08002618 0x000000fc Code RO 250 i.ps2kb_read ps2kb.o
0x08002714 0x08002714 0x00000020 Code RO 251 i.ps2kb_release_lines ps2kb.o
0x08002734 0x08002734 0x00000010 Code RO 252 i.ps2kb_reset ps2kb.o
0x08002744 0x08002744 0x0000009c Code RO 410 i.ps2kb_update main.o
0x080027e0 0x080027e0 0x00000128 Code RO 253 i.ps2kb_write ps2kb.o
0x08002908 0x08002908 0x00000032 Code RO 155 i.ps2mouse_buf_add helpers.o
0x0800293a 0x0800293a 0x00000028 Code RO 156 i.ps2mouse_buf_get helpers.o
0x08002962 0x08002962 0x00000018 Code RO 157 i.ps2mouse_buf_init helpers.o
0x0800297a 0x0800297a 0x0000001c Code RO 159 i.ps2mouse_buf_is_full helpers.o
0x08002996 0x08002996 0x00000016 Code RO 160 i.ps2mouse_buf_reset helpers.o
0x080029ac 0x080029ac 0x00000060 Code RO 320 i.ps2mouse_get_bus_status ps2mouse.o
0x08002a0c 0x08002a0c 0x000001b0 Code RO 321 i.ps2mouse_host_req_reply ps2mouse.o
0x08002bbc 0x08002bbc 0x0000001c Code RO 322 i.ps2mouse_init ps2mouse.o
0x08002bd8 0x08002bd8 0x000000fc Code RO 323 i.ps2mouse_read ps2mouse.o
0x08002cd4 0x08002cd4 0x00000020 Code RO 324 i.ps2mouse_release_lines ps2mouse.o
0x08002cf4 0x08002cf4 0x00000018 Code RO 325 i.ps2mouse_reset ps2mouse.o
0x08002d0c 0x08002d0c 0x00000024 Code RO 326 i.ps2mouse_restore_defaults ps2mouse.o
0x08002d30 0x08002d30 0x000000d0 Code RO 327 i.ps2mouse_send_update ps2mouse.o
0x08002e00 0x08002e00 0x00000048 Code RO 411 i.ps2mouse_update main.o
0x08002e48 0x08002e48 0x00000128 Code RO 328 i.ps2mouse_write ps2mouse.o
0x08002f70 0x08002f70 0x00000010 Code RO 329 i.reset_accumulators ps2mouse.o
0x08002f80 0x08002f80 0x00000079 Data RO 254 .constdata ps2kb.o
0x08002ff9 0x08002ff9 0x00000010 Data RO 3628 .constdata system_stm32f0xx.o
0x08003009 0x08003009 0x00000008 Data RO 3629 .constdata system_stm32f0xx.o
0x08003011 0x08003011 0x00000003 PAD
0x08003014 0x08003014 0x00000020 Data RO 3999 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002f04, Size: 0x000008a0, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08003034, Size: 0x000008b0, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08002f04 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08002f08 0x00000014 Data RW 255 .data ps2kb.o
0x20000018 0x08002f1c 0x00000024 Data RW 329 .data ps2mouse.o
0x2000003c 0x08002f40 0x00000010 Data RW 405 .data main.o
0x2000004c 0x08002f50 0x00000004 Data RW 2905 .data stm32f0xx_hal.o
0x20000050 0x08002f54 0x00000004 Data RW 3612 .data system_stm32f0xx.o
0x20000054 0x08002f58 0x00000004 Data RW 3955 .data mc_p.l(stdout.o)
0x20000058 0x08002f5c 0x00000004 Data RW 3958 .data mc_p.l(mvars.o)
0x2000005c 0x08002f60 0x00000004 Data RW 3959 .data mc_p.l(mvars.o)
0x20000060 - 0x0000023c Zero RW 404 .bss main.o
0x2000029c 0x08002f64 0x00000004 PAD
0x200002a0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200004a0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
0x20000000 0x08003034 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08003038 0x00000014 Data RW 255 .data ps2kb.o
0x20000018 0x0800304c 0x00000028 Data RW 330 .data ps2mouse.o
0x20000040 0x08003074 0x00000010 Data RW 413 .data main.o
0x20000050 0x08003084 0x00000004 Data RW 2923 .data stm32f0xx_hal.o
0x20000054 0x08003088 0x00000004 Data RW 3630 .data system_stm32f0xx.o
0x20000058 0x0800308c 0x00000004 Data RW 3973 .data mc_p.l(stdout.o)
0x2000005c 0x08003090 0x00000004 Data RW 3976 .data mc_p.l(mvars.o)
0x20000060 0x08003094 0x00000004 Data RW 3977 .data mc_p.l(mvars.o)
0x20000064 - 0x00000248 Zero RW 412 .bss main.o
0x200002ac 0x08003098 0x00000004 PAD
0x200002b0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200004b0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
==============================================================================
@@ -2307,9 +2330,9 @@ Image component sizes
52 10 0 4 0 505155 delay_us.o
346 0 0 0 0 7067 helpers.o
1326 126 0 16 572 7776 main.o
1386 150 0 16 584 8697 main.o
1222 70 121 20 0 7517 ps2kb.o
1176 72 0 36 0 8099 ps2mouse.o
1420 72 0 40 0 9150 ps2mouse.o
28 8 192 0 1536 628 startup_stm32f072xb.o
122 18 0 4 0 3603 stm32f0xx_hal.o
206 38 0 0 0 11074 stm32f0xx_hal_cortex.o
@@ -2329,7 +2352,7 @@ Image component sizes
92 16 24 4 0 1131 system_stm32f0xx.o
----------------------------------------------------------------------
11304 662 372 84 2112 605184 Object Totals
11608 686 372 88 2124 607156 Object Totals
0 0 32 0 0 0 (incl. Generated)
28 0 3 0 4 0 (incl. Padding)
@@ -2375,15 +2398,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
11664 702 372 96 2112 600576 Grand Totals
11664 702 372 96 2112 600576 ELF Image Totals
11664 702 372 96 0 0 ROM Totals
11968 726 372 100 2124 602416 Grand Totals
11968 726 372 100 2124 602416 ELF Image Totals
11968 726 372 100 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 12036 ( 11.75kB)
Total RW Size (RW Data + ZI Data) 2208 ( 2.16kB)
Total ROM Size (Code + RO Data + RW Data) 12132 ( 11.85kB)
Total RO Size (Code + RO Data) 12340 ( 12.05kB)
Total RW Size (RW Data + ZI Data) 2224 ( 2.17kB)
Total ROM Size (Code + RO Data + RW Data) 12440 ( 12.15kB)
==============================================================================

View File

@@ -35,11 +35,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x5DFA0880)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h)(0x5DFA0893)
@@ -72,11 +72,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Inc/helpers.h)(0x61B3D41D)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x61AFDCDB)
I (../Inc/main.h)(0x61AFDCDB)
I (../Inc/main.h)(0x61AFDCDB)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x5DFA0893)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x5DFA0880)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
I (../Drivers/CMSIS/Include/core_cm0.h)(0x5DFA0892)
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5D9B4298)
I (../Drivers/CMSIS/Include/core_cmInstr.h)(0x5DFA0892)
@@ -111,11 +111,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)
-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_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o ibmpc\ps2kb.o --omf_browse ibmpc\ps2kb.crf --depend ibmpc\ps2kb.d)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298)
I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A)
I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A)
I (../Inc/helpers.h)(0x61B3D41D)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x61AFDCDB)
@@ -148,14 +148,14 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)
I (../Inc/shared.h)(0x617487BD)
I (../Inc/shared.h)(0x617487BD)
I (../Inc/ps2kb.h)(0x617D9759)
I (../Inc/delay_us.h)(0x617487C7)
F (..\Src\ps2mouse.c)(0x61B1D568)(--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
F (..\Src\ps2mouse.c)(0x61B4A08E)(--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\_ibmpc
-I.\RTE\_ibmpc
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
-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
@@ -190,10 +190,10 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -22,6 +22,8 @@ uint8_t ps2kb_buf_is_empty(ps2kb_buf *lb)
return lb->tail == lb->head;
}
// ring buffer magic!
// I completely forgot how it works one month after I wrote this code!
uint8_t ps2kb_buf_add(ps2kb_buf *lb, uint8_t code, uint8_t value)
{
if(ps2kb_buf_is_full(lb))

View File

@@ -67,7 +67,8 @@ uint8_t backup_spi1_recv_buf[SPI_BUF_SIZE];
uint8_t spi_recv_buf[SPI_BUF_SIZE];
ps2kb_buf my_ps2kb_buf;
ps2mouse_buf my_ps2mouse_buf;
uint8_t ps2kb_host_cmd, ps2kb_leds, ps2mouse_host_cmd, buffered_code, buffered_value, ps2mouse_bus_status, ps2kb_bus_status;
uint8_t ps2kb_host_cmd, ps2mouse_host_cmd, buffered_code, buffered_value, ps2mouse_bus_status, ps2kb_bus_status;
mouse_event latest_mouse_event;
/* USER CODE END PV */
@@ -123,16 +124,15 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
if(backup_spi1_recv_buf[SPI_BUF_INDEX_MSG_TYPE] == SPI_MOSI_MSG_MOUSE_EVENT)
{
mouse_event this_event;
this_event.movement_x = byte_to_int16_t(backup_spi1_recv_buf[4], backup_spi1_recv_buf[5]);
this_event.movement_y = -1 * byte_to_int16_t(backup_spi1_recv_buf[6], backup_spi1_recv_buf[7]);
this_event.scroll_vertical = -1 * byte_to_int16_t(backup_spi1_recv_buf[8], backup_spi1_recv_buf[9]);
this_event.button_left = backup_spi1_recv_buf[13];
this_event.button_right = backup_spi1_recv_buf[14];
this_event.button_middle = backup_spi1_recv_buf[15];
this_event.button_side = backup_spi1_recv_buf[16];
this_event.button_extra = backup_spi1_recv_buf[17];
ps2mouse_buf_add(&my_ps2mouse_buf, &this_event);
latest_mouse_event.movement_x = byte_to_int16_t(backup_spi1_recv_buf[4], backup_spi1_recv_buf[5]);
latest_mouse_event.movement_y = -1 * byte_to_int16_t(backup_spi1_recv_buf[6], backup_spi1_recv_buf[7]);
latest_mouse_event.scroll_vertical = -1 * byte_to_int16_t(backup_spi1_recv_buf[8], backup_spi1_recv_buf[9]);
latest_mouse_event.button_left = backup_spi1_recv_buf[13];
latest_mouse_event.button_right = backup_spi1_recv_buf[14];
latest_mouse_event.button_middle = backup_spi1_recv_buf[15];
latest_mouse_event.button_side = backup_spi1_recv_buf[16];
latest_mouse_event.button_extra = backup_spi1_recv_buf[17];
ps2mouse_buf_add(&my_ps2mouse_buf, &latest_mouse_event);
}
if(backup_spi1_recv_buf[SPI_BUF_INDEX_MSG_TYPE] == SPI_MOSI_MSG_REQ_ACK)
@@ -140,6 +140,52 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
HAL_GPIO_WritePin(ACT_LED_GPIO_Port, ACT_LED_Pin, GPIO_PIN_RESET);
}
void ps2mouse_update(void)
{
ps2mouse_bus_status = ps2mouse_get_bus_status();
if(ps2mouse_bus_status == PS2_BUS_INHIBIT)
{
ps2mouse_release_lines();
return;
}
else if(ps2mouse_bus_status == PS2_BUS_REQ_TO_SEND)
{
ps2mouse_read(&ps2mouse_host_cmd, 10);
ps2mouse_host_req_reply(ps2mouse_host_cmd, &latest_mouse_event);
}
mouse_event* this_mouse_event = ps2mouse_buf_get(&my_ps2mouse_buf);
if(this_mouse_event != NULL)
ps2mouse_send_update(this_mouse_event);
}
void ps2kb_update(void)
{
ps2kb_bus_status = ps2kb_get_bus_status();
if(ps2kb_bus_status == PS2_BUS_INHIBIT)
{
ps2kb_release_lines();
return;
}
else if(ps2kb_bus_status == PS2_BUS_REQ_TO_SEND)
{
uint8_t ps2kb_leds = 0xff;
ps2kb_read(&ps2kb_host_cmd, 10);
keyboard_reply(ps2kb_host_cmd, &ps2kb_leds);
if(ps2kb_leds != 0xff)
{
memset(spi_transmit_buf, 0, SPI_BUF_SIZE);
spi_transmit_buf[SPI_BUF_INDEX_MAGIC] = SPI_MISO_MAGIC;
spi_transmit_buf[SPI_BUF_INDEX_SEQNUM] = backup_spi1_recv_buf[SPI_BUF_INDEX_SEQNUM];
spi_transmit_buf[SPI_BUF_INDEX_MSG_TYPE] = SPI_MISO_MSG_KB_LED_REQ;
spi_transmit_buf[3] = ps2kb_leds;
HAL_GPIO_WritePin(SLAVE_REQ_GPIO_Port, SLAVE_REQ_Pin, GPIO_PIN_SET);
}
}
if(ps2kb_buf_get(&my_ps2kb_buf, &buffered_code, &buffered_value) == 0)
ps2kb_press_key(buffered_code, buffered_value);
}
/* USER CODE END 0 */
/**
@@ -185,7 +231,6 @@ int main(void)
memset(spi_transmit_buf, 0, SPI_BUF_SIZE);
HAL_SPI_TransmitReceive_IT(&hspi1, spi_transmit_buf, spi_recv_buf, SPI_BUF_SIZE);
printf("hello world\n");
mouse_event* this_mouse_event;
/* USER CODE END 2 */
/* Infinite loop */
@@ -200,47 +245,8 @@ int main(void)
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
ps2mouse_bus_status = ps2mouse_get_bus_status();
if(ps2mouse_bus_status == PS2_BUS_INHIBIT)
{
ps2mouse_release_lines();
}
else if(ps2mouse_bus_status == PS2_BUS_REQ_TO_SEND)
{
ps2mouse_read(&ps2mouse_host_cmd, 10);
ps2mouse_host_req_reply(ps2mouse_host_cmd);
}
this_mouse_event = ps2mouse_buf_get(&my_ps2mouse_buf);
if(this_mouse_event != NULL)
{
ps2mouse_send_update(this_mouse_event);
}
ps2kb_bus_status = ps2kb_get_bus_status();
if(ps2kb_bus_status == PS2_BUS_INHIBIT)
{
ps2kb_release_lines();
}
else if(ps2kb_bus_status == PS2_BUS_REQ_TO_SEND)
{
ps2kb_leds = 0xff;
ps2kb_read(&ps2kb_host_cmd, 10);
keyboard_reply(ps2kb_host_cmd, &ps2kb_leds);
if(ps2kb_leds != 0xff)
{
memset(spi_transmit_buf, 0, SPI_BUF_SIZE);
spi_transmit_buf[SPI_BUF_INDEX_MAGIC] = SPI_MISO_MAGIC;
spi_transmit_buf[SPI_BUF_INDEX_SEQNUM] = backup_spi1_recv_buf[SPI_BUF_INDEX_SEQNUM];
spi_transmit_buf[SPI_BUF_INDEX_MSG_TYPE] = SPI_MISO_MSG_KB_LED_REQ;
spi_transmit_buf[3] = ps2kb_leds;
HAL_GPIO_WritePin(SLAVE_REQ_GPIO_Port, SLAVE_REQ_Pin, GPIO_PIN_SET);
}
}
if(ps2kb_buf_get(&my_ps2kb_buf, &buffered_code, &buffered_value) == 0)
ps2kb_press_key(buffered_code, buffered_value);
ps2kb_update();
ps2mouse_update();
}
/* USER CODE END 3 */

View File

@@ -36,6 +36,7 @@ uint8_t sample_rate_history_index;
uint8_t mouse_device_id;
uint8_t ps2mouse_current_mode;
uint8_t ps2mouse_prev_mode;
uint8_t x_accumulator, y_accumulator, scroll_accumulator;
#define PS2MOUSE_PACKET_SIZE_GENERIC 3
#define PS2MOUSE_PACKET_SIZE_INTELLIMOUSE 4
@@ -58,6 +59,13 @@ void ps2mouse_release_lines(void)
PS2MOUSE_DATA_HI();
}
void reset_accumulators(void)
{
x_accumulator = 0;
y_accumulator = 0;
scroll_accumulator = 0;
}
void ps2mouse_restore_defaults()
{
ps2mouse_sampling_rate = 100;
@@ -66,6 +74,7 @@ void ps2mouse_restore_defaults()
ps2mouse_data_reporting_enabled = 0;
ps2mouse_current_mode = PS2MOUSE_MODE_STREAM;
ps2mouse_prev_mode = PS2MOUSE_MODE_STREAM;
reset_accumulators();
}
void ps2mouse_reset(void)
@@ -142,7 +151,7 @@ uint8_t ps2mouse_read(uint8_t* result, uint8_t timeout_ms)
delay_us(CLKHALF);
PS2MOUSE_DATA_HI();
*result = data & 0x00FF;
*result = data & 0xFF;
return 0;
}
@@ -212,16 +221,32 @@ uint8_t ps2mouse_write(uint8_t data, uint8_t delay_start, uint8_t timeout_ms)
return 0;
}
void ps2mouse_host_req_reply(uint8_t cmd)
void ps2mouse_host_req_reply(uint8_t cmd, mouse_event* mevent)
{
uint8_t first_byte = 0;
if(cmd == 0xFF) // reset
{
ps2mouse_reset();
PS2MOUSE_SENDACK();
ps2mouse_write(0xAA, 0, 250);
ps2mouse_write(0, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
return;
}
if(cmd == 0xEC) // reset wrap mode
{
ps2mouse_current_mode = ps2mouse_prev_mode;
reset_accumulators();
PS2MOUSE_SENDACK();
return;
}
if(ps2mouse_current_mode == PS2MOUSE_MODE_WRAP)
{
ps2mouse_write(cmd, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
return;
}
switch (cmd)
{
case 0xFF: //reset
ps2mouse_reset();
PS2MOUSE_SENDACK();
ps2mouse_write(0xAA, 0, 250);
ps2mouse_write(0, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
break;
case 0xFE: //resend
PS2MOUSE_SENDACK();
break;
@@ -231,14 +256,17 @@ void ps2mouse_host_req_reply(uint8_t cmd)
break;
case 0xF5: //disable data reporting
ps2mouse_data_reporting_enabled = 0;
reset_accumulators();
PS2MOUSE_SENDACK();
break;
case 0xF4: //enable data reporting
ps2mouse_data_reporting_enabled = 1;
reset_accumulators();
PS2MOUSE_SENDACK();
break;
case 0xF3: //set sampling rate
PS2MOUSE_SENDACK();
reset_accumulators();
if(ps2mouse_read(&ps2mouse_sampling_rate, 30) == 0)
{
sample_rate_history[sample_rate_history_index] = ps2mouse_sampling_rate;
@@ -248,6 +276,7 @@ void ps2mouse_host_req_reply(uint8_t cmd)
}
break;
case 0xF2: //get device id
reset_accumulators();
PS2MOUSE_SENDACK();
mouse_device_id = 0; // standard ps/2 mouse
if (sample_rate_history_index > 2 && sample_rate_history[sample_rate_history_index-1] == 80 && sample_rate_history[sample_rate_history_index-2] == 100 && sample_rate_history[sample_rate_history_index-3] == 200)
@@ -255,6 +284,7 @@ void ps2mouse_host_req_reply(uint8_t cmd)
ps2mouse_write(mouse_device_id, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
break;
case 0xF0: // set remote mode
reset_accumulators();
ps2mouse_prev_mode = ps2mouse_current_mode;
ps2mouse_current_mode = PS2MOUSE_MODE_REMOTE;
PS2MOUSE_SENDACK();
@@ -263,27 +293,44 @@ void ps2mouse_host_req_reply(uint8_t cmd)
if(ps2mouse_current_mode != PS2MOUSE_MODE_WRAP)
ps2mouse_prev_mode = ps2mouse_current_mode;
ps2mouse_current_mode = PS2MOUSE_MODE_WRAP;
PS2MOUSE_SENDACK();
break;
case 0xEC: // reset wrap mode
ps2mouse_current_mode = ps2mouse_prev_mode;
reset_accumulators();
PS2MOUSE_SENDACK();
break;
case 0xEB: // read data
PS2MOUSE_SENDACK();
// do stuff
reset_accumulators();
break;
case 0xEA: // set stream mode
ps2mouse_prev_mode = ps2mouse_current_mode;
ps2mouse_current_mode = PS2MOUSE_MODE_STREAM;
reset_accumulators();
PS2MOUSE_SENDACK();
break;
case 0xE9: // status request
PS2MOUSE_SENDACK();
if(ps2mouse_current_mode == PS2MOUSE_MODE_REMOTE)
first_byte |= 0x40;
if(ps2mouse_data_reporting_enabled)
first_byte |= 0x20;
if(ps2mouse_scale == 2)
first_byte |= 0x10;
if(mevent->button_left)
first_byte |= 0x4;
if(mevent->button_middle)
first_byte |= 0x2;
if(mevent->button_right)
first_byte |= 0x1;
ps2mouse_write(first_byte, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
ps2mouse_write(ps2mouse_resolution, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
ps2mouse_write(ps2mouse_sampling_rate, 0, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
reset_accumulators();
break;
case 0xE8: // set resolution
PS2MOUSE_SENDACK();
if(ps2mouse_read(&ps2mouse_resolution, 30) == 0)
PS2MOUSE_SENDACK();
reset_accumulators();
break;
case 0xE6: // reset scale
PS2MOUSE_SENDACK();
@@ -293,9 +340,6 @@ void ps2mouse_host_req_reply(uint8_t cmd)
PS2MOUSE_SENDACK();
ps2mouse_scale = 2;
break;
// case 0xEE: //echo
// ps2mouse_write(0xEE, 1, PS2MOUSE_WRITE_DEFAULT_TIMEOUT_MS);
// break;
default:
PS2MOUSE_SENDACK();
}
@@ -303,10 +347,19 @@ void ps2mouse_host_req_reply(uint8_t cmd)
uint8_t ps2mouse_send_update(mouse_event* this_event)
{
while(ps2mouse_get_bus_status() != PS2_BUS_IDLE)
if(ps2mouse_current_mode == PS2MOUSE_MODE_REMOTE)
{
x_accumulator += (uint8_t)(this_event->movement_x);
y_accumulator += (uint8_t)(this_event->movement_y);
scroll_accumulator += (uint8_t)(this_event->scroll_vertical);
return 0;
}
if(ps2mouse_current_mode == PS2MOUSE_MODE_WRAP)
return 1;
if(ps2mouse_data_reporting_enabled == 0)
return 2;
if(ps2mouse_get_bus_status() != PS2_BUS_IDLE)
return 3;
memset(ps2mouse_out_buf, 0, PS2MOUSE_PACKET_SIZE_INTELLIMOUSE);
ps2mouse_out_buf[0] = 0x8; // bit 3 is always 1
// https://wiki.osdev.org/PS/2_Mouse

View File

@@ -3,7 +3,7 @@ import sys
import time
import spidev
import threading
import RPi.GPIO as GPIO
# import RPi.GPIO as GPIO
from usb4vc_oled import oled_display_queue
@@ -21,9 +21,9 @@ HAVE TO ASSERT BOOT0 THE WHOLE TIME
"""
SLAVE_REQ_PIN = 16
GPIO.setmode(GPIO.BCM)
GPIO.setup(SLAVE_REQ_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(SLAVE_REQ_PIN, GPIO.RISING)
# GPIO.setmode(GPIO.BCM)
# GPIO.setup(SLAVE_REQ_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
# GPIO.add_event_detect(SLAVE_REQ_PIN, GPIO.RISING)
pcard_spi = spidev.SpiDev(0, 0)
pcard_spi.max_speed_hz = 2000000
@@ -159,14 +159,14 @@ def raw_input_event_worker():
mouse_spi_packet_dict.clear()
pcard_spi.xfer(to_transfer)
if GPIO.event_detected(SLAVE_REQ_PIN):
slave_result = None
for x in range(2):
slave_result = pcard_spi.xfer(make_spi_msg_ack())
print(slave_result)
if slave_result[SPI_BUF_INDEX_MAGIC] == SPI_MISO_MAGIC and slave_result[SPI_BUF_INDEX_MSG_TYPE] == SPI_MISO_MSG_KB_LED_REQ:
change_kb_led(slave_result[3])
change_kb_led(slave_result[3])
# if GPIO.event_detected(SLAVE_REQ_PIN):
# slave_result = None
# for x in range(2):
# slave_result = pcard_spi.xfer(make_spi_msg_ack())
# print(slave_result)
# if slave_result[SPI_BUF_INDEX_MAGIC] == SPI_MISO_MAGIC and slave_result[SPI_BUF_INDEX_MSG_TYPE] == SPI_MISO_MSG_KB_LED_REQ:
# change_kb_led(slave_result[3])
# change_kb_led(slave_result[3])
def usb_device_scan_worker():
print("usb_device_scan_worker started")