single byte mapping working

This commit is contained in:
dekunukem
2022-06-27 14:34:22 +01:00
parent fba6991d4d
commit e9d819a029
15 changed files with 591 additions and 412 deletions

View File

@@ -13,6 +13,12 @@
#define M0110A_TIMEOUT 3
#define M0110A_KB_TO_PC_CMD_BUF_SIZE 4
#define LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE 128
#define CODE_UNUSED 0
#define CODE_HANDLE_SEPARATELY 0xff
extern const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE];
typedef struct
{

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

@@ -27,10 +27,9 @@ Project File Date: 06/24/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'apple_all'
compiling m0110a.c...
compiling main.c...
linking...
Program Size: Code=10624 RO-data=392 RW-data=68 ZI-data=2164
Program Size: Code=10632 RO-data=520 RW-data=68 ZI-data=2164
FromELF: creating hex file...
"apple_all\apple_all.axf" - 0 Error(s), 0 Warning(s).

View File

@@ -11,7 +11,7 @@
:10009000E70000080D1B00081D1B0008E700000812
:1000A000E700000835170008E7000008E70000082F
:1000B000E7000008E7000008E7000008E700000884
:1000C0000348854600F090F8004800475126000894
:1000C0000348854600F090F800480047592600088C
:1000D000B80800200448804704480047FEE7FEE7D0
:1000E000FEE7FEE7FEE7FEE7A11A0008C1000008F0
:1000F00030B50B46014600202022012409E00D46C0
@@ -31,7 +31,7 @@
:1001D00000902046641E0028DFDC019B0098294621
:1001E000324607B0F0BD0000064C0125064E05E082
:1001F000E36807CC2B430C3C98471034B442F7D348
:10020000FFF762FFE82A0008082B000810B5202A33
:10020000FFF762FF702B0008902B000810B5202A22
:1002100004DB0146203A9140002010BD914020238C
:100220009C1A0346E3401943904010BD70B500246A
:10023000014620314A78022A03D004218163012437
@@ -114,10 +114,10 @@
:1007000009028843E9680843606000F02DF86168D9
:10071000084A0906090F515CC840074908600020D3
:10072000FFF790FE0020F8BD0020024000100240BC
:1007300088130000CF2A0008340000200148006818
:1007300088130000572B000834000020014800688F
:1007400070470000340000200448054900684968EB
:10075000044A4905490F515CC840704734000020E5
:1007600000100240DF2A000830B516A30FCB89B075
:1007600000100240672B000830B516A30FCB89B0EC
:100770006C460FC417A30FCB0FC41A494A680C204C
:10078000144604401848042C05D0184B082C04D0FB
:100790000C2C00D1184609B030BD9402240F6D46D0
@@ -233,7 +233,7 @@
:100E70002846F0BD45170008D91700087B17000861
:100E80000D18000870B501220926D503F60629467B
:100E90003046FFF7B2FA0F4C2078DE2802D00E4918
:100EA0000120C8700B4801F0EDFCA078032805D1A3
:100EA0000120C8700B4801F0F1FCA078032805D19F
:100EB0000121002249030948FFF79FFA054A202330
:100EC000D11A0748FFF774FF002229463046FFF782
:100ED00094FA70BD70020020140000200008004841
@@ -300,9 +300,9 @@
:1012A0000169C943890609D4C168C943890605D4BF
:1012B0002021C94301612046FFF73FFE70BD704702
:1012C00070470000F8B5344C07462068334E87421B
:1012D00045D1E06801F0B9FA05002ED00021695E21
:1012D00045D1E06801F0BDFA05002ED00021695E1D
:1012E000304600F0B1FF02213046695E1C3000F04C
:1012F000ABFFE06801F0B4FA284800F0E5FFB06108
:1012F000ABFFE06801F0B8FA284800F0E5FFB06104
:1013000026481C3000F0E0FF244A1C329061B0698E
:1013100000F0ACFF61680968C862906900F0A6FF40
:10132000A1680968C862002D19D0AA79FF21092097
@@ -310,9 +310,9 @@
:1013400083FF164800211C3000F07EFFD4E72A7A84
:10135000002A01D0002200E00122FFF74EF8606869
:10136000874209D1B069002806D00C4802DD01F09F
:10137000F2FA01E001F0E6FAA068874208D10748D6
:101380001C308069002803D0054802DD01F0E3FA33
:10139000F8BD01F0D7FAF8BD040000204400002099
:10137000F6FA01E001F0EAFAA068874208D10748CE
:101380001C308069002803D0054802DD01F0E7FA2F
:10139000F8BD01F0DBFAF8BD040000204400002095
:1013A00060000020704770B5040005D02546603508
:1013B000687A002802D006E0012070BD0020287263
:1013C000204600F027F82420687220680168490848
@@ -551,8 +551,8 @@
:10225000017D491CC9B20175022901D30021017514
:1022600070470902014308B270470000002800DAF5
:102270004042002801DD282802DBFF20F5307047AE
:1022800001494000085A7047442A000800B5014639
:1022900000F0A6FA411800F0A3FA8842FBD300BD73
:1022800001494000085A70474C2A000800B5014631
:1022900000F0AAFA411800F0A7FA8842FBD300BD6B
:1022A00010B502490860FEF7D5FE10BD0000002001
:1022B00013B50A23012269460248FFF7D1F80098B6
:1022C0001CBD0000E001002010B500210A465300AB
@@ -560,137 +560,146 @@
:1022E0004018401010BD10B50C46034600F01FF812
:1022F000002801D0012010BD19785868445419787D
:10230000986842541878401C4007400F187000200D
:1023100010BD10B50446082000F02CFA60600820BB
:1023200000F028FAA060204600F025F810BD4178A2
:1023100010BD10B50446082000F030FA60600820B7
:1023200000F02CFAA060204600F025F810BD41789E
:102330000078401C4007400F814201D101207047C6
:102340000020704710B543780478A34201D10120E2
:1023500010BD4468E35C0B7081684078085C1070C5
:10236000002010BD41780278914203D0491C4907F2
:10237000490F4170704710B504460020207060700E
:1023800008216068FDF7F4FE0821A068FDF7F0FE63
:1023900010BD000070B5264C2079002834D0FEF71F
:1023900010BD000070B5224C2079002838D0FEF71F
:1023A00033F8A1680025401AFA2803D97B2000F0F1
:1023B00013F928E02079002826D01D480C3000F0C1
:1023C00058F800281DD0207900281DD0184A194837
:1023D000921D511EFFF7B6FF002815D114480C308E
:1023E00000F06EF8A07900280FD0114871210C3050
:1023F00000F022F80E4879210C3000F01DF80D2174
:102400000EE000F00FF9257170BD0948F1210C3084
:1024100000F012F8064879210C3000F00DF88D21FB
:1024200003480C3000F008F80248FFF79BFFE8E78C
:10243000140000209002002000B50B46024600F078
:1024400020F8002801D0012000BD117850684354C5
:102450001078401C8007800F1070002000BD10B560
:102460000446042000F086F96060204600F028F859
:1024700010BD41780078814201D1012070470020D1
:10248000704741780078401C8007800F814201D15D
:102490000120704700207047427803789A4201D1AA
:1024A000012070474068805C0870002070474178C8
:1024B0000278914203D0491C8907890F4170704707
:1024C00010B500210170417040680421FDF750FEF5
:1024D00010BD000070B5FDF797FF0446084D07E0FA
:1024E00002212846FDF780FF002801D0012070BDA1
:1024F000FDF78AFF001B0A28F2D3022070BD0000FE
:1025000000040048F8B50025114E0746802400223B
:1025100001213046FDF771FFB420FFF7B7FE01221D
:1025200011463046FDF769FF5020FFF7AFFE02214C
:102530003046FDF759FF012800D1254364088C205F
:10254000FFF7A4FE002CE2D13D700020F8BD000092
:102550000004004870B50C460546FFF7BBFF012894
:1025600005D02846FFF7CEFF204600F051FA70BD97
:1025700010B54B21C9001648FFF7ECFF144C641E40
:10258000A070002823D16078102806D014280AD023
:10259000162813D0362813D015E001202071FDF73E
:1025A00033FFA0600FE00A480B30FFF762FF0028FE
:1025B00001D07B2005E000F035F804E00B2000E0BE
:1025C0007D2000F009F8617802A0FFF7AFFC10BD94
:1025D0001500002061257800F8B50724104E074645
:1025E00001252846A040384201D0012200E0002207
:1025F00002213046FDF701FF002201213046FDF7A0
:10260000FCFEA020FFF742FE012211463046FDF7F6
:10261000F4FEAA20FFF73AFE641EE2D50020F8BDC2
:102620000004004808B569460748FFF735FF06482B
:10263000FFF73DFF68460078FFF7CEFF6846017858
:1026400002A0FFF773FC08BD20000020622578007F
:102650001CB5FDF7E7FEFFF7EDF9FEF767FFFEF7A4
:10266000DFFFFFF725F8FEF7F9FF34480024344E6A
:1026700084603149C6602F25046122C080270C3058
:1026800090C01C38FEF77EFC002800D0FEE72B48E7
:102690002C494030846022C08460C4602A490461AF
:1026A00041600838FEF76EFC002800D0FEE72348A2
:1026B0002649403884608761C660046122C00838BA
:1026C000FEF760FC002800D0FEE701200094019096
:1026D0001F4C002322781F491FA0FFF727FC174833
:1026E0008038FFF7DDFD20460C30FFF7B8FE1F48AD
:1026F000FFF70FFE2046143000F092F81B4820210F
:102700004038FDF735FD194A0C482023203AD11AEC
:10271000E438FEF74DFB164DE078002801D000F0BC
:102720003BF901212846FDF75FFE0028F4D0FFF7B2
:102730001FFFFFF72FFEEFE700440140600100207C
:10274000FFFF00000048014010270000002000406B
:1027500014000020942A000825730A726576256407
:10276000207625642E25642E25640A009002002020
:1027700000040048F0B50B30C108C900144F002612
:10278000144A0FE003688B420BD38B4205D95C1AC5
:102790004318456830C3083B00E04368136002C03B
:1027A00004E0021D10680028ECD13046002803D157
:1027B0003868002801D00020F0BD064A06481060A5
:1027C000064A121AD208D20044C001203860D7E766
:1027D000400000203C000020BC020020B804002083
:1027E000024800680068406A70470000000000204E
:1027F00010B50B46044600F01DF8002801D001205A
:1028000010BD20780C226168504308181946FDF766
:1028100096FC2078401C0007000F2070002010BD9F
:1028200010B50446C020FFF7A5FF6060204600F009
:1028300020F810BD41780078401C0007000F81424D
:1028400001D1012070470020704741780278914201
:1028500001D10020704740680C2251434018704756
:1028600041780278914203D0491C0907090F417051
:10287000704710B50021017041704068C021FDF71C
:1028800077FC10BD70B504468078092824D008284C
:1028900042D001283FD120212848FDF769FC274874
:1028A000CD21017061784170802585700321C17050
:1028B00023490822097801710021417181710121A8
:1028C000C171002104465834635C002B32D0022BC6
:1028D00029D0012B29D02BE061792079FFF7C1FCA9
:1028E000164A4C321080E179A079FFF7BAFC50808B
:1028F000207A124940429080607B9071A07B1072D8
:10290000E07BD071207C5072607C90720C484C311E
:102910001430FFF76DFF70BD0848A279217940306F
:10292000FFF7E1FC70BD815402E00B462B4383545A
:10293000521CD2B2491C1029C6DB70BD50020020C7
:102940001400002010B5817B491E8907890F81730F
:1029500000F00AF810BD10B5817B491C8907890F6A
:10296000817300F001F810BD70B50446807B094901
:102970000D5CA1882068EA0700D00122FDF73DFD2B
:10298000A807A189A06801D5012200E00022FDF777
:1029900034FD70BD402A000811A0FFF7C7FA134D9F
:1029A0000024295D12A0FFF7C1FA641C202CF8DB7B
:1029B00010A0FFF7BBFA134D002408212846FDF7AD
:1029C00018FD6420FDF756FC641C642CF5DBBFF396
:1029D0004F8F0E490C48C860BFF34F8F00BFFDE713
:1029E000535049204552524F520A000070020020B5
:1029F000256420000A7265626F6F74696E672E2EFF
:102A00002E0A0000000400480400FA0500ED00E072
:102A100070B50546FDF7F8FC0446084EFDF7F4FCDA
:102A2000001BA84201D9032070BD02213046FDF7EA
:102A3000DBFC0128F2D1002070BD0000000400483A
:102A400000010302F401D4300528DE22361F601C89
:102A50000F1A1A186716E81492135B1240113C10F3
:102A60004B0F6B0E990DD30C1A0C6A0BC30A240A78
:102A70008D09FC087208ED076D07F3067C060A064F
:102A80009C053105CA0466040504A6034B03F20243
:102A90009B0246025553423456432050726F746F66
:102AA000636F6C20426F6172640A4170706C6520C4
:102AB0004C6973612C204D61632026204144420AF9
:102AC00064656B754E756B656D2032303232000077
:102AD00000000000000000010203040607080900CE
:102AE0000000000102030400082B00080000002081
:102AF000440000004C1F00084C2B0008440000203C
:102B0000740800005C1F00080000000000000000C6
:102B100000000000000000000000000000000000B5
:102B200000000000000000000000000000000000A5
:102B300000000000000000000000000000127A0009
:0C2B400000000000000000000000000089
:1023B0000DF930E0207900282AD019480C3000F0BF
:1023C00052F8002825D02079002821D0144A154839
:1023D000921D511EFFF7B6FF002819D110480C308E
:1023E00000F068F8607980280FD20F49095C002955
:1023F0000BD0FF2909D0A07900280ED008480C3056
:1024000000F014F800F012F925710648FFF7AAFF52
:1024100070BD00F00BF9257170BD80200143EDE720
:102420001400002090020020D72A000800B50B46B7
:10243000024600F020F8002801D0012000BD1178EC
:10244000506843541078401C8007800F10700020A3
:1024500000BD10B50446042000F090F960602046ED
:1024600000F028F810BD41780078814201D10120A8
:1024700070470020704741780078401C8007800F2B
:10248000814201D1012070470020704742780378D3
:102490009A4201D1012070474068805C087000209A
:1024A000704741780278914203D0491C8907890F0F
:1024B0004170704710B500210170417040680421DF
:1024C000FDF756FE10BD000070B5FDF79DFF0446F8
:1024D000084D07E002212846FDF786FF002801D0BD
:1024E000012070BDFDF790FF001B0A28F2D30220E7
:1024F00070BD000000040048F8B50025114E0746E5
:102500008024002201213046FDF777FFB420FFF739
:10251000BDFE012211463046FDF76FFF5020FFF748
:10252000B5FE02213046FDF75FFF012800D12543AB
:1025300064088C20FFF7AAFE002CE2D13D70002039
:10254000F8BD00000004004870B50C460546FFF7D2
:10255000BBFF012805D02846FFF7CEFF204600F03C
:102560005BFA70BD10B54B21C9001648FFF7ECFFB0
:10257000144C641EA070002823D16078102806D067
:1025800014280AD0162813D0362813D015E00120BD
:102590002071FDF739FFA0600FE00A480B30FFF70C
:1025A00062FF002801D07B2005E000F03FF804E046
:1025B0000B2000E07D2000F009F8617802A0FFF711
:1025C000B5FC10BD1500002072257800F8B5164E38
:1025D0000746012211463046FDF70FFFC82000F0E4
:1025E0001BFA03281FD0072401252846A0403842A3
:1025F00001D0012200E0002202213046FDF7FDFE5D
:10260000002201213046FDF7F8FEA020FFF73EFE34
:10261000012211463046FDF7F0FEAA20FFF736FEF4
:10262000641EE2D50020F8BD0004004808B56946E4
:102630000748FFF72BFF0648FFF733FF684600788F
:10264000FFF7C4FF6846017802A0FFF76FFC08BDE2
:1026500020000020772578001CB5FDF7E3FEFFF78A
:10266000E9F9FEF763FFFEF7DBFFFFF721F8FEF75E
:10267000F5FF34480024344E84603149C6602F256C
:10268000046122C080270C3090C01C38FEF77AFC11
:10269000002800D0FEE72B482C494030846022C03F
:1026A0008460C4602A49046141600838FEF76AFC0E
:1026B000002800D0FEE7234826494038846087611F
:1026C000C660046122C00838FEF75CFC002800D018
:1026D000FEE70120009401901F4C002322781F493F
:1026E0001FA0FFF723FC17488038FFF7D9FD2046CD
:1026F0000C30FFF7AEFE1F48FFF70BFE20461430EC
:1027000000F092F81B4820214038FDF731FD194AAE
:102710000C482023203AD11AE438FEF749FB164D25
:10272000E078002801D000F03BF901212846FDF7B0
:102730005BFE0028F4D0FFF715FFFFF72BFEEFE755
:102740000044014060010020FFFF000000480140FC
:102750001027000000200040140000209C2A0008E0
:1027600025730A7265762564207625642E25642EED
:1027700025640A009002002000040048F0B50B30E8
:10278000C108C900144F0026144A0FE003688B42A9
:102790000BD38B4205D95C1A4318456830C3083BFC
:1027A00000E04368136002C004E0021D10680028C6
:1027B000ECD13046002803D13868002801D0002031
:1027C000F0BD064A06481060064A121AD208D20026
:1027D00044C001203860D7E7400000203C000020C2
:1027E000BC020020B8040020024800680068406A6B
:1027F000704700000000002010B50B46044600F0B2
:102800001DF8002801D0012010BD20780C2261683D
:10281000504308181946FDF792FC2078401C000729
:10282000000F2070002010BD10B50446C020FFF737
:10283000A5FF6060204600F020F810BD41780078C8
:10284000401C0007000F814201D101207047002089
:10285000704741780278914201D10020704740686A
:102860000C2251434018704741780278914203D0BE
:10287000491C0907090F4170704710B5002101700C
:1028800041704068C021FDF773FC10BD70B504466F
:102890008078092824D0082842D001283FD120215F
:1028A0002848FDF765FC2748CD210170617841700B
:1028B000802585700321C1702349082209780171A0
:1028C0000021417181710121C171002104465834F8
:1028D000635C002B32D0022B29D0012B29D02BE0B6
:1028E00061792079FFF7BDFC164A4C321080E179FE
:1028F000A079FFF7B6FC5080207A124940429080C0
:10290000607B9071A07B1072E07BD071207C507254
:10291000607C90720C484C311430FFF76DFF70BD35
:102920000848A27921794030FFF7DDFC70BD815461
:1029300002E00B462B438354521CD2B2491C10298F
:10294000C6DB70BD500200201400002010B5817B52
:10295000491E8907890F817300F00AF810BD10B570
:10296000817B491C8907890F817300F001F810BD34
:1029700070B50446807B09490D5CA1882068EA0790
:1029800000D00122FDF739FDA807A189A06801D573
:10299000012200E00022FDF730FD70BD482A00084A
:1029A00011A0FFF7C3FA134D0024295D12A0FFF711
:1029B000BDFA641C202CF8DB10A0FFF7B7FA134D0A
:1029C000002408212846FDF714FD6420FDF752FC81
:1029D000641C642CF5DBBFF34F8F0E490C48C860B4
:1029E000BFF34F8F00BFFDE7535049204552524F70
:1029F000520A000070020020256420000A726562FD
:102A00006F6F74696E672E2E2E0A00000004004856
:102A10000400FA0500ED00E070B50546FDF7F4FC92
:102A20000446084EFDF7F0FC001BA84201D9032024
:102A300070BD02213046FDF7D7FC0128F2D10020FD
:102A400070BD00000004004800010302F401D4300E
:102A50000528DE22361F601C0F1A1A186716E814A4
:102A600092135B1240113C104B0F6B0E990DD30C5F
:102A70001A0C6A0BC30A240A8D09FC087208ED07B8
:102A80006D07F3067C060A069C053105CA04660438
:102A90000504A6034B03F2029B024602555342343F
:102AA00056432050726F746F636F6C20426F617277
:102AB000640A4170706C65204C6973612C204D6113
:102AC000632026204144420A64656B754E756B6530
:102AD0006D20323032320000002527292B2F2D3572
:102AE00039333B37316761191B1D1F232141453F96
:102AF00047433D4975010305070B094D514B534FA2
:102B00006571550D0F1113175B5D575F5971FF6F9D
:102B100063FF00000000000000000000FF00FFFF56
:102B2000FFFFFFFFFFFFFFFFFFFFFF0000000000B0
:102B300000000000000000FF75FF006F0000FF00B4
:102B4000FFFF00FF00000000000000000000000088
:102B5000000000006F6F6F00000000000000000127
:102B60000203040607080900000000010203040034
:102B7000902B000800000020440000004C1F0008BB
:102B8000D42B000844000020740800005C1F0008DB
:102B90000000000000000000000000000000000035
:102BA0000000000000000000000000000000000025
:102BB0000000000000000000000000000000000015
:102BC0000000000000127A00000000000000000079
:042BD0000000000001
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [apple_all\apple_all.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image apple_all\apple_all.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Sun Jun 26 23:16:28 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Mon Jun 27 14:28:58 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -831,8 +831,8 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[87]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[8a]"></a>m0100a_handle_inquiry</STRONG> (Thumb, 156 bytes, Stack size 16 bytes, main.o(i.m0100a_handle_inquiry))
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = m0100a_handle_inquiry &rArr; m0110a_write_1b_from_buf &rArr; m0110a_write &rArr; delay_us
<P><STRONG><a name="[8a]"></a>m0100a_handle_inquiry</STRONG> (Thumb, 140 bytes, Stack size 16 bytes, main.o(i.m0100a_handle_inquiry))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = m0100a_handle_inquiry &rArr; m0110a_write_1b_from_buf &rArr; m0110a_write &rArr; wait_for_data_idle
</UL>
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_write
<LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_cmd_buf_reset
@@ -919,7 +919,7 @@ Global Symbols
</UL>
<P><STRONG><a name="[99]"></a>m0110a_update</STRONG> (Thumb, 96 bytes, Stack size 8 bytes, main.o(i.m0110a_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = m0110a_update &rArr; m0110a_read_host_cmd &rArr; m0110a_read &rArr; delay_us
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = m0110a_update &rArr; m0110a_write_1b_from_buf &rArr; m0110a_write &rArr; wait_for_data_idle
</UL>
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_write
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read_host_cmd
@@ -931,10 +931,11 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[8b]"></a>m0110a_write</STRONG> (Thumb, 72 bytes, Stack size 24 bytes, m0110a.o(i.m0110a_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = m0110a_write &rArr; delay_us
<P><STRONG><a name="[8b]"></a>m0110a_write</STRONG> (Thumb, 92 bytes, Stack size 24 bytes, m0110a.o(i.m0110a_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = m0110a_write &rArr; wait_for_data_idle
</UL>
<BR>[Calls]<UL><LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<BR>[Calls]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_data_idle
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[81]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[90]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_write_1b_from_buf
@@ -943,7 +944,7 @@ Global Symbols
</UL>
<P><STRONG><a name="[90]"></a>m0110a_write_1b_from_buf</STRONG> (Thumb, 36 bytes, Stack size 8 bytes, main.o(i.m0110a_write_1b_from_buf))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = m0110a_write_1b_from_buf &rArr; m0110a_write &rArr; delay_us
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = m0110a_write_1b_from_buf &rArr; m0110a_write &rArr; wait_for_data_idle
</UL>
<BR>[Calls]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_write
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_cmd_buf_pop
@@ -1080,7 +1081,8 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read_host_cmd
<BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_write
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;m0110a_read_host_cmd
</UL>
<P>
<H3>

View File

@@ -85,6 +85,7 @@ Section Cross References
main.o(i.m0100a_handle_inquiry) refers to helpers.o(i.kb_buf_pop) for kb_buf_pop
main.o(i.m0100a_handle_inquiry) refers to main.o(.data) for .data
main.o(i.m0100a_handle_inquiry) refers to main.o(.bss) for .bss
main.o(i.m0100a_handle_inquiry) refers to m0110a.o(.constdata) for linux_keycode_to_m0110a_scancode_lookup
main.o(i.m0110a_update) refers to m0110a.o(i.m0110a_read_host_cmd) for m0110a_read_host_cmd
main.o(i.m0110a_update) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
main.o(i.m0110a_update) refers to m0110a.o(i.m0110a_cmd_buf_is_empty) for m0110a_cmd_buf_is_empty
@@ -162,6 +163,7 @@ Section Cross References
m0110a.o(i.m0110a_read_host_cmd) refers to m0110a.o(i.m0110a_read) for m0110a_read
m0110a.o(i.m0110a_read_host_cmd) refers to m0110a.o(i.wait_for_data_idle) for wait_for_data_idle
m0110a.o(i.m0110a_write) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
m0110a.o(i.m0110a_write) refers to m0110a.o(i.wait_for_data_idle) for wait_for_data_idle
m0110a.o(i.m0110a_write) refers to delay_us.o(i.delay_us) for delay_us
m0110a.o(i.wait_for_data_idle) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick
m0110a.o(i.wait_for_data_idle) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
@@ -1612,44 +1614,44 @@ Image Symbol Table
../Src/main.c 0x00000000 Number 0 main.o ABSOLUTE
../Src/stm32f0xx_hal_msp.c 0x00000000 Number 0 stm32f0xx_hal_msp.o ABSOLUTE
../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/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.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/malloc/malloc.c 0x00000000 Number 0 mallocra.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/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 printfa.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE
../clib/microlib/stdio/streams.c 0x00000000 Number 0 stdout.o ABSOLUTE
../clib/microlib/string/memcpy.c 0x00000000 Number 0 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
@@ -1828,38 +1830,39 @@ Image Symbol Table
i.kb_buf_pop 0x08002364 Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08002376 Section 0 helpers.o(i.kb_buf_reset)
i.m0100a_handle_inquiry 0x08002394 Section 0 main.o(i.m0100a_handle_inquiry)
i.m0110a_cmd_buf_add 0x08002438 Section 0 m0110a.o(i.m0110a_cmd_buf_add)
i.m0110a_cmd_buf_init 0x0800245e Section 0 m0110a.o(i.m0110a_cmd_buf_init)
i.m0110a_cmd_buf_is_empty 0x08002472 Section 0 m0110a.o(i.m0110a_cmd_buf_is_empty)
i.m0110a_cmd_buf_is_full 0x08002482 Section 0 m0110a.o(i.m0110a_cmd_buf_is_full)
i.m0110a_cmd_buf_peek 0x08002498 Section 0 m0110a.o(i.m0110a_cmd_buf_peek)
i.m0110a_cmd_buf_pop 0x080024ae Section 0 m0110a.o(i.m0110a_cmd_buf_pop)
i.m0110a_cmd_buf_reset 0x080024c0 Section 0 m0110a.o(i.m0110a_cmd_buf_reset)
i.m0110a_get_line_status 0x080024d4 Section 0 m0110a.o(i.m0110a_get_line_status)
i.m0110a_read 0x08002504 Section 0 m0110a.o(i.m0110a_read)
i.m0110a_read_host_cmd 0x08002554 Section 0 m0110a.o(i.m0110a_read_host_cmd)
i.m0110a_update 0x08002570 Section 0 main.o(i.m0110a_update)
i.m0110a_write 0x080025d8 Section 0 m0110a.o(i.m0110a_write)
i.m0110a_write_1b_from_buf 0x08002624 Section 0 main.o(i.m0110a_write_1b_from_buf)
i.main 0x08002650 Section 0 main.o(i.main)
i.malloc 0x08002774 Section 0 malloc.o(i.malloc)
i.micros 0x080027e0 Section 0 delay_us.o(i.micros)
i.mouse_buf_add 0x080027f0 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x08002820 Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08002834 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x0800284a Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x08002860 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x08002872 Section 0 helpers.o(i.mouse_buf_reset)
i.parse_spi_buf 0x08002884 Section 0 main.o(i.parse_spi_buf)
i.quad_decrement 0x08002944 Section 0 quad_encoder.o(i.quad_decrement)
i.quad_increment 0x08002956 Section 0 quad_encoder.o(i.quad_increment)
i.quad_write 0x08002968 Section 0 quad_encoder.o(i.quad_write)
i.spi_error_dump_reboot 0x08002998 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_data_idle 0x08002a10 Section 0 m0110a.o(i.wait_for_data_idle)
.constdata 0x08002a40 Section 84 quad_encoder.o(.constdata)
.constdata 0x08002a94 Section 59 main.o(.constdata)
.constdata 0x08002acf Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08002adf Section 8 system_stm32f0xx.o(.constdata)
i.m0110a_cmd_buf_add 0x0800242c Section 0 m0110a.o(i.m0110a_cmd_buf_add)
i.m0110a_cmd_buf_init 0x08002452 Section 0 m0110a.o(i.m0110a_cmd_buf_init)
i.m0110a_cmd_buf_is_empty 0x08002466 Section 0 m0110a.o(i.m0110a_cmd_buf_is_empty)
i.m0110a_cmd_buf_is_full 0x08002476 Section 0 m0110a.o(i.m0110a_cmd_buf_is_full)
i.m0110a_cmd_buf_peek 0x0800248c Section 0 m0110a.o(i.m0110a_cmd_buf_peek)
i.m0110a_cmd_buf_pop 0x080024a2 Section 0 m0110a.o(i.m0110a_cmd_buf_pop)
i.m0110a_cmd_buf_reset 0x080024b4 Section 0 m0110a.o(i.m0110a_cmd_buf_reset)
i.m0110a_get_line_status 0x080024c8 Section 0 m0110a.o(i.m0110a_get_line_status)
i.m0110a_read 0x080024f8 Section 0 m0110a.o(i.m0110a_read)
i.m0110a_read_host_cmd 0x08002548 Section 0 m0110a.o(i.m0110a_read_host_cmd)
i.m0110a_update 0x08002564 Section 0 main.o(i.m0110a_update)
i.m0110a_write 0x080025cc Section 0 m0110a.o(i.m0110a_write)
i.m0110a_write_1b_from_buf 0x0800262c Section 0 main.o(i.m0110a_write_1b_from_buf)
i.main 0x08002658 Section 0 main.o(i.main)
i.malloc 0x0800277c Section 0 malloc.o(i.malloc)
i.micros 0x080027e8 Section 0 delay_us.o(i.micros)
i.mouse_buf_add 0x080027f8 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x08002828 Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x0800283c Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x08002852 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x08002868 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x0800287a Section 0 helpers.o(i.mouse_buf_reset)
i.parse_spi_buf 0x0800288c Section 0 main.o(i.parse_spi_buf)
i.quad_decrement 0x0800294c Section 0 quad_encoder.o(i.quad_decrement)
i.quad_increment 0x0800295e Section 0 quad_encoder.o(i.quad_increment)
i.quad_write 0x08002970 Section 0 quad_encoder.o(i.quad_write)
i.spi_error_dump_reboot 0x080029a0 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_data_idle 0x08002a18 Section 0 m0110a.o(i.wait_for_data_idle)
.constdata 0x08002a48 Section 84 quad_encoder.o(.constdata)
.constdata 0x08002a9c Section 59 main.o(.constdata)
.constdata 0x08002ad7 Section 128 m0110a.o(.constdata)
.constdata 0x08002b57 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08002b67 Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 16 quad_encoder.o(.data)
.data 0x20000014 Section 28 main.o(.data)
@@ -2069,42 +2072,43 @@ Image Symbol Table
kb_buf_peek 0x08002345 Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08002365 Thumb Code 18 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002377 Thumb Code 28 helpers.o(i.kb_buf_reset)
m0100a_handle_inquiry 0x08002395 Thumb Code 156 main.o(i.m0100a_handle_inquiry)
m0110a_cmd_buf_add 0x08002439 Thumb Code 38 m0110a.o(i.m0110a_cmd_buf_add)
m0110a_cmd_buf_init 0x0800245f Thumb Code 20 m0110a.o(i.m0110a_cmd_buf_init)
m0110a_cmd_buf_is_empty 0x08002473 Thumb Code 16 m0110a.o(i.m0110a_cmd_buf_is_empty)
m0110a_cmd_buf_is_full 0x08002483 Thumb Code 22 m0110a.o(i.m0110a_cmd_buf_is_full)
m0110a_cmd_buf_peek 0x08002499 Thumb Code 22 m0110a.o(i.m0110a_cmd_buf_peek)
m0110a_cmd_buf_pop 0x080024af Thumb Code 18 m0110a.o(i.m0110a_cmd_buf_pop)
m0110a_cmd_buf_reset 0x080024c1 Thumb Code 18 m0110a.o(i.m0110a_cmd_buf_reset)
m0110a_get_line_status 0x080024d5 Thumb Code 42 m0110a.o(i.m0110a_get_line_status)
m0110a_read 0x08002505 Thumb Code 74 m0110a.o(i.m0110a_read)
m0110a_read_host_cmd 0x08002555 Thumb Code 28 m0110a.o(i.m0110a_read_host_cmd)
m0110a_update 0x08002571 Thumb Code 96 main.o(i.m0110a_update)
m0110a_write 0x080025d9 Thumb Code 72 m0110a.o(i.m0110a_write)
m0110a_write_1b_from_buf 0x08002625 Thumb Code 36 main.o(i.m0110a_write_1b_from_buf)
main 0x08002651 Thumb Code 232 main.o(i.main)
malloc 0x08002775 Thumb Code 92 malloc.o(i.malloc)
micros 0x080027e1 Thumb Code 10 delay_us.o(i.micros)
mouse_buf_add 0x080027f1 Thumb Code 48 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x08002821 Thumb Code 20 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08002835 Thumb Code 22 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x0800284b Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x08002861 Thumb Code 18 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x08002873 Thumb Code 18 helpers.o(i.mouse_buf_reset)
parse_spi_buf 0x08002885 Thumb Code 184 main.o(i.parse_spi_buf)
quad_decrement 0x08002945 Thumb Code 18 quad_encoder.o(i.quad_decrement)
quad_increment 0x08002957 Thumb Code 18 quad_encoder.o(i.quad_increment)
quad_write 0x08002969 Thumb Code 44 quad_encoder.o(i.quad_write)
spi_error_dump_reboot 0x08002999 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_data_idle 0x08002a11 Thumb Code 42 m0110a.o(i.wait_for_data_idle)
grey_code_lookup 0x08002a40 Data 4 quad_encoder.o(.constdata)
arr_lookup 0x08002a44 Data 80 quad_encoder.o(.constdata)
boot_message 0x08002a94 Data 59 main.o(.constdata)
AHBPrescTable 0x08002acf Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08002adf Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002ae8 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002b08 Number 0 anon$$obj.o(Region$$Table)
m0100a_handle_inquiry 0x08002395 Thumb Code 140 main.o(i.m0100a_handle_inquiry)
m0110a_cmd_buf_add 0x0800242d Thumb Code 38 m0110a.o(i.m0110a_cmd_buf_add)
m0110a_cmd_buf_init 0x08002453 Thumb Code 20 m0110a.o(i.m0110a_cmd_buf_init)
m0110a_cmd_buf_is_empty 0x08002467 Thumb Code 16 m0110a.o(i.m0110a_cmd_buf_is_empty)
m0110a_cmd_buf_is_full 0x08002477 Thumb Code 22 m0110a.o(i.m0110a_cmd_buf_is_full)
m0110a_cmd_buf_peek 0x0800248d Thumb Code 22 m0110a.o(i.m0110a_cmd_buf_peek)
m0110a_cmd_buf_pop 0x080024a3 Thumb Code 18 m0110a.o(i.m0110a_cmd_buf_pop)
m0110a_cmd_buf_reset 0x080024b5 Thumb Code 18 m0110a.o(i.m0110a_cmd_buf_reset)
m0110a_get_line_status 0x080024c9 Thumb Code 42 m0110a.o(i.m0110a_get_line_status)
m0110a_read 0x080024f9 Thumb Code 74 m0110a.o(i.m0110a_read)
m0110a_read_host_cmd 0x08002549 Thumb Code 28 m0110a.o(i.m0110a_read_host_cmd)
m0110a_update 0x08002565 Thumb Code 96 main.o(i.m0110a_update)
m0110a_write 0x080025cd Thumb Code 92 m0110a.o(i.m0110a_write)
m0110a_write_1b_from_buf 0x0800262d Thumb Code 36 main.o(i.m0110a_write_1b_from_buf)
main 0x08002659 Thumb Code 232 main.o(i.main)
malloc 0x0800277d Thumb Code 92 malloc.o(i.malloc)
micros 0x080027e9 Thumb Code 10 delay_us.o(i.micros)
mouse_buf_add 0x080027f9 Thumb Code 48 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x08002829 Thumb Code 20 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x0800283d Thumb Code 22 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x08002853 Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x08002869 Thumb Code 18 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x0800287b Thumb Code 18 helpers.o(i.mouse_buf_reset)
parse_spi_buf 0x0800288d Thumb Code 184 main.o(i.parse_spi_buf)
quad_decrement 0x0800294d Thumb Code 18 quad_encoder.o(i.quad_decrement)
quad_increment 0x0800295f Thumb Code 18 quad_encoder.o(i.quad_increment)
quad_write 0x08002971 Thumb Code 44 quad_encoder.o(i.quad_write)
spi_error_dump_reboot 0x080029a1 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_data_idle 0x08002a19 Thumb Code 42 m0110a.o(i.wait_for_data_idle)
grey_code_lookup 0x08002a48 Data 4 quad_encoder.o(.constdata)
arr_lookup 0x08002a4c Data 80 quad_encoder.o(.constdata)
boot_message 0x08002a9c Data 59 main.o(.constdata)
linux_keycode_to_m0110a_scancode_lookup 0x08002ad7 Data 128 m0110a.o(.constdata)
AHBPrescTable 0x08002b57 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08002b67 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08002b70 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08002b90 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
avg_timer 0x20000004 Data 4 quad_encoder.o(.data)
arr_timer_x 0x20000008 Data 4 quad_encoder.o(.data)
@@ -2148,129 +2152,129 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002b4c, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002bd4, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002b08, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002b90, 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 3687 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3989 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3992 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3994 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3996 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 3997 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 3999 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4001 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3990 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3694 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 3996 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 3999 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4001 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4003 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 4004 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4006 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4008 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 3997 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o
0x080000f0 0x080000f0 0x0000002c Code RO 3690 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000022 Code RO 3692 .text mc_p.l(llushr.o)
0x0800013e 0x0800013e 0x00000024 Code RO 3694 .text mc_p.l(memcpya.o)
0x08000162 0x08000162 0x00000024 Code RO 3696 .text mc_p.l(memseta.o)
0x08000186 0x08000186 0x00000060 Code RO 4004 .text mc_p.l(uldiv.o)
0x080000f0 0x080000f0 0x0000002c Code RO 3697 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000022 Code RO 3699 .text mc_p.l(llushr.o)
0x0800013e 0x0800013e 0x00000024 Code RO 3701 .text mc_p.l(memcpya.o)
0x08000162 0x08000162 0x00000024 Code RO 3703 .text mc_p.l(memseta.o)
0x08000186 0x08000186 0x00000060 Code RO 4011 .text mc_p.l(uldiv.o)
0x080001e6 0x080001e6 0x00000002 PAD
0x080001e8 0x080001e8 0x00000024 Code RO 4019 .text mc_p.l(init.o)
0x0800020c 0x0800020c 0x00000020 Code RO 4021 .text mc_p.l(llshl.o)
0x0800022c 0x0800022c 0x00000048 Code RO 3134 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x08000274 0x08000274 0x0000001c Code RO 2463 i.HAL_Delay stm32f0xx_hal.o
0x08000290 0x08000290 0x00000158 Code RO 3072 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x080003e8 0x080003e8 0x0000000a Code RO 3074 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x080003f2 0x080003f2 0x00000008 Code RO 3075 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x080003fa 0x080003fa 0x0000000c Code RO 3076 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080001e8 0x080001e8 0x00000024 Code RO 4026 .text mc_p.l(init.o)
0x0800020c 0x0800020c 0x00000020 Code RO 4028 .text mc_p.l(llshl.o)
0x0800022c 0x0800022c 0x00000048 Code RO 3141 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x08000274 0x08000274 0x0000001c Code RO 2470 i.HAL_Delay stm32f0xx_hal.o
0x08000290 0x08000290 0x00000158 Code RO 3079 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x080003e8 0x080003e8 0x0000000a Code RO 3081 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x080003f2 0x080003f2 0x00000008 Code RO 3082 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x080003fa 0x080003fa 0x0000000c Code RO 3083 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x08000406 0x08000406 0x00000002 PAD
0x08000408 0x08000408 0x0000000c Code RO 2467 i.HAL_GetTick stm32f0xx_hal.o
0x08000414 0x08000414 0x00000010 Code RO 2471 i.HAL_IncTick stm32f0xx_hal.o
0x08000424 0x08000424 0x00000020 Code RO 2472 i.HAL_Init stm32f0xx_hal.o
0x08000444 0x08000444 0x00000022 Code RO 2473 i.HAL_InitTick stm32f0xx_hal.o
0x08000408 0x08000408 0x0000000c Code RO 2474 i.HAL_GetTick stm32f0xx_hal.o
0x08000414 0x08000414 0x00000010 Code RO 2478 i.HAL_IncTick stm32f0xx_hal.o
0x08000424 0x08000424 0x00000020 Code RO 2479 i.HAL_Init stm32f0xx_hal.o
0x08000444 0x08000444 0x00000022 Code RO 2480 i.HAL_InitTick stm32f0xx_hal.o
0x08000466 0x08000466 0x00000002 PAD
0x08000468 0x08000468 0x00000044 Code RO 516 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080004ac 0x080004ac 0x00000014 Code RO 3229 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080004c0 0x080004c0 0x00000008 Code RO 3233 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080004c8 0x080004c8 0x00000120 Code RO 2383 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080005e8 0x080005e8 0x00000154 Code RO 2281 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x0800073c 0x0800073c 0x0000000c Code RO 2286 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000748 0x08000748 0x00000020 Code RO 2288 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000768 0x08000768 0x00000088 Code RO 2289 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x080007f0 0x080007f0 0x000003d8 Code RO 2292 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000bc8 0x08000bc8 0x00000002 Code RO 662 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000468 0x08000468 0x00000044 Code RO 517 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080004ac 0x080004ac 0x00000014 Code RO 3236 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080004c0 0x080004c0 0x00000008 Code RO 3240 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080004c8 0x080004c8 0x00000120 Code RO 2390 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080005e8 0x080005e8 0x00000154 Code RO 2288 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x0800073c 0x0800073c 0x0000000c Code RO 2293 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000748 0x08000748 0x00000020 Code RO 2295 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000768 0x08000768 0x00000088 Code RO 2296 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x080007f0 0x080007f0 0x000003d8 Code RO 2299 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000bc8 0x08000bc8 0x00000002 Code RO 669 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000bca 0x08000bca 0x00000002 PAD
0x08000bcc 0x08000bcc 0x000000d4 Code RO 665 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000ca0 0x08000ca0 0x000000b8 Code RO 666 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000d58 0x08000d58 0x00000054 Code RO 518 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000dac 0x08000dac 0x00000002 Code RO 672 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000bcc 0x08000bcc 0x000000d4 Code RO 672 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x08000ca0 0x08000ca0 0x000000b8 Code RO 673 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x08000d58 0x08000d58 0x00000054 Code RO 519 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x08000dac 0x08000dac 0x00000002 Code RO 679 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000dae 0x08000dae 0x00000002 PAD
0x08000db0 0x08000db0 0x000000d4 Code RO 677 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000db0 0x08000db0 0x000000d4 Code RO 684 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08000e84 0x08000e84 0x00000060 Code RO 328 i.HAL_SPI_TxRxCpltCallback main.o
0x08000ee4 0x08000ee4 0x00000018 Code RO 3235 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000efc 0x08000efc 0x00000002 Code RO 3236 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000ee4 0x08000ee4 0x00000018 Code RO 3242 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x08000efc 0x08000efc 0x00000002 Code RO 3243 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x08000efe 0x08000efe 0x00000002 PAD
0x08000f00 0x08000f00 0x00000030 Code RO 3237 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000f30 0x08000f30 0x00000008 Code RO 3238 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000f38 0x08000f38 0x00000002 Code RO 1639 i.HAL_TIMEx_BreakCallback stm32f0xx_hal_tim_ex.o
0x08000f3a 0x08000f3a 0x00000002 Code RO 1640 i.HAL_TIMEx_CommutationCallback stm32f0xx_hal_tim_ex.o
0x08000f3c 0x08000f3c 0x00000048 Code RO 1656 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000f84 0x08000f84 0x00000034 Code RO 1000 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000fb8 0x08000fb8 0x0000009c Code RO 520 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001054 0x08001054 0x00000018 Code RO 1003 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x0800106c 0x0800106c 0x000000ee Code RO 1009 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x0800115a 0x0800115a 0x00000002 Code RO 1031 i.HAL_TIM_IC_CaptureCallback stm32f0xx_hal_tim.o
0x0800115c 0x0800115c 0x00000162 Code RO 1044 i.HAL_TIM_IRQHandler stm32f0xx_hal_tim.o
0x080012be 0x080012be 0x00000002 Code RO 1047 i.HAL_TIM_OC_DelayElapsedCallback stm32f0xx_hal_tim.o
0x080012c0 0x080012c0 0x00000002 Code RO 1074 i.HAL_TIM_PWM_PulseFinishedCallback stm32f0xx_hal_tim.o
0x08000f00 0x08000f00 0x00000030 Code RO 3244 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08000f30 0x08000f30 0x00000008 Code RO 3245 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08000f38 0x08000f38 0x00000002 Code RO 1646 i.HAL_TIMEx_BreakCallback stm32f0xx_hal_tim_ex.o
0x08000f3a 0x08000f3a 0x00000002 Code RO 1647 i.HAL_TIMEx_CommutationCallback stm32f0xx_hal_tim_ex.o
0x08000f3c 0x08000f3c 0x00000048 Code RO 1663 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x08000f84 0x08000f84 0x00000034 Code RO 1007 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x08000fb8 0x08000fb8 0x0000009c Code RO 521 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001054 0x08001054 0x00000018 Code RO 1010 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x0800106c 0x0800106c 0x000000ee Code RO 1016 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x0800115a 0x0800115a 0x00000002 Code RO 1038 i.HAL_TIM_IC_CaptureCallback stm32f0xx_hal_tim.o
0x0800115c 0x0800115c 0x00000162 Code RO 1051 i.HAL_TIM_IRQHandler stm32f0xx_hal_tim.o
0x080012be 0x080012be 0x00000002 Code RO 1054 i.HAL_TIM_OC_DelayElapsedCallback stm32f0xx_hal_tim.o
0x080012c0 0x080012c0 0x00000002 Code RO 1081 i.HAL_TIM_PWM_PulseFinishedCallback stm32f0xx_hal_tim.o
0x080012c2 0x080012c2 0x00000002 PAD
0x080012c4 0x080012c4 0x000000e0 Code RO 149 i.HAL_TIM_PeriodElapsedCallback quad_encoder.o
0x080013a4 0x080013a4 0x00000002 Code RO 1085 i.HAL_TIM_TriggerCallback stm32f0xx_hal_tim.o
0x080013a6 0x080013a6 0x0000006c Code RO 1904 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x080013a4 0x080013a4 0x00000002 Code RO 1092 i.HAL_TIM_TriggerCallback stm32f0xx_hal_tim.o
0x080013a6 0x080013a6 0x0000006c Code RO 1911 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x08001412 0x08001412 0x00000002 PAD
0x08001414 0x08001414 0x0000004c Code RO 522 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001460 0x08001460 0x000000c8 Code RO 1912 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001528 0x08001528 0x00000002 Code RO 444 i.HardFault_Handler stm32f0xx_it.o
0x08001414 0x08001414 0x0000004c Code RO 523 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001460 0x08001460 0x000000c8 Code RO 1919 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x08001528 0x08001528 0x00000002 Code RO 445 i.HardFault_Handler stm32f0xx_it.o
0x0800152a 0x0800152a 0x00000002 PAD
0x0800152c 0x0800152c 0x000000f4 Code RO 329 i.MX_GPIO_Init main.o
0x08001620 0x08001620 0x0000003c Code RO 330 i.MX_SPI1_Init main.o
0x0800165c 0x0800165c 0x00000054 Code RO 331 i.MX_TIM2_Init main.o
0x080016b0 0x080016b0 0x00000038 Code RO 332 i.MX_USART1_UART_Init main.o
0x080016e8 0x080016e8 0x00000002 Code RO 445 i.NMI_Handler stm32f0xx_it.o
0x080016e8 0x080016e8 0x00000002 Code RO 446 i.NMI_Handler stm32f0xx_it.o
0x080016ea 0x080016ea 0x00000002 PAD
0x080016ec 0x080016ec 0x00000044 Code RO 3239 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001730 0x08001730 0x00000002 Code RO 446 i.PendSV_Handler stm32f0xx_it.o
0x080016ec 0x080016ec 0x00000044 Code RO 3246 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001730 0x08001730 0x00000002 Code RO 447 i.PendSV_Handler stm32f0xx_it.o
0x08001732 0x08001732 0x00000002 PAD
0x08001734 0x08001734 0x00000010 Code RO 447 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001744 0x08001744 0x00000036 Code RO 684 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x0800177a 0x0800177a 0x0000005e Code RO 685 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080017d8 0x080017d8 0x00000034 Code RO 686 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x0800180c 0x0800180c 0x00000048 Code RO 687 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001854 0x08001854 0x00000052 Code RO 690 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080018a6 0x080018a6 0x00000012 Code RO 693 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080018b8 0x080018b8 0x0000004c Code RO 704 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001904 0x08001904 0x00000096 Code RO 709 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x0800199a 0x0800199a 0x0000008c Code RO 710 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001a26 0x08001a26 0x00000002 Code RO 448 i.SVC_Handler stm32f0xx_it.o
0x08001a28 0x08001a28 0x0000000c Code RO 449 i.SysTick_Handler stm32f0xx_it.o
0x08001734 0x08001734 0x00000010 Code RO 448 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001744 0x08001744 0x00000036 Code RO 691 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x0800177a 0x0800177a 0x0000005e Code RO 692 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x080017d8 0x080017d8 0x00000034 Code RO 693 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x0800180c 0x0800180c 0x00000048 Code RO 694 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001854 0x08001854 0x00000052 Code RO 697 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x080018a6 0x080018a6 0x00000012 Code RO 700 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x080018b8 0x080018b8 0x0000004c Code RO 711 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08001904 0x08001904 0x00000096 Code RO 716 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x0800199a 0x0800199a 0x0000008c Code RO 717 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x08001a26 0x08001a26 0x00000002 Code RO 449 i.SVC_Handler stm32f0xx_it.o
0x08001a28 0x08001a28 0x0000000c Code RO 450 i.SysTick_Handler stm32f0xx_it.o
0x08001a34 0x08001a34 0x0000006a Code RO 333 i.SystemClock_Config main.o
0x08001a9e 0x08001a9e 0x00000002 PAD
0x08001aa0 0x08001aa0 0x0000005c Code RO 3656 i.SystemInit system_stm32f0xx.o
0x08001afc 0x08001afc 0x00000010 Code RO 450 i.TIM14_IRQHandler stm32f0xx_it.o
0x08001b0c 0x08001b0c 0x00000010 Code RO 451 i.TIM16_IRQHandler stm32f0xx_it.o
0x08001b1c 0x08001b1c 0x00000010 Code RO 452 i.TIM17_IRQHandler stm32f0xx_it.o
0x08001b2c 0x08001b2c 0x00000094 Code RO 1086 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001bc0 0x08001bc0 0x00000016 Code RO 1093 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001bd6 0x08001bd6 0x00000010 Code RO 1094 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001be6 0x08001be6 0x00000022 Code RO 1100 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001c08 0x08001c08 0x00000026 Code RO 1102 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001c2e 0x08001c2e 0x000000ca Code RO 1917 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001cf8 0x08001cf8 0x00000074 Code RO 1918 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001d6c 0x08001d6c 0x0000015c Code RO 1933 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001ec8 0x08001ec8 0x00000062 Code RO 1935 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x08001aa0 0x08001aa0 0x0000005c Code RO 3663 i.SystemInit system_stm32f0xx.o
0x08001afc 0x08001afc 0x00000010 Code RO 451 i.TIM14_IRQHandler stm32f0xx_it.o
0x08001b0c 0x08001b0c 0x00000010 Code RO 452 i.TIM16_IRQHandler stm32f0xx_it.o
0x08001b1c 0x08001b1c 0x00000010 Code RO 453 i.TIM17_IRQHandler stm32f0xx_it.o
0x08001b2c 0x08001b2c 0x00000094 Code RO 1093 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08001bc0 0x08001bc0 0x00000016 Code RO 1100 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08001bd6 0x08001bd6 0x00000010 Code RO 1101 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08001be6 0x08001be6 0x00000022 Code RO 1107 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08001c08 0x08001c08 0x00000026 Code RO 1109 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x08001c2e 0x08001c2e 0x000000ca Code RO 1924 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08001cf8 0x08001cf8 0x00000074 Code RO 1925 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x08001d6c 0x08001d6c 0x0000015c Code RO 1940 i.UART_SetConfig stm32f0xx_hal_uart.o
0x08001ec8 0x08001ec8 0x00000062 Code RO 1942 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x08001f2a 0x08001f2a 0x00000002 PAD
0x08001f2c 0x08001f2c 0x00000020 Code RO 3833 i.__0printf$5 mc_p.l(printf5.o)
0x08001f4c 0x08001f4c 0x0000000e Code RO 4031 i.__scatterload_copy mc_p.l(handlers.o)
0x08001f5a 0x08001f5a 0x00000002 Code RO 4032 i.__scatterload_null mc_p.l(handlers.o)
0x08001f5c 0x08001f5c 0x0000000e Code RO 4033 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001f2c 0x08001f2c 0x00000020 Code RO 3840 i.__0printf$5 mc_p.l(printf5.o)
0x08001f4c 0x08001f4c 0x0000000e Code RO 4038 i.__scatterload_copy mc_p.l(handlers.o)
0x08001f5a 0x08001f5a 0x00000002 Code RO 4039 i.__scatterload_null mc_p.l(handlers.o)
0x08001f5c 0x08001f5c 0x0000000e Code RO 4040 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08001f6a 0x08001f6a 0x00000002 PAD
0x08001f6c 0x08001f6c 0x000002dc Code RO 3840 i._printf_core mc_p.l(printf5.o)
0x08001f6c 0x08001f6c 0x000002dc Code RO 3847 i._printf_core mc_p.l(printf5.o)
0x08002248 0x08002248 0x0000001a Code RO 150 i.avg_buf_add quad_encoder.o
0x08002262 0x08002262 0x00000008 Code RO 335 i.byte_to_int16_t main.o
0x0800226a 0x0800226a 0x00000002 PAD
@@ -2286,56 +2290,57 @@ Memory Map of the image
0x08002364 0x08002364 0x00000012 Code RO 238 i.kb_buf_pop helpers.o
0x08002376 0x08002376 0x0000001c Code RO 239 i.kb_buf_reset helpers.o
0x08002392 0x08002392 0x00000002 PAD
0x08002394 0x08002394 0x000000a4 Code RO 337 i.m0100a_handle_inquiry main.o
0x08002438 0x08002438 0x00000026 Code RO 572 i.m0110a_cmd_buf_add m0110a.o
0x0800245e 0x0800245e 0x00000014 Code RO 573 i.m0110a_cmd_buf_init m0110a.o
0x08002472 0x08002472 0x00000010 Code RO 574 i.m0110a_cmd_buf_is_empty m0110a.o
0x08002482 0x08002482 0x00000016 Code RO 575 i.m0110a_cmd_buf_is_full m0110a.o
0x08002498 0x08002498 0x00000016 Code RO 576 i.m0110a_cmd_buf_peek m0110a.o
0x080024ae 0x080024ae 0x00000012 Code RO 577 i.m0110a_cmd_buf_pop m0110a.o
0x080024c0 0x080024c0 0x00000012 Code RO 578 i.m0110a_cmd_buf_reset m0110a.o
0x080024d2 0x080024d2 0x00000002 PAD
0x080024d4 0x080024d4 0x00000030 Code RO 579 i.m0110a_get_line_status m0110a.o
0x08002504 0x08002504 0x00000050 Code RO 580 i.m0110a_read m0110a.o
0x08002554 0x08002554 0x0000001c Code RO 581 i.m0110a_read_host_cmd m0110a.o
0x08002570 0x08002570 0x00000068 Code RO 338 i.m0110a_update main.o
0x080025d8 0x080025d8 0x0000004c Code RO 582 i.m0110a_write m0110a.o
0x08002624 0x08002624 0x0000002c Code RO 339 i.m0110a_write_1b_from_buf main.o
0x08002650 0x08002650 0x00000124 Code RO 340 i.main main.o
0x08002774 0x08002774 0x0000006c Code RO 3962 i.malloc mc_p.l(malloc.o)
0x080027e0 0x080027e0 0x00000010 Code RO 14 i.micros delay_us.o
0x080027f0 0x080027f0 0x00000030 Code RO 240 i.mouse_buf_add helpers.o
0x08002820 0x08002820 0x00000014 Code RO 241 i.mouse_buf_init helpers.o
0x08002834 0x08002834 0x00000016 Code RO 243 i.mouse_buf_is_full helpers.o
0x0800284a 0x0800284a 0x00000016 Code RO 244 i.mouse_buf_peek helpers.o
0x08002860 0x08002860 0x00000012 Code RO 245 i.mouse_buf_pop helpers.o
0x08002872 0x08002872 0x00000012 Code RO 246 i.mouse_buf_reset helpers.o
0x08002884 0x08002884 0x000000c0 Code RO 341 i.parse_spi_buf main.o
0x08002944 0x08002944 0x00000012 Code RO 153 i.quad_decrement quad_encoder.o
0x08002956 0x08002956 0x00000012 Code RO 154 i.quad_increment quad_encoder.o
0x08002968 0x08002968 0x00000030 Code RO 157 i.quad_write quad_encoder.o
0x08002998 0x08002998 0x00000078 Code RO 342 i.spi_error_dump_reboot main.o
0x08002a10 0x08002a10 0x00000030 Code RO 583 i.wait_for_data_idle m0110a.o
0x08002a40 0x08002a40 0x00000054 Data RO 159 .constdata quad_encoder.o
0x08002a94 0x08002a94 0x0000003b Data RO 348 .constdata main.o
0x08002acf 0x08002acf 0x00000010 Data RO 3657 .constdata system_stm32f0xx.o
0x08002adf 0x08002adf 0x00000008 Data RO 3658 .constdata system_stm32f0xx.o
0x08002ae7 0x08002ae7 0x00000001 PAD
0x08002ae8 0x08002ae8 0x00000020 Data RO 4029 Region$$Table anon$$obj.o
0x08002394 0x08002394 0x00000098 Code RO 337 i.m0100a_handle_inquiry main.o
0x0800242c 0x0800242c 0x00000026 Code RO 573 i.m0110a_cmd_buf_add m0110a.o
0x08002452 0x08002452 0x00000014 Code RO 574 i.m0110a_cmd_buf_init m0110a.o
0x08002466 0x08002466 0x00000010 Code RO 575 i.m0110a_cmd_buf_is_empty m0110a.o
0x08002476 0x08002476 0x00000016 Code RO 576 i.m0110a_cmd_buf_is_full m0110a.o
0x0800248c 0x0800248c 0x00000016 Code RO 577 i.m0110a_cmd_buf_peek m0110a.o
0x080024a2 0x080024a2 0x00000012 Code RO 578 i.m0110a_cmd_buf_pop m0110a.o
0x080024b4 0x080024b4 0x00000012 Code RO 579 i.m0110a_cmd_buf_reset m0110a.o
0x080024c6 0x080024c6 0x00000002 PAD
0x080024c8 0x080024c8 0x00000030 Code RO 580 i.m0110a_get_line_status m0110a.o
0x080024f8 0x080024f8 0x00000050 Code RO 581 i.m0110a_read m0110a.o
0x08002548 0x08002548 0x0000001c Code RO 582 i.m0110a_read_host_cmd m0110a.o
0x08002564 0x08002564 0x00000068 Code RO 338 i.m0110a_update main.o
0x080025cc 0x080025cc 0x00000060 Code RO 583 i.m0110a_write m0110a.o
0x0800262c 0x0800262c 0x0000002c Code RO 339 i.m0110a_write_1b_from_buf main.o
0x08002658 0x08002658 0x00000124 Code RO 340 i.main main.o
0x0800277c 0x0800277c 0x0000006c Code RO 3969 i.malloc mc_p.l(malloc.o)
0x080027e8 0x080027e8 0x00000010 Code RO 14 i.micros delay_us.o
0x080027f8 0x080027f8 0x00000030 Code RO 240 i.mouse_buf_add helpers.o
0x08002828 0x08002828 0x00000014 Code RO 241 i.mouse_buf_init helpers.o
0x0800283c 0x0800283c 0x00000016 Code RO 243 i.mouse_buf_is_full helpers.o
0x08002852 0x08002852 0x00000016 Code RO 244 i.mouse_buf_peek helpers.o
0x08002868 0x08002868 0x00000012 Code RO 245 i.mouse_buf_pop helpers.o
0x0800287a 0x0800287a 0x00000012 Code RO 246 i.mouse_buf_reset helpers.o
0x0800288c 0x0800288c 0x000000c0 Code RO 341 i.parse_spi_buf main.o
0x0800294c 0x0800294c 0x00000012 Code RO 153 i.quad_decrement quad_encoder.o
0x0800295e 0x0800295e 0x00000012 Code RO 154 i.quad_increment quad_encoder.o
0x08002970 0x08002970 0x00000030 Code RO 157 i.quad_write quad_encoder.o
0x080029a0 0x080029a0 0x00000078 Code RO 342 i.spi_error_dump_reboot main.o
0x08002a18 0x08002a18 0x00000030 Code RO 584 i.wait_for_data_idle m0110a.o
0x08002a48 0x08002a48 0x00000054 Data RO 159 .constdata quad_encoder.o
0x08002a9c 0x08002a9c 0x0000003b Data RO 348 .constdata main.o
0x08002ad7 0x08002ad7 0x00000080 Data RO 585 .constdata m0110a.o
0x08002b57 0x08002b57 0x00000010 Data RO 3664 .constdata system_stm32f0xx.o
0x08002b67 0x08002b67 0x00000008 Data RO 3665 .constdata system_stm32f0xx.o
0x08002b6f 0x08002b6f 0x00000001 PAD
0x08002b70 0x08002b70 0x00000020 Data RO 4036 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002b08, Size: 0x000008b8, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002b90, Size: 0x000008b8, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08002b08 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08002b0c 0x00000010 Data RW 160 .data quad_encoder.o
0x20000014 0x08002b1c 0x0000001c Data RW 349 .data main.o
0x20000030 0x08002b38 0x00000004 Data RW 2478 .data stm32f0xx_hal.o
0x20000034 0x08002b3c 0x00000004 Data RW 3659 .data system_stm32f0xx.o
0x20000038 0x08002b40 0x00000004 Data RW 4003 .data mc_p.l(stdout.o)
0x2000003c 0x08002b44 0x00000004 Data RW 4006 .data mc_p.l(mvars.o)
0x20000040 0x08002b48 0x00000004 Data RW 4007 .data mc_p.l(mvars.o)
0x20000000 0x08002b90 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08002b94 0x00000010 Data RW 160 .data quad_encoder.o
0x20000014 0x08002ba4 0x0000001c Data RW 349 .data main.o
0x20000030 0x08002bc0 0x00000004 Data RW 2485 .data stm32f0xx_hal.o
0x20000034 0x08002bc4 0x00000004 Data RW 3666 .data system_stm32f0xx.o
0x20000038 0x08002bc8 0x00000004 Data RW 4010 .data mc_p.l(stdout.o)
0x2000003c 0x08002bcc 0x00000004 Data RW 4013 .data mc_p.l(mvars.o)
0x20000040 0x08002bd0 0x00000004 Data RW 4014 .data mc_p.l(mvars.o)
0x20000044 - 0x00000038 Zero RW 158 .bss quad_encoder.o
0x2000007c - 0x0000023c Zero RW 343 .bss main.o
0x200002b8 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
@@ -2351,8 +2356,8 @@ Image component sizes
52 10 0 4 0 491683 delay_us.o
320 0 0 0 0 6564 helpers.o
434 22 0 0 0 7712 m0110a.o
1594 200 59 28 572 17173 main.o
454 22 128 0 0 8606 m0110a.o
1582 204 59 28 572 17455 main.o
396 20 84 16 56 7140 quad_encoder.o
28 8 192 0 1536 632 startup_stm32f072xb.o
122 18 0 4 0 3631 stm32f0xx_hal.o
@@ -2370,7 +2375,7 @@ Image component sizes
92 16 24 4 0 1143 system_stm32f0xx.o
----------------------------------------------------------------------
9384 620 392 56 2164 592462 Object Totals
9392 624 520 56 2164 593638 Object Totals
0 0 32 0 0 0 (incl. Generated)
30 0 1 0 0 0 (incl. Padding)
@@ -2419,15 +2424,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
10624 704 392 68 2164 587966 Grand Totals
10624 704 392 68 2164 587966 ELF Image Totals
10624 704 392 68 0 0 ROM Totals
10632 708 520 68 2164 589142 Grand Totals
10632 708 520 68 2164 589142 ELF Image Totals
10632 708 520 68 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 11016 ( 10.76kB)
Total RO Size (Code + RO Data) 11152 ( 10.89kB)
Total RW Size (RW Data + ZI Data) 2232 ( 2.18kB)
Total ROM Size (Code + RO Data + RW Data) 11084 ( 10.82kB)
Total ROM Size (Code + RO Data + RW Data) 11220 ( 10.96kB)
==============================================================================

View File

@@ -114,7 +114,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
-IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o apple_all\helpers.o --omf_browse apple_all\helpers.crf --depend apple_all\helpers.d)
@@ -153,7 +153,7 @@ I (../Inc/delay_us.h)(0x617487C7)
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)
F (../Src/main.c)(0x62B9B093)(--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\_apple_all
@@ -221,7 +221,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h)(0x5DFA0893)
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)
@@ -258,7 +258,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
-o apple_all\stm32f0xx_hal_msp.o --omf_browse apple_all\stm32f0xx_hal_msp.crf --depend apple_all\stm32f0xx_hal_msp.d)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x626D7BBD)
I (../Inc/main.h)(0x626D7BBE)

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

@@ -23,6 +23,138 @@
#define M0110A_READ_CLK_PIN() HAL_GPIO_ReadPin(MAC_KB_CLK_GPIO_Port, MAC_KB_CLK_Pin)
const uint8_t linux_keycode_to_m0110a_scancode_lookup[LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE] =
{
CODE_UNUSED, // KEY_RESERVED 0
CODE_UNUSED, // KEY_ESC 1
0x25, // KEY_1 2
0x27, // KEY_2 3
0x29, // KEY_3 4
0x2b, // KEY_4 5
0x2f, // KEY_5 6
0x2d, // KEY_6 7
0x35, // KEY_7 8
0x39, // KEY_8 9
0x33, // KEY_9 10
0x3b, // KEY_0 11
0x37, // KEY_MINUS 12
0x31, // KEY_EQUAL 13
0x67, // KEY_BACKSPACE 14
0x61, // KEY_TAB 15
0x19, // KEY_Q 16
0x1b, // KEY_W 17
0x1d, // KEY_E 18
0x1f, // KEY_R 19
0x23, // KEY_T 20
0x21, // KEY_Y 21
0x41, // KEY_U 22
0x45, // KEY_I 23
0x3f, // KEY_O 24
0x47, // KEY_P 25
0x43, // KEY_LEFTBRACE 26
0x3d, // KEY_RIGHTBRACE 27
0x49, // KEY_ENTER 28
0x75, // KEY_LEFTCTRL 29 !!!!! MAPPED TO LEFT OPTION
0x1, // KEY_A 30
0x3, // KEY_S 31
0x5, // KEY_D 32
0x7, // KEY_F 33
0xb, // KEY_G 34
0x9, // KEY_H 35
0x4d, // KEY_J 36
0x51, // KEY_K 37
0x4b, // KEY_L 38
0x53, // KEY_SEMICOLON 39
0x4f, // KEY_APOSTROPHE 40
0x65, // KEY_GRAVE 41
0x71, // KEY_LEFTSHIFT 42
0x55, // KEY_BACKSLASH 43
0xd, // KEY_Z 44
0xf, // KEY_X 45
0x11, // KEY_C 46
0x13, // KEY_V 47
0x17, // KEY_B 48
0x5b, // KEY_N 49
0x5d, // KEY_M 50
0x57, // KEY_COMMA 51
0x5f, // KEY_DOT 52
0x59, // KEY_SLASH 53
0x71, // KEY_RIGHTSHIFT 54
CODE_HANDLE_SEPARATELY, // KEY_KPASTERISK 55
0x6f, // KEY_LEFTALT 56 !!!!! MAPPED TO LEFT COMMAND
0x63, // KEY_SPACE 57
CODE_HANDLE_SEPARATELY, // KEY_CAPSLOCK 58
CODE_UNUSED, // KEY_F1 59
CODE_UNUSED, // KEY_F2 60
CODE_UNUSED, // KEY_F3 61
CODE_UNUSED, // KEY_F4 62
CODE_UNUSED, // KEY_F5 63
CODE_UNUSED, // KEY_F6 64
CODE_UNUSED, // KEY_F7 65
CODE_UNUSED, // KEY_F8 66
CODE_UNUSED, // KEY_F9 67
CODE_UNUSED, // KEY_F10 68
CODE_HANDLE_SEPARATELY, // KEY_NUMLOCK 69 !!!!! MAPPED TO CLEAR
CODE_UNUSED, // KEY_SCROLLLOCK 70
CODE_HANDLE_SEPARATELY, // KEY_KP7 71
CODE_HANDLE_SEPARATELY, // KEY_KP8 72
CODE_HANDLE_SEPARATELY, // KEY_KP9 73
CODE_HANDLE_SEPARATELY, // KEY_KPMINUS 74
CODE_HANDLE_SEPARATELY, // KEY_KP4 75
CODE_HANDLE_SEPARATELY, // KEY_KP5 76
CODE_HANDLE_SEPARATELY, // KEY_KP6 77
CODE_HANDLE_SEPARATELY, // KEY_KPPLUS 78
CODE_HANDLE_SEPARATELY, // KEY_KP1 79
CODE_HANDLE_SEPARATELY, // KEY_KP2 80
CODE_HANDLE_SEPARATELY, // KEY_KP3 81
CODE_HANDLE_SEPARATELY, // KEY_KP0 82
CODE_HANDLE_SEPARATELY, // KEY_KPDOT 83
CODE_UNUSED, // KEY_UNUSED 84
CODE_UNUSED, // KEY_ZENKAKUHANKAKU 85
CODE_UNUSED, // KEY_102ND 86
CODE_UNUSED, // KEY_F11 87
CODE_UNUSED, // KEY_F12 88
CODE_UNUSED, // KEY_RO 89
CODE_UNUSED, // KEY_KATAKANA 90
CODE_UNUSED, // KEY_HIRAGANA 91
CODE_UNUSED, // KEY_HENKAN 92
CODE_UNUSED, // KEY_KATAKANAHIRAGANA 93
CODE_UNUSED, // KEY_MUHENKAN 94
CODE_UNUSED, // KEY_KPJPCOMMA 95
CODE_HANDLE_SEPARATELY, // KEY_KPENTER 96
0x75, // KEY_RIGHTCTRL 97 !!!!! MAPPED TO LEFT OPTION
CODE_HANDLE_SEPARATELY, // KEY_KPSLASH 98
CODE_UNUSED, // KEY_SYSRQ 99
0x6f, // KEY_RIGHTALT 100 !!!!! MAPPED TO LEFT COMMAND
CODE_UNUSED, // KEY_LINEFEED 101
CODE_UNUSED, // KEY_HOME 102
CODE_HANDLE_SEPARATELY, // KEY_UP 103
CODE_UNUSED, // KEY_PAGEUP 104
CODE_HANDLE_SEPARATELY, // KEY_LEFT 105
CODE_HANDLE_SEPARATELY, // KEY_RIGHT 106
CODE_UNUSED, // KEY_END 107
CODE_HANDLE_SEPARATELY, // KEY_DOWN 108
CODE_UNUSED, // KEY_PAGEDOWN 109
CODE_UNUSED, // KEY_INSERT 110
CODE_UNUSED, // KEY_DELETE 111
CODE_UNUSED, // KEY_MACRO 112
CODE_UNUSED, // KEY_MUTE 113
CODE_UNUSED, // KEY_VOLUMEDOWN 114
CODE_UNUSED, // KEY_VOLUMEUP 115
CODE_UNUSED, // KEY_POWER 116
CODE_UNUSED, // KEY_KPEQUAL 117
CODE_UNUSED, // KEY_KPPLUSMINUS 118
CODE_UNUSED, // KEY_PAUSE 119
CODE_UNUSED, // KEY_SCALE 120
CODE_UNUSED, // KEY_KPCOMMA 121
CODE_UNUSED, // KEY_HANGEUL 122
CODE_UNUSED, // KEY_HANJA 123
CODE_UNUSED, // KEY_YEN 124
0x6f, // KEY_LEFTMETA 125 !!!!! MAPPED TO LEFT COMMAND
0x6f, // KEY_RIGHTMETA 126 !!!!! MAPPED TO LEFT COMMAND
0x6f, // KEY_COMPOSE 127 !!!!! MAPPED TO LEFT COMMAND
};
uint8_t m0110a_get_line_status(void)
{
uint32_t entry_time = HAL_GetTick();
@@ -71,14 +203,15 @@ uint8_t m0110a_read_host_cmd(uint8_t* result, uint16_t timeout_ms)
{
if(m0110a_get_line_status() == M0110A_LINE_IDLE)
return M0110A_LINE_IDLE;
m0110a_read(result);
return wait_for_data_idle(timeout_ms);
}
uint8_t m0110a_write(uint8_t data)
{
M0110A_CLK_HI();
if(wait_for_data_idle(200) == M0110A_TIMEOUT)
return M0110A_TIMEOUT;
// clk is high at the start
for(int i=7; i>=0; i--)
{

View File

@@ -213,7 +213,7 @@ void m0110a_write_1b_from_buf(void)
m0110a_cmd_buf_peek(&my_m0110a_buf, &m0100a_byte);
m0110a_cmd_buf_pop(&my_m0110a_buf);
m0110a_write(m0100a_byte);
printf("b%x", m0100a_byte);
printf("w%x", m0100a_byte);
}
void m0110a_update(void)
@@ -241,12 +241,12 @@ void m0110a_update(void)
else if(m0110a_host_cmd == 0x36) // test
m0110a_write(0x7d);
printf("a%x", m0110a_host_cmd);
printf("r%x", m0110a_host_cmd);
}
void m0100a_handle_inquiry(void)
{
// "If no key transition has occurred after 0.25 second
// "If no key transition has occurred after 0.25 seconds
// the keyboard sends back a Null response to let the computer know it's still there"
if(m0110a_inquiry_active && HAL_GetTick() - m0110a_last_inquiry > 250)
{
@@ -261,21 +261,26 @@ void m0100a_handle_inquiry(void)
else if(m0110a_inquiry_active && kb_buf_peek(&my_kb_buf, &buffered_code, &buffered_value) == 0)
{
m0110a_cmd_buf_reset(&my_m0110a_buf);
uint8_t lookup_result = CODE_UNUSED;
if(buffered_code < LINUX_KEYCODE_TO_M0110A_SCANCODE_SIZE)
lookup_result = linux_keycode_to_m0110a_scancode_lookup[buffered_code];
if(lookup_result == CODE_UNUSED || lookup_result == CODE_HANDLE_SEPARATELY)
goto m0110a_kb_write_end;
if(buffered_value)
{
m0110a_cmd_buf_add(&my_m0110a_buf, 0x71);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x79);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x0d);
m0110a_cmd_buf_add(&my_m0110a_buf, lookup_result);
}
else
{
m0110a_cmd_buf_add(&my_m0110a_buf, 0xf1);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x79);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x8d);
m0110a_cmd_buf_add(&my_m0110a_buf, lookup_result | 0x80);
}
kb_buf_pop(&my_kb_buf);
m0110a_write_1b_from_buf();
m0110a_inquiry_active = 0;
m0110a_kb_write_end:
kb_buf_pop(&my_kb_buf);
}
}

View File

@@ -9,7 +9,18 @@
// return (uint16_t)(-190*speed_val + 12690); // 1, 12500 | 64, 500
int32_t result = -307*speed_val + 12807; // 1, 12500, 40, 500
if(buffered_value)
{
m0110a_cmd_buf_add(&my_m0110a_buf, 0x71);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x79);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x0d);
}
else
{
m0110a_cmd_buf_add(&my_m0110a_buf, 0xf1);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x79);
m0110a_cmd_buf_add(&my_m0110a_buf, 0x8d);
}
uint16_t calc_arr(int32_t speed_val)
{