diff --git a/airspy_m0/airspy_core.o b/airspy_m0/airspy_core.o deleted file mode 100644 index 9d32ad5..0000000 Binary files a/airspy_m0/airspy_core.o and /dev/null differ diff --git a/airspy_m0/airspy_m0.bin b/airspy_m0/airspy_m0.bin deleted file mode 100644 index 36ad40c..0000000 Binary files a/airspy_m0/airspy_m0.bin and /dev/null differ diff --git a/airspy_m0/airspy_m0.elf b/airspy_m0/airspy_m0.elf deleted file mode 100644 index 06d65ea..0000000 Binary files a/airspy_m0/airspy_m0.elf and /dev/null differ diff --git a/airspy_m0/airspy_m0.hdr b/airspy_m0/airspy_m0.hdr deleted file mode 100644 index 364d8d5..0000000 --- a/airspy_m0/airspy_m0.hdr +++ /dev/null @@ -1,2 +0,0 @@ -#define AIRSPY_FW_GIT_TAG "v1.0.0-rc10-4-g8a575d6-dirty" -#define AIRSPY_FW_CHECKIN_DATE "2020-05-07" diff --git a/airspy_m0/airspy_m0.hex b/airspy_m0/airspy_m0.hex deleted file mode 100644 index 4cf143e..0000000 --- a/airspy_m0/airspy_m0.hex +++ /dev/null @@ -1,759 +0,0 @@ -:020000042000DA -:10C00000E00F002055E5002051E50020D5CC0020B0 -:10C010000000000000000000000000000000000020 -:10C0200000000000000000000000000051E50020BA -:10C03000000000000000000051E5002051E5002054 -:10C040004DE50020D9C100204DE500200000000092 -:10C050004DE500204DE500204DE500204DE5002098 -:10C0600025DB00204DE500204DE500204DE50020BA -:10C070004DE500204DE500204DE500204DE5002078 -:10C080004DE500204DE500204DE500204DE5002068 -:10C090004DE500204DE500204DE500204DE5002058 -:10C0A0004DE500204DE500204DE500204DE5002048 -:10C0B0004DE500204DE500204DE500204DE5002038 -:10C0C00008B503695868002801D000F015F900F0A0 -:10C0D000F9F808BD054B0122196848700A70BFF3D2 -:10C0E0004F8F40BF08680028FCD170476CEC0020DF -:10C0F000054B0122196848700A70BFF34F8F40BF8B -:10C1000008680028FCD1704770EC002038B5204B3F -:10C11000051C1868012245700270BFF34F8F40BFA5 -:10C1200001680029FCD11B4C2368188B02F04EF8E3 -:10C130002068408B02F064F86AB2002A12DA7F208D -:10C140002168054018225543081C0431CB6F483044 -:10C150005919096901F020F82468201C043448307A -:10C16000E36F0DE0182321685D438A6F081C5119A5 -:10C170004830096901F010F82468201CA36F48308A -:10C180005D19297D01F028F8034A0120106038BDAF -:10C1900078EC002028EF002000F0002010B5041CEF -:10C1A00001F040F80A4B0222186844700270BFF395 -:10C1B0004F8F40BF01680029FCD1064C2368188BC3 -:10C1C00002F004F82068808B02F01AF810BDC04617 -:10C1D00078EC002028EF0020014B00221A60704705 -:10C1E0003031044070B58CB000F072FC274B01ACCC -:10C1F0001868483001F04AF8254801F0B5FE01F012 -:10C20000F5FA244D0020291C01F0EEFB224801F034 -:10C210005FFD224801F05CFD214801F059FD2148F5 -:10C2200001F056FD204801F035FC204801F032FCB9 -:10C230003A202070201C01F04FFA218B002903D1F5 -:10C24000606AA16A00F0C4FC0820FF2102F042FAF3 -:10C250000120011C02F03EFA012002F02FFA281CF6 -:10C2600001F006FC124A134B134D16681868296832 -:10C2700020BF346802680B689C42F9D00F4E10480A -:10C28000A11901F0B1FD2A681460EBE728EF002046 -:10C29000C1C000201CEE002048EE002068EE002007 -:10C2A00058EE0020F0EE002078EE0020C8EE0020CE -:10C2B00074EC00207CEC002080EC0020004000208A -:10C2C00000EF002038B5041C00F0F6FB074D012CF0 -:10C2D00006D1074801F0DEFB2878FFF717FF02E0E0 -:10C2E0002878FFF75BFF034B1C7038BD00F500207A -:10C2F00000EF002004F00020014B18787047C04682 -:10C3000004F0002008B543781B2B06D8054A9B0093 -:10C310009B58002B04D0984703E04842484100E076 -:10C32000012008BD90F3002008B5002901D100F0DC -:10C33000B7FC002008BD70B5051C00200C1E84420F -:10C340000DD16E880120B21E0B2A08D800F0EAFF3A -:10C35000300401F0C7F8A86901F053FD201C70BD3E -:10C3600038B50023994219D181880123FF2915D8B6 -:10C3700044889C4212D80A4D4A0952191F25294067 -:10C3800092008B401168012C01D10B4301E09943CD -:10C390000B1C1360806901F034FD0023181C38BDAC -:10C3A00000D8031038B5051C0C1E07D100F0BAFFE9 -:10C3B000201C01F097F8A86901F023FD002038BD8A -:10C3C000F8B5041C00292AD1164B81881868021C74 -:10C3D000763215882E1C8D4200D90E1CB2B212493D -:10C3E000402A02D8002A03D000E04022002303E0C4 -:10C3F0000D60A06904220DE0934209DA18265E431D -:10C40000876F9D00BE19376901337E004E51F3E7F7 -:10C41000A069920001F0E8FCE06901F0F2FC002064 -:10C42000F8BDC04628EF002000F40020002238B5F7 -:10C43000041C0D1E95421AD183880122FF2B16D8A9 -:10C440000C4859090918880001681F200340101C76 -:10C450009840031C0B40591E8B41211C237208314C -:10C46000A06901F0C1FCE06901F0CBFC2A1C101CA2 -:10C4700038BDC04600D8031070B50025041C0E1E40 -:10C48000AE4217D18388042B08D1C2880A4980693B -:10C4900001F0AAFCE06901F0B4FC0BE00125052BDA -:10C4A00008D1C2880549806901F09EFCE06901F06D -:10C4B000A8FC351C281C70BDAFEC002082ED0020CC -:10C4C00010B5041C002909D10172011C08318069D2 -:10C4D000012201F089FCE06901F093FC002010BD0D -:10C4E00010B5041C00290AD18388012B02D100F069 -:10C4F000DDFB01E000F0E4FBA06901F082FC00201C -:10C5000010BD000010B5041C00290FD1084B217983 -:10C510001868483000F0E2FD211C20720831A06943 -:10C52000012201F061FCE06901F06BFC002010BD0C -:10C5300028EF002010B5041C00290FD1084B2179E9 -:10C540001868483000F0C1FD211C20720831A06934 -:10C55000012201F049FCE06901F053FC002010BD0C -:10C5600028EF002010B5041C00290FD1084B2179B9 -:10C570001868483000F0A2FD211C20720831A06923 -:10C58000012201F031FCE06901F03BFC002010BD0C -:10C5900028EF002010B5041C00290FD1084B217989 -:10C5A0001868483000F083FD211C20720831A06912 -:10C5B000012201F019FCE06901F023FC002010BD0C -:10C5C00028EF002010B5041C00290FD1084B217959 -:10C5D0001868483000F064FD211C20720831A06901 -:10C5E000012201F001FCE06901F00BFC002010BD0C -:10C5F00028EF002010B5041C002905D109490422A8 -:10C60000C06901F0F1FB0BE0012909D1064B054996 -:10C6100018680968483000F0EFFCA06901F0F1FBF0 -:10C62000002010BD88F3002028EF002070B5041C06 -:10C630000020814255D1A3882A4A3F2B06D8106892 -:10C6400076300188012099422ADC4AE0FA201268FB -:10C6500080005843131C76331B8899420CDA182546 -:10C660004D43966F75192E69B500854202D11E4A59 -:10C6700011701AE00131F0E7111C7E3109880023A6 -:10C6800000E001338B420EDA151DEE6F18255D4375 -:10C6900076193569AE008642F3D1802041420B43C2 -:10C6A000114E337001E001201BE0FFF725FE0E4D17 -:10C6B000061E012E02D12878FFF770FD2878FFF7BB -:10C6C00009FD012E02D12878FFF720FD0122211C4F -:10C6D00022720831A06901F087FBE06901F091FB4B -:10C6E000002070BD28EF002000F5002070B5041C6C -:10C6F0000020814221D1A388012083421DD8DEB2CF -:10C70000FFF7FAFD051E012D03D10C480078FFF755 -:10C7100045FD301CFFF7ECFC012D03D107490878DB -:10C72000FFF7F4FC0122211C22720831A06901F0FC -:10C730005BFBE06901F065FB002070BD00F50020A7 -:10C7400070B5002592B0061CA94226D107AC36234D -:10C75000201C237000F0C0FF208BA84201D00125CF -:10C760001BE0E169226A3A23201C019102922370A6 -:10C7700000F0B2FF208B0028F1D1E169226A636AE0 -:10C78000A46A03910492B06901A918220593069442 -:10C7900001F02AFBF06901F034FB281C12B070BDD7 -:10C7A00038B5051C002922D1124C00220B1980201B -:10C7B00001311A7043009942F6D10F49201C0968D3 -:10C7C000083102F0B5F8201C02F0BAF80B49001944 -:10C7D00002F0AEF8201C02F0B3F8021D03208243E1 -:10C7E000211CA86901F000FBE86901F00AFB0020A8 -:10C7F00038BDC04600F4002028EF002050E900209A -:10C80000F8B5051C002931D1C48847888288802664 -:10C8100001208640B44236D83804104380230719DB -:10C82000194E5A03974217D9032C0DD90323271CFD -:10C830001F4009D1034008D1A1089A0017580133BD -:10C84000B7508B42F9D30BE000E0391CA14207D26C -:10C850000A5C72540131F9E7211C321C00F0F2FE2F -:10C86000A869311C221C01F0BFFA0BE0002001294D -:10C8700009D1EA888023081C59008A4203D8E86954 -:10C8800001F0BFFA0020F8BD00F4002070B5041CD0 -:10C890000D1E17D1E288012380264088A1889E4082 -:10C8A000B2422AD8050480200D4341038D4224D88A -:10C8B000AE188E4221D81249E06901F095FA00F0D5 -:10C8C00031FD19E00023012917D1E18880262B1CB6 -:10C8D0004088A2887500A9420FD800041043802226 -:10C8E0005603B04209D84518B54206D8044A00F0AC -:10C8F00069FEA06901F085FA0023181C70BDC046CE -:10C9000000F4002070B50025041C0E1EAE4214D1A8 -:10C9100081880125FF2910D8094BC9B21868483011 -:10C9200000F0F4FA211C2A1C20720831A06901F0E1 -:10C930005BFAE06901F065FA351C281C70BDC04641 -:10C9400028EF002038B5041C00200D1E854211D1AF -:10C95000A1880120FF290DD86288FF2A0AD8064B3A -:10C96000C9B21868D2B2483000F08EFAA06901F05E -:10C9700048FA281C38BDC04628EF002070B50025B5 -:10C98000041C0E1EAE4211D180880125FF280DD84F -:10C99000C0B200F0C0F9211C2A1C20720831A06925 -:10C9A00001F022FAE06901F02CFA351C281C70BD58 -:10C9B00038B5041C00200D1E85420ED1A38801202D -:10C9C000FF2B0AD86188FF2907D8D8B2C9B200F076 -:10C9D00091F9A06901F015FA281C38BD38B500237B -:10C9E000051C0C1E9C420AD140880123984206D89F -:10C9F000C0B2FFF767FCA86901F003FA231C181CFA -:10CA000038BD000038B5002399421BD1828801232C -:10CA1000FF2A17D844889C4214D80B4D5109491954 -:10CA20001F252A4089009340012C03D18025AA00AC -:10CA3000891802E0A022940009190B60806901F0B6 -:10CA4000E0F90023181C38BD00D8031010B5041CF1 -:10CA50000020814222D1A2880120FF2A1ED810493D -:10CA600053095B181F210A409B0090401A6810422E -:10CA700003D080218A009B1801E00133FF331B683B -:10CA8000211C1840431E9841207208310122A069E0 -:10CA900001F0AAF9E06901F0B4F9002010BDC04628 -:10CAA00000D8031080239A00801801607047A023EB -:10CAB0009A0080180160704708B5034800F0CEFE68 -:10CAC000024800F0CBFE08BD00EF0020A0EE0020E1 -:10CAD0001F4B2049204800221A7008601F4B204A33 -:10CAE000204821491A6058609960204A204821490D -:10CAF000DA6018615961204A204821499A61D86159 -:10CB00001962204A204821495A629862D962204A13 -:10CB1000204821491A6358639963204A20482149D3 -:10CB2000DA63214A18645964204821499A64214AE9 -:10CB3000D8641965204821495A65214A9865D96504 -:10CB40001A6620482049214A58669966DA66704775 -:10CB500000F5002088F3002000E1F50590F30020A7 -:10CB600029C30020DDC90020B1C900207DC90020F3 -:10CB700045C9002005C90020A5C300208DC800209C -:10CB800001C80020C1C40020A1C7002041C7002067 -:10CB90002DC60020F5C50020C5C5002095C5002084 -:10CBA00065C5002035C5002005C5002079C40020DA -:10CBB000E1C4002005CA00204DCA002061C3002046 -:10CBC0002DC40020C1C30020EDC6002037C30020C3 -:10CBD000F0B52D4B050E2C091E5D0F2425402B4A68 -:10CBE0005F5DFF25967517762E04071C37403D0CB8 -:10CBF0002F09DF5D25405D5D9776FF2715773D02A4 -:10CC000005402F0A3D095D5D2740BC469577654686 -:10CC10005D5D571CFD77C7B23D095D5D2040185C26 -:10CC2000D71CFD77571DF877080E05095D5DD71DE8 -:10CC30002040185CFD770E40171C350C28373870E3 -:10CC40002F09D85D161C2A3630702540FF265D5D01 -:10CC5000171C300208402C373D70070A3E09985DCA -:10CC6000151C2740DF5D2E35161C28703036CDB2DE -:10CC700037700C402E099F5D101C195D3230343224 -:10CC800007701170F0BDC046A0E90020D7EC00206D -:10CC90000023834202D0C0460133FAE77047000008 -:10CCA000014B01221A60FEE70031054008B58021E2 -:10CCB00002488901FFF7F6FE08BDC04604600F4038 -:10CCC00008B5802102488901FFF7F1FE08BDC04682 -:10CCD00004600F40042475462C4202D0EFF3098013 -:10CCE00002E0EFF30880FFE7014B186000BEFEE7AB -:10CCF00040F7002038B50C1C051C01F09DFAC0203F -:10CD000001F0DAFA281C01F0D7FA201C01F0D4FA5D -:10CD100001F072FB38BD10B5041C01F08DFAC02083 -:10CD200001F0CAFA201C01F0C7FA01F085FAC1200F -:10CD300001F0C2FA01F00CFB041C01F05DFB201CA9 -:10CD400010BD000038B50C4B051C18680C1C020601 -:10CD500010D50A490A78002A0CD101F08DFA342046 -:10CD600001F0D0FA281C01F0CDFA201C01F0CAFA1B -:10CD700001F054FB38BDC04604620F402CEF002088 -:10CD80000021312806D9044A32381421904201D8B2 -:10CD9000024B195C081C704757020000C4E90020D0 -:10CDA00038B50E4B051C1868020616D50C490C78D0 -:10CDB000002C12D101F060FA342001F0A3FA052012 -:10CDC00001F0A0FA285D013401F09CFA1B2CF9D186 -:10CDD000002001F097FA01F021FB38BD04620F40FA -:10CDE0002CEF0020F8B5254B161C1A6880240D1C6A -:10CDF00014400CD0224900240F78002F07D10CE0FA -:10CE0000671F1D2F06D80219D3792B550134B44260 -:10CE1000F6DB32E001214B42F7E701F02DFA352035 -:10CE200001F070FA174C012E0ED8381C01F0B6FA3A -:10CE30000F2606400709A25DF8B2245C11012143C8 -:10CE4000297001F0EBFA18E02F1C731E781B984232 -:10CE50000DDA012001F0A2FA0F230340E25C000981 -:10CE6000C3B21101E25C114339700137EDE70020D4 -:10CE7000AD1901F093FA013DDAE7F8BD04620F4005 -:10CE80002CEF00205BEC00200E4B70B5061C1868E0 -:10CE90000D1C141C020603D50B490A78002A02D087 -:10CEA0007619F47170BD01F0E7F9342001F02AFA27 -:10CEB000281C01F027FA201C01F024FA01F0AEFA38 -:10CEC000EEE7C04604620F402CEF002008B54B1F70 -:10CED0001D2B02D8C3181B7B01E001235B42934248 -:10CEE00001D0FFF7D1FF002008BD10B54C1F1D2C4D -:10CEF00008D80419247B9C431340221C1A43FFF7D3 -:10CF0000E5FF01E00120404210BD000038B5044DAE -:10CF10004A1C0C1CD2B2291CFFF764FF285D38BDE7 -:10CF200044F70020F7B50568041C0E1C00235F1CA5 -:10CF3000311C2F4AB94088182E49884203D93B1E1C -:10CF4000052BF4D100E01F1C7A01D2B2201C102165 -:10CF5000E023FFF7CAFF002848DB0137690C6808A7 -:10CF6000BE40019000917018291C01F0CDFB031CFC -:10CF70000D3BDAB2071C90088100531A9A01801801 -:10CF8000C2B21421201CFFF7A1FF00282EDBFFB244 -:10CF90007D43761B04D10822201C1221131C23E0A0 -:10CFA000009D002776193B1C019ADA40964206D371 -:10CFB0008021080218410743BFB2B61A02D00133DC -:10CFC000102BF1D1FAB2201C1521FFF77FFF0028AA -:10CFD0000CDB3A0A201C1621FFF778FF002805DB3E -:10CFE000201C122100220823FFF77FFFFEBDC04650 -:10CFF00080F17F968038F57EF8B5264B244A041CD4 -:10D000000D1C8768081C002101F0CEFB081CFFF7EF -:10D01000B7FE03267043204908230E183278201CDF -:10D020001721FFF762FF00282EDB7278201C1A21DF -:10D03000C323FFF75AFF002826DBB278201C1B21F0 -:10D04000FFF744FF00281FDB201C102108220B23C0 -:10D05000FFF74BFF002817DB201C082100223F238D -:10D06000FFF743FF00280FDB201C092100223F238C -:10D07000FFF73BFF002807DBE919201CFFF752FFF1 -:10D08000002801DB65600020F8BDC046C046C046F0 -:10D09000C7100000000000001CEC0020C046C04685 -:10D0A00008B50A1C0F230521FFF71FFF08BD08B5AF -:10D0B0000A1C0F230721FFF718FF08BD08B50A1C3B -:10D0C0000F230C21FFF711FF08BD08B54A424A4162 -:10D0D000120105211023FFF708FF08BD08B50A1E3D -:10D0E00000D0102207211023FFF7FFFE08BD00002B -:10D0F00037B5041C0525201C0B2108226023FFF7EF -:10D10000F4FE002843DB0422201C0F21131CFFF730 -:10D11000ECFE00283BDB201C102100220323FFF73C -:10D12000E4FE002833DB201C1949FFF7FBFE002832 -:10D130002DDB1022201C0B21131CFFF7D6FE00282C -:10D1400025DB1448FFF7A4FD201C0B21002210232F -:10D15000FFF7CBFE00281ADB201C0F21002204233E -:10D16000FFF7C3FE002812DB201C05226946FFF7EB -:10D1700039FE6B461A790F20104001D00F2805D1D7 -:10D18000013D002DB7D10121484200E000203EBD05 -:10D1900000C63E051027000038B50E4B041C0022C7 -:10D1A00081600C301A70FFF7FBFD6168201CFFF7EF -:10D1B00023FF201C6568FFF79BFF6560002803DAEA -:10D1C000201CFFF795FF6560291C201CFFF714FF4A -:10D1D00038BDC0462CEF0020F0B5114F87B001AE2E -:10D1E000041C0D1C301C391C042201F0FFFA391DEF -:10D1F00002A8102201F0FAFA0F202B0902A905401B -:10D20000F65C4A5DB02506432A43201C0A21FFF73D -:10D210005DFE201C0B21321CFFF758FE07B0F0BD4D -:10D22000B0E9002008B50520A021FFF78BFD0620FE -:10D23000D021FFF787FD07200021FFF783FD08209D -:10D240004021FFF77FFD0920C021FFF77BFD0A2069 -:10D250007021FFF777FD0C20A021FFF773FD0F2051 -:10D260002A21FFF76FFD11200321FFF76BFD172027 -:10D27000F421FFF767FD19200C21FFF763FD024B36 -:10D28000012200201A7008BD2CEF002008B5044BC5 -:10D2900000220C301A70FFF783FDFFF7C3FF08BDB3 -:10D2A0002CEF002070B50B4D80242401281C211C7C -:10D2B000FFF7FDFB0521002001F022F9FF210020EE -:10D2C00001F01EF9211C061C281CFFF7EBFBF0B235 -:10D2D00070BDC04614600F4070B5114D802424010C -:10D2E000281C211CFFF7E3FBAB21002001F008F90B -:10D2F000FF21002001F004F9FF21002001F000F9D6 -:10D30000FF21002001F0FCF8FF21002001F0F8F8D7 -:10D31000211C061C281CFFF7C5FBF0B270BDC046DF -:10D3200014600F40F0B58022314B900387B0186035 -:10D33000F221304800F048FF2F48F02100F044FF70 -:10D340002E48F02100F040FF2D48F02100F03CFF76 -:10D350002C48F42100F038FF2B48F42100F034FF72 -:10D360002748F52100F030FF2648F52100F02CFF7A -:10D370002048F22100F028FF1F48F02100F024FF90 -:10D38000224D1E48F021C02700F01EFF204C1E48F1 -:10D39000F4213F02802600F017FF3601281C391CBB -:10D3A000FFF780FB311C201CFFF77CFB2968022063 -:10D3B0000F432F6022680025164326602B1C009027 -:10D3C0000190029503950495281C07212A1C01F061 -:10D3D00037F8104B1D701F1C3C78132C05D0152CF2 -:10D3E00003D0FFF779FF3870F6E707B0F0BDC0460D -:10D3F000043105408C610840906108409461084008 -:10D40000986108409C610840A061084004600F409A -:10D4100014600F4064F70020802138B50901051C15 -:10D420002048FFF744FB204B1878132819D100201F -:10D430004B2101F065F804240020FF21013C01F09C -:10D440005FF8002CF8D10020FF2101F059F8285591 -:10D450000134082CF7D1802212481101FFF722FB7A -:10D4600038BD1528F7D14B21002001F049F80020E4 -:10D47000011C01F045F80121002001F041F80221D2 -:10D48000002001F03DF80020FF2101F039F80024D0 -:10D490000020FF2101F034F828550134082CF7D181 -:10D4A000D9E7C04614600F4064F7002008B5FFF7C5 -:10D4B000F9FEC307FBD408BD38B5094D802424010B -:10D4C000FFF7F4FF281C211CFFF7F1FA06210020CA -:10D4D00001F016F8281C211CFFF7E4FA38BDC046FD -:10D4E00014600F4038B5174D0023041C2B702878AA -:10D4F000132805D0152803D0FFF7EEFE2870F6E7B5 -:10D50000FFF7DAFFFFF7D2FF80210F480901FFF78D -:10D51000CEFAD821002000F0F3FF2202110E2504DC -:10D52000002000F0EDFF290E002000F0E9FFE1B23D -:10D530000020802400F0E4FF03482101FFF7B2FA45 -:10D5400038BDC04664F7002014600F40F8B5C7B27C -:10D55000161C8023CA19041C0D1C580082422ED8A8 -:10D5600080214A03531B9C4229D8FFF7A5FFFFF7F0 -:10D570009DFF802112480901FFF799FA022100203E -:10D5800000F0BEFF2002010E2404002000F0B8FFCE -:10D59000210E002000F0B4FFB9B2002000F0B0FF6F -:10D5A000341CA71BAF4205DA2178002000F0A8FF49 -:10D5B0000134F6E7802502482901FFF773FAF8BD28 -:10D5C00014600F40F8B5041C0D1C171CFFF784FEF7 -:10D5D000132801D01528F9D18023580385422FD86C -:10D5E00084422DD82A1982422AD880267300E1B2BB -:10D5F000581A86B2B54202D2AEB2002E07D0201C15 -:10D600003A1C311CFFF7A2FFA419BF19AD1B261C41 -:10D610003A1B611992198B1BFF2B07D98021301CF3 -:10D6200049000136FFF792FFFF36F1E7280A0602AC -:10D63000EDB23019BA19002D02D0A9B2FFF786FF5A -:10D64000F8BD0000F8B58023051C0E1C141C5803FF -:10D65000814231D885422FD84A1982422CD8FFF70F -:10D6600025FF802115480901FFF721FA0B21002031 -:10D6700000F046FF290C002000F042FFFF27290A96 -:10D680003940002000F03CFF291C3940002000F008 -:10D6900037FF0020391C00F033FFA519AC4206D03B -:10D6A0000020FF2100F02CFF20700134F6E78024D9 -:10D6B00002482101FFF7F6F9F8BDC04614600F409B -:10D6C000034B044918684018431E98417047C046F0 -:10D6D0000001401088A9CBED38B5041CFFF7F0FF1E -:10D6E000051E06D0104D211C18312A68201C9047B9 -:10D6F00018E0FFF717FE2378362B08D03A2B0ED10F -:10D70000201CE56125622430FFF786FE05E0074A0C -:10D7100007481368E36101682162258302E08020E5 -:10D7200041002183208B38BD0001401000320440AD -:10D7300000500440074B0849084A1860084B08602D -:10D740001060196801401960064B1A681040186093 -:10D750007047C046786100407C61004044610040F1 -:10D76000AC610040BC610040044B19680142FBD130 -:10D77000034B18601A680242FCD17047B061004048 -:10D78000B46100400C4A0D4B11680D4819401160FE -:10D7900002681A4002600B480B4A01681940016098 -:10D7A000106818401060094A094811681940116052 -:10D7B0000268134003607047C06100407FFF7FFF35 -:10D7C000C4610040C8610040CC610040D0610040AD -:10D7D000D46100400F2203061040D90F40000B18FF -:10D7E000014A99018818704700F80020054A8023F3 -:10D7F0009802002110601160034A13680342FBD0B5 -:10D800007047C046003105405031054038B50469C5 -:10D810000D1C201CFFF7DEFFC368C0229343856008 -:10D82000C3600F20204001218140034D0B1C2006C6 -:10D8300000D50B042B6038BDB0610040026938B5DB -:10D84000041C0F25154000F06DFA23690120A84043 -:10D850001A0600D50004FFF787FF38BD036910B52D -:10D860000F21041C1048194080220918134205D0CA -:10D87000890008680D4B03400B6003E08B001868BB -:10D8800090431860201C00F04DFA21690F220A40D5 -:10D8900001209040090600D50004FFF74BFF201C33 -:10D8A000FFF7CCFF10BDC04670180010FFFF7FFFD0 -:10D8B00010B504690F23234007490122200603D530 -:10D8C0009A400868140402E09A400868141C20403A -:10D8D000431E984110BDC046B8610040F8B50369C9 -:10D8E0000A60161C0F22051C1A40134801211C0651 -:10D8F00003D5914004680F0402E0914004680F1CB6 -:10D900003C40621E9441002C15D10C4C80202268B2 -:10D91000C7013A432260281CFFF7CAFF2168394239 -:10D92000F3D02268064B13402360002803D1281C43 -:10D93000311CFFF76BFFF8BDB06100404061004053 -:10D94000FFBFFFFF38B5051C0C1C281CFFF7B0FFFC -:10D950000028FAD10123281C2360211CFFF756FF61 -:10D9600038BD000002690F230448134019188B00CA -:10D970001A68034802431A607047C04670180010C6 -:10D9800001000100084B021C196801208A420AD1DB -:10D990000648C02302681905F820114002068818BD -:10D9A000434258410130704740F3002084610040F9 -:10D9B000034B1A68904202D1024849060160704741 -:10D9C00040F3002054610040054B1A68904205D195 -:10D9D000480680214A04034B02431A607047C04640 -:10D9E00040F300205461004008B500282BD11648B0 -:10D9F000164B0268196020218A430260FFF7C2FEBD -:10DA000001235842FFF796FE01204042FFF7ACFE8B -:10DA10000F4B01211A6802208A431A6018601868A7 -:10DA200002210B4A0842FAD10A4B092019600A491F -:10DA30000A4B086010680A490340136009480A4A03 -:10DA40000A4B0A60186008BD0430044040F300200F -:10DA500040610040A8610040A4610040FFFF00FF5A -:10DA6000586100404701000000F800204861004074 -:10DA700008B5064B1968884202D1082000F01EFE46 -:10DA80000348012302681A43026008BD40F30020E6 -:10DA900040610040F8B5041CFFF7D0FE63691868C8 -:10DAA000C779201C00F041FA051E06D000F052FA9A -:10DAB000071C281C00F054FA051C2669301CFFF7CF -:10DAC00089FE6B426B4180223904DF0393051943C1 -:10DAD0003943016001270021C16041600161876015 -:10DAE00041618161C161016244620F240B4834408D -:10DAF0002218930019680A4CAF00AD043D430C4056 -:10DB000025431D60320603D5C0221868160401E0C3 -:10DB10001E68C02006431E60F8BDC0467018001085 -:10DB2000F3FFF3FFF0B55D4B5D4A1968106885B0EF -:10DB300001400091196000D1ADE0CB0718D40098E6 -:10DB4000420600D4A7E0574E012437680125FFF7AD -:10DB500019FE6042FFF7EEFD6842FFF705FE381C34 -:10DB60000021FFF725FF381C002100F003FA92E0A6 -:10DB70004D4F00263B680393B3425DD14B4E0024CA -:10DB80003768A74270D1DAE7301CFFF723FE446AFA -:10DB9000002C58D0206A002855D02369181C019306 -:10DBA000FFF718FE011C28310A78051C2270293560 -:10DBB0002B78011C63702A310A78051CA2702B3562 -:10DBC0002B78011CE3702C310A78051C22712D354D -:10DBD0002B78011C63712E310A782F30A2710078E6 -:10DBE000A569E0710198FFF7F5FD031C283319784A -:10DBF000021C297029321378011C6B702A310A78B3 -:10DC0000031CAA702B331978021CE9702C3213788C -:10DC1000011C2B712D310A78031C6A712E3319787F -:10DC20002F30A9710078E871029D226A3D60201CA6 -:10DC300090470136062EA1D00121039AB1400291EE -:10DC40000A42F6D0A0E7029D3D60F2E73560201C55 -:10DC5000FFF7C0FD406A00280BD129040F420DD107 -:10DC60000134062C00D16AE70125A5402F42F4D0EB -:10DC7000ECE7436A002BF0D09847EEE7201C3160B8 -:10DC80008030FFF7A7FD406A0028E9D0426A002AE9 -:10DC9000E6D09047E4E705B0F0BDC04644610040DF -:10DCA0004861004040F30020AC610040BC6100408E -:10DCB00003690F211A060B40D00F5B001A180349A5 -:10DCC00090004058002800D1FEE7704744F3002040 -:10DCD000036870B51C690F2221061440CD0F660041 -:10DCE000AC190E4BA100CA58002A00D0FEE7C8505C -:10DCF000816844680B1C651EAA4206D280331E1C34 -:10DD0000803E336070660132F6E7054D00236219EC -:10DD1000D6018C192360606670BDC04644F30020B4 -:10DD2000FFFFFF0108B5FFF7C3FF72B6C368002B02 -:10DD300007D0C36819685A6EC16091681960936012 -:10DD4000F4E762B608BD000038B50C1C151CFFF7DF -:10DD5000AFFF8368002B42D072B683680022196837 -:10DD600081601A6062B6012119641E492A040A43BF -:10DD70005A64802251016218110B0A0380219C64AD -:10DD8000DA648A01A1180A0B1103C02219659101F6 -:10DD90006218110B0A0380215A65CA01A418210BCD -:10DDA0000A039A651D6672B65D6EEC68002C0DD094 -:10DDB000E9680A68002A01D0111CFAE71A1C0B60F6 -:10DDC000006840314032FFF789FD05E0191CEB6027 -:10DDD00000684031FFF7B6FD62B6002001E0012087 -:10DDE000404238BD8080000070B5061C0D1C141C1C -:10DDF000301C291C221CFFF7A7FF0130F8D000209F -:10DE000070BD08B500210A1CFFF7EEFF08BD10B574 -:10DE1000FFF74EFF002800D1FEE7C368002B10D0AB -:10DE20005A6C68210A4200D0FEE7110609D41A682C -:10DE3000596EC26072B68C681C608B6062B6131C2F -:10DE4000ECE710BD10B502786023041C1340402B92 -:10DE50000FD006D8002B09D0202B12D10B484268D6 -:10DE600009E0602B0DD1094BDA6804E0074A12681B -:10DE700001E006488268002A03D0201C9047002851 -:10DE800002D0201CFFF76EFD10BDC0467CE90020CB -:10DE900008B50021FFF7D6FF08BD10B50378041CB4 -:10DEA000DA090221002A00D10121FFF7CBFF201C53 -:10DEB000FFF7ADFF10BD10B50378041CDA0901218E -:10DEC000002A00D10221FFF7BDFF201CFFF79FFFB2 -:10DED00010BD10B5041CC38848780A78022801D008 -:10DEE000072803D1CA78887812020243A0699A42AF -:10DEF00000D91A1CFFF778FFE069FFF782FF0020C6 -:10DF000010BD436970B5DD68002408CD002B0AD030 -:10DF10001E7A8E42F9D1944203D11968FFF7D9FFD6 -:10DF200002E00134F1E7012070BD436910B51B69BF -:10DF3000021C002B0CD018680378002B08D0417805 -:10DF4000052903D181781469A14202D0C018F3E7F2 -:10DF5000181C10BD427903791102081C1843704740 -:10DF6000C078032318407047014B18607047C046C3 -:10DF700074F3002070B5041C0D1E0ED0C668002E70 -:10DF800018D0FFF7FFFC08CE002B13D01A7A82427C -:10DF9000F9D15968A942F6D100E00B1C20698342EF -:10DFA00000D02361044B1D68002D01D0201CA84720 -:10DFB000012000E0002070BD74F30020F8B5041CBF -:10DFC00040780E1C0B2800D9EAE000F093FB062AEB -:10DFD000E93EE9AF70E9CCBA53630025A94200D00D -:10DFE000DFE022781F210A40012A16D0AA4211D070 -:10DFF000022A00D0D5E0A7886B480F233B401E18AB -:10E00000B1000F68694B6A493B40581E83410B8041 -:10E01000A0693BE0A069674901E0A0696649022266 -:10E0200034E00025A94200D0BBE022781F21114036 -:10E03000022900D0B5E0A7885B480F233B401E189B -:10E04000B7003A685D48104012E00025A94200D0B0 -:10E05000A7E027781F203840022800D0A1E0A6883A -:10E060000F225149324053189F0038684F4E3043B9 -:10E07000386018E00025A94200D092E022781F20E5 -:10E080000240012A00D08CE0A0694D49FFF7ACFEA8 -:10E09000E06909E00025A94200D082E022781F2330 -:10E0A0001340012B7DD1A069FFF7ABFE79E0002979 -:10E0B0005BD1E0780138062872D800F01BFB04071A -:10E0C0002171711013006169096823E06069FFF72D -:10E0D00059FCA278011C201C02290AD10DE06369B9 -:10E0E000996817E06069FFF74DFCA278022802D119 -:10E0F000201C012101E0201C0221FFF702FF0CE09F -:10E10000A078EE2802D1201C2E4904E06769002681 -:10E110007D6807E0201CFFF7DCFE051C41E086421D -:10E12000F8D0013602CD0029F9D139E000291CD1FF -:10E13000A1786069FFF748FCA069FFF762FE351C13 -:10E140002FE0002911D1A7786069391CFFF712FF71 -:10E150000125002825D0002F03D16069311CFFF76D -:10E1600027FCA06918E0002904D00222B2429B419A -:10E170005D4216E0E1880125A94212D16569267247 -:10E180002E69002E01D072682272211C0831A0690C -:10E190000122FFF729FEE069FFF733FE002500E0CA -:10E1A0000125281CF8BDC0467018001001000100B0 -:10E1B00000FB00207AF3002078F30020FEFFFEFF32 -:10E1C0007CF3002041ED002001607047064A074BB8 -:10E1D00007491A60074A0860074B1060074A6C201D -:10E1E000402118601160704708080000846C0840E6 -:10E1F00010100A4014100A4018100A4000100A407B -:10E20000074A0849C12313600B60074B074A18608F -:10E210000749084B10606C20402208601A60704764 -:10E220000C6108401061084010000E4014000E40C0 -:10E2300018000E4000000E400C4A0D490823202013 -:10E24000136008600A6813420BD10A4B082205E0EC -:10E250000868024205D1023B002B02D00868024246 -:10E26000F6D0024B202119607047C04618100A40B2 -:10E2700000100A40102700000C4A0D4908232020F6 -:10E28000136008600A6813420BD10A4B082205E0AC -:10E290000868024205D1023B002B02D00868024206 -:10E2A000F6D0024B202119607047C04618000E407E -:10E2B00000000E40102700000E4B20211A6811426A -:10E2C00001D00D4B19600D4A0B4910600820086001 -:10E2D00008490B6818420BD1094B082205E0086871 -:10E2E000024205D1023B002B02D008680242F6D060 -:10E2F0007047C04600100A4018100A4008100A4033 -:10E30000102700000E4B20211A68114201D00D4B3E -:10E3100019600D4A0B4910600820086008490B6815 -:10E3200018420BD1094B082205E00868024205D1CA -:10E33000023B002B02D008680242F6D07047C0466C -:10E3400000000E4018000E4008000E40102700008C -:10E350000E4B20201A68104201D00D4908600C4A6B -:10E3600008230A491360086803420BD1094B0822AD -:10E3700005E00868024205D1023B002B02D0086884 -:10E380000242F6D004490B68D8B2704700100A4028 -:10E3900018100A401027000008100A40124B2021D4 -:10E3A0001A68114201D0114B19600422002818D0BC -:10E3B0000D490A600D4A08230B491360086803429F -:10E3C0000BD10B4B082205E00868024205D1023B45 -:10E3D000002B02D008680242F6D006490B68D8B27A -:10E3E000704702480260E5E700000E4018000E404A -:10E3F0001027000008000E40064B20201A6810422B -:10E4000001D005490860034B0349102208201A6017 -:10E410000860704700100A4018100A40064B202080 -:10E420001A68104201D005490860034B03491022C5 -:10E4300008201A600860704700000E4018000E4067 -:10E44000F0B55F464D4656464446F0B483B09C4610 -:10E450000CAB1C780DAD2E780EAFA34610ACB146B8 -:10E460003E7827780FAB1D7801971A4B002824D0EF -:10E4700019481A4F03603C6801232343184C3B6042 -:10E480001848194FA0460023036044464B462360BA -:10E4900011435B4662461C0211432143396002214D -:10E4A0003143019E29433143CDB2056003B03CBCEA -:10E4B00090469946A246AB46F0BD0C4F0C483B60D7 -:10E4C000036801271F4307600A480B4F80460B482B -:10E4D000D9E7C04600080009980005402816054005 -:10E4E00010500C4004500C4000500C40940005406B -:10E4F000181505401030084000300840043008402E -:10E5000030B5002816D10D4D0D4B02241A68144267 -:10E51000FCD0296000280BD1094810210468214251 -:10E52000FCD104201A681042FCD02D68A8B230BD7E -:10E530000448F2E7044D034BE7E7C04608300840C3 -:10E540000C3008400C500C4008500C40FEE7C04610 -:10E550007047C0464F4A504B9A421FD2DF1C141DD1 -:10E56000381B810801318F004C4B381F4107FE18C2 -:10E57000C80F02CB1160B3420FD0002803D001CBEB -:10E5800001C4B34209D0181C20C8211C20C15B68FB -:10E590006360031D0C1DB342F5D1D219404882427D -:10E5A00016D2C41C131DE51AA908013188001018E1 -:10E5B000C41A0021650708D511601A1C04331160C4 -:10E5C000834205D01A1D1960131D11608342F9D1D1 -:10E5D0003448354988421BD20331061D8F1BBD08C4 -:10E5E00001246F1C2C40026801259047BD420FD0CA -:10E5F000002C04D008CE02259847BD4208D0341C18 -:10E6000001CC804702357668B047261DBD42F6D161 -:10E61000264B27498B421BD203311E1D8F1BBD0881 -:10E6200001246F1C2C401A6801259047BD420FD071 -:10E63000002C04D001CE02258047BD4208D0341CF6 -:10E6400008CC984702357668B047261DBD42F6D102 -:10E65000FDF7C8FD1748184988421BD20331061D33 -:10E660008F1BBD0801246F1C2C40026801259047B8 -:10E67000BD420FD0002C04D008CE02259847BD42E1 -:10E6800008D0341C01CC804702357668B047261D7F -:10E69000BD42F6D130EF002030EF00206CEC0020BE -:10E6A00004FB00206CEC00206CEC00206CEC0020E3 -:10E6B0006CEC00206CEC00206CEC00204309044A58 -:10E6C00099008B181F210840012282401A60704770 -:10E6D00000E100E01F2803D8044BC0180170704708 -:10E6E0000F22034B1040C0180170F8E700E400E06F -:10E6F00014ED00E002B4714649084900095C490084 -:10E700008E4402BC7047C046002934D00123002249 -:10E7100010B488422CD301242407A14204D28142A0 -:10E7200002D209011B01F8E7E400A14204D28142B0 -:10E7300002D249005B00F8E7884201D3401A1A432D -:10E740004C08A04202D3001B5C0822438C08A04264 -:10E7500002D3001B9C082243CC08A04202D3001B1A -:10E76000DC082243002803D01B0901D00909E3E794 -:10E77000101C10BC7047002801D00020C04307B413 -:10E78000024802A14018029003BDC04619000000D3 -:10E790000029F0D003B5FFF7B9FF0EBC4243891A38 -:10E7A0001847C0467047C0469C460304F0B51B0C92 -:10E7B00017043F0C150C1E1C041C000C7E436B43FD -:10E7C00047434543FB18300C1818874202D980276D -:10E7D0007B02ED18070CED1967467C434A4336046B -:10E7E000330CA11800044919C018F0BDF0B54F460C -:10E7F0004646C0B40F2A72D90B1C03439C0700D0B5 -:10E8000090E0171C103F3C09013427010C683B1CA9 -:10E810000460103BDE064B68CD1943608C68F60F30 -:10E820008460CB68041CC3600B1C103310349D4201 -:10E8300027D0002E0BD0196821605E686660996849 -:10E84000A160DE681033E66010349D4219D019686B -:10E8500021605E6866609968A160DE68191CE660E8 -:10E860001B69261C23614C6974618B69B361CC6997 -:10E870001031F4610B1C1036341C103310349D42DF -:10E88000E5D13F180F21B846114003294DD904396D -:10E890008E08B3000433EC18A446043B2C1C5F071D -:10E8A00008CC4146B14608C1FE0F64450FD0002E8A -:10E8B00003D080CC80C1644509D0271C08CF0E1C32 -:10E8C00008C664684C603C1D311D6445F5D149465D -:10E8D00001318E000327AD193A40464401E00D1C7A -:10E8E000061C002A1AD02F78B218F343D11801243D -:10E8F000377001360C40013596420FD0002C05D000 -:10E900002B78013533700136964207D02978317063 -:10E910006C780235747002369642F7D10CBC904682 -:10E920009946F0BD061C0D1CDDE73E1C0A1CD8E70D -:10E93000031C0A7801311A700133002AF9D170479B -:10E940000023C25C0133002AFBD1581E7047C04629 -:10E950002076312E302E302D726331302D342D67DC -:10E96000386135373564362D6469727479203230F8 -:10E9700032302D30352D303700000000BDDF002053 -:10E980000000000005C30020000000001FED002073 -:10E9900023ED002074ED0020D7EC002000000000E3 -:10E9A00030313233343536373839414243444546C5 -:10E9B000E08060000F0E0D0C0B0A09080706050425 -:10E9C000030201000101010101020202020203032C -:10E9D00003030304040404040505050505060606EF -:10E9E00006060707070707070707070708080808B5 -:10E9F000080808080808090909090909090909098D -:10EA00000A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B60 -:10EA10000B0B0B0B0B0B0B0B0B0B0B0B0B0B0C0C44 -:10EA20000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C26 -:10EA30000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C16 -:10EA40000C0C0C0C0C0C0D0D0D0D0D0D0D0D0D0DFC -:10EA50000D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0DE6 -:10EA60000D0D0D0D0D0D0D0D0D0D0D0D0D0D0E0ED4 -:10EA70000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EB6 -:10EA80000E0E0E0E0E0E0E0E0E0E0E0E0F0F0F0FA2 -:10EA90000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F86 -:10EAA0000F0F0F0F0F0F0F0F0F0F10101010101070 -:10EAB0001010101010101010101010101010101056 -:10EAC000101010101010101011111111111111113E -:10EAD0001111111111111111111111111111111126 -:10EAE0001111111111111111111111111111111116 -:10EAF0001111111111111111111111111111111106 -:10EB000011111111111111111111111111111111F5 -:10EB100011111111111111111111111111111111E5 -:10EB200011111111111111111111111111111111D5 -:10EB300011111111111111111111111111111111C5 -:10EB400011111111111111111111111111111111B5 -:10EB50001111111112121212121212121212121299 -:10EB60001212121212121212121212121212121285 -:10EB70001212121212121212121212121212121275 -:10EB80001212121212121212121212121212121265 -:10EB90001212121212121212121212121212121255 -:10EBA0001212121212121212121212121212121245 -:10EBB0001212121212121212121212121212121235 -:10EBC0001212121212121212121212121212121225 -:10EBD0001212121212121212121212121212131313 -:10EBE00013131313131313131313131313131313F5 -:10EBF00013131313131313131313131313131313E5 -:10EC000013131313131313131313131313131313D4 -:10EC10001313131313131313131313130802DF081F -:10EC200002BE08028B08027B080269080258000233 -:10EC30004400024400023400023400022400022492 -:10EC4000000214000213000213000211000200006F -:10EC500041000041000040000040000008040C0298 -:0CEC60000A060E0109050D030B070F004A -:10EC6C000430002008300020001C00200030002060 -:10EC7C00041C0020081C00200A06000200000040B2 -:10EC8C0001000902200001010080FA0904000002C1 -:10EC9C00FFFFFF000705810240000007050202404C -:10ECAC00000000280000000001040001000000002A -:10ECBC00000000010157494E555342000057494E80 -:10ECCC00555342000000000000000036034100498B -:10ECDC00005200530050005900200053004E003ADF -:10ECEC000020002000200020002000200020002018 -:10ECFC000020002000200020002000200020002008 -:10ED0C00001201000200000040501DA16000010132 -:10ED1C00020301040309041E037700770077002E19 -:10ED2C00006100690072007300700079002E0063AE -:10ED3C00006F006D0012034D00530046005400316B -:10ED4C00003000300013000902200001010080FA9D -:10ED5C000904000002FFFFFF00070581020002000A -:10ED6C0007050202000200000E0341004900520098 -:10ED7C005300500059008E000000000105000100F6 -:10ED8C0084000000010000002800440065007600AB -:10ED9C0069006300650049006E0074006500720034 -:10EDAC00660061006300650047005500490044009F -:10EDBC0000004E0000007B0034004100460034008F -:10EDCC0031003800360035002D0042004300310080 -:10EDDC0045002D0037003400350041002D0039006E -:10EDEC003800320036002D00390037004300410056 -:10EDFC004100380045004500300034003700460023 -:10EE0C007D00000053ED0020010000000200000016 -:10EE1C000DED00208CE9002084EC00203CEE00205D -:10EE2C00000000008EEC002001000000010000003A -:10EE3C0010EE002030EE00200000000078EE0020E4 -:10EE4C000400000040F5002000000000A0EE0020AF -:10EE5C0001000000C0F2002000000000C8EE0020FD -:10EE6C0004000000C0F000200000000000000000C2 -:10EE7C000000000000000000000000000000000086 -:10EE8C001CEE0020C8EE002078EE002091DE002061 -:10EE9C009BDE0020000000000000000000000000CD -:10EEAC0000000000020000001CEE0020000000002A -:10EEBC00A0EE0020000000000FDE0020000000008B -:10EECC0000000000000000000000000080000000B6 -:10EEDC001CEE0020C8EE002078EE002000000000A0 -:10EEEC00B7DE002000EF00200100000040F0002001 -:10EEFC000000000000000000000000000000000006 -:10EF0C0000000000810000001CEE002000EF00203B -:10EF1C0000000000000000000FDE002000100020A8 -:04EF2C0001000000E0 -:040000052000E5559D -:00000001FF diff --git a/airspy_m0/airspy_m0.list b/airspy_m0/airspy_m0.list deleted file mode 100644 index 14570f7..0000000 --- a/airspy_m0/airspy_m0.list +++ /dev/null @@ -1,11831 +0,0 @@ - -airspy_m0.elf: file format elf32-littlearm - - -Disassembly of section .text: - -2000c000 : -2000c000: e0 0f 00 20 55 e5 00 20 51 e5 00 20 d5 cc 00 20 ... U.. Q.. ... - ... -2000c02c: 51 e5 00 20 00 00 00 00 00 00 00 00 51 e5 00 20 Q.. ........Q.. -2000c03c: 51 e5 00 20 4d e5 00 20 d9 c1 00 20 4d e5 00 20 Q.. M.. ... M.. -2000c04c: 00 00 00 00 4d e5 00 20 4d e5 00 20 4d e5 00 20 ....M.. M.. M.. -2000c05c: 4d e5 00 20 25 db 00 20 4d e5 00 20 4d e5 00 20 M.. %.. M.. M.. -2000c06c: 4d e5 00 20 4d e5 00 20 4d e5 00 20 4d e5 00 20 M.. M.. M.. M.. -2000c07c: 4d e5 00 20 4d e5 00 20 4d e5 00 20 4d e5 00 20 M.. M.. M.. M.. -2000c08c: 4d e5 00 20 4d e5 00 20 4d e5 00 20 4d e5 00 20 M.. M.. M.. M.. -2000c09c: 4d e5 00 20 4d e5 00 20 4d e5 00 20 4d e5 00 20 M.. M.. M.. M.. -2000c0ac: 4d e5 00 20 4d e5 00 20 4d e5 00 20 4d e5 00 20 M.. M.. M.. M.. -2000c0bc: 4d e5 00 20 M.. - -2000c0c0 : - break; - } -} - -void usb_configuration_changed(usb_device_t* const device) -{ -2000c0c0: b508 push {r3, lr} - if( device->configuration->number ) -2000c0c2: 6903 ldr r3, [r0, #16] -2000c0c4: 6858 ldr r0, [r3, #4] -2000c0c6: 2800 cmp r0, #0 -2000c0c8: d001 beq.n 2000c0ce - { - /* RECEIVER ON */ - set_receiver_mode(get_receiver_mode()); -2000c0ca: f000 f915 bl 2000c2f8 - } else - { - /* RECEIVER OFF */ - /* Configuration number equal 0 means usb bus reset. */ - set_receiver_mode(RECEIVER_MODE_OFF); -2000c0ce: f000 f8f9 bl 2000c2c4 - } -} -2000c0d2: bd08 pop {r3, pc} - -2000c0d4 : - } -} - -void set_samplerate_m4(uint8_t conf_num) -{ - set_samplerate->conf = conf_num; -2000c0d4: 4b05 ldr r3, [pc, #20] ; (2000c0ec ) - set_samplerate->cmd = SET_SAMPLERATE_CMD; -2000c0d6: 2201 movs r2, #1 - } -} - -void set_samplerate_m4(uint8_t conf_num) -{ - set_samplerate->conf = conf_num; -2000c0d8: 6819 ldr r1, [r3, #0] -2000c0da: 7048 strb r0, [r1, #1] - set_samplerate->cmd = SET_SAMPLERATE_CMD; -2000c0dc: 700a strb r2, [r1, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); -2000c0de: f3bf 8f4f dsb sy - __asm("sev"); -2000c0e2: bf40 sev - signal_sev(); - - /* Wait until M4 have finished executing the command (it set the data to 0) */ - while(1) - { - if(set_samplerate->raw == 0) -2000c0e4: 6808 ldr r0, [r1, #0] -2000c0e6: 2800 cmp r0, #0 -2000c0e8: d1fc bne.n 2000c0e4 - break; - } -} -2000c0ea: 4770 bx lr -2000c0ec: 2000ec6c .word 0x2000ec6c - -2000c0f0 : - -void set_packing_m4(uint8_t state) -{ - set_packing->conf = state; -2000c0f0: 4b05 ldr r3, [pc, #20] ; (2000c108 ) - set_packing->cmd = SET_PACKING_CMD; -2000c0f2: 2201 movs r2, #1 - } -} - -void set_packing_m4(uint8_t state) -{ - set_packing->conf = state; -2000c0f4: 6819 ldr r1, [r3, #0] -2000c0f6: 7048 strb r0, [r1, #1] - set_packing->cmd = SET_PACKING_CMD; -2000c0f8: 700a strb r2, [r1, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); -2000c0fa: f3bf 8f4f dsb sy - __asm("sev"); -2000c0fe: bf40 sev - - signal_sev(); - - while(1) - { - if(set_packing->raw == 0) -2000c100: 6808 ldr r0, [r1, #0] -2000c102: 2800 cmp r0, #0 -2000c104: d1fc bne.n 2000c100 - break; - } -} -2000c106: 4770 bx lr -2000c108: 2000ec70 .word 0x2000ec70 - -2000c10c : - set_receiver_mode(RECEIVER_MODE_OFF); - } -} - -void ADCHS_start(uint8_t conf_num) -{ -2000c10c: b538 push {r3, r4, r5, lr} - -set_sample_r_params_t set_sample_r_params; - -__attribute__ ((always_inline)) static inline void start_stop_adchs_m4(uint8_t conf_num, uint8_t command) -{ - start_adchs->conf = conf_num; -2000c10e: 4b20 ldr r3, [pc, #128] ; (2000c190 ) - set_receiver_mode(RECEIVER_MODE_OFF); - } -} - -void ADCHS_start(uint8_t conf_num) -{ -2000c110: 1c05 adds r5, r0, #0 - -set_sample_r_params_t set_sample_r_params; - -__attribute__ ((always_inline)) static inline void start_stop_adchs_m4(uint8_t conf_num, uint8_t command) -{ - start_adchs->conf = conf_num; -2000c112: 6818 ldr r0, [r3, #0] - start_adchs->cmd = command; -2000c114: 2201 movs r2, #1 - -set_sample_r_params_t set_sample_r_params; - -__attribute__ ((always_inline)) static inline void start_stop_adchs_m4(uint8_t conf_num, uint8_t command) -{ - start_adchs->conf = conf_num; -2000c116: 7045 strb r5, [r0, #1] - start_adchs->cmd = command; -2000c118: 7002 strb r2, [r0, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); -2000c11a: f3bf 8f4f dsb sy - __asm("sev"); -2000c11e: bf40 sev - signal_sev(); - - /* Wait until M4 have finished executing the command (it set the data to 0) */ - while(1) - { - if(start_adchs->raw == 0) -2000c120: 6801 ldr r1, [r0, #0] -2000c122: 2900 cmp r1, #0 -2000c124: d1fc bne.n 2000c120 - start_stop_adchs_m4(conf_num, START_ADCHS_CMD); - - //enable_r820t_power(); - - /* Re-Init I2C0 & I2C1 after PLL1 frequency is modified (for I2C1 also because PowerOn on R820T) */ - i2c0_init(airspy_conf->i2c_conf.i2c0_pll1_ls_hs_conf_val); /* Si5351C I2C peripheral */ -2000c126: 4c1b ldr r4, [pc, #108] ; (2000c194 ) -2000c128: 6823 ldr r3, [r4, #0] -2000c12a: 8b18 ldrh r0, [r3, #24] -2000c12c: f002 f84e bl 2000e1cc - i2c1_init(airspy_conf->i2c_conf.i2c1_pll1_hs_conf_val); /* R820T I2C peripheral */ -2000c130: 6820 ldr r0, [r4, #0] -2000c132: 8b40 ldrh r0, [r0, #26] -2000c134: f002 f864 bl 2000e200 - - if((conf_num & AIRSPY_SAMPLERATE_CONF_ALT) == AIRSPY_SAMPLERATE_CONF_ALT) -2000c138: b26a sxtb r2, r5 -2000c13a: 2a00 cmp r2, #0 -2000c13c: da12 bge.n 2000c164 - { - conf_num = conf_num & (~AIRSPY_SAMPLERATE_CONF_ALT); - r820t_init(&airspy_conf->r820t_conf_rw, airspy_conf->airspy_m0_m4_alt_conf[conf_num].airspy_m0_conf.r820t_if_freq); -2000c13e: 207f movs r0, #127 ; 0x7f -2000c140: 6821 ldr r1, [r4, #0] -2000c142: 4005 ands r5, r0 -2000c144: 2218 movs r2, #24 -2000c146: 4355 muls r5, r2 -2000c148: 1c08 adds r0, r1, #0 -2000c14a: 3104 adds r1, #4 -2000c14c: 6fcb ldr r3, [r1, #124] ; 0x7c -2000c14e: 3048 adds r0, #72 ; 0x48 -2000c150: 1959 adds r1, r3, r5 -2000c152: 6909 ldr r1, [r1, #16] -2000c154: f001 f820 bl 2000d198 - r820t_set_if_bandwidth(&airspy_conf->r820t_conf_rw, airspy_conf->airspy_m0_m4_alt_conf[conf_num].airspy_m0_conf.r820t_if_bw); -2000c158: 6824 ldr r4, [r4, #0] -2000c15a: 1c20 adds r0, r4, #0 -2000c15c: 3404 adds r4, #4 -2000c15e: 3048 adds r0, #72 ; 0x48 -2000c160: 6fe3 ldr r3, [r4, #124] ; 0x7c -2000c162: e00d b.n 2000c180 - }else - { - r820t_init(&airspy_conf->r820t_conf_rw, airspy_conf->airspy_m0_m4_conf[conf_num].airspy_m0_conf.r820t_if_freq); -2000c164: 2318 movs r3, #24 -2000c166: 6821 ldr r1, [r4, #0] -2000c168: 435d muls r5, r3 -2000c16a: 6f8a ldr r2, [r1, #120] ; 0x78 -2000c16c: 1c08 adds r0, r1, #0 -2000c16e: 1951 adds r1, r2, r5 -2000c170: 3048 adds r0, #72 ; 0x48 -2000c172: 6909 ldr r1, [r1, #16] -2000c174: f001 f810 bl 2000d198 - r820t_set_if_bandwidth(&airspy_conf->r820t_conf_rw, airspy_conf->airspy_m0_m4_conf[conf_num].airspy_m0_conf.r820t_if_bw); -2000c178: 6824 ldr r4, [r4, #0] -2000c17a: 1c20 adds r0, r4, #0 -2000c17c: 6fa3 ldr r3, [r4, #120] ; 0x78 -2000c17e: 3048 adds r0, #72 ; 0x48 -2000c180: 195d adds r5, r3, r5 -2000c182: 7d29 ldrb r1, [r5, #20] -2000c184: f001 f828 bl 2000d1d8 - } - phase = 1; -2000c188: 4a03 ldr r2, [pc, #12] ; (2000c198 ) -2000c18a: 2001 movs r0, #1 -2000c18c: 6010 str r0, [r2, #0] -} -2000c18e: bd38 pop {r3, r4, r5, pc} -2000c190: 2000ec78 .word 0x2000ec78 -2000c194: 2000ef28 .word 0x2000ef28 -2000c198: 2000f000 .word 0x2000f000 - -2000c19c : - -void ADCHS_stop(uint8_t conf_num) -{ -2000c19c: b510 push {r4, lr} -2000c19e: 1c04 adds r4, r0, #0 - r820t_standby(); -2000c1a0: f001 f840 bl 2000d224 - -set_sample_r_params_t set_sample_r_params; - -__attribute__ ((always_inline)) static inline void start_stop_adchs_m4(uint8_t conf_num, uint8_t command) -{ - start_adchs->conf = conf_num; -2000c1a4: 4b0a ldr r3, [pc, #40] ; (2000c1d0 ) - start_adchs->cmd = command; -2000c1a6: 2202 movs r2, #2 - -set_sample_r_params_t set_sample_r_params; - -__attribute__ ((always_inline)) static inline void start_stop_adchs_m4(uint8_t conf_num, uint8_t command) -{ - start_adchs->conf = conf_num; -2000c1a8: 6818 ldr r0, [r3, #0] -2000c1aa: 7044 strb r4, [r0, #1] - start_adchs->cmd = command; -2000c1ac: 7002 strb r2, [r0, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); -2000c1ae: f3bf 8f4f dsb sy - __asm("sev"); -2000c1b2: bf40 sev - signal_sev(); - - /* Wait until M4 have finished executing the command (it set the data to 0) */ - while(1) - { - if(start_adchs->raw == 0) -2000c1b4: 6801 ldr r1, [r0, #0] -2000c1b6: 2900 cmp r1, #0 -2000c1b8: d1fc bne.n 2000c1b4 -{ - r820t_standby(); - start_stop_adchs_m4(conf_num, STOP_ADCHS_CMD); - - /* Re-Init I2C0 & I2C1 after PLL1 frequency is modified */ - i2c0_init(airspy_conf->i2c_conf.i2c0_pll1_ls_hs_conf_val); /* Si5351C I2C peripheral */ -2000c1ba: 4c06 ldr r4, [pc, #24] ; (2000c1d4 ) -2000c1bc: 6823 ldr r3, [r4, #0] -2000c1be: 8b18 ldrh r0, [r3, #24] -2000c1c0: f002 f804 bl 2000e1cc - i2c1_init(airspy_conf->i2c_conf.i2c1_pll1_ls_conf_val); /* R820T I2C peripheral */ -2000c1c4: 6820 ldr r0, [r4, #0] -2000c1c6: 8b80 ldrh r0, [r0, #28] -2000c1c8: f002 f81a bl 2000e200 -} -2000c1cc: bd10 pop {r4, pc} -2000c1ce: 46c0 nop ; (mov r8, r8) -2000c1d0: 2000ec78 .word 0x2000ec78 -2000c1d4: 2000ef28 .word 0x2000ef28 - -2000c1d8 : -/***************************/ -/* adchs_isr managed by M4 */ -/***************************/ -void m4core_isr(void) -{ - MASTER_TXEV_QUIT(); -2000c1d8: 4b01 ldr r3, [pc, #4] ; (2000c1e0 ) -2000c1da: 2200 movs r2, #0 -2000c1dc: 601a str r2, [r3, #0] -} -2000c1de: 4770 bx lr -2000c1e0: 40043130 .word 0x40043130 - -2000c1e4
: - -/* -M0 Core Manage USB -*/ -int main(void) -{ -2000c1e4: b570 push {r4, r5, r6, lr} -2000c1e6: b08c sub sp, #48 ; 0x30 - iap_cmd_res_t iap_cmd_res; - usb_descriptor_serial_number_t serial_number; - airspy_usb_req_init(); -2000c1e8: f000 fc72 bl 2000cad0 - - /* R820T Startup */ - r820t_startup(&airspy_conf->r820t_conf_rw); -2000c1ec: 4b27 ldr r3, [pc, #156] ; (2000c28c ) - - usb_endpoint_init(&usb_endpoint_control_out); - usb_endpoint_init(&usb_endpoint_control_in); - - /* Read IAP Serial Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO; -2000c1ee: ac01 add r4, sp, #4 - iap_cmd_res_t iap_cmd_res; - usb_descriptor_serial_number_t serial_number; - airspy_usb_req_init(); - - /* R820T Startup */ - r820t_startup(&airspy_conf->r820t_conf_rw); -2000c1f0: 6818 ldr r0, [r3, #0] -2000c1f2: 3048 adds r0, #72 ; 0x48 -2000c1f4: f001 f84a bl 2000d28c - - usb_set_configuration_changed_cb(usb_configuration_changed); -2000c1f8: 4825 ldr r0, [pc, #148] ; (2000c290 ) -2000c1fa: f001 feb5 bl 2000df68 - usb_peripheral_reset(); -2000c1fe: f001 faf5 bl 2000d7ec - - usb_device_init(0, &usb_device); -2000c202: 4d24 ldr r5, [pc, #144] ; (2000c294 ) -2000c204: 2000 movs r0, #0 -2000c206: 1c29 adds r1, r5, #0 -2000c208: f001 fbee bl 2000d9e8 - - usb_queue_init(&usb_endpoint_control_out_queue); -2000c20c: 4822 ldr r0, [pc, #136] ; (2000c298 ) -2000c20e: f001 fd5f bl 2000dcd0 - usb_queue_init(&usb_endpoint_control_in_queue); -2000c212: 4822 ldr r0, [pc, #136] ; (2000c29c ) -2000c214: f001 fd5c bl 2000dcd0 - usb_queue_init(&usb_endpoint_bulk_out_queue); -2000c218: 4821 ldr r0, [pc, #132] ; (2000c2a0 ) -2000c21a: f001 fd59 bl 2000dcd0 - usb_queue_init(&usb_endpoint_bulk_in_queue); -2000c21e: 4821 ldr r0, [pc, #132] ; (2000c2a4 ) -2000c220: f001 fd56 bl 2000dcd0 - - usb_endpoint_init(&usb_endpoint_control_out); -2000c224: 4820 ldr r0, [pc, #128] ; (2000c2a8 ) -2000c226: f001 fc35 bl 2000da94 - usb_endpoint_init(&usb_endpoint_control_in); -2000c22a: 4820 ldr r0, [pc, #128] ; (2000c2ac ) -2000c22c: f001 fc32 bl 2000da94 - - /* Read IAP Serial Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO; -2000c230: 203a movs r0, #58 ; 0x3a -2000c232: 7020 strb r0, [r4, #0] - iap_cmd_call(&iap_cmd_res); -2000c234: 1c20 adds r0, r4, #0 -2000c236: f001 fa4f bl 2000d6d8 - if(iap_cmd_res.status_res.status_ret == CMD_SUCCESS) -2000c23a: 8b21 ldrh r1, [r4, #24] -2000c23c: 2900 cmp r1, #0 -2000c23e: d103 bne.n 2000c248 - { - /* Only retrieve 2 last 32bits for Serial Number */ - serial_number.sn_32b[0] = iap_cmd_res.status_res.iap_result[2]; -2000c240: 6a60 ldr r0, [r4, #36] ; 0x24 - serial_number.sn_32b[1] = iap_cmd_res.status_res.iap_result[3]; -2000c242: 6aa1 ldr r1, [r4, #40] ; 0x28 - usb_descriptor_fill_string_serial_number(serial_number); -2000c244: f000 fcc4 bl 2000cbd0 - } - - nvic_set_priority(NVIC_USB0_IRQ, 255); -2000c248: 2008 movs r0, #8 -2000c24a: 21ff movs r1, #255 ; 0xff -2000c24c: f002 fa42 bl 2000e6d4 - - nvic_set_priority(NVIC_M4CORE_IRQ, 1); -2000c250: 2001 movs r0, #1 -2000c252: 1c01 adds r1, r0, #0 -2000c254: f002 fa3e bl 2000e6d4 - nvic_enable_irq(NVIC_M4CORE_IRQ); -2000c258: 2001 movs r0, #1 -2000c25a: f002 fa2f bl 2000e6bc - - usb_run(&usb_device); -2000c25e: 1c28 adds r0, r5, #0 -2000c260: f001 fc06 bl 2000da70 - - while(true) - { - signal_wfe(); - - uint32_t offset = get_usb_buffer_offset(); -2000c264: 4a12 ldr r2, [pc, #72] ; (2000c2b0 ) - uint32_t length = get_usb_buffer_length(); -2000c266: 4b13 ldr r3, [pc, #76] ; (2000c2b4 ) - - if(offset != *last_offset_m0) -2000c268: 4d13 ldr r5, [pc, #76] ; (2000c2b8 ) - - while(true) - { - signal_wfe(); - - uint32_t offset = get_usb_buffer_offset(); -2000c26a: 6816 ldr r6, [r2, #0] - uint32_t length = get_usb_buffer_length(); -2000c26c: 6818 ldr r0, [r3, #0] - - if(offset != *last_offset_m0) -2000c26e: 6829 ldr r1, [r5, #0] -If the event register is 1, WFE clears it to 0 and completes immediately. -Instruction for Cortex M0, M3/M4 -*/ -__attribute__ ((always_inline)) static inline void signal_wfe(void) -{ - __asm("wfe"); -2000c270: bf20 wfe - - while(true) - { - signal_wfe(); - - uint32_t offset = get_usb_buffer_offset(); -2000c272: 6834 ldr r4, [r6, #0] - uint32_t length = get_usb_buffer_length(); -2000c274: 6802 ldr r2, [r0, #0] - - if(offset != *last_offset_m0) -2000c276: 680b ldr r3, [r1, #0] -2000c278: 429c cmp r4, r3 -2000c27a: d0f9 beq.n 2000c270 - { - usb_transfer_schedule_block(&usb_endpoint_bulk_in, &usb_bulk_buffer[offset], length); -2000c27c: 4e0f ldr r6, [pc, #60] ; (2000c2bc ) -2000c27e: 4810 ldr r0, [pc, #64] ; (2000c2c0 ) -2000c280: 19a1 adds r1, r4, r6 -2000c282: f001 fdb1 bl 2000dde8 - *last_offset_m0 = offset; -2000c286: 682a ldr r2, [r5, #0] -2000c288: 6014 str r4, [r2, #0] -2000c28a: e7eb b.n 2000c264 -2000c28c: 2000ef28 .word 0x2000ef28 -2000c290: 2000c0c1 .word 0x2000c0c1 -2000c294: 2000ee1c .word 0x2000ee1c -2000c298: 2000ee48 .word 0x2000ee48 -2000c29c: 2000ee68 .word 0x2000ee68 -2000c2a0: 2000ee58 .word 0x2000ee58 -2000c2a4: 2000eef0 .word 0x2000eef0 -2000c2a8: 2000ee78 .word 0x2000ee78 -2000c2ac: 2000eec8 .word 0x2000eec8 -2000c2b0: 2000ec74 .word 0x2000ec74 -2000c2b4: 2000ec7c .word 0x2000ec7c -2000c2b8: 2000ec80 .word 0x2000ec80 -2000c2bc: 20004000 .word 0x20004000 -2000c2c0: 2000ef00 .word 0x2000ef00 - -2000c2c4 : -extern usb_endpoint_t usb_endpoint_bulk_in; - -static volatile receiver_mode_t receiver_mode = RECEIVER_MODE_OFF; - -void set_receiver_mode(const receiver_mode_t new_receiver_mode) -{ -2000c2c4: b538 push {r3, r4, r5, lr} -2000c2c6: 1c04 adds r4, r0, #0 - usb_streaming_disable(); -2000c2c8: f000 fbf6 bl 2000cab8 -2000c2cc: 4d07 ldr r5, [pc, #28] ; (2000c2ec ) - - if( new_receiver_mode == RECEIVER_MODE_RX ) -2000c2ce: 2c01 cmp r4, #1 -2000c2d0: d106 bne.n 2000c2e0 - { - usb_endpoint_init(&usb_endpoint_bulk_in); -2000c2d2: 4807 ldr r0, [pc, #28] ; (2000c2f0 ) -2000c2d4: f001 fbde bl 2000da94 - ADCHS_start(sample_rate_conf_no); -2000c2d8: 7828 ldrb r0, [r5, #0] -2000c2da: f7ff ff17 bl 2000c10c -2000c2de: e002 b.n 2000c2e6 - }else - { - ADCHS_stop(sample_rate_conf_no); -2000c2e0: 7828 ldrb r0, [r5, #0] -2000c2e2: f7ff ff5b bl 2000c19c - } - receiver_mode = new_receiver_mode; -2000c2e6: 4b03 ldr r3, [pc, #12] ; (2000c2f4 ) -2000c2e8: 701c strb r4, [r3, #0] -} -2000c2ea: bd38 pop {r3, r4, r5, pc} -2000c2ec: 2000f500 .word 0x2000f500 -2000c2f0: 2000ef00 .word 0x2000ef00 -2000c2f4: 2000f004 .word 0x2000f004 - -2000c2f8 : - -receiver_mode_t get_receiver_mode(void) -{ - return receiver_mode; -2000c2f8: 4b01 ldr r3, [pc, #4] ; (2000c300 ) -2000c2fa: 7818 ldrb r0, [r3, #0] -} -2000c2fc: 4770 bx lr -2000c2fe: 46c0 nop ; (mov r8, r8) -2000c300: 2000f004 .word 0x2000f004 - -2000c304 : - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE_SECTOR] = usb_vendor_request_erase_sector_spiflash; -} - -usb_request_status_t usb_vendor_request(usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c304: b508 push {r3, lr} - usb_request_status_t status = USB_REQUEST_STATUS_STALL; - - if( endpoint->setup.request <= AIRSPY_CMD_MAX ) -2000c306: 7843 ldrb r3, [r0, #1] -2000c308: 2b1b cmp r3, #27 -2000c30a: d806 bhi.n 2000c31a - { - usb_request_handler_fn handler = vendor_request_handler[endpoint->setup.request]; -2000c30c: 4a05 ldr r2, [pc, #20] ; (2000c324 ) -2000c30e: 009b lsls r3, r3, #2 -2000c310: 589b ldr r3, [r3, r2] - if( handler ) -2000c312: 2b00 cmp r3, #0 -2000c314: d004 beq.n 2000c320 - { - status = handler(endpoint, stage); -2000c316: 4798 blx r3 -2000c318: e003 b.n 2000c322 -2000c31a: 4248 negs r0, r1 -2000c31c: 4148 adcs r0, r1 -2000c31e: e000 b.n 2000c322 - vendor_request_handler[AIRSPY_SPIFLASH_ERASE_SECTOR] = usb_vendor_request_erase_sector_spiflash; -} - -usb_request_status_t usb_vendor_request(usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ - usb_request_status_t status = USB_REQUEST_STATUS_STALL; -2000c320: 2001 movs r0, #1 - { - status = USB_REQUEST_STATUS_OK; - } - } - return status; -} -2000c322: bd08 pop {r3, pc} -2000c324: 2000f390 .word 0x2000f390 - -2000c328 : - } -} - -usb_request_status_t usb_vendor_request_reset( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c328: b508 push {r3, lr} - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c32a: 2900 cmp r1, #0 -2000c32c: d101 bne.n 2000c332 - { - //usb_transfer_schedule_ack(endpoint->in); - cpu_reset(); -2000c32e: f000 fcb7 bl 2000cca0 - } - return USB_REQUEST_STATUS_OK; -} -2000c332: 2000 movs r0, #0 -2000c334: bd08 pop {r3, pc} - -2000c336 : - } -} - -usb_request_status_t usb_vendor_request_erase_sector_spiflash( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c336: b570 push {r4, r5, r6, lr} -2000c338: 1c05 adds r5, r0, #0 - w25q80bv_setup(); - addr = (sector * MAX_SECTOR_SIZE_64KB); - w25q80bv_sector_erase(addr); /* Erase 64KB */ - usb_transfer_schedule_ack(endpoint->in); - } - return USB_REQUEST_STATUS_OK; -2000c33a: 2000 movs r0, #0 - } -} - -usb_request_status_t usb_vendor_request_erase_sector_spiflash( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c33c: 1e0c subs r4, r1, #0 - uint32_t sector = 0; - #define MIN_SECTOR (2) /* 128KB Reserved (Firmware) */ - #define MAX_SECTOR (13) /* 128KB Reserved + (13 * 64KB) Conf = 1MB Flash */ - #define MAX_SECTOR_SIZE_64KB (64 * 1024) - - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c33e: 4284 cmp r4, r0 -2000c340: d10d bne.n 2000c35e - { - sector = (uint32_t)endpoint->setup.value; -2000c342: 886e ldrh r6, [r5, #2] - /* Check if we exceed Flash Size */ - if(sector < MIN_SECTOR || sector > MAX_SECTOR) - { - return USB_REQUEST_STATUS_STALL; -2000c344: 2001 movs r0, #1 - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - sector = (uint32_t)endpoint->setup.value; - /* Check if we exceed Flash Size */ - if(sector < MIN_SECTOR || sector > MAX_SECTOR) -2000c346: 1eb2 subs r2, r6, #2 -2000c348: 2a0b cmp r2, #11 -2000c34a: d808 bhi.n 2000c35e - { - return USB_REQUEST_STATUS_STALL; - } - w25q80bv_setup(); -2000c34c: f000 ffea bl 2000d324 - addr = (sector * MAX_SECTOR_SIZE_64KB); -2000c350: 0430 lsls r0, r6, #16 - w25q80bv_sector_erase(addr); /* Erase 64KB */ -2000c352: f001 f8c7 bl 2000d4e4 - usb_transfer_schedule_ack(endpoint->in); -2000c356: 69a8 ldr r0, [r5, #24] -2000c358: f001 fd53 bl 2000de02 - } - return USB_REQUEST_STATUS_OK; -2000c35c: 1c20 adds r0, r4, #0 -} -2000c35e: bd70 pop {r4, r5, r6, pc} - -2000c360 : -} - -usb_request_status_t usb_vendor_request_gpiodir_write_command( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c360: b538 push {r3, r4, r5, lr} - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c362: 2300 movs r3, #0 - uint32_t port_num; - uint32_t pin_num; - uint16_t index; - uint16_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c364: 4299 cmp r1, r3 -2000c366: d119 bne.n 2000c39c - { - index = endpoint->setup.index; -2000c368: 8881 ldrh r1, [r0, #4] - } - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; -2000c36a: 2301 movs r3, #1 - uint16_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - index = endpoint->setup.index; - if( index < 256 ) -2000c36c: 29ff cmp r1, #255 ; 0xff -2000c36e: d815 bhi.n 2000c39c - { - value = endpoint->setup.value; -2000c370: 8844 ldrh r4, [r0, #2] - if( value < 2 ) -2000c372: 429c cmp r4, r3 -2000c374: d812 bhi.n 2000c39c - { - port_num = index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000c376: 4d0a ldr r5, [pc, #40] ; (2000c3a0 ) - if( index < 256 ) - { - value = endpoint->setup.value; - if( value < 2 ) - { - port_num = index >> 5; -2000c378: 094a lsrs r2, r1, #5 - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000c37a: 1952 adds r2, r2, r5 - - pin_num = index & 0x1F; - pin_num = (1 << pin_num); -2000c37c: 251f movs r5, #31 -2000c37e: 4029 ands r1, r5 - { - value = endpoint->setup.value; - if( value < 2 ) - { - port_num = index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000c380: 0092 lsls r2, r2, #2 - - pin_num = index & 0x1F; - pin_num = (1 << pin_num); -2000c382: 408b lsls r3, r1 - - if(value == 1) - { - GPIO_DIR(port_num) = (GPIO_DIR(port_num) | pin_num); -2000c384: 6811 ldr r1, [r2, #0] - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); - - pin_num = index & 0x1F; - pin_num = (1 << pin_num); - - if(value == 1) -2000c386: 2c01 cmp r4, #1 -2000c388: d101 bne.n 2000c38e - { - GPIO_DIR(port_num) = (GPIO_DIR(port_num) | pin_num); -2000c38a: 430b orrs r3, r1 -2000c38c: e001 b.n 2000c392 - }else - { - GPIO_DIR(port_num) = (GPIO_DIR(port_num) & (~pin_num)); -2000c38e: 4399 bics r1, r3 -2000c390: 1c0b adds r3, r1, #0 -2000c392: 6013 str r3, [r2, #0] - } - usb_transfer_schedule_ack(endpoint->in); -2000c394: 6980 ldr r0, [r0, #24] -2000c396: f001 fd34 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c39a: 2300 movs r3, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c39c: 1c18 adds r0, r3, #0 -2000c39e: bd38 pop {r3, r4, r5, pc} -2000c3a0: 1003d800 .word 0x1003d800 - -2000c3a4 : - } -} - -usb_request_status_t usb_vendor_request_erase_spiflash( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c3a4: b538 push {r3, r4, r5, lr} -2000c3a6: 1c05 adds r5, r0, #0 -2000c3a8: 1e0c subs r4, r1, #0 - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c3aa: d107 bne.n 2000c3bc - { - w25q80bv_setup(); -2000c3ac: f000 ffba bl 2000d324 - w25q80bv_sector_erase(0); /* Erase 1st sector 64KB */ -2000c3b0: 1c20 adds r0, r4, #0 -2000c3b2: f001 f897 bl 2000d4e4 - usb_transfer_schedule_ack(endpoint->in); -2000c3b6: 69a8 ldr r0, [r5, #24] -2000c3b8: f001 fd23 bl 2000de02 - } - return USB_REQUEST_STATUS_OK; -} -2000c3bc: 2000 movs r0, #0 -2000c3be: bd38 pop {r3, r4, r5, pc} - -2000c3c0 : - } -} - -usb_request_status_t usb_vendor_request_get_samplerates_command( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c3c0: b5f8 push {r3, r4, r5, r6, r7, lr} -2000c3c2: 1c04 adds r4, r0, #0 - uint16_t nb_samplerate; - uint32_t schedule_block_len; - uint16_t airspy_conf_nb; - uint32_t* samplerates_buffer; - - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c3c4: 2900 cmp r1, #0 -2000c3c6: d12a bne.n 2000c41e - { - nb_samplerate = endpoint->setup.index; - airspy_conf_nb = airspy_conf->nb_airspy_m0_m4_conf_t; -2000c3c8: 4b16 ldr r3, [pc, #88] ; (2000c424 ) - uint16_t airspy_conf_nb; - uint32_t* samplerates_buffer; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - nb_samplerate = endpoint->setup.index; -2000c3ca: 8881 ldrh r1, [r0, #4] - airspy_conf_nb = airspy_conf->nb_airspy_m0_m4_conf_t; -2000c3cc: 6818 ldr r0, [r3, #0] -2000c3ce: 1c02 adds r2, r0, #0 -2000c3d0: 3276 adds r2, #118 ; 0x76 -2000c3d2: 8815 ldrh r5, [r2, #0] -2000c3d4: 1c2e adds r6, r5, #0 -2000c3d6: 428d cmp r5, r1 -2000c3d8: d900 bls.n 2000c3dc -2000c3da: 1c0e adds r6, r1, #0 -2000c3dc: b2b2 uxth r2, r6 -2000c3de: 4912 ldr r1, [pc, #72] ; (2000c428 ) - - if(nb_samplerate > airspy_conf_nb) - { - nb_samplerate = airspy_conf_nb; - } - if(nb_samplerate > AIRSPY_CONF_NB_MAX) -2000c3e0: 2a40 cmp r2, #64 ; 0x40 -2000c3e2: d802 bhi.n 2000c3ea - { - nb_samplerate = AIRSPY_CONF_NB_MAX; - } - - samplerates_buffer = (uint32_t*)&spiflash_buffer[0]; - if(nb_samplerate == 0) -2000c3e4: 2a00 cmp r2, #0 -2000c3e6: d003 beq.n 2000c3f0 -2000c3e8: e000 b.n 2000c3ec - { - nb_samplerate = airspy_conf_nb; - } - if(nb_samplerate > AIRSPY_CONF_NB_MAX) - { - nb_samplerate = AIRSPY_CONF_NB_MAX; -2000c3ea: 2240 movs r2, #64 ; 0x40 -2000c3ec: 2300 movs r3, #0 -2000c3ee: e003 b.n 2000c3f8 - - samplerates_buffer = (uint32_t*)&spiflash_buffer[0]; - if(nb_samplerate == 0) - { - /* Return the number of samplerates available */ - samplerates_buffer[0] = airspy_conf_nb; -2000c3f0: 600d str r5, [r1, #0] - usb_transfer_schedule_block(endpoint->in, &samplerates_buffer[0], 4); -2000c3f2: 69a0 ldr r0, [r4, #24] -2000c3f4: 2204 movs r2, #4 -2000c3f6: e00d b.n 2000c414 - } else - { - /* Return each samplerate available */ - for(i = 0; i < nb_samplerate; i++) -2000c3f8: 4293 cmp r3, r2 -2000c3fa: da09 bge.n 2000c410 - { - samplerates_buffer[i] = airspy_conf->airspy_m0_m4_conf[i].airspy_m0_conf.r820t_if_freq * 2; /* samplerate = IF_freq * 2 */ -2000c3fc: 2618 movs r6, #24 -2000c3fe: 435e muls r6, r3 -2000c400: 6f87 ldr r7, [r0, #120] ; 0x78 - } else { - return USB_REQUEST_STATUS_OK; - } -} - -usb_request_status_t usb_vendor_request_get_samplerates_command( -2000c402: 009d lsls r5, r3, #2 - } else - { - /* Return each samplerate available */ - for(i = 0; i < nb_samplerate; i++) - { - samplerates_buffer[i] = airspy_conf->airspy_m0_m4_conf[i].airspy_m0_conf.r820t_if_freq * 2; /* samplerate = IF_freq * 2 */ -2000c404: 19be adds r6, r7, r6 -2000c406: 6937 ldr r7, [r6, #16] - samplerates_buffer[0] = airspy_conf_nb; - usb_transfer_schedule_block(endpoint->in, &samplerates_buffer[0], 4); - } else - { - /* Return each samplerate available */ - for(i = 0; i < nb_samplerate; i++) -2000c408: 3301 adds r3, #1 - { - samplerates_buffer[i] = airspy_conf->airspy_m0_m4_conf[i].airspy_m0_conf.r820t_if_freq * 2; /* samplerate = IF_freq * 2 */ -2000c40a: 007e lsls r6, r7, #1 -2000c40c: 514e str r6, [r1, r5] -2000c40e: e7f3 b.n 2000c3f8 - } - schedule_block_len = nb_samplerate * sizeof(uint32_t); - usb_transfer_schedule_block(endpoint->in, &samplerates_buffer[0], schedule_block_len); -2000c410: 69a0 ldr r0, [r4, #24] - /* Return each samplerate available */ - for(i = 0; i < nb_samplerate; i++) - { - samplerates_buffer[i] = airspy_conf->airspy_m0_m4_conf[i].airspy_m0_conf.r820t_if_freq * 2; /* samplerate = IF_freq * 2 */ - } - schedule_block_len = nb_samplerate * sizeof(uint32_t); -2000c412: 0092 lsls r2, r2, #2 - usb_transfer_schedule_block(endpoint->in, &samplerates_buffer[0], schedule_block_len); -2000c414: f001 fce8 bl 2000dde8 - } - usb_transfer_schedule_ack(endpoint->out); -2000c418: 69e0 ldr r0, [r4, #28] -2000c41a: f001 fcf2 bl 2000de02 - return USB_REQUEST_STATUS_OK; - } else - { - return USB_REQUEST_STATUS_OK; - } -} -2000c41e: 2000 movs r0, #0 -2000c420: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000c422: 46c0 nop ; (mov r8, r8) -2000c424: 2000ef28 .word 0x2000ef28 -2000c428: 2000f400 .word 0x2000f400 - -2000c42c : - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c42c: 2200 movs r2, #0 -} - -usb_request_status_t usb_vendor_request_gpiodir_read_command( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c42e: b538 push {r3, r4, r5, lr} -2000c430: 1c04 adds r4, r0, #0 -2000c432: 1e0d subs r5, r1, #0 - uint32_t port_num; - uint32_t pin_num; - uint8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c434: 4295 cmp r5, r2 -2000c436: d11a bne.n 2000c46e - { - if( endpoint->setup.index < 256 ) -2000c438: 8883 ldrh r3, [r0, #4] - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; -2000c43a: 2201 movs r2, #1 - uint32_t pin_num; - uint8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000c43c: 2bff cmp r3, #255 ; 0xff -2000c43e: d816 bhi.n 2000c46e - { - port_num = endpoint->setup.index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000c440: 480c ldr r0, [pc, #48] ; (2000c474 ) - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) - { - port_num = endpoint->setup.index >> 5; -2000c442: 0959 lsrs r1, r3, #5 - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000c444: 1809 adds r1, r1, r0 -2000c446: 0088 lsls r0, r1, #2 - - pin_num = endpoint->setup.index & 0x1F; - pin_num = (1 << pin_num); - - if( (GPIO_DIR(port_num) & pin_num) ) -2000c448: 6801 ldr r1, [r0, #0] - { - port_num = endpoint->setup.index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); - - pin_num = endpoint->setup.index & 0x1F; - pin_num = (1 << pin_num); -2000c44a: 201f movs r0, #31 -2000c44c: 4003 ands r3, r0 -2000c44e: 1c10 adds r0, r2, #0 -2000c450: 4098 lsls r0, r3 -2000c452: 1c03 adds r3, r0, #0 - - if( (GPIO_DIR(port_num) & pin_num) ) -2000c454: 400b ands r3, r1 -2000c456: 1e59 subs r1, r3, #1 -2000c458: 418b sbcs r3, r1 - }else - { - value = 0; - } - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c45a: 1c21 adds r1, r4, #0 - value = 1; - }else - { - value = 0; - } - endpoint->buffer[0] = value; -2000c45c: 7223 strb r3, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c45e: 3108 adds r1, #8 -2000c460: 69a0 ldr r0, [r4, #24] -2000c462: f001 fcc1 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c466: 69e0 ldr r0, [r4, #28] -2000c468: f001 fccb bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c46c: 1c2a adds r2, r5, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c46e: 1c10 adds r0, r2, #0 -2000c470: bd38 pop {r3, r4, r5, pc} -2000c472: 46c0 nop ; (mov r8, r8) -2000c474: 1003d800 .word 0x1003d800 - -2000c478 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_ms_vendor_command( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c478: b570 push {r4, r5, r6, lr} - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; - } - return USB_REQUEST_STATUS_OK; -2000c47a: 2500 movs r5, #0 - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_ms_vendor_command( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c47c: 1c04 adds r4, r0, #0 -2000c47e: 1e0e subs r6, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c480: 42ae cmp r6, r5 -2000c482: d117 bne.n 2000c4b4 - { - if (endpoint->setup.index == 0x04) -2000c484: 8883 ldrh r3, [r0, #4] -2000c486: 2b04 cmp r3, #4 -2000c488: d108 bne.n 2000c49c - { - usb_transfer_schedule_block(endpoint->in, &usb_descriptor_CompatIDDescriptor, endpoint->setup.length); -2000c48a: 88c2 ldrh r2, [r0, #6] -2000c48c: 490a ldr r1, [pc, #40] ; (2000c4b8 ) -2000c48e: 6980 ldr r0, [r0, #24] -2000c490: f001 fcaa bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c494: 69e0 ldr r0, [r4, #28] -2000c496: f001 fcb4 bl 2000de02 -2000c49a: e00b b.n 2000c4b4 - { - usb_transfer_schedule_block(endpoint->in, &usb_descriptor_ExtProps, endpoint->setup.length); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; -2000c49c: 2501 movs r5, #1 - { - usb_transfer_schedule_block(endpoint->in, &usb_descriptor_CompatIDDescriptor, endpoint->setup.length); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - if (endpoint->setup.index == 0x05) -2000c49e: 2b05 cmp r3, #5 -2000c4a0: d108 bne.n 2000c4b4 - { - usb_transfer_schedule_block(endpoint->in, &usb_descriptor_ExtProps, endpoint->setup.length); -2000c4a2: 88c2 ldrh r2, [r0, #6] -2000c4a4: 4905 ldr r1, [pc, #20] ; (2000c4bc ) -2000c4a6: 6980 ldr r0, [r0, #24] -2000c4a8: f001 fc9e bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c4ac: 69e0 ldr r0, [r4, #28] -2000c4ae: f001 fca8 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c4b2: 1c35 adds r5, r6, #0 - } - return USB_REQUEST_STATUS_STALL; - } - return USB_REQUEST_STATUS_OK; -} -2000c4b4: 1c28 adds r0, r5, #0 -2000c4b6: bd70 pop {r4, r5, r6, pc} -2000c4b8: 2000ecaf .word 0x2000ecaf -2000c4bc: 2000ed82 .word 0x2000ed82 - -2000c4c0 : - } -} - -usb_request_status_t usb_vendor_request_read_board_id( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c4c0: b510 push {r4, lr} -2000c4c2: 1c04 adds r4, r0, #0 - if (stage == USB_TRANSFER_STAGE_SETUP) { -2000c4c4: 2900 cmp r1, #0 -2000c4c6: d109 bne.n 2000c4dc - endpoint->buffer[0] = BOARD_ID; -2000c4c8: 7201 strb r1, [r0, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c4ca: 1c01 adds r1, r0, #0 -2000c4cc: 3108 adds r1, #8 -2000c4ce: 6980 ldr r0, [r0, #24] -2000c4d0: 2201 movs r2, #1 -2000c4d2: f001 fc89 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c4d6: 69e0 ldr r0, [r4, #28] -2000c4d8: f001 fc93 bl 2000de02 - } - return USB_REQUEST_STATUS_OK; -} -2000c4dc: 2000 movs r0, #0 -2000c4de: bd10 pop {r4, pc} - -2000c4e0 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_set_rf_bias_command( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c4e0: b510 push {r4, lr} -2000c4e2: 1c04 adds r4, r0, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c4e4: 2900 cmp r1, #0 -2000c4e6: d10a bne.n 2000c4fe - { - if(endpoint->setup.index == 1) -2000c4e8: 8883 ldrh r3, [r0, #4] -2000c4ea: 2b01 cmp r3, #1 -2000c4ec: d102 bne.n 2000c4f4 - { - enable_biast_power(); -2000c4ee: f000 fbdd bl 2000ccac -2000c4f2: e001 b.n 2000c4f8 - }else - { - disable_biast_power(); -2000c4f4: f000 fbe4 bl 2000ccc0 - } - usb_transfer_schedule_ack(endpoint->in); -2000c4f8: 69a0 ldr r0, [r4, #24] -2000c4fa: f001 fc82 bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c4fe: 2000 movs r0, #0 -2000c500: bd10 pop {r4, pc} - ... - -2000c504 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_set_mixer_agc( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c504: b510 push {r4, lr} -2000c506: 1c04 adds r4, r0, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c508: 2900 cmp r1, #0 -2000c50a: d10f bne.n 2000c52c - { - value = r820t_set_mixer_agc(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c50c: 4b08 ldr r3, [pc, #32] ; (2000c530 ) -2000c50e: 7921 ldrb r1, [r4, #4] -2000c510: 6818 ldr r0, [r3, #0] -2000c512: 3048 adds r0, #72 ; 0x48 -2000c514: f000 fde2 bl 2000d0dc - endpoint->buffer[0] = value; - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c518: 1c21 adds r1, r4, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - value = r820t_set_mixer_agc(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c51a: 7220 strb r0, [r4, #8] - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c51c: 3108 adds r1, #8 -2000c51e: 69a0 ldr r0, [r4, #24] -2000c520: 2201 movs r2, #1 -2000c522: f001 fc61 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c526: 69e0 ldr r0, [r4, #28] -2000c528: f001 fc6b bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c52c: 2000 movs r0, #0 -2000c52e: bd10 pop {r4, pc} -2000c530: 2000ef28 .word 0x2000ef28 - -2000c534 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_set_lna_agc( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c534: b510 push {r4, lr} -2000c536: 1c04 adds r4, r0, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c538: 2900 cmp r1, #0 -2000c53a: d10f bne.n 2000c55c - { - value = r820t_set_lna_agc(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c53c: 4b08 ldr r3, [pc, #32] ; (2000c560 ) -2000c53e: 7921 ldrb r1, [r4, #4] -2000c540: 6818 ldr r0, [r3, #0] -2000c542: 3048 adds r0, #72 ; 0x48 -2000c544: f000 fdc1 bl 2000d0ca - endpoint->buffer[0] = value; - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c548: 1c21 adds r1, r4, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - value = r820t_set_lna_agc(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c54a: 7220 strb r0, [r4, #8] - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c54c: 3108 adds r1, #8 -2000c54e: 69a0 ldr r0, [r4, #24] -2000c550: 2201 movs r2, #1 -2000c552: f001 fc49 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c556: 69e0 ldr r0, [r4, #28] -2000c558: f001 fc53 bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c55c: 2000 movs r0, #0 -2000c55e: bd10 pop {r4, pc} -2000c560: 2000ef28 .word 0x2000ef28 - -2000c564 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_set_vga_gain( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c564: b510 push {r4, lr} -2000c566: 1c04 adds r4, r0, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c568: 2900 cmp r1, #0 -2000c56a: d10f bne.n 2000c58c - { - value = r820t_set_vga_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c56c: 4b08 ldr r3, [pc, #32] ; (2000c590 ) -2000c56e: 7921 ldrb r1, [r4, #4] -2000c570: 6818 ldr r0, [r3, #0] -2000c572: 3048 adds r0, #72 ; 0x48 -2000c574: f000 fda2 bl 2000d0bc - endpoint->buffer[0] = value; - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c578: 1c21 adds r1, r4, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - value = r820t_set_vga_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c57a: 7220 strb r0, [r4, #8] - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c57c: 3108 adds r1, #8 -2000c57e: 69a0 ldr r0, [r4, #24] -2000c580: 2201 movs r2, #1 -2000c582: f001 fc31 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c586: 69e0 ldr r0, [r4, #28] -2000c588: f001 fc3b bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c58c: 2000 movs r0, #0 -2000c58e: bd10 pop {r4, pc} -2000c590: 2000ef28 .word 0x2000ef28 - -2000c594 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_set_mixer_gain( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c594: b510 push {r4, lr} -2000c596: 1c04 adds r4, r0, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c598: 2900 cmp r1, #0 -2000c59a: d10f bne.n 2000c5bc - { - value = r820t_set_mixer_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c59c: 4b08 ldr r3, [pc, #32] ; (2000c5c0 ) -2000c59e: 7921 ldrb r1, [r4, #4] -2000c5a0: 6818 ldr r0, [r3, #0] -2000c5a2: 3048 adds r0, #72 ; 0x48 -2000c5a4: f000 fd83 bl 2000d0ae - endpoint->buffer[0] = value; - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c5a8: 1c21 adds r1, r4, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - value = r820t_set_mixer_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c5aa: 7220 strb r0, [r4, #8] - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c5ac: 3108 adds r1, #8 -2000c5ae: 69a0 ldr r0, [r4, #24] -2000c5b0: 2201 movs r2, #1 -2000c5b2: f001 fc19 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c5b6: 69e0 ldr r0, [r4, #28] -2000c5b8: f001 fc23 bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c5bc: 2000 movs r0, #0 -2000c5be: bd10 pop {r4, pc} -2000c5c0: 2000ef28 .word 0x2000ef28 - -2000c5c4 : - } -} - -usb_request_status_t usb_vendor_request_set_lna_gain( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c5c4: b510 push {r4, lr} -2000c5c6: 1c04 adds r4, r0, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c5c8: 2900 cmp r1, #0 -2000c5ca: d10f bne.n 2000c5ec - { - value = r820t_set_lna_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c5cc: 4b08 ldr r3, [pc, #32] ; (2000c5f0 ) -2000c5ce: 7921 ldrb r1, [r4, #4] -2000c5d0: 6818 ldr r0, [r3, #0] -2000c5d2: 3048 adds r0, #72 ; 0x48 -2000c5d4: f000 fd64 bl 2000d0a0 - endpoint->buffer[0] = value; - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c5d8: 1c21 adds r1, r4, #0 - int8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - value = r820t_set_lna_gain(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c5da: 7220 strb r0, [r4, #8] - - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c5dc: 3108 adds r1, #8 -2000c5de: 69a0 ldr r0, [r4, #24] -2000c5e0: 2201 movs r2, #1 -2000c5e2: f001 fc01 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c5e6: 69e0 ldr r0, [r4, #28] -2000c5e8: f001 fc0b bl 2000de02 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c5ec: 2000 movs r0, #0 -2000c5ee: bd10 pop {r4, pc} -2000c5f0: 2000ef28 .word 0x2000ef28 - -2000c5f4 : -} - -usb_request_status_t usb_vendor_request_set_freq( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c5f4: b510 push {r4, lr} -2000c5f6: 1c04 adds r4, r0, #0 - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c5f8: 2900 cmp r1, #0 -2000c5fa: d105 bne.n 2000c608 - { - usb_transfer_schedule_block(endpoint->out, &set_freq_params, sizeof(set_freq_params_t)); -2000c5fc: 4909 ldr r1, [pc, #36] ; (2000c624 ) -2000c5fe: 2204 movs r2, #4 -2000c600: 69c0 ldr r0, [r0, #28] -2000c602: f001 fbf1 bl 2000dde8 - return USB_REQUEST_STATUS_OK; -2000c606: e00b b.n 2000c620 - } else if (stage == USB_TRANSFER_STAGE_DATA) -2000c608: 2901 cmp r1, #1 -2000c60a: d109 bne.n 2000c620 - { - r820t_set_freq(&airspy_conf->r820t_conf_rw, set_freq_params.freq_hz); -2000c60c: 4b06 ldr r3, [pc, #24] ; (2000c628 ) -2000c60e: 4905 ldr r1, [pc, #20] ; (2000c624 ) -2000c610: 6818 ldr r0, [r3, #0] -2000c612: 6809 ldr r1, [r1, #0] -2000c614: 3048 adds r0, #72 ; 0x48 -2000c616: f000 fcef bl 2000cff8 - usb_transfer_schedule_ack(endpoint->in); -2000c61a: 69a0 ldr r0, [r4, #24] -2000c61c: f001 fbf1 bl 2000de02 - return USB_REQUEST_STATUS_OK; - } else - { - return USB_REQUEST_STATUS_OK; - } -} -2000c620: 2000 movs r0, #0 -2000c622: bd10 pop {r4, pc} -2000c624: 2000f388 .word 0x2000f388 -2000c628: 2000ef28 .word 0x2000ef28 - -2000c62c : -} - -usb_request_status_t usb_vendor_request_set_samplerate( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c62c: b570 push {r4, r5, r6, lr} -2000c62e: 1c04 adds r4, r0, #0 - endpoint->buffer[0] = 1; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -2000c630: 2000 movs r0, #0 - uint16_t conf_no; - uint32_t conf_hz; - uint32_t freq_hz; - bool conf_found; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c632: 4281 cmp r1, r0 -2000c634: d155 bne.n 2000c6e2 - { - conf_no = endpoint->setup.index; -2000c636: 88a3 ldrh r3, [r4, #4] -2000c638: 4a2a ldr r2, [pc, #168] ; (2000c6e4 ) - if(conf_no < AIRSPY_CONF_NB_MAX) -2000c63a: 2b3f cmp r3, #63 ; 0x3f -2000c63c: d806 bhi.n 2000c64c - { - airspy_conf_nb = airspy_conf->nb_airspy_m0_m4_conf_t; -2000c63e: 6810 ldr r0, [r2, #0] -2000c640: 3076 adds r0, #118 ; 0x76 - if(conf_no > (airspy_conf_nb-1)) -2000c642: 8801 ldrh r1, [r0, #0] - { - return USB_REQUEST_STATUS_STALL; -2000c644: 2001 movs r0, #1 - { - conf_no = endpoint->setup.index; - if(conf_no < AIRSPY_CONF_NB_MAX) - { - airspy_conf_nb = airspy_conf->nb_airspy_m0_m4_conf_t; - if(conf_no > (airspy_conf_nb-1)) -2000c646: 4299 cmp r1, r3 -2000c648: dc2a bgt.n 2000c6a0 -2000c64a: e04a b.n 2000c6e2 - sample_rate_conf_no = conf_no; - } - }else - { - conf_found = false; - conf_hz = (uint32_t)(conf_no) * 1000; -2000c64c: 20fa movs r0, #250 ; 0xfa - - for(i = 0; i < airspy_conf->nb_airspy_m0_m4_conf_t; i++) -2000c64e: 6812 ldr r2, [r2, #0] - sample_rate_conf_no = conf_no; - } - }else - { - conf_found = false; - conf_hz = (uint32_t)(conf_no) * 1000; -2000c650: 0080 lsls r0, r0, #2 -2000c652: 4358 muls r0, r3 - - for(i = 0; i < airspy_conf->nb_airspy_m0_m4_conf_t; i++) -2000c654: 1c13 adds r3, r2, #0 -2000c656: 3376 adds r3, #118 ; 0x76 -2000c658: 881b ldrh r3, [r3, #0] -2000c65a: 4299 cmp r1, r3 -2000c65c: da0c bge.n 2000c678 - { - freq_hz = (airspy_conf->airspy_m0_m4_conf[i].airspy_m0_conf.r820t_if_freq * 4); -2000c65e: 2518 movs r5, #24 -2000c660: 434d muls r5, r1 -2000c662: 6f96 ldr r6, [r2, #120] ; 0x78 -2000c664: 1975 adds r5, r6, r5 -2000c666: 692e ldr r6, [r5, #16] -2000c668: 00b5 lsls r5, r6, #2 - if(freq_hz == conf_hz) -2000c66a: 4285 cmp r5, r0 -2000c66c: d102 bne.n 2000c674 - { - sample_rate_conf_no = i; -2000c66e: 4a1e ldr r2, [pc, #120] ; (2000c6e8 ) -2000c670: 7011 strb r1, [r2, #0] -2000c672: e01a b.n 2000c6aa - }else - { - conf_found = false; - conf_hz = (uint32_t)(conf_no) * 1000; - - for(i = 0; i < airspy_conf->nb_airspy_m0_m4_conf_t; i++) -2000c674: 3101 adds r1, #1 -2000c676: e7f0 b.n 2000c65a - } - } - - if(conf_found == false) - { - for(i = 0; i < airspy_conf->nb_airspy_m0_m4_alt_conf_t; i++) -2000c678: 1c11 adds r1, r2, #0 -2000c67a: 317e adds r1, #126 ; 0x7e -2000c67c: 8809 ldrh r1, [r1, #0] -2000c67e: 2300 movs r3, #0 -2000c680: e000 b.n 2000c684 -2000c682: 3301 adds r3, #1 -2000c684: 428b cmp r3, r1 -2000c686: da0e bge.n 2000c6a6 - { - freq_hz = (airspy_conf->airspy_m0_m4_alt_conf[i].airspy_m0_conf.r820t_if_freq * 4); -2000c688: 1d15 adds r5, r2, #4 -2000c68a: 6fee ldr r6, [r5, #124] ; 0x7c -2000c68c: 2518 movs r5, #24 -2000c68e: 435d muls r5, r3 -2000c690: 1976 adds r6, r6, r5 -2000c692: 6935 ldr r5, [r6, #16] -2000c694: 00ae lsls r6, r5, #2 - if(freq_hz == conf_hz) -2000c696: 4286 cmp r6, r0 -2000c698: d1f3 bne.n 2000c682 - { - sample_rate_conf_no = AIRSPY_SAMPLERATE_CONF_ALT | i; -2000c69a: 2080 movs r0, #128 ; 0x80 -2000c69c: 4241 negs r1, r0 -2000c69e: 430b orrs r3, r1 -2000c6a0: 4e11 ldr r6, [pc, #68] ; (2000c6e8 ) -2000c6a2: 7033 strb r3, [r6, #0] -2000c6a4: e001 b.n 2000c6aa - if(conf_no < AIRSPY_CONF_NB_MAX) - { - airspy_conf_nb = airspy_conf->nb_airspy_m0_m4_conf_t; - if(conf_no > (airspy_conf_nb-1)) - { - return USB_REQUEST_STATUS_STALL; -2000c6a6: 2001 movs r0, #1 -2000c6a8: e01b b.n 2000c6e2 - { - return USB_REQUEST_STATUS_STALL; - } - } - - rx_mode = get_receiver_mode(); -2000c6aa: f7ff fe25 bl 2000c2f8 -2000c6ae: 4d0e ldr r5, [pc, #56] ; (2000c6e8 ) -2000c6b0: 1e06 subs r6, r0, #0 - if(rx_mode == RECEIVER_MODE_RX) -2000c6b2: 2e01 cmp r6, #1 -2000c6b4: d102 bne.n 2000c6bc - { - ADCHS_stop(sample_rate_conf_no); -2000c6b6: 7828 ldrb r0, [r5, #0] -2000c6b8: f7ff fd70 bl 2000c19c - } - - set_samplerate_m4(sample_rate_conf_no); -2000c6bc: 7828 ldrb r0, [r5, #0] -2000c6be: f7ff fd09 bl 2000c0d4 - - if(rx_mode == RECEIVER_MODE_RX) -2000c6c2: 2e01 cmp r6, #1 -2000c6c4: d102 bne.n 2000c6cc - { - ADCHS_start(sample_rate_conf_no); -2000c6c6: 7828 ldrb r0, [r5, #0] -2000c6c8: f7ff fd20 bl 2000c10c - } - - endpoint->buffer[0] = 1; -2000c6cc: 2201 movs r2, #1 - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c6ce: 1c21 adds r1, r4, #0 - if(rx_mode == RECEIVER_MODE_RX) - { - ADCHS_start(sample_rate_conf_no); - } - - endpoint->buffer[0] = 1; -2000c6d0: 7222 strb r2, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c6d2: 3108 adds r1, #8 -2000c6d4: 69a0 ldr r0, [r4, #24] -2000c6d6: f001 fb87 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c6da: 69e0 ldr r0, [r4, #28] -2000c6dc: f001 fb91 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c6e0: 2000 movs r0, #0 - } - return USB_REQUEST_STATUS_OK; -} -2000c6e2: bd70 pop {r4, r5, r6, pc} -2000c6e4: 2000ef28 .word 0x2000ef28 -2000c6e8: 2000f500 .word 0x2000f500 - -2000c6ec : -} - -usb_request_status_t usb_vendor_request_set_packing_command( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c6ec: b570 push {r4, r5, r6, lr} -2000c6ee: 1c04 adds r4, r0, #0 - endpoint->buffer[0] = 1; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -2000c6f0: 2000 movs r0, #0 -const usb_transfer_stage_t stage) -{ - receiver_mode_t rx_mode; - uint8_t state; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c6f2: 4281 cmp r1, r0 -2000c6f4: d121 bne.n 2000c73a - { - if(endpoint->setup.index > 1) -2000c6f6: 88a3 ldrh r3, [r4, #4] - { - return USB_REQUEST_STATUS_STALL; -2000c6f8: 2001 movs r0, #1 - receiver_mode_t rx_mode; - uint8_t state; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if(endpoint->setup.index > 1) -2000c6fa: 4283 cmp r3, r0 -2000c6fc: d81d bhi.n 2000c73a - { - return USB_REQUEST_STATUS_STALL; - }else - { - state = endpoint->setup.index; -2000c6fe: b2de uxtb r6, r3 - } - - rx_mode = get_receiver_mode(); -2000c700: f7ff fdfa bl 2000c2f8 -2000c704: 1e05 subs r5, r0, #0 - if(rx_mode == RECEIVER_MODE_RX) -2000c706: 2d01 cmp r5, #1 -2000c708: d103 bne.n 2000c712 - { - ADCHS_stop(sample_rate_conf_no); -2000c70a: 480c ldr r0, [pc, #48] ; (2000c73c ) -2000c70c: 7800 ldrb r0, [r0, #0] -2000c70e: f7ff fd45 bl 2000c19c - } - - set_packing_m4(state); -2000c712: 1c30 adds r0, r6, #0 -2000c714: f7ff fcec bl 2000c0f0 - - if(rx_mode == RECEIVER_MODE_RX) -2000c718: 2d01 cmp r5, #1 -2000c71a: d103 bne.n 2000c724 - { - ADCHS_start(sample_rate_conf_no); -2000c71c: 4907 ldr r1, [pc, #28] ; (2000c73c ) -2000c71e: 7808 ldrb r0, [r1, #0] -2000c720: f7ff fcf4 bl 2000c10c - } - - endpoint->buffer[0] = 1; -2000c724: 2201 movs r2, #1 - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c726: 1c21 adds r1, r4, #0 - if(rx_mode == RECEIVER_MODE_RX) - { - ADCHS_start(sample_rate_conf_no); - } - - endpoint->buffer[0] = 1; -2000c728: 7222 strb r2, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c72a: 3108 adds r1, #8 -2000c72c: 69a0 ldr r0, [r4, #24] -2000c72e: f001 fb5b bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c732: 69e0 ldr r0, [r4, #28] -2000c734: f001 fb65 bl 2000de02 -2000c738: 2000 movs r0, #0 - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_OK; -} -2000c73a: bd70 pop {r4, r5, r6, pc} -2000c73c: 2000f500 .word 0x2000f500 - -2000c740 : - uint32_t serial_no[4]; -} read_partid_serialno_t; - -usb_request_status_t usb_vendor_request_read_partid_serialno( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c740: b570 push {r4, r5, r6, lr} - - length = (uint8_t)sizeof(read_partid_serialno_t); - usb_transfer_schedule_block(endpoint->in, &read_partid_serialno, length); - usb_transfer_schedule_ack(endpoint->out); - } - return USB_REQUEST_STATUS_OK; -2000c742: 2500 movs r5, #0 - uint32_t serial_no[4]; -} read_partid_serialno_t; - -usb_request_status_t usb_vendor_request_read_partid_serialno( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c744: b092 sub sp, #72 ; 0x48 -2000c746: 1c06 adds r6, r0, #0 - uint8_t length; - read_partid_serialno_t read_partid_serialno; - iap_cmd_res_t iap_cmd_res; - - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c748: 42a9 cmp r1, r5 -2000c74a: d126 bne.n 2000c79a - { - /* Read IAP Part Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_PART_ID_NO; -2000c74c: ac07 add r4, sp, #28 -2000c74e: 2336 movs r3, #54 ; 0x36 - iap_cmd_call(&iap_cmd_res); -2000c750: 1c20 adds r0, r4, #0 - iap_cmd_res_t iap_cmd_res; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - /* Read IAP Part Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_PART_ID_NO; -2000c752: 7023 strb r3, [r4, #0] - iap_cmd_call(&iap_cmd_res); -2000c754: f000 ffc0 bl 2000d6d8 - if(iap_cmd_res.status_res.status_ret != CMD_SUCCESS) -2000c758: 8b20 ldrh r0, [r4, #24] -2000c75a: 42a8 cmp r0, r5 -2000c75c: d001 beq.n 2000c762 - return USB_REQUEST_STATUS_STALL; -2000c75e: 2501 movs r5, #1 -2000c760: e01b b.n 2000c79a - - read_partid_serialno.part_id[0] = iap_cmd_res.status_res.iap_result[0]; -2000c762: 69e1 ldr r1, [r4, #28] - read_partid_serialno.part_id[1] = iap_cmd_res.status_res.iap_result[1]; -2000c764: 6a22 ldr r2, [r4, #32] - - /* Read IAP Serial Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO; -2000c766: 233a movs r3, #58 ; 0x3a - iap_cmd_call(&iap_cmd_res); -2000c768: 1c20 adds r0, r4, #0 - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_PART_ID_NO; - iap_cmd_call(&iap_cmd_res); - if(iap_cmd_res.status_res.status_ret != CMD_SUCCESS) - return USB_REQUEST_STATUS_STALL; - - read_partid_serialno.part_id[0] = iap_cmd_res.status_res.iap_result[0]; -2000c76a: 9101 str r1, [sp, #4] - read_partid_serialno.part_id[1] = iap_cmd_res.status_res.iap_result[1]; -2000c76c: 9202 str r2, [sp, #8] - - /* Read IAP Serial Number Identification */ - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO; -2000c76e: 7023 strb r3, [r4, #0] - iap_cmd_call(&iap_cmd_res); -2000c770: f000 ffb2 bl 2000d6d8 - if(iap_cmd_res.status_res.status_ret != CMD_SUCCESS) -2000c774: 8b20 ldrh r0, [r4, #24] -2000c776: 2800 cmp r0, #0 -2000c778: d1f1 bne.n 2000c75e - return USB_REQUEST_STATUS_STALL; - - read_partid_serialno.serial_no[0] = iap_cmd_res.status_res.iap_result[0]; -2000c77a: 69e1 ldr r1, [r4, #28] - read_partid_serialno.serial_no[1] = iap_cmd_res.status_res.iap_result[1]; -2000c77c: 6a22 ldr r2, [r4, #32] - read_partid_serialno.serial_no[2] = iap_cmd_res.status_res.iap_result[2]; -2000c77e: 6a63 ldr r3, [r4, #36] ; 0x24 - read_partid_serialno.serial_no[3] = iap_cmd_res.status_res.iap_result[3]; -2000c780: 6aa4 ldr r4, [r4, #40] ; 0x28 - iap_cmd_res.cmd_param.command_code = IAP_CMD_READ_SERIAL_NO; - iap_cmd_call(&iap_cmd_res); - if(iap_cmd_res.status_res.status_ret != CMD_SUCCESS) - return USB_REQUEST_STATUS_STALL; - - read_partid_serialno.serial_no[0] = iap_cmd_res.status_res.iap_result[0]; -2000c782: 9103 str r1, [sp, #12] - read_partid_serialno.serial_no[1] = iap_cmd_res.status_res.iap_result[1]; -2000c784: 9204 str r2, [sp, #16] - read_partid_serialno.serial_no[2] = iap_cmd_res.status_res.iap_result[2]; - read_partid_serialno.serial_no[3] = iap_cmd_res.status_res.iap_result[3]; - - length = (uint8_t)sizeof(read_partid_serialno_t); - usb_transfer_schedule_block(endpoint->in, &read_partid_serialno, length); -2000c786: 69b0 ldr r0, [r6, #24] -2000c788: a901 add r1, sp, #4 -2000c78a: 2218 movs r2, #24 - if(iap_cmd_res.status_res.status_ret != CMD_SUCCESS) - return USB_REQUEST_STATUS_STALL; - - read_partid_serialno.serial_no[0] = iap_cmd_res.status_res.iap_result[0]; - read_partid_serialno.serial_no[1] = iap_cmd_res.status_res.iap_result[1]; - read_partid_serialno.serial_no[2] = iap_cmd_res.status_res.iap_result[2]; -2000c78c: 9305 str r3, [sp, #20] - read_partid_serialno.serial_no[3] = iap_cmd_res.status_res.iap_result[3]; -2000c78e: 9406 str r4, [sp, #24] - - length = (uint8_t)sizeof(read_partid_serialno_t); - usb_transfer_schedule_block(endpoint->in, &read_partid_serialno, length); -2000c790: f001 fb2a bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c794: 69f0 ldr r0, [r6, #28] -2000c796: f001 fb34 bl 2000de02 - } - return USB_REQUEST_STATUS_OK; -} -2000c79a: 1c28 adds r0, r5, #0 -2000c79c: b012 add sp, #72 ; 0x48 -2000c79e: bd70 pop {r4, r5, r6, pc} - -2000c7a0 : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_read_version_string( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c7a0: b538 push {r3, r4, r5, lr} -2000c7a2: 1c05 adds r5, r0, #0 - unsigned int i; - int version_string_len; - - if (stage == USB_TRANSFER_STAGE_SETUP) { -2000c7a4: 2900 cmp r1, #0 -2000c7a6: d122 bne.n 2000c7ee - for(i = 0; i < sizeof(spiflash_buffer); i++) - spiflash_buffer[i] = 0; -2000c7a8: 4c12 ldr r4, [pc, #72] ; (2000c7f4 ) -2000c7aa: 2200 movs r2, #0 -2000c7ac: 190b adds r3, r1, r4 -{ - unsigned int i; - int version_string_len; - - if (stage == USB_TRANSFER_STAGE_SETUP) { - for(i = 0; i < sizeof(spiflash_buffer); i++) -2000c7ae: 2080 movs r0, #128 ; 0x80 -2000c7b0: 3101 adds r1, #1 - spiflash_buffer[i] = 0; -2000c7b2: 701a strb r2, [r3, #0] -{ - unsigned int i; - int version_string_len; - - if (stage == USB_TRANSFER_STAGE_SETUP) { - for(i = 0; i < sizeof(spiflash_buffer); i++) -2000c7b4: 0043 lsls r3, r0, #1 -2000c7b6: 4299 cmp r1, r3 -2000c7b8: d1f6 bne.n 2000c7a8 - spiflash_buffer[i] = 0; - - strcpy((char *)spiflash_buffer, (char *)airspy_conf->conf_hw.version); -2000c7ba: 490f ldr r1, [pc, #60] ; (2000c7f8 ) -2000c7bc: 1c20 adds r0, r4, #0 -2000c7be: 6809 ldr r1, [r1, #0] -2000c7c0: 3108 adds r1, #8 -2000c7c2: f002 f8b5 bl 2000e930 - version_string_len = strlen((char *)spiflash_buffer); -2000c7c6: 1c20 adds r0, r4, #0 -2000c7c8: f002 f8ba bl 2000e940 - strcpy((char *)&spiflash_buffer[version_string_len], version_string); -2000c7cc: 490b ldr r1, [pc, #44] ; (2000c7fc ) -2000c7ce: 1900 adds r0, r0, r4 -2000c7d0: f002 f8ae bl 2000e930 - version_string_len = strlen((char *)spiflash_buffer) + 1; -2000c7d4: 1c20 adds r0, r4, #0 -2000c7d6: f002 f8b3 bl 2000e940 - version_string_len = (version_string_len + 3) & ~0x03; /* Round to a multiple of 4 */ -2000c7da: 1d02 adds r2, r0, #4 -2000c7dc: 2003 movs r0, #3 -2000c7de: 4382 bics r2, r0 - - usb_transfer_schedule_block(endpoint->in, spiflash_buffer, version_string_len); -2000c7e0: 1c21 adds r1, r4, #0 -2000c7e2: 69a8 ldr r0, [r5, #24] -2000c7e4: f001 fb00 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c7e8: 69e8 ldr r0, [r5, #28] -2000c7ea: f001 fb0a bl 2000de02 - } - return USB_REQUEST_STATUS_OK; -} -2000c7ee: 2000 movs r0, #0 -2000c7f0: bd38 pop {r3, r4, r5, pc} -2000c7f2: 46c0 nop ; (mov r8, r8) -2000c7f4: 2000f400 .word 0x2000f400 -2000c7f8: 2000ef28 .word 0x2000ef28 -2000c7fc: 2000e950 .word 0x2000e950 - -2000c800 : - } -} - -usb_request_status_t usb_vendor_request_read_spiflash( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c800: b5f8 push {r3, r4, r5, r6, r7, lr} -2000c802: 1c05 adds r5, r0, #0 - uint16_t len; - uint8_t* u8_addr_pt; - uint32_t* u32_addr_pt; - uint32_t* u32_dest_pt; - - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c804: 2900 cmp r1, #0 -2000c806: d131 bne.n 2000c86c - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; -2000c808: 88c4 ldrh r4, [r0, #6] - uint32_t* u32_addr_pt; - uint32_t* u32_dest_pt; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c80a: 8847 ldrh r7, [r0, #2] -2000c80c: 8882 ldrh r2, [r0, #4] - len = endpoint->setup.length; - - if(len > W25Q80BV_PAGE_LEN) -2000c80e: 2680 movs r6, #128 ; 0x80 - { - return USB_REQUEST_STATUS_STALL; -2000c810: 2001 movs r0, #1 - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; - - if(len > W25Q80BV_PAGE_LEN) -2000c812: 4086 lsls r6, r0 -2000c814: 42b4 cmp r4, r6 -2000c816: d836 bhi.n 2000c886 - uint32_t* u32_addr_pt; - uint32_t* u32_dest_pt; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c818: 0438 lsls r0, r7, #16 -2000c81a: 4310 orrs r0, r2 - if(len > W25Q80BV_PAGE_LEN) - { - return USB_REQUEST_STATUS_STALL; - } else - { - if((addr + len) > W25Q80BV_NUM_BYTES) -2000c81c: 2380 movs r3, #128 ; 0x80 -2000c81e: 1907 adds r7, r0, r4 -2000c820: 4e19 ldr r6, [pc, #100] ; (2000c888 ) -2000c822: 035a lsls r2, r3, #13 -2000c824: 4297 cmp r7, r2 -2000c826: d917 bls.n 2000c858 - { - if( (len >= 4) && -2000c828: 2c03 cmp r4, #3 -2000c82a: d90d bls.n 2000c848 - ((len & ADDR_ALIGN_32BITS) == 0) && -2000c82c: 2303 movs r3, #3 - return USB_REQUEST_STATUS_STALL; - } else - { - if((addr + len) > W25Q80BV_NUM_BYTES) - { - if( (len >= 4) && -2000c82e: 1c27 adds r7, r4, #0 -2000c830: 401f ands r7, r3 -2000c832: d109 bne.n 2000c848 - ((len & ADDR_ALIGN_32BITS) == 0) && - ((addr & ADDR_ALIGN_32BITS) == 0) -2000c834: 4003 ands r3, r0 - } else - { - if((addr + len) > W25Q80BV_NUM_BYTES) - { - if( (len >= 4) && - ((len & ADDR_ALIGN_32BITS) == 0) && -2000c836: d108 bne.n 2000c84a - ((addr & ADDR_ALIGN_32BITS) == 0) - ) - { - u32_addr_pt = (uint32_t*)addr; - u32_dest_pt = (uint32_t*)&spiflash_buffer[0]; - for(i=0; i<(len/4); i++) -2000c838: 08a1 lsrs r1, r4, #2 - } else { - return USB_REQUEST_STATUS_OK; - } -} - -usb_request_status_t usb_vendor_request_read_spiflash( -2000c83a: 009a lsls r2, r3, #2 - { - u32_addr_pt = (uint32_t*)addr; - u32_dest_pt = (uint32_t*)&spiflash_buffer[0]; - for(i=0; i<(len/4); i++) - { - u32_dest_pt[i] = u32_addr_pt[i]; -2000c83c: 5817 ldr r7, [r2, r0] - ((addr & ADDR_ALIGN_32BITS) == 0) - ) - { - u32_addr_pt = (uint32_t*)addr; - u32_dest_pt = (uint32_t*)&spiflash_buffer[0]; - for(i=0; i<(len/4); i++) -2000c83e: 3301 adds r3, #1 - { - u32_dest_pt[i] = u32_addr_pt[i]; -2000c840: 50b7 str r7, [r6, r2] - ((addr & ADDR_ALIGN_32BITS) == 0) - ) - { - u32_addr_pt = (uint32_t*)addr; - u32_dest_pt = (uint32_t*)&spiflash_buffer[0]; - for(i=0; i<(len/4); i++) -2000c842: 428b cmp r3, r1 -2000c844: d3f9 bcc.n 2000c83a -2000c846: e00b b.n 2000c860 -2000c848: e000 b.n 2000c84c - u32_dest_pt[i] = u32_addr_pt[i]; - } - } else - { - u8_addr_pt = (uint8_t*)addr; - for(i=0; i - { - spiflash_buffer[i] = u8_addr_pt[i]; -2000c850: 5c0a ldrb r2, [r1, r0] -2000c852: 5472 strb r2, [r6, r1] - u32_dest_pt[i] = u32_addr_pt[i]; - } - } else - { - u8_addr_pt = (uint8_t*)addr; - for(i=0; i - spiflash_buffer[i] = u8_addr_pt[i]; - } - } - } else - { - w25q80bv_read(addr, len, &spiflash_buffer[0]); -2000c858: 1c21 adds r1, r4, #0 -2000c85a: 1c32 adds r2, r6, #0 -2000c85c: f000 fef2 bl 2000d644 - } - usb_transfer_schedule_block(endpoint->in, &spiflash_buffer[0], len); -2000c860: 69a8 ldr r0, [r5, #24] -2000c862: 1c31 adds r1, r6, #0 -2000c864: 1c22 adds r2, r4, #0 -2000c866: f001 fabf bl 2000dde8 -2000c86a: e00b b.n 2000c884 - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - } else - { - return USB_REQUEST_STATUS_OK; -2000c86c: 2000 movs r0, #0 - w25q80bv_read(addr, len, &spiflash_buffer[0]); - } - usb_transfer_schedule_block(endpoint->in, &spiflash_buffer[0], len); - return USB_REQUEST_STATUS_OK; - } - } else if (stage == USB_TRANSFER_STAGE_DATA) -2000c86e: 2901 cmp r1, #1 -2000c870: d109 bne.n 2000c886 - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; - /* This check is redundant but makes me feel better. */ - if(len > W25Q80BV_PAGE_LEN) -2000c872: 88ea ldrh r2, [r5, #6] -2000c874: 2380 movs r3, #128 ; 0x80 - { - return USB_REQUEST_STATUS_STALL; -2000c876: 1c08 adds r0, r1, #0 - } else if (stage == USB_TRANSFER_STAGE_DATA) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; - /* This check is redundant but makes me feel better. */ - if(len > W25Q80BV_PAGE_LEN) -2000c878: 0059 lsls r1, r3, #1 -2000c87a: 428a cmp r2, r1 -2000c87c: d803 bhi.n 2000c886 - { - return USB_REQUEST_STATUS_STALL; - } else - { - usb_transfer_schedule_ack(endpoint->out); -2000c87e: 69e8 ldr r0, [r5, #28] -2000c880: f001 fabf bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c884: 2000 movs r0, #0 - } - } else - { - return USB_REQUEST_STATUS_OK; - } -} -2000c886: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000c888: 2000f400 .word 0x2000f400 - -2000c88c : - return USB_REQUEST_STATUS_OK; -} - -usb_request_status_t usb_vendor_request_write_spiflash( -usb_endpoint_t* const endpoint, const usb_transfer_stage_t stage) -{ -2000c88c: b570 push {r4, r5, r6, lr} -2000c88e: 1c04 adds r4, r0, #0 -2000c890: 1e0d subs r5, r1, #0 - uint32_t addr = 0; - uint16_t len = 0; - - if (stage == USB_TRANSFER_STAGE_SETUP) -2000c892: d117 bne.n 2000c8c4 - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; -2000c894: 88e2 ldrh r2, [r4, #6] - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) - || ((addr + len) > W25Q80BV_NUM_BYTES)) - { - return USB_REQUEST_STATUS_STALL; -2000c896: 2301 movs r3, #1 - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c898: 2680 movs r6, #128 ; 0x80 - uint32_t addr = 0; - uint16_t len = 0; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c89a: 8840 ldrh r0, [r0, #2] -2000c89c: 88a1 ldrh r1, [r4, #4] - len = endpoint->setup.length; - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c89e: 409e lsls r6, r3 -2000c8a0: 42b2 cmp r2, r6 -2000c8a2: d82a bhi.n 2000c8fa - uint32_t addr = 0; - uint16_t len = 0; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c8a4: 0405 lsls r5, r0, #16 - len = endpoint->setup.length; - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c8a6: 2080 movs r0, #128 ; 0x80 - uint32_t addr = 0; - uint16_t len = 0; - - if (stage == USB_TRANSFER_STAGE_SETUP) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c8a8: 430d orrs r5, r1 - len = endpoint->setup.length; - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c8aa: 0341 lsls r1, r0, #13 -2000c8ac: 428d cmp r5, r1 -2000c8ae: d824 bhi.n 2000c8fa - || ((addr + len) > W25Q80BV_NUM_BYTES)) -2000c8b0: 18ae adds r6, r5, r2 -2000c8b2: 428e cmp r6, r1 -2000c8b4: d821 bhi.n 2000c8fa - { - return USB_REQUEST_STATUS_STALL; - } else - { - usb_transfer_schedule_block(endpoint->out, &spiflash_buffer[0], len); -2000c8b6: 4912 ldr r1, [pc, #72] ; (2000c900 ) -2000c8b8: 69e0 ldr r0, [r4, #28] -2000c8ba: f001 fa95 bl 2000dde8 - w25q80bv_setup(); -2000c8be: f000 fd31 bl 2000d324 -2000c8c2: e019 b.n 2000c8f8 - w25q80bv_program(addr, len, &spiflash_buffer[0]); - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - } else { - return USB_REQUEST_STATUS_OK; -2000c8c4: 2300 movs r3, #0 - { - usb_transfer_schedule_block(endpoint->out, &spiflash_buffer[0], len); - w25q80bv_setup(); - return USB_REQUEST_STATUS_OK; - } - } else if (stage == USB_TRANSFER_STAGE_DATA) -2000c8c6: 2901 cmp r1, #1 -2000c8c8: d117 bne.n 2000c8fa - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; - len = endpoint->setup.length; -2000c8ca: 88e1 ldrh r1, [r4, #6] - /* This check is redundant but makes me feel better. */ - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c8cc: 2680 movs r6, #128 ; 0x80 - || ((addr + len) > W25Q80BV_NUM_BYTES)) - { - return USB_REQUEST_STATUS_STALL; -2000c8ce: 1c2b adds r3, r5, #0 - w25q80bv_setup(); - return USB_REQUEST_STATUS_OK; - } - } else if (stage == USB_TRANSFER_STAGE_DATA) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c8d0: 8840 ldrh r0, [r0, #2] -2000c8d2: 88a2 ldrh r2, [r4, #4] - len = endpoint->setup.length; - /* This check is redundant but makes me feel better. */ - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c8d4: 0075 lsls r5, r6, #1 -2000c8d6: 42a9 cmp r1, r5 -2000c8d8: d80f bhi.n 2000c8fa - w25q80bv_setup(); - return USB_REQUEST_STATUS_OK; - } - } else if (stage == USB_TRANSFER_STAGE_DATA) - { - addr = (endpoint->setup.value << 16) | endpoint->setup.index; -2000c8da: 0400 lsls r0, r0, #16 -2000c8dc: 4310 orrs r0, r2 - len = endpoint->setup.length; - /* This check is redundant but makes me feel better. */ - if ((len > W25Q80BV_PAGE_LEN) || (addr > W25Q80BV_NUM_BYTES) -2000c8de: 2280 movs r2, #128 ; 0x80 -2000c8e0: 0356 lsls r6, r2, #13 -2000c8e2: 42b0 cmp r0, r6 -2000c8e4: d809 bhi.n 2000c8fa - || ((addr + len) > W25Q80BV_NUM_BYTES)) -2000c8e6: 1845 adds r5, r0, r1 -2000c8e8: 42b5 cmp r5, r6 -2000c8ea: d806 bhi.n 2000c8fa - { - return USB_REQUEST_STATUS_STALL; - } else { - w25q80bv_program(addr, len, &spiflash_buffer[0]); -2000c8ec: 4a04 ldr r2, [pc, #16] ; (2000c900 ) -2000c8ee: f000 fe69 bl 2000d5c4 - usb_transfer_schedule_ack(endpoint->in); -2000c8f2: 69a0 ldr r0, [r4, #24] -2000c8f4: f001 fa85 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c8f8: 2300 movs r3, #0 - } - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c8fa: 1c18 adds r0, r3, #0 -2000c8fc: bd70 pop {r4, r5, r6, pc} -2000c8fe: 46c0 nop ; (mov r8, r8) -2000c900: 2000f400 .word 0x2000f400 - -2000c904 : -} - -usb_request_status_t usb_vendor_request_read_r820t( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c904: b570 push {r4, r5, r6, lr} - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c906: 2500 movs r5, #0 -} - -usb_request_status_t usb_vendor_request_read_r820t( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c908: 1c04 adds r4, r0, #0 -2000c90a: 1e0e subs r6, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c90c: 42ae cmp r6, r5 -2000c90e: d114 bne.n 2000c93a - { - if( endpoint->setup.index < 256 ) -2000c910: 8881 ldrh r1, [r0, #4] - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; -2000c912: 2501 movs r5, #1 -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000c914: 29ff cmp r1, #255 ; 0xff -2000c916: d810 bhi.n 2000c93a - { - const uint8_t value = airspy_r820t_read_single(&airspy_conf->r820t_conf_rw, endpoint->setup.index); -2000c918: 4b09 ldr r3, [pc, #36] ; (2000c940 ) -2000c91a: b2c9 uxtb r1, r1 -2000c91c: 6818 ldr r0, [r3, #0] -2000c91e: 3048 adds r0, #72 ; 0x48 -2000c920: f000 faf4 bl 2000cf0c - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c924: 1c21 adds r1, r4, #0 -2000c926: 1c2a adds r2, r5, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) - { - const uint8_t value = airspy_r820t_read_single(&airspy_conf->r820t_conf_rw, endpoint->setup.index); - endpoint->buffer[0] = value; -2000c928: 7220 strb r0, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c92a: 3108 adds r1, #8 -2000c92c: 69a0 ldr r0, [r4, #24] -2000c92e: f001 fa5b bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c932: 69e0 ldr r0, [r4, #28] -2000c934: f001 fa65 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c938: 1c35 adds r5, r6, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c93a: 1c28 adds r0, r5, #0 -2000c93c: bd70 pop {r4, r5, r6, pc} -2000c93e: 46c0 nop ; (mov r8, r8) -2000c940: 2000ef28 .word 0x2000ef28 - -2000c944 : -} - -usb_request_status_t usb_vendor_request_write_r820t( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c944: b538 push {r3, r4, r5, lr} -2000c946: 1c04 adds r4, r0, #0 - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c948: 2000 movs r0, #0 -} - -usb_request_status_t usb_vendor_request_write_r820t( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c94a: 1e0d subs r5, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c94c: 4285 cmp r5, r0 -2000c94e: d111 bne.n 2000c974 - { - if( endpoint->setup.index < 256 ) -2000c950: 88a1 ldrh r1, [r4, #4] - airspy_r820t_write_single(&airspy_conf->r820t_conf_rw, endpoint->setup.index, endpoint->setup.value); - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; -2000c952: 2001 movs r0, #1 -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000c954: 29ff cmp r1, #255 ; 0xff -2000c956: d80d bhi.n 2000c974 - { - if( endpoint->setup.value < 256 ) -2000c958: 8862 ldrh r2, [r4, #2] -2000c95a: 2aff cmp r2, #255 ; 0xff -2000c95c: d80a bhi.n 2000c974 - { - airspy_r820t_write_single(&airspy_conf->r820t_conf_rw, endpoint->setup.index, endpoint->setup.value); -2000c95e: 4b06 ldr r3, [pc, #24] ; (2000c978 ) -2000c960: b2c9 uxtb r1, r1 -2000c962: 6818 ldr r0, [r3, #0] -2000c964: b2d2 uxtb r2, r2 -2000c966: 3048 adds r0, #72 ; 0x48 -2000c968: f000 fa8e bl 2000ce88 - usb_transfer_schedule_ack(endpoint->in); -2000c96c: 69a0 ldr r0, [r4, #24] -2000c96e: f001 fa48 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c972: 1c28 adds r0, r5, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c974: bd38 pop {r3, r4, r5, pc} -2000c976: 46c0 nop ; (mov r8, r8) -2000c978: 2000ef28 .word 0x2000ef28 - -2000c97c : -} - -usb_request_status_t usb_vendor_request_read_si5351c( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c97c: b570 push {r4, r5, r6, lr} - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c97e: 2500 movs r5, #0 -} - -usb_request_status_t usb_vendor_request_read_si5351c( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c980: 1c04 adds r4, r0, #0 -2000c982: 1e0e subs r6, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c984: 42ae cmp r6, r5 -2000c986: d111 bne.n 2000c9ac - { - if( endpoint->setup.index < 256 ) -2000c988: 8880 ldrh r0, [r0, #4] - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; -2000c98a: 2501 movs r5, #1 -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000c98c: 28ff cmp r0, #255 ; 0xff -2000c98e: d80d bhi.n 2000c9ac - { - const uint8_t value = si5351c_read_single(endpoint->setup.index); -2000c990: b2c0 uxtb r0, r0 -2000c992: f000 f9c0 bl 2000cd16 - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c996: 1c21 adds r1, r4, #0 -2000c998: 1c2a adds r2, r5, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) - { - const uint8_t value = si5351c_read_single(endpoint->setup.index); - endpoint->buffer[0] = value; -2000c99a: 7220 strb r0, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000c99c: 3108 adds r1, #8 -2000c99e: 69a0 ldr r0, [r4, #24] -2000c9a0: f001 fa22 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000c9a4: 69e0 ldr r0, [r4, #28] -2000c9a6: f001 fa2c bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c9aa: 1c35 adds r5, r6, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c9ac: 1c28 adds r0, r5, #0 -2000c9ae: bd70 pop {r4, r5, r6, pc} - -2000c9b0 : -} - -usb_request_status_t usb_vendor_request_write_si5351c( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c9b0: b538 push {r3, r4, r5, lr} -2000c9b2: 1c04 adds r4, r0, #0 - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000c9b4: 2000 movs r0, #0 -} - -usb_request_status_t usb_vendor_request_write_si5351c( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000c9b6: 1e0d subs r5, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c9b8: 4285 cmp r5, r0 -2000c9ba: d10e bne.n 2000c9da - { - if( endpoint->setup.index < 256 ) -2000c9bc: 88a3 ldrh r3, [r4, #4] - si5351c_write_single(endpoint->setup.index, endpoint->setup.value); - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; -2000c9be: 2001 movs r0, #1 -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000c9c0: 2bff cmp r3, #255 ; 0xff -2000c9c2: d80a bhi.n 2000c9da - { - if( endpoint->setup.value < 256 ) -2000c9c4: 8861 ldrh r1, [r4, #2] -2000c9c6: 29ff cmp r1, #255 ; 0xff -2000c9c8: d807 bhi.n 2000c9da - { - si5351c_write_single(endpoint->setup.index, endpoint->setup.value); -2000c9ca: b2d8 uxtb r0, r3 -2000c9cc: b2c9 uxtb r1, r1 -2000c9ce: f000 f991 bl 2000ccf4 - usb_transfer_schedule_ack(endpoint->in); -2000c9d2: 69a0 ldr r0, [r4, #24] -2000c9d4: f001 fa15 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c9d8: 1c28 adds r0, r5, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000c9da: bd38 pop {r3, r4, r5, pc} - -2000c9dc : - -usb_request_status_t usb_vendor_request_set_receiver_mode( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage -) -{ -2000c9dc: b538 push {r3, r4, r5, lr} - default: - return USB_REQUEST_STATUS_STALL; - } - } else - { - return USB_REQUEST_STATUS_OK; -2000c9de: 2300 movs r3, #0 - -usb_request_status_t usb_vendor_request_set_receiver_mode( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage -) -{ -2000c9e0: 1c05 adds r5, r0, #0 -2000c9e2: 1e0c subs r4, r1, #0 - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000c9e4: 429c cmp r4, r3 -2000c9e6: d10a bne.n 2000c9fe - { - switch( endpoint->setup.value ) -2000c9e8: 8840 ldrh r0, [r0, #2] - case RECEIVER_MODE_RX: - set_receiver_mode(endpoint->setup.value); - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - default: - return USB_REQUEST_STATUS_STALL; -2000c9ea: 2301 movs r3, #1 -const usb_transfer_stage_t stage -) -{ - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - switch( endpoint->setup.value ) -2000c9ec: 4298 cmp r0, r3 -2000c9ee: d806 bhi.n 2000c9fe - { - case RECEIVER_MODE_OFF: - case RECEIVER_MODE_RX: - set_receiver_mode(endpoint->setup.value); -2000c9f0: b2c0 uxtb r0, r0 -2000c9f2: f7ff fc67 bl 2000c2c4 - usb_transfer_schedule_ack(endpoint->in); -2000c9f6: 69a8 ldr r0, [r5, #24] -2000c9f8: f001 fa03 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000c9fc: 1c23 adds r3, r4, #0 - } - } else - { - return USB_REQUEST_STATUS_OK; - } -} -2000c9fe: 1c18 adds r0, r3, #0 -2000ca00: bd38 pop {r3, r4, r5, pc} - ... - -2000ca04 : -} - -usb_request_status_t usb_vendor_request_write_gpio_command( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000ca04: b538 push {r3, r4, r5, lr} - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000ca06: 2300 movs r3, #0 - uint32_t port_num; - uint32_t pin_num; - uint16_t index; - uint16_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000ca08: 4299 cmp r1, r3 -2000ca0a: d11b bne.n 2000ca44 - { - index = endpoint->setup.index; -2000ca0c: 8882 ldrh r2, [r0, #4] - } - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - } - return USB_REQUEST_STATUS_STALL; -2000ca0e: 2301 movs r3, #1 - uint16_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - index = endpoint->setup.index; - if( index < 256 ) -2000ca10: 2aff cmp r2, #255 ; 0xff -2000ca12: d817 bhi.n 2000ca44 - { - value = endpoint->setup.value; -2000ca14: 8844 ldrh r4, [r0, #2] - if( value < 2 ) -2000ca16: 429c cmp r4, r3 -2000ca18: d814 bhi.n 2000ca44 - { - port_num = index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca1a: 4d0b ldr r5, [pc, #44] ; (2000ca48 ) - if( index < 256 ) - { - value = endpoint->setup.value; - if( value < 2 ) - { - port_num = index >> 5; -2000ca1c: 0951 lsrs r1, r2, #5 - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca1e: 1949 adds r1, r1, r5 - - pin_num = index & 0x1F; - pin_num = (1 << pin_num); -2000ca20: 251f movs r5, #31 -2000ca22: 402a ands r2, r5 - { - value = endpoint->setup.value; - if( value < 2 ) - { - port_num = index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca24: 0089 lsls r1, r1, #2 - - pin_num = index & 0x1F; - pin_num = (1 << pin_num); -2000ca26: 4093 lsls r3, r2 - - if(value == 1) -2000ca28: 2c01 cmp r4, #1 -2000ca2a: d103 bne.n 2000ca34 - .reserved = 0, -}; - -__inline__ void gpio_set(uint32_t gpioport, uint32_t gpios) -{ - GPIO_SET(gpioport) = gpios; -2000ca2c: 2580 movs r5, #128 ; 0x80 -2000ca2e: 00aa lsls r2, r5, #2 -2000ca30: 1889 adds r1, r1, r2 -2000ca32: e002 b.n 2000ca3a -} - -__inline__ void gpio_clear(uint32_t gpioport, uint32_t gpios) -{ - GPIO_CLR(gpioport) = gpios; -2000ca34: 22a0 movs r2, #160 ; 0xa0 -2000ca36: 0094 lsls r4, r2, #2 -2000ca38: 1909 adds r1, r1, r4 -2000ca3a: 600b str r3, [r1, #0] - gpio_set(port_num, pin_num); - }else - { - gpio_clear(port_num, pin_num); - } - usb_transfer_schedule_ack(endpoint->in); -2000ca3c: 6980 ldr r0, [r0, #24] -2000ca3e: f001 f9e0 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000ca42: 2300 movs r3, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000ca44: 1c18 adds r0, r3, #0 -2000ca46: bd38 pop {r3, r4, r5, pc} -2000ca48: 1003d800 .word 0x1003d800 - -2000ca4c : - -usb_request_status_t usb_vendor_request_read_gpio_command( -usb_endpoint_t* const endpoint, -const usb_transfer_stage_t stage) -{ -2000ca4c: b510 push {r4, lr} -2000ca4e: 1c04 adds r4, r0, #0 - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; -2000ca50: 2000 movs r0, #0 -{ - uint32_t port_num; - uint32_t pin_num; - uint8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) -2000ca52: 4281 cmp r1, r0 -2000ca54: d122 bne.n 2000ca9c - { - if( endpoint->setup.index < 256 ) -2000ca56: 88a2 ldrh r2, [r4, #4] - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } - return USB_REQUEST_STATUS_STALL; -2000ca58: 2001 movs r0, #1 - uint32_t pin_num; - uint8_t value; - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) -2000ca5a: 2aff cmp r2, #255 ; 0xff -2000ca5c: d81e bhi.n 2000ca9c - { - port_num = endpoint->setup.index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca5e: 4910 ldr r1, [pc, #64] ; (2000caa0 ) - - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) - { - port_num = endpoint->setup.index >> 5; -2000ca60: 0953 lsrs r3, r2, #5 - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca62: 185b adds r3, r3, r1 - - pin_num = endpoint->setup.index & 0x1F; - pin_num = (1 << pin_num); -2000ca64: 211f movs r1, #31 -2000ca66: 400a ands r2, r1 - if( stage == USB_TRANSFER_STAGE_SETUP ) - { - if( endpoint->setup.index < 256 ) - { - port_num = endpoint->setup.index >> 5; - port_num = (GPIO_PORT_BASE + 0x2000 + (port_num * 4)); -2000ca68: 009b lsls r3, r3, #2 - - pin_num = endpoint->setup.index & 0x1F; - pin_num = (1 << pin_num); -2000ca6a: 4090 lsls r0, r2 - - /* If GPIO DIR is set to OUT read the GPIO_SET reg else just read GPIO PIN */ - if( (GPIO_DIR(port_num) & pin_num) ) -2000ca6c: 681a ldr r2, [r3, #0] -2000ca6e: 4210 tst r0, r2 -2000ca70: d003 beq.n 2000ca7a - { - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000ca72: 2180 movs r1, #128 ; 0x80 -2000ca74: 008a lsls r2, r1, #2 -2000ca76: 189b adds r3, r3, r2 -2000ca78: e001 b.n 2000ca7e - GPIO_CLR(gpioport) = gpios; -} - -__inline__ uint32_t gpio_get(uint32_t gpioport, uint32_t gpios) -{ - return (GPIO_PIN(gpioport) & gpios) != 0; -2000ca7a: 3301 adds r3, #1 -2000ca7c: 33ff adds r3, #255 ; 0xff -2000ca7e: 681b ldr r3, [r3, #0] - }else - { - value = gpio_get(port_num, pin_num); - } - endpoint->buffer[0] = value; - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000ca80: 1c21 adds r1, r4, #0 - GPIO_CLR(gpioport) = gpios; -} - -__inline__ uint32_t gpio_get(uint32_t gpioport, uint32_t gpios) -{ - return (GPIO_PIN(gpioport) & gpios) != 0; -2000ca82: 4018 ands r0, r3 - if( (GPIO_DIR(port_num) & pin_num) ) - { - value = ((GPIO_SET(port_num) & pin_num) != 0); - }else - { - value = gpio_get(port_num, pin_num); -2000ca84: 1e43 subs r3, r0, #1 -2000ca86: 4198 sbcs r0, r3 - } - endpoint->buffer[0] = value; -2000ca88: 7220 strb r0, [r4, #8] - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000ca8a: 3108 adds r1, #8 -2000ca8c: 2201 movs r2, #1 -2000ca8e: 69a0 ldr r0, [r4, #24] -2000ca90: f001 f9aa bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000ca94: 69e0 ldr r0, [r4, #28] -2000ca96: f001 f9b4 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000ca9a: 2000 movs r0, #0 - } - return USB_REQUEST_STATUS_STALL; - } else { - return USB_REQUEST_STATUS_OK; - } -} -2000ca9c: bd10 pop {r4, pc} -2000ca9e: 46c0 nop ; (mov r8, r8) -2000caa0: 1003d800 .word 0x1003d800 - -2000caa4 : - .reserved = 0, -}; - -__inline__ void gpio_set(uint32_t gpioport, uint32_t gpios) -{ - GPIO_SET(gpioport) = gpios; -2000caa4: 2380 movs r3, #128 ; 0x80 -2000caa6: 009a lsls r2, r3, #2 -2000caa8: 1880 adds r0, r0, r2 -2000caaa: 6001 str r1, [r0, #0] -} -2000caac: 4770 bx lr - -2000caae : - -__inline__ void gpio_clear(uint32_t gpioport, uint32_t gpios) -{ - GPIO_CLR(gpioport) = gpios; -2000caae: 23a0 movs r3, #160 ; 0xa0 -2000cab0: 009a lsls r2, r3, #2 -2000cab2: 1880 adds r0, r0, r2 -2000cab4: 6001 str r1, [r0, #0] -} -2000cab6: 4770 bx lr - -2000cab8 : -{ - return (GPIO_PIN(gpioport) & gpios) != 0; -} - -void usb_streaming_disable(void) -{ -2000cab8: b508 push {r3, lr} - usb_endpoint_disable(&usb_endpoint_bulk_in); -2000caba: 4803 ldr r0, [pc, #12] ; (2000cac8 ) -2000cabc: f000 fece bl 2000d85c - usb_endpoint_disable(&usb_endpoint_bulk_out); -2000cac0: 4802 ldr r0, [pc, #8] ; (2000cacc ) -2000cac2: f000 fecb bl 2000d85c -} -2000cac6: bd08 pop {r3, pc} -2000cac8: 2000ef00 .word 0x2000ef00 -2000cacc: 2000eea0 .word 0x2000eea0 - -2000cad0 : -usb_request_handler_fn vendor_request_handler[AIRSPY_CMD_MAX+1]; - -void airspy_usb_req_init(void) -{ - /* Init default sample_rate conf */ - sample_rate_conf_no = AIRSPY_SAMPLERATE_DEFAULT_CONF; -2000cad0: 4b1f ldr r3, [pc, #124] ; (2000cb50 ) - - /* Init default value to 100.0MHz */ - set_freq_params.freq_hz = 100000000; -2000cad2: 4920 ldr r1, [pc, #128] ; (2000cb54 ) -2000cad4: 4820 ldr r0, [pc, #128] ; (2000cb58 ) -usb_request_handler_fn vendor_request_handler[AIRSPY_CMD_MAX+1]; - -void airspy_usb_req_init(void) -{ - /* Init default sample_rate conf */ - sample_rate_conf_no = AIRSPY_SAMPLERATE_DEFAULT_CONF; -2000cad6: 2200 movs r2, #0 -2000cad8: 701a strb r2, [r3, #0] - - /* Init default value to 100.0MHz */ - set_freq_params.freq_hz = 100000000; -2000cada: 6008 str r0, [r1, #0] - - /* TODO remove this code, for test => INVALID => RESET */ - vendor_request_handler[AIRSPY_INVALID] = usb_vendor_request_reset; -2000cadc: 4b1f ldr r3, [pc, #124] ; (2000cb5c ) -2000cade: 4a20 ldr r2, [pc, #128] ; (2000cb60 ) - - vendor_request_handler[AIRSPY_RECEIVER_MODE] = usb_vendor_request_set_receiver_mode; -2000cae0: 4820 ldr r0, [pc, #128] ; (2000cb64 ) - - vendor_request_handler[AIRSPY_SI5351C_WRITE] = usb_vendor_request_write_si5351c; -2000cae2: 4921 ldr r1, [pc, #132] ; (2000cb68 ) - - /* Init default value to 100.0MHz */ - set_freq_params.freq_hz = 100000000; - - /* TODO remove this code, for test => INVALID => RESET */ - vendor_request_handler[AIRSPY_INVALID] = usb_vendor_request_reset; -2000cae4: 601a str r2, [r3, #0] - - vendor_request_handler[AIRSPY_RECEIVER_MODE] = usb_vendor_request_set_receiver_mode; -2000cae6: 6058 str r0, [r3, #4] - - vendor_request_handler[AIRSPY_SI5351C_WRITE] = usb_vendor_request_write_si5351c; -2000cae8: 6099 str r1, [r3, #8] - vendor_request_handler[AIRSPY_SI5351C_READ] = usb_vendor_request_read_si5351c; -2000caea: 4a20 ldr r2, [pc, #128] ; (2000cb6c ) - - vendor_request_handler[AIRSPY_R820T_WRITE] = usb_vendor_request_write_r820t; -2000caec: 4820 ldr r0, [pc, #128] ; (2000cb70 ) - vendor_request_handler[AIRSPY_R820T_READ] = usb_vendor_request_read_r820t; -2000caee: 4921 ldr r1, [pc, #132] ; (2000cb74 ) - vendor_request_handler[AIRSPY_INVALID] = usb_vendor_request_reset; - - vendor_request_handler[AIRSPY_RECEIVER_MODE] = usb_vendor_request_set_receiver_mode; - - vendor_request_handler[AIRSPY_SI5351C_WRITE] = usb_vendor_request_write_si5351c; - vendor_request_handler[AIRSPY_SI5351C_READ] = usb_vendor_request_read_si5351c; -2000caf0: 60da str r2, [r3, #12] - - vendor_request_handler[AIRSPY_R820T_WRITE] = usb_vendor_request_write_r820t; -2000caf2: 6118 str r0, [r3, #16] - vendor_request_handler[AIRSPY_R820T_READ] = usb_vendor_request_read_r820t; -2000caf4: 6159 str r1, [r3, #20] - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE] = usb_vendor_request_erase_spiflash; -2000caf6: 4a20 ldr r2, [pc, #128] ; (2000cb78 ) - vendor_request_handler[AIRSPY_SPIFLASH_WRITE] = usb_vendor_request_write_spiflash; -2000caf8: 4820 ldr r0, [pc, #128] ; (2000cb7c ) - vendor_request_handler[AIRSPY_SPIFLASH_READ] = usb_vendor_request_read_spiflash; -2000cafa: 4921 ldr r1, [pc, #132] ; (2000cb80 ) - vendor_request_handler[AIRSPY_SI5351C_READ] = usb_vendor_request_read_si5351c; - - vendor_request_handler[AIRSPY_R820T_WRITE] = usb_vendor_request_write_r820t; - vendor_request_handler[AIRSPY_R820T_READ] = usb_vendor_request_read_r820t; - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE] = usb_vendor_request_erase_spiflash; -2000cafc: 619a str r2, [r3, #24] - vendor_request_handler[AIRSPY_SPIFLASH_WRITE] = usb_vendor_request_write_spiflash; -2000cafe: 61d8 str r0, [r3, #28] - vendor_request_handler[AIRSPY_SPIFLASH_READ] = usb_vendor_request_read_spiflash; -2000cb00: 6219 str r1, [r3, #32] - - vendor_request_handler[AIRSPY_BOARD_ID_READ] = usb_vendor_request_read_board_id; -2000cb02: 4a20 ldr r2, [pc, #128] ; (2000cb84 ) - vendor_request_handler[AIRSPY_VERSION_STRING_READ] = usb_vendor_request_read_version_string; -2000cb04: 4820 ldr r0, [pc, #128] ; (2000cb88 ) - vendor_request_handler[AIRSPY_BOARD_PARTID_SERIALNO_READ] = usb_vendor_request_read_partid_serialno; -2000cb06: 4921 ldr r1, [pc, #132] ; (2000cb8c ) - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE] = usb_vendor_request_erase_spiflash; - vendor_request_handler[AIRSPY_SPIFLASH_WRITE] = usb_vendor_request_write_spiflash; - vendor_request_handler[AIRSPY_SPIFLASH_READ] = usb_vendor_request_read_spiflash; - - vendor_request_handler[AIRSPY_BOARD_ID_READ] = usb_vendor_request_read_board_id; -2000cb08: 625a str r2, [r3, #36] ; 0x24 - vendor_request_handler[AIRSPY_VERSION_STRING_READ] = usb_vendor_request_read_version_string; -2000cb0a: 6298 str r0, [r3, #40] ; 0x28 - vendor_request_handler[AIRSPY_BOARD_PARTID_SERIALNO_READ] = usb_vendor_request_read_partid_serialno; -2000cb0c: 62d9 str r1, [r3, #44] ; 0x2c - - vendor_request_handler[AIRSPY_SET_SAMPLERATE] = usb_vendor_request_set_samplerate; -2000cb0e: 4a20 ldr r2, [pc, #128] ; (2000cb90 ) - - vendor_request_handler[AIRSPY_SET_FREQ] = usb_vendor_request_set_freq; -2000cb10: 4820 ldr r0, [pc, #128] ; (2000cb94 ) - - vendor_request_handler[AIRSPY_SET_LNA_GAIN] = usb_vendor_request_set_lna_gain; -2000cb12: 4921 ldr r1, [pc, #132] ; (2000cb98 ) - - vendor_request_handler[AIRSPY_BOARD_ID_READ] = usb_vendor_request_read_board_id; - vendor_request_handler[AIRSPY_VERSION_STRING_READ] = usb_vendor_request_read_version_string; - vendor_request_handler[AIRSPY_BOARD_PARTID_SERIALNO_READ] = usb_vendor_request_read_partid_serialno; - - vendor_request_handler[AIRSPY_SET_SAMPLERATE] = usb_vendor_request_set_samplerate; -2000cb14: 631a str r2, [r3, #48] ; 0x30 - - vendor_request_handler[AIRSPY_SET_FREQ] = usb_vendor_request_set_freq; -2000cb16: 6358 str r0, [r3, #52] ; 0x34 - - vendor_request_handler[AIRSPY_SET_LNA_GAIN] = usb_vendor_request_set_lna_gain; -2000cb18: 6399 str r1, [r3, #56] ; 0x38 - vendor_request_handler[AIRSPY_SET_MIXER_GAIN] = usb_vendor_request_set_mixer_gain; -2000cb1a: 4a20 ldr r2, [pc, #128] ; (2000cb9c ) - vendor_request_handler[AIRSPY_SET_VGA_GAIN] = usb_vendor_request_set_vga_gain; -2000cb1c: 4820 ldr r0, [pc, #128] ; (2000cba0 ) - - vendor_request_handler[AIRSPY_SET_LNA_AGC] = usb_vendor_request_set_lna_agc; -2000cb1e: 4921 ldr r1, [pc, #132] ; (2000cba4 ) - vendor_request_handler[AIRSPY_SET_SAMPLERATE] = usb_vendor_request_set_samplerate; - - vendor_request_handler[AIRSPY_SET_FREQ] = usb_vendor_request_set_freq; - - vendor_request_handler[AIRSPY_SET_LNA_GAIN] = usb_vendor_request_set_lna_gain; - vendor_request_handler[AIRSPY_SET_MIXER_GAIN] = usb_vendor_request_set_mixer_gain; -2000cb20: 63da str r2, [r3, #60] ; 0x3c - vendor_request_handler[AIRSPY_SET_VGA_GAIN] = usb_vendor_request_set_vga_gain; - - vendor_request_handler[AIRSPY_SET_LNA_AGC] = usb_vendor_request_set_lna_agc; - vendor_request_handler[AIRSPY_SET_MIXER_AGC] = usb_vendor_request_set_mixer_agc; -2000cb22: 4a21 ldr r2, [pc, #132] ; (2000cba8 ) - - vendor_request_handler[AIRSPY_SET_FREQ] = usb_vendor_request_set_freq; - - vendor_request_handler[AIRSPY_SET_LNA_GAIN] = usb_vendor_request_set_lna_gain; - vendor_request_handler[AIRSPY_SET_MIXER_GAIN] = usb_vendor_request_set_mixer_gain; - vendor_request_handler[AIRSPY_SET_VGA_GAIN] = usb_vendor_request_set_vga_gain; -2000cb24: 6418 str r0, [r3, #64] ; 0x40 - - vendor_request_handler[AIRSPY_SET_LNA_AGC] = usb_vendor_request_set_lna_agc; -2000cb26: 6459 str r1, [r3, #68] ; 0x44 - vendor_request_handler[AIRSPY_SET_MIXER_AGC] = usb_vendor_request_set_mixer_agc; - - vendor_request_handler[AIRSPY_MS_VENDOR_CMD] = usb_vendor_request_ms_vendor_command; -2000cb28: 4820 ldr r0, [pc, #128] ; (2000cbac ) - - vendor_request_handler[AIRSPY_SET_RF_BIAS_CMD] = usb_vendor_request_set_rf_bias_command; -2000cb2a: 4921 ldr r1, [pc, #132] ; (2000cbb0 ) - vendor_request_handler[AIRSPY_SET_LNA_GAIN] = usb_vendor_request_set_lna_gain; - vendor_request_handler[AIRSPY_SET_MIXER_GAIN] = usb_vendor_request_set_mixer_gain; - vendor_request_handler[AIRSPY_SET_VGA_GAIN] = usb_vendor_request_set_vga_gain; - - vendor_request_handler[AIRSPY_SET_LNA_AGC] = usb_vendor_request_set_lna_agc; - vendor_request_handler[AIRSPY_SET_MIXER_AGC] = usb_vendor_request_set_mixer_agc; -2000cb2c: 649a str r2, [r3, #72] ; 0x48 - - vendor_request_handler[AIRSPY_MS_VENDOR_CMD] = usb_vendor_request_ms_vendor_command; - - vendor_request_handler[AIRSPY_SET_RF_BIAS_CMD] = usb_vendor_request_set_rf_bias_command; - - vendor_request_handler[AIRSPY_GPIO_WRITE] = usb_vendor_request_write_gpio_command; -2000cb2e: 4a21 ldr r2, [pc, #132] ; (2000cbb4 ) - vendor_request_handler[AIRSPY_SET_VGA_GAIN] = usb_vendor_request_set_vga_gain; - - vendor_request_handler[AIRSPY_SET_LNA_AGC] = usb_vendor_request_set_lna_agc; - vendor_request_handler[AIRSPY_SET_MIXER_AGC] = usb_vendor_request_set_mixer_agc; - - vendor_request_handler[AIRSPY_MS_VENDOR_CMD] = usb_vendor_request_ms_vendor_command; -2000cb30: 64d8 str r0, [r3, #76] ; 0x4c - - vendor_request_handler[AIRSPY_SET_RF_BIAS_CMD] = usb_vendor_request_set_rf_bias_command; -2000cb32: 6519 str r1, [r3, #80] ; 0x50 - - vendor_request_handler[AIRSPY_GPIO_WRITE] = usb_vendor_request_write_gpio_command; - vendor_request_handler[AIRSPY_GPIO_READ] = usb_vendor_request_read_gpio_command; -2000cb34: 4820 ldr r0, [pc, #128] ; (2000cbb8 ) - - vendor_request_handler[AIRSPY_GPIODIR_WRITE] = usb_vendor_request_gpiodir_write_command; -2000cb36: 4921 ldr r1, [pc, #132] ; (2000cbbc ) - - vendor_request_handler[AIRSPY_MS_VENDOR_CMD] = usb_vendor_request_ms_vendor_command; - - vendor_request_handler[AIRSPY_SET_RF_BIAS_CMD] = usb_vendor_request_set_rf_bias_command; - - vendor_request_handler[AIRSPY_GPIO_WRITE] = usb_vendor_request_write_gpio_command; -2000cb38: 655a str r2, [r3, #84] ; 0x54 - vendor_request_handler[AIRSPY_GPIO_READ] = usb_vendor_request_read_gpio_command; - - vendor_request_handler[AIRSPY_GPIODIR_WRITE] = usb_vendor_request_gpiodir_write_command; - vendor_request_handler[AIRSPY_GPIODIR_READ] = usb_vendor_request_gpiodir_read_command; -2000cb3a: 4a21 ldr r2, [pc, #132] ; (2000cbc0 ) - vendor_request_handler[AIRSPY_MS_VENDOR_CMD] = usb_vendor_request_ms_vendor_command; - - vendor_request_handler[AIRSPY_SET_RF_BIAS_CMD] = usb_vendor_request_set_rf_bias_command; - - vendor_request_handler[AIRSPY_GPIO_WRITE] = usb_vendor_request_write_gpio_command; - vendor_request_handler[AIRSPY_GPIO_READ] = usb_vendor_request_read_gpio_command; -2000cb3c: 6598 str r0, [r3, #88] ; 0x58 - - vendor_request_handler[AIRSPY_GPIODIR_WRITE] = usb_vendor_request_gpiodir_write_command; -2000cb3e: 65d9 str r1, [r3, #92] ; 0x5c - vendor_request_handler[AIRSPY_GPIODIR_READ] = usb_vendor_request_gpiodir_read_command; -2000cb40: 661a str r2, [r3, #96] ; 0x60 - - vendor_request_handler[AIRSPY_GET_SAMPLERATES] = usb_vendor_request_get_samplerates_command; -2000cb42: 4820 ldr r0, [pc, #128] ; (2000cbc4 ) - vendor_request_handler[AIRSPY_SET_PACKING] = usb_vendor_request_set_packing_command; -2000cb44: 4920 ldr r1, [pc, #128] ; (2000cbc8 ) - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE_SECTOR] = usb_vendor_request_erase_sector_spiflash; -2000cb46: 4a21 ldr r2, [pc, #132] ; (2000cbcc ) - vendor_request_handler[AIRSPY_GPIO_READ] = usb_vendor_request_read_gpio_command; - - vendor_request_handler[AIRSPY_GPIODIR_WRITE] = usb_vendor_request_gpiodir_write_command; - vendor_request_handler[AIRSPY_GPIODIR_READ] = usb_vendor_request_gpiodir_read_command; - - vendor_request_handler[AIRSPY_GET_SAMPLERATES] = usb_vendor_request_get_samplerates_command; -2000cb48: 6658 str r0, [r3, #100] ; 0x64 - vendor_request_handler[AIRSPY_SET_PACKING] = usb_vendor_request_set_packing_command; -2000cb4a: 6699 str r1, [r3, #104] ; 0x68 - - vendor_request_handler[AIRSPY_SPIFLASH_ERASE_SECTOR] = usb_vendor_request_erase_sector_spiflash; -2000cb4c: 66da str r2, [r3, #108] ; 0x6c -} -2000cb4e: 4770 bx lr -2000cb50: 2000f500 .word 0x2000f500 -2000cb54: 2000f388 .word 0x2000f388 -2000cb58: 05f5e100 .word 0x05f5e100 -2000cb5c: 2000f390 .word 0x2000f390 -2000cb60: 2000c329 .word 0x2000c329 -2000cb64: 2000c9dd .word 0x2000c9dd -2000cb68: 2000c9b1 .word 0x2000c9b1 -2000cb6c: 2000c97d .word 0x2000c97d -2000cb70: 2000c945 .word 0x2000c945 -2000cb74: 2000c905 .word 0x2000c905 -2000cb78: 2000c3a5 .word 0x2000c3a5 -2000cb7c: 2000c88d .word 0x2000c88d -2000cb80: 2000c801 .word 0x2000c801 -2000cb84: 2000c4c1 .word 0x2000c4c1 -2000cb88: 2000c7a1 .word 0x2000c7a1 -2000cb8c: 2000c741 .word 0x2000c741 -2000cb90: 2000c62d .word 0x2000c62d -2000cb94: 2000c5f5 .word 0x2000c5f5 -2000cb98: 2000c5c5 .word 0x2000c5c5 -2000cb9c: 2000c595 .word 0x2000c595 -2000cba0: 2000c565 .word 0x2000c565 -2000cba4: 2000c535 .word 0x2000c535 -2000cba8: 2000c505 .word 0x2000c505 -2000cbac: 2000c479 .word 0x2000c479 -2000cbb0: 2000c4e1 .word 0x2000c4e1 -2000cbb4: 2000ca05 .word 0x2000ca05 -2000cbb8: 2000ca4d .word 0x2000ca4d -2000cbbc: 2000c361 .word 0x2000c361 -2000cbc0: 2000c42d .word 0x2000c42d -2000cbc4: 2000c3c1 .word 0x2000c3c1 -2000cbc8: 2000c6ed .word 0x2000c6ed -2000cbcc: 2000c337 .word 0x2000c337 - -2000cbd0 : -}; - -static const uint8_t htoa[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; - -void usb_descriptor_fill_string_serial_number(usb_descriptor_serial_number_t serial_number) -{ -2000cbd0: b5f0 push {r4, r5, r6, r7, lr} - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbd2: 4b2d ldr r3, [pc, #180] ; (2000cc88 ) - j = 0; - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; -2000cbd4: 0e05 lsrs r5, r0, #24 - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbd6: 092c lsrs r4, r5, #4 -2000cbd8: 5d1e ldrb r6, [r3, r4] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cbda: 240f movs r4, #15 -2000cbdc: 4025 ands r5, r4 - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbde: 4a2b ldr r2, [pc, #172] ; (2000cc8c ) - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cbe0: 5d5f ldrb r7, [r3, r5] - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; -2000cbe2: 25ff movs r5, #255 ; 0xff - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbe4: 7596 strb r6, [r2, #22] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cbe6: 7617 strb r7, [r2, #24] - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; -2000cbe8: 042e lsls r6, r5, #16 -2000cbea: 1c07 adds r7, r0, #0 -2000cbec: 4037 ands r7, r6 -2000cbee: 0c3d lsrs r5, r7, #16 - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbf0: 092f lsrs r7, r5, #4 -2000cbf2: 5ddf ldrb r7, [r3, r7] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cbf4: 4025 ands r5, r4 -2000cbf6: 5d5d ldrb r5, [r3, r5] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cbf8: 7697 strb r7, [r2, #26] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; -2000cbfa: 27ff movs r7, #255 ; 0xff - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cbfc: 7715 strb r5, [r2, #28] - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; -2000cbfe: 023d lsls r5, r7, #8 -2000cc00: 4005 ands r5, r0 -2000cc02: 0a2f lsrs r7, r5, #8 - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc04: 093d lsrs r5, r7, #4 -2000cc06: 5d5d ldrb r5, [r3, r5] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc08: 4027 ands r7, r4 -2000cc0a: 46bc mov ip, r7 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc0c: 7795 strb r5, [r2, #30] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc0e: 4665 mov r5, ip -2000cc10: 5d5d ldrb r5, [r3, r5] -2000cc12: 1c57 adds r7, r2, #1 -2000cc14: 77fd strb r5, [r7, #31] - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc16: b2c7 uxtb r7, r0 -2000cc18: 093d lsrs r5, r7, #4 -2000cc1a: 5d5d ldrb r5, [r3, r5] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc1c: 4020 ands r0, r4 -2000cc1e: 5c18 ldrb r0, [r3, r0] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc20: 1cd7 adds r7, r2, #3 -2000cc22: 77fd strb r5, [r7, #31] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc24: 1d57 adds r7, r2, #5 -2000cc26: 77f8 strb r0, [r7, #31] - j = 0; - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; -2000cc28: 0e08 lsrs r0, r1, #24 - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc2a: 0905 lsrs r5, r0, #4 -2000cc2c: 5d5d ldrb r5, [r3, r5] -2000cc2e: 1dd7 adds r7, r2, #7 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc30: 4020 ands r0, r4 -2000cc32: 5c18 ldrb r0, [r3, r0] - for(i=0; i<2; i++) - { - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc34: 77fd strb r5, [r7, #31] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; -2000cc36: 400e ands r6, r1 - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc38: 1c17 adds r7, r2, #0 - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; -2000cc3a: 0c35 lsrs r5, r6, #16 - data_u32 = serial_number.sn_32b[i]; - - data_u8 = (data_u32 & 0xFF000000) >> 24; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc3c: 3728 adds r7, #40 ; 0x28 -2000cc3e: 7038 strb r0, [r7, #0] - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc40: 092f lsrs r7, r5, #4 -2000cc42: 5dd8 ldrb r0, [r3, r7] -2000cc44: 1c16 adds r6, r2, #0 -2000cc46: 362a adds r6, #42 ; 0x2a -2000cc48: 7030 strb r0, [r6, #0] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc4a: 4025 ands r5, r4 - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; -2000cc4c: 26ff movs r6, #255 ; 0xff - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc4e: 5d5d ldrb r5, [r3, r5] -2000cc50: 1c17 adds r7, r2, #0 - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; -2000cc52: 0230 lsls r0, r6, #8 -2000cc54: 4008 ands r0, r1 - j+=2; - - data_u8 = (data_u32 & 0x00FF0000) >> 16; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc56: 372c adds r7, #44 ; 0x2c -2000cc58: 703d strb r5, [r7, #0] - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; -2000cc5a: 0a07 lsrs r7, r0, #8 - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc5c: 093e lsrs r6, r7, #4 -2000cc5e: 5d98 ldrb r0, [r3, r6] -2000cc60: 1c15 adds r5, r2, #0 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc62: 4027 ands r7, r4 -2000cc64: 5ddf ldrb r7, [r3, r7] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc66: 352e adds r5, #46 ; 0x2e - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc68: 1c16 adds r6, r2, #0 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc6a: 7028 strb r0, [r5, #0] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc6c: 3630 adds r6, #48 ; 0x30 - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc6e: b2cd uxtb r5, r1 - j+=2; - - data_u8 = (data_u32 & 0x0000FF00) >> 8; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc70: 7037 strb r7, [r6, #0] - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc72: 400c ands r4, r1 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc74: 092e lsrs r6, r5, #4 -2000cc76: 5d9f ldrb r7, [r3, r6] -2000cc78: 1c10 adds r0, r2, #0 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc7a: 5d19 ldrb r1, [r3, r4] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc7c: 3032 adds r0, #50 ; 0x32 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc7e: 3234 adds r2, #52 ; 0x34 - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; - j+=2; - - data_u8 = (data_u32 & 0x000000FF); - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0xF0) >> 4]; -2000cc80: 7007 strb r7, [r0, #0] - j+=2; - usb_descriptor_string_serial_number[USB_DESCRIPTOR_SN_POS + j] = htoa[(data_u8 & 0x0F)]; -2000cc82: 7011 strb r1, [r2, #0] - j+=2; - } -} -2000cc84: bdf0 pop {r4, r5, r6, r7, pc} -2000cc86: 46c0 nop ; (mov r8, r8) -2000cc88: 2000e9a0 .word 0x2000e9a0 -2000cc8c: 2000ecd7 .word 0x2000ecd7 - -2000cc90 : - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) -2000cc90: 2300 movs r3, #0 -2000cc92: 4283 cmp r3, r0 -2000cc94: d002 beq.n 2000cc9c - __asm__("nop"); -2000cc96: 46c0 nop ; (mov r8, r8) - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) -2000cc98: 3301 adds r3, #1 -2000cc9a: e7fa b.n 2000cc92 - __asm__("nop"); -} -2000cc9c: 4770 bx lr - ... - -2000cca0 : - -void cpu_reset(void) -{ - RESET_CTRL0 = RESET_CTRL0_CORE_RST; -2000cca0: 4b01 ldr r3, [pc, #4] ; (2000cca8 ) -2000cca2: 2201 movs r2, #1 -2000cca4: 601a str r2, [r3, #0] -2000cca6: e7fe b.n 2000cca6 -2000cca8: 40053100 .word 0x40053100 - -2000ccac : - /* Wait after PowerOn (stabilization of LDO & Internal Init of R820T) */ - delay(WAIT_R820T_POWER_ON_DELAY); -} - -void enable_biast_power(void) -{ -2000ccac: b508 push {r3, lr} - gpio_set(PORT_EN_BIAST, PIN_EN_BIAST); -2000ccae: 2180 movs r1, #128 ; 0x80 -2000ccb0: 4802 ldr r0, [pc, #8] ; (2000ccbc ) -2000ccb2: 0189 lsls r1, r1, #6 -2000ccb4: f7ff fef6 bl 2000caa4 -} -2000ccb8: bd08 pop {r3, pc} -2000ccba: 46c0 nop ; (mov r8, r8) -2000ccbc: 400f6004 .word 0x400f6004 - -2000ccc0 : - -void disable_biast_power(void) -{ -2000ccc0: b508 push {r3, lr} - gpio_clear(PORT_EN_BIAST, PIN_EN_BIAST); -2000ccc2: 2180 movs r1, #128 ; 0x80 -2000ccc4: 4802 ldr r0, [pc, #8] ; (2000ccd0 ) -2000ccc6: 0189 lsls r1, r1, #6 -2000ccc8: f7ff fef1 bl 2000caae -} -2000cccc: bd08 pop {r3, pc} -2000ccce: 46c0 nop ; (mov r8, r8) -2000ccd0: 400f6004 .word 0x400f6004 - -2000ccd4 : -/* Code Compatible with CortexM0, M3, M4 (R4 & R5 are modified for ARCH 6M) */ -__attribute__((naked)) -void hard_fault_handler(void) -{ -#if defined(__ARM_ARCH_6M__) - __asm__("MOVS R4, #4"); -2000ccd4: 2404 movs r4, #4 - __asm__("MOV R5, LR"); -2000ccd6: 4675 mov r5, lr - __asm__("TST R4, R5"); -2000ccd8: 422c tst r4, r5 - __asm__("BEQ _MSP"); -2000ccda: d002 beq.n 2000cce2 <_MSP> - __asm__("MRS R0, PSP"); -2000ccdc: f3ef 8009 mrs r0, PSP - __asm__("B hard_fault_handler_c"); -2000cce0: e002 b.n 2000cce8 - -2000cce2 <_MSP>: - __asm__("_MSP:"); - __asm__("MRS R0, MSP"); -2000cce2: f3ef 8008 mrs r0, MSP - __asm__("B hard_fault_handler_c"); -2000cce6: e7ff b.n 2000cce8 - -2000cce8 : -volatile hard_fault_stack_t* hard_fault_stack_pt; - -__attribute__((used)) void hard_fault_handler_c(uint32_t* args) -{ - /* hard_fault_stack_pt contains registers saved before the hard fault */ - hard_fault_stack_pt = (hard_fault_stack_t*)args; -2000cce8: 4b01 ldr r3, [pc, #4] ; (2000ccf0 ) -2000ccea: 6018 str r0, [r3, #0] - if( SCB->CFSR & CSCB_CFSR_BFSR_PRECISERR ) { - } - } - } - */ - __asm("BKPT #0\n") ; // Break into the debugger -2000ccec: be00 bkpt 0x0000 -2000ccee: e7fe b.n 2000ccee -2000ccf0: 2000f740 .word 0x2000f740 - -2000ccf4 : -} - - -/* write to single register */ -void si5351c_write_single(uint8_t reg, uint8_t val) -{ -2000ccf4: b538 push {r3, r4, r5, lr} -2000ccf6: 1c0c adds r4, r1, #0 -2000ccf8: 1c05 adds r5, r0, #0 - i2c0_tx_start(); -2000ccfa: f001 fa9d bl 2000e238 - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); -2000ccfe: 20c0 movs r0, #192 ; 0xc0 -2000cd00: f001 fada bl 2000e2b8 - i2c0_tx_byte(reg); -2000cd04: 1c28 adds r0, r5, #0 -2000cd06: f001 fad7 bl 2000e2b8 - i2c0_tx_byte(val); -2000cd0a: 1c20 adds r0, r4, #0 -2000cd0c: f001 fad4 bl 2000e2b8 - i2c0_stop(); -2000cd10: f001 fb72 bl 2000e3f8 -} -2000cd14: bd38 pop {r3, r4, r5, pc} - -2000cd16 : - -/* read single register */ -uint8_t si5351c_read_single(uint8_t reg) -{ -2000cd16: b510 push {r4, lr} -2000cd18: 1c04 adds r4, r0, #0 - uint8_t val; - - /* set register address with write */ - i2c0_tx_start(); -2000cd1a: f001 fa8d bl 2000e238 - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); -2000cd1e: 20c0 movs r0, #192 ; 0xc0 -2000cd20: f001 faca bl 2000e2b8 - i2c0_tx_byte(reg); -2000cd24: 1c20 adds r0, r4, #0 -2000cd26: f001 fac7 bl 2000e2b8 - - /* read the value */ - i2c0_tx_start(); -2000cd2a: f001 fa85 bl 2000e238 - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_READ); -2000cd2e: 20c1 movs r0, #193 ; 0xc1 -2000cd30: f001 fac2 bl 2000e2b8 - val = i2c0_rx_byte(); -2000cd34: f001 fb0c bl 2000e350 -2000cd38: 1c04 adds r4, r0, #0 - i2c0_stop(); -2000cd3a: f001 fb5d bl 2000e3f8 - - return val; -} -2000cd3e: 1c20 adds r0, r4, #0 -2000cd40: bd10 pop {r4, pc} - ... - -2000cd44 : - r820t_write_reg(priv, 0x0B, b); -} - -/* write to single register but do not update priv (return 0 if success) */ -static void airspy_r820t_write_direct(uint8_t reg, uint8_t val) -{ -2000cd44: b538 push {r3, r4, r5, lr} - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cd46: 4b0c ldr r3, [pc, #48] ; (2000cd78 ) - r820t_write_reg(priv, 0x0B, b); -} - -/* write to single register but do not update priv (return 0 if success) */ -static void airspy_r820t_write_direct(uint8_t reg, uint8_t val) -{ -2000cd48: 1c05 adds r5, r0, #0 - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cd4a: 6818 ldr r0, [r3, #0] - r820t_write_reg(priv, 0x0B, b); -} - -/* write to single register but do not update priv (return 0 if success) */ -static void airspy_r820t_write_direct(uint8_t reg, uint8_t val) -{ -2000cd4c: 1c0c adds r4, r1, #0 - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); - if(value == 1) -2000cd4e: 0602 lsls r2, r0, #24 -2000cd50: d510 bpl.n 2000cd74 - { - if(r820t_state_standby == 0) -2000cd52: 490a ldr r1, [pc, #40] ; (2000cd7c ) -2000cd54: 780a ldrb r2, [r1, #0] -2000cd56: 2a00 cmp r2, #0 -2000cd58: d10c bne.n 2000cd74 -/* write to single register but do not update priv (return 0 if success) */ -static void airspy_r820t_write_direct(uint8_t reg, uint8_t val) -{ - if(r820t_is_power_enabled() == true) - { - i2c1_tx_start(); -2000cd5a: f001 fa8d bl 2000e278 - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); -2000cd5e: 2034 movs r0, #52 ; 0x34 -2000cd60: f001 fad0 bl 2000e304 - i2c1_tx_byte(reg); -2000cd64: 1c28 adds r0, r5, #0 -2000cd66: f001 facd bl 2000e304 - i2c1_tx_byte(val); -2000cd6a: 1c20 adds r0, r4, #0 -2000cd6c: f001 faca bl 2000e304 - i2c1_stop(); -2000cd70: f001 fb54 bl 2000e41c - } -} -2000cd74: bd38 pop {r3, r4, r5, pc} -2000cd76: 46c0 nop ; (mov r8, r8) -2000cd78: 400f6204 .word 0x400f6204 -2000cd7c: 2000ef2c .word 0x2000ef2c - -2000cd80 : - uint32_t freq_mhz_fix; - - if(freq_mhz < FREQ_50MHZ) - { - /* Frequency Less than 50MHz */ - return FREQ_TO_IDX_0_TO_49MHZ; -2000cd80: 2100 movs r1, #0 - -int r820t_freq_get_idx(uint32_t freq_mhz) -{ - uint32_t freq_mhz_fix; - - if(freq_mhz < FREQ_50MHZ) -2000cd82: 2831 cmp r0, #49 ; 0x31 -2000cd84: d906 bls.n 2000cd94 - }else - { - /* Frequency Between 50 to 649MHz use table */ - /* Fix the frequency for the table */ - freq_mhz_fix = freq_mhz - FREQ_50MHZ; - if(freq_mhz_fix < FREQ_TO_IDX_SIZE) -2000cd86: 4a04 ldr r2, [pc, #16] ; (2000cd98 ) - return FREQ_TO_IDX_0_TO_49MHZ; - }else - { - /* Frequency Between 50 to 649MHz use table */ - /* Fix the frequency for the table */ - freq_mhz_fix = freq_mhz - FREQ_50MHZ; -2000cd88: 3832 subs r0, #50 ; 0x32 - - return freq_to_idx[freq_mhz_fix]; - }else - { - /* Frequency Between 650 to 1800MHz */ - return FREQ_TO_IDX_650_TO_1800MHZ; -2000cd8a: 2114 movs r1, #20 - }else - { - /* Frequency Between 50 to 649MHz use table */ - /* Fix the frequency for the table */ - freq_mhz_fix = freq_mhz - FREQ_50MHZ; - if(freq_mhz_fix < FREQ_TO_IDX_SIZE) -2000cd8c: 4290 cmp r0, r2 -2000cd8e: d801 bhi.n 2000cd94 - { - - return freq_to_idx[freq_mhz_fix]; -2000cd90: 4b02 ldr r3, [pc, #8] ; (2000cd9c ) -2000cd92: 5c19 ldrb r1, [r3, r0] - { - /* Frequency Between 650 to 1800MHz */ - return FREQ_TO_IDX_650_TO_1800MHZ; - } - } -} -2000cd94: 1c08 adds r0, r1, #0 -2000cd96: 4770 bx lr -2000cd98: 00000257 .word 0x00000257 -2000cd9c: 2000e9c4 .word 0x2000e9c4 - -2000cda0 : - -/* - * Write regs 5 to 32 (R820T_INIT_NB_REGS values) using data parameter and write last reg to 0 - */ -void airspy_r820t_write_init(const uint8_t* data) -{ -2000cda0: b538 push {r3, r4, r5, lr} - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cda2: 4b0e ldr r3, [pc, #56] ; (2000cddc ) - -/* - * Write regs 5 to 32 (R820T_INIT_NB_REGS values) using data parameter and write last reg to 0 - */ -void airspy_r820t_write_init(const uint8_t* data) -{ -2000cda4: 1c05 adds r5, r0, #0 - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cda6: 6818 ldr r0, [r3, #0] - if(value == 1) -2000cda8: 0602 lsls r2, r0, #24 -2000cdaa: d516 bpl.n 2000cdda - { - if(r820t_state_standby == 0) -2000cdac: 490c ldr r1, [pc, #48] ; (2000cde0 ) -2000cdae: 780c ldrb r4, [r1, #0] -2000cdb0: 2c00 cmp r4, #0 -2000cdb2: d112 bne.n 2000cdda -{ - uint_fast8_t i; - - if(r820t_is_power_enabled() == true) - { - i2c1_tx_start(); -2000cdb4: f001 fa60 bl 2000e278 - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); -2000cdb8: 2034 movs r0, #52 ; 0x34 -2000cdba: f001 faa3 bl 2000e304 - i2c1_tx_byte(REG_SHADOW_START); /* Start reg */ -2000cdbe: 2005 movs r0, #5 -2000cdc0: f001 faa0 bl 2000e304 - - for (i = 0; i < R820T_INIT_NB_REGS; i++) - i2c1_tx_byte(data[i]); -2000cdc4: 5d28 ldrb r0, [r5, r4] - { - i2c1_tx_start(); - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); - i2c1_tx_byte(REG_SHADOW_START); /* Start reg */ - - for (i = 0; i < R820T_INIT_NB_REGS; i++) -2000cdc6: 3401 adds r4, #1 - i2c1_tx_byte(data[i]); -2000cdc8: f001 fa9c bl 2000e304 - { - i2c1_tx_start(); - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); - i2c1_tx_byte(REG_SHADOW_START); /* Start reg */ - - for (i = 0; i < R820T_INIT_NB_REGS; i++) -2000cdcc: 2c1b cmp r4, #27 -2000cdce: d1f9 bne.n 2000cdc4 - i2c1_tx_byte(data[i]); - - i2c1_tx_byte(0); /* Set last reg to 0 (errata r820t) */ -2000cdd0: 2000 movs r0, #0 -2000cdd2: f001 fa97 bl 2000e304 - - i2c1_stop(); -2000cdd6: f001 fb21 bl 2000e41c - } -} -2000cdda: bd38 pop {r3, r4, r5, pc} -2000cddc: 400f6204 .word 0x400f6204 -2000cde0: 2000ef2c .word 0x2000ef2c - -2000cde4 : -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -} - -void airspy_r820t_read(r820t_priv_t *priv, uint8_t* const data, const uint8_t data_count) -{ -2000cde4: b5f8 push {r3, r4, r5, r6, r7, lr} - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cde6: 4b25 ldr r3, [pc, #148] ; (2000ce7c ) -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -} - -void airspy_r820t_read(r820t_priv_t *priv, uint8_t* const data, const uint8_t data_count) -{ -2000cde8: 1c16 adds r6, r2, #0 - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cdea: 681a ldr r2, [r3, #0] -2000cdec: 2480 movs r4, #128 ; 0x80 -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -} - -void airspy_r820t_read(r820t_priv_t *priv, uint8_t* const data, const uint8_t data_count) -{ -2000cdee: 1c0d adds r5, r1, #0 - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000cdf0: 4014 ands r4, r2 - if(value == 1) -2000cdf2: d00c beq.n 2000ce0e - { - if(r820t_state_standby == 0) -2000cdf4: 4922 ldr r1, [pc, #136] ; (2000ce80 ) -2000cdf6: 2400 movs r4, #0 -2000cdf8: 780f ldrb r7, [r1, #0] -2000cdfa: 2f00 cmp r7, #0 -2000cdfc: d107 bne.n 2000ce0e -2000cdfe: e00c b.n 2000ce1a - -static int r820t_read_cache_reg(r820t_priv_t *priv, int reg) -{ - reg -= REG_SHADOW_START; - - if (reg >= 0 && reg < NUM_REGS) -2000ce00: 1f67 subs r7, r4, #5 -2000ce02: 2f1d cmp r7, #29 -2000ce04: d806 bhi.n 2000ce14 -static uint8_t r82xx_bitrev(uint8_t byte) -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -} - -void airspy_r820t_read(r820t_priv_t *priv, uint8_t* const data, const uint8_t data_count) -2000ce06: 1902 adds r2, r0, r4 -static int r820t_read_cache_reg(r820t_priv_t *priv, int reg) -{ - reg -= REG_SHADOW_START; - - if (reg >= 0 && reg < NUM_REGS) - return priv->regs[reg]; -2000ce08: 79d3 ldrb r3, [r2, #7] - }else - { - /* Data cannot be read when R820T is OFF, just read cache */ - for(i=0; i -2000ce12: e032 b.n 2000ce7a - reg -= REG_SHADOW_START; - - if (reg >= 0 && reg < NUM_REGS) - return priv->regs[reg]; - else - return -1; -2000ce14: 2101 movs r1, #1 -2000ce16: 424b negs r3, r1 -2000ce18: e7f7 b.n 2000ce0a - uint32_t val; - - if(r820t_is_power_enabled() == true) - { - /* read the value */ - i2c1_tx_start(); -2000ce1a: f001 fa2d bl 2000e278 - i2c1_tx_byte(R820T_I2C_ADDR | I2C_READ); -2000ce1e: 2035 movs r0, #53 ; 0x35 -2000ce20: f001 fa70 bl 2000e304 -2000ce24: 4c17 ldr r4, [pc, #92] ; (2000ce84 ) - - if(data_count > 1) -2000ce26: 2e01 cmp r6, #1 -2000ce28: d80e bhi.n 2000ce48 - val = i2c1_rx_byte(0); /* NACK last byte */ - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ - - }else - { - val = i2c1_rx_byte(0); /* NACK last byte */ -2000ce2a: 1c38 adds r0, r7, #0 -2000ce2c: f001 fab6 bl 2000e39c - const uint8_t lut[16] = { 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, - 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf }; - -static uint8_t r82xx_bitrev(uint8_t byte) -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -2000ce30: 260f movs r6, #15 -2000ce32: 4006 ands r6, r0 -2000ce34: 0907 lsrs r7, r0, #4 -2000ce36: 5da2 ldrb r2, [r4, r6] -2000ce38: b2f8 uxtb r0, r7 -2000ce3a: 5c24 ldrb r4, [r4, r0] -2000ce3c: 0111 lsls r1, r2, #4 -2000ce3e: 4321 orrs r1, r4 - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ - - }else - { - val = i2c1_rx_byte(0); /* NACK last byte */ - data[0] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ -2000ce40: 7029 strb r1, [r5, #0] - } - - i2c1_stop(); -2000ce42: f001 faeb bl 2000e41c -2000ce46: e018 b.n 2000ce7a - { - /* read the value */ - i2c1_tx_start(); - i2c1_tx_byte(R820T_I2C_ADDR | I2C_READ); - - if(data_count > 1) -2000ce48: 1c2f adds r7, r5, #0 - { - for(i = 0; i < (data_count-1); i++) -2000ce4a: 1e73 subs r3, r6, #1 -static uint8_t r82xx_bitrev(uint8_t byte) -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -} - -void airspy_r820t_read(r820t_priv_t *priv, uint8_t* const data, const uint8_t data_count) -2000ce4c: 1b78 subs r0, r7, r5 - i2c1_tx_start(); - i2c1_tx_byte(R820T_I2C_ADDR | I2C_READ); - - if(data_count > 1) - { - for(i = 0; i < (data_count-1); i++) -2000ce4e: 4298 cmp r0, r3 -2000ce50: da0d bge.n 2000ce6e - { - val = i2c1_rx_byte(1); /* ACK each byte */ -2000ce52: 2001 movs r0, #1 -2000ce54: f001 faa2 bl 2000e39c - const uint8_t lut[16] = { 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, - 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf }; - -static uint8_t r82xx_bitrev(uint8_t byte) -{ - return (lut[byte & 0xf] << 4) | lut[byte >> 4]; -2000ce58: 230f movs r3, #15 -2000ce5a: 4003 ands r3, r0 -2000ce5c: 5ce2 ldrb r2, [r4, r3] -2000ce5e: 0900 lsrs r0, r0, #4 -2000ce60: b2c3 uxtb r3, r0 -2000ce62: 0111 lsls r1, r2, #4 -2000ce64: 5ce2 ldrb r2, [r4, r3] -2000ce66: 4311 orrs r1, r2 - if(data_count > 1) - { - for(i = 0; i < (data_count-1); i++) - { - val = i2c1_rx_byte(1); /* ACK each byte */ - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ -2000ce68: 7039 strb r1, [r7, #0] -2000ce6a: 3701 adds r7, #1 -2000ce6c: e7ed b.n 2000ce4a - } - - val = i2c1_rx_byte(0); /* NACK last byte */ -2000ce6e: 2000 movs r0, #0 - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ -2000ce70: 19ad adds r5, r5, r6 - { - val = i2c1_rx_byte(1); /* ACK each byte */ - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ - } - - val = i2c1_rx_byte(0); /* NACK last byte */ -2000ce72: f001 fa93 bl 2000e39c - data[i] = r82xx_bitrev(val); /* Swap data bits as they are received LSB to MSB */ -2000ce76: 3d01 subs r5, #1 -2000ce78: e7da b.n 2000ce30 - { - data[i] = r820t_read_cache_reg(priv, i); - } - } - -} -2000ce7a: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000ce7c: 400f6204 .word 0x400f6204 -2000ce80: 2000ef2c .word 0x2000ef2c -2000ce84: 2000ec5b .word 0x2000ec5b - -2000ce88 : - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000ce88: 4b0e ldr r3, [pc, #56] ; (2000cec4 ) - -} - -/* write to single register (return 0 if success) */ -void airspy_r820t_write_single(r820t_priv_t *priv, uint8_t reg, uint8_t val) -{ -2000ce8a: b570 push {r4, r5, r6, lr} -2000ce8c: 1c06 adds r6, r0, #0 - - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); -2000ce8e: 6818 ldr r0, [r3, #0] - -} - -/* write to single register (return 0 if success) */ -void airspy_r820t_write_single(r820t_priv_t *priv, uint8_t reg, uint8_t val) -{ -2000ce90: 1c0d adds r5, r1, #0 -2000ce92: 1c14 adds r4, r2, #0 - port_num = PORT_EN_R820T; - pin_num = PIN_EN_R820T; - - /* GPIO DIR is set to OUT read the GPIO_SET reg */ - value = ((GPIO_SET(port_num) & pin_num) != 0); - if(value == 1) -2000ce94: 0602 lsls r2, r0, #24 -2000ce96: d503 bpl.n 2000cea0 - { - if(r820t_state_standby == 0) -2000ce98: 490b ldr r1, [pc, #44] ; (2000cec8 ) -2000ce9a: 780a ldrb r2, [r1, #0] -2000ce9c: 2a00 cmp r2, #0 -2000ce9e: d002 beq.n 2000cea6 - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); - i2c1_tx_byte(reg); - i2c1_tx_byte(val); - i2c1_stop(); - } - priv->regs[reg - REG_SHADOW_START] = val; -2000cea0: 1976 adds r6, r6, r5 -2000cea2: 71f4 strb r4, [r6, #7] -} -2000cea4: bd70 pop {r4, r5, r6, pc} -/* write to single register (return 0 if success) */ -void airspy_r820t_write_single(r820t_priv_t *priv, uint8_t reg, uint8_t val) -{ - if(r820t_is_power_enabled() == true) - { - i2c1_tx_start(); -2000cea6: f001 f9e7 bl 2000e278 - i2c1_tx_byte(R820T_I2C_ADDR | I2C_WRITE); -2000ceaa: 2034 movs r0, #52 ; 0x34 -2000ceac: f001 fa2a bl 2000e304 - i2c1_tx_byte(reg); -2000ceb0: 1c28 adds r0, r5, #0 -2000ceb2: f001 fa27 bl 2000e304 - i2c1_tx_byte(val); -2000ceb6: 1c20 adds r0, r4, #0 -2000ceb8: f001 fa24 bl 2000e304 - i2c1_stop(); -2000cebc: f001 faae bl 2000e41c -2000cec0: e7ee b.n 2000cea0 -2000cec2: 46c0 nop ; (mov r8, r8) -2000cec4: 400f6204 .word 0x400f6204 -2000cec8: 2000ef2c .word 0x2000ef2c - -2000cecc : - val = r820t_read_data[reg]; - return val; -} - -static int r820t_write_reg(r820t_priv_t *priv, uint8_t reg, uint8_t val) -{ -2000cecc: b508 push {r3, lr} - return 0; -} - -static int r820t_read_cache_reg(r820t_priv_t *priv, int reg) -{ - reg -= REG_SHADOW_START; -2000cece: 1f4b subs r3, r1, #5 - - if (reg >= 0 && reg < NUM_REGS) -2000ced0: 2b1d cmp r3, #29 -2000ced2: d802 bhi.n 2000ceda - return priv->regs[reg]; -2000ced4: 18c3 adds r3, r0, r3 -2000ced6: 7b1b ldrb r3, [r3, #12] -2000ced8: e001 b.n 2000cede - else - return -1; -2000ceda: 2301 movs r3, #1 -2000cedc: 425b negs r3, r3 - return val; -} - -static int r820t_write_reg(r820t_priv_t *priv, uint8_t reg, uint8_t val) -{ - if (r820t_read_cache_reg(priv, reg) == val) -2000cede: 4293 cmp r3, r2 -2000cee0: d001 beq.n 2000cee6 - return 0; - airspy_r820t_write_single(priv, reg, val); -2000cee2: f7ff ffd1 bl 2000ce88 - return 0; -} -2000cee6: 2000 movs r0, #0 -2000cee8: bd08 pop {r3, pc} - -2000ceea : - else - return -1; -} - -static int r820t_write_reg_mask(r820t_priv_t *priv, uint8_t reg, uint8_t val, uint8_t bit_mask) -{ -2000ceea: b510 push {r4, lr} - return 0; -} - -static int r820t_read_cache_reg(r820t_priv_t *priv, int reg) -{ - reg -= REG_SHADOW_START; -2000ceec: 1f4c subs r4, r1, #5 - - if (reg >= 0 && reg < NUM_REGS) -2000ceee: 2c1d cmp r4, #29 -2000cef0: d808 bhi.n 2000cf04 - return priv->regs[reg]; -2000cef2: 1904 adds r4, r0, r4 - int rc = r820t_read_cache_reg(priv, reg); - - if (rc < 0) - return rc; - - val = (rc & ~bit_mask) | (val & bit_mask); -2000cef4: 7b24 ldrb r4, [r4, #12] -2000cef6: 439c bics r4, r3 -2000cef8: 4013 ands r3, r2 - - return r820t_write_reg(priv, reg, val); -2000cefa: 1c22 adds r2, r4, #0 -2000cefc: 431a orrs r2, r3 -2000cefe: f7ff ffe5 bl 2000cecc -2000cf02: e001 b.n 2000cf08 - -static int r820t_read_cache_reg(r820t_priv_t *priv, int reg) -{ - reg -= REG_SHADOW_START; - - if (reg >= 0 && reg < NUM_REGS) -2000cf04: 2001 movs r0, #1 -2000cf06: 4240 negs r0, r0 - return rc; - - val = (rc & ~bit_mask) | (val & bit_mask); - - return r820t_write_reg(priv, reg, val); -} -2000cf08: bd10 pop {r4, pc} - ... - -2000cf0c : - priv->regs[reg - REG_SHADOW_START] = val; -} - -/* read single register */ -uint8_t airspy_r820t_read_single(r820t_priv_t *priv, uint8_t reg) -{ -2000cf0c: b538 push {r3, r4, r5, lr} - uint8_t val; - - /* read the value */ - airspy_r820t_read(priv, r820t_read_data, reg+1); -2000cf0e: 4d04 ldr r5, [pc, #16] ; (2000cf20 ) -2000cf10: 1c4a adds r2, r1, #1 - priv->regs[reg - REG_SHADOW_START] = val; -} - -/* read single register */ -uint8_t airspy_r820t_read_single(r820t_priv_t *priv, uint8_t reg) -{ -2000cf12: 1c0c adds r4, r1, #0 - uint8_t val; - - /* read the value */ - airspy_r820t_read(priv, r820t_read_data, reg+1); -2000cf14: b2d2 uxtb r2, r2 -2000cf16: 1c29 adds r1, r5, #0 -2000cf18: f7ff ff64 bl 2000cde4 - val = r820t_read_data[reg]; - return val; -2000cf1c: 5d28 ldrb r0, [r5, r4] -} -2000cf1e: bd38 pop {r3, r4, r5, pc} -2000cf20: 2000f744 .word 0x2000f744 - -2000cf24 : - - return rc; -} - -int r820t_set_pll(r820t_priv_t *priv, uint32_t freq) -{ -2000cf24: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - const uint32_t vco_min = 1770000000; - const uint32_t vco_max = 3900000000; - uint32_t pll_ref = (priv->xtal_freq >> 1); -2000cf26: 6805 ldr r5, [r0, #0] - - return rc; -} - -int r820t_set_pll(r820t_priv_t *priv, uint32_t freq) -{ -2000cf28: 1c04 adds r4, r0, #0 -2000cf2a: 1c0e adds r6, r1, #0 - uint8_t ni; - uint8_t si; - uint8_t nint; - - /* Calculate divider */ - for (div_num = 0; div_num < 5; div_num++) -2000cf2c: 2300 movs r3, #0 - { - vco_exact = freq << (div_num + 1); -2000cf2e: 1c5f adds r7, r3, #1 -2000cf30: 1c31 adds r1, r6, #0 - if (vco_exact >= vco_min && vco_exact <= vco_max) -2000cf32: 4a2f ldr r2, [pc, #188] ; (2000cff0 ) - uint8_t nint; - - /* Calculate divider */ - for (div_num = 0; div_num < 5; div_num++) - { - vco_exact = freq << (div_num + 1); -2000cf34: 40b9 lsls r1, r7 - if (vco_exact >= vco_min && vco_exact <= vco_max) -2000cf36: 1888 adds r0, r1, r2 -2000cf38: 492e ldr r1, [pc, #184] ; (2000cff4 ) -2000cf3a: 4288 cmp r0, r1 -2000cf3c: d903 bls.n 2000cf46 - uint8_t ni; - uint8_t si; - uint8_t nint; - - /* Calculate divider */ - for (div_num = 0; div_num < 5; div_num++) -2000cf3e: 1e3b subs r3, r7, #0 -2000cf40: 2b05 cmp r3, #5 -2000cf42: d1f4 bne.n 2000cf2e -2000cf44: e000 b.n 2000cf48 - { - vco_exact = freq << (div_num + 1); - if (vco_exact >= vco_min && vco_exact <= vco_max) -2000cf46: 1c1f adds r7, r3, #0 - nint -= 13; - ni = (nint >> 2); - si = nint - (ni << 2); - - /* Set the phase splitter */ - rc = r820t_write_reg_mask(priv, 0x10, (uint8_t) (div_num << 5), 0xe0); -2000cf48: 017a lsls r2, r7, #5 -2000cf4a: b2d2 uxtb r2, r2 -2000cf4c: 1c20 adds r0, r4, #0 -2000cf4e: 2110 movs r1, #16 -2000cf50: 23e0 movs r3, #224 ; 0xe0 -2000cf52: f7ff ffca bl 2000ceea - if(rc < 0) -2000cf56: 2800 cmp r0, #0 -2000cf58: db48 blt.n 2000cfec - { - break; - } - } - - vco_exact = freq << (div_num + 1); -2000cf5a: 3701 adds r7, #1 - nint = (uint8_t) ((vco_exact + (pll_ref >> 16)) / pll_ref_2x); -2000cf5c: 0c69 lsrs r1, r5, #17 - -int r820t_set_pll(r820t_priv_t *priv, uint32_t freq) -{ - const uint32_t vco_min = 1770000000; - const uint32_t vco_max = 3900000000; - uint32_t pll_ref = (priv->xtal_freq >> 1); -2000cf5e: 0868 lsrs r0, r5, #1 - { - break; - } - } - - vco_exact = freq << (div_num + 1); -2000cf60: 40be lsls r6, r7 - -int r820t_set_pll(r820t_priv_t *priv, uint32_t freq) -{ - const uint32_t vco_min = 1770000000; - const uint32_t vco_max = 3900000000; - uint32_t pll_ref = (priv->xtal_freq >> 1); -2000cf62: 9001 str r0, [sp, #4] - break; - } - } - - vco_exact = freq << (div_num + 1); - nint = (uint8_t) ((vco_exact + (pll_ref >> 16)) / pll_ref_2x); -2000cf64: 9100 str r1, [sp, #0] -2000cf66: 1870 adds r0, r6, r1 -2000cf68: 1c29 adds r1, r5, #0 -2000cf6a: f001 fbcd bl 2000e708 <__aeabi_uidiv> - vco_frac = vco_exact - pll_ref_2x * nint; - - nint -= 13; -2000cf6e: 1c03 adds r3, r0, #0 -2000cf70: 3b0d subs r3, #13 -2000cf72: b2da uxtb r2, r3 - break; - } - } - - vco_exact = freq << (div_num + 1); - nint = (uint8_t) ((vco_exact + (pll_ref >> 16)) / pll_ref_2x); -2000cf74: 1c07 adds r7, r0, #0 - vco_frac = vco_exact - pll_ref_2x * nint; - - nint -= 13; - ni = (nint >> 2); -2000cf76: 0890 lsrs r0, r2, #2 - si = nint - (ni << 2); -2000cf78: 0081 lsls r1, r0, #2 -2000cf7a: 1a53 subs r3, r2, r1 - rc = r820t_write_reg_mask(priv, 0x10, (uint8_t) (div_num << 5), 0xe0); - if(rc < 0) - return rc; - - /* Set the rough VCO frequency */ - rc = r820t_write_reg(priv, 0x14, (uint8_t) (ni + (si << 6))); -2000cf7c: 019a lsls r2, r3, #6 -2000cf7e: 1880 adds r0, r0, r2 -2000cf80: b2c2 uxtb r2, r0 -2000cf82: 2114 movs r1, #20 -2000cf84: 1c20 adds r0, r4, #0 -2000cf86: f7ff ffa1 bl 2000cecc - if(rc < 0) -2000cf8a: 2800 cmp r0, #0 -2000cf8c: db2e blt.n 2000cfec - } - } - - vco_exact = freq << (div_num + 1); - nint = (uint8_t) ((vco_exact + (pll_ref >> 16)) / pll_ref_2x); - vco_frac = vco_exact - pll_ref_2x * nint; -2000cf8e: b2ff uxtb r7, r7 -2000cf90: 437d muls r5, r7 -2000cf92: 1b76 subs r6, r6, r5 - /* Set the rough VCO frequency */ - rc = r820t_write_reg(priv, 0x14, (uint8_t) (ni + (si << 6))); - if(rc < 0) - return rc; - - if (vco_frac == 0) -2000cf94: d104 bne.n 2000cfa0 - { - /* Disable frac pll */ - rc = r820t_write_reg_mask(priv, 0x12, 0x08, 0x08); -2000cf96: 2208 movs r2, #8 -2000cf98: 1c20 adds r0, r4, #0 -2000cf9a: 2112 movs r1, #18 -2000cf9c: 1c13 adds r3, r2, #0 -2000cf9e: e023 b.n 2000cfe8 - if(rc < 0) - return rc; - } - else - { - vco_frac += pll_ref >> 16; -2000cfa0: 9d00 ldr r5, [sp, #0] - sdm = 0; -2000cfa2: 2700 movs r7, #0 - if(rc < 0) - return rc; - } - else - { - vco_frac += pll_ref >> 16; -2000cfa4: 1976 adds r6, r6, r5 - sdm = 0; - for(n_sdm = 0; n_sdm < 16; n_sdm++) -2000cfa6: 1c3b adds r3, r7, #0 - { - con_frac = pll_ref >> n_sdm; -2000cfa8: 9a01 ldr r2, [sp, #4] -2000cfaa: 40da lsrs r2, r3 - if (vco_frac >= con_frac) -2000cfac: 4296 cmp r6, r2 -2000cfae: d306 bcc.n 2000cfbe - { - sdm |= (uint16_t) (0x8000 >> n_sdm); -2000cfb0: 2180 movs r1, #128 ; 0x80 -2000cfb2: 0208 lsls r0, r1, #8 -2000cfb4: 4118 asrs r0, r3 -2000cfb6: 4307 orrs r7, r0 -2000cfb8: b2bf uxth r7, r7 - vco_frac -= con_frac; -2000cfba: 1ab6 subs r6, r6, r2 - if (vco_frac == 0) -2000cfbc: d002 beq.n 2000cfc4 - } - else - { - vco_frac += pll_ref >> 16; - sdm = 0; - for(n_sdm = 0; n_sdm < 16; n_sdm++) -2000cfbe: 3301 adds r3, #1 -2000cfc0: 2b10 cmp r3, #16 -2000cfc2: d1f1 bne.n 2000cfa8 - if (actual_freq != freq) - { - fprintf(stderr,"Tunning delta: %d Hz", delta); - } -*/ - rc = r820t_write_reg(priv, 0x15, (uint8_t)(sdm & 0xff)); -2000cfc4: b2fa uxtb r2, r7 -2000cfc6: 1c20 adds r0, r4, #0 -2000cfc8: 2115 movs r1, #21 -2000cfca: f7ff ff7f bl 2000cecc - if (rc < 0) -2000cfce: 2800 cmp r0, #0 -2000cfd0: db0c blt.n 2000cfec - return rc; - - rc = r820t_write_reg(priv, 0x16, (uint8_t)(sdm >> 8)); -2000cfd2: 0a3a lsrs r2, r7, #8 -2000cfd4: 1c20 adds r0, r4, #0 -2000cfd6: 2116 movs r1, #22 -2000cfd8: f7ff ff78 bl 2000cecc - if (rc < 0) -2000cfdc: 2800 cmp r0, #0 -2000cfde: db05 blt.n 2000cfec - return rc; - - /* Enable frac pll */ - rc = r820t_write_reg_mask(priv, 0x12, 0x00, 0x08); -2000cfe0: 1c20 adds r0, r4, #0 -2000cfe2: 2112 movs r1, #18 -2000cfe4: 2200 movs r2, #0 -2000cfe6: 2308 movs r3, #8 -2000cfe8: f7ff ff7f bl 2000ceea - if (rc < 0) - return rc; - } - return rc; -} -2000cfec: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} -2000cfee: 46c0 nop ; (mov r8, r8) -2000cff0: 967ff180 .word 0x967ff180 -2000cff4: 7ef53880 .word 0x7ef53880 - -2000cff8 : - -int r820t_set_freq(r820t_priv_t *priv, uint32_t freq) -{ -2000cff8: b5f8 push {r3, r4, r5, r6, r7, lr} - int freq_idx; - int rc = 0; - - /* Get the proper frequency range in MHz instead of Hz */ - /* Fast divide freq by 1000000 */ - freq = (uint32_t)((uint64_t)freq * 4295 >> 32); -2000cffa: 4b26 ldr r3, [pc, #152] ; (2000d094 ) -2000cffc: 4a24 ldr r2, [pc, #144] ; (2000d090 ) - } - return rc; -} - -int r820t_set_freq(r820t_priv_t *priv, uint32_t freq) -{ -2000cffe: 1c04 adds r4, r0, #0 -2000d000: 1c0d adds r5, r1, #0 - int rc; - uint32_t lo_freq = freq + priv->if_freq; -2000d002: 6887 ldr r7, [r0, #8] - int freq_idx; - int rc = 0; - - /* Get the proper frequency range in MHz instead of Hz */ - /* Fast divide freq by 1000000 */ - freq = (uint32_t)((uint64_t)freq * 4295 >> 32); -2000d004: 1c08 adds r0, r1, #0 -2000d006: 2100 movs r1, #0 -2000d008: f001 fbce bl 2000e7a8 <__aeabi_lmul> - - freq_idx = r820t_freq_get_idx(freq); -2000d00c: 1c08 adds r0, r1, #0 -2000d00e: f7ff feb7 bl 2000cd80 - range = &freq_ranges[freq_idx]; -2000d012: 2603 movs r6, #3 -2000d014: 4370 muls r0, r6 -2000d016: 4920 ldr r1, [pc, #128] ; (2000d098 ) -#ifdef OPTIM_SET_MUX - if(freq_idx != r820t_set_mux_freq_idx) - { -#endif - /* Open Drain */ - rc = r820t_write_reg_mask(priv, 0x17, range->open_d, 0x08); -2000d018: 2308 movs r3, #8 - /* Get the proper frequency range in MHz instead of Hz */ - /* Fast divide freq by 1000000 */ - freq = (uint32_t)((uint64_t)freq * 4295 >> 32); - - freq_idx = r820t_freq_get_idx(freq); - range = &freq_ranges[freq_idx]; -2000d01a: 180e adds r6, r1, r0 -#ifdef OPTIM_SET_MUX - if(freq_idx != r820t_set_mux_freq_idx) - { -#endif - /* Open Drain */ - rc = r820t_write_reg_mask(priv, 0x17, range->open_d, 0x08); -2000d01c: 7832 ldrb r2, [r6, #0] -2000d01e: 1c20 adds r0, r4, #0 -2000d020: 2117 movs r1, #23 -2000d022: f7ff ff62 bl 2000ceea - if (rc < 0) -2000d026: 2800 cmp r0, #0 -2000d028: db2e blt.n 2000d088 - return rc; - - /* RF_MUX,Polymux */ - rc = r820t_write_reg_mask(priv, 0x1a, range->rf_mux_ploy, 0xc3); -2000d02a: 7872 ldrb r2, [r6, #1] -2000d02c: 1c20 adds r0, r4, #0 -2000d02e: 211a movs r1, #26 -2000d030: 23c3 movs r3, #195 ; 0xc3 -2000d032: f7ff ff5a bl 2000ceea - if (rc < 0) -2000d036: 2800 cmp r0, #0 -2000d038: db26 blt.n 2000d088 - return rc; - - /* TF BAND */ - rc = r820t_write_reg(priv, 0x1b, range->tf_c); -2000d03a: 78b2 ldrb r2, [r6, #2] -2000d03c: 1c20 adds r0, r4, #0 -2000d03e: 211b movs r1, #27 -2000d040: f7ff ff44 bl 2000cecc - if (rc < 0) -2000d044: 2800 cmp r0, #0 -2000d046: db1f blt.n 2000d088 - return rc; - - /* XTAL CAP & Drive */ - rc = r820t_write_reg_mask(priv, 0x10, 0x08, 0x0b); -2000d048: 1c20 adds r0, r4, #0 -2000d04a: 2110 movs r1, #16 -2000d04c: 2208 movs r2, #8 -2000d04e: 230b movs r3, #11 -2000d050: f7ff ff4b bl 2000ceea - if (rc < 0) -2000d054: 2800 cmp r0, #0 -2000d056: db17 blt.n 2000d088 - return rc; - - rc = r820t_write_reg_mask(priv, 0x08, 0x00, 0x3f); -2000d058: 1c20 adds r0, r4, #0 -2000d05a: 2108 movs r1, #8 -2000d05c: 2200 movs r2, #0 -2000d05e: 233f movs r3, #63 ; 0x3f -2000d060: f7ff ff43 bl 2000ceea - if (rc < 0) -2000d064: 2800 cmp r0, #0 -2000d066: db0f blt.n 2000d088 - return rc; - - rc = r820t_write_reg_mask(priv, 0x09, 0x00, 0x3f); -2000d068: 1c20 adds r0, r4, #0 -2000d06a: 2109 movs r1, #9 -2000d06c: 2200 movs r2, #0 -2000d06e: 233f movs r3, #63 ; 0x3f -2000d070: f7ff ff3b bl 2000ceea -{ - int rc; - uint32_t lo_freq = freq + priv->if_freq; - - rc = r820t_set_tf(priv, freq); - if (rc < 0) -2000d074: 2800 cmp r0, #0 -2000d076: db07 blt.n 2000d088 -} - -int r820t_set_freq(r820t_priv_t *priv, uint32_t freq) -{ - int rc; - uint32_t lo_freq = freq + priv->if_freq; -2000d078: 19e9 adds r1, r5, r7 - - rc = r820t_set_tf(priv, freq); - if (rc < 0) - return rc; - - rc = r820t_set_pll(priv, lo_freq); -2000d07a: 1c20 adds r0, r4, #0 -2000d07c: f7ff ff52 bl 2000cf24 - if (rc < 0) -2000d080: 2800 cmp r0, #0 -2000d082: db01 blt.n 2000d088 - return rc; - - priv->freq = freq; -2000d084: 6065 str r5, [r4, #4] - - return 0; -2000d086: 2000 movs r0, #0 -} -2000d088: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000d08a: 46c0 nop ; (mov r8, r8) -2000d08c: 46c0 nop ; (mov r8, r8) -2000d08e: 46c0 nop ; (mov r8, r8) -2000d090: 000010c7 .word 0x000010c7 -2000d094: 00000000 .word 0x00000000 -2000d098: 2000ec1c .word 0x2000ec1c -2000d09c: 46c0 nop ; (mov r8, r8) -2000d09e: 46c0 nop ; (mov r8, r8) - -2000d0a0 : - -int r820t_set_lna_gain(r820t_priv_t *priv, uint8_t gain_index) -{ -2000d0a0: b508 push {r3, lr} -2000d0a2: 1c0a adds r2, r1, #0 - return r820t_write_reg_mask(priv, 0x05, gain_index, 0x0f); -2000d0a4: 230f movs r3, #15 -2000d0a6: 2105 movs r1, #5 -2000d0a8: f7ff ff1f bl 2000ceea -} -2000d0ac: bd08 pop {r3, pc} - -2000d0ae : - -int r820t_set_mixer_gain(r820t_priv_t *priv, uint8_t gain_index) -{ -2000d0ae: b508 push {r3, lr} -2000d0b0: 1c0a adds r2, r1, #0 - return r820t_write_reg_mask(priv, 0x07, gain_index, 0x0f); -2000d0b2: 230f movs r3, #15 -2000d0b4: 2107 movs r1, #7 -2000d0b6: f7ff ff18 bl 2000ceea -} -2000d0ba: bd08 pop {r3, pc} - -2000d0bc : - -int r820t_set_vga_gain(r820t_priv_t *priv, uint8_t gain_index) -{ -2000d0bc: b508 push {r3, lr} -2000d0be: 1c0a adds r2, r1, #0 - return r820t_write_reg_mask(priv, 0x0c, gain_index, 0x0f); -2000d0c0: 230f movs r3, #15 -2000d0c2: 210c movs r1, #12 -2000d0c4: f7ff ff11 bl 2000ceea -} -2000d0c8: bd08 pop {r3, pc} - -2000d0ca : - -int r820t_set_lna_agc(r820t_priv_t *priv, uint8_t value) -{ -2000d0ca: b508 push {r3, lr} - value = value != 0 ? 0x00 : 0x10; -2000d0cc: 424a negs r2, r1 -2000d0ce: 414a adcs r2, r1 -2000d0d0: 0112 lsls r2, r2, #4 - return r820t_write_reg_mask(priv, 0x05, value, 0x10); -2000d0d2: 2105 movs r1, #5 -2000d0d4: 2310 movs r3, #16 -2000d0d6: f7ff ff08 bl 2000ceea -} -2000d0da: bd08 pop {r3, pc} - -2000d0dc : - -int r820t_set_mixer_agc(r820t_priv_t *priv, uint8_t value) -{ -2000d0dc: b508 push {r3, lr} -2000d0de: 1e0a subs r2, r1, #0 - value = value != 0 ? 0x10 : 0x00; -2000d0e0: d000 beq.n 2000d0e4 -2000d0e2: 2210 movs r2, #16 - return r820t_write_reg_mask(priv, 0x07, value, 0x10); -2000d0e4: 2107 movs r1, #7 -2000d0e6: 2310 movs r3, #16 -2000d0e8: f7ff feff bl 2000ceea -} -2000d0ec: bd08 pop {r3, pc} - ... - -2000d0f0 : -"inspired by Mauro Carvalho Chehab calibration technique" -https://stuff.mit.edu/afs/sipb/contrib/linux/drivers/media/tuners/r820t.c -part of r820t_set_tv_standard() -*/ -int r820t_calibrate(r820t_priv_t *priv) -{ -2000d0f0: b537 push {r0, r1, r2, r4, r5, lr} -2000d0f2: 1c04 adds r4, r0, #0 -2000d0f4: 2505 movs r5, #5 - uint8_t data[5]; - - for (i = 0; i < 5; i++) - { - /* Set filt_cap */ - rc = r820t_write_reg_mask(priv, 0x0b, 0x08, 0x60); -2000d0f6: 1c20 adds r0, r4, #0 -2000d0f8: 210b movs r1, #11 -2000d0fa: 2208 movs r2, #8 -2000d0fc: 2360 movs r3, #96 ; 0x60 -2000d0fe: f7ff fef4 bl 2000ceea - if (rc < 0) -2000d102: 2800 cmp r0, #0 -2000d104: db43 blt.n 2000d18e - return rc; - - /* set cali clk =on */ - rc = r820t_write_reg_mask(priv, 0x0f, 0x04, 0x04); -2000d106: 2204 movs r2, #4 -2000d108: 1c20 adds r0, r4, #0 -2000d10a: 210f movs r1, #15 -2000d10c: 1c13 adds r3, r2, #0 -2000d10e: f7ff feec bl 2000ceea - if (rc < 0) -2000d112: 2800 cmp r0, #0 -2000d114: db3b blt.n 2000d18e - return rc; - - /* X'tal cap 0pF for PLL */ - rc = r820t_write_reg_mask(priv, 0x10, 0x00, 0x03); -2000d116: 1c20 adds r0, r4, #0 -2000d118: 2110 movs r1, #16 -2000d11a: 2200 movs r2, #0 -2000d11c: 2303 movs r3, #3 -2000d11e: f7ff fee4 bl 2000ceea - if (rc < 0) -2000d122: 2800 cmp r0, #0 -2000d124: db33 blt.n 2000d18e - return rc; - - rc = r820t_set_pll(priv, CALIBRATION_LO * 1000); -2000d126: 1c20 adds r0, r4, #0 -2000d128: 4919 ldr r1, [pc, #100] ; (2000d190 ) -2000d12a: f7ff fefb bl 2000cf24 - if (rc < 0) -2000d12e: 2800 cmp r0, #0 -2000d130: db2d blt.n 2000d18e - return rc; - - /* Start Trigger */ - rc = r820t_write_reg_mask(priv, 0x0b, 0x10, 0x10); -2000d132: 2210 movs r2, #16 -2000d134: 1c20 adds r0, r4, #0 -2000d136: 210b movs r1, #11 -2000d138: 1c13 adds r3, r2, #0 -2000d13a: f7ff fed6 bl 2000ceea - if (rc < 0) -2000d13e: 2800 cmp r0, #0 -2000d140: db25 blt.n 2000d18e - return rc; - - delay(10000); -2000d142: 4814 ldr r0, [pc, #80] ; (2000d194 ) -2000d144: f7ff fda4 bl 2000cc90 - - /* Stop Trigger */ - rc = r820t_write_reg_mask(priv, 0x0b, 0x00, 0x10); -2000d148: 1c20 adds r0, r4, #0 -2000d14a: 210b movs r1, #11 -2000d14c: 2200 movs r2, #0 -2000d14e: 2310 movs r3, #16 -2000d150: f7ff fecb bl 2000ceea - if (rc < 0) -2000d154: 2800 cmp r0, #0 -2000d156: db1a blt.n 2000d18e - return rc; - - /* set cali clk =off */ - rc = r820t_write_reg_mask(priv, 0x0f, 0x00, 0x04); -2000d158: 1c20 adds r0, r4, #0 -2000d15a: 210f movs r1, #15 -2000d15c: 2200 movs r2, #0 -2000d15e: 2304 movs r3, #4 -2000d160: f7ff fec3 bl 2000ceea - if (rc < 0) -2000d164: 2800 cmp r0, #0 -2000d166: db12 blt.n 2000d18e -} - -static int r820t_read(r820t_priv_t *priv, uint8_t *val, int len) -{ - /* reg not used and assumed to be always 0 because start from reg0 to reg0+len */ - airspy_r820t_read(priv, val, len); -2000d168: 1c20 adds r0, r4, #0 -2000d16a: 2205 movs r2, #5 -2000d16c: 4669 mov r1, sp -2000d16e: f7ff fe39 bl 2000cde4 - /* Check if calibration worked */ - rc = r820t_read(priv, data, sizeof(data)); - if (rc < 0) - return rc; - - cal_code = data[4] & 0x0f; -2000d172: 466b mov r3, sp -2000d174: 791a ldrb r2, [r3, #4] -2000d176: 200f movs r0, #15 -2000d178: 4010 ands r0, r2 - if (cal_code && cal_code != 0x0f) -2000d17a: d001 beq.n 2000d180 -2000d17c: 280f cmp r0, #15 -2000d17e: d105 bne.n 2000d18c -2000d180: 3d01 subs r5, #1 -int r820t_calibrate(r820t_priv_t *priv) -{ - int i, rc, cal_code; - uint8_t data[5]; - - for (i = 0; i < 5; i++) -2000d182: 2d00 cmp r5, #0 -2000d184: d1b7 bne.n 2000d0f6 - cal_code = data[4] & 0x0f; - if (cal_code && cal_code != 0x0f) - return 0; - } - - return -1; -2000d186: 2101 movs r1, #1 -2000d188: 4248 negs r0, r1 -2000d18a: e000 b.n 2000d18e - if (rc < 0) - return rc; - - cal_code = data[4] & 0x0f; - if (cal_code && cal_code != 0x0f) - return 0; -2000d18c: 2000 movs r0, #0 - } - - return -1; -} -2000d18e: bd3e pop {r1, r2, r3, r4, r5, pc} -2000d190: 053ec600 .word 0x053ec600 -2000d194: 00002710 .word 0x00002710 - -2000d198 : - -int r820t_init(r820t_priv_t *priv, const uint32_t if_freq) -{ -2000d198: b538 push {r3, r4, r5, lr} - int rc; - uint32_t saved_freq; - - r820t_state_standby = 0; -2000d19a: 4b0e ldr r3, [pc, #56] ; (2000d1d4 ) - - return -1; -} - -int r820t_init(r820t_priv_t *priv, const uint32_t if_freq) -{ -2000d19c: 1c04 adds r4, r0, #0 - int rc; - uint32_t saved_freq; - - r820t_state_standby = 0; -2000d19e: 2200 movs r2, #0 - priv->if_freq = if_freq; -2000d1a0: 6081 str r1, [r0, #8] - /* Initialize registers */ - airspy_r820t_write_init(priv->regs); -2000d1a2: 300c adds r0, #12 -int r820t_init(r820t_priv_t *priv, const uint32_t if_freq) -{ - int rc; - uint32_t saved_freq; - - r820t_state_standby = 0; -2000d1a4: 701a strb r2, [r3, #0] - priv->if_freq = if_freq; - /* Initialize registers */ - airspy_r820t_write_init(priv->regs); -2000d1a6: f7ff fdfb bl 2000cda0 - - r820t_set_freq(priv, priv->freq); -2000d1aa: 6861 ldr r1, [r4, #4] -2000d1ac: 1c20 adds r0, r4, #0 -2000d1ae: f7ff ff23 bl 2000cff8 - - /* Calibrate the IF filter */ - saved_freq = priv->freq; - rc = r820t_calibrate(priv); -2000d1b2: 1c20 adds r0, r4, #0 - airspy_r820t_write_init(priv->regs); - - r820t_set_freq(priv, priv->freq); - - /* Calibrate the IF filter */ - saved_freq = priv->freq; -2000d1b4: 6865 ldr r5, [r4, #4] - rc = r820t_calibrate(priv); -2000d1b6: f7ff ff9b bl 2000d0f0 - priv->freq = saved_freq; -2000d1ba: 6065 str r5, [r4, #4] - if (rc < 0) -2000d1bc: 2800 cmp r0, #0 -2000d1be: da03 bge.n 2000d1c8 - { - saved_freq = priv->freq; - r820t_calibrate(priv); -2000d1c0: 1c20 adds r0, r4, #0 -2000d1c2: f7ff ff95 bl 2000d0f0 - priv->freq = saved_freq; -2000d1c6: 6065 str r5, [r4, #4] - } - - /* Restore freq as it has been modified by r820t_calibrate() */ - rc = r820t_set_freq(priv, priv->freq); -2000d1c8: 1c29 adds r1, r5, #0 -2000d1ca: 1c20 adds r0, r4, #0 -2000d1cc: f7ff ff14 bl 2000cff8 - return rc; -} -2000d1d0: bd38 pop {r3, r4, r5, pc} -2000d1d2: 46c0 nop ; (mov r8, r8) -2000d1d4: 2000ef2c .word 0x2000ef2c - -2000d1d8 : - /* Enter in Standby mode */ - r820t_standby(); -} - -void r820t_set_if_bandwidth(r820t_priv_t *priv, uint8_t bw) -{ -2000d1d8: b5f0 push {r4, r5, r6, r7, lr} - const uint8_t modes[] = { 0xE0, 0x80, 0x60, 0x00 }; -2000d1da: 4f11 ldr r7, [pc, #68] ; (2000d220 ) - /* Enter in Standby mode */ - r820t_standby(); -} - -void r820t_set_if_bandwidth(r820t_priv_t *priv, uint8_t bw) -{ -2000d1dc: b087 sub sp, #28 - const uint8_t modes[] = { 0xE0, 0x80, 0x60, 0x00 }; -2000d1de: ae01 add r6, sp, #4 - /* Enter in Standby mode */ - r820t_standby(); -} - -void r820t_set_if_bandwidth(r820t_priv_t *priv, uint8_t bw) -{ -2000d1e0: 1c04 adds r4, r0, #0 -2000d1e2: 1c0d adds r5, r1, #0 - const uint8_t modes[] = { 0xE0, 0x80, 0x60, 0x00 }; -2000d1e4: 1c30 adds r0, r6, #0 -2000d1e6: 1c39 adds r1, r7, #0 -2000d1e8: 2204 movs r2, #4 -2000d1ea: f001 faff bl 2000e7ec - const uint8_t opt[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; -2000d1ee: 1d39 adds r1, r7, #4 -2000d1f0: a802 add r0, sp, #8 -2000d1f2: 2210 movs r2, #16 -2000d1f4: f001 fafa bl 2000e7ec - uint8_t a = 0xB0 | opt[bw & 0x0F]; - uint8_t b = 0x0F | modes[bw >> 4]; -2000d1f8: 200f movs r0, #15 -2000d1fa: 092b lsrs r3, r5, #4 - -void r820t_set_if_bandwidth(r820t_priv_t *priv, uint8_t bw) -{ - const uint8_t modes[] = { 0xE0, 0x80, 0x60, 0x00 }; - const uint8_t opt[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - uint8_t a = 0xB0 | opt[bw & 0x0F]; -2000d1fc: a902 add r1, sp, #8 -2000d1fe: 4005 ands r5, r0 - uint8_t b = 0x0F | modes[bw >> 4]; -2000d200: 5cf6 ldrb r6, [r6, r3] - -void r820t_set_if_bandwidth(r820t_priv_t *priv, uint8_t bw) -{ - const uint8_t modes[] = { 0xE0, 0x80, 0x60, 0x00 }; - const uint8_t opt[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - uint8_t a = 0xB0 | opt[bw & 0x0F]; -2000d202: 5d4a ldrb r2, [r1, r5] -2000d204: 25b0 movs r5, #176 ; 0xb0 - uint8_t b = 0x0F | modes[bw >> 4]; -2000d206: 4306 orrs r6, r0 - r820t_write_reg(priv, 0x0A, a); -2000d208: 432a orrs r2, r5 -2000d20a: 1c20 adds r0, r4, #0 -2000d20c: 210a movs r1, #10 -2000d20e: f7ff fe5d bl 2000cecc - r820t_write_reg(priv, 0x0B, b); -2000d212: 1c20 adds r0, r4, #0 -2000d214: 210b movs r1, #11 -2000d216: 1c32 adds r2, r6, #0 -2000d218: f7ff fe58 bl 2000cecc -} -2000d21c: b007 add sp, #28 -2000d21e: bdf0 pop {r4, r5, r6, r7, pc} -2000d220: 2000e9b0 .word 0x2000e9b0 - -2000d224 : - i2c1_stop(); - } -} - -int r820t_standby(void) -{ -2000d224: b508 push {r3, lr} - airspy_r820t_write_direct(0x05, 0xA0); -2000d226: 2005 movs r0, #5 -2000d228: 21a0 movs r1, #160 ; 0xa0 -2000d22a: f7ff fd8b bl 2000cd44 - airspy_r820t_write_direct(0x06, 0xD0); -2000d22e: 2006 movs r0, #6 -2000d230: 21d0 movs r1, #208 ; 0xd0 -2000d232: f7ff fd87 bl 2000cd44 - airspy_r820t_write_direct(0x07, 0x00); -2000d236: 2007 movs r0, #7 -2000d238: 2100 movs r1, #0 -2000d23a: f7ff fd83 bl 2000cd44 - airspy_r820t_write_direct(0x08, 0x40); -2000d23e: 2008 movs r0, #8 -2000d240: 2140 movs r1, #64 ; 0x40 -2000d242: f7ff fd7f bl 2000cd44 - airspy_r820t_write_direct(0x09, 0xC0); -2000d246: 2009 movs r0, #9 -2000d248: 21c0 movs r1, #192 ; 0xc0 -2000d24a: f7ff fd7b bl 2000cd44 - airspy_r820t_write_direct(0x0a, 0x70); -2000d24e: 200a movs r0, #10 -2000d250: 2170 movs r1, #112 ; 0x70 -2000d252: f7ff fd77 bl 2000cd44 - airspy_r820t_write_direct(0x0c, 0xA0); -2000d256: 200c movs r0, #12 -2000d258: 21a0 movs r1, #160 ; 0xa0 -2000d25a: f7ff fd73 bl 2000cd44 - airspy_r820t_write_direct(0x0f, 0x2A); -2000d25e: 200f movs r0, #15 -2000d260: 212a movs r1, #42 ; 0x2a -2000d262: f7ff fd6f bl 2000cd44 - airspy_r820t_write_direct(0x11, 0x03); -2000d266: 2011 movs r0, #17 -2000d268: 2103 movs r1, #3 -2000d26a: f7ff fd6b bl 2000cd44 - airspy_r820t_write_direct(0x17, 0xF4); -2000d26e: 2017 movs r0, #23 -2000d270: 21f4 movs r1, #244 ; 0xf4 -2000d272: f7ff fd67 bl 2000cd44 - airspy_r820t_write_direct(0x19, 0x0C); -2000d276: 2019 movs r0, #25 -2000d278: 210c movs r1, #12 -2000d27a: f7ff fd63 bl 2000cd44 - r820t_state_standby = 1; -2000d27e: 4b02 ldr r3, [pc, #8] ; (2000d288 ) -2000d280: 2201 movs r2, #1 - - return 0; -} -2000d282: 2000 movs r0, #0 - airspy_r820t_write_direct(0x0c, 0xA0); - airspy_r820t_write_direct(0x0f, 0x2A); - airspy_r820t_write_direct(0x11, 0x03); - airspy_r820t_write_direct(0x17, 0xF4); - airspy_r820t_write_direct(0x19, 0x0C); - r820t_state_standby = 1; -2000d284: 701a strb r2, [r3, #0] - - return 0; -} -2000d286: bd08 pop {r3, pc} -2000d288: 2000ef2c .word 0x2000ef2c - -2000d28c : - rc = r820t_set_freq(priv, priv->freq); - return rc; -} - -void r820t_startup(r820t_priv_t *priv) -{ -2000d28c: b508 push {r3, lr} - r820t_state_standby = 0; -2000d28e: 4b04 ldr r3, [pc, #16] ; (2000d2a0 ) -2000d290: 2200 movs r2, #0 - /* Initialize registers */ - airspy_r820t_write_init(priv->regs); -2000d292: 300c adds r0, #12 - return rc; -} - -void r820t_startup(r820t_priv_t *priv) -{ - r820t_state_standby = 0; -2000d294: 701a strb r2, [r3, #0] - /* Initialize registers */ - airspy_r820t_write_init(priv->regs); -2000d296: f7ff fd83 bl 2000cda0 - /* Enter in Standby mode */ - r820t_standby(); -2000d29a: f7ff ffc3 bl 2000d224 -} -2000d29e: bd08 pop {r3, pc} -2000d2a0: 2000ef2c .word 0x2000ef2c - -2000d2a4 : - device_id = w25q80bv_get_device_id(); - } -} - -uint8_t w25q80bv_get_status(void) -{ -2000d2a4: b570 push {r4, r5, r6, lr} - uint8_t value; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d2a6: 4d0b ldr r5, [pc, #44] ; (2000d2d4 ) -2000d2a8: 2480 movs r4, #128 ; 0x80 -2000d2aa: 0124 lsls r4, r4, #4 -2000d2ac: 1c28 adds r0, r5, #0 -2000d2ae: 1c21 adds r1, r4, #0 -2000d2b0: f7ff fbfd bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_READ_STATUS1); -2000d2b4: 2105 movs r1, #5 -2000d2b6: 2000 movs r0, #0 -2000d2b8: f001 f922 bl 2000e500 - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d2bc: 21ff movs r1, #255 ; 0xff -2000d2be: 2000 movs r0, #0 -2000d2c0: f001 f91e bl 2000e500 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d2c4: 1c21 adds r1, r4, #0 -{ - uint8_t value; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - ssp_transfer(SSP0_NUM, W25Q80BV_READ_STATUS1); - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d2c6: 1c06 adds r6, r0, #0 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d2c8: 1c28 adds r0, r5, #0 -2000d2ca: f7ff fbeb bl 2000caa4 - - return value; -2000d2ce: b2f0 uxtb r0, r6 -} -2000d2d0: bd70 pop {r4, r5, r6, pc} -2000d2d2: 46c0 nop ; (mov r8, r8) -2000d2d4: 400f6014 .word 0x400f6014 - -2000d2d8 : - -/* Release power down / Device ID */ -uint8_t w25q80bv_get_device_id(void) -{ -2000d2d8: b570 push {r4, r5, r6, lr} - uint8_t value; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d2da: 4d11 ldr r5, [pc, #68] ; (2000d320 ) -2000d2dc: 2480 movs r4, #128 ; 0x80 -2000d2de: 0124 lsls r4, r4, #4 -2000d2e0: 1c28 adds r0, r5, #0 -2000d2e2: 1c21 adds r1, r4, #0 -2000d2e4: f7ff fbe3 bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_DEVICE_ID); -2000d2e8: 21ab movs r1, #171 ; 0xab -2000d2ea: 2000 movs r0, #0 -2000d2ec: f001 f908 bl 2000e500 - - /* Read 3 dummy bytes */ - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d2f0: 21ff movs r1, #255 ; 0xff -2000d2f2: 2000 movs r0, #0 -2000d2f4: f001 f904 bl 2000e500 - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d2f8: 21ff movs r1, #255 ; 0xff -2000d2fa: 2000 movs r0, #0 -2000d2fc: f001 f900 bl 2000e500 - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d300: 21ff movs r1, #255 ; 0xff -2000d302: 2000 movs r0, #0 -2000d304: f001 f8fc bl 2000e500 - /* Read Device ID shall return 0x13 for W25Q80BV */ - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d308: 21ff movs r1, #255 ; 0xff -2000d30a: 2000 movs r0, #0 -2000d30c: f001 f8f8 bl 2000e500 - - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d310: 1c21 adds r1, r4, #0 - /* Read 3 dummy bytes */ - value = ssp_transfer(SSP0_NUM, 0xFF); - value = ssp_transfer(SSP0_NUM, 0xFF); - value = ssp_transfer(SSP0_NUM, 0xFF); - /* Read Device ID shall return 0x13 for W25Q80BV */ - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d312: 1c06 adds r6, r0, #0 - - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d314: 1c28 adds r0, r5, #0 -2000d316: f7ff fbc5 bl 2000caa4 - - return value; -2000d31a: b2f0 uxtb r0, r6 -} -2000d31c: bd70 pop {r4, r5, r6, pc} -2000d31e: 46c0 nop ; (mov r8, r8) -2000d320: 400f6014 .word 0x400f6014 - -2000d324 : -* Set up pins for GPIO and SPI control, configure SSP0 peripheral for SPI. -* SSP0_SSEL is controlled by GPIO in order to handle various transfer lengths. -*/ - -void w25q80bv_setup(void) -{ -2000d324: b5f0 push {r4, r5, r6, r7, lr} - const uint8_t serial_clock_rate = 2; - const uint8_t clock_prescale_rate = 2; - - /* Reset SPIFI peripheral before to Erase/Write SPIFI memory through SPI */ - RESET_CTRL1 = RESET_CTRL1_SPIFI_RST; -2000d326: 2280 movs r2, #128 ; 0x80 -2000d328: 4b31 ldr r3, [pc, #196] ; (2000d3f0 ) -2000d32a: 0390 lsls r0, r2, #14 -* Set up pins for GPIO and SPI control, configure SSP0 peripheral for SPI. -* SSP0_SSEL is controlled by GPIO in order to handle various transfer lengths. -*/ - -void w25q80bv_setup(void) -{ -2000d32c: b087 sub sp, #28 - const uint8_t serial_clock_rate = 2; - const uint8_t clock_prescale_rate = 2; - - /* Reset SPIFI peripheral before to Erase/Write SPIFI memory through SPI */ - RESET_CTRL1 = RESET_CTRL1_SPIFI_RST; -2000d32e: 6018 str r0, [r3, #0] - - /* Init SPIFI GPIO to Normal GPIO */ - scu_pinmux(P3_3, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); // P3_3 SPIFI_SCK => SSP0_SCK -2000d330: 21f2 movs r1, #242 ; 0xf2 -2000d332: 4830 ldr r0, [pc, #192] ; (2000d3f4 ) -2000d334: f000 ff48 bl 2000e1c8 - scu_pinmux(P3_4, (SCU_GPIO_FAST | SCU_CONF_FUNCTION0)); // P3_4 SPIFI SPIFI_SIO3 IO3 => GPIO1[14] -2000d338: 482f ldr r0, [pc, #188] ; (2000d3f8 ) -2000d33a: 21f0 movs r1, #240 ; 0xf0 -2000d33c: f000 ff44 bl 2000e1c8 - scu_pinmux(P3_5, (SCU_GPIO_FAST | SCU_CONF_FUNCTION0)); // P3_5 SPIFI SPIFI_SIO2 IO2 => GPIO1[15] -2000d340: 482e ldr r0, [pc, #184] ; (2000d3fc ) -2000d342: 21f0 movs r1, #240 ; 0xf0 -2000d344: f000 ff40 bl 2000e1c8 - scu_pinmux(P3_6, (SCU_GPIO_FAST | SCU_CONF_FUNCTION0)); // P3_6 SPIFI SPIFI_MISO IO1 => GPIO0[6] -2000d348: 482d ldr r0, [pc, #180] ; (2000d400 ) -2000d34a: 21f0 movs r1, #240 ; 0xf0 -2000d34c: f000 ff3c bl 2000e1c8 - scu_pinmux(P3_7, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); // P3_7 SPIFI SPIFI_MOSI IO0 => GPIO5[10] -2000d350: 482c ldr r0, [pc, #176] ; (2000d404 ) -2000d352: 21f4 movs r1, #244 ; 0xf4 -2000d354: f000 ff38 bl 2000e1c8 - scu_pinmux(P3_8, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); // P3_8 SPIFI SPIFI_CS => GPIO5[11] -2000d358: 482b ldr r0, [pc, #172] ; (2000d408 ) -2000d35a: 21f4 movs r1, #244 ; 0xf4 -2000d35c: f000 ff34 bl 2000e1c8 - - /* configure SSP pins */ - scu_pinmux(SCU_SSP0_MISO, (SCU_SSP_IO | SCU_CONF_FUNCTION5)); -2000d360: 4827 ldr r0, [pc, #156] ; (2000d400 ) -2000d362: 21f5 movs r1, #245 ; 0xf5 -2000d364: f000 ff30 bl 2000e1c8 - scu_pinmux(SCU_SSP0_MOSI, (SCU_SSP_IO | SCU_CONF_FUNCTION5)); -2000d368: 4826 ldr r0, [pc, #152] ; (2000d404 ) -2000d36a: 21f5 movs r1, #245 ; 0xf5 -2000d36c: f000 ff2c bl 2000e1c8 - scu_pinmux(SCU_SSP0_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); -2000d370: 4820 ldr r0, [pc, #128] ; (2000d3f4 ) -2000d372: 21f2 movs r1, #242 ; 0xf2 -2000d374: f000 ff28 bl 2000e1c8 - - /* configure GPIO pins */ - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); -2000d378: 481f ldr r0, [pc, #124] ; (2000d3f8 ) -2000d37a: 21f0 movs r1, #240 ; 0xf0 -2000d37c: f000 ff24 bl 2000e1c8 - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); -2000d380: 4d22 ldr r5, [pc, #136] ; (2000d40c ) - scu_pinmux(SCU_SSP0_MOSI, (SCU_SSP_IO | SCU_CONF_FUNCTION5)); - scu_pinmux(SCU_SSP0_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); - - /* configure GPIO pins */ - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); -2000d382: 481e ldr r0, [pc, #120] ; (2000d3fc ) -2000d384: 21f0 movs r1, #240 ; 0xf0 - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); -2000d386: 27c0 movs r7, #192 ; 0xc0 - scu_pinmux(SCU_SSP0_MOSI, (SCU_SSP_IO | SCU_CONF_FUNCTION5)); - scu_pinmux(SCU_SSP0_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); - - /* configure GPIO pins */ - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); -2000d388: f000 ff1e bl 2000e1c8 - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d38c: 4c20 ldr r4, [pc, #128] ; (2000d410 ) - scu_pinmux(SCU_SSP0_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); - - /* configure GPIO pins */ - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); -2000d38e: 481e ldr r0, [pc, #120] ; (2000d408 ) -2000d390: 21f4 movs r1, #244 ; 0xf4 - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); -2000d392: 023f lsls r7, r7, #8 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d394: 2680 movs r6, #128 ; 0x80 - scu_pinmux(SCU_SSP0_SCK, (SCU_SSP_IO | SCU_CONF_FUNCTION2)); - - /* configure GPIO pins */ - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); -2000d396: f000 ff17 bl 2000e1c8 - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d39a: 0136 lsls r6, r6, #4 - scu_pinmux(SCU_FLASH_HOLD, SCU_GPIO_FAST); - scu_pinmux(SCU_FLASH_WP, SCU_GPIO_FAST); - scu_pinmux(SCU_SSP0_SSEL, (SCU_GPIO_FAST | SCU_CONF_FUNCTION4)); - - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); -2000d39c: 1c28 adds r0, r5, #0 -2000d39e: 1c39 adds r1, r7, #0 -2000d3a0: f7ff fb80 bl 2000caa4 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d3a4: 1c31 adds r1, r6, #0 -2000d3a6: 1c20 adds r0, r4, #0 -2000d3a8: f7ff fb7c bl 2000caa4 - - /* Set GPIO pins as outputs. */ - GPIO1_DIR |= (PIN_FLASH_HOLD | PIN_FLASH_WP); -2000d3ac: 6829 ldr r1, [r5, #0] - GPIO5_DIR |= PIN_SSP0_SSEL; - - /* initialize SSP0 */ - ssp_init(SSP0_NUM, -2000d3ae: 2002 movs r0, #2 - /* drive SSEL, HOLD, and WP pins high */ - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - - /* Set GPIO pins as outputs. */ - GPIO1_DIR |= (PIN_FLASH_HOLD | PIN_FLASH_WP); -2000d3b0: 430f orrs r7, r1 -2000d3b2: 602f str r7, [r5, #0] - GPIO5_DIR |= PIN_SSP0_SSEL; -2000d3b4: 6822 ldr r2, [r4, #0] - - /* initialize SSP0 */ - ssp_init(SSP0_NUM, -2000d3b6: 2500 movs r5, #0 - gpio_set(PORT_FLASH, (PIN_FLASH_HOLD | PIN_FLASH_WP)); - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - - /* Set GPIO pins as outputs. */ - GPIO1_DIR |= (PIN_FLASH_HOLD | PIN_FLASH_WP); - GPIO5_DIR |= PIN_SSP0_SSEL; -2000d3b8: 4316 orrs r6, r2 -2000d3ba: 6026 str r6, [r4, #0] - - /* initialize SSP0 */ - ssp_init(SSP0_NUM, -2000d3bc: 1c2b adds r3, r5, #0 -2000d3be: 9000 str r0, [sp, #0] -2000d3c0: 9001 str r0, [sp, #4] -2000d3c2: 9502 str r5, [sp, #8] -2000d3c4: 9503 str r5, [sp, #12] -2000d3c6: 9504 str r5, [sp, #16] -2000d3c8: 1c28 adds r0, r5, #0 -2000d3ca: 2107 movs r1, #7 -2000d3cc: 1c2a adds r2, r5, #0 -2000d3ce: f001 f837 bl 2000e440 - clock_prescale_rate, - SSP_MODE_NORMAL, - SSP_MASTER, - SSP_SLAVE_OUT_ENABLE); - - device_id = 0; -2000d3d2: 4b10 ldr r3, [pc, #64] ; (2000d414 ) -2000d3d4: 701d strb r5, [r3, #0] -2000d3d6: 1c1f adds r7, r3, #0 - - while(1) - { - if(device_id == W25Q80BV_DEVICE_ID_RES) -2000d3d8: 783c ldrb r4, [r7, #0] -2000d3da: 2c13 cmp r4, #19 -2000d3dc: d005 beq.n 2000d3ea - break; - - if(device_id == S25FL032P_DEVICE_ID_RES) -2000d3de: 2c15 cmp r4, #21 -2000d3e0: d003 beq.n 2000d3ea - break; - - device_id = w25q80bv_get_device_id(); -2000d3e2: f7ff ff79 bl 2000d2d8 -2000d3e6: 7038 strb r0, [r7, #0] - } -2000d3e8: e7f6 b.n 2000d3d8 -} -2000d3ea: b007 add sp, #28 -2000d3ec: bdf0 pop {r4, r5, r6, r7, pc} -2000d3ee: 46c0 nop ; (mov r8, r8) -2000d3f0: 40053104 .word 0x40053104 -2000d3f4: 4008618c .word 0x4008618c -2000d3f8: 40086190 .word 0x40086190 -2000d3fc: 40086194 .word 0x40086194 -2000d400: 40086198 .word 0x40086198 -2000d404: 4008619c .word 0x4008619c -2000d408: 400861a0 .word 0x400861a0 -2000d40c: 400f6004 .word 0x400f6004 -2000d410: 400f6014 .word 0x400f6014 -2000d414: 2000f764 .word 0x2000f764 - -2000d418 : -{ - int i; - uint8_t value; - uint32_t addr; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d418: 2180 movs r1, #128 ; 0x80 - - return value; -} - -void w25q80bv_get_unique_id(w25q80bv_unique_id_t* unique_id) -{ -2000d41a: b538 push {r3, r4, r5, lr} - int i; - uint8_t value; - uint32_t addr; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d41c: 0109 lsls r1, r1, #4 - - return value; -} - -void w25q80bv_get_unique_id(w25q80bv_unique_id_t* unique_id) -{ -2000d41e: 1c05 adds r5, r0, #0 - int i; - uint8_t value; - uint32_t addr; - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d420: 4820 ldr r0, [pc, #128] ; (2000d4a4 ) -2000d422: f7ff fb44 bl 2000caae - - if(device_id == W25Q80BV_DEVICE_ID_RES) -2000d426: 4b20 ldr r3, [pc, #128] ; (2000d4a8 ) -2000d428: 7818 ldrb r0, [r3, #0] -2000d42a: 2813 cmp r0, #19 -2000d42c: d119 bne.n 2000d462 - { - ssp_transfer(SSP0_NUM, W25Q80BV_UNIQUE_ID); -2000d42e: 2000 movs r0, #0 -2000d430: 214b movs r1, #75 ; 0x4b -2000d432: f001 f865 bl 2000e500 -2000d436: 2404 movs r4, #4 - - /* Read 4 dummy bytes */ - for(i=0; i<4; i++) - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d438: 2000 movs r0, #0 -2000d43a: 21ff movs r1, #255 ; 0xff -2000d43c: 3c01 subs r4, #1 -2000d43e: f001 f85f bl 2000e500 - if(device_id == W25Q80BV_DEVICE_ID_RES) - { - ssp_transfer(SSP0_NUM, W25Q80BV_UNIQUE_ID); - - /* Read 4 dummy bytes */ - for(i=0; i<4; i++) -2000d442: 2c00 cmp r4, #0 -2000d444: d1f8 bne.n 2000d438 - value = ssp_transfer(SSP0_NUM, 0xFF); - - /* Read Unique ID 64bits (8*8) */ - for(i=0; i<8; i++) - { - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d446: 2000 movs r0, #0 -2000d448: 21ff movs r1, #255 ; 0xff -2000d44a: f001 f859 bl 2000e500 -2000d44e: 5528 strb r0, [r5, r4] - /* Read 4 dummy bytes */ - for(i=0; i<4; i++) - value = ssp_transfer(SSP0_NUM, 0xFF); - - /* Read Unique ID 64bits (8*8) */ - for(i=0; i<8; i++) -2000d450: 3401 adds r4, #1 -2000d452: 2c08 cmp r4, #8 -2000d454: d1f7 bne.n 2000d446 - { - value = ssp_transfer(SSP0_NUM, 0xFF); - unique_id->id_8b[i] = value; - } - } - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d456: 2280 movs r2, #128 ; 0x80 -2000d458: 4812 ldr r0, [pc, #72] ; (2000d4a4 ) -2000d45a: 0111 lsls r1, r2, #4 -2000d45c: f7ff fb22 bl 2000caa4 -} -2000d460: bd38 pop {r3, r4, r5, pc} - for(i=0; i<8; i++) - { - value = ssp_transfer(SSP0_NUM, 0xFF); - unique_id->id_8b[i] = value; - } - }else if(device_id == S25FL032P_DEVICE_ID_RES) -2000d462: 2815 cmp r0, #21 -2000d464: d1f7 bne.n 2000d456 - { - addr = S25FL032P_OTP_SN1_ADDR; - ssp_transfer(SSP0_NUM, S25FL032P_READ_OTP); -2000d466: 214b movs r1, #75 ; 0x4b -2000d468: 2000 movs r0, #0 -2000d46a: f001 f849 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); -2000d46e: 2000 movs r0, #0 -2000d470: 1c01 adds r1, r0, #0 -2000d472: f001 f845 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); -2000d476: 2101 movs r1, #1 -2000d478: 2000 movs r0, #0 -2000d47a: f001 f841 bl 2000e500 - ssp_transfer(SSP0_NUM, addr & 0xFF); -2000d47e: 2102 movs r1, #2 -2000d480: 2000 movs r0, #0 -2000d482: f001 f83d bl 2000e500 - ssp_transfer(SSP0_NUM, 0xFF); /* Dummy byte */ -2000d486: 2000 movs r0, #0 -2000d488: 21ff movs r1, #255 ; 0xff -2000d48a: f001 f839 bl 2000e500 - - /* Read Unique ID 64bits (8*8) */ - for(i=0; i<8; i++) -2000d48e: 2400 movs r4, #0 - { - value = ssp_transfer(SSP0_NUM, 0xFF); -2000d490: 2000 movs r0, #0 -2000d492: 21ff movs r1, #255 ; 0xff -2000d494: f001 f834 bl 2000e500 -2000d498: 5528 strb r0, [r5, r4] - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); - ssp_transfer(SSP0_NUM, addr & 0xFF); - ssp_transfer(SSP0_NUM, 0xFF); /* Dummy byte */ - - /* Read Unique ID 64bits (8*8) */ - for(i=0; i<8; i++) -2000d49a: 3401 adds r4, #1 -2000d49c: 2c08 cmp r4, #8 -2000d49e: d1f7 bne.n 2000d490 -2000d4a0: e7d9 b.n 2000d456 -2000d4a2: 46c0 nop ; (mov r8, r8) -2000d4a4: 400f6014 .word 0x400f6014 -2000d4a8: 2000f764 .word 0x2000f764 - -2000d4ac : - } - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -void w25q80bv_wait_while_busy(void) -{ -2000d4ac: b508 push {r3, lr} - while (w25q80bv_get_status() & W25Q80BV_STATUS_BUSY); -2000d4ae: f7ff fef9 bl 2000d2a4 -2000d4b2: 07c3 lsls r3, r0, #31 -2000d4b4: d4fb bmi.n 2000d4ae -} -2000d4b6: bd08 pop {r3, pc} - -2000d4b8 : - -void w25q80bv_write_enable(void) -{ -2000d4b8: b538 push {r3, r4, r5, lr} - w25q80bv_wait_while_busy(); - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d4ba: 4d09 ldr r5, [pc, #36] ; (2000d4e0 ) -2000d4bc: 2480 movs r4, #128 ; 0x80 -2000d4be: 0124 lsls r4, r4, #4 - while (w25q80bv_get_status() & W25Q80BV_STATUS_BUSY); -} - -void w25q80bv_write_enable(void) -{ - w25q80bv_wait_while_busy(); -2000d4c0: f7ff fff4 bl 2000d4ac - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d4c4: 1c28 adds r0, r5, #0 -2000d4c6: 1c21 adds r1, r4, #0 -2000d4c8: f7ff faf1 bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_WRITE_ENABLE); -2000d4cc: 2106 movs r1, #6 -2000d4ce: 2000 movs r0, #0 -2000d4d0: f001 f816 bl 2000e500 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d4d4: 1c28 adds r0, r5, #0 -2000d4d6: 1c21 adds r1, r4, #0 -2000d4d8: f7ff fae4 bl 2000caa4 -} -2000d4dc: bd38 pop {r3, r4, r5, pc} -2000d4de: 46c0 nop ; (mov r8, r8) -2000d4e0: 400f6014 .word 0x400f6014 - -2000d4e4 : - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* 64KB sector erase */ -void w25q80bv_sector_erase(const uint32_t addr) -{ -2000d4e4: b538 push {r3, r4, r5, lr} - device_id = 0; -2000d4e6: 4d17 ldr r5, [pc, #92] ; (2000d544 ) -2000d4e8: 2300 movs r3, #0 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* 64KB sector erase */ -void w25q80bv_sector_erase(const uint32_t addr) -{ -2000d4ea: 1c04 adds r4, r0, #0 - device_id = 0; -2000d4ec: 702b strb r3, [r5, #0] - while(1) - { - if(device_id == W25Q80BV_DEVICE_ID_RES) -2000d4ee: 7828 ldrb r0, [r5, #0] -2000d4f0: 2813 cmp r0, #19 -2000d4f2: d005 beq.n 2000d500 - break; - - if(device_id == S25FL032P_DEVICE_ID_RES) -2000d4f4: 2815 cmp r0, #21 -2000d4f6: d003 beq.n 2000d500 - break; - - device_id = w25q80bv_get_device_id(); -2000d4f8: f7ff feee bl 2000d2d8 -2000d4fc: 7028 strb r0, [r5, #0] - } -2000d4fe: e7f6 b.n 2000d4ee - - w25q80bv_write_enable(); -2000d500: f7ff ffda bl 2000d4b8 - w25q80bv_wait_while_busy(); -2000d504: f7ff ffd2 bl 2000d4ac - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d508: 2180 movs r1, #128 ; 0x80 -2000d50a: 480f ldr r0, [pc, #60] ; (2000d548 ) -2000d50c: 0109 lsls r1, r1, #4 -2000d50e: f7ff face bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_SECTOR_ERASE); -2000d512: 21d8 movs r1, #216 ; 0xd8 -2000d514: 2000 movs r0, #0 -2000d516: f000 fff3 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); -2000d51a: 0222 lsls r2, r4, #8 -2000d51c: 0e11 lsrs r1, r2, #24 - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); -2000d51e: 0425 lsls r5, r4, #16 - - w25q80bv_write_enable(); - w25q80bv_wait_while_busy(); - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - ssp_transfer(SSP0_NUM, W25Q80BV_SECTOR_ERASE); - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); -2000d520: 2000 movs r0, #0 -2000d522: f000 ffed bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); -2000d526: 0e29 lsrs r1, r5, #24 -2000d528: 2000 movs r0, #0 -2000d52a: f000 ffe9 bl 2000e500 - ssp_transfer(SSP0_NUM, addr & 0xFF); -2000d52e: b2e1 uxtb r1, r4 -2000d530: 2000 movs r0, #0 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d532: 2480 movs r4, #128 ; 0x80 - w25q80bv_wait_while_busy(); - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - ssp_transfer(SSP0_NUM, W25Q80BV_SECTOR_ERASE); - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); - ssp_transfer(SSP0_NUM, addr & 0xFF); -2000d534: f000 ffe4 bl 2000e500 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d538: 4803 ldr r0, [pc, #12] ; (2000d548 ) -2000d53a: 0121 lsls r1, r4, #4 -2000d53c: f7ff fab2 bl 2000caa4 -} -2000d540: bd38 pop {r3, r4, r5, pc} -2000d542: 46c0 nop ; (mov r8, r8) -2000d544: 2000f764 .word 0x2000f764 -2000d548: 400f6014 .word 0x400f6014 - -2000d54c : - -/* write up to 256 byte page or partial page */ -void w25q80bv_page_program(const uint32_t addr, const uint16_t len, const uint8_t* data) -{ -2000d54c: b5f8 push {r3, r4, r5, r6, r7, lr} - int i; - - /* do nothing if asked to write beyond a page boundary */ - if (((addr & 0xFF) + len) > W25Q80BV_PAGE_LEN) -2000d54e: b2c7 uxtb r7, r0 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write up to 256 byte page or partial page */ -void w25q80bv_page_program(const uint32_t addr, const uint16_t len, const uint8_t* data) -{ -2000d550: 1c16 adds r6, r2, #0 - int i; - - /* do nothing if asked to write beyond a page boundary */ - if (((addr & 0xFF) + len) > W25Q80BV_PAGE_LEN) -2000d552: 2380 movs r3, #128 ; 0x80 -2000d554: 19ca adds r2, r1, r7 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write up to 256 byte page or partial page */ -void w25q80bv_page_program(const uint32_t addr, const uint16_t len, const uint8_t* data) -{ -2000d556: 1c04 adds r4, r0, #0 -2000d558: 1c0d adds r5, r1, #0 - int i; - - /* do nothing if asked to write beyond a page boundary */ - if (((addr & 0xFF) + len) > W25Q80BV_PAGE_LEN) -2000d55a: 0058 lsls r0, r3, #1 -2000d55c: 4282 cmp r2, r0 -2000d55e: d82e bhi.n 2000d5be - return; - - /* do nothing if we would overflow the flash */ - if (addr > (W25Q80BV_NUM_BYTES - len)) -2000d560: 2180 movs r1, #128 ; 0x80 -2000d562: 034a lsls r2, r1, #13 -2000d564: 1b53 subs r3, r2, r5 -2000d566: 429c cmp r4, r3 -2000d568: d829 bhi.n 2000d5be - return; - - w25q80bv_write_enable(); -2000d56a: f7ff ffa5 bl 2000d4b8 - w25q80bv_wait_while_busy(); -2000d56e: f7ff ff9d bl 2000d4ac - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d572: 2180 movs r1, #128 ; 0x80 -2000d574: 4812 ldr r0, [pc, #72] ; (2000d5c0 ) -2000d576: 0109 lsls r1, r1, #4 -2000d578: f7ff fa99 bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_PAGE_PROGRAM); -2000d57c: 2102 movs r1, #2 -2000d57e: 2000 movs r0, #0 -2000d580: f000 ffbe bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); -2000d584: 0220 lsls r0, r4, #8 -2000d586: 0e01 lsrs r1, r0, #24 - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); -2000d588: 0424 lsls r4, r4, #16 - w25q80bv_write_enable(); - w25q80bv_wait_while_busy(); - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - ssp_transfer(SSP0_NUM, W25Q80BV_PAGE_PROGRAM); - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); -2000d58a: 2000 movs r0, #0 -2000d58c: f000 ffb8 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); -2000d590: 0e21 lsrs r1, r4, #24 -2000d592: 2000 movs r0, #0 -2000d594: f000 ffb4 bl 2000e500 - ssp_transfer(SSP0_NUM, addr & 0xFF); -2000d598: b2b9 uxth r1, r7 -2000d59a: 2000 movs r0, #0 -2000d59c: f000 ffb0 bl 2000e500 - for (i = 0; i < len; i++) -2000d5a0: 1c34 adds r4, r6, #0 - ssp_transfer(SSP0_NUM, addr & 0xFF); - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write up to 256 byte page or partial page */ -void w25q80bv_page_program(const uint32_t addr, const uint16_t len, const uint8_t* data) -2000d5a2: 1ba7 subs r7, r4, r6 - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); - ssp_transfer(SSP0_NUM, W25Q80BV_PAGE_PROGRAM); - ssp_transfer(SSP0_NUM, (addr & 0xFF0000) >> 16); - ssp_transfer(SSP0_NUM, (addr & 0xFF00) >> 8); - ssp_transfer(SSP0_NUM, addr & 0xFF); - for (i = 0; i < len; i++) -2000d5a4: 42af cmp r7, r5 -2000d5a6: da05 bge.n 2000d5b4 - ssp_transfer(SSP0_NUM, data[i]); -2000d5a8: 7821 ldrb r1, [r4, #0] -2000d5aa: 2000 movs r0, #0 -2000d5ac: f000 ffa8 bl 2000e500 -2000d5b0: 3401 adds r4, #1 -2000d5b2: e7f6 b.n 2000d5a2 - - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d5b4: 2580 movs r5, #128 ; 0x80 -2000d5b6: 4802 ldr r0, [pc, #8] ; (2000d5c0 ) -2000d5b8: 0129 lsls r1, r5, #4 -2000d5ba: f7ff fa73 bl 2000caa4 -} -2000d5be: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000d5c0: 400f6014 .word 0x400f6014 - -2000d5c4 : - -/* write an arbitrary number of bytes */ -void w25q80bv_program(uint32_t addr, uint32_t len, const uint8_t* data) -{ -2000d5c4: b5f8 push {r3, r4, r5, r6, r7, lr} -2000d5c6: 1c04 adds r4, r0, #0 -2000d5c8: 1c0d adds r5, r1, #0 -2000d5ca: 1c17 adds r7, r2, #0 - break; - - if(device_id == S25FL032P_DEVICE_ID_RES) - break; - - device_id = w25q80bv_get_device_id(); -2000d5cc: f7ff fe84 bl 2000d2d8 - uint8_t device_id; - - device_id = 0; - while(1) - { - if(device_id == W25Q80BV_DEVICE_ID_RES) -2000d5d0: 2813 cmp r0, #19 -2000d5d2: d001 beq.n 2000d5d8 - break; - - if(device_id == S25FL032P_DEVICE_ID_RES) -2000d5d4: 2815 cmp r0, #21 -2000d5d6: d1f9 bne.n 2000d5cc - - device_id = w25q80bv_get_device_id(); - } - - /* do nothing if we would overflow the flash */ - if ((len > W25Q80BV_NUM_BYTES) || (addr > W25Q80BV_NUM_BYTES) -2000d5d8: 2380 movs r3, #128 ; 0x80 -2000d5da: 0358 lsls r0, r3, #13 -2000d5dc: 4285 cmp r5, r0 -2000d5de: d82f bhi.n 2000d640 -2000d5e0: 4284 cmp r4, r0 -2000d5e2: d82d bhi.n 2000d640 - || ((addr + len) > W25Q80BV_NUM_BYTES)) -2000d5e4: 192a adds r2, r5, r4 -2000d5e6: 4282 cmp r2, r0 -2000d5e8: d82a bhi.n 2000d640 - return; - - /* handle start not at page boundary */ - first_block_len = W25Q80BV_PAGE_LEN - (addr % W25Q80BV_PAGE_LEN); -2000d5ea: 2680 movs r6, #128 ; 0x80 -2000d5ec: 0073 lsls r3, r6, #1 -2000d5ee: b2e1 uxtb r1, r4 -2000d5f0: 1a58 subs r0, r3, r1 -2000d5f2: b286 uxth r6, r0 - if (len < first_block_len) -2000d5f4: 42b5 cmp r5, r6 -2000d5f6: d202 bcs.n 2000d5fe - first_block_len = len; -2000d5f8: b2ae uxth r6, r5 - if (first_block_len) { -2000d5fa: 2e00 cmp r6, #0 -2000d5fc: d007 beq.n 2000d60e - w25q80bv_page_program(addr, first_block_len, data); -2000d5fe: 1c20 adds r0, r4, #0 -2000d600: 1c3a adds r2, r7, #0 -2000d602: 1c31 adds r1, r6, #0 -2000d604: f7ff ffa2 bl 2000d54c - addr += first_block_len; -2000d608: 19a4 adds r4, r4, r6 - data += first_block_len; -2000d60a: 19bf adds r7, r7, r6 - len -= first_block_len; -2000d60c: 1bad subs r5, r5, r6 - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write an arbitrary number of bytes */ -void w25q80bv_program(uint32_t addr, uint32_t len, const uint8_t* data) -{ -2000d60e: 1c26 adds r6, r4, #0 - - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write an arbitrary number of bytes */ -void w25q80bv_program(uint32_t addr, uint32_t len, const uint8_t* data) -2000d610: 1b3a subs r2, r7, r4 -2000d612: 1961 adds r1, r4, r5 -2000d614: 1992 adds r2, r2, r6 - data += first_block_len; - len -= first_block_len; - } - - /* one page at a time on boundaries */ - while (len >= W25Q80BV_PAGE_LEN) { -2000d616: 1b8b subs r3, r1, r6 -2000d618: 2bff cmp r3, #255 ; 0xff -2000d61a: d907 bls.n 2000d62c - w25q80bv_page_program(addr, W25Q80BV_PAGE_LEN, data); -2000d61c: 2180 movs r1, #128 ; 0x80 -2000d61e: 1c30 adds r0, r6, #0 -2000d620: 0049 lsls r1, r1, #1 - addr += W25Q80BV_PAGE_LEN; -2000d622: 3601 adds r6, #1 - len -= first_block_len; - } - - /* one page at a time on boundaries */ - while (len >= W25Q80BV_PAGE_LEN) { - w25q80bv_page_program(addr, W25Q80BV_PAGE_LEN, data); -2000d624: f7ff ff92 bl 2000d54c - addr += W25Q80BV_PAGE_LEN; -2000d628: 36ff adds r6, #255 ; 0xff -2000d62a: e7f1 b.n 2000d610 - - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -} - -/* write an arbitrary number of bytes */ -void w25q80bv_program(uint32_t addr, uint32_t len, const uint8_t* data) -2000d62c: 0a28 lsrs r0, r5, #8 -2000d62e: 0206 lsls r6, r0, #8 -2000d630: b2ed uxtb r5, r5 -2000d632: 1930 adds r0, r6, r4 -2000d634: 19ba adds r2, r7, r6 - data += W25Q80BV_PAGE_LEN; - len -= W25Q80BV_PAGE_LEN; - } - - /* handle end not at page boundary */ - if (len) { -2000d636: 2d00 cmp r5, #0 -2000d638: d002 beq.n 2000d640 - w25q80bv_page_program(addr, len, data); -2000d63a: b2a9 uxth r1, r5 -2000d63c: f7ff ff86 bl 2000d54c - } -} -2000d640: bdf8 pop {r3, r4, r5, r6, r7, pc} - ... - -2000d644 : - -/* read data */ -void w25q80bv_read(uint32_t addr, uint32_t len, uint8_t* const data) -{ -2000d644: b5f8 push {r3, r4, r5, r6, r7, lr} - uint32_t i; - - /* do nothing if we would overflow the flash */ - if ((len > W25Q80BV_NUM_BYTES) || (addr > W25Q80BV_NUM_BYTES) -2000d646: 2380 movs r3, #128 ; 0x80 - } -} - -/* read data */ -void w25q80bv_read(uint32_t addr, uint32_t len, uint8_t* const data) -{ -2000d648: 1c05 adds r5, r0, #0 -2000d64a: 1c0e adds r6, r1, #0 -2000d64c: 1c14 adds r4, r2, #0 - uint32_t i; - - /* do nothing if we would overflow the flash */ - if ((len > W25Q80BV_NUM_BYTES) || (addr > W25Q80BV_NUM_BYTES) -2000d64e: 0358 lsls r0, r3, #13 -2000d650: 4281 cmp r1, r0 -2000d652: d831 bhi.n 2000d6b8 -2000d654: 4285 cmp r5, r0 -2000d656: d82f bhi.n 2000d6b8 - || ((addr + len) > W25Q80BV_NUM_BYTES)) -2000d658: 194a adds r2, r1, r5 -2000d65a: 4282 cmp r2, r0 -2000d65c: d82c bhi.n 2000d6b8 - return; - - w25q80bv_wait_while_busy(); -2000d65e: f7ff ff25 bl 2000d4ac - - gpio_clear(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d662: 2180 movs r1, #128 ; 0x80 -2000d664: 4815 ldr r0, [pc, #84] ; (2000d6bc ) -2000d666: 0109 lsls r1, r1, #4 -2000d668: f7ff fa21 bl 2000caae - ssp_transfer(SSP0_NUM, W25Q80BV_FAST_READ); -2000d66c: 210b movs r1, #11 -2000d66e: 2000 movs r0, #0 -2000d670: f000 ff46 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr >> 16) & 0xFF); -2000d674: 0c29 lsrs r1, r5, #16 -2000d676: 2000 movs r0, #0 -2000d678: f000 ff42 bl 2000e500 - ssp_transfer(SSP0_NUM, (addr >> 8) & 0xFF); -2000d67c: 27ff movs r7, #255 ; 0xff -2000d67e: 0a29 lsrs r1, r5, #8 -2000d680: 4039 ands r1, r7 -2000d682: 2000 movs r0, #0 -2000d684: f000 ff3c bl 2000e500 - ssp_transfer(SSP0_NUM, (addr >> 0) & 0xFF); -2000d688: 1c29 adds r1, r5, #0 -2000d68a: 4039 ands r1, r7 -2000d68c: 2000 movs r0, #0 -2000d68e: f000 ff37 bl 2000e500 - ssp_transfer(SSP0_NUM, 0xFF); // Dummy byte -2000d692: 2000 movs r0, #0 -2000d694: 1c39 adds r1, r7, #0 -2000d696: f000 ff33 bl 2000e500 - w25q80bv_page_program(addr, len, data); - } -} - -/* read data */ -void w25q80bv_read(uint32_t addr, uint32_t len, uint8_t* const data) -2000d69a: 19a5 adds r5, r4, r6 - ssp_transfer(SSP0_NUM, W25Q80BV_FAST_READ); - ssp_transfer(SSP0_NUM, (addr >> 16) & 0xFF); - ssp_transfer(SSP0_NUM, (addr >> 8) & 0xFF); - ssp_transfer(SSP0_NUM, (addr >> 0) & 0xFF); - ssp_transfer(SSP0_NUM, 0xFF); // Dummy byte - for (i = 0; i < len; i++) -2000d69c: 42ac cmp r4, r5 -2000d69e: d006 beq.n 2000d6ae - data[i] = ssp_transfer(SSP0_NUM, 0xFF); -2000d6a0: 2000 movs r0, #0 -2000d6a2: 21ff movs r1, #255 ; 0xff -2000d6a4: f000 ff2c bl 2000e500 -2000d6a8: 7020 strb r0, [r4, #0] -2000d6aa: 3401 adds r4, #1 -2000d6ac: e7f6 b.n 2000d69c - gpio_set(PORT_SSP0_SSEL, PIN_SSP0_SSEL); -2000d6ae: 2480 movs r4, #128 ; 0x80 -2000d6b0: 4802 ldr r0, [pc, #8] ; (2000d6bc ) -2000d6b2: 0121 lsls r1, r4, #4 -2000d6b4: f7ff f9f6 bl 2000caa4 -} -2000d6b8: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000d6ba: 46c0 nop ; (mov r8, r8) -2000d6bc: 400f6014 .word 0x400f6014 - -2000d6c0 : -'0' on flashless parts. */ - -bool iap_is_implemented(void) -{ - bool res; - if( *((uint32_t*)ROM_IAP_ADDR) != ROM_IAP_UNDEF_ADDR ) -2000d6c0: 4b03 ldr r3, [pc, #12] ; (2000d6d0 ) -2000d6c2: 4904 ldr r1, [pc, #16] ; (2000d6d4 ) -2000d6c4: 6818 ldr r0, [r3, #0] -2000d6c6: 1840 adds r0, r0, r1 - res = true; - }else - { - res = false; - } - return res; -2000d6c8: 1e43 subs r3, r0, #1 -2000d6ca: 4198 sbcs r0, r3 -} -2000d6cc: 4770 bx lr -2000d6ce: 46c0 nop ; (mov r8, r8) -2000d6d0: 10400100 .word 0x10400100 -2000d6d4: edcba988 .word 0xedcba988 - -2000d6d8 : - -isp_iap_ret_code_t iap_cmd_call(iap_cmd_res_t* iap_cmd_res) -{ -2000d6d8: b538 push {r3, r4, r5, lr} -2000d6da: 1c04 adds r4, r0, #0 - uint32_t* p_u32_data; - - if( iap_is_implemented() ) -2000d6dc: f7ff fff0 bl 2000d6c0 -2000d6e0: 1e05 subs r5, r0, #0 -2000d6e2: d006 beq.n 2000d6f2 - { - pROM_API->IAP( (uint32_t*)&iap_cmd_res->cmd_param, (uint32_t*)&iap_cmd_res->status_res); -2000d6e4: 4d10 ldr r5, [pc, #64] ; (2000d728 ) -2000d6e6: 1c21 adds r1, r4, #0 -2000d6e8: 3118 adds r1, #24 -2000d6ea: 682a ldr r2, [r5, #0] -2000d6ec: 1c20 adds r0, r4, #0 -2000d6ee: 4790 blx r2 -2000d6f0: e018 b.n 2000d724 - { - /* - Alternative way to retrieve Part Id on MCU with no IAP - Read Serial No => Read Unique ID in SPIFI (only compatible with W25Q80BV) - */ - w25q80bv_setup(); -2000d6f2: f7ff fe17 bl 2000d324 - - switch(iap_cmd_res->cmd_param.command_code) -2000d6f6: 7823 ldrb r3, [r4, #0] -2000d6f8: 2b36 cmp r3, #54 ; 0x36 -2000d6fa: d008 beq.n 2000d70e -2000d6fc: 2b3a cmp r3, #58 ; 0x3a -2000d6fe: d10e bne.n 2000d71e - - case IAP_CMD_READ_SERIAL_NO: - /* Only 64bits used */ - iap_cmd_res->status_res.iap_result[0] = 0; - iap_cmd_res->status_res.iap_result[1] = 0; - w25q80bv_get_unique_id( (w25q80bv_unique_id_t*)&iap_cmd_res->status_res.iap_result[2] ); -2000d700: 1c20 adds r0, r4, #0 - iap_cmd_res->status_res.status_ret = CMD_SUCCESS; - break; - - case IAP_CMD_READ_SERIAL_NO: - /* Only 64bits used */ - iap_cmd_res->status_res.iap_result[0] = 0; -2000d702: 61e5 str r5, [r4, #28] - iap_cmd_res->status_res.iap_result[1] = 0; -2000d704: 6225 str r5, [r4, #32] - w25q80bv_get_unique_id( (w25q80bv_unique_id_t*)&iap_cmd_res->status_res.iap_result[2] ); -2000d706: 3024 adds r0, #36 ; 0x24 -2000d708: f7ff fe86 bl 2000d418 -2000d70c: e005 b.n 2000d71a - - switch(iap_cmd_res->cmd_param.command_code) - { - case IAP_CMD_READ_PART_ID_NO: - p_u32_data = (uint32_t*)CHIP_PART_ID; - iap_cmd_res->status_res.iap_result[0] = p_u32_data[0]; -2000d70e: 4a07 ldr r2, [pc, #28] ; (2000d72c ) - p_u32_data = (uint32_t*)ROM_OTP_PART_ID_ADDR; - iap_cmd_res->status_res.iap_result[1] = p_u32_data[0]; -2000d710: 4807 ldr r0, [pc, #28] ; (2000d730 ) - - switch(iap_cmd_res->cmd_param.command_code) - { - case IAP_CMD_READ_PART_ID_NO: - p_u32_data = (uint32_t*)CHIP_PART_ID; - iap_cmd_res->status_res.iap_result[0] = p_u32_data[0]; -2000d712: 6813 ldr r3, [r2, #0] -2000d714: 61e3 str r3, [r4, #28] - p_u32_data = (uint32_t*)ROM_OTP_PART_ID_ADDR; - iap_cmd_res->status_res.iap_result[1] = p_u32_data[0]; -2000d716: 6801 ldr r1, [r0, #0] -2000d718: 6221 str r1, [r4, #32] - case IAP_CMD_READ_SERIAL_NO: - /* Only 64bits used */ - iap_cmd_res->status_res.iap_result[0] = 0; - iap_cmd_res->status_res.iap_result[1] = 0; - w25q80bv_get_unique_id( (w25q80bv_unique_id_t*)&iap_cmd_res->status_res.iap_result[2] ); - iap_cmd_res->status_res.status_ret = CMD_SUCCESS; -2000d71a: 8325 strh r5, [r4, #24] - break; -2000d71c: e002 b.n 2000d724 - - default: - iap_cmd_res->status_res.status_ret = ERROR_IAP_NOT_IMPLEMENTED; -2000d71e: 2080 movs r0, #128 ; 0x80 -2000d720: 0041 lsls r1, r0, #1 -2000d722: 8321 strh r1, [r4, #24] - break; - } - } - return iap_cmd_res->status_res.status_ret; -2000d724: 8b20 ldrh r0, [r4, #24] -} -2000d726: bd38 pop {r3, r4, r5, pc} -2000d728: 10400100 .word 0x10400100 -2000d72c: 40043200 .word 0x40043200 -2000d730: 40045000 .word 0x40045000 - -2000d734 : - CREG_CREG0 &= ~CREG_CREG0_USB0PHY; -} - -static void usb_clear_pending_interrupts(const uint32_t mask) -{ - USB0_ENDPTNAK = mask; -2000d734: 4b07 ldr r3, [pc, #28] ; (2000d754 ) - USB0_ENDPTNAKEN = mask; -2000d736: 4908 ldr r1, [pc, #32] ; (2000d758 ) - USB0_USBSTS_D = mask; -2000d738: 4a08 ldr r2, [pc, #32] ; (2000d75c ) - CREG_CREG0 &= ~CREG_CREG0_USB0PHY; -} - -static void usb_clear_pending_interrupts(const uint32_t mask) -{ - USB0_ENDPTNAK = mask; -2000d73a: 6018 str r0, [r3, #0] - USB0_ENDPTNAKEN = mask; - USB0_USBSTS_D = mask; - USB0_ENDPTSETUPSTAT = USB0_ENDPTSETUPSTAT & mask; -2000d73c: 4b08 ldr r3, [pc, #32] ; (2000d760 ) -} - -static void usb_clear_pending_interrupts(const uint32_t mask) -{ - USB0_ENDPTNAK = mask; - USB0_ENDPTNAKEN = mask; -2000d73e: 6008 str r0, [r1, #0] - USB0_USBSTS_D = mask; -2000d740: 6010 str r0, [r2, #0] - USB0_ENDPTSETUPSTAT = USB0_ENDPTSETUPSTAT & mask; -2000d742: 6819 ldr r1, [r3, #0] -2000d744: 4001 ands r1, r0 -2000d746: 6019 str r1, [r3, #0] - USB0_ENDPTCOMPLETE = USB0_ENDPTCOMPLETE & mask; -2000d748: 4b06 ldr r3, [pc, #24] ; (2000d764 ) -2000d74a: 681a ldr r2, [r3, #0] -2000d74c: 4010 ands r0, r2 -2000d74e: 6018 str r0, [r3, #0] -} -2000d750: 4770 bx lr -2000d752: 46c0 nop ; (mov r8, r8) -2000d754: 40006178 .word 0x40006178 -2000d758: 4000617c .word 0x4000617c -2000d75c: 40006144 .word 0x40006144 -2000d760: 400061ac .word 0x400061ac -2000d764: 400061bc .word 0x400061bc - -2000d768 : - -static void usb_wait_for_endpoint_priming_to_finish(const uint32_t mask) -{ - // Wait until controller has parsed new transfer descriptors and prepared - // receive buffers. - while( USB0_ENDPTPRIME & mask ); -2000d768: 4b04 ldr r3, [pc, #16] ; (2000d77c ) -2000d76a: 6819 ldr r1, [r3, #0] -2000d76c: 4201 tst r1, r0 -2000d76e: d1fb bne.n 2000d768 - -static void usb_flush_endpoints(const uint32_t mask) -{ - // Clear any primed buffers. If a packet is in progress, that transfer - // will continue until completion. - USB0_ENDPTFLUSH = mask; -2000d770: 4b03 ldr r3, [pc, #12] ; (2000d780 ) -2000d772: 6018 str r0, [r3, #0] - -static void usb_wait_for_endpoint_flushing_to_finish(const uint32_t mask) -{ - // Wait until controller has flushed all endpoints / cleared any primed - // buffers. - while( USB0_ENDPTFLUSH & mask ); -2000d774: 681a ldr r2, [r3, #0] -2000d776: 4202 tst r2, r0 -2000d778: d1fc bne.n 2000d774 -static void usb_flush_primed_endpoints(const uint32_t mask) -{ - usb_wait_for_endpoint_priming_to_finish(mask); - usb_flush_endpoints(mask); - usb_wait_for_endpoint_flushing_to_finish(mask); -} -2000d77a: 4770 bx lr -2000d77c: 400061b0 .word 0x400061b0 -2000d780: 400061b4 .word 0x400061b4 - -2000d784 : -} - -static void usb_disable_all_endpoints(void) -{ - // Endpoint 0 is always enabled. TODO: So why set ENDPTCTRL0? - USB0_ENDPTCTRL0 &= ~(USB0_ENDPTCTRL0_RXE | USB0_ENDPTCTRL0_TXE); -2000d784: 4a0c ldr r2, [pc, #48] ; (2000d7b8 ) -2000d786: 4b0d ldr r3, [pc, #52] ; (2000d7bc ) -2000d788: 6811 ldr r1, [r2, #0] - USB0_ENDPTCTRL1 &= ~(USB0_ENDPTCTRL1_RXE | USB0_ENDPTCTRL1_TXE); -2000d78a: 480d ldr r0, [pc, #52] ; (2000d7c0 ) -} - -static void usb_disable_all_endpoints(void) -{ - // Endpoint 0 is always enabled. TODO: So why set ENDPTCTRL0? - USB0_ENDPTCTRL0 &= ~(USB0_ENDPTCTRL0_RXE | USB0_ENDPTCTRL0_TXE); -2000d78c: 4019 ands r1, r3 -2000d78e: 6011 str r1, [r2, #0] - USB0_ENDPTCTRL1 &= ~(USB0_ENDPTCTRL1_RXE | USB0_ENDPTCTRL1_TXE); -2000d790: 6802 ldr r2, [r0, #0] -2000d792: 401a ands r2, r3 -2000d794: 6002 str r2, [r0, #0] - USB0_ENDPTCTRL2 &= ~(USB0_ENDPTCTRL2_RXE | USB0_ENDPTCTRL2_TXE); -2000d796: 480b ldr r0, [pc, #44] ; (2000d7c4 ) - USB0_ENDPTCTRL3 &= ~(USB0_ENDPTCTRL3_RXE | USB0_ENDPTCTRL3_TXE); -2000d798: 4a0b ldr r2, [pc, #44] ; (2000d7c8 ) -static void usb_disable_all_endpoints(void) -{ - // Endpoint 0 is always enabled. TODO: So why set ENDPTCTRL0? - USB0_ENDPTCTRL0 &= ~(USB0_ENDPTCTRL0_RXE | USB0_ENDPTCTRL0_TXE); - USB0_ENDPTCTRL1 &= ~(USB0_ENDPTCTRL1_RXE | USB0_ENDPTCTRL1_TXE); - USB0_ENDPTCTRL2 &= ~(USB0_ENDPTCTRL2_RXE | USB0_ENDPTCTRL2_TXE); -2000d79a: 6801 ldr r1, [r0, #0] -2000d79c: 4019 ands r1, r3 -2000d79e: 6001 str r1, [r0, #0] - USB0_ENDPTCTRL3 &= ~(USB0_ENDPTCTRL3_RXE | USB0_ENDPTCTRL3_TXE); -2000d7a0: 6810 ldr r0, [r2, #0] -2000d7a2: 4018 ands r0, r3 -2000d7a4: 6010 str r0, [r2, #0] - USB0_ENDPTCTRL4 &= ~(USB0_ENDPTCTRL4_RXE | USB0_ENDPTCTRL4_TXE); -2000d7a6: 4a09 ldr r2, [pc, #36] ; (2000d7cc ) - USB0_ENDPTCTRL5 &= ~(USB0_ENDPTCTRL5_RXE | USB0_ENDPTCTRL5_TXE); -2000d7a8: 4809 ldr r0, [pc, #36] ; (2000d7d0 ) - // Endpoint 0 is always enabled. TODO: So why set ENDPTCTRL0? - USB0_ENDPTCTRL0 &= ~(USB0_ENDPTCTRL0_RXE | USB0_ENDPTCTRL0_TXE); - USB0_ENDPTCTRL1 &= ~(USB0_ENDPTCTRL1_RXE | USB0_ENDPTCTRL1_TXE); - USB0_ENDPTCTRL2 &= ~(USB0_ENDPTCTRL2_RXE | USB0_ENDPTCTRL2_TXE); - USB0_ENDPTCTRL3 &= ~(USB0_ENDPTCTRL3_RXE | USB0_ENDPTCTRL3_TXE); - USB0_ENDPTCTRL4 &= ~(USB0_ENDPTCTRL4_RXE | USB0_ENDPTCTRL4_TXE); -2000d7aa: 6811 ldr r1, [r2, #0] -2000d7ac: 4019 ands r1, r3 -2000d7ae: 6011 str r1, [r2, #0] - USB0_ENDPTCTRL5 &= ~(USB0_ENDPTCTRL5_RXE | USB0_ENDPTCTRL5_TXE); -2000d7b0: 6802 ldr r2, [r0, #0] -2000d7b2: 4013 ands r3, r2 -2000d7b4: 6003 str r3, [r0, #0] -} -2000d7b6: 4770 bx lr -2000d7b8: 400061c0 .word 0x400061c0 -2000d7bc: ff7fff7f .word 0xff7fff7f -2000d7c0: 400061c4 .word 0x400061c4 -2000d7c4: 400061c8 .word 0x400061c8 -2000d7c8: 400061cc .word 0x400061cc -2000d7cc: 400061d0 .word 0x400061d0 -2000d7d0: 400061d4 .word 0x400061d4 - -2000d7d4 : - -#define USB_QH_INDEX(endpoint_address) (((endpoint_address & 0xF) * 2) + ((endpoint_address >> 7) & 1)) - -usb_queue_head_t* usb_queue_head(const uint_fast8_t endpoint_address) -{ - return &usb_qh[USB_QH_INDEX(endpoint_address)]; -2000d7d4: 220f movs r2, #15 -2000d7d6: 0603 lsls r3, r0, #24 -2000d7d8: 4010 ands r0, r2 -2000d7da: 0fd9 lsrs r1, r3, #31 -2000d7dc: 0040 lsls r0, r0, #1 -2000d7de: 180b adds r3, r1, r0 -2000d7e0: 4a01 ldr r2, [pc, #4] ; (2000d7e8 ) -2000d7e2: 0199 lsls r1, r3, #6 -2000d7e4: 1888 adds r0, r1, r2 -} -2000d7e6: 4770 bx lr -2000d7e8: 2000f800 .word 0x2000f800 - -2000d7ec : - return (endpoint_address & 0xF); -} - -void usb_peripheral_reset(void) -{ - RESET_CTRL0 = RESET_CTRL0_USB0_RST; -2000d7ec: 4a05 ldr r2, [pc, #20] ; (2000d804 ) -2000d7ee: 2380 movs r3, #128 ; 0x80 -2000d7f0: 0298 lsls r0, r3, #10 - RESET_CTRL0 = 0; -2000d7f2: 2100 movs r1, #0 - return (endpoint_address & 0xF); -} - -void usb_peripheral_reset(void) -{ - RESET_CTRL0 = RESET_CTRL0_USB0_RST; -2000d7f4: 6010 str r0, [r2, #0] - RESET_CTRL0 = 0; -2000d7f6: 6011 str r1, [r2, #0] - - while( (RESET_ACTIVE_STATUS0 & RESET_CTRL0_USB0_RST) == 0 ); -2000d7f8: 4a03 ldr r2, [pc, #12] ; (2000d808 ) -2000d7fa: 6813 ldr r3, [r2, #0] -2000d7fc: 4203 tst r3, r0 -2000d7fe: d0fb beq.n 2000d7f8 -} -2000d800: 4770 bx lr -2000d802: 46c0 nop ; (mov r8, r8) -2000d804: 40053100 .word 0x40053100 -2000d808: 40053150 .word 0x40053150 - -2000d80c : -} - -void usb_endpoint_prime( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const first_td) -{ -2000d80c: b538 push {r3, r4, r5, lr} - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); -2000d80e: 6904 ldr r4, [r0, #16] -} - -void usb_endpoint_prime( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const first_td) -{ -2000d810: 1c0d adds r5, r1, #0 - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); -2000d812: 1c20 adds r0, r4, #0 -2000d814: f7ff ffde bl 2000d7d4 - - qh->next_dtd_pointer = first_td; - qh->total_bytes &= ~( USB_TD_DTD_TOKEN_STATUS_ACTIVE | USB_TD_DTD_TOKEN_STATUS_HALTED ); -2000d818: 68c3 ldr r3, [r0, #12] -2000d81a: 22c0 movs r2, #192 ; 0xc0 -2000d81c: 4393 bics r3, r2 - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const first_td) -{ - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); - - qh->next_dtd_pointer = first_td; -2000d81e: 6085 str r5, [r0, #8] - qh->total_bytes &= ~( USB_TD_DTD_TOKEN_STATUS_ACTIVE | USB_TD_DTD_TOKEN_STATUS_HALTED ); -2000d820: 60c3 str r3, [r0, #12] - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d822: 200f movs r0, #15 -2000d824: 4020 ands r0, r4 -2000d826: 2101 movs r1, #1 - qh->total_bytes &= ~( USB_TD_DTD_TOKEN_STATUS_ACTIVE | USB_TD_DTD_TOKEN_STATUS_HALTED ); - - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) - { - USB0_ENDPTPRIME = USB0_ENDPTPRIME_PETB(1 << endpoint_number); -2000d828: 4081 lsls r1, r0 -2000d82a: 4d03 ldr r5, [pc, #12] ; (2000d838 ) -2000d82c: 1c0b adds r3, r1, #0 - - qh->next_dtd_pointer = first_td; - qh->total_bytes &= ~( USB_TD_DTD_TOKEN_STATUS_ACTIVE | USB_TD_DTD_TOKEN_STATUS_HALTED ); - - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) -2000d82e: 0620 lsls r0, r4, #24 -2000d830: d500 bpl.n 2000d834 - { - USB0_ENDPTPRIME = USB0_ENDPTPRIME_PETB(1 << endpoint_number); -2000d832: 040b lsls r3, r1, #16 - } else { - USB0_ENDPTPRIME = USB0_ENDPTPRIME_PERB(1 << endpoint_number); -2000d834: 602b str r3, [r5, #0] - } -} -2000d836: bd38 pop {r3, r4, r5, pc} -2000d838: 400061b0 .word 0x400061b0 - -2000d83c : - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d83c: 6902 ldr r2, [r0, #16] - usb_endpoint_prime(endpoint, new_td); - } -} - -void usb_endpoint_flush(const usb_endpoint_t* const endpoint) -{ -2000d83e: b538 push {r3, r4, r5, lr} -2000d840: 1c04 adds r4, r0, #0 - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d842: 250f movs r5, #15 -2000d844: 4015 ands r5, r2 -} - -void usb_endpoint_flush(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - usb_queue_flush_endpoint(endpoint); -2000d846: f000 fa6d bl 2000dd24 - return ((direction == USB_TRANSFER_DIRECTION_IN) ? 0x80 : 0x00) + number; -} - -static bool usb_endpoint_is_in(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0x80) ? true : false; -2000d84a: 6923 ldr r3, [r4, #16] -2000d84c: 2001 movs r0, #1 -void usb_endpoint_flush(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - usb_queue_flush_endpoint(endpoint); - if( usb_endpoint_is_in(endpoint->address) ) { - usb_flush_primed_endpoints(USB0_ENDPTFLUSH_FETB(1 << endpoint_number)); -2000d84e: 40a8 lsls r0, r5 - -void usb_endpoint_flush(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - usb_queue_flush_endpoint(endpoint); - if( usb_endpoint_is_in(endpoint->address) ) { -2000d850: 061a lsls r2, r3, #24 -2000d852: d500 bpl.n 2000d856 - usb_flush_primed_endpoints(USB0_ENDPTFLUSH_FETB(1 << endpoint_number)); -2000d854: 0400 lsls r0, r0, #16 - } else { - usb_flush_primed_endpoints(USB0_ENDPTFLUSH_FERB(1 << endpoint_number)); -2000d856: f7ff ff87 bl 2000d768 - } -} -2000d85a: bd38 pop {r3, r4, r5, pc} - -2000d85c : - } -} - -void usb_endpoint_disable(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); -2000d85c: 6903 ldr r3, [r0, #16] - usb_clear_pending_interrupts(USB0_ENDPTCOMPLETE_ERCE(1 << endpoint_number)); - } -} - -void usb_endpoint_disable(const usb_endpoint_t* const endpoint) -{ -2000d85e: b510 push {r4, lr} - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d860: 210f movs r1, #15 - usb_clear_pending_interrupts(USB0_ENDPTCOMPLETE_ERCE(1 << endpoint_number)); - } -} - -void usb_endpoint_disable(const usb_endpoint_t* const endpoint) -{ -2000d862: 1c04 adds r4, r0, #0 -2000d864: 4810 ldr r0, [pc, #64] ; (2000d8a8 ) - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d866: 4019 ands r1, r3 - return ((direction == USB_TRANSFER_DIRECTION_IN) ? 0x80 : 0x00) + number; -} - -static bool usb_endpoint_is_in(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0x80) ? true : false; -2000d868: 2280 movs r2, #128 ; 0x80 -2000d86a: 1809 adds r1, r1, r0 -} - -void usb_endpoint_disable(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) -2000d86c: 4213 tst r3, r2 -2000d86e: d005 beq.n 2000d87c - { - USB0_ENDPTCTRL(endpoint_number) &= ~(USB0_ENDPTCTRL_TXE); -2000d870: 0089 lsls r1, r1, #2 -2000d872: 6808 ldr r0, [r1, #0] -2000d874: 4b0d ldr r3, [pc, #52] ; (2000d8ac ) -2000d876: 4003 ands r3, r0 -2000d878: 600b str r3, [r1, #0] -2000d87a: e003 b.n 2000d884 - } else { - USB0_ENDPTCTRL(endpoint_number) &= ~(USB0_ENDPTCTRL_RXE); -2000d87c: 008b lsls r3, r1, #2 -2000d87e: 6818 ldr r0, [r3, #0] -2000d880: 4390 bics r0, r2 -2000d882: 6018 str r0, [r3, #0] - } - usb_queue_flush_endpoint(endpoint); -2000d884: 1c20 adds r0, r4, #0 -2000d886: f000 fa4d bl 2000dd24 - } -} - -static void usb_endpoint_clear_pending_interrupts(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); -2000d88a: 6921 ldr r1, [r4, #16] - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d88c: 220f movs r2, #15 -2000d88e: 400a ands r2, r1 -2000d890: 2001 movs r0, #1 - -static void usb_endpoint_clear_pending_interrupts(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) { - usb_clear_pending_interrupts(USB0_ENDPTCOMPLETE_ETCE(1 << endpoint_number)); -2000d892: 4090 lsls r0, r2 -} - -static void usb_endpoint_clear_pending_interrupts(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) { -2000d894: 0609 lsls r1, r1, #24 -2000d896: d500 bpl.n 2000d89a - usb_clear_pending_interrupts(USB0_ENDPTCOMPLETE_ETCE(1 << endpoint_number)); -2000d898: 0400 lsls r0, r0, #16 - } else { - usb_clear_pending_interrupts(USB0_ENDPTCOMPLETE_ERCE(1 << endpoint_number)); -2000d89a: f7ff ff4b bl 2000d734 - } else { - USB0_ENDPTCTRL(endpoint_number) &= ~(USB0_ENDPTCTRL_RXE); - } - usb_queue_flush_endpoint(endpoint); - usb_endpoint_clear_pending_interrupts(endpoint); - usb_endpoint_flush(endpoint); -2000d89e: 1c20 adds r0, r4, #0 -2000d8a0: f7ff ffcc bl 2000d83c -} -2000d8a4: bd10 pop {r4, pc} -2000d8a6: 46c0 nop ; (mov r8, r8) -2000d8a8: 10001870 .word 0x10001870 -2000d8ac: ff7fffff .word 0xff7fffff - -2000d8b0 : - return USB0_ENDPTFLUSH & USB0_ENDPTFLUSH_FERB(1 << endpoint_number); - } -} -*/ -bool usb_endpoint_is_ready(const usb_endpoint_t* const endpoint) -{ -2000d8b0: b510 push {r4, lr} - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); -2000d8b2: 6904 ldr r4, [r0, #16] - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d8b4: 230f movs r3, #15 -2000d8b6: 4023 ands r3, r4 -2000d8b8: 4907 ldr r1, [pc, #28] ; (2000d8d8 ) -2000d8ba: 2201 movs r2, #1 -} -*/ -bool usb_endpoint_is_ready(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) { -2000d8bc: 0620 lsls r0, r4, #24 -2000d8be: d503 bpl.n 2000d8c8 - return USB0_ENDPTSTAT & USB0_ENDPTSTAT_ETBR(1 << endpoint_number); -2000d8c0: 409a lsls r2, r3 -2000d8c2: 6808 ldr r0, [r1, #0] -2000d8c4: 0414 lsls r4, r2, #16 -2000d8c6: e002 b.n 2000d8ce - } else { - return USB0_ENDPTSTAT & USB0_ENDPTSTAT_ERBR(1 << endpoint_number); -2000d8c8: 409a lsls r2, r3 -2000d8ca: 6808 ldr r0, [r1, #0] -2000d8cc: 1c14 adds r4, r2, #0 -2000d8ce: 4020 ands r0, r4 -2000d8d0: 1e43 subs r3, r0, #1 -2000d8d2: 4198 sbcs r0, r3 - } -} -2000d8d4: bd10 pop {r4, pc} -2000d8d6: 46c0 nop ; (mov r8, r8) -2000d8d8: 400061b8 .word 0x400061b8 - -2000d8dc : -// for setting the TERMINATE bit of next_dtd_pointer if needed. -void usb_endpoint_schedule_append( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const tail_td, - usb_transfer_descriptor_t* const new_td) -{ -2000d8dc: b5f8 push {r3, r4, r5, r6, r7, lr} - } -} - -static bool usb_endpoint_is_priming(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); -2000d8de: 6903 ldr r3, [r0, #16] - usb_transfer_descriptor_t* const tail_td, - usb_transfer_descriptor_t* const new_td) -{ - bool done; - - tail_td->next_dtd_pointer = new_td; -2000d8e0: 600a str r2, [r1, #0] -// for setting the TERMINATE bit of next_dtd_pointer if needed. -void usb_endpoint_schedule_append( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const tail_td, - usb_transfer_descriptor_t* const new_td) -{ -2000d8e2: 1c16 adds r6, r2, #0 - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d8e4: 220f movs r2, #15 -// for setting the TERMINATE bit of next_dtd_pointer if needed. -void usb_endpoint_schedule_append( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const tail_td, - usb_transfer_descriptor_t* const new_td) -{ -2000d8e6: 1c05 adds r5, r0, #0 - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d8e8: 401a ands r2, r3 -2000d8ea: 4813 ldr r0, [pc, #76] ; (2000d938 ) -2000d8ec: 2101 movs r1, #1 -} - -static bool usb_endpoint_is_priming(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) { -2000d8ee: 061c lsls r4, r3, #24 -2000d8f0: d503 bpl.n 2000d8fa - return USB0_ENDPTPRIME & USB0_ENDPTPRIME_PETB(1 << endpoint_number); -2000d8f2: 4091 lsls r1, r2 -2000d8f4: 6804 ldr r4, [r0, #0] -2000d8f6: 040f lsls r7, r1, #16 -2000d8f8: e002 b.n 2000d900 - } else { - return USB0_ENDPTPRIME & USB0_ENDPTPRIME_PERB(1 << endpoint_number); -2000d8fa: 4091 lsls r1, r2 -2000d8fc: 6804 ldr r4, [r0, #0] -2000d8fe: 1c0f adds r7, r1, #0 -2000d900: 403c ands r4, r7 -2000d902: 1e62 subs r2, r4, #1 -2000d904: 4194 sbcs r4, r2 -{ - bool done; - - tail_td->next_dtd_pointer = new_td; - - if (usb_endpoint_is_priming(endpoint)) { -2000d906: 2c00 cmp r4, #0 -2000d908: d115 bne.n 2000d936 - return; - } - - do { - USB0_USBCMD_D |= USB0_USBCMD_D_ATDTW; -2000d90a: 4c0c ldr r4, [pc, #48] ; (2000d93c ) -2000d90c: 2080 movs r0, #128 ; 0x80 -2000d90e: 6822 ldr r2, [r4, #0] -2000d910: 01c7 lsls r7, r0, #7 -2000d912: 433a orrs r2, r7 -2000d914: 6022 str r2, [r4, #0] - done = usb_endpoint_is_ready(endpoint); -2000d916: 1c28 adds r0, r5, #0 -2000d918: f7ff ffca bl 2000d8b0 - } while (!(USB0_USBCMD_D & USB0_USBCMD_D_ATDTW)); -2000d91c: 6821 ldr r1, [r4, #0] -2000d91e: 4239 tst r1, r7 -2000d920: d0f3 beq.n 2000d90a - - USB0_USBCMD_D &= ~USB0_USBCMD_D_ATDTW; -2000d922: 6822 ldr r2, [r4, #0] -2000d924: 4b06 ldr r3, [pc, #24] ; (2000d940 ) -2000d926: 4013 ands r3, r2 -2000d928: 6023 str r3, [r4, #0] - if(!done) { -2000d92a: 2800 cmp r0, #0 -2000d92c: d103 bne.n 2000d936 - usb_endpoint_prime(endpoint, new_td); -2000d92e: 1c28 adds r0, r5, #0 -2000d930: 1c31 adds r1, r6, #0 -2000d932: f7ff ff6b bl 2000d80c - } -} -2000d936: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000d938: 400061b0 .word 0x400061b0 -2000d93c: 40006140 .word 0x40006140 -2000d940: ffffbfff .word 0xffffbfff - -2000d944 : -// Schedule an already filled-in transfer descriptor for execution on -// the given endpoint, waiting until the endpoint has finished. -void usb_endpoint_schedule_wait( - const usb_endpoint_t* const endpoint, - usb_transfer_descriptor_t* const td) -{ -2000d944: b538 push {r3, r4, r5, lr} -2000d946: 1c05 adds r5, r0, #0 -2000d948: 1c0c adds r4, r1, #0 - // Ensure that endpoint is ready to be primed. - // It may have been flushed due to an aborted transaction. - // TODO: This should be preceded by a flush? - while( usb_endpoint_is_ready(endpoint) ); -2000d94a: 1c28 adds r0, r5, #0 -2000d94c: f7ff ffb0 bl 2000d8b0 -2000d950: 2800 cmp r0, #0 -2000d952: d1fa bne.n 2000d94a - - td->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; -2000d954: 2301 movs r3, #1 - - usb_endpoint_prime(endpoint, td); -2000d956: 1c28 adds r0, r5, #0 - // Ensure that endpoint is ready to be primed. - // It may have been flushed due to an aborted transaction. - // TODO: This should be preceded by a flush? - while( usb_endpoint_is_ready(endpoint) ); - - td->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; -2000d958: 6023 str r3, [r4, #0] - - usb_endpoint_prime(endpoint, td); -2000d95a: 1c21 adds r1, r4, #0 -2000d95c: f7ff ff56 bl 2000d80c -} -2000d960: bd38 pop {r3, r4, r5, pc} - ... - -2000d964 : - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d964: 6902 ldr r2, [r0, #16] -2000d966: 230f movs r3, #15 -void usb_endpoint_stall(const usb_endpoint_t* const endpoint) -{ - // Endpoint is to be stalled as a pair -- both OUT and IN. - // See UM10503 section 23.10.5.2 "Stalling" - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000d968: 4804 ldr r0, [pc, #16] ; (2000d97c ) - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000d96a: 4013 ands r3, r2 -void usb_endpoint_stall(const usb_endpoint_t* const endpoint) -{ - // Endpoint is to be stalled as a pair -- both OUT and IN. - // See UM10503 section 23.10.5.2 "Stalling" - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000d96c: 1819 adds r1, r3, r0 -2000d96e: 008b lsls r3, r1, #2 -2000d970: 681a ldr r2, [r3, #0] -2000d972: 4803 ldr r0, [pc, #12] ; (2000d980 ) -2000d974: 4302 orrs r2, r0 -2000d976: 601a str r2, [r3, #0] - - // TODO: Also need to reset data toggle in both directions? -} -2000d978: 4770 bx lr -2000d97a: 46c0 nop ; (mov r8, r8) -2000d97c: 10001870 .word 0x10001870 -2000d980: 00010001 .word 0x00010001 - -2000d984 : - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -} - -usb_speed_t usb_speed(const usb_device_t* const device) -{ - if( device == usb_device_usb0 ) -2000d984: 4b08 ldr r3, [pc, #32] ; (2000d9a8 ) - // VBUS_Discharge: VBUS discharges through resistor - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -} - -usb_speed_t usb_speed(const usb_device_t* const device) -{ -2000d986: 1c02 adds r2, r0, #0 - if( device == usb_device_usb0 ) -2000d988: 6819 ldr r1, [r3, #0] - return USB_SPEED_FULL; - } - } else { - // TODO: This should not be possible with a more class-like - // implementation. - return USB_SPEED_FULL; -2000d98a: 2001 movs r0, #1 - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -} - -usb_speed_t usb_speed(const usb_device_t* const device) -{ - if( device == usb_device_usb0 ) -2000d98c: 428a cmp r2, r1 -2000d98e: d10a bne.n 2000d9a6 - { - switch( USB0_PORTSC1_D & USB0_PORTSC1_D_PSPD_MASK ) -2000d990: 4806 ldr r0, [pc, #24] ; (2000d9ac ) -2000d992: 23c0 movs r3, #192 ; 0xc0 -2000d994: 6802 ldr r2, [r0, #0] -2000d996: 0519 lsls r1, r3, #20 -2000d998: 20f8 movs r0, #248 ; 0xf8 -2000d99a: 4011 ands r1, r2 -2000d99c: 0602 lsls r2, r0, #24 -2000d99e: 1888 adds r0, r1, r2 -2000d9a0: 4243 negs r3, r0 -2000d9a2: 4158 adcs r0, r3 -2000d9a4: 3001 adds r0, #1 - } else { - // TODO: This should not be possible with a more class-like - // implementation. - return USB_SPEED_FULL; - } -} -2000d9a6: 4770 bx lr -2000d9a8: 2000f340 .word 0x2000f340 -2000d9ac: 40006184 .word 0x40006184 - -2000d9b0 : - -void usb_set_address_immediate( - const usb_device_t* const device, - const uint_fast8_t address) -{ - if( device == usb_device_usb0 ) -2000d9b0: 4b03 ldr r3, [pc, #12] ; (2000d9c0 ) -2000d9b2: 681a ldr r2, [r3, #0] -2000d9b4: 4290 cmp r0, r2 -2000d9b6: d102 bne.n 2000d9be - { - USB0_DEVICEADDR = USB0_DEVICEADDR_USBADR(address); -2000d9b8: 4802 ldr r0, [pc, #8] ; (2000d9c4 ) -2000d9ba: 0649 lsls r1, r1, #25 -2000d9bc: 6001 str r1, [r0, #0] - } -} -2000d9be: 4770 bx lr -2000d9c0: 2000f340 .word 0x2000f340 -2000d9c4: 40006154 .word 0x40006154 - -2000d9c8 : - -void usb_set_address_deferred( - const usb_device_t* const device, - const uint_fast8_t address) -{ - if( device == usb_device_usb0 ) -2000d9c8: 4b05 ldr r3, [pc, #20] ; (2000d9e0 ) -2000d9ca: 681a ldr r2, [r3, #0] -2000d9cc: 4290 cmp r0, r2 -2000d9ce: d105 bne.n 2000d9dc - { - USB0_DEVICEADDR = USB0_DEVICEADDR_USBADR(address) -2000d9d0: 0648 lsls r0, r1, #25 - | USB0_DEVICEADDR_USBADRA; -2000d9d2: 2180 movs r1, #128 ; 0x80 -2000d9d4: 044a lsls r2, r1, #17 - const usb_device_t* const device, - const uint_fast8_t address) -{ - if( device == usb_device_usb0 ) - { - USB0_DEVICEADDR = USB0_DEVICEADDR_USBADR(address) -2000d9d6: 4b03 ldr r3, [pc, #12] ; (2000d9e4 ) - | USB0_DEVICEADDR_USBADRA; -2000d9d8: 4302 orrs r2, r0 - const usb_device_t* const device, - const uint_fast8_t address) -{ - if( device == usb_device_usb0 ) - { - USB0_DEVICEADDR = USB0_DEVICEADDR_USBADR(address) -2000d9da: 601a str r2, [r3, #0] - | USB0_DEVICEADDR_USBADRA; - } -} -2000d9dc: 4770 bx lr -2000d9de: 46c0 nop ; (mov r8, r8) -2000d9e0: 2000f340 .word 0x2000f340 -2000d9e4: 40006154 .word 0x40006154 - -2000d9e8 : -} - -void usb_device_init( - const uint_fast8_t device_ordinal, - usb_device_t* const device) -{ -2000d9e8: b508 push {r3, lr} - if( device_ordinal == 0 ) -2000d9ea: 2800 cmp r0, #0 -2000d9ec: d12b bne.n 2000da46 - while( (RESET_ACTIVE_STATUS0 & RESET_CTRL0_USB0_RST) == 0 ); -} - -static void usb_phy_enable(void) -{ - CREG_CREG0 &= ~CREG_CREG0_USB0PHY; -2000d9ee: 4816 ldr r0, [pc, #88] ; (2000da48 ) - const uint_fast8_t device_ordinal, - usb_device_t* const device) -{ - if( device_ordinal == 0 ) - { - usb_device_usb0 = device; -2000d9f0: 4b16 ldr r3, [pc, #88] ; (2000da4c ) - while( (RESET_ACTIVE_STATUS0 & RESET_CTRL0_USB0_RST) == 0 ); -} - -static void usb_phy_enable(void) -{ - CREG_CREG0 &= ~CREG_CREG0_USB0PHY; -2000d9f2: 6802 ldr r2, [r0, #0] - const uint_fast8_t device_ordinal, - usb_device_t* const device) -{ - if( device_ordinal == 0 ) - { - usb_device_usb0 = device; -2000d9f4: 6019 str r1, [r3, #0] - while( (RESET_ACTIVE_STATUS0 & RESET_CTRL0_USB0_RST) == 0 ); -} - -static void usb_phy_enable(void) -{ - CREG_CREG0 &= ~CREG_CREG0_USB0PHY; -2000d9f6: 2120 movs r1, #32 -2000d9f8: 438a bics r2, r1 -2000d9fa: 6002 str r2, [r0, #0] - } -} - -static void usb_reset_all_endpoints(void) -{ - usb_disable_all_endpoints(); -2000d9fc: f7ff fec2 bl 2000d784 - USB0_ENDPTCOMPLETE = USB0_ENDPTCOMPLETE & mask; -} - -static void usb_clear_all_pending_interrupts(void) -{ - usb_clear_pending_interrupts(0xFFFFFFFF); -2000da00: 2301 movs r3, #1 -2000da02: 4258 negs r0, r3 -2000da04: f7ff fe96 bl 2000d734 - usb_wait_for_endpoint_flushing_to_finish(mask); -} - -static void usb_flush_all_primed_endpoints(void) -{ - usb_flush_primed_endpoints(0xFFFFFFFF); -2000da08: 2001 movs r0, #1 -2000da0a: 4240 negs r0, r0 -2000da0c: f7ff feac bl 2000d768 - USB0_USBCMD_D |= USB0_USBCMD_D_RS; -} - -static void usb_controller_stop(void) -{ - USB0_USBCMD_D &= ~USB0_USBCMD_D_RS; -2000da10: 4b0f ldr r3, [pc, #60] ; (2000da50 ) -2000da12: 2101 movs r1, #1 -2000da14: 681a ldr r2, [r3, #0] - - // Reset controller. Resets internal pipelines, timers, counters, state - // machines to initial values. Not recommended when device is in attached - // state -- effect on attached host is undefined. Detach first by flushing - // all primed endpoints and stopping controller. - USB0_USBCMD_D = USB0_USBCMD_D_RST; -2000da16: 2002 movs r0, #2 - USB0_USBCMD_D |= USB0_USBCMD_D_RS; -} - -static void usb_controller_stop(void) -{ - USB0_USBCMD_D &= ~USB0_USBCMD_D_RS; -2000da18: 438a bics r2, r1 -2000da1a: 601a str r2, [r3, #0] - - // Reset controller. Resets internal pipelines, timers, counters, state - // machines to initial values. Not recommended when device is in attached - // state -- effect on attached host is undefined. Detach first by flushing - // all primed endpoints and stopping controller. - USB0_USBCMD_D = USB0_USBCMD_D_RST; -2000da1c: 6018 str r0, [r3, #0] - USB0_USBCMD_D &= ~USB0_USBCMD_D_RS; -} - -static uint_fast8_t usb_controller_is_resetting(void) -{ - return (USB0_USBCMD_D & USB0_USBCMD_D_RST) != 0; -2000da1e: 6818 ldr r0, [r3, #0] -2000da20: 2102 movs r1, #2 -2000da22: 4a0b ldr r2, [pc, #44] ; (2000da50 ) - // machines to initial values. Not recommended when device is in attached - // state -- effect on attached host is undefined. Detach first by flushing - // all primed endpoints and stopping controller. - USB0_USBCMD_D = USB0_USBCMD_D_RST; - - while( usb_controller_is_resetting() ); -2000da24: 4208 tst r0, r1 -2000da26: d1fa bne.n 2000da1e -} - -static void usb_controller_set_device_mode(void) -{ - // Set USB0 peripheral mode - USB0_USBMODE_D = USB0_USBMODE_D_CM1_0(2); -2000da28: 4b0a ldr r3, [pc, #40] ; (2000da54 ) - - // Set device-related OTG flags - // OTG termination: controls pull-down on USB_DM - // VBUS_Discharge: VBUS discharges through resistor - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -2000da2a: 2009 movs r0, #9 -} - -static void usb_controller_set_device_mode(void) -{ - // Set USB0 peripheral mode - USB0_USBMODE_D = USB0_USBMODE_D_CM1_0(2); -2000da2c: 6019 str r1, [r3, #0] - - // Set device-related OTG flags - // OTG termination: controls pull-down on USB_DM - // VBUS_Discharge: VBUS discharges through resistor - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -2000da2e: 490a ldr r1, [pc, #40] ; (2000da58 ) - usb_phy_enable(); - usb_controller_reset(); - usb_controller_set_device_mode(); - - // Set interrupt threshold interval to 0 - USB0_USBCMD_D &= ~USB0_USBCMD_D_ITC_MASK; -2000da30: 4b0a ldr r3, [pc, #40] ; (2000da5c ) - USB0_USBMODE_D = USB0_USBMODE_D_CM1_0(2); - - // Set device-related OTG flags - // OTG termination: controls pull-down on USB_DM - // VBUS_Discharge: VBUS discharges through resistor - USB0_OTGSC = USB0_OTGSC_OT | USB0_OTGSC_VD; -2000da32: 6008 str r0, [r1, #0] - usb_phy_enable(); - usb_controller_reset(); - usb_controller_set_device_mode(); - - // Set interrupt threshold interval to 0 - USB0_USBCMD_D &= ~USB0_USBCMD_D_ITC_MASK; -2000da34: 6810 ldr r0, [r2, #0] - - // Configure endpoint list address - USB0_ENDPOINTLISTADDR = (uint32_t)usb_qh; -2000da36: 490a ldr r1, [pc, #40] ; (2000da60 ) - usb_phy_enable(); - usb_controller_reset(); - usb_controller_set_device_mode(); - - // Set interrupt threshold interval to 0 - USB0_USBCMD_D &= ~USB0_USBCMD_D_ITC_MASK; -2000da38: 4003 ands r3, r0 -2000da3a: 6013 str r3, [r2, #0] - - // Configure endpoint list address - USB0_ENDPOINTLISTADDR = (uint32_t)usb_qh; - - // Enable interrupts - USB0_USBINTR_D = -2000da3c: 4809 ldr r0, [pc, #36] ; (2000da64 ) - - // Set interrupt threshold interval to 0 - USB0_USBCMD_D &= ~USB0_USBCMD_D_ITC_MASK; - - // Configure endpoint list address - USB0_ENDPOINTLISTADDR = (uint32_t)usb_qh; -2000da3e: 4a0a ldr r2, [pc, #40] ; (2000da68 ) - - // Enable interrupts - USB0_USBINTR_D = -2000da40: 4b0a ldr r3, [pc, #40] ; (2000da6c ) - - // Set interrupt threshold interval to 0 - USB0_USBCMD_D &= ~USB0_USBCMD_D_ITC_MASK; - - // Configure endpoint list address - USB0_ENDPOINTLISTADDR = (uint32_t)usb_qh; -2000da42: 600a str r2, [r1, #0] - - // Enable interrupts - USB0_USBINTR_D = -2000da44: 6018 str r0, [r3, #0] - //| USB0_USBINTR_D_SRE - | USB0_USBINTR_D_SLE - //| USB0_USBINTR_D_NAKE - ; - } -} -2000da46: bd08 pop {r3, pc} -2000da48: 40043004 .word 0x40043004 -2000da4c: 2000f340 .word 0x2000f340 -2000da50: 40006140 .word 0x40006140 -2000da54: 400061a8 .word 0x400061a8 -2000da58: 400061a4 .word 0x400061a4 -2000da5c: ff00ffff .word 0xff00ffff -2000da60: 40006158 .word 0x40006158 -2000da64: 00000147 .word 0x00000147 -2000da68: 2000f800 .word 0x2000f800 -2000da6c: 40006148 .word 0x40006148 - -2000da70 : - -void usb_run(usb_device_t* const device) -{ -2000da70: b508 push {r3, lr} - //} -} - -static void usb_interrupt_enable(usb_device_t* const device) -{ - if( device == usb_device_usb0 ) -2000da72: 4b06 ldr r3, [pc, #24] ; (2000da8c ) -2000da74: 6819 ldr r1, [r3, #0] -2000da76: 4288 cmp r0, r1 -2000da78: d102 bne.n 2000da80 - { - nvic_enable_irq(NVIC_USB0_IRQ); -2000da7a: 2008 movs r0, #8 -2000da7c: f000 fe1e bl 2000e6bc - // TODO: Also need to reset data toggle in both directions? -} - -static void usb_controller_run(void) -{ - USB0_USBCMD_D |= USB0_USBCMD_D_RS; -2000da80: 4803 ldr r0, [pc, #12] ; (2000da90 ) -2000da82: 2301 movs r3, #1 -2000da84: 6802 ldr r2, [r0, #0] -2000da86: 431a orrs r2, r3 -2000da88: 6002 str r2, [r0, #0] - -void usb_run(usb_device_t* const device) -{ - usb_interrupt_enable(device); - usb_controller_run(); -} -2000da8a: bd08 pop {r3, pc} -2000da8c: 2000f340 .word 0x2000f340 -2000da90: 40006140 .word 0x40006140 - -2000da94 : - dst->length_l = src[6]; - dst->length_h = src[7]; -} - -void usb_endpoint_init(const usb_endpoint_t* const endpoint) -{ -2000da94: b5f8 push {r3, r4, r5, r6, r7, lr} -2000da96: 1c04 adds r4, r0, #0 - usb_endpoint_flush(endpoint); -2000da98: f7ff fed0 bl 2000d83c - - uint_fast16_t max_packet_size = endpoint->device->descriptor[7]; -2000da9c: 6963 ldr r3, [r4, #20] -2000da9e: 6818 ldr r0, [r3, #0] -2000daa0: 79c7 ldrb r7, [r0, #7] - usb_transfer_type_t transfer_type = USB_TRANSFER_TYPE_CONTROL; - const uint8_t* const endpoint_descriptor = usb_endpoint_descriptor(endpoint); -2000daa2: 1c20 adds r0, r4, #0 -2000daa4: f000 fa41 bl 2000df2a -2000daa8: 1e05 subs r5, r0, #0 - if( endpoint_descriptor ) -2000daaa: d006 beq.n 2000daba - { - max_packet_size = usb_endpoint_descriptor_max_packet_size(endpoint_descriptor); -2000daac: f000 fa52 bl 2000df54 -2000dab0: 1c07 adds r7, r0, #0 - transfer_type = usb_endpoint_descriptor_transfer_type(endpoint_descriptor); -2000dab2: 1c28 adds r0, r5, #0 -2000dab4: f000 fa54 bl 2000df60 -2000dab8: 1c05 adds r5, r0, #0 - } - - // TODO: There are more capabilities to adjust based on the endpoint - // descriptor. - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); -2000daba: 6926 ldr r6, [r4, #16] -2000dabc: 1c30 adds r0, r6, #0 -2000dabe: f7ff fe89 bl 2000d7d4 - qh->capabilities = USB_QH_CAPABILITIES_MULT(0) - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); -2000dac2: 426b negs r3, r5 -2000dac4: 416b adcs r3, r5 -2000dac6: 2280 movs r2, #128 ; 0x80 - // TODO: There are more capabilities to adjust based on the endpoint - // descriptor. - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); - qh->capabilities = USB_QH_CAPABILITIES_MULT(0) - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) -2000dac8: 0439 lsls r1, r7, #16 - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); -2000daca: 03df lsls r7, r3, #15 -2000dacc: 0593 lsls r3, r2, #22 -2000dace: 4319 orrs r1, r3 -2000dad0: 4339 orrs r1, r7 - } - - // TODO: There are more capabilities to adjust based on the endpoint - // descriptor. - usb_queue_head_t* const qh = usb_queue_head(endpoint->address); - qh->capabilities = USB_QH_CAPABILITIES_MULT(0) -2000dad2: 6001 str r1, [r0, #0] - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); - - qh->current_dtd_pointer = 0; - qh->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; -2000dad4: 2701 movs r7, #1 - qh->capabilities = USB_QH_CAPABILITIES_MULT(0) - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); - - qh->current_dtd_pointer = 0; -2000dad6: 2100 movs r1, #0 - qh->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; - qh->total_bytes - = USB_TD_DTD_TOKEN_TOTAL_BYTES(0) -2000dad8: 60c1 str r1, [r0, #12] - qh->capabilities = USB_QH_CAPABILITIES_MULT(0) - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); - - qh->current_dtd_pointer = 0; -2000dada: 6041 str r1, [r0, #4] - qh->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; - qh->total_bytes - = USB_TD_DTD_TOKEN_TOTAL_BYTES(0) - | USB_TD_DTD_TOKEN_MULTO(0); - - qh->buffer_pointer_page[0] = 0; -2000dadc: 6101 str r1, [r0, #16] - | USB_QH_CAPABILITIES_ZLT - | USB_QH_CAPABILITIES_MPL(max_packet_size) - | ((transfer_type == USB_TRANSFER_TYPE_CONTROL) ? USB_QH_CAPABILITIES_IOS : 0); - - qh->current_dtd_pointer = 0; - qh->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; -2000dade: 6087 str r7, [r0, #8] - qh->total_bytes - = USB_TD_DTD_TOKEN_TOTAL_BYTES(0) - | USB_TD_DTD_TOKEN_MULTO(0); - - qh->buffer_pointer_page[0] = 0; - qh->buffer_pointer_page[1] = 0; -2000dae0: 6141 str r1, [r0, #20] - qh->buffer_pointer_page[2] = 0; -2000dae2: 6181 str r1, [r0, #24] - qh->buffer_pointer_page[3] = 0; -2000dae4: 61c1 str r1, [r0, #28] - qh->buffer_pointer_page[4] = 0; -2000dae6: 6201 str r1, [r0, #32] - - // This is how we look up an endpoint structure from an endpoint address: - qh->_reserved_0 = (uint32_t)endpoint; -2000dae8: 6244 str r4, [r0, #36] ; 0x24 - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000daea: 240f movs r4, #15 - // NOTE: UM10503 section 23.6.24 "Endpoint 1 to 5 control registers" says - // that the disabled side of an endpoint must be set to a non-control type - // (e.g. bulk, interrupt, or iso). - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) - = ( USB0_ENDPTCTRL(endpoint_number) -2000daec: 480b ldr r0, [pc, #44] ; (2000db1c ) - return (endpoint_address & 0x80) ? true : false; -} - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000daee: 4034 ands r4, r6 - // NOTE: UM10503 section 23.6.24 "Endpoint 1 to 5 control registers" says - // that the disabled side of an endpoint must be set to a non-control type - // (e.g. bulk, interrupt, or iso). - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) - = ( USB0_ENDPTCTRL(endpoint_number) -2000daf0: 1822 adds r2, r4, r0 -2000daf2: 0093 lsls r3, r2, #2 -2000daf4: 6819 ldr r1, [r3, #0] - & ~(USB0_ENDPTCTRL_TXT1_0_MASK | USB0_ENDPTCTRL_RXT_MASK) ) -2000daf6: 4c0a ldr r4, [pc, #40] ; (2000db20 ) - | ( USB0_ENDPTCTRL_TXT1_0(transfer_type) - | USB0_ENDPTCTRL_RXT(transfer_type) ); -2000daf8: 00af lsls r7, r5, #2 - // (e.g. bulk, interrupt, or iso). - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) - = ( USB0_ENDPTCTRL(endpoint_number) - & ~(USB0_ENDPTCTRL_TXT1_0_MASK | USB0_ENDPTCTRL_RXT_MASK) ) - | ( USB0_ENDPTCTRL_TXT1_0(transfer_type) -2000dafa: 04ad lsls r5, r5, #18 - | USB0_ENDPTCTRL_RXT(transfer_type) ); -2000dafc: 433d orrs r5, r7 - // that the disabled side of an endpoint must be set to a non-control type - // (e.g. bulk, interrupt, or iso). - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) - = ( USB0_ENDPTCTRL(endpoint_number) - & ~(USB0_ENDPTCTRL_TXT1_0_MASK | USB0_ENDPTCTRL_RXT_MASK) ) -2000dafe: 400c ands r4, r1 - | ( USB0_ENDPTCTRL_TXT1_0(transfer_type) -2000db00: 4325 orrs r5, r4 - // NOTE: UM10503 section 23.6.24 "Endpoint 1 to 5 control registers" says - // that the disabled side of an endpoint must be set to a non-control type - // (e.g. bulk, interrupt, or iso). - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - USB0_ENDPTCTRL(endpoint_number) - = ( USB0_ENDPTCTRL(endpoint_number) -2000db02: 601d str r5, [r3, #0] -} - -static void usb_endpoint_enable(const usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->address); - if( usb_endpoint_is_in(endpoint->address) ) { -2000db04: 0632 lsls r2, r6, #24 -2000db06: d503 bpl.n 2000db10 - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_TXE | USB0_ENDPTCTRL_TXR); -2000db08: 22c0 movs r2, #192 ; 0xc0 -2000db0a: 6818 ldr r0, [r3, #0] -2000db0c: 0416 lsls r6, r2, #16 -2000db0e: e001 b.n 2000db14 - } else { - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_RXE | USB0_ENDPTCTRL_RXR); -2000db10: 681e ldr r6, [r3, #0] -2000db12: 20c0 movs r0, #192 ; 0xc0 -2000db14: 4306 orrs r6, r0 -2000db16: 601e str r6, [r3, #0] - // USB0_ENDPTNAKEN_EPRNE(1 << endpoint_out->number); - - usb_endpoint_set_type(endpoint, transfer_type); - - usb_endpoint_enable(endpoint); -} -2000db18: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000db1a: 46c0 nop ; (mov r8, r8) -2000db1c: 10001870 .word 0x10001870 -2000db20: fff3fff3 .word 0xfff3fff3 - -2000db24 : - } - } -} - -void usb0_isr(void) -{ -2000db24: b5f0 push {r4, r5, r6, r7, lr} -} - -static uint32_t usb_get_status(void) -{ - // Mask status flags with enabled flag interrupts. - const uint32_t status = USB0_USBSTS_D & USB0_USBINTR_D; -2000db26: 4b5d ldr r3, [pc, #372] ; (2000dc9c ) -2000db28: 4a5d ldr r2, [pc, #372] ; (2000dca0 ) -2000db2a: 6819 ldr r1, [r3, #0] -2000db2c: 6810 ldr r0, [r2, #0] - } - } -} - -void usb0_isr(void) -{ -2000db2e: b085 sub sp, #20 -} - -static uint32_t usb_get_status(void) -{ - // Mask status flags with enabled flag interrupts. - const uint32_t status = USB0_USBSTS_D & USB0_USBINTR_D; -2000db30: 4001 ands r1, r0 -2000db32: 9100 str r1, [sp, #0] - } -} - -static void usb_clear_status(const uint32_t status) -{ - USB0_USBSTS_D = status; -2000db34: 6019 str r1, [r3, #0] - -void usb0_isr(void) -{ - const uint32_t status = usb_get_status(); - - if( status == 0 ) { -2000db36: d100 bne.n 2000db3a -2000db38: e0ad b.n 2000dc96 - // Nothing to do. - return; - } - - if( status & USB0_USBSTS_D_UI ) { -2000db3a: 07cb lsls r3, r1, #31 -2000db3c: d418 bmi.n 2000db70 - - if( status & USB0_USBSTS_D_SLI ) { - // Device controller suspend. - } -*/ - if( status & USB0_USBSTS_D_URI ) { -2000db3e: 9800 ldr r0, [sp, #0] -2000db40: 0642 lsls r2, r0, #25 -2000db42: d400 bmi.n 2000db46 -2000db44: e0a7 b.n 2000dc96 - // USB reset received. - usb_bus_reset(usb_device_usb0); -2000db46: 4e57 ldr r6, [pc, #348] ; (2000dca4 ) - USB0_ENDPTCOMPLETE = USB0_ENDPTCOMPLETE & mask; -} - -static void usb_clear_all_pending_interrupts(void) -{ - usb_clear_pending_interrupts(0xFFFFFFFF); -2000db48: 2401 movs r4, #1 - // Device controller suspend. - } -*/ - if( status & USB0_USBSTS_D_URI ) { - // USB reset received. - usb_bus_reset(usb_device_usb0); -2000db4a: 6837 ldr r7, [r6, #0] - usb_wait_for_endpoint_flushing_to_finish(mask); -} - -static void usb_flush_all_primed_endpoints(void) -{ - usb_flush_primed_endpoints(0xFFFFFFFF); -2000db4c: 2501 movs r5, #1 - } -} - -static void usb_reset_all_endpoints(void) -{ - usb_disable_all_endpoints(); -2000db4e: f7ff fe19 bl 2000d784 - USB0_ENDPTCOMPLETE = USB0_ENDPTCOMPLETE & mask; -} - -static void usb_clear_all_pending_interrupts(void) -{ - usb_clear_pending_interrupts(0xFFFFFFFF); -2000db52: 4260 negs r0, r4 -2000db54: f7ff fdee bl 2000d734 - usb_wait_for_endpoint_flushing_to_finish(mask); -} - -static void usb_flush_all_primed_endpoints(void) -{ - usb_flush_primed_endpoints(0xFFFFFFFF); -2000db58: 4268 negs r0, r5 -2000db5a: f7ff fe05 bl 2000d768 - -static void usb_bus_reset(usb_device_t* const device) -{ - // According to UM10503 v1.4 section 23.10.3 "Bus reset": - usb_reset_all_endpoints(); - usb_set_address_immediate(device, 0); -2000db5e: 1c38 adds r0, r7, #0 -2000db60: 2100 movs r1, #0 -2000db62: f7ff ff25 bl 2000d9b0 - usb_set_configuration(device, 0); -2000db66: 1c38 adds r0, r7, #0 -2000db68: 2100 movs r1, #0 -2000db6a: f000 fa03 bl 2000df74 -2000db6e: e092 b.n 2000dc96 - USB0_ENDPTSETUPSTAT = endpoint_setup_status; -} - -static uint32_t usb_get_endpoint_setup_status(void) -{ - return USB0_ENDPTSETUPSTAT; -2000db70: 4f4d ldr r7, [pc, #308] ; (2000dca8 ) -} - -static void usb_check_for_setup_events(void) -{ - const uint32_t endptsetupstat = usb_get_endpoint_setup_status(); - if( endptsetupstat ) -2000db72: 2600 movs r6, #0 - USB0_ENDPTSETUPSTAT = endpoint_setup_status; -} - -static uint32_t usb_get_endpoint_setup_status(void) -{ - return USB0_ENDPTSETUPSTAT; -2000db74: 683b ldr r3, [r7, #0] -2000db76: 9303 str r3, [sp, #12] -} - -static void usb_check_for_setup_events(void) -{ - const uint32_t endptsetupstat = usb_get_endpoint_setup_status(); - if( endptsetupstat ) -2000db78: 42b3 cmp r3, r6 -2000db7a: d15d bne.n 2000dc38 - USB0_ENDPTCOMPLETE = endpoint_complete; -} - -static uint32_t usb_get_endpoint_complete(void) -{ - return USB0_ENDPTCOMPLETE; -2000db7c: 4e4b ldr r6, [pc, #300] ; (2000dcac ) -} - -static void usb_check_for_transfer_events(void) -{ - const uint32_t endptcomplete = usb_get_endpoint_complete(); - if( endptcomplete ) -2000db7e: 2400 movs r4, #0 - USB0_ENDPTCOMPLETE = endpoint_complete; -} - -static uint32_t usb_get_endpoint_complete(void) -{ - return USB0_ENDPTCOMPLETE; -2000db80: 6837 ldr r7, [r6, #0] -} - -static void usb_check_for_transfer_events(void) -{ - const uint32_t endptcomplete = usb_get_endpoint_complete(); - if( endptcomplete ) -2000db82: 42a7 cmp r7, r4 -2000db84: d170 bne.n 2000dc68 -2000db86: e7da b.n 2000db3e - return &usb_qh[USB_QH_INDEX(endpoint_address)]; -} - -static usb_endpoint_t* usb_endpoint_from_address(const uint_fast8_t endpoint_address) -{ - return (usb_endpoint_t*)usb_queue_head(endpoint_address)->_reserved_0; -2000db88: 1c30 adds r0, r6, #0 -2000db8a: f7ff fe23 bl 2000d7d4 -2000db8e: 6a44 ldr r4, [r0, #36] ; 0x24 - { - usb_endpoint_t* const endpoint = - usb_endpoint_from_address( - usb_endpoint_address(USB_TRANSFER_DIRECTION_OUT, i) - ); - if( endpoint && endpoint->setup_complete ) -2000db90: 2c00 cmp r4, #0 -2000db92: d058 beq.n 2000dc46 -2000db94: 6a20 ldr r0, [r4, #32] -2000db96: 2800 cmp r0, #0 -2000db98: d055 beq.n 2000dc46 - { - copy_setup(&endpoint->setup, usb_queue_head(endpoint->address)->setup); -2000db9a: 6923 ldr r3, [r4, #16] -2000db9c: 1c18 adds r0, r3, #0 -2000db9e: 9301 str r3, [sp, #4] -2000dba0: f7ff fe18 bl 2000d7d4 - usb_controller_run(); -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; -2000dba4: 1c01 adds r1, r0, #0 -2000dba6: 3128 adds r1, #40 ; 0x28 -2000dba8: 780a ldrb r2, [r1, #0] - dst->request = src[1]; -2000dbaa: 1c05 adds r5, r0, #0 - usb_controller_run(); -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; -2000dbac: 7022 strb r2, [r4, #0] - dst->request = src[1]; -2000dbae: 3529 adds r5, #41 ; 0x29 -2000dbb0: 782b ldrb r3, [r5, #0] - dst->value_l = src[2]; -2000dbb2: 1c01 adds r1, r0, #0 -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; -2000dbb4: 7063 strb r3, [r4, #1] - dst->value_l = src[2]; -2000dbb6: 312a adds r1, #42 ; 0x2a -2000dbb8: 780a ldrb r2, [r1, #0] - dst->value_h = src[3]; -2000dbba: 1c05 adds r5, r0, #0 - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; -2000dbbc: 70a2 strb r2, [r4, #2] - dst->value_h = src[3]; -2000dbbe: 352b adds r5, #43 ; 0x2b -2000dbc0: 782b ldrb r3, [r5, #0] - dst->index_l = src[4]; -2000dbc2: 1c01 adds r1, r0, #0 -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; -2000dbc4: 70e3 strb r3, [r4, #3] - dst->index_l = src[4]; -2000dbc6: 312c adds r1, #44 ; 0x2c -2000dbc8: 780a ldrb r2, [r1, #0] - dst->index_h = src[5]; -2000dbca: 1c05 adds r5, r0, #0 -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; -2000dbcc: 7122 strb r2, [r4, #4] - dst->index_h = src[5]; -2000dbce: 352d adds r5, #45 ; 0x2d -2000dbd0: 782b ldrb r3, [r5, #0] - dst->length_l = src[6]; -2000dbd2: 1c01 adds r1, r0, #0 - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; - dst->index_h = src[5]; -2000dbd4: 7163 strb r3, [r4, #5] - dst->length_l = src[6]; -2000dbd6: 312e adds r1, #46 ; 0x2e -2000dbd8: 780a ldrb r2, [r1, #0] - dst->length_h = src[7]; -2000dbda: 302f adds r0, #47 ; 0x2f - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; - dst->index_h = src[5]; - dst->length_l = src[6]; -2000dbdc: 71a2 strb r2, [r4, #6] - dst->length_h = src[7]; -2000dbde: 7800 ldrb r0, [r0, #0] - if( endpoint && endpoint->setup_complete ) - { - copy_setup(&endpoint->setup, usb_queue_head(endpoint->address)->setup); - // TODO: Clean up this duplicated effort by providing - // a cleaner way to get the SETUP data. - copy_setup(&endpoint->in->setup, usb_queue_head(endpoint->address)->setup); -2000dbe0: 69a5 ldr r5, [r4, #24] - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; - dst->index_h = src[5]; - dst->length_l = src[6]; - dst->length_h = src[7]; -2000dbe2: 71e0 strb r0, [r4, #7] - if( endpoint && endpoint->setup_complete ) - { - copy_setup(&endpoint->setup, usb_queue_head(endpoint->address)->setup); - // TODO: Clean up this duplicated effort by providing - // a cleaner way to get the SETUP data. - copy_setup(&endpoint->in->setup, usb_queue_head(endpoint->address)->setup); -2000dbe4: 9801 ldr r0, [sp, #4] -2000dbe6: f7ff fdf5 bl 2000d7d4 - usb_controller_run(); -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; -2000dbea: 1c03 adds r3, r0, #0 -2000dbec: 3328 adds r3, #40 ; 0x28 -2000dbee: 7819 ldrb r1, [r3, #0] - dst->request = src[1]; -2000dbf0: 1c02 adds r2, r0, #0 - usb_controller_run(); -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; -2000dbf2: 7029 strb r1, [r5, #0] - dst->request = src[1]; -2000dbf4: 3229 adds r2, #41 ; 0x29 -2000dbf6: 7813 ldrb r3, [r2, #0] - dst->value_l = src[2]; -2000dbf8: 1c01 adds r1, r0, #0 -} - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; -2000dbfa: 706b strb r3, [r5, #1] - dst->value_l = src[2]; -2000dbfc: 312a adds r1, #42 ; 0x2a -2000dbfe: 780a ldrb r2, [r1, #0] - dst->value_h = src[3]; -2000dc00: 1c03 adds r3, r0, #0 - -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; -2000dc02: 70aa strb r2, [r5, #2] - dst->value_h = src[3]; -2000dc04: 332b adds r3, #43 ; 0x2b -2000dc06: 7819 ldrb r1, [r3, #0] - dst->index_l = src[4]; -2000dc08: 1c02 adds r2, r0, #0 -static void copy_setup(usb_setup_t* const dst, const volatile uint8_t* const src) -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; -2000dc0a: 70e9 strb r1, [r5, #3] - dst->index_l = src[4]; -2000dc0c: 322c adds r2, #44 ; 0x2c -2000dc0e: 7813 ldrb r3, [r2, #0] - dst->index_h = src[5]; -2000dc10: 1c01 adds r1, r0, #0 -{ - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; -2000dc12: 712b strb r3, [r5, #4] - dst->index_h = src[5]; -2000dc14: 312d adds r1, #45 ; 0x2d -2000dc16: 780a ldrb r2, [r1, #0] - dst->length_l = src[6]; -2000dc18: 1c03 adds r3, r0, #0 - dst->request_type = src[0]; - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; - dst->index_h = src[5]; -2000dc1a: 716a strb r2, [r5, #5] - dst->length_l = src[6]; -2000dc1c: 332e adds r3, #46 ; 0x2e -2000dc1e: 7819 ldrb r1, [r3, #0] - dst->length_h = src[7]; -2000dc20: 302f adds r0, #47 ; 0x2f - dst->request = src[1]; - dst->value_l = src[2]; - dst->value_h = src[3]; - dst->index_l = src[4]; - dst->index_h = src[5]; - dst->length_l = src[6]; -2000dc22: 71a9 strb r1, [r5, #6] - dst->length_h = src[7]; -2000dc24: 7800 ldrb r0, [r0, #0] -2000dc26: 71e8 strb r0, [r5, #7] - return status; -} - -static void usb_clear_endpoint_setup_status(const uint32_t endpoint_setup_status) -{ - USB0_ENDPTSETUPSTAT = endpoint_setup_status; -2000dc28: 9d02 ldr r5, [sp, #8] - copy_setup(&endpoint->setup, usb_queue_head(endpoint->address)->setup); - // TODO: Clean up this duplicated effort by providing - // a cleaner way to get the SETUP data. - copy_setup(&endpoint->in->setup, usb_queue_head(endpoint->address)->setup); - usb_clear_endpoint_setup_status(endptsetupstat_bit); - endpoint->setup_complete(endpoint); -2000dc2a: 6a22 ldr r2, [r4, #32] - return status; -} - -static void usb_clear_endpoint_setup_status(const uint32_t endpoint_setup_status) -{ - USB0_ENDPTSETUPSTAT = endpoint_setup_status; -2000dc2c: 603d str r5, [r7, #0] - copy_setup(&endpoint->setup, usb_queue_head(endpoint->address)->setup); - // TODO: Clean up this duplicated effort by providing - // a cleaner way to get the SETUP data. - copy_setup(&endpoint->in->setup, usb_queue_head(endpoint->address)->setup); - usb_clear_endpoint_setup_status(endptsetupstat_bit); - endpoint->setup_complete(endpoint); -2000dc2e: 1c20 adds r0, r4, #0 -2000dc30: 4790 blx r2 -static void usb_check_for_setup_events(void) -{ - const uint32_t endptsetupstat = usb_get_endpoint_setup_status(); - if( endptsetupstat ) - { - for( uint_fast8_t i=0; i<6; i++ ) -2000dc32: 3601 adds r6, #1 -2000dc34: 2e06 cmp r6, #6 -2000dc36: d0a1 beq.n 2000db7c - { - const uint32_t endptsetupstat_bit = USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT(1 << i); -2000dc38: 2101 movs r1, #1 - if( endptsetupstat & endptsetupstat_bit ) -2000dc3a: 9a03 ldr r2, [sp, #12] - const uint32_t endptsetupstat = usb_get_endpoint_setup_status(); - if( endptsetupstat ) - { - for( uint_fast8_t i=0; i<6; i++ ) - { - const uint32_t endptsetupstat_bit = USB0_ENDPTSETUPSTAT_ENDPTSETUPSTAT(1 << i); -2000dc3c: 40b1 lsls r1, r6 -2000dc3e: 9102 str r1, [sp, #8] - if( endptsetupstat & endptsetupstat_bit ) -2000dc40: 420a tst r2, r1 -2000dc42: d0f6 beq.n 2000dc32 -2000dc44: e7a0 b.n 2000db88 - return status; -} - -static void usb_clear_endpoint_setup_status(const uint32_t endpoint_setup_status) -{ - USB0_ENDPTSETUPSTAT = endpoint_setup_status; -2000dc46: 9d02 ldr r5, [sp, #8] -2000dc48: 603d str r5, [r7, #0] -2000dc4a: e7f2 b.n 2000dc32 - return USB0_ENDPTSETUPSTAT; -} - -static void usb_clear_endpoint_complete(const uint32_t endpoint_complete) -{ - USB0_ENDPTCOMPLETE = endpoint_complete; -2000dc4c: 6035 str r5, [r6, #0] - return &usb_qh[USB_QH_INDEX(endpoint_address)]; -} - -static usb_endpoint_t* usb_endpoint_from_address(const uint_fast8_t endpoint_address) -{ - return (usb_endpoint_t*)usb_queue_head(endpoint_address)->_reserved_0; -2000dc4e: 1c20 adds r0, r4, #0 -2000dc50: f7ff fdc0 bl 2000d7d4 -2000dc54: 6a40 ldr r0, [r0, #36] ; 0x24 - if( endptcomplete & endptcomplete_out_bit ) - { - usb_clear_endpoint_complete(endptcomplete_out_bit); - usb_endpoint_t* const endpoint = - usb_endpoint_from_address(usb_endpoint_address(USB_TRANSFER_DIRECTION_OUT, i)); - if( endpoint && endpoint->transfer_complete ) -2000dc56: 2800 cmp r0, #0 -2000dc58: d10b bne.n 2000dc72 - { - endpoint->transfer_complete(endpoint); - } - } - - const uint32_t endptcomplete_in_bit = USB0_ENDPTCOMPLETE_ETCE(1 << i); -2000dc5a: 0429 lsls r1, r5, #16 - if( endptcomplete & endptcomplete_in_bit ) -2000dc5c: 420f tst r7, r1 -2000dc5e: d10d bne.n 2000dc7c -static void usb_check_for_transfer_events(void) -{ - const uint32_t endptcomplete = usb_get_endpoint_complete(); - if( endptcomplete ) - { - for( uint_fast8_t i=0; i<6; i++ ) { -2000dc60: 3401 adds r4, #1 -2000dc62: 2c06 cmp r4, #6 -2000dc64: d100 bne.n 2000dc68 -2000dc66: e76a b.n 2000db3e - - const uint32_t endptcomplete_out_bit = USB0_ENDPTCOMPLETE_ERCE(1 << i); -2000dc68: 2501 movs r5, #1 -2000dc6a: 40a5 lsls r5, r4 - if( endptcomplete & endptcomplete_out_bit ) -2000dc6c: 422f tst r7, r5 -2000dc6e: d0f4 beq.n 2000dc5a -2000dc70: e7ec b.n 2000dc4c - { - usb_clear_endpoint_complete(endptcomplete_out_bit); - usb_endpoint_t* const endpoint = - usb_endpoint_from_address(usb_endpoint_address(USB_TRANSFER_DIRECTION_OUT, i)); - if( endpoint && endpoint->transfer_complete ) -2000dc72: 6a43 ldr r3, [r0, #36] ; 0x24 -2000dc74: 2b00 cmp r3, #0 -2000dc76: d0f0 beq.n 2000dc5a - { - endpoint->transfer_complete(endpoint); -2000dc78: 4798 blx r3 -2000dc7a: e7ee b.n 2000dc5a - -static uint_fast8_t usb_endpoint_address( - const usb_transfer_direction_t direction, - const uint_fast8_t number) -{ - return ((direction == USB_TRANSFER_DIRECTION_IN) ? 0x80 : 0x00) + number; -2000dc7c: 1c20 adds r0, r4, #0 - return USB0_ENDPTSETUPSTAT; -} - -static void usb_clear_endpoint_complete(const uint32_t endpoint_complete) -{ - USB0_ENDPTCOMPLETE = endpoint_complete; -2000dc7e: 6031 str r1, [r6, #0] - -static uint_fast8_t usb_endpoint_address( - const usb_transfer_direction_t direction, - const uint_fast8_t number) -{ - return ((direction == USB_TRANSFER_DIRECTION_IN) ? 0x80 : 0x00) + number; -2000dc80: 3080 adds r0, #128 ; 0x80 - return &usb_qh[USB_QH_INDEX(endpoint_address)]; -} - -static usb_endpoint_t* usb_endpoint_from_address(const uint_fast8_t endpoint_address) -{ - return (usb_endpoint_t*)usb_queue_head(endpoint_address)->_reserved_0; -2000dc82: f7ff fda7 bl 2000d7d4 -2000dc86: 6a40 ldr r0, [r0, #36] ; 0x24 - if( endptcomplete & endptcomplete_in_bit ) - { - usb_clear_endpoint_complete(endptcomplete_in_bit); - usb_endpoint_t* const endpoint = - usb_endpoint_from_address(usb_endpoint_address(USB_TRANSFER_DIRECTION_IN, i)); - if( endpoint && endpoint->transfer_complete ) -2000dc88: 2800 cmp r0, #0 -2000dc8a: d0e9 beq.n 2000dc60 -2000dc8c: 6a42 ldr r2, [r0, #36] ; 0x24 -2000dc8e: 2a00 cmp r2, #0 -2000dc90: d0e6 beq.n 2000dc60 - { - endpoint->transfer_complete(endpoint); -2000dc92: 4790 blx r2 -2000dc94: e7e4 b.n 2000dc60 - if( status & USB0_USBSTS_D_NAKI ) { - // Both the TX/RX endpoint NAK bit and corresponding TX/RX endpoint - // NAK enable bit are set. - } -*/ -} -2000dc96: b005 add sp, #20 -2000dc98: bdf0 pop {r4, r5, r6, r7, pc} -2000dc9a: 46c0 nop ; (mov r8, r8) -2000dc9c: 40006144 .word 0x40006144 -2000dca0: 40006148 .word 0x40006148 -2000dca4: 2000f340 .word 0x2000f340 -2000dca8: 400061ac .word 0x400061ac -2000dcac: 400061bc .word 0x400061bc - -2000dcb0 : - -#define USB_ENDPOINT_INDEX(endpoint_address) (((endpoint_address & 0xF) * 2) + ((endpoint_address >> 7) & 1)) - -static usb_queue_t* endpoint_queue(const usb_endpoint_t* const endpoint) -{ - uint32_t index = USB_ENDPOINT_INDEX(endpoint->address); -2000dcb0: 6903 ldr r3, [r0, #16] -2000dcb2: 210f movs r1, #15 -2000dcb4: 061a lsls r2, r3, #24 -2000dcb6: 400b ands r3, r1 -2000dcb8: 0fd0 lsrs r0, r2, #31 - if (endpoint_queues[index] == NULL) while (1); -2000dcba: 005b lsls r3, r3, #1 -2000dcbc: 181a adds r2, r3, r0 -2000dcbe: 4903 ldr r1, [pc, #12] ; (2000dccc ) -2000dcc0: 0090 lsls r0, r2, #2 -2000dcc2: 5840 ldr r0, [r0, r1] -2000dcc4: 2800 cmp r0, #0 -2000dcc6: d100 bne.n 2000dcca -2000dcc8: e7fe b.n 2000dcc8 - return endpoint_queues[index]; -} -2000dcca: 4770 bx lr -2000dccc: 2000f344 .word 0x2000f344 - -2000dcd0 : - -void usb_queue_init(usb_queue_t* const queue) -{ - uint32_t index = USB_ENDPOINT_INDEX(queue->endpoint->address); -2000dcd0: 6803 ldr r3, [r0, #0] - if (endpoint_queues[index] == NULL) while (1); - return endpoint_queues[index]; -} - -void usb_queue_init(usb_queue_t* const queue) -{ -2000dcd2: b570 push {r4, r5, r6, lr} - uint32_t index = USB_ENDPOINT_INDEX(queue->endpoint->address); -2000dcd4: 691c ldr r4, [r3, #16] -2000dcd6: 220f movs r2, #15 -2000dcd8: 0621 lsls r1, r4, #24 -2000dcda: 4014 ands r4, r2 -2000dcdc: 0fcd lsrs r5, r1, #31 -2000dcde: 0066 lsls r6, r4, #1 -2000dce0: 19ac adds r4, r5, r6 - if (endpoint_queues[index] != NULL) while (1); -2000dce2: 4b0e ldr r3, [pc, #56] ; (2000dd1c ) -2000dce4: 00a1 lsls r1, r4, #2 -2000dce6: 58ca ldr r2, [r1, r3] -2000dce8: 2a00 cmp r2, #0 -2000dcea: d000 beq.n 2000dcee -2000dcec: e7fe b.n 2000dcec - endpoint_queues[index] = queue; -2000dcee: 50c8 str r0, [r1, r3] - - usb_transfer_t* t = queue->free_transfers; -2000dcf0: 6881 ldr r1, [r0, #8] - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { -2000dcf2: 6844 ldr r4, [r0, #4] -{ - uint32_t index = USB_ENDPOINT_INDEX(queue->endpoint->address); - if (endpoint_queues[index] != NULL) while (1); - endpoint_queues[index] = queue; - - usb_transfer_t* t = queue->free_transfers; -2000dcf4: 1c0b adds r3, r1, #0 - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { -2000dcf6: 1e65 subs r5, r4, #1 -2000dcf8: 42aa cmp r2, r5 -2000dcfa: d206 bcs.n 2000dd0a - t->next = t+1; -2000dcfc: 3380 adds r3, #128 ; 0x80 - uint32_t index = USB_ENDPOINT_INDEX(endpoint->address); - if (endpoint_queues[index] == NULL) while (1); - return endpoint_queues[index]; -} - -void usb_queue_init(usb_queue_t* const queue) -2000dcfe: 1c1e adds r6, r3, #0 -2000dd00: 3e80 subs r6, #128 ; 0x80 - if (endpoint_queues[index] != NULL) while (1); - endpoint_queues[index] = queue; - - usb_transfer_t* t = queue->free_transfers; - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { - t->next = t+1; -2000dd02: 6033 str r3, [r6, #0] - t->queue = queue; -2000dd04: 6670 str r0, [r6, #100] ; 0x64 - uint32_t index = USB_ENDPOINT_INDEX(queue->endpoint->address); - if (endpoint_queues[index] != NULL) while (1); - endpoint_queues[index] = queue; - - usb_transfer_t* t = queue->free_transfers; - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { -2000dd06: 3201 adds r2, #1 -2000dd08: e7f6 b.n 2000dcf8 - uint32_t index = USB_ENDPOINT_INDEX(endpoint->address); - if (endpoint_queues[index] == NULL) while (1); - return endpoint_queues[index]; -} - -void usb_queue_init(usb_queue_t* const queue) -2000dd0a: 4d05 ldr r5, [pc, #20] ; (2000dd20 ) - usb_transfer_t* t = queue->free_transfers; - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { - t->next = t+1; - t->queue = queue; - } - t->next = NULL; -2000dd0c: 2300 movs r3, #0 - uint32_t index = USB_ENDPOINT_INDEX(endpoint->address); - if (endpoint_queues[index] == NULL) while (1); - return endpoint_queues[index]; -} - -void usb_queue_init(usb_queue_t* const queue) -2000dd0e: 1962 adds r2, r4, r5 -2000dd10: 01d6 lsls r6, r2, #7 -2000dd12: 198c adds r4, r1, r6 - usb_transfer_t* t = queue->free_transfers; - for (unsigned int i=0; i < queue->pool_size - 1; i++, t++) { - t->next = t+1; - t->queue = queue; - } - t->next = NULL; -2000dd14: 6023 str r3, [r4, #0] - t->queue = queue; -2000dd16: 6660 str r0, [r4, #100] ; 0x64 -} -2000dd18: bd70 pop {r4, r5, r6, pc} -2000dd1a: 46c0 nop ; (mov r8, r8) -2000dd1c: 2000f344 .word 0x2000f344 -2000dd20: 01ffffff .word 0x01ffffff - -2000dd24 : - } - cm_enable_interrupts(); -} - -void usb_queue_flush_endpoint(const usb_endpoint_t* const endpoint) -{ -2000dd24: b508 push {r3, lr} - usb_queue_flush_queue(endpoint_queue(endpoint)); -2000dd26: f7ff ffc3 bl 2000dcb0 - __asm__("CPSIE I\n"); -} - -static inline void cm_disable_interrupts(void) -{ - __asm__("CPSID I\n"); -2000dd2a: b672 cpsid i -} - -static void usb_queue_flush_queue(usb_queue_t* const queue) -{ - cm_disable_interrupts(); - while (queue->active) -2000dd2c: 68c3 ldr r3, [r0, #12] -2000dd2e: 2b00 cmp r3, #0 -2000dd30: d007 beq.n 2000dd42 - { - usb_transfer_t* transfer = queue->active; -2000dd32: 68c3 ldr r3, [r0, #12] - queue->active = transfer->next; -2000dd34: 6819 ldr r1, [r3, #0] -} - -/* Place a transfer in the free list (nolock or disable IRQ) */ -static void free_transfer_nolock(usb_transfer_t* const transfer) -{ - usb_queue_t* const queue = transfer->queue; -2000dd36: 6e5a ldr r2, [r3, #100] ; 0x64 -{ - cm_disable_interrupts(); - while (queue->active) - { - usb_transfer_t* transfer = queue->active; - queue->active = transfer->next; -2000dd38: 60c1 str r1, [r0, #12] - do { - transfer->next = (void *) __ldrex((uint32_t *) &queue->free_transfers); - aborted = __strex((uint32_t) transfer, (uint32_t *) &queue->free_transfers); - } while (aborted); -*/ - transfer->next = queue->free_transfers; -2000dd3a: 6891 ldr r1, [r2, #8] -2000dd3c: 6019 str r1, [r3, #0] - queue->free_transfers = transfer; -2000dd3e: 6093 str r3, [r2, #8] -2000dd40: e7f4 b.n 2000dd2c -#ifndef LIBOPENCM3_CORTEX_H -#define LIBOPENCM3_CORTEX_H - -static inline void cm_enable_interrupts(void) -{ - __asm__("CPSIE I\n"); -2000dd42: b662 cpsie i -} - -void usb_queue_flush_endpoint(const usb_endpoint_t* const endpoint) -{ - usb_queue_flush_queue(endpoint_queue(endpoint)); -} -2000dd44: bd08 pop {r3, pc} - ... - -2000dd48 : - -int usb_transfer_schedule( - const usb_endpoint_t* const endpoint, - void* const data, - const uint32_t maximum_length) -{ -2000dd48: b538 push {r3, r4, r5, lr} -2000dd4a: 1c0c adds r4, r1, #0 -2000dd4c: 1c15 adds r5, r2, #0 - usb_queue_t* const queue = endpoint_queue(endpoint); -2000dd4e: f7ff ffaf bl 2000dcb0 -/* - bool aborted; -*/ - usb_transfer_t* transfer; - - if (queue->free_transfers == NULL) -2000dd52: 6883 ldr r3, [r0, #8] -2000dd54: 2b00 cmp r3, #0 -2000dd56: d042 beq.n 2000ddde -} - -static inline void cm_disable_interrupts(void) -{ - __asm__("CPSID I\n"); -2000dd58: b672 cpsid i - transfer = (void *) __ldrex((uint32_t *) &queue->free_transfers); - aborted = __strex((uint32_t) transfer->next, (uint32_t *) &queue->free_transfers); - } while (aborted); -*/ - cm_disable_interrupts(); - transfer = queue->free_transfers; -2000dd5a: 6883 ldr r3, [r0, #8] - queue->free_transfers = transfer->next; - transfer->next = NULL; -2000dd5c: 2200 movs r2, #0 - aborted = __strex((uint32_t) transfer->next, (uint32_t *) &queue->free_transfers); - } while (aborted); -*/ - cm_disable_interrupts(); - transfer = queue->free_transfers; - queue->free_transfers = transfer->next; -2000dd5e: 6819 ldr r1, [r3, #0] -2000dd60: 6081 str r1, [r0, #8] - transfer->next = NULL; -2000dd62: 601a str r2, [r3, #0] -#ifndef LIBOPENCM3_CORTEX_H -#define LIBOPENCM3_CORTEX_H - -static inline void cm_enable_interrupts(void) -{ - __asm__("CPSIE I\n"); -2000dd64: b662 cpsie i - usb_transfer_t* const transfer = allocate_transfer(queue); - if (transfer == NULL) return -1; - usb_transfer_descriptor_t* const td = &transfer->td; - - // Configure the transfer descriptor - td->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; -2000dd66: 2101 movs r1, #1 -2000dd68: 6419 str r1, [r3, #64] ; 0x40 - td->total_bytes = - USB_TD_DTD_TOKEN_TOTAL_BYTES(maximum_length) - | USB_TD_DTD_TOKEN_IOC - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; -2000dd6a: 491e ldr r1, [pc, #120] ; (2000dde4 ) - usb_transfer_descriptor_t* const td = &transfer->td; - - // Configure the transfer descriptor - td->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; - td->total_bytes = - USB_TD_DTD_TOKEN_TOTAL_BYTES(maximum_length) -2000dd6c: 042a lsls r2, r5, #16 - | USB_TD_DTD_TOKEN_IOC - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; -2000dd6e: 430a orrs r2, r1 - if (transfer == NULL) return -1; - usb_transfer_descriptor_t* const td = &transfer->td; - - // Configure the transfer descriptor - td->next_dtd_pointer = USB_TD_NEXT_DTD_POINTER_TERMINATE; - td->total_bytes = -2000dd70: 645a str r2, [r3, #68] ; 0x44 - USB_TD_DTD_TOKEN_TOTAL_BYTES(maximum_length) - | USB_TD_DTD_TOKEN_IOC - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; - td->buffer_pointer_page[0] = (uint32_t)data; - td->buffer_pointer_page[1] = ((uint32_t)data + 0x1000) & 0xfffff000; -2000dd72: 2280 movs r2, #128 ; 0x80 -2000dd74: 0151 lsls r1, r2, #5 -2000dd76: 1862 adds r2, r4, r1 -2000dd78: 0b11 lsrs r1, r2, #12 -2000dd7a: 030a lsls r2, r1, #12 - td->buffer_pointer_page[2] = ((uint32_t)data + 0x2000) & 0xfffff000; -2000dd7c: 2180 movs r1, #128 ; 0x80 - td->total_bytes = - USB_TD_DTD_TOKEN_TOTAL_BYTES(maximum_length) - | USB_TD_DTD_TOKEN_IOC - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; - td->buffer_pointer_page[0] = (uint32_t)data; -2000dd7e: 649c str r4, [r3, #72] ; 0x48 - td->buffer_pointer_page[1] = ((uint32_t)data + 0x1000) & 0xfffff000; -2000dd80: 64da str r2, [r3, #76] ; 0x4c - td->buffer_pointer_page[2] = ((uint32_t)data + 0x2000) & 0xfffff000; -2000dd82: 018a lsls r2, r1, #6 -2000dd84: 18a1 adds r1, r4, r2 -2000dd86: 0b0a lsrs r2, r1, #12 -2000dd88: 0311 lsls r1, r2, #12 - td->buffer_pointer_page[3] = ((uint32_t)data + 0x3000) & 0xfffff000; -2000dd8a: 22c0 movs r2, #192 ; 0xc0 - | USB_TD_DTD_TOKEN_IOC - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; - td->buffer_pointer_page[0] = (uint32_t)data; - td->buffer_pointer_page[1] = ((uint32_t)data + 0x1000) & 0xfffff000; - td->buffer_pointer_page[2] = ((uint32_t)data + 0x2000) & 0xfffff000; -2000dd8c: 6519 str r1, [r3, #80] ; 0x50 - td->buffer_pointer_page[3] = ((uint32_t)data + 0x3000) & 0xfffff000; -2000dd8e: 0191 lsls r1, r2, #6 -2000dd90: 1862 adds r2, r4, r1 -2000dd92: 0b11 lsrs r1, r2, #12 -2000dd94: 030a lsls r2, r1, #12 - td->buffer_pointer_page[4] = ((uint32_t)data + 0x4000) & 0xfffff000; -2000dd96: 2180 movs r1, #128 ; 0x80 - | USB_TD_DTD_TOKEN_MULTO(0) - | USB_TD_DTD_TOKEN_STATUS_ACTIVE; - td->buffer_pointer_page[0] = (uint32_t)data; - td->buffer_pointer_page[1] = ((uint32_t)data + 0x1000) & 0xfffff000; - td->buffer_pointer_page[2] = ((uint32_t)data + 0x2000) & 0xfffff000; - td->buffer_pointer_page[3] = ((uint32_t)data + 0x3000) & 0xfffff000; -2000dd98: 655a str r2, [r3, #84] ; 0x54 - td->buffer_pointer_page[4] = ((uint32_t)data + 0x4000) & 0xfffff000; -2000dd9a: 01ca lsls r2, r1, #7 -2000dd9c: 18a4 adds r4, r4, r2 -2000dd9e: 0b21 lsrs r1, r4, #12 -2000dda0: 030a lsls r2, r1, #12 -2000dda2: 659a str r2, [r3, #88] ; 0x58 - - // Fill in transfer fields - transfer->maximum_length = maximum_length; -2000dda4: 661d str r5, [r3, #96] ; 0x60 -} - -static inline void cm_disable_interrupts(void) -{ - __asm__("CPSID I\n"); -2000dda6: b672 cpsid i -/* Add a transfer to the end of an endpoint's queue. Returns the old - * tail or NULL is the queue was empty - */ -static usb_transfer_t* endpoint_queue_transfer(usb_transfer_t* const transfer) -{ - usb_queue_t* const queue = transfer->queue; -2000dda8: 6e5d ldr r5, [r3, #100] ; 0x64 - transfer->next = NULL; - if (queue->active != NULL) -2000ddaa: 68ec ldr r4, [r5, #12] -2000ddac: 2c00 cmp r4, #0 -2000ddae: d00d beq.n 2000ddcc - { - usb_transfer_t* t = queue->active; -2000ddb0: 68e9 ldr r1, [r5, #12] - while (t->next != NULL) t = t->next; -2000ddb2: 680a ldr r2, [r1, #0] -2000ddb4: 2a00 cmp r2, #0 -2000ddb6: d001 beq.n 2000ddbc -2000ddb8: 1c11 adds r1, r2, #0 -2000ddba: e7fa b.n 2000ddb2 - { - // The queue is currently empty, we need to re-prime - usb_endpoint_schedule_wait(queue->endpoint, &transfer->td); - } else { - // The queue is currently running, try to append - usb_endpoint_schedule_append(queue->endpoint, &tail->td, &transfer->td); -2000ddbc: 1c1a adds r2, r3, #0 - transfer->next = NULL; - if (queue->active != NULL) - { - usb_transfer_t* t = queue->active; - while (t->next != NULL) t = t->next; - t->next = transfer; -2000ddbe: 600b str r3, [r1, #0] - { - // The queue is currently empty, we need to re-prime - usb_endpoint_schedule_wait(queue->endpoint, &transfer->td); - } else { - // The queue is currently running, try to append - usb_endpoint_schedule_append(queue->endpoint, &tail->td, &transfer->td); -2000ddc0: 6800 ldr r0, [r0, #0] -2000ddc2: 3140 adds r1, #64 ; 0x40 -2000ddc4: 3240 adds r2, #64 ; 0x40 -2000ddc6: f7ff fd89 bl 2000d8dc -2000ddca: e005 b.n 2000ddd8 - cm_disable_interrupts(); - usb_transfer_t* tail = endpoint_queue_transfer(transfer); - if (tail == NULL) - { - // The queue is currently empty, we need to re-prime - usb_endpoint_schedule_wait(queue->endpoint, &transfer->td); -2000ddcc: 1c19 adds r1, r3, #0 - usb_transfer_t* t = queue->active; - while (t->next != NULL) t = t->next; - t->next = transfer; - return t; - } else { - queue->active = transfer; -2000ddce: 60eb str r3, [r5, #12] - cm_disable_interrupts(); - usb_transfer_t* tail = endpoint_queue_transfer(transfer); - if (tail == NULL) - { - // The queue is currently empty, we need to re-prime - usb_endpoint_schedule_wait(queue->endpoint, &transfer->td); -2000ddd0: 6800 ldr r0, [r0, #0] -2000ddd2: 3140 adds r1, #64 ; 0x40 -2000ddd4: f7ff fdb6 bl 2000d944 -#ifndef LIBOPENCM3_CORTEX_H -#define LIBOPENCM3_CORTEX_H - -static inline void cm_enable_interrupts(void) -{ - __asm__("CPSIE I\n"); -2000ddd8: b662 cpsie i - } else { - // The queue is currently running, try to append - usb_endpoint_schedule_append(queue->endpoint, &tail->td, &transfer->td); - } - cm_enable_interrupts(); - return 0; -2000ddda: 2000 movs r0, #0 -2000dddc: e001 b.n 2000dde2 - void* const data, - const uint32_t maximum_length) -{ - usb_queue_t* const queue = endpoint_queue(endpoint); - usb_transfer_t* const transfer = allocate_transfer(queue); - if (transfer == NULL) return -1; -2000ddde: 2001 movs r0, #1 -2000dde0: 4240 negs r0, r0 - // The queue is currently running, try to append - usb_endpoint_schedule_append(queue->endpoint, &tail->td, &transfer->td); - } - cm_enable_interrupts(); - return 0; -} -2000dde2: bd38 pop {r3, r4, r5, pc} -2000dde4: 00008080 .word 0x00008080 - -2000dde8 : - -int usb_transfer_schedule_block( - const usb_endpoint_t* const endpoint, - void* const data, - const uint32_t maximum_length) -{ -2000dde8: b570 push {r4, r5, r6, lr} -2000ddea: 1c06 adds r6, r0, #0 -2000ddec: 1c0d adds r5, r1, #0 -2000ddee: 1c14 adds r4, r2, #0 - int ret; - do - { - ret = usb_transfer_schedule(endpoint, data, maximum_length); -2000ddf0: 1c30 adds r0, r6, #0 -2000ddf2: 1c29 adds r1, r5, #0 -2000ddf4: 1c22 adds r2, r4, #0 -2000ddf6: f7ff ffa7 bl 2000dd48 - } while (ret == -1); -2000ddfa: 3001 adds r0, #1 -2000ddfc: d0f8 beq.n 2000ddf0 - return 0; -} -2000ddfe: 2000 movs r0, #0 -2000de00: bd70 pop {r4, r5, r6, pc} - -2000de02 : - -int usb_transfer_schedule_ack(const usb_endpoint_t* const endpoint) -{ -2000de02: b508 push {r3, lr} - return usb_transfer_schedule_block(endpoint, 0, 0); -2000de04: 2100 movs r1, #0 -2000de06: 1c0a adds r2, r1, #0 -2000de08: f7ff ffee bl 2000dde8 -} -2000de0c: bd08 pop {r3, pc} - -2000de0e : - -/* Called when an endpoint might have completed a transfer */ -void usb_queue_transfer_complete(usb_endpoint_t* const endpoint) -{ -2000de0e: b510 push {r4, lr} - usb_queue_t* const queue = endpoint_queue(endpoint); -2000de10: f7ff ff4e bl 2000dcb0 - if (queue == NULL) while(1); // Uh oh -2000de14: 2800 cmp r0, #0 -2000de16: d100 bne.n 2000de1a -2000de18: e7fe b.n 2000de18 - usb_transfer_t* transfer = queue->active; -2000de1a: 68c3 ldr r3, [r0, #12] - - while (transfer != NULL) -2000de1c: 2b00 cmp r3, #0 -2000de1e: d010 beq.n 2000de42 - { - uint8_t status = transfer->td.total_bytes; -2000de20: 6c5a ldr r2, [r3, #68] ; 0x44 - - // Check for failures - if (status & USB_TD_DTD_TOKEN_STATUS_HALTED - || status & USB_TD_DTD_TOKEN_STATUS_BUFFER_ERROR - || status & USB_TD_DTD_TOKEN_STATUS_TRANSACTION_ERROR) -2000de22: 2168 movs r1, #104 ; 0x68 -2000de24: 420a tst r2, r1 -2000de26: d000 beq.n 2000de2a -2000de28: e7fe b.n 2000de28 - // TODO: Uh oh, do something useful here - while (1); - } - - // Still not finished - if (status & USB_TD_DTD_TOKEN_STATUS_ACTIVE) -2000de2a: 0611 lsls r1, r2, #24 -2000de2c: d409 bmi.n 2000de42 - break; - - // Advance the head. - queue->active = transfer->next; -2000de2e: 681a ldr r2, [r3, #0] -} - -/* Place a transfer in the free list */ -static void free_transfer(usb_transfer_t* const transfer) -{ - usb_queue_t* const queue = transfer->queue; -2000de30: 6e59 ldr r1, [r3, #100] ; 0x64 - // Still not finished - if (status & USB_TD_DTD_TOKEN_STATUS_ACTIVE) - break; - - // Advance the head. - queue->active = transfer->next; -2000de32: 60c2 str r2, [r0, #12] -} - -static inline void cm_disable_interrupts(void) -{ - __asm__("CPSID I\n"); -2000de34: b672 cpsid i - transfer->next = (void *) __ldrex((uint32_t *) &queue->free_transfers); - aborted = __strex((uint32_t) transfer, (uint32_t *) &queue->free_transfers); - } while (aborted); -*/ - cm_disable_interrupts(); - transfer->next = queue->free_transfers; -2000de36: 688c ldr r4, [r1, #8] -2000de38: 601c str r4, [r3, #0] - queue->free_transfers = transfer; -2000de3a: 608b str r3, [r1, #8] -#ifndef LIBOPENCM3_CORTEX_H -#define LIBOPENCM3_CORTEX_H - -static inline void cm_enable_interrupts(void) -{ - __asm__("CPSIE I\n"); -2000de3c: b662 cpsie i - queue->active = transfer->next; - usb_transfer_t* next = transfer->next; - - // Free transfer - free_transfer(transfer); - transfer = next; -2000de3e: 1c13 adds r3, r2, #0 -2000de40: e7ec b.n 2000de1c - } -} -2000de42: bd10 pop {r4, pc} - -2000de44 : -#include - -static void usb_request( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ -2000de44: b510 push {r4, lr} - usb_request_status_t status = USB_REQUEST_STATUS_STALL; - usb_request_handler_fn handler = 0; - - switch( endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_mask ) -2000de46: 7802 ldrb r2, [r0, #0] -2000de48: 2360 movs r3, #96 ; 0x60 -#include - -static void usb_request( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ -2000de4a: 1c04 adds r4, r0, #0 - usb_request_status_t status = USB_REQUEST_STATUS_STALL; - usb_request_handler_fn handler = 0; - - switch( endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_mask ) -2000de4c: 4013 ands r3, r2 -2000de4e: 2b40 cmp r3, #64 ; 0x40 -2000de50: d00f beq.n 2000de72 -2000de52: d806 bhi.n 2000de62 -2000de54: 2b00 cmp r3, #0 -2000de56: d009 beq.n 2000de6c -2000de58: 2b20 cmp r3, #32 -2000de5a: d112 bne.n 2000de82 - case USB_SETUP_REQUEST_TYPE_STANDARD: - handler = usb_request_handlers.standard; - break; - - case USB_SETUP_REQUEST_TYPE_CLASS: - handler = usb_request_handlers.class; -2000de5c: 480b ldr r0, [pc, #44] ; (2000de8c ) -2000de5e: 6842 ldr r2, [r0, #4] - break; -2000de60: e009 b.n 2000de76 - const usb_transfer_stage_t stage) -{ - usb_request_status_t status = USB_REQUEST_STATUS_STALL; - usb_request_handler_fn handler = 0; - - switch( endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_mask ) -2000de62: 2b60 cmp r3, #96 ; 0x60 -2000de64: d10d bne.n 2000de82 - case USB_SETUP_REQUEST_TYPE_VENDOR: - handler = usb_request_handlers.vendor; - break; - - case USB_SETUP_REQUEST_TYPE_RESERVED: - handler = usb_request_handlers.reserved; -2000de66: 4b09 ldr r3, [pc, #36] ; (2000de8c ) -2000de68: 68da ldr r2, [r3, #12] - break; -2000de6a: e004 b.n 2000de76 - usb_request_handler_fn handler = 0; - - switch( endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_mask ) - { - case USB_SETUP_REQUEST_TYPE_STANDARD: - handler = usb_request_handlers.standard; -2000de6c: 4a07 ldr r2, [pc, #28] ; (2000de8c ) -2000de6e: 6812 ldr r2, [r2, #0] - break; -2000de70: e001 b.n 2000de76 - case USB_SETUP_REQUEST_TYPE_CLASS: - handler = usb_request_handlers.class; - break; - - case USB_SETUP_REQUEST_TYPE_VENDOR: - handler = usb_request_handlers.vendor; -2000de72: 4806 ldr r0, [pc, #24] ; (2000de8c ) -2000de74: 6882 ldr r2, [r0, #8] - case USB_SETUP_REQUEST_TYPE_RESERVED: - handler = usb_request_handlers.reserved; - break; - } - - if( handler ) { -2000de76: 2a00 cmp r2, #0 -2000de78: d003 beq.n 2000de82 - status = handler(endpoint, stage); -2000de7a: 1c20 adds r0, r4, #0 -2000de7c: 4790 blx r2 - } - - if( status != USB_REQUEST_STATUS_OK ) { -2000de7e: 2800 cmp r0, #0 -2000de80: d002 beq.n 2000de88 - // USB 2.0 section 9.2.7 "Request Error" - usb_endpoint_stall(endpoint); -2000de82: 1c20 adds r0, r4, #0 -2000de84: f7ff fd6e bl 2000d964 - } -} -2000de88: bd10 pop {r4, pc} -2000de8a: 46c0 nop ; (mov r8, r8) -2000de8c: 2000e97c .word 0x2000e97c - -2000de90 : - -void usb_setup_complete(usb_endpoint_t* const endpoint) -{ -2000de90: b508 push {r3, lr} - usb_request(endpoint, USB_TRANSFER_STAGE_SETUP); -2000de92: 2100 movs r1, #0 -2000de94: f7ff ffd6 bl 2000de44 -} -2000de98: bd08 pop {r3, pc} - -2000de9a : - -void usb_control_out_complete(usb_endpoint_t* const endpoint) -{ -2000de9a: b510 push {r4, lr} - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; -2000de9c: 7803 ldrb r3, [r0, #0] -{ - usb_request(endpoint, USB_TRANSFER_STAGE_SETUP); -} - -void usb_control_out_complete(usb_endpoint_t* const endpoint) -{ -2000de9e: 1c04 adds r4, r0, #0 - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; - if( device_to_host ) { -2000dea0: 09da lsrs r2, r3, #7 - usb_request(endpoint, USB_TRANSFER_STAGE_STATUS); -2000dea2: 2102 movs r1, #2 - -void usb_control_out_complete(usb_endpoint_t* const endpoint) -{ - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; - if( device_to_host ) { -2000dea4: 2a00 cmp r2, #0 -2000dea6: d100 bne.n 2000deaa - usb_request(endpoint, USB_TRANSFER_STAGE_STATUS); - } else { - usb_request(endpoint, USB_TRANSFER_STAGE_DATA); -2000dea8: 2101 movs r1, #1 -2000deaa: f7ff ffcb bl 2000de44 - } - usb_queue_transfer_complete(endpoint); -2000deae: 1c20 adds r0, r4, #0 -2000deb0: f7ff ffad bl 2000de0e -} -2000deb4: bd10 pop {r4, pc} - -2000deb6 : - -void usb_control_in_complete(usb_endpoint_t* const endpoint) -{ -2000deb6: b510 push {r4, lr} - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; -2000deb8: 7803 ldrb r3, [r0, #0] - } - usb_queue_transfer_complete(endpoint); -} - -void usb_control_in_complete(usb_endpoint_t* const endpoint) -{ -2000deba: 1c04 adds r4, r0, #0 - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; - if( device_to_host ) { -2000debc: 09da lsrs r2, r3, #7 - usb_request(endpoint, USB_TRANSFER_STAGE_DATA); -2000debe: 2101 movs r1, #1 - -void usb_control_in_complete(usb_endpoint_t* const endpoint) -{ - const bool device_to_host = - endpoint->setup.request_type >> USB_SETUP_REQUEST_TYPE_DATA_TRANSFER_DIRECTION_shift; - if( device_to_host ) { -2000dec0: 2a00 cmp r2, #0 -2000dec2: d100 bne.n 2000dec6 - usb_request(endpoint, USB_TRANSFER_STAGE_DATA); - } else { - usb_request(endpoint, USB_TRANSFER_STAGE_STATUS); -2000dec4: 2102 movs r1, #2 -2000dec6: f7ff ffbd bl 2000de44 - } - usb_queue_transfer_complete(endpoint); -2000deca: 1c20 adds r0, r4, #0 -2000decc: f7ff ff9f bl 2000de0e -} -2000ded0: bd10 pop {r4, pc} - -2000ded2 : -} - -static usb_request_status_t usb_send_descriptor( - usb_endpoint_t* const endpoint, - const uint8_t* const descriptor_data) -{ -2000ded2: b510 push {r4, lr} -2000ded4: 1c04 adds r4, r0, #0 - const uint32_t setup_length = endpoint->setup.length; -2000ded6: 88c3 ldrh r3, [r0, #6] - uint32_t descriptor_length = descriptor_data[0]; - if ( ( descriptor_data[1] == USB_DESCRIPTOR_TYPE_CONFIGURATION ) || -2000ded8: 7848 ldrb r0, [r1, #1] -static usb_request_status_t usb_send_descriptor( - usb_endpoint_t* const endpoint, - const uint8_t* const descriptor_data) -{ - const uint32_t setup_length = endpoint->setup.length; - uint32_t descriptor_length = descriptor_data[0]; -2000deda: 780a ldrb r2, [r1, #0] - if ( ( descriptor_data[1] == USB_DESCRIPTOR_TYPE_CONFIGURATION ) || -2000dedc: 2802 cmp r0, #2 -2000dede: d001 beq.n 2000dee4 -2000dee0: 2807 cmp r0, #7 -2000dee2: d103 bne.n 2000deec - ( descriptor_data[1] == USB_DESCRIPTOR_TYPE_OTHER_SPEED_CONFIGURATION ) ) - { - descriptor_length = (descriptor_data[3] << 8) | descriptor_data[2]; -2000dee4: 78ca ldrb r2, [r1, #3] -2000dee6: 7888 ldrb r0, [r1, #2] -2000dee8: 0212 lsls r2, r2, #8 -2000deea: 4302 orrs r2, r0 - } - // We cast the const away but this shouldn't be a problem as this is a write transfer - usb_transfer_schedule_block( -2000deec: 69a0 ldr r0, [r4, #24] -2000deee: 429a cmp r2, r3 -2000def0: d900 bls.n 2000def4 -2000def2: 1c1a adds r2, r3, #0 -2000def4: f7ff ff78 bl 2000dde8 - endpoint->in, - (uint8_t* const) descriptor_data, - (setup_length > descriptor_length) ? descriptor_length : setup_length); - usb_transfer_schedule_ack(endpoint->out); -2000def8: 69e0 ldr r0, [r4, #28] -2000defa: f7ff ff82 bl 2000de02 - return USB_REQUEST_STATUS_OK; -} -2000defe: 2000 movs r0, #0 -2000df00: bd10 pop {r4, pc} - -2000df02 : -static usb_request_status_t usb_send_descriptor_config( - usb_endpoint_t* const endpoint, - usb_speed_t speed, - const uint8_t config_num) -{ - usb_configuration_t** config = *(endpoint->device->configurations); -2000df02: 6943 ldr r3, [r0, #20] - -static usb_request_status_t usb_send_descriptor_config( - usb_endpoint_t* const endpoint, - usb_speed_t speed, - const uint8_t config_num) -{ -2000df04: b570 push {r4, r5, r6, lr} -2000df06: 68dd ldr r5, [r3, #12] - usb_configuration_t** config = *(endpoint->device->configurations); - unsigned int i = 0; -2000df08: 2400 movs r4, #0 - for( ; *config != NULL; config++ ) -2000df0a: cd08 ldmia r5!, {r3} -2000df0c: 2b00 cmp r3, #0 -2000df0e: d00a beq.n 2000df26 - { - if( (*config)->speed == speed) -2000df10: 7a1e ldrb r6, [r3, #8] -2000df12: 428e cmp r6, r1 -2000df14: d1f9 bne.n 2000df0a - { - if (i == config_num) -2000df16: 4294 cmp r4, r2 -2000df18: d103 bne.n 2000df22 - { - return usb_send_descriptor(endpoint, (*config)->descriptor); -2000df1a: 6819 ldr r1, [r3, #0] -2000df1c: f7ff ffd9 bl 2000ded2 -2000df20: e002 b.n 2000df28 - } else { - i++; -2000df22: 3401 adds r4, #1 -2000df24: e7f1 b.n 2000df0a - } - } - } - return USB_REQUEST_STATUS_STALL; -2000df26: 2001 movs r0, #1 -} -2000df28: bd70 pop {r4, r5, r6, pc} - -2000df2a : - return (endpoint_address & 0xF); -} - -const uint8_t* usb_endpoint_descriptor(const usb_endpoint_t* const endpoint) -{ - const usb_configuration_t* const configuration = endpoint->device->configuration; -2000df2a: 6943 ldr r3, [r0, #20] -{ - return (endpoint_address & 0xF); -} - -const uint8_t* usb_endpoint_descriptor(const usb_endpoint_t* const endpoint) -{ -2000df2c: b510 push {r4, lr} - const usb_configuration_t* const configuration = endpoint->device->configuration; -2000df2e: 691b ldr r3, [r3, #16] -{ - return (endpoint_address & 0xF); -} - -const uint8_t* usb_endpoint_descriptor(const usb_endpoint_t* const endpoint) -{ -2000df30: 1c02 adds r2, r0, #0 - const usb_configuration_t* const configuration = endpoint->device->configuration; - if( configuration ) -2000df32: 2b00 cmp r3, #0 -2000df34: d00c beq.n 2000df50 - { - const uint8_t* descriptor = configuration->descriptor; -2000df36: 6818 ldr r0, [r3, #0] - while( descriptor[0] != 0 ) -2000df38: 7803 ldrb r3, [r0, #0] -2000df3a: 2b00 cmp r3, #0 -2000df3c: d008 beq.n 2000df50 - { - if( descriptor[1] == USB_DESCRIPTOR_TYPE_ENDPOINT ) -2000df3e: 7841 ldrb r1, [r0, #1] -2000df40: 2905 cmp r1, #5 -2000df42: d103 bne.n 2000df4c - { - if( descriptor[2] == endpoint->address ) { -2000df44: 7881 ldrb r1, [r0, #2] -2000df46: 6914 ldr r4, [r2, #16] -2000df48: 42a1 cmp r1, r4 -2000df4a: d002 beq.n 2000df52 - return descriptor; - } - } - descriptor += descriptor[0]; -2000df4c: 18c0 adds r0, r0, r3 -2000df4e: e7f3 b.n 2000df38 - } - } - - return 0; -2000df50: 1c18 adds r0, r3, #0 -} -2000df52: bd10 pop {r4, pc} - -2000df54 : - -uint_fast16_t usb_endpoint_descriptor_max_packet_size(const uint8_t* const endpoint_descriptor) -{ - return (endpoint_descriptor[5] << 8) | endpoint_descriptor[4]; -2000df54: 7942 ldrb r2, [r0, #5] -2000df56: 7903 ldrb r3, [r0, #4] -2000df58: 0211 lsls r1, r2, #8 -2000df5a: 1c08 adds r0, r1, #0 -2000df5c: 4318 orrs r0, r3 -} -2000df5e: 4770 bx lr - -2000df60 : - -usb_transfer_type_t usb_endpoint_descriptor_transfer_type(const uint8_t* const endpoint_descriptor) -{ - return (endpoint_descriptor[3] & 0x3); -2000df60: 78c0 ldrb r0, [r0, #3] -2000df62: 2303 movs r3, #3 -2000df64: 4018 ands r0, r3 -} -2000df66: 4770 bx lr - -2000df68 : - -void (*usb_configuration_changed_cb)(usb_device_t* const) = NULL; - -void usb_set_configuration_changed_cb(void (*callback)(usb_device_t* const)) -{ - usb_configuration_changed_cb = callback; -2000df68: 4b01 ldr r3, [pc, #4] ; (2000df70 ) -2000df6a: 6018 str r0, [r3, #0] -} -2000df6c: 4770 bx lr -2000df6e: 46c0 nop ; (mov r8, r8) -2000df70: 2000f374 .word 0x2000f374 - -2000df74 : - -bool usb_set_configuration( - usb_device_t* const device, - const uint_fast8_t configuration_number) -{ -2000df74: b570 push {r4, r5, r6, lr} -2000df76: 1c04 adds r4, r0, #0 -2000df78: 1e0d subs r5, r1, #0 - const usb_configuration_t* new_configuration = 0; - if( configuration_number != 0 ) -2000df7a: d00e beq.n 2000df9a - { - // Locate requested configuration. - if( device->configurations ) -2000df7c: 68c6 ldr r6, [r0, #12] -2000df7e: 2e00 cmp r6, #0 -2000df80: d018 beq.n 2000dfb4 - { - usb_configuration_t** configurations = *(device->configurations); - uint32_t i = 0; - const usb_speed_t usb_speed_current = usb_speed(device); -2000df82: f7ff fcff bl 2000d984 - while( configurations[i] ) -2000df86: ce08 ldmia r6!, {r3} -2000df88: 2b00 cmp r3, #0 -2000df8a: d013 beq.n 2000dfb4 - { - if( (configurations[i]->speed == usb_speed_current) && -2000df8c: 7a1a ldrb r2, [r3, #8] -2000df8e: 4282 cmp r2, r0 -2000df90: d1f9 bne.n 2000df86 -2000df92: 6859 ldr r1, [r3, #4] -2000df94: 42a9 cmp r1, r5 -2000df96: d1f6 bne.n 2000df86 -2000df98: e000 b.n 2000df9c - -bool usb_set_configuration( - usb_device_t* const device, - const uint_fast8_t configuration_number) -{ - const usb_configuration_t* new_configuration = 0; -2000df9a: 1c0b adds r3, r1, #0 - if( new_configuration == 0 ) { - return false; - } - } - - if( new_configuration != device->configuration ) { -2000df9c: 6920 ldr r0, [r4, #16] -2000df9e: 4283 cmp r3, r0 -2000dfa0: d000 beq.n 2000dfa4 - // Configuration changed. - device->configuration = new_configuration; -2000dfa2: 6123 str r3, [r4, #16] - } - - if (usb_configuration_changed_cb) -2000dfa4: 4b04 ldr r3, [pc, #16] ; (2000dfb8 ) -2000dfa6: 681d ldr r5, [r3, #0] -2000dfa8: 2d00 cmp r5, #0 -2000dfaa: d001 beq.n 2000dfb0 - usb_configuration_changed_cb(device); -2000dfac: 1c20 adds r0, r4, #0 -2000dfae: 47a8 blx r5 - - return true; -2000dfb0: 2001 movs r0, #1 -2000dfb2: e000 b.n 2000dfb6 - } - } - - // Requested configuration not found: request error. - if( new_configuration == 0 ) { - return false; -2000dfb4: 2000 movs r0, #0 - - if (usb_configuration_changed_cb) - usb_configuration_changed_cb(device); - - return true; -} -2000dfb6: bd70 pop {r4, r5, r6, pc} -2000dfb8: 2000f374 .word 0x2000f374 - -2000dfbc : -/*********************************************************************/ - -usb_request_status_t usb_standard_request( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ -2000dfbc: b5f8 push {r3, r4, r5, r6, r7, lr} -2000dfbe: 1c04 adds r4, r0, #0 - switch( endpoint->setup.request ) -2000dfc0: 7840 ldrb r0, [r0, #1] -/*********************************************************************/ - -usb_request_status_t usb_standard_request( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ -2000dfc2: 1c0e adds r6, r1, #0 - switch( endpoint->setup.request ) -2000dfc4: 280b cmp r0, #11 -2000dfc6: d900 bls.n 2000dfca -2000dfc8: e0ea b.n 2000e1a0 -2000dfca: f000 fb93 bl 2000e6f4 <__gnu_thumb1_case_uqi> -2000dfce: 2a06 .short 0x2a06 -2000dfd0: afe93ee9 .word 0xafe93ee9 -2000dfd4: bacce970 .word 0xbacce970 -2000dfd8: 6353 .short 0x6353 - { - case USB_STANDARD_REQUEST_GET_STATUS: - return usb_standard_request_get_status(endpoint, stage); -2000dfda: 2500 movs r5, #0 -} -static usb_request_status_t usb_standard_request_get_status( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - if (stage == USB_TRANSFER_STAGE_SETUP) -2000dfdc: 42a9 cmp r1, r5 -2000dfde: d000 beq.n 2000dfe2 -2000dfe0: e0df b.n 2000e1a2 - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) -2000dfe2: 7822 ldrb r2, [r4, #0] -2000dfe4: 211f movs r1, #31 -2000dfe6: 400a ands r2, r1 -2000dfe8: 2a01 cmp r2, #1 -2000dfea: d016 beq.n 2000e01a -2000dfec: 42aa cmp r2, r5 -2000dfee: d011 beq.n 2000e014 -2000dff0: 2a02 cmp r2, #2 -2000dff2: d000 beq.n 2000dff6 -2000dff4: e0d5 b.n 2000e1a2 -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000dff6: 88a7 ldrh r7, [r4, #4] - } -} -static usb_request_status_t usb_standard_request_get_status_endpoint(usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB_EpStatus = (USB0_ENDPTCTRL(endpoint_number) & (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS)) ? 1 : 0; -2000dff8: 486b ldr r0, [pc, #428] ; (2000e1a8 ) -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000dffa: 230f movs r3, #15 -2000dffc: 403b ands r3, r7 - } -} -static usb_request_status_t usb_standard_request_get_status_endpoint(usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB_EpStatus = (USB0_ENDPTCTRL(endpoint_number) & (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS)) ? 1 : 0; -2000dffe: 181e adds r6, r3, r0 -2000e000: 00b1 lsls r1, r6, #2 -2000e002: 680f ldr r7, [r1, #0] -2000e004: 4b69 ldr r3, [pc, #420] ; (2000e1ac ) -2000e006: 496a ldr r1, [pc, #424] ; (2000e1b0 ) -2000e008: 403b ands r3, r7 -2000e00a: 1e58 subs r0, r3, #1 -2000e00c: 4183 sbcs r3, r0 -2000e00e: 800b strh r3, [r1, #0] - usb_transfer_schedule_block(endpoint->in, &USB_EpStatus, 2); -2000e010: 69a0 ldr r0, [r4, #24] -2000e012: e03b b.n 2000e08c - if (stage == USB_TRANSFER_STAGE_SETUP) - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) - { - case USB_SETUP_REQUEST_TYPE_RECIPIENT_DEVICE: - usb_transfer_schedule_block(endpoint->in, &USB_DeviceStatus, 2); -2000e014: 69a0 ldr r0, [r4, #24] -2000e016: 4967 ldr r1, [pc, #412] ; (2000e1b4 ) -2000e018: e001 b.n 2000e01e - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - break; - case USB_SETUP_REQUEST_TYPE_RECIPIENT_INTERFACE: - usb_transfer_schedule_block(endpoint->in, &USB_InterfaceStatus, 2); -2000e01a: 69a0 ldr r0, [r4, #24] -2000e01c: 4966 ldr r1, [pc, #408] ; (2000e1b8 ) -2000e01e: 2202 movs r2, #2 -2000e020: e034 b.n 2000e08c - const usb_transfer_stage_t stage) -{ - switch( endpoint->setup.request ) - { - case USB_STANDARD_REQUEST_GET_STATUS: - return usb_standard_request_get_status(endpoint, stage); -2000e022: 2500 movs r5, #0 - -static usb_request_status_t usb_standard_request_clear_feature( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - if (stage == USB_TRANSFER_STAGE_SETUP) -2000e024: 42a9 cmp r1, r5 -2000e026: d000 beq.n 2000e02a -2000e028: e0bb b.n 2000e1a2 - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) -2000e02a: 7822 ldrb r2, [r4, #0] -2000e02c: 211f movs r1, #31 -2000e02e: 4011 ands r1, r2 -2000e030: 2902 cmp r1, #2 -2000e032: d000 beq.n 2000e036 -2000e034: e0b5 b.n 2000e1a2 -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000e036: 88a7 ldrh r7, [r4, #4] - -static usb_request_status_t usb_standard_request_clear_feature_endpoint( - usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB0_ENDPTCTRL(endpoint_number) &= ~(USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000e038: 485b ldr r0, [pc, #364] ; (2000e1a8 ) -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000e03a: 230f movs r3, #15 -2000e03c: 403b ands r3, r7 - -static usb_request_status_t usb_standard_request_clear_feature_endpoint( - usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB0_ENDPTCTRL(endpoint_number) &= ~(USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000e03e: 181e adds r6, r3, r0 -2000e040: 00b7 lsls r7, r6, #2 -2000e042: 683a ldr r2, [r7, #0] -2000e044: 485d ldr r0, [pc, #372] ; (2000e1bc ) -2000e046: 4010 ands r0, r2 -2000e048: e012 b.n 2000e070 - const usb_transfer_stage_t stage) -{ - switch( endpoint->setup.request ) - { - case USB_STANDARD_REQUEST_GET_STATUS: - return usb_standard_request_get_status(endpoint, stage); -2000e04a: 2500 movs r5, #0 - -static usb_request_status_t usb_standard_request_set_feature( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - if (stage == USB_TRANSFER_STAGE_SETUP) -2000e04c: 42a9 cmp r1, r5 -2000e04e: d000 beq.n 2000e052 -2000e050: e0a7 b.n 2000e1a2 - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) -2000e052: 7827 ldrb r7, [r4, #0] -2000e054: 201f movs r0, #31 -2000e056: 4038 ands r0, r7 -2000e058: 2802 cmp r0, #2 -2000e05a: d000 beq.n 2000e05e -2000e05c: e0a1 b.n 2000e1a2 -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000e05e: 88a6 ldrh r6, [r4, #4] -2000e060: 220f movs r2, #15 - -static usb_request_status_t usb_standard_request_set_feature_endpoint( - usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000e062: 4951 ldr r1, [pc, #324] ; (2000e1a8 ) -uint8_t USB_CurrentInterface = 0; //Bit 0 = SelfPowerred, Bit=1 Remote Wakeup -uint16_t USB_EpStatus; - -static uint_fast8_t usb_endpoint_number(const uint_fast8_t endpoint_address) -{ - return (endpoint_address & 0xF); -2000e064: 4032 ands r2, r6 - -static usb_request_status_t usb_standard_request_set_feature_endpoint( - usb_endpoint_t* const endpoint) -{ - const uint_fast8_t endpoint_number = usb_endpoint_number(endpoint->setup.index); - USB0_ENDPTCTRL(endpoint_number) |= (USB0_ENDPTCTRL_RXS | USB0_ENDPTCTRL_TXS); -2000e066: 1853 adds r3, r2, r1 -2000e068: 009f lsls r7, r3, #2 -2000e06a: 6838 ldr r0, [r7, #0] -2000e06c: 4e4f ldr r6, [pc, #316] ; (2000e1ac ) -2000e06e: 4330 orrs r0, r6 -2000e070: 6038 str r0, [r7, #0] -2000e072: e018 b.n 2000e0a6 - const usb_transfer_stage_t stage) -{ - switch( endpoint->setup.request ) - { - case USB_STANDARD_REQUEST_GET_STATUS: - return usb_standard_request_get_status(endpoint, stage); -2000e074: 2500 movs r5, #0 - -static usb_request_status_t usb_standard_request_get_interface( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - if (stage == USB_TRANSFER_STAGE_SETUP) -2000e076: 42a9 cmp r1, r5 -2000e078: d000 beq.n 2000e07c -2000e07a: e092 b.n 2000e1a2 - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) -2000e07c: 7822 ldrb r2, [r4, #0] -2000e07e: 201f movs r0, #31 -2000e080: 4002 ands r2, r0 -2000e082: 2a01 cmp r2, #1 -2000e084: d000 beq.n 2000e088 -2000e086: e08c b.n 2000e1a2 - { - case USB_SETUP_REQUEST_TYPE_RECIPIENT_DEVICE: - break; - - case USB_SETUP_REQUEST_TYPE_RECIPIENT_INTERFACE: - usb_transfer_schedule_block(endpoint->in, &USB_CurrentInterface, 1); -2000e088: 69a0 ldr r0, [r4, #24] -2000e08a: 494d ldr r1, [pc, #308] ; (2000e1c0 ) -2000e08c: f7ff feac bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000e090: 69e0 ldr r0, [r4, #28] -2000e092: e009 b.n 2000e0a8 - const usb_transfer_stage_t stage) -{ - switch( endpoint->setup.request ) - { - case USB_STANDARD_REQUEST_GET_STATUS: - return usb_standard_request_get_status(endpoint, stage); -2000e094: 2500 movs r5, #0 - -static usb_request_status_t usb_standard_request_set_interface( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - if (stage == USB_TRANSFER_STAGE_SETUP) -2000e096: 42a9 cmp r1, r5 -2000e098: d000 beq.n 2000e09c -2000e09a: e082 b.n 2000e1a2 - { - switch (endpoint->setup.request_type & USB_SETUP_REQUEST_TYPE_RECIPIENT_mask) -2000e09c: 7822 ldrb r2, [r4, #0] -2000e09e: 231f movs r3, #31 -2000e0a0: 4013 ands r3, r2 -2000e0a2: 2b01 cmp r3, #1 -2000e0a4: d17d bne.n 2000e1a2 - { - case USB_SETUP_REQUEST_TYPE_RECIPIENT_DEVICE: - break; - case USB_SETUP_REQUEST_TYPE_RECIPIENT_INTERFACE: - usb_transfer_schedule_ack(endpoint->in); -2000e0a6: 69a0 ldr r0, [r4, #24] -2000e0a8: f7ff feab bl 2000de02 -2000e0ac: e079 b.n 2000e1a2 - -static usb_request_status_t usb_standard_request_get_descriptor( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - switch( stage ) -2000e0ae: 2900 cmp r1, #0 -2000e0b0: d15b bne.n 2000e16a -} - -static usb_request_status_t usb_standard_request_get_descriptor_setup( - usb_endpoint_t* const endpoint) -{ - switch( endpoint->setup.value_h ) -2000e0b2: 78e0 ldrb r0, [r4, #3] -2000e0b4: 3801 subs r0, #1 -2000e0b6: 2806 cmp r0, #6 -2000e0b8: d872 bhi.n 2000e1a0 -2000e0ba: f000 fb1b bl 2000e6f4 <__gnu_thumb1_case_uqi> -2000e0be: 0704 .short 0x0704 -2000e0c0: 10717121 .word 0x10717121 -2000e0c4: 13 .byte 0x13 -2000e0c5: 00 .byte 0x00 - { - case USB_DESCRIPTOR_TYPE_DEVICE: - return usb_send_descriptor(endpoint, endpoint->device->descriptor); -2000e0c6: 6961 ldr r1, [r4, #20] -2000e0c8: 6809 ldr r1, [r1, #0] -2000e0ca: e023 b.n 2000e114 - - case USB_DESCRIPTOR_TYPE_CONFIGURATION: - // TODO: Duplicated code. Refactor. - if( usb_speed(endpoint->device) == USB_SPEED_HIGH ) { -2000e0cc: 6960 ldr r0, [r4, #20] -2000e0ce: f7ff fc59 bl 2000d984 -2000e0d2: 78a2 ldrb r2, [r4, #2] -2000e0d4: 1c01 adds r1, r0, #0 - return usb_send_descriptor_config(endpoint, USB_SPEED_HIGH, endpoint->setup.value_l); -2000e0d6: 1c20 adds r0, r4, #0 - case USB_DESCRIPTOR_TYPE_DEVICE: - return usb_send_descriptor(endpoint, endpoint->device->descriptor); - - case USB_DESCRIPTOR_TYPE_CONFIGURATION: - // TODO: Duplicated code. Refactor. - if( usb_speed(endpoint->device) == USB_SPEED_HIGH ) { -2000e0d8: 2902 cmp r1, #2 -2000e0da: d10a bne.n 2000e0f2 -2000e0dc: e00d b.n 2000e0fa - } else { - return usb_send_descriptor_config(endpoint, USB_SPEED_FULL, endpoint->setup.value_l); - } - - case USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER: - return usb_send_descriptor(endpoint, endpoint->device->qualifier_descriptor); -2000e0de: 6963 ldr r3, [r4, #20] -2000e0e0: 6899 ldr r1, [r3, #8] -2000e0e2: e017 b.n 2000e114 - - case USB_DESCRIPTOR_TYPE_OTHER_SPEED_CONFIGURATION: - // TODO: Duplicated code. Refactor. - if( usb_speed(endpoint->device) == USB_SPEED_HIGH ) { -2000e0e4: 6960 ldr r0, [r4, #20] -2000e0e6: f7ff fc4d bl 2000d984 -2000e0ea: 78a2 ldrb r2, [r4, #2] -2000e0ec: 2802 cmp r0, #2 -2000e0ee: d102 bne.n 2000e0f6 - return usb_send_descriptor_config(endpoint, USB_SPEED_FULL, endpoint->setup.value_l); -2000e0f0: 1c20 adds r0, r4, #0 -2000e0f2: 2101 movs r1, #1 -2000e0f4: e001 b.n 2000e0fa - } else { - return usb_send_descriptor_config(endpoint, USB_SPEED_HIGH, endpoint->setup.value_l); -2000e0f6: 1c20 adds r0, r4, #0 -2000e0f8: 2102 movs r1, #2 -2000e0fa: f7ff ff02 bl 2000df02 -2000e0fe: e00c b.n 2000e11a - return USB_REQUEST_STATUS_OK; -} - -static usb_request_status_t usb_send_descriptor_string(usb_endpoint_t* const endpoint) -{ - if ( endpoint->setup.value_l == 0xee) -2000e100: 78a0 ldrb r0, [r4, #2] -2000e102: 28ee cmp r0, #238 ; 0xee -2000e104: d102 bne.n 2000e10c - { - return usb_send_descriptor(endpoint, usb_descriptor_MSDescriptor); -2000e106: 1c20 adds r0, r4, #0 -2000e108: 492e ldr r1, [pc, #184] ; (2000e1c4 ) -2000e10a: e004 b.n 2000e116 - } - else - { - uint_fast8_t index = endpoint->setup.value_l; - for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) -2000e10c: 6967 ldr r7, [r4, #20] -2000e10e: 2600 movs r6, #0 -2000e110: 687d ldr r5, [r7, #4] -2000e112: e007 b.n 2000e124 - { - if( i == index ) { - return usb_send_descriptor(endpoint, endpoint->device->descriptor_strings[i]); -2000e114: 1c20 adds r0, r4, #0 -2000e116: f7ff fedc bl 2000ded2 -2000e11a: 1c05 adds r5, r0, #0 -2000e11c: e041 b.n 2000e1a2 - else - { - uint_fast8_t index = endpoint->setup.value_l; - for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) - { - if( i == index ) { -2000e11e: 4286 cmp r6, r0 -2000e120: d0f8 beq.n 2000e114 - return usb_send_descriptor(endpoint, usb_descriptor_MSDescriptor); - } - else - { - uint_fast8_t index = endpoint->setup.value_l; - for( uint_fast8_t i=0; endpoint->device->descriptor_strings[i] != 0; i++ ) -2000e122: 3601 adds r6, #1 -2000e124: cd02 ldmia r5!, {r1} -2000e126: 2900 cmp r1, #0 -2000e128: d1f9 bne.n 2000e11e -2000e12a: e039 b.n 2000e1a0 - -static usb_request_status_t usb_standard_request_set_address( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - switch( stage ) -2000e12c: 2900 cmp r1, #0 -2000e12e: d11c bne.n 2000e16a -/*********************************************************************/ - -static usb_request_status_t usb_standard_request_set_address_setup( - usb_endpoint_t* const endpoint) -{ - usb_set_address_deferred(endpoint->device, endpoint->setup.value_l); -2000e130: 78a1 ldrb r1, [r4, #2] -2000e132: 6960 ldr r0, [r4, #20] -2000e134: f7ff fc48 bl 2000d9c8 - usb_transfer_schedule_ack(endpoint->in); -2000e138: 69a0 ldr r0, [r4, #24] -2000e13a: f7ff fe62 bl 2000de02 - const usb_transfer_stage_t stage) -{ - switch( stage ) - { - case USB_TRANSFER_STAGE_SETUP: - return usb_standard_request_set_address_setup(endpoint); -2000e13e: 1c35 adds r5, r6, #0 -2000e140: e02f b.n 2000e1a2 - -static usb_request_status_t usb_standard_request_set_configuration( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - switch( stage ) -2000e142: 2900 cmp r1, #0 -2000e144: d111 bne.n 2000e16a -/*********************************************************************/ - -static usb_request_status_t usb_standard_request_set_configuration_setup( - usb_endpoint_t* const endpoint) -{ - const uint8_t usb_configuration = endpoint->setup.value_l; -2000e146: 78a7 ldrb r7, [r4, #2] - if( usb_set_configuration(endpoint->device, usb_configuration) ) -2000e148: 6960 ldr r0, [r4, #20] -2000e14a: 1c39 adds r1, r7, #0 -2000e14c: f7ff ff12 bl 2000df74 - usb_transfer_schedule_ack(endpoint->in); - return USB_REQUEST_STATUS_OK; - } - else - { - return USB_REQUEST_STATUS_STALL; -2000e150: 2501 movs r5, #1 - -static usb_request_status_t usb_standard_request_set_configuration_setup( - usb_endpoint_t* const endpoint) -{ - const uint8_t usb_configuration = endpoint->setup.value_l; - if( usb_set_configuration(endpoint->device, usb_configuration) ) -2000e152: 2800 cmp r0, #0 -2000e154: d025 beq.n 2000e1a2 - { - if( usb_configuration == 0 ) -2000e156: 2f00 cmp r7, #0 -2000e158: d103 bne.n 2000e162 - { - // TODO: Should this be done immediately? - usb_set_address_immediate(endpoint->device, 0); -2000e15a: 6960 ldr r0, [r4, #20] -2000e15c: 1c31 adds r1, r6, #0 -2000e15e: f7ff fc27 bl 2000d9b0 - } - usb_transfer_schedule_ack(endpoint->in); -2000e162: 69a0 ldr r0, [r4, #24] -2000e164: e018 b.n 2000e198 - -static usb_request_status_t usb_standard_request_get_configuration( - usb_endpoint_t* const endpoint, - const usb_transfer_stage_t stage) -{ - switch( stage ) -2000e166: 2900 cmp r1, #0 -2000e168: d004 beq.n 2000e174 - case USB_TRANSFER_STAGE_SETUP: - return usb_standard_request_get_configuration_setup(endpoint); - - case USB_TRANSFER_STAGE_DATA: - case USB_TRANSFER_STAGE_STATUS: - return USB_REQUEST_STATUS_OK; -2000e16a: 2202 movs r2, #2 -2000e16c: 42b2 cmp r2, r6 -2000e16e: 419b sbcs r3, r3 -2000e170: 425d negs r5, r3 -2000e172: e016 b.n 2000e1a2 -/*********************************************************************/ - -static usb_request_status_t usb_standard_request_get_configuration_setup( - usb_endpoint_t* const endpoint) -{ - if( endpoint->setup.length == 1 ) -2000e174: 88e1 ldrh r1, [r4, #6] - } - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); - usb_transfer_schedule_ack(endpoint->out); - return USB_REQUEST_STATUS_OK; - } else { - return USB_REQUEST_STATUS_STALL; -2000e176: 2501 movs r5, #1 -/*********************************************************************/ - -static usb_request_status_t usb_standard_request_get_configuration_setup( - usb_endpoint_t* const endpoint) -{ - if( endpoint->setup.length == 1 ) -2000e178: 42a9 cmp r1, r5 -2000e17a: d112 bne.n 2000e1a2 - { - endpoint->buffer[0] = 0; - if( endpoint->device->configuration ) -2000e17c: 6965 ldr r5, [r4, #20] -static usb_request_status_t usb_standard_request_get_configuration_setup( - usb_endpoint_t* const endpoint) -{ - if( endpoint->setup.length == 1 ) - { - endpoint->buffer[0] = 0; -2000e17e: 7226 strb r6, [r4, #8] - if( endpoint->device->configuration ) -2000e180: 692e ldr r6, [r5, #16] -2000e182: 2e00 cmp r6, #0 -2000e184: d001 beq.n 2000e18a - { - endpoint->buffer[0] = endpoint->device->configuration->number; -2000e186: 6872 ldr r2, [r6, #4] -2000e188: 7222 strb r2, [r4, #8] - } - usb_transfer_schedule_block(endpoint->in, &endpoint->buffer, 1); -2000e18a: 1c21 adds r1, r4, #0 -2000e18c: 3108 adds r1, #8 -2000e18e: 69a0 ldr r0, [r4, #24] -2000e190: 2201 movs r2, #1 -2000e192: f7ff fe29 bl 2000dde8 - usb_transfer_schedule_ack(endpoint->out); -2000e196: 69e0 ldr r0, [r4, #28] -2000e198: f7ff fe33 bl 2000de02 - return USB_REQUEST_STATUS_OK; -2000e19c: 2500 movs r5, #0 -2000e19e: e000 b.n 2000e1a2 - - case USB_STANDARD_REQUEST_GET_CONFIGURATION: - return usb_standard_request_get_configuration(endpoint, stage); - - default: - return USB_REQUEST_STATUS_STALL; -2000e1a0: 2501 movs r5, #1 - } -} -2000e1a2: 1c28 adds r0, r5, #0 -2000e1a4: bdf8 pop {r3, r4, r5, r6, r7, pc} -2000e1a6: 46c0 nop ; (mov r8, r8) -2000e1a8: 10001870 .word 0x10001870 -2000e1ac: 00010001 .word 0x00010001 -2000e1b0: 2000fb00 .word 0x2000fb00 -2000e1b4: 2000f37a .word 0x2000f37a -2000e1b8: 2000f378 .word 0x2000f378 -2000e1bc: fffefffe .word 0xfffefffe -2000e1c0: 2000f37c .word 0x2000f37c -2000e1c4: 2000ed41 .word 0x2000ed41 - -2000e1c8 : -/* For pin_conf_normal value see scu.h define SCU_CONF_XXX or Configuration for - * different I/O pins types - */ -void scu_pinmux(scu_grp_pin_t group_pin, uint32_t scu_conf) -{ - MMIO32(group_pin) = scu_conf; -2000e1c8: 6001 str r1, [r0, #0] -} -2000e1ca: 4770 bx lr - -2000e1cc : -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; -2000e1cc: 4a06 ldr r2, [pc, #24] ; (2000e1e8 ) -2000e1ce: 4b07 ldr r3, [pc, #28] ; (2000e1ec ) - - I2C0_SCLH = duty_cycle_count; -2000e1d0: 4907 ldr r1, [pc, #28] ; (2000e1f0 ) -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; -2000e1d2: 601a str r2, [r3, #0] - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; -2000e1d4: 4a07 ldr r2, [pc, #28] ; (2000e1f4 ) -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - - I2C0_SCLH = duty_cycle_count; -2000e1d6: 6008 str r0, [r1, #0] - I2C0_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e1d8: 4b07 ldr r3, [pc, #28] ; (2000e1f8 ) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; -2000e1da: 6010 str r0, [r2, #0] - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; -2000e1dc: 4a07 ldr r2, [pc, #28] ; (2000e1fc ) - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e1de: 206c movs r0, #108 ; 0x6c - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; -2000e1e0: 2140 movs r1, #64 ; 0x40 - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e1e2: 6018 str r0, [r3, #0] - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; -2000e1e4: 6011 str r1, [r2, #0] -} -2000e1e6: 4770 bx lr -2000e1e8: 00000808 .word 0x00000808 -2000e1ec: 40086c84 .word 0x40086c84 -2000e1f0: 400a1010 .word 0x400a1010 -2000e1f4: 400a1014 .word 0x400a1014 -2000e1f8: 400a1018 .word 0x400a1018 -2000e1fc: 400a1000 .word 0x400a1000 - -2000e200 : - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; -2000e200: 4a07 ldr r2, [pc, #28] ; (2000e220 ) - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; -2000e202: 4908 ldr r1, [pc, #32] ; (2000e224 ) -} - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; -2000e204: 23c1 movs r3, #193 ; 0xc1 -2000e206: 6013 str r3, [r2, #0] - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; -2000e208: 600b str r3, [r1, #0] - - I2C1_SCLH = duty_cycle_count; -2000e20a: 4b07 ldr r3, [pc, #28] ; (2000e228 ) - I2C1_SCLL = duty_cycle_count; -2000e20c: 4a07 ldr r2, [pc, #28] ; (2000e22c ) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - - I2C1_SCLH = duty_cycle_count; -2000e20e: 6018 str r0, [r3, #0] - I2C1_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e210: 4907 ldr r1, [pc, #28] ; (2000e230 ) - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; -2000e212: 4b08 ldr r3, [pc, #32] ; (2000e234 ) - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - - I2C1_SCLH = duty_cycle_count; - I2C1_SCLL = duty_cycle_count; -2000e214: 6010 str r0, [r2, #0] - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e216: 206c movs r0, #108 ; 0x6c - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; -2000e218: 2240 movs r2, #64 ; 0x40 - - I2C1_SCLH = duty_cycle_count; - I2C1_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC -2000e21a: 6008 str r0, [r1, #0] - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; -2000e21c: 601a str r2, [r3, #0] -} -2000e21e: 4770 bx lr -2000e220: 4008610c .word 0x4008610c -2000e224: 40086110 .word 0x40086110 -2000e228: 400e0010 .word 0x400e0010 -2000e22c: 400e0014 .word 0x400e0014 -2000e230: 400e0018 .word 0x400e0018 -2000e234: 400e0000 .word 0x400e0000 - -2000e238 : -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e238: 4a0c ldr r2, [pc, #48] ; (2000e26c ) - I2C0_CONSET = I2C_CONSET_STA; -2000e23a: 490d ldr r1, [pc, #52] ; (2000e270 ) -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e23c: 2308 movs r3, #8 - I2C0_CONSET = I2C_CONSET_STA; -2000e23e: 2020 movs r0, #32 -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e240: 6013 str r3, [r2, #0] - I2C0_CONSET = I2C_CONSET_STA; -2000e242: 6008 str r0, [r1, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e244: 680a ldr r2, [r1, #0] -2000e246: 4213 tst r3, r2 -2000e248: d10b bne.n 2000e262 -2000e24a: 4b0a ldr r3, [pc, #40] ; (2000e274 ) -2000e24c: 2208 movs r2, #8 -2000e24e: e005 b.n 2000e25c -2000e250: 6808 ldr r0, [r1, #0] -2000e252: 4202 tst r2, r0 -2000e254: d105 bne.n 2000e262 -2000e256: 3b02 subs r3, #2 -2000e258: 2b00 cmp r3, #0 -2000e25a: d002 beq.n 2000e262 -2000e25c: 6808 ldr r0, [r1, #0] -2000e25e: 4202 tst r2, r0 -2000e260: d0f6 beq.n 2000e250 - { - timeout++; - } - - I2C0_CONCLR = I2C_CONCLR_STAC; -2000e262: 4b02 ldr r3, [pc, #8] ; (2000e26c ) -2000e264: 2120 movs r1, #32 -2000e266: 6019 str r1, [r3, #0] -} -2000e268: 4770 bx lr -2000e26a: 46c0 nop ; (mov r8, r8) -2000e26c: 400a1018 .word 0x400a1018 -2000e270: 400a1000 .word 0x400a1000 -2000e274: 00002710 .word 0x00002710 - -2000e278 : -/* transmit start bit */ -void i2c1_tx_start(void) -{ - uint32_t timeout; - - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e278: 4a0c ldr r2, [pc, #48] ; (2000e2ac ) - I2C1_CONSET = I2C_CONSET_STA; -2000e27a: 490d ldr r1, [pc, #52] ; (2000e2b0 ) -/* transmit start bit */ -void i2c1_tx_start(void) -{ - uint32_t timeout; - - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e27c: 2308 movs r3, #8 - I2C1_CONSET = I2C_CONSET_STA; -2000e27e: 2020 movs r0, #32 -/* transmit start bit */ -void i2c1_tx_start(void) -{ - uint32_t timeout; - - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e280: 6013 str r3, [r2, #0] - I2C1_CONSET = I2C_CONSET_STA; -2000e282: 6008 str r0, [r1, #0] - - timeout = 0; - while( (!(I2C1_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e284: 680a ldr r2, [r1, #0] -2000e286: 4213 tst r3, r2 -2000e288: d10b bne.n 2000e2a2 -2000e28a: 4b0a ldr r3, [pc, #40] ; (2000e2b4 ) -2000e28c: 2208 movs r2, #8 -2000e28e: e005 b.n 2000e29c -2000e290: 6808 ldr r0, [r1, #0] -2000e292: 4202 tst r2, r0 -2000e294: d105 bne.n 2000e2a2 -2000e296: 3b02 subs r3, #2 -2000e298: 2b00 cmp r3, #0 -2000e29a: d002 beq.n 2000e2a2 -2000e29c: 6808 ldr r0, [r1, #0] -2000e29e: 4202 tst r2, r0 -2000e2a0: d0f6 beq.n 2000e290 - { - timeout++; - } - - I2C1_CONCLR = I2C_CONCLR_STAC; -2000e2a2: 4b02 ldr r3, [pc, #8] ; (2000e2ac ) -2000e2a4: 2120 movs r1, #32 -2000e2a6: 6019 str r1, [r3, #0] -} -2000e2a8: 4770 bx lr -2000e2aa: 46c0 nop ; (mov r8, r8) -2000e2ac: 400e0018 .word 0x400e0018 -2000e2b0: 400e0000 .word 0x400e0000 -2000e2b4: 00002710 .word 0x00002710 - -2000e2b8 : -/* transmit data byte */ -void i2c0_tx_byte(uint8_t byte) -{ - uint32_t timeout; - - if (I2C0_CONSET & I2C_CONSET_STA) -2000e2b8: 4b0e ldr r3, [pc, #56] ; (2000e2f4 ) -2000e2ba: 2120 movs r1, #32 -2000e2bc: 681a ldr r2, [r3, #0] -2000e2be: 4211 tst r1, r2 -2000e2c0: d001 beq.n 2000e2c6 - { - I2C0_CONCLR = I2C_CONCLR_STAC; -2000e2c2: 4b0d ldr r3, [pc, #52] ; (2000e2f8 ) -2000e2c4: 6019 str r1, [r3, #0] - } - I2C0_DAT = byte; -2000e2c6: 4a0d ldr r2, [pc, #52] ; (2000e2fc ) - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e2c8: 490b ldr r1, [pc, #44] ; (2000e2f8 ) - - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_DAT = byte; -2000e2ca: 6010 str r0, [r2, #0] - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e2cc: 2008 movs r0, #8 -2000e2ce: 6008 str r0, [r1, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e2d0: 4908 ldr r1, [pc, #32] ; (2000e2f4 ) -2000e2d2: 680b ldr r3, [r1, #0] -2000e2d4: 4218 tst r0, r3 -2000e2d6: d10b bne.n 2000e2f0 -2000e2d8: 4b09 ldr r3, [pc, #36] ; (2000e300 ) -2000e2da: 2208 movs r2, #8 -2000e2dc: e005 b.n 2000e2ea -2000e2de: 6808 ldr r0, [r1, #0] -2000e2e0: 4202 tst r2, r0 -2000e2e2: d105 bne.n 2000e2f0 -2000e2e4: 3b02 subs r3, #2 -2000e2e6: 2b00 cmp r3, #0 -2000e2e8: d002 beq.n 2000e2f0 -2000e2ea: 6808 ldr r0, [r1, #0] -2000e2ec: 4202 tst r2, r0 -2000e2ee: d0f6 beq.n 2000e2de - { - timeout++; - } -} -2000e2f0: 4770 bx lr -2000e2f2: 46c0 nop ; (mov r8, r8) -2000e2f4: 400a1000 .word 0x400a1000 -2000e2f8: 400a1018 .word 0x400a1018 -2000e2fc: 400a1008 .word 0x400a1008 -2000e300: 00002710 .word 0x00002710 - -2000e304 : -/* transmit data byte */ -void i2c1_tx_byte(uint8_t byte) -{ - uint32_t timeout; - - if (I2C1_CONSET & I2C_CONSET_STA) -2000e304: 4b0e ldr r3, [pc, #56] ; (2000e340 ) -2000e306: 2120 movs r1, #32 -2000e308: 681a ldr r2, [r3, #0] -2000e30a: 4211 tst r1, r2 -2000e30c: d001 beq.n 2000e312 - { - I2C1_CONCLR = I2C_CONCLR_STAC; -2000e30e: 4b0d ldr r3, [pc, #52] ; (2000e344 ) -2000e310: 6019 str r1, [r3, #0] - } - I2C1_DAT = byte; -2000e312: 4a0d ldr r2, [pc, #52] ; (2000e348 ) - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e314: 490b ldr r1, [pc, #44] ; (2000e344 ) - - if (I2C1_CONSET & I2C_CONSET_STA) - { - I2C1_CONCLR = I2C_CONCLR_STAC; - } - I2C1_DAT = byte; -2000e316: 6010 str r0, [r2, #0] - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e318: 2008 movs r0, #8 -2000e31a: 6008 str r0, [r1, #0] - - timeout = 0; - while( (!(I2C1_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e31c: 4908 ldr r1, [pc, #32] ; (2000e340 ) -2000e31e: 680b ldr r3, [r1, #0] -2000e320: 4218 tst r0, r3 -2000e322: d10b bne.n 2000e33c -2000e324: 4b09 ldr r3, [pc, #36] ; (2000e34c ) -2000e326: 2208 movs r2, #8 -2000e328: e005 b.n 2000e336 -2000e32a: 6808 ldr r0, [r1, #0] -2000e32c: 4202 tst r2, r0 -2000e32e: d105 bne.n 2000e33c -2000e330: 3b02 subs r3, #2 -2000e332: 2b00 cmp r3, #0 -2000e334: d002 beq.n 2000e33c -2000e336: 6808 ldr r0, [r1, #0] -2000e338: 4202 tst r2, r0 -2000e33a: d0f6 beq.n 2000e32a - { - timeout++; - } -} -2000e33c: 4770 bx lr -2000e33e: 46c0 nop ; (mov r8, r8) -2000e340: 400e0000 .word 0x400e0000 -2000e344: 400e0018 .word 0x400e0018 -2000e348: 400e0008 .word 0x400e0008 -2000e34c: 00002710 .word 0x00002710 - -2000e350 : -/* receive data byte */ -uint8_t i2c0_rx_byte(void) -{ - uint32_t timeout; - - if (I2C0_CONSET & I2C_CONSET_STA) -2000e350: 4b0e ldr r3, [pc, #56] ; (2000e38c ) -2000e352: 2020 movs r0, #32 -2000e354: 681a ldr r2, [r3, #0] -2000e356: 4210 tst r0, r2 -2000e358: d001 beq.n 2000e35e - { - I2C0_CONCLR = I2C_CONCLR_STAC; -2000e35a: 490d ldr r1, [pc, #52] ; (2000e390 ) -2000e35c: 6008 str r0, [r1, #0] - } - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e35e: 4a0c ldr r2, [pc, #48] ; (2000e390 ) -2000e360: 2308 movs r3, #8 - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e362: 490a ldr r1, [pc, #40] ; (2000e38c ) - - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e364: 6013 str r3, [r2, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e366: 6808 ldr r0, [r1, #0] -2000e368: 4203 tst r3, r0 -2000e36a: d10b bne.n 2000e384 -2000e36c: 4b09 ldr r3, [pc, #36] ; (2000e394 ) -2000e36e: 2208 movs r2, #8 -2000e370: e005 b.n 2000e37e -2000e372: 6808 ldr r0, [r1, #0] -2000e374: 4202 tst r2, r0 -2000e376: d105 bne.n 2000e384 -2000e378: 3b02 subs r3, #2 -2000e37a: 2b00 cmp r3, #0 -2000e37c: d002 beq.n 2000e384 -2000e37e: 6808 ldr r0, [r1, #0] -2000e380: 4202 tst r2, r0 -2000e382: d0f6 beq.n 2000e372 - { - timeout++; - } - - return I2C0_DAT; -2000e384: 4904 ldr r1, [pc, #16] ; (2000e398 ) -2000e386: 680b ldr r3, [r1, #0] -2000e388: b2d8 uxtb r0, r3 -} -2000e38a: 4770 bx lr -2000e38c: 400a1000 .word 0x400a1000 -2000e390: 400a1018 .word 0x400a1018 -2000e394: 00002710 .word 0x00002710 -2000e398: 400a1008 .word 0x400a1008 - -2000e39c : -/* receive data byte (ack=1 => ACK if ack=0 NACK) */ -uint8_t i2c1_rx_byte(bool ack) -{ - uint32_t timeout; - - if (I2C1_CONSET & I2C_CONSET_STA) -2000e39c: 4b12 ldr r3, [pc, #72] ; (2000e3e8 ) -2000e39e: 2120 movs r1, #32 -2000e3a0: 681a ldr r2, [r3, #0] -2000e3a2: 4211 tst r1, r2 -2000e3a4: d001 beq.n 2000e3aa - { - I2C1_CONCLR = I2C_CONCLR_STAC; -2000e3a6: 4b11 ldr r3, [pc, #68] ; (2000e3ec ) -2000e3a8: 6019 str r1, [r3, #0] - } - - if (ack) - { - I2C1_CONSET = I2C_CONSET_AA; -2000e3aa: 2204 movs r2, #4 - if (I2C1_CONSET & I2C_CONSET_STA) - { - I2C1_CONCLR = I2C_CONCLR_STAC; - } - - if (ack) -2000e3ac: 2800 cmp r0, #0 -2000e3ae: d018 beq.n 2000e3e2 - { - I2C1_CONSET = I2C_CONSET_AA; -2000e3b0: 490d ldr r1, [pc, #52] ; (2000e3e8 ) -2000e3b2: 600a str r2, [r1, #0] - } else - { - I2C1_CONCLR = I2C_CONCLR_AAC; - } - - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e3b4: 4a0d ldr r2, [pc, #52] ; (2000e3ec ) -2000e3b6: 2308 movs r3, #8 - timeout = 0; - while( (!(I2C1_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e3b8: 490b ldr r1, [pc, #44] ; (2000e3e8 ) - } else - { - I2C1_CONCLR = I2C_CONCLR_AAC; - } - - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e3ba: 6013 str r3, [r2, #0] - timeout = 0; - while( (!(I2C1_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) -2000e3bc: 6808 ldr r0, [r1, #0] -2000e3be: 4203 tst r3, r0 -2000e3c0: d10b bne.n 2000e3da -2000e3c2: 4b0b ldr r3, [pc, #44] ; (2000e3f0 ) -2000e3c4: 2208 movs r2, #8 -2000e3c6: e005 b.n 2000e3d4 -2000e3c8: 6808 ldr r0, [r1, #0] -2000e3ca: 4202 tst r2, r0 -2000e3cc: d105 bne.n 2000e3da -2000e3ce: 3b02 subs r3, #2 -2000e3d0: 2b00 cmp r3, #0 -2000e3d2: d002 beq.n 2000e3da -2000e3d4: 6808 ldr r0, [r1, #0] -2000e3d6: 4202 tst r2, r0 -2000e3d8: d0f6 beq.n 2000e3c8 - { - timeout++; - } - - return I2C1_DAT; -2000e3da: 4906 ldr r1, [pc, #24] ; (2000e3f4 ) -2000e3dc: 680b ldr r3, [r1, #0] -2000e3de: b2d8 uxtb r0, r3 -} -2000e3e0: 4770 bx lr - if (ack) - { - I2C1_CONSET = I2C_CONSET_AA; - } else - { - I2C1_CONCLR = I2C_CONCLR_AAC; -2000e3e2: 4802 ldr r0, [pc, #8] ; (2000e3ec ) -2000e3e4: 6002 str r2, [r0, #0] -2000e3e6: e7e5 b.n 2000e3b4 -2000e3e8: 400e0000 .word 0x400e0000 -2000e3ec: 400e0018 .word 0x400e0018 -2000e3f0: 00002710 .word 0x00002710 -2000e3f4: 400e0008 .word 0x400e0008 - -2000e3f8 : -} - -/* transmit stop bit */ -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { -2000e3f8: 4b06 ldr r3, [pc, #24] ; (2000e414 ) -2000e3fa: 2020 movs r0, #32 -2000e3fc: 681a ldr r2, [r3, #0] -2000e3fe: 4210 tst r0, r2 -2000e400: d001 beq.n 2000e406 - I2C0_CONCLR = I2C_CONCLR_STAC; -2000e402: 4905 ldr r1, [pc, #20] ; (2000e418 ) -2000e404: 6008 str r0, [r1, #0] - } - I2C0_CONSET = I2C_CONSET_STO; -2000e406: 4b03 ldr r3, [pc, #12] ; (2000e414 ) - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e408: 4903 ldr r1, [pc, #12] ; (2000e418 ) -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONSET = I2C_CONSET_STO; -2000e40a: 2210 movs r2, #16 - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e40c: 2008 movs r0, #8 -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONSET = I2C_CONSET_STO; -2000e40e: 601a str r2, [r3, #0] - I2C0_CONCLR = I2C_CONCLR_SIC; -2000e410: 6008 str r0, [r1, #0] -} -2000e412: 4770 bx lr -2000e414: 400a1000 .word 0x400a1000 -2000e418: 400a1018 .word 0x400a1018 - -2000e41c : - -/* transmit stop bit */ -void i2c1_stop(void) -{ - if (I2C1_CONSET & I2C_CONSET_STA) { -2000e41c: 4b06 ldr r3, [pc, #24] ; (2000e438 ) -2000e41e: 2020 movs r0, #32 -2000e420: 681a ldr r2, [r3, #0] -2000e422: 4210 tst r0, r2 -2000e424: d001 beq.n 2000e42a - I2C1_CONCLR = I2C_CONCLR_STAC; -2000e426: 4905 ldr r1, [pc, #20] ; (2000e43c ) -2000e428: 6008 str r0, [r1, #0] - } - I2C1_CONSET = I2C_CONSET_STO; -2000e42a: 4b03 ldr r3, [pc, #12] ; (2000e438 ) - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e42c: 4903 ldr r1, [pc, #12] ; (2000e43c ) -void i2c1_stop(void) -{ - if (I2C1_CONSET & I2C_CONSET_STA) { - I2C1_CONCLR = I2C_CONCLR_STAC; - } - I2C1_CONSET = I2C_CONSET_STO; -2000e42e: 2210 movs r2, #16 - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e430: 2008 movs r0, #8 -void i2c1_stop(void) -{ - if (I2C1_CONSET & I2C_CONSET_STA) { - I2C1_CONCLR = I2C_CONCLR_STAC; - } - I2C1_CONSET = I2C_CONSET_STO; -2000e432: 601a str r2, [r3, #0] - I2C1_CONCLR = I2C_CONCLR_SIC; -2000e434: 6008 str r0, [r1, #0] -} -2000e436: 4770 bx lr -2000e438: 400e0000 .word 0x400e0000 -2000e43c: 400e0018 .word 0x400e0018 - -2000e440 : - uint8_t serial_clock_rate, - uint8_t clk_prescale, - ssp_mode_t mode, - ssp_master_slave_t master_slave, - ssp_slave_option_t slave_option) -{ -2000e440: b5f0 push {r4, r5, r6, r7, lr} -2000e442: 465f mov r7, fp -2000e444: 464d mov r5, r9 -2000e446: 4656 mov r6, sl -2000e448: 4644 mov r4, r8 -2000e44a: b4f0 push {r4, r5, r6, r7} -2000e44c: b083 sub sp, #12 -2000e44e: 469c mov ip, r3 -2000e450: ab0c add r3, sp, #48 ; 0x30 -2000e452: 781c ldrb r4, [r3, #0] -2000e454: ad0d add r5, sp, #52 ; 0x34 -2000e456: 782e ldrb r6, [r5, #0] -2000e458: af0e add r7, sp, #56 ; 0x38 -2000e45a: 46a3 mov fp, r4 -2000e45c: ac10 add r4, sp, #64 ; 0x40 -2000e45e: 46b1 mov r9, r6 -2000e460: 783e ldrb r6, [r7, #0] -2000e462: 7827 ldrb r7, [r4, #0] -2000e464: ab0f add r3, sp, #60 ; 0x3c -2000e466: 781d ldrb r5, [r3, #0] -2000e468: 9701 str r7, [sp, #4] - uint32_t clock; - - if (ssp_num == SSP0_NUM) - { - ssp_port = SSP0; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_CLK_SEL(CGU_SRC_PLL1) -2000e46a: 4b1a ldr r3, [pc, #104] ; (2000e4d4 ) - ssp_slave_option_t slave_option) -{ - uint32_t ssp_port; - uint32_t clock; - - if (ssp_num == SSP0_NUM) -2000e46c: 2800 cmp r0, #0 -2000e46e: d024 beq.n 2000e4ba - /* use PLL1 as clock source for SSP0 */ - } else - { - ssp_port = SSP1; - /* use PLL1 as clock source for SSP1 */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_CLK_SEL(CGU_SRC_PLL1) -2000e470: 4819 ldr r0, [pc, #100] ; (2000e4d8 ) - | CGU_BASE_SSP1_CLK_AUTOBLOCK; - CCU1_CLK_M4_SSP1_CFG |= 1; /* Enable SSP1 Clock */ -2000e472: 4f1a ldr r7, [pc, #104] ; (2000e4dc ) - /* use PLL1 as clock source for SSP0 */ - } else - { - ssp_port = SSP1; - /* use PLL1 as clock source for SSP1 */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_CLK_SEL(CGU_SRC_PLL1) -2000e474: 6003 str r3, [r0, #0] - | CGU_BASE_SSP1_CLK_AUTOBLOCK; - CCU1_CLK_M4_SSP1_CFG |= 1; /* Enable SSP1 Clock */ -2000e476: 683c ldr r4, [r7, #0] -2000e478: 2301 movs r3, #1 -2000e47a: 4323 orrs r3, r4 -2000e47c: 4c18 ldr r4, [pc, #96] ; (2000e4e0 ) -2000e47e: 603b str r3, [r7, #0] -2000e480: 4818 ldr r0, [pc, #96] ; (2000e4e4 ) -2000e482: 4f19 ldr r7, [pc, #100] ; (2000e4e8 ) -2000e484: 46a0 mov r8, r4 - } - - /* Disable SSP before to configure it */ - SSP_CR1(ssp_port) = 0x0; -2000e486: 2300 movs r3, #0 -2000e488: 6003 str r3, [r0, #0] - - /* Configure SSP */ - clock = serial_clock_rate; - SSP_CPSR(ssp_port) = clk_prescale; -2000e48a: 4644 mov r4, r8 -2000e48c: 464b mov r3, r9 -2000e48e: 6023 str r3, [r4, #0] - SSP_CR0(ssp_port) = - (data_size | frame_format | cpol_cpha_format | (clock<<8)); -2000e490: 4311 orrs r1, r2 -2000e492: 465b mov r3, fp -2000e494: 4662 mov r2, ip -2000e496: 021c lsls r4, r3, #8 -2000e498: 4311 orrs r1, r2 -2000e49a: 4321 orrs r1, r4 - SSP_CR1(ssp_port) = 0x0; - - /* Configure SSP */ - clock = serial_clock_rate; - SSP_CPSR(ssp_port) = clk_prescale; - SSP_CR0(ssp_port) = -2000e49c: 6039 str r1, [r7, #0] - (data_size | frame_format | cpol_cpha_format | (clock<<8)); - - /* Enable SSP */ - SSP_CR1(ssp_port) = (SSP_ENABLE | mode | master_slave | slave_option); -2000e49e: 2102 movs r1, #2 -2000e4a0: 4331 orrs r1, r6 -2000e4a2: 9e01 ldr r6, [sp, #4] -2000e4a4: 4329 orrs r1, r5 -2000e4a6: 4331 orrs r1, r6 -2000e4a8: b2cd uxtb r5, r1 -2000e4aa: 6005 str r5, [r0, #0] -} -2000e4ac: b003 add sp, #12 -2000e4ae: bc3c pop {r2, r3, r4, r5} -2000e4b0: 4690 mov r8, r2 -2000e4b2: 4699 mov r9, r3 -2000e4b4: 46a2 mov sl, r4 -2000e4b6: 46ab mov fp, r5 -2000e4b8: bdf0 pop {r4, r5, r6, r7, pc} - uint32_t clock; - - if (ssp_num == SSP0_NUM) - { - ssp_port = SSP0; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_CLK_SEL(CGU_SRC_PLL1) -2000e4ba: 4f0c ldr r7, [pc, #48] ; (2000e4ec ) - | CGU_BASE_SSP0_CLK_AUTOBLOCK; - CCU1_CLK_M4_SSP0_CFG |= 1; /* Enable SSP0 Clock */ -2000e4bc: 480c ldr r0, [pc, #48] ; (2000e4f0 ) - uint32_t clock; - - if (ssp_num == SSP0_NUM) - { - ssp_port = SSP0; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_CLK_SEL(CGU_SRC_PLL1) -2000e4be: 603b str r3, [r7, #0] - | CGU_BASE_SSP0_CLK_AUTOBLOCK; - CCU1_CLK_M4_SSP0_CFG |= 1; /* Enable SSP0 Clock */ -2000e4c0: 6803 ldr r3, [r0, #0] -2000e4c2: 2701 movs r7, #1 -2000e4c4: 431f orrs r7, r3 -2000e4c6: 6007 str r7, [r0, #0] -2000e4c8: 480a ldr r0, [pc, #40] ; (2000e4f4 ) -2000e4ca: 4f0b ldr r7, [pc, #44] ; (2000e4f8 ) -2000e4cc: 4680 mov r8, r0 -2000e4ce: 480b ldr r0, [pc, #44] ; (2000e4fc ) -2000e4d0: e7d9 b.n 2000e486 -2000e4d2: 46c0 nop ; (mov r8, r8) -2000e4d4: 09000800 .word 0x09000800 -2000e4d8: 40050098 .word 0x40050098 -2000e4dc: 40051628 .word 0x40051628 -2000e4e0: 400c5010 .word 0x400c5010 -2000e4e4: 400c5004 .word 0x400c5004 -2000e4e8: 400c5000 .word 0x400c5000 -2000e4ec: 40050094 .word 0x40050094 -2000e4f0: 40051518 .word 0x40051518 -2000e4f4: 40083010 .word 0x40083010 -2000e4f8: 40083000 .word 0x40083000 -2000e4fc: 40083004 .word 0x40083004 - -2000e500 : - while ((SSP_SR(ssp_port) & SSP_SR_BSY)); -} - -/* This Function Wait Data TX Ready, and Write Data to SSP */ -uint16_t ssp_transfer(ssp_num_t ssp_num, uint16_t data) -{ -2000e500: b530 push {r4, r5, lr} - uint32_t ssp_port; - - if (ssp_num == SSP0_NUM) { -2000e502: 2800 cmp r0, #0 -2000e504: d116 bne.n 2000e534 -2000e506: 4d0d ldr r5, [pc, #52] ; (2000e53c ) -2000e508: 4b0d ldr r3, [pc, #52] ; (2000e540 ) - } else { - ssp_port = SSP1; - } - - /* Wait Until FIFO not full */ - while ((SSP_SR(ssp_port) & SSP_SR_TNF) == 0); -2000e50a: 2402 movs r4, #2 -2000e50c: 681a ldr r2, [r3, #0] -2000e50e: 4214 tst r4, r2 -2000e510: d0fc beq.n 2000e50c - - SSP_DR(ssp_port) = data; -2000e512: 6029 str r1, [r5, #0] - -static void ssp_wait_until_not_busy(ssp_num_t ssp_num) -{ - uint32_t ssp_port; - - if (ssp_num == SSP0_NUM) { -2000e514: 2800 cmp r0, #0 -2000e516: d10b bne.n 2000e530 -2000e518: 4809 ldr r0, [pc, #36] ; (2000e540 ) - ssp_port = SSP0; - } else { - ssp_port = SSP1; - } - - while ((SSP_SR(ssp_port) & SSP_SR_BSY)); -2000e51a: 2110 movs r1, #16 -2000e51c: 6804 ldr r4, [r0, #0] -2000e51e: 4221 tst r1, r4 -2000e520: d1fc bne.n 2000e51c - * example... - */ - ssp_wait_until_not_busy(ssp_num); - - /* Wait Until Data Received (Rx FIFO not Empty) */ - while ((SSP_SR(ssp_port) & SSP_SR_RNE) == 0); -2000e522: 2004 movs r0, #4 -2000e524: 681a ldr r2, [r3, #0] -2000e526: 4210 tst r0, r2 -2000e528: d0fc beq.n 2000e524 - - return SSP_DR(ssp_port); -2000e52a: 682d ldr r5, [r5, #0] -2000e52c: b2a8 uxth r0, r5 -} -2000e52e: bd30 pop {r4, r5, pc} - -static void ssp_wait_until_not_busy(ssp_num_t ssp_num) -{ - uint32_t ssp_port; - - if (ssp_num == SSP0_NUM) { -2000e530: 4804 ldr r0, [pc, #16] ; (2000e544 ) -2000e532: e7f2 b.n 2000e51a -/* This Function Wait Data TX Ready, and Write Data to SSP */ -uint16_t ssp_transfer(ssp_num_t ssp_num, uint16_t data) -{ - uint32_t ssp_port; - - if (ssp_num == SSP0_NUM) { -2000e534: 4d04 ldr r5, [pc, #16] ; (2000e548 ) -2000e536: 4b03 ldr r3, [pc, #12] ; (2000e544 ) -2000e538: e7e7 b.n 2000e50a -2000e53a: 46c0 nop ; (mov r8, r8) -2000e53c: 40083008 .word 0x40083008 -2000e540: 4008300c .word 0x4008300c -2000e544: 400c500c .word 0x400c500c -2000e548: 400c5008 .word 0x400c5008 - -2000e54c : - } - -} - -void blocking_handler(void) -{ -2000e54c: e7fe b.n 2000e54c -2000e54e: 46c0 nop ; (mov r8, r8) - -2000e550 : -} - -void null_handler(void) -{ - /* Do nothing. */ -} -2000e550: 4770 bx lr -2000e552: 46c0 nop ; (mov r8, r8) - -2000e554 : -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -2000e554: 4a4f ldr r2, [pc, #316] ; (2000e694 ) -2000e556: 4b50 ldr r3, [pc, #320] ; (2000e698 ) -2000e558: 429a cmp r2, r3 -2000e55a: d21f bcs.n 2000e59c - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -2000e55c: 1cdf adds r7, r3, #3 -2000e55e: 1d14 adds r4, r2, #4 -2000e560: 1b38 subs r0, r7, r4 -2000e562: 0881 lsrs r1, r0, #2 -2000e564: 3101 adds r1, #1 -2000e566: 008f lsls r7, r1, #2 -2000e568: 4b4c ldr r3, [pc, #304] ; (2000e69c ) -2000e56a: 1f38 subs r0, r7, #4 -2000e56c: 0741 lsls r1, r0, #29 -2000e56e: 18fe adds r6, r7, r3 -2000e570: 0fc8 lsrs r0, r1, #31 - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - *dest = *src; -2000e572: cb02 ldmia r3!, {r1} -2000e574: 6011 str r1, [r2, #0] -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -2000e576: 42b3 cmp r3, r6 -2000e578: d00f beq.n 2000e59a -2000e57a: 2800 cmp r0, #0 -2000e57c: d003 beq.n 2000e586 - dest < &_edata; - src++, dest++) { - *dest = *src; -2000e57e: cb01 ldmia r3!, {r0} -2000e580: c401 stmia r4!, {r0} -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -2000e582: 42b3 cmp r3, r6 -2000e584: d009 beq.n 2000e59a - dest < &_edata; - src++, dest++) { - *dest = *src; -2000e586: 1c18 adds r0, r3, #0 -2000e588: c820 ldmia r0!, {r5} -2000e58a: 1c21 adds r1, r4, #0 -2000e58c: c120 stmia r1!, {r5} -2000e58e: 685b ldr r3, [r3, #4] -2000e590: 6063 str r3, [r4, #4] - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { -2000e592: 1d03 adds r3, r0, #4 -2000e594: 1d0c adds r4, r1, #4 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -2000e596: 42b3 cmp r3, r6 -2000e598: d1f5 bne.n 2000e586 -2000e59a: 19d2 adds r2, r2, r7 - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -2000e59c: 4840 ldr r0, [pc, #256] ; (2000e6a0 ) -2000e59e: 4282 cmp r2, r0 -2000e5a0: d216 bcs.n 2000e5d0 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -2000e5a2: 1cc4 adds r4, r0, #3 -2000e5a4: 1d13 adds r3, r2, #4 -2000e5a6: 1ae5 subs r5, r4, r3 -2000e5a8: 08a9 lsrs r1, r5, #2 -2000e5aa: 3101 adds r1, #1 -2000e5ac: 0088 lsls r0, r1, #2 -2000e5ae: 1810 adds r0, r2, r0 -2000e5b0: 1ac4 subs r4, r0, r3 - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - *dest++ = 0; -2000e5b2: 2100 movs r1, #0 -2000e5b4: 0765 lsls r5, r4, #29 -2000e5b6: d508 bpl.n 2000e5ca -2000e5b8: 6011 str r1, [r2, #0] -2000e5ba: 1c1a adds r2, r3, #0 -2000e5bc: 3304 adds r3, #4 -2000e5be: 6011 str r1, [r2, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -2000e5c0: 4283 cmp r3, r0 -2000e5c2: d005 beq.n 2000e5d0 - *dest++ = 0; -2000e5c4: 1d1a adds r2, r3, #4 -2000e5c6: 6019 str r1, [r3, #0] -2000e5c8: 1d13 adds r3, r2, #4 -2000e5ca: 6011 str r1, [r2, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -2000e5cc: 4283 cmp r3, r0 -2000e5ce: d1f9 bne.n 2000e5c4 - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -2000e5d0: 4834 ldr r0, [pc, #208] ; (2000e6a4 ) -2000e5d2: 4935 ldr r1, [pc, #212] ; (2000e6a8 ) -2000e5d4: 4288 cmp r0, r1 -2000e5d6: d21b bcs.n 2000e610 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -2000e5d8: 3103 adds r1, #3 -2000e5da: 1d06 adds r6, r0, #4 -2000e5dc: 1b8f subs r7, r1, r6 -2000e5de: 08bd lsrs r5, r7, #2 -2000e5e0: 2401 movs r4, #1 -2000e5e2: 1c6f adds r7, r5, #1 -2000e5e4: 402c ands r4, r5 - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); -2000e5e6: 6802 ldr r2, [r0, #0] -2000e5e8: 2501 movs r5, #1 -2000e5ea: 4790 blx r2 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -2000e5ec: 42bd cmp r5, r7 -2000e5ee: d00f beq.n 2000e610 -2000e5f0: 2c00 cmp r4, #0 -2000e5f2: d004 beq.n 2000e5fe - (*fp)(); -2000e5f4: ce08 ldmia r6!, {r3} -2000e5f6: 2502 movs r5, #2 -2000e5f8: 4798 blx r3 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -2000e5fa: 42bd cmp r5, r7 -2000e5fc: d008 beq.n 2000e610 - (*fp)(); -2000e5fe: 1c34 adds r4, r6, #0 -2000e600: cc01 ldmia r4!, {r0} -2000e602: 4780 blx r0 -2000e604: 3502 adds r5, #2 -2000e606: 6876 ldr r6, [r6, #4] -2000e608: 47b0 blx r6 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -2000e60a: 1d26 adds r6, r4, #4 -2000e60c: 42bd cmp r5, r7 -2000e60e: d1f6 bne.n 2000e5fe - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -2000e610: 4b26 ldr r3, [pc, #152] ; (2000e6ac ) -2000e612: 4927 ldr r1, [pc, #156] ; (2000e6b0 ) -2000e614: 428b cmp r3, r1 -2000e616: d21b bcs.n 2000e650 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -2000e618: 3103 adds r1, #3 -2000e61a: 1d1e adds r6, r3, #4 -2000e61c: 1b8f subs r7, r1, r6 -2000e61e: 08bd lsrs r5, r7, #2 -2000e620: 2401 movs r4, #1 -2000e622: 1c6f adds r7, r5, #1 -2000e624: 402c ands r4, r5 - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - (*fp)(); -2000e626: 681a ldr r2, [r3, #0] -2000e628: 2501 movs r5, #1 -2000e62a: 4790 blx r2 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -2000e62c: 42bd cmp r5, r7 -2000e62e: d00f beq.n 2000e650 -2000e630: 2c00 cmp r4, #0 -2000e632: d004 beq.n 2000e63e - (*fp)(); -2000e634: ce01 ldmia r6!, {r0} -2000e636: 2502 movs r5, #2 -2000e638: 4780 blx r0 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -2000e63a: 42bd cmp r5, r7 -2000e63c: d008 beq.n 2000e650 - (*fp)(); -2000e63e: 1c34 adds r4, r6, #0 -2000e640: cc08 ldmia r4!, {r3} -2000e642: 4798 blx r3 -2000e644: 3502 adds r5, #2 -2000e646: 6876 ldr r6, [r6, #4] -2000e648: 47b0 blx r6 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -2000e64a: 1d26 adds r6, r4, #4 -2000e64c: 42bd cmp r5, r7 -2000e64e: d1f6 bne.n 2000e63e - - /* might be provided by platform specific vector.c */ - pre_main(); - - /* Call the application's entry point. */ - main(); -2000e650: f7fd fdc8 bl 2000c1e4
- - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -2000e654: 4817 ldr r0, [pc, #92] ; (2000e6b4 ) -2000e656: 4918 ldr r1, [pc, #96] ; (2000e6b8 ) -2000e658: 4288 cmp r0, r1 -2000e65a: d21b bcs.n 2000e694 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -2000e65c: 3103 adds r1, #3 -2000e65e: 1d06 adds r6, r0, #4 -2000e660: 1b8f subs r7, r1, r6 -2000e662: 08bd lsrs r5, r7, #2 -2000e664: 2401 movs r4, #1 -2000e666: 1c6f adds r7, r5, #1 -2000e668: 402c ands r4, r5 - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - (*fp)(); -2000e66a: 6802 ldr r2, [r0, #0] -2000e66c: 2501 movs r5, #1 -2000e66e: 4790 blx r2 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -2000e670: 42bd cmp r5, r7 -2000e672: d00f beq.n 2000e694 -2000e674: 2c00 cmp r4, #0 -2000e676: d004 beq.n 2000e682 - (*fp)(); -2000e678: ce08 ldmia r6!, {r3} -2000e67a: 2502 movs r5, #2 -2000e67c: 4798 blx r3 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -2000e67e: 42bd cmp r5, r7 -2000e680: d008 beq.n 2000e694 - (*fp)(); -2000e682: 1c34 adds r4, r6, #0 -2000e684: cc01 ldmia r4!, {r0} -2000e686: 4780 blx r0 -2000e688: 3502 adds r5, #2 -2000e68a: 6876 ldr r6, [r6, #4] -2000e68c: 47b0 blx r6 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -2000e68e: 1d26 adds r6, r4, #4 -2000e690: 42bd cmp r5, r7 -2000e692: d1f6 bne.n 2000e682 -2000e694: 2000ef30 .word 0x2000ef30 -2000e698: 2000ef30 .word 0x2000ef30 -2000e69c: 2000ec6c .word 0x2000ec6c -2000e6a0: 2000fb04 .word 0x2000fb04 -2000e6a4: 2000ec6c .word 0x2000ec6c -2000e6a8: 2000ec6c .word 0x2000ec6c -2000e6ac: 2000ec6c .word 0x2000ec6c -2000e6b0: 2000ec6c .word 0x2000ec6c -2000e6b4: 2000ec6c .word 0x2000ec6c -2000e6b8: 2000ec6c .word 0x2000ec6c - -2000e6bc : - * @param[in] irqn Unsigned int8. Interrupt number @ref nvic_stm32f1_userint - */ - -void nvic_enable_irq(uint8_t irqn) -{ - NVIC_ISER(irqn / 32) = (1 << (irqn % 32)); -2000e6bc: 0943 lsrs r3, r0, #5 -2000e6be: 4a04 ldr r2, [pc, #16] ; (2000e6d0 ) -2000e6c0: 0099 lsls r1, r3, #2 -2000e6c2: 188b adds r3, r1, r2 -2000e6c4: 211f movs r1, #31 -2000e6c6: 4008 ands r0, r1 -2000e6c8: 2201 movs r2, #1 -2000e6ca: 4082 lsls r2, r0 -2000e6cc: 601a str r2, [r3, #0] -} -2000e6ce: 4770 bx lr -2000e6d0: e000e100 .word 0xe000e100 - -2000e6d4 : -void nvic_set_priority(uint8_t irqn, uint8_t priority) -{ - /* code from lpc43xx/nvic.c -- this is quite a hack and alludes to the - * negative interrupt numbers assigned to the system interrupts. better - * handling would mean signed integers. */ - if (irqn >= NVIC_IRQ_COUNT) { -2000e6d4: 281f cmp r0, #31 -2000e6d6: d803 bhi.n 2000e6e0 - /* Cortex-M system interrupts */ - SCS_SHPR((irqn & 0xF) - 4) = priority; - } else { - /* Device specific interrupts */ - NVIC_IPR(irqn) = priority; -2000e6d8: 4b04 ldr r3, [pc, #16] ; (2000e6ec ) -2000e6da: 18c0 adds r0, r0, r3 -2000e6dc: 7001 strb r1, [r0, #0] - } -} -2000e6de: 4770 bx lr - /* code from lpc43xx/nvic.c -- this is quite a hack and alludes to the - * negative interrupt numbers assigned to the system interrupts. better - * handling would mean signed integers. */ - if (irqn >= NVIC_IRQ_COUNT) { - /* Cortex-M system interrupts */ - SCS_SHPR((irqn & 0xF) - 4) = priority; -2000e6e0: 220f movs r2, #15 -2000e6e2: 4b03 ldr r3, [pc, #12] ; (2000e6f0 ) -2000e6e4: 4010 ands r0, r2 -2000e6e6: 18c0 adds r0, r0, r3 -2000e6e8: 7001 strb r1, [r0, #0] -2000e6ea: e7f8 b.n 2000e6de -2000e6ec: e000e400 .word 0xe000e400 -2000e6f0: e000ed14 .word 0xe000ed14 - -2000e6f4 <__gnu_thumb1_case_uqi>: -2000e6f4: b402 push {r1} -2000e6f6: 4671 mov r1, lr -2000e6f8: 0849 lsrs r1, r1, #1 -2000e6fa: 0049 lsls r1, r1, #1 -2000e6fc: 5c09 ldrb r1, [r1, r0] -2000e6fe: 0049 lsls r1, r1, #1 -2000e700: 448e add lr, r1 -2000e702: bc02 pop {r1} -2000e704: 4770 bx lr -2000e706: 46c0 nop ; (mov r8, r8) - -2000e708 <__aeabi_uidiv>: -2000e708: 2900 cmp r1, #0 -2000e70a: d034 beq.n 2000e776 <.udivsi3_skip_div0_test+0x6a> - -2000e70c <.udivsi3_skip_div0_test>: -2000e70c: 2301 movs r3, #1 -2000e70e: 2200 movs r2, #0 -2000e710: b410 push {r4} -2000e712: 4288 cmp r0, r1 -2000e714: d32c bcc.n 2000e770 <.udivsi3_skip_div0_test+0x64> -2000e716: 2401 movs r4, #1 -2000e718: 0724 lsls r4, r4, #28 -2000e71a: 42a1 cmp r1, r4 -2000e71c: d204 bcs.n 2000e728 <.udivsi3_skip_div0_test+0x1c> -2000e71e: 4281 cmp r1, r0 -2000e720: d202 bcs.n 2000e728 <.udivsi3_skip_div0_test+0x1c> -2000e722: 0109 lsls r1, r1, #4 -2000e724: 011b lsls r3, r3, #4 -2000e726: e7f8 b.n 2000e71a <.udivsi3_skip_div0_test+0xe> -2000e728: 00e4 lsls r4, r4, #3 -2000e72a: 42a1 cmp r1, r4 -2000e72c: d204 bcs.n 2000e738 <.udivsi3_skip_div0_test+0x2c> -2000e72e: 4281 cmp r1, r0 -2000e730: d202 bcs.n 2000e738 <.udivsi3_skip_div0_test+0x2c> -2000e732: 0049 lsls r1, r1, #1 -2000e734: 005b lsls r3, r3, #1 -2000e736: e7f8 b.n 2000e72a <.udivsi3_skip_div0_test+0x1e> -2000e738: 4288 cmp r0, r1 -2000e73a: d301 bcc.n 2000e740 <.udivsi3_skip_div0_test+0x34> -2000e73c: 1a40 subs r0, r0, r1 -2000e73e: 431a orrs r2, r3 -2000e740: 084c lsrs r4, r1, #1 -2000e742: 42a0 cmp r0, r4 -2000e744: d302 bcc.n 2000e74c <.udivsi3_skip_div0_test+0x40> -2000e746: 1b00 subs r0, r0, r4 -2000e748: 085c lsrs r4, r3, #1 -2000e74a: 4322 orrs r2, r4 -2000e74c: 088c lsrs r4, r1, #2 -2000e74e: 42a0 cmp r0, r4 -2000e750: d302 bcc.n 2000e758 <.udivsi3_skip_div0_test+0x4c> -2000e752: 1b00 subs r0, r0, r4 -2000e754: 089c lsrs r4, r3, #2 -2000e756: 4322 orrs r2, r4 -2000e758: 08cc lsrs r4, r1, #3 -2000e75a: 42a0 cmp r0, r4 -2000e75c: d302 bcc.n 2000e764 <.udivsi3_skip_div0_test+0x58> -2000e75e: 1b00 subs r0, r0, r4 -2000e760: 08dc lsrs r4, r3, #3 -2000e762: 4322 orrs r2, r4 -2000e764: 2800 cmp r0, #0 -2000e766: d003 beq.n 2000e770 <.udivsi3_skip_div0_test+0x64> -2000e768: 091b lsrs r3, r3, #4 -2000e76a: d001 beq.n 2000e770 <.udivsi3_skip_div0_test+0x64> -2000e76c: 0909 lsrs r1, r1, #4 -2000e76e: e7e3 b.n 2000e738 <.udivsi3_skip_div0_test+0x2c> -2000e770: 1c10 adds r0, r2, #0 -2000e772: bc10 pop {r4} -2000e774: 4770 bx lr -2000e776: 2800 cmp r0, #0 -2000e778: d001 beq.n 2000e77e <.udivsi3_skip_div0_test+0x72> -2000e77a: 2000 movs r0, #0 -2000e77c: 43c0 mvns r0, r0 -2000e77e: b407 push {r0, r1, r2} -2000e780: 4802 ldr r0, [pc, #8] ; (2000e78c <.udivsi3_skip_div0_test+0x80>) -2000e782: a102 add r1, pc, #8 ; (adr r1, 2000e78c <.udivsi3_skip_div0_test+0x80>) -2000e784: 1840 adds r0, r0, r1 -2000e786: 9002 str r0, [sp, #8] -2000e788: bd03 pop {r0, r1, pc} -2000e78a: 46c0 nop ; (mov r8, r8) -2000e78c: 00000019 .word 0x00000019 - -2000e790 <__aeabi_uidivmod>: -2000e790: 2900 cmp r1, #0 -2000e792: d0f0 beq.n 2000e776 <.udivsi3_skip_div0_test+0x6a> -2000e794: b503 push {r0, r1, lr} -2000e796: f7ff ffb9 bl 2000e70c <.udivsi3_skip_div0_test> -2000e79a: bc0e pop {r1, r2, r3} -2000e79c: 4342 muls r2, r0 -2000e79e: 1a89 subs r1, r1, r2 -2000e7a0: 4718 bx r3 -2000e7a2: 46c0 nop ; (mov r8, r8) - -2000e7a4 <__aeabi_idiv0>: -2000e7a4: 4770 bx lr -2000e7a6: 46c0 nop ; (mov r8, r8) - -2000e7a8 <__aeabi_lmul>: -2000e7a8: 469c mov ip, r3 -2000e7aa: 0403 lsls r3, r0, #16 -2000e7ac: b5f0 push {r4, r5, r6, r7, lr} -2000e7ae: 0c1b lsrs r3, r3, #16 -2000e7b0: 0417 lsls r7, r2, #16 -2000e7b2: 0c3f lsrs r7, r7, #16 -2000e7b4: 0c15 lsrs r5, r2, #16 -2000e7b6: 1c1e adds r6, r3, #0 -2000e7b8: 1c04 adds r4, r0, #0 -2000e7ba: 0c00 lsrs r0, r0, #16 -2000e7bc: 437e muls r6, r7 -2000e7be: 436b muls r3, r5 -2000e7c0: 4347 muls r7, r0 -2000e7c2: 4345 muls r5, r0 -2000e7c4: 18fb adds r3, r7, r3 -2000e7c6: 0c30 lsrs r0, r6, #16 -2000e7c8: 1818 adds r0, r3, r0 -2000e7ca: 4287 cmp r7, r0 -2000e7cc: d902 bls.n 2000e7d4 <__aeabi_lmul+0x2c> -2000e7ce: 2780 movs r7, #128 ; 0x80 -2000e7d0: 027b lsls r3, r7, #9 -2000e7d2: 18ed adds r5, r5, r3 -2000e7d4: 0c07 lsrs r7, r0, #16 -2000e7d6: 19ed adds r5, r5, r7 -2000e7d8: 4667 mov r7, ip -2000e7da: 437c muls r4, r7 -2000e7dc: 434a muls r2, r1 -2000e7de: 0436 lsls r6, r6, #16 -2000e7e0: 0c33 lsrs r3, r6, #16 -2000e7e2: 18a1 adds r1, r4, r2 -2000e7e4: 0400 lsls r0, r0, #16 -2000e7e6: 1949 adds r1, r1, r5 -2000e7e8: 18c0 adds r0, r0, r3 -2000e7ea: bdf0 pop {r4, r5, r6, r7, pc} - -2000e7ec : -2000e7ec: b5f0 push {r4, r5, r6, r7, lr} -2000e7ee: 464f mov r7, r9 -2000e7f0: 4646 mov r6, r8 -2000e7f2: b4c0 push {r6, r7} -2000e7f4: 2a0f cmp r2, #15 -2000e7f6: d972 bls.n 2000e8de -2000e7f8: 1c0b adds r3, r1, #0 -2000e7fa: 4303 orrs r3, r0 -2000e7fc: 079c lsls r4, r3, #30 -2000e7fe: d000 beq.n 2000e802 -2000e800: e090 b.n 2000e924 -2000e802: 1c17 adds r7, r2, #0 -2000e804: 3f10 subs r7, #16 -2000e806: 093c lsrs r4, r7, #4 -2000e808: 3401 adds r4, #1 -2000e80a: 0127 lsls r7, r4, #4 -2000e80c: 680c ldr r4, [r1, #0] -2000e80e: 1c3b adds r3, r7, #0 -2000e810: 6004 str r4, [r0, #0] -2000e812: 3b10 subs r3, #16 -2000e814: 06de lsls r6, r3, #27 -2000e816: 684b ldr r3, [r1, #4] -2000e818: 19cd adds r5, r1, r7 -2000e81a: 6043 str r3, [r0, #4] -2000e81c: 688c ldr r4, [r1, #8] -2000e81e: 0ff6 lsrs r6, r6, #31 -2000e820: 6084 str r4, [r0, #8] -2000e822: 68cb ldr r3, [r1, #12] -2000e824: 1c04 adds r4, r0, #0 -2000e826: 60c3 str r3, [r0, #12] -2000e828: 1c0b adds r3, r1, #0 -2000e82a: 3310 adds r3, #16 -2000e82c: 3410 adds r4, #16 -2000e82e: 429d cmp r5, r3 -2000e830: d027 beq.n 2000e882 -2000e832: 2e00 cmp r6, #0 -2000e834: d00b beq.n 2000e84e -2000e836: 6819 ldr r1, [r3, #0] -2000e838: 6021 str r1, [r4, #0] -2000e83a: 685e ldr r6, [r3, #4] -2000e83c: 6066 str r6, [r4, #4] -2000e83e: 6899 ldr r1, [r3, #8] -2000e840: 60a1 str r1, [r4, #8] -2000e842: 68de ldr r6, [r3, #12] -2000e844: 3310 adds r3, #16 -2000e846: 60e6 str r6, [r4, #12] -2000e848: 3410 adds r4, #16 -2000e84a: 429d cmp r5, r3 -2000e84c: d019 beq.n 2000e882 -2000e84e: 6819 ldr r1, [r3, #0] -2000e850: 6021 str r1, [r4, #0] -2000e852: 685e ldr r6, [r3, #4] -2000e854: 6066 str r6, [r4, #4] -2000e856: 6899 ldr r1, [r3, #8] -2000e858: 60a1 str r1, [r4, #8] -2000e85a: 68de ldr r6, [r3, #12] -2000e85c: 1c19 adds r1, r3, #0 -2000e85e: 60e6 str r6, [r4, #12] -2000e860: 691b ldr r3, [r3, #16] -2000e862: 1c26 adds r6, r4, #0 -2000e864: 6123 str r3, [r4, #16] -2000e866: 694c ldr r4, [r1, #20] -2000e868: 6174 str r4, [r6, #20] -2000e86a: 698b ldr r3, [r1, #24] -2000e86c: 61b3 str r3, [r6, #24] -2000e86e: 69cc ldr r4, [r1, #28] -2000e870: 3110 adds r1, #16 -2000e872: 61f4 str r4, [r6, #28] -2000e874: 1c0b adds r3, r1, #0 -2000e876: 3610 adds r6, #16 -2000e878: 1c34 adds r4, r6, #0 -2000e87a: 3310 adds r3, #16 -2000e87c: 3410 adds r4, #16 -2000e87e: 429d cmp r5, r3 -2000e880: d1e5 bne.n 2000e84e -2000e882: 183f adds r7, r7, r0 -2000e884: 210f movs r1, #15 -2000e886: 46b8 mov r8, r7 -2000e888: 4011 ands r1, r2 -2000e88a: 2903 cmp r1, #3 -2000e88c: d94d bls.n 2000e92a -2000e88e: 3904 subs r1, #4 -2000e890: 088e lsrs r6, r1, #2 -2000e892: 00b3 lsls r3, r6, #2 -2000e894: 3304 adds r3, #4 -2000e896: 18ec adds r4, r5, r3 -2000e898: 46a4 mov ip, r4 -2000e89a: 3b04 subs r3, #4 -2000e89c: 1c2c adds r4, r5, #0 -2000e89e: 075f lsls r7, r3, #29 -2000e8a0: cc08 ldmia r4!, {r3} -2000e8a2: 4641 mov r1, r8 -2000e8a4: 46b1 mov r9, r6 -2000e8a6: c108 stmia r1!, {r3} -2000e8a8: 0ffe lsrs r6, r7, #31 -2000e8aa: 4564 cmp r4, ip -2000e8ac: d00f beq.n 2000e8ce -2000e8ae: 2e00 cmp r6, #0 -2000e8b0: d003 beq.n 2000e8ba -2000e8b2: cc80 ldmia r4!, {r7} -2000e8b4: c180 stmia r1!, {r7} -2000e8b6: 4564 cmp r4, ip -2000e8b8: d009 beq.n 2000e8ce -2000e8ba: 1c27 adds r7, r4, #0 -2000e8bc: cf08 ldmia r7!, {r3} -2000e8be: 1c0e adds r6, r1, #0 -2000e8c0: c608 stmia r6!, {r3} -2000e8c2: 6864 ldr r4, [r4, #4] -2000e8c4: 604c str r4, [r1, #4] -2000e8c6: 1d3c adds r4, r7, #4 -2000e8c8: 1d31 adds r1, r6, #4 -2000e8ca: 4564 cmp r4, ip -2000e8cc: d1f5 bne.n 2000e8ba -2000e8ce: 4649 mov r1, r9 -2000e8d0: 3101 adds r1, #1 -2000e8d2: 008e lsls r6, r1, #2 -2000e8d4: 2703 movs r7, #3 -2000e8d6: 19ad adds r5, r5, r6 -2000e8d8: 403a ands r2, r7 -2000e8da: 4446 add r6, r8 -2000e8dc: e001 b.n 2000e8e2 -2000e8de: 1c0d adds r5, r1, #0 -2000e8e0: 1c06 adds r6, r0, #0 -2000e8e2: 2a00 cmp r2, #0 -2000e8e4: d01a beq.n 2000e91c -2000e8e6: 782f ldrb r7, [r5, #0] -2000e8e8: 18b2 adds r2, r6, r2 -2000e8ea: 43f3 mvns r3, r6 -2000e8ec: 18d1 adds r1, r2, r3 -2000e8ee: 2401 movs r4, #1 -2000e8f0: 7037 strb r7, [r6, #0] -2000e8f2: 3601 adds r6, #1 -2000e8f4: 400c ands r4, r1 -2000e8f6: 3501 adds r5, #1 -2000e8f8: 4296 cmp r6, r2 -2000e8fa: d00f beq.n 2000e91c -2000e8fc: 2c00 cmp r4, #0 -2000e8fe: d005 beq.n 2000e90c -2000e900: 782b ldrb r3, [r5, #0] -2000e902: 3501 adds r5, #1 -2000e904: 7033 strb r3, [r6, #0] -2000e906: 3601 adds r6, #1 -2000e908: 4296 cmp r6, r2 -2000e90a: d007 beq.n 2000e91c -2000e90c: 7829 ldrb r1, [r5, #0] -2000e90e: 7031 strb r1, [r6, #0] -2000e910: 786c ldrb r4, [r5, #1] -2000e912: 3502 adds r5, #2 -2000e914: 7074 strb r4, [r6, #1] -2000e916: 3602 adds r6, #2 -2000e918: 4296 cmp r6, r2 -2000e91a: d1f7 bne.n 2000e90c -2000e91c: bc0c pop {r2, r3} -2000e91e: 4690 mov r8, r2 -2000e920: 4699 mov r9, r3 -2000e922: bdf0 pop {r4, r5, r6, r7, pc} -2000e924: 1c06 adds r6, r0, #0 -2000e926: 1c0d adds r5, r1, #0 -2000e928: e7dd b.n 2000e8e6 -2000e92a: 1c3e adds r6, r7, #0 -2000e92c: 1c0a adds r2, r1, #0 -2000e92e: e7d8 b.n 2000e8e2 - -2000e930 : -2000e930: 1c03 adds r3, r0, #0 -2000e932: 780a ldrb r2, [r1, #0] -2000e934: 3101 adds r1, #1 -2000e936: 701a strb r2, [r3, #0] -2000e938: 3301 adds r3, #1 -2000e93a: 2a00 cmp r2, #0 -2000e93c: d1f9 bne.n 2000e932 -2000e93e: 4770 bx lr - -2000e940 : -2000e940: 2300 movs r3, #0 -2000e942: 5cc2 ldrb r2, [r0, r3] -2000e944: 3301 adds r3, #1 -2000e946: 2a00 cmp r2, #0 -2000e948: d1fb bne.n 2000e942 -2000e94a: 1e58 subs r0, r3, #1 -2000e94c: 4770 bx lr -2000e94e: 46c0 nop ; (mov r8, r8) - -2000e950 : -2000e950: 7620 2e31 2e30 2d30 6372 3031 342d 672d v1.0.0-rc10-4-g -2000e960: 6138 3735 6435 2d36 6964 7472 2079 3032 8a575d6-dirty 20 -2000e970: 3032 302d 2d35 3730 0000 0000 20-05-07.... - -2000e97c : -2000e97c: dfbd 2000 0000 0000 c305 2000 0000 0000 ... ....... .... - -2000e98c : -2000e98c: ed1f 2000 ed23 2000 ed74 2000 ecd7 2000 ... #.. t.. ... -2000e99c: 0000 0000 .... - -2000e9a0 : -2000e9a0: 3130 3332 3534 3736 3938 4241 4443 4645 0123456789ABCDEF -2000e9b0: 80e0 0060 0e0f 0c0d 0a0b 0809 0607 0405 ..`............. -2000e9c0: 0203 0001 .... - -2000e9c4 : -2000e9c4: 0101 0101 0201 0202 0202 0303 0303 0403 ................ -2000e9d4: 0404 0404 0505 0505 0605 0606 0606 0707 ................ -2000e9e4: 0707 0707 0707 0707 0808 0808 0808 0808 ................ -2000e9f4: 0808 0909 0909 0909 0909 0909 0a0a 0a0a ................ -2000ea04: 0a0a 0a0a 0a0a 0b0b 0b0b 0b0b 0b0b 0b0b ................ -2000ea14: 0b0b 0b0b 0b0b 0b0b 0b0b 0c0c 0c0c 0c0c ................ -2000ea24: 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c ................ -2000ea34: 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c 0c0c ................ -2000ea44: 0c0c 0d0d 0d0d 0d0d 0d0d 0d0d 0d0d 0d0d ................ -2000ea54: 0d0d 0d0d 0d0d 0d0d 0d0d 0d0d 0d0d 0d0d ................ -2000ea64: 0d0d 0d0d 0d0d 0d0d 0d0d 0e0e 0e0e 0e0e ................ -2000ea74: 0e0e 0e0e 0e0e 0e0e 0e0e 0e0e 0e0e 0e0e ................ -2000ea84: 0e0e 0e0e 0e0e 0e0e 0f0f 0f0f 0f0f 0f0f ................ -2000ea94: 0f0f 0f0f 0f0f 0f0f 0f0f 0f0f 0f0f 0f0f ................ -2000eaa4: 0f0f 0f0f 0f0f 1010 1010 1010 1010 1010 ................ -2000eab4: 1010 1010 1010 1010 1010 1010 1010 1010 ................ -2000eac4: 1010 1010 1111 1111 1111 1111 1111 1111 ................ -2000ead4: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eae4: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eaf4: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb04: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb14: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb24: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb34: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb44: 1111 1111 1111 1111 1111 1111 1111 1111 ................ -2000eb54: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000eb64: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000eb74: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000eb84: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000eb94: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000eba4: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000ebb4: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000ebc4: 1212 1212 1212 1212 1212 1212 1212 1212 ................ -2000ebd4: 1212 1212 1212 1212 1212 1313 1313 1313 ................ -2000ebe4: 1313 1313 1313 1313 1313 1313 1313 1313 ................ -2000ebf4: 1313 1313 1313 1313 1313 1313 1313 1313 ................ -2000ec04: 1313 1313 1313 1313 1313 1313 1313 1313 ................ -2000ec14: 1313 1313 1313 1313 ........ - -2000ec1c : -2000ec1c: 0208 08df be02 0208 088b 7b02 0208 0869 ...........{..i. -2000ec2c: 5802 0200 0044 4402 0200 0034 3402 0200 .X..D..D..4..4.. -2000ec3c: 0024 2402 0200 0014 1302 0200 0013 1102 $..$............ -2000ec4c: 0200 0000 0041 4100 0000 0040 4000 0000 ....A..A..@..@. - -2000ec5b : -2000ec5b: 0800 0c04 0a02 0e06 0901 0d05 0b03 0f07 ................ - ... diff --git a/airspy_m0/airspy_m0.map b/airspy_m0/airspy_m0.map deleted file mode 100644 index 4032f35..0000000 --- a/airspy_m0/airspy_m0.map +++ /dev/null @@ -1,2244 +0,0 @@ -Archive member included because of file (symbol) - -../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - airspy_core.o (scu_pinmux) -../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - airspy_m0.o (i2c0_init) -../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - w25q80bv.o (ssp_init) -../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - (reset_handler) -../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - airspy_m0.o (nvic_enable_irq) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_thumb1_case_uqi.o) - usb_standard_request.o (__gnu_thumb1_case_uqi) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - r820t.o (__aeabi_uidiv) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_dvmd_tls.o) - c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) (__aeabi_idiv0) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) - airspy_core.o (__aeabi_ldivmod) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - airspy_core.o (__aeabi_lmul) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) (__gnu_ldivmod_helper) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) (__divdi3) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) (__udivdi3) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_clzsi2.o) - c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) (__clzsi2) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - si5351c.o (memcpy) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - airspy_usb_req.o (strcpy) -c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - airspy_usb_req.o (strlen) - -Allocating common symbols -Common symbol size file - -usb_qh 0x300 usb.o -device_id 0x1 w25q80bv.o -set_sample_r_params - 0x8 airspy_m0.o -vendor_request_handler - 0x70 airspy_usb_req.o -hard_fault_stack_pt - 0x4 fault_handler.o -r820t_read_data 0x20 r820t.o -set_freq_params 0x4 airspy_m0.o -__gnu_lto_v1 0x1 airspy_m0.o -spiflash_buffer 0x100 airspy_usb_req.o -USB_EpStatus 0x2 usb_standard_request.o -sample_rate_conf_no - 0x1 airspy_usb_req.o -usb_endpoint_control_out_transfers - 0x200 usb_endpoint.o - -Discarded input sections - - .text 0x00000000 0x0 airspy_m0.o - .data 0x00000000 0x0 airspy_m0.o - .bss 0x00000000 0x0 airspy_m0.o - .gnu.lto_.jmpfuncs.f192c55c - 0x00000000 0xba airspy_m0.o - .gnu.lto_.inline.f192c55c - 0x00000000 0xbd airspy_m0.o - .gnu.lto_.pureconst.f192c55c - 0x00000000 0x24 airspy_m0.o - .gnu.lto_usb_configuration_changed.part.0.f192c55c - 0x00000000 0x128 airspy_m0.o - .gnu.lto_usb_configuration_changed.f192c55c - 0x00000000 0x179 airspy_m0.o - .gnu.lto_set_samplerate_m4.f192c55c - 0x00000000 0x1f2 airspy_m0.o - .gnu.lto_set_packing_m4.f192c55c - 0x00000000 0x1ee airspy_m0.o - .gnu.lto_ADCHS_start.f192c55c - 0x00000000 0x53f airspy_m0.o - .gnu.lto_ADCHS_stop.f192c55c - 0x00000000 0x2d8 airspy_m0.o - .gnu.lto_m4core_isr.f192c55c - 0x00000000 0x9c airspy_m0.o - .gnu.lto_main.f192c55c - 0x00000000 0x502 airspy_m0.o - .gnu.lto_.cgraph.f192c55c - 0x00000000 0x12f airspy_m0.o - .gnu.lto_.vars.f192c55c - 0x00000000 0x5b airspy_m0.o - .gnu.lto_.refs.f192c55c - 0x00000000 0x4d airspy_m0.o - .gnu.lto_.statics.f192c55c - 0x00000000 0x14 airspy_m0.o - .gnu.lto_.decls.f192c55c - 0x00000000 0x21e2 airspy_m0.o - .gnu.lto_.symtab.f192c55c - 0x00000000 0x64a airspy_m0.o - .gnu.lto_.opts - 0x00000000 0x52 airspy_m0.o - .rodata.usb_bulk_buffer - 0x00000000 0x4 airspy_m0.o - .text 0x00000000 0x0 airspy_rx.o - .data 0x00000000 0x0 airspy_rx.o - .bss 0x00000000 0x0 airspy_rx.o - .gnu.lto_.jmpfuncs.f192a432 - 0x00000000 0x3c airspy_rx.o - .gnu.lto_.inline.f192a432 - 0x00000000 0x58 airspy_rx.o - .gnu.lto_.pureconst.f192a432 - 0x00000000 0x18 airspy_rx.o - .gnu.lto_set_receiver_mode.f192a432 - 0x00000000 0x1b9 airspy_rx.o - .gnu.lto_get_receiver_mode.f192a432 - 0x00000000 0xc7 airspy_rx.o - .gnu.lto_.cgraph.f192a432 - 0x00000000 0x59 airspy_rx.o - .gnu.lto_.vars.f192a432 - 0x00000000 0x22 airspy_rx.o - .gnu.lto_.refs.f192a432 - 0x00000000 0x20 airspy_rx.o - .gnu.lto_.statics.f192a432 - 0x00000000 0x14 airspy_rx.o - .gnu.lto_.decls.f192a432 - 0x00000000 0x9ed airspy_rx.o - .gnu.lto_.symtab.f192a432 - 0x00000000 0x104 airspy_rx.o - .gnu.lto_.opts - 0x00000000 0x52 airspy_rx.o - .text 0x00000000 0x0 airspy_usb_req.o - .data 0x00000000 0x0 airspy_usb_req.o - .bss 0x00000000 0x0 airspy_usb_req.o - .gnu.lto_.jmpfuncs.f192c8ad - 0x00000000 0x1c7 airspy_usb_req.o - .gnu.lto_.inline.f192c8ad - 0x00000000 0x307 airspy_usb_req.o - .gnu.lto_.pureconst.f192c8ad - 0x00000000 0x72 airspy_usb_req.o - .gnu.lto_usb_vendor_request.f192c8ad - 0x00000000 0x28a airspy_usb_req.o - .gnu.lto_usb_vendor_request_reset.f192c8ad - 0x00000000 0x121 airspy_usb_req.o - .gnu.lto_usb_vendor_request_erase_sector_spiflash.part.0.f192c8ad - 0x00000000 0x271 airspy_usb_req.o - .gnu.lto_usb_vendor_request_erase_sector_spiflash.f192c8ad - 0x00000000 0x186 airspy_usb_req.o - .gnu.lto_usb_vendor_request_gpiodir_write_command.part.1.f192c8ad - 0x00000000 0x41d airspy_usb_req.o - .gnu.lto_usb_vendor_request_gpiodir_write_command.f192c8ad - 0x00000000 0x1ac airspy_usb_req.o - .gnu.lto_usb_vendor_request_erase_spiflash.part.2.f192c8ad - 0x00000000 0x16d airspy_usb_req.o - .gnu.lto_usb_vendor_request_erase_spiflash.f192c8ad - 0x00000000 0x125 airspy_usb_req.o - .gnu.lto_usb_vendor_request_get_samplerates_command.part.3.f192c8ad - 0x00000000 0x528 airspy_usb_req.o - .gnu.lto_usb_vendor_request_get_samplerates_command.f192c8ad - 0x00000000 0x1b6 airspy_usb_req.o - .gnu.lto_usb_vendor_request_gpiodir_read_command.part.4.f192c8ad - 0x00000000 0x3fe airspy_usb_req.o - .gnu.lto_usb_vendor_request_gpiodir_read_command.f192c8ad - 0x00000000 0x197 airspy_usb_req.o - .gnu.lto_usb_vendor_request_ms_vendor_command.part.5.f192c8ad - 0x00000000 0x1fb airspy_usb_req.o - .gnu.lto_usb_vendor_request_ms_vendor_command.f192c8ad - 0x00000000 0x2a3 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_board_id.part.6.f192c8ad - 0x00000000 0x1c6 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_board_id.f192c8ad - 0x00000000 0x126 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_rf_bias_command.part.7.f192c8ad - 0x00000000 0x1d2 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_rf_bias_command.f192c8ad - 0x00000000 0x126 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_mixer_agc.part.8.f192c8ad - 0x00000000 0x2d7 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_mixer_agc.f192c8ad - 0x00000000 0x147 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_lna_agc.part.9.f192c8ad - 0x00000000 0x2da airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_lna_agc.f192c8ad - 0x00000000 0x146 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_vga_gain.part.10.f192c8ad - 0x00000000 0x2d7 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_vga_gain.f192c8ad - 0x00000000 0x147 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_mixer_gain.part.11.f192c8ad - 0x00000000 0x2da airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_mixer_gain.f192c8ad - 0x00000000 0x146 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_lna_gain.part.12.f192c8ad - 0x00000000 0x2da airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_lna_gain.f192c8ad - 0x00000000 0x147 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_freq.part.13.f192c8ad - 0x00000000 0x1f1 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_freq.f192c8ad - 0x00000000 0x1b4 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_samplerate.part.14.f192c8ad - 0x00000000 0x7ee airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_samplerate.f192c8ad - 0x00000000 0x1ec airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_packing_command.part.15.f192c8ad - 0x00000000 0x245 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_packing_command.f192c8ad - 0x00000000 0x2ce airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_partid_serialno.part.16.f192c8ad - 0x00000000 0x3cb airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_partid_serialno.f192c8ad - 0x00000000 0x1b9 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_version_string.part.17.f192c8ad - 0x00000000 0x3bd airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_version_string.f192c8ad - 0x00000000 0x176 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_spiflash.part.18.f192c8ad - 0x00000000 0x5c7 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_spiflash.f192c8ad - 0x00000000 0x308 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_spiflash.part.19.f192c8ad - 0x00000000 0x339 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_spiflash.f192c8ad - 0x00000000 0x3a1 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_r820t.part.20.f192c8ad - 0x00000000 0x2f1 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_r820t.f192c8ad - 0x00000000 0x16e airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_r820t.part.21.f192c8ad - 0x00000000 0x2a4 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_r820t.f192c8ad - 0x00000000 0x14e airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_si5351c.part.22.f192c8ad - 0x00000000 0x296 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_si5351c.f192c8ad - 0x00000000 0x16e airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_si5351c.part.23.f192c8ad - 0x00000000 0x243 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_si5351c.f192c8ad - 0x00000000 0x14e airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_receiver_mode.part.24.f192c8ad - 0x00000000 0x217 airspy_usb_req.o - .gnu.lto_usb_vendor_request_set_receiver_mode.f192c8ad - 0x00000000 0x154 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_gpio_command.part.25.f192c8ad - 0x00000000 0x430 airspy_usb_req.o - .gnu.lto_usb_vendor_request_write_gpio_command.f192c8ad - 0x00000000 0x1af airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_gpio_command.part.26.f192c8ad - 0x00000000 0x510 airspy_usb_req.o - .gnu.lto_usb_vendor_request_read_gpio_command.f192c8ad - 0x00000000 0x197 airspy_usb_req.o - .gnu.lto_gpio_set.f192c8ad - 0x00000000 0x130 airspy_usb_req.o - .gnu.lto_gpio_clear.f192c8ad - 0x00000000 0x132 airspy_usb_req.o - .gnu.lto_gpio_get.f192c8ad - 0x00000000 0x185 airspy_usb_req.o - .gnu.lto_usb_streaming_disable.f192c8ad - 0x00000000 0xa9 airspy_usb_req.o - .gnu.lto_airspy_usb_req_init.f192c8ad - 0x00000000 0x237 airspy_usb_req.o - .gnu.lto_.cgraph.f192c8ad - 0x00000000 0x3ea airspy_usb_req.o - .gnu.lto_.vars.f192c8ad - 0x00000000 0x40 airspy_usb_req.o - .gnu.lto_.refs.f192c8ad - 0x00000000 0x9d airspy_usb_req.o - .gnu.lto_.statics.f192c8ad - 0x00000000 0x14 airspy_usb_req.o - .gnu.lto_.decls.f192c8ad - 0x00000000 0x2e1e airspy_usb_req.o - .gnu.lto_.symtab.f192c8ad - 0x00000000 0xb5f airspy_usb_req.o - .gnu.lto_.opts - 0x00000000 0x52 airspy_usb_req.o - .text.gpio_get - 0x00000000 0x10 airspy_usb_req.o - .text 0x00000000 0x0 usb_descriptor.o - .data 0x00000000 0x0 usb_descriptor.o - .bss 0x00000000 0x0 usb_descriptor.o - .gnu.lto_.jmpfuncs.f192d87d - 0x00000000 0x15 usb_descriptor.o - .gnu.lto_.inline.f192d87d - 0x00000000 0x25 usb_descriptor.o - .gnu.lto_.pureconst.f192d87d - 0x00000000 0x15 usb_descriptor.o - .gnu.lto_usb_descriptor_fill_string_serial_number.f192d87d - 0x00000000 0x50f usb_descriptor.o - .gnu.lto_.cgraph.f192d87d - 0x00000000 0x22 usb_descriptor.o - .gnu.lto_.vars.f192d87d - 0x00000000 0x39 usb_descriptor.o - .gnu.lto_.refs.f192d87d - 0x00000000 0x27 usb_descriptor.o - .gnu.lto_.statics.f192d87d - 0x00000000 0x14 usb_descriptor.o - .gnu.lto_.decls.f192d87d - 0x00000000 0xaa9 usb_descriptor.o - .gnu.lto_.symtab.f192d87d - 0x00000000 0x264 usb_descriptor.o - .gnu.lto_.opts - 0x00000000 0x52 usb_descriptor.o - .text 0x00000000 0x0 usb_device.o - .data 0x00000000 0x0 usb_device.o - .bss 0x00000000 0x0 usb_device.o - .gnu.lto_.inline.f192ce34 - 0x00000000 0x12 usb_device.o - .gnu.lto_.pureconst.f192ce34 - 0x00000000 0x12 usb_device.o - .gnu.lto_.cgraph.f192ce34 - 0x00000000 0x13 usb_device.o - .gnu.lto_.vars.f192ce34 - 0x00000000 0x2f usb_device.o - .gnu.lto_.refs.f192ce34 - 0x00000000 0x30 usb_device.o - .gnu.lto_.statics.f192ce34 - 0x00000000 0x14 usb_device.o - .gnu.lto_.decls.f192ce34 - 0x00000000 0x5ad usb_device.o - .gnu.lto_.symtab.f192ce34 - 0x00000000 0x17c usb_device.o - .gnu.lto_.opts - 0x00000000 0x52 usb_device.o - .text 0x00000000 0x0 usb_endpoint.o - .data 0x00000000 0x0 usb_endpoint.o - .bss 0x00000000 0x0 usb_endpoint.o - .gnu.lto_.inline.f192e3cc - 0x00000000 0x12 usb_endpoint.o - .gnu.lto_.pureconst.f192e3cc - 0x00000000 0x12 usb_endpoint.o - .gnu.lto_.cgraph.f192e3cc - 0x00000000 0x30 usb_endpoint.o - .gnu.lto_.vars.f192e3cc - 0x00000000 0x3d usb_endpoint.o - .gnu.lto_.refs.f192e3cc - 0x00000000 0x4e usb_endpoint.o - .gnu.lto_.statics.f192e3cc - 0x00000000 0x14 usb_endpoint.o - .gnu.lto_.decls.f192e3cc - 0x00000000 0xc91 usb_endpoint.o - .gnu.lto_.symtab.f192e3cc - 0x00000000 0x230 usb_endpoint.o - .gnu.lto_.opts - 0x00000000 0x52 usb_endpoint.o - .text 0x00000000 0x0 airspy_core.o - .data 0x00000000 0x0 airspy_core.o - .bss 0x00000000 0x0 airspy_core.o - .gnu.lto_.jmpfuncs.f192fee8 - 0x00000000 0x75 airspy_core.o - .gnu.lto_.inline.f192fee8 - 0x00000000 0xdf airspy_core.o - .gnu.lto_.pureconst.f192fee8 - 0x00000000 0x30 airspy_core.o - .gnu.lto_sys_clock_samplerate.part.0.f192fee8 - 0x00000000 0x276 airspy_core.o - .gnu.lto_delay.f192fee8 - 0x00000000 0x162 airspy_core.o - .gnu.lto_cpu_reset.f192fee8 - 0x00000000 0xb8 airspy_core.o - .gnu.lto_sys_clock_samplerate.f192fee8 - 0x00000000 0x373 airspy_core.o - .gnu.lto_sys_calib_r820t.f192fee8 - 0x00000000 0x1d9 airspy_core.o - .gnu.lto_cpu_clock_pll1_low_speed.f192fee8 - 0x00000000 0x2c7 airspy_core.o - .gnu.lto_sys_clock_init.f192fee8 - 0x00000000 0x12f3 airspy_core.o - .gnu.lto_cpu_clock_pll1_high_speed.f192fee8 - 0x00000000 0x361 airspy_core.o - .gnu.lto_led_on.f192fee8 - 0x00000000 0xab airspy_core.o - .gnu.lto_led_off.f192fee8 - 0x00000000 0xab airspy_core.o - .gnu.lto_enable_r820t_power.f192fee8 - 0x00000000 0xc3 airspy_core.o - .gnu.lto_enable_biast_power.f192fee8 - 0x00000000 0xac airspy_core.o - .gnu.lto_disable_biast_power.f192fee8 - 0x00000000 0xac airspy_core.o - .gnu.lto_pin_setup.f192fee8 - 0x00000000 0x2b3 airspy_core.o - .gnu.lto_.cgraph.f192fee8 - 0x00000000 0x144 airspy_core.o - .gnu.lto_.vars.f192fee8 - 0x00000000 0x30 airspy_core.o - .gnu.lto_.refs.f192fee8 - 0x00000000 0x33 airspy_core.o - .gnu.lto_.statics.f192fee8 - 0x00000000 0x14 airspy_core.o - .gnu.lto_.decls.f192fee8 - 0x00000000 0x1e9d airspy_core.o - .gnu.lto_.symtab.f192fee8 - 0x00000000 0x447 airspy_core.o - .gnu.lto_.opts - 0x00000000 0x52 airspy_core.o - .text.sys_clock_samplerate - 0x00000000 0x98 airspy_core.o - .text.sys_calib_r820t - 0x00000000 0x38 airspy_core.o - .text.cpu_clock_pll1_low_speed - 0x00000000 0x3c airspy_core.o - .text.sys_clock_init - 0x00000000 0x430 airspy_core.o - .text.cpu_clock_pll1_high_speed - 0x00000000 0x64 airspy_core.o - .text.led_on 0x00000000 0x14 airspy_core.o - .text.led_off 0x00000000 0x14 airspy_core.o - .text.enable_r820t_power - 0x00000000 0x1c airspy_core.o - .text.pin_setup - 0x00000000 0x8c airspy_core.o - .bss.si5351c_read - 0x00000000 0x4 airspy_core.o - .rodata.gpio_conf - 0x00000000 0x508 airspy_core.o - .text 0x00000000 0x0 fault_handler.o - .data 0x00000000 0x0 fault_handler.o - .bss 0x00000000 0x0 fault_handler.o - .gnu.lto_.jmpfuncs.f192fa70 - 0x00000000 0x1e fault_handler.o - .gnu.lto_.inline.f192fa70 - 0x00000000 0x3f fault_handler.o - .gnu.lto_.pureconst.f192fa70 - 0x00000000 0x1e fault_handler.o - .gnu.lto_hard_fault_handler.f192fa70 - 0x00000000 0x107 fault_handler.o - .gnu.lto_hard_fault_handler_c.f192fa70 - 0x00000000 0x101 fault_handler.o - .gnu.lto_mem_manage_handler.f192fa70 - 0x00000000 0x88 fault_handler.o - .gnu.lto_bus_fault_handler.f192fa70 - 0x00000000 0x88 fault_handler.o - .gnu.lto_usage_fault_handler.f192fa70 - 0x00000000 0x88 fault_handler.o - .gnu.lto_.cgraph.f192fa70 - 0x00000000 0x3c fault_handler.o - .gnu.lto_.vars.f192fa70 - 0x00000000 0x19 fault_handler.o - .gnu.lto_.refs.f192fa70 - 0x00000000 0x17 fault_handler.o - .gnu.lto_.statics.f192fa70 - 0x00000000 0x14 fault_handler.o - .gnu.lto_.decls.f192fa70 - 0x00000000 0x3cb fault_handler.o - .gnu.lto_.symtab.f192fa70 - 0x00000000 0xcf fault_handler.o - .gnu.lto_.opts - 0x00000000 0x52 fault_handler.o - .text.mem_manage_handler - 0x00000000 0x2 fault_handler.o - .text.bus_fault_handler - 0x00000000 0x2 fault_handler.o - .text.usage_fault_handler - 0x00000000 0x2 fault_handler.o - .text 0x00000000 0x0 si5351c.o - .data 0x00000000 0x0 si5351c.o - .bss 0x00000000 0x0 si5351c.o - .gnu.lto_.jmpfuncs.f192a158 - 0x00000000 0x66 si5351c.o - .gnu.lto_.inline.f192a158 - 0x00000000 0xa5 si5351c.o - .gnu.lto_.pureconst.f192a158 - 0x00000000 0x29 si5351c.o - .gnu.lto_si5351c_airspy_config.f192a158 - 0x00000000 0x269 si5351c.o - .gnu.lto_si5351c_write_single.f192a158 - 0x00000000 0x113 si5351c.o - .gnu.lto_si5351c_read_single.f192a158 - 0x00000000 0x143 si5351c.o - .gnu.lto_si5351c_write.f192a158 - 0x00000000 0x1fc si5351c.o - .gnu.lto_si5351c_disable_all_outputs.f192a158 - 0x00000000 0x111 si5351c.o - .gnu.lto_si5351c_disable_oeb_pin_control.f192a158 - 0x00000000 0x2ac si5351c.o - .gnu.lto_si5351c_power_down_all_clocks.f192a158 - 0x00000000 0x112 si5351c.o - .gnu.lto_si5351c_init_fanout.f192a158 - 0x00000000 0x111 si5351c.o - .gnu.lto_si5351c_init_xtal.f192a158 - 0x00000000 0x110 si5351c.o - .gnu.lto_si5351c_init_pll_soft_reset.f192a158 - 0x00000000 0x111 si5351c.o - .gnu.lto_si5351c_enable_clock_outputs.f192a158 - 0x00000000 0x112 si5351c.o - .gnu.lto_.cgraph.f192a158 - 0x00000000 0xeb si5351c.o - .gnu.lto_.vars.f192a158 - 0x00000000 0x2b si5351c.o - .gnu.lto_.refs.f192a158 - 0x00000000 0x28 si5351c.o - .gnu.lto_.statics.f192a158 - 0x00000000 0x14 si5351c.o - .gnu.lto_.decls.f192a158 - 0x00000000 0x78d si5351c.o - .gnu.lto_.symtab.f192a158 - 0x00000000 0x219 si5351c.o - .gnu.lto_.opts - 0x00000000 0x52 si5351c.o - .text.si5351c_airspy_config - 0x00000000 0x4a si5351c.o - .text.si5351c_write - 0x00000000 0x26 si5351c.o - .text.si5351c_disable_all_outputs - 0x00000000 0x1c si5351c.o - .text.si5351c_disable_oeb_pin_control - 0x00000000 0x74 si5351c.o - .text.si5351c_power_down_all_clocks - 0x00000000 0x20 si5351c.o - .text.si5351c_init_fanout - 0x00000000 0x20 si5351c.o - .text.si5351c_init_xtal - 0x00000000 0x20 si5351c.o - .text.si5351c_init_pll_soft_reset - 0x00000000 0x20 si5351c.o - .text.si5351c_enable_clock_outputs - 0x00000000 0x20 si5351c.o - .rodata 0x00000000 0x13 si5351c.o - .text 0x00000000 0x0 r820t.o - .data 0x00000000 0x0 r820t.o - .bss 0x00000000 0x0 r820t.o - .gnu.lto_.jmpfuncs.f192c400 - 0x00000000 0x196 r820t.o - .gnu.lto_.inline.f192c400 - 0x00000000 0x233 r820t.o - .gnu.lto_.pureconst.f192c400 - 0x00000000 0x3d r820t.o - .gnu.lto_r82xx_bitrev.f192c400 - 0x00000000 0x1f0 r820t.o - .gnu.lto_airspy_r820t_write_direct.part.0.f192c400 - 0x00000000 0x175 r820t.o - .gnu.lto_airspy_r820t_write_direct.f192c400 - 0x00000000 0x2a2 r820t.o - .gnu.lto_r820t_freq_get_idx.part.1.f192c400 - 0x00000000 0x1ab r820t.o - .gnu.lto_airspy_r820t_write_init.part.2.f192c400 - 0x00000000 0x23a r820t.o - .gnu.lto_airspy_r820t_read.part.3.f192c400 - 0x00000000 0x3e5 r820t.o - .gnu.lto_r820t_freq_get_idx.f192c400 - 0x00000000 0x148 r820t.o - .gnu.lto_airspy_r820t_write_init.f192c400 - 0x00000000 0x29b r820t.o - .gnu.lto_airspy_r820t_read.f192c400 - 0x00000000 0x4c5 r820t.o - .gnu.lto_airspy_r820t_write_single.f192c400 - 0x00000000 0x349 r820t.o - .gnu.lto_r820t_write_reg.f192c400 - 0x00000000 0x284 r820t.o - .gnu.lto_r820t_write_reg_mask.f192c400 - 0x00000000 0x334 r820t.o - .gnu.lto_r820t_set_tf.f192c400 - 0x00000000 0x374 r820t.o - .gnu.lto_airspy_r820t_read_single.f192c400 - 0x00000000 0x191 r820t.o - .gnu.lto_r820t_set_pll.f192c400 - 0x00000000 0x80d r820t.o - .gnu.lto_r820t_set_freq.f192c400 - 0x00000000 0x1fb r820t.o - .gnu.lto_r820t_set_lna_gain.f192c400 - 0x00000000 0x126 r820t.o - .gnu.lto_r820t_set_mixer_gain.f192c400 - 0x00000000 0x126 r820t.o - .gnu.lto_r820t_set_vga_gain.f192c400 - 0x00000000 0x127 r820t.o - .gnu.lto_r820t_set_lna_agc.f192c400 - 0x00000000 0x167 r820t.o - .gnu.lto_r820t_set_mixer_agc.f192c400 - 0x00000000 0x166 r820t.o - .gnu.lto_r820t_calibrate.f192c400 - 0x00000000 0x428 r820t.o - .gnu.lto_r820t_init.f192c400 - 0x00000000 0x281 r820t.o - .gnu.lto_r820t_set_if_bandwidth.f192c400 - 0x00000000 0x28b r820t.o - .gnu.lto_r820t_standby.f192c400 - 0x00000000 0x129 r820t.o - .gnu.lto_r820t_startup.f192c400 - 0x00000000 0x14a r820t.o - .gnu.lto_.cgraph.f192c400 - 0x00000000 0x213 r820t.o - .gnu.lto_.vars.f192c400 - 0x00000000 0x2c r820t.o - .gnu.lto_.refs.f192c400 - 0x00000000 0x3b r820t.o - .gnu.lto_.statics.f192c400 - 0x00000000 0x14 r820t.o - .gnu.lto_.decls.f192c400 - 0x00000000 0x1777 r820t.o - .gnu.lto_.symtab.f192c400 - 0x00000000 0x349 r820t.o - .gnu.lto_.opts - 0x00000000 0x52 r820t.o - .text 0x00000000 0x0 w25q80bv.o - .data 0x00000000 0x0 w25q80bv.o - .bss 0x00000000 0x0 w25q80bv.o - .gnu.lto_.jmpfuncs.f192c07b - 0x00000000 0x106 w25q80bv.o - .gnu.lto_.inline.f192c07b - 0x00000000 0x15e w25q80bv.o - .gnu.lto_.pureconst.f192c07b - 0x00000000 0x30 w25q80bv.o - .gnu.lto_w25q80bv_page_program.part.0.f192c07b - 0x00000000 0x1ce w25q80bv.o - .gnu.lto_w25q80bv_get_status.f192c07b - 0x00000000 0x147 w25q80bv.o - .gnu.lto_w25q80bv_get_device_id.f192c07b - 0x00000000 0x161 w25q80bv.o - .gnu.lto_w25q80bv_setup.f192c07b - 0x00000000 0x318 w25q80bv.o - .gnu.lto_w25q80bv_get_unique_id.f192c07b - 0x00000000 0x3b4 w25q80bv.o - .gnu.lto_w25q80bv_wait_while_busy.f192c07b - 0x00000000 0x13c w25q80bv.o - .gnu.lto_w25q80bv_read.part.2.f192c07b - 0x00000000 0x321 w25q80bv.o - .gnu.lto_w25q80bv_write_enable.f192c07b - 0x00000000 0xda w25q80bv.o - .gnu.lto_w25q80bv_chip_erase.f192c07b - 0x00000000 0x1d5 w25q80bv.o - .gnu.lto_w25q80bv_sector_erase.f192c07b - 0x00000000 0x2d1 w25q80bv.o - .gnu.lto_w25q80bv_page_program.f192c07b - 0x00000000 0x3c0 w25q80bv.o - .gnu.lto_w25q80bv_program.part.1.f192c07b - 0x00000000 0x3cb w25q80bv.o - .gnu.lto_w25q80bv_program.f192c07b - 0x00000000 0x253 w25q80bv.o - .gnu.lto_w25q80bv_read.f192c07b - 0x00000000 0x1a6 w25q80bv.o - .gnu.lto_.cgraph.f192c07b - 0x00000000 0x1a6 w25q80bv.o - .gnu.lto_.vars.f192c07b - 0x00000000 0x19 w25q80bv.o - .gnu.lto_.refs.f192c07b - 0x00000000 0x23 w25q80bv.o - .gnu.lto_.statics.f192c07b - 0x00000000 0x14 w25q80bv.o - .gnu.lto_.decls.f192c07b - 0x00000000 0x118c w25q80bv.o - .gnu.lto_.symtab.f192c07b - 0x00000000 0x21d w25q80bv.o - .gnu.lto_.opts - 0x00000000 0x52 w25q80bv.o - .text.w25q80bv_chip_erase - 0x00000000 0x48 w25q80bv.o - .text 0x00000000 0x0 rom_iap.o - .data 0x00000000 0x0 rom_iap.o - .bss 0x00000000 0x0 rom_iap.o - .gnu.lto_.jmpfuncs.f192dfdb - 0x00000000 0x27 rom_iap.o - .gnu.lto_.inline.f192dfdb - 0x00000000 0x51 rom_iap.o - .gnu.lto_.pureconst.f192dfdb - 0x00000000 0x18 rom_iap.o - .gnu.lto_iap_is_implemented.f192dfdb - 0x00000000 0x147 rom_iap.o - .gnu.lto_iap_cmd_call.f192dfdb - 0x00000000 0x39a rom_iap.o - .gnu.lto_.cgraph.f192dfdb - 0x00000000 0x4f rom_iap.o - .gnu.lto_.vars.f192dfdb - 0x00000000 0x12 rom_iap.o - .gnu.lto_.refs.f192dfdb - 0x00000000 0x13 rom_iap.o - .gnu.lto_.statics.f192dfdb - 0x00000000 0x14 rom_iap.o - .gnu.lto_.decls.f192dfdb - 0x00000000 0x88a rom_iap.o - .gnu.lto_.symtab.f192dfdb - 0x00000000 0x82 rom_iap.o - .gnu.lto_.opts - 0x00000000 0x52 rom_iap.o - .text 0x00000000 0x0 signal_mcu.o - .data 0x00000000 0x0 signal_mcu.o - .bss 0x00000000 0x0 signal_mcu.o - .gnu.lto_.inline.f192cbd1 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.pureconst.f192cbd1 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.cgraph.f192cbd1 - 0x00000000 0x13 signal_mcu.o - .gnu.lto_.vars.f192cbd1 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.refs.f192cbd1 - 0x00000000 0x13 signal_mcu.o - .gnu.lto_.statics.f192cbd1 - 0x00000000 0x14 signal_mcu.o - .gnu.lto_.decls.f192cbd1 - 0x00000000 0x1a signal_mcu.o - .gnu.lto_.symtab.f192cbd1 - 0x00000000 0x0 signal_mcu.o - .gnu.lto_.opts - 0x00000000 0x52 signal_mcu.o - .debug_line 0x00000000 0x0 signal_mcu.o - .comment 0x00000000 0x71 signal_mcu.o - .ARM.attributes - 0x00000000 0x31 signal_mcu.o - .text 0x00000000 0x0 usb.o - .data 0x00000000 0x0 usb.o - .bss 0x00000000 0x0 usb.o - .gnu.lto_.jmpfuncs.f192ffd7 - 0x00000000 0xae usb.o - .gnu.lto_.inline.f192ffd7 - 0x00000000 0x220 usb.o - .gnu.lto_.pureconst.f192ffd7 - 0x00000000 0x5c usb.o - .gnu.lto_usb_phy_enable.f192ffd7 - 0x00000000 0xf8 usb.o - .gnu.lto_usb_clear_pending_interrupts.f192ffd7 - 0x00000000 0x174 usb.o - .gnu.lto_usb_clear_all_pending_interrupts.f192ffd7 - 0x00000000 0x9c usb.o - .gnu.lto_usb_wait_for_endpoint_priming_to_finish.f192ffd7 - 0x00000000 0x145 usb.o - .gnu.lto_usb_wait_for_endpoint_flushing_to_finish.f192ffd7 - 0x00000000 0x147 usb.o - .gnu.lto_usb_flush_primed_endpoints.f192ffd7 - 0x00000000 0x127 usb.o - .gnu.lto_usb_flush_all_primed_endpoints.f192ffd7 - 0x00000000 0x9c usb.o - .gnu.lto_usb_endpoint_set_type.f192ffd7 - 0x00000000 0x2a5 usb.o - .gnu.lto_usb_endpoint_enable.f192ffd7 - 0x00000000 0x294 usb.o - .gnu.lto_usb_endpoint_clear_pending_interrupts.f192ffd7 - 0x00000000 0x273 usb.o - .gnu.lto_usb_endpoint_is_priming.f192ffd7 - 0x00000000 0x2da usb.o - .gnu.lto_usb_controller_run.f192ffd7 - 0x00000000 0xf7 usb.o - .gnu.lto_usb_controller_stop.f192ffd7 - 0x00000000 0xf9 usb.o - .gnu.lto_usb_controller_is_resetting.f192ffd7 - 0x00000000 0x127 usb.o - .gnu.lto_usb_controller_set_device_mode.f192ffd7 - 0x00000000 0xb6 usb.o - .gnu.lto_usb_get_status.f192ffd7 - 0x00000000 0x158 usb.o - .gnu.lto_usb_disable_all_endpoints.f192ffd7 - 0x00000000 0x1a3 usb.o - .gnu.lto_usb_reset_all_endpoints.f192ffd7 - 0x00000000 0xa7 usb.o - .gnu.lto_usb_controller_reset.f192ffd7 - 0x00000000 0x140 usb.o - .gnu.lto_copy_setup.f192ffd7 - 0x00000000 0x20c usb.o - .gnu.lto_usb_interrupt_enable.f192ffd7 - 0x00000000 0x147 usb.o - .gnu.lto_usb_speed.part.1.f192ffd7 - 0x00000000 0x1cc usb.o - .gnu.lto_usb_device_init.part.2.f192ffd7 - 0x00000000 0x1e2 usb.o - .gnu.lto_usb_queue_head.f192ffd7 - 0x00000000 0x15e usb.o - .gnu.lto_usb_endpoint_from_address.f192ffd7 - 0x00000000 0x143 usb.o - .gnu.lto_usb_check_for_transfer_events.f192ffd7 - 0x00000000 0x494 usb.o - .gnu.lto_usb_check_for_setup_events.f192ffd7 - 0x00000000 0x4c8 usb.o - .gnu.lto_usb_peripheral_reset.f192ffd7 - 0x00000000 0x13f usb.o - .gnu.lto_usb_endpoint_prime.f192ffd7 - 0x00000000 0x32f usb.o - .gnu.lto_usb_endpoint_flush.f192ffd7 - 0x00000000 0x298 usb.o - .gnu.lto_usb_endpoint_disable.f192ffd7 - 0x00000000 0x2c2 usb.o - .gnu.lto_usb_endpoint_is_ready.f192ffd7 - 0x00000000 0x2db usb.o - .gnu.lto_usb_endpoint_schedule_append.part.0.f192ffd7 - 0x00000000 0x26e usb.o - .gnu.lto_usb_endpoint_schedule_append.f192ffd7 - 0x00000000 0x1a6 usb.o - .gnu.lto_usb_endpoint_schedule_wait.f192ffd7 - 0x00000000 0x17f usb.o - .gnu.lto_usb_endpoint_is_complete.f192ffd7 - 0x00000000 0x2dd usb.o - .gnu.lto_usb_endpoint_stall.f192ffd7 - 0x00000000 0x1f6 usb.o - .gnu.lto_usb_speed.f192ffd7 - 0x00000000 0x178 usb.o - .gnu.lto_usb_set_address_immediate.f192ffd7 - 0x00000000 0x18f usb.o - .gnu.lto_usb_bus_reset.f192ffd7 - 0x00000000 0xf0 usb.o - .gnu.lto_usb0_isr.part.3.f192ffd7 - 0x00000000 0x13b usb.o - .gnu.lto_usb_set_address_deferred.f192ffd7 - 0x00000000 0x1aa usb.o - .gnu.lto_usb_device_init.f192ffd7 - 0x00000000 0x119 usb.o - .gnu.lto_usb_run.f192ffd7 - 0x00000000 0xdb usb.o - .gnu.lto_usb_endpoint_init.f192ffd7 - 0x00000000 0x457 usb.o - .gnu.lto_usb0_isr.f192ffd7 - 0x00000000 0x1a4 usb.o - .gnu.lto_.cgraph.f192ffd7 - 0x00000000 0x214 usb.o - .gnu.lto_.vars.f192ffd7 - 0x00000000 0x1d usb.o - .gnu.lto_.refs.f192ffd7 - 0x00000000 0x2e usb.o - .gnu.lto_.statics.f192ffd7 - 0x00000000 0x14 usb.o - .gnu.lto_.decls.f192ffd7 - 0x00000000 0x19fe usb.o - .gnu.lto_.symtab.f192ffd7 - 0x00000000 0x37c usb.o - .gnu.lto_.opts - 0x00000000 0x52 usb.o - .text.usb_endpoint_is_complete - 0x00000000 0x2c usb.o - .text 0x00000000 0x0 usb_queue.o - .data 0x00000000 0x0 usb_queue.o - .bss 0x00000000 0x0 usb_queue.o - .gnu.lto_.jmpfuncs.f192d722 - 0x00000000 0x52 usb_queue.o - .gnu.lto_.inline.f192d722 - 0x00000000 0x103 usb_queue.o - .gnu.lto_.pureconst.f192d722 - 0x00000000 0x30 usb_queue.o - .gnu.lto_cm_enable_interrupts.f192d722 - 0x00000000 0x9f usb_queue.o - .gnu.lto_cm_disable_interrupts.f192d722 - 0x00000000 0x9f usb_queue.o - .gnu.lto_endpoint_queue.f192d722 - 0x00000000 0x1eb usb_queue.o - .gnu.lto_allocate_transfer.f192d722 - 0x00000000 0x1e3 usb_queue.o - .gnu.lto_free_transfer.f192d722 - 0x00000000 0x18e usb_queue.o - .gnu.lto_free_transfer_nolock.f192d722 - 0x00000000 0x16b usb_queue.o - .gnu.lto_endpoint_queue_transfer.f192d722 - 0x00000000 0x256 usb_queue.o - .gnu.lto_usb_queue_flush_queue.f192d722 - 0x00000000 0x1e9 usb_queue.o - .gnu.lto_usb_queue_init.f192d722 - 0x00000000 0x355 usb_queue.o - .gnu.lto_usb_queue_flush_endpoint.f192d722 - 0x00000000 0x108 usb_queue.o - .gnu.lto_usb_transfer_schedule.f192d722 - 0x00000000 0x492 usb_queue.o - .gnu.lto_usb_transfer_schedule_block.f192d722 - 0x00000000 0x185 usb_queue.o - .gnu.lto_usb_transfer_schedule_ack.f192d722 - 0x00000000 0x100 usb_queue.o - .gnu.lto_usb_queue_transfer_complete.f192d722 - 0x00000000 0x34d usb_queue.o - .gnu.lto_.cgraph.f192d722 - 0x00000000 0xda usb_queue.o - .gnu.lto_.vars.f192d722 - 0x00000000 0x19 usb_queue.o - .gnu.lto_.refs.f192d722 - 0x00000000 0x1b usb_queue.o - .gnu.lto_.statics.f192d722 - 0x00000000 0x14 usb_queue.o - .gnu.lto_.decls.f192d722 - 0x00000000 0xfdf usb_queue.o - .gnu.lto_.symtab.f192d722 - 0x00000000 0x15f usb_queue.o - .gnu.lto_.opts - 0x00000000 0x52 usb_queue.o - .text 0x00000000 0x0 usb_request.o - .data 0x00000000 0x0 usb_request.o - .bss 0x00000000 0x0 usb_request.o - .gnu.lto_.jmpfuncs.f192e91d - 0x00000000 0x41 usb_request.o - .gnu.lto_.inline.f192e91d - 0x00000000 0x58 usb_request.o - .gnu.lto_.pureconst.f192e91d - 0x00000000 0x1c usb_request.o - .gnu.lto_usb_request.f192e91d - 0x00000000 0x342 usb_request.o - .gnu.lto_usb_setup_complete.f192e91d - 0x00000000 0xd9 usb_request.o - .gnu.lto_usb_control_out_complete.f192e91d - 0x00000000 0x1da usb_request.o - .gnu.lto_usb_control_in_complete.f192e91d - 0x00000000 0x1da usb_request.o - .gnu.lto_.cgraph.f192e91d - 0x00000000 0x72 usb_request.o - .gnu.lto_.vars.f192e91d - 0x00000000 0x19 usb_request.o - .gnu.lto_.refs.f192e91d - 0x00000000 0x19 usb_request.o - .gnu.lto_.statics.f192e91d - 0x00000000 0x14 usb_request.o - .gnu.lto_.decls.f192e91d - 0x00000000 0xb7e usb_request.o - .gnu.lto_.symtab.f192e91d - 0x00000000 0xe2 usb_request.o - .gnu.lto_.opts - 0x00000000 0x52 usb_request.o - .text 0x00000000 0x0 usb_standard_request.o - .data 0x00000000 0x0 usb_standard_request.o - .bss 0x00000000 0x0 usb_standard_request.o - .gnu.lto_.jmpfuncs.f192a3c5 - 0x00000000 0xf6 usb_standard_request.o - .gnu.lto_.inline.f192a3c5 - 0x00000000 0x1d2 usb_standard_request.o - .gnu.lto_.pureconst.f192a3c5 - 0x00000000 0x40 usb_standard_request.o - .gnu.lto_usb_standard_request_get_status_endpoint.f192a3c5 - 0x00000000 0x312 usb_standard_request.o - .gnu.lto_usb_standard_request_get_status.f192a3c5 - 0x00000000 0x2be usb_standard_request.o - .gnu.lto_usb_standard_request_clear_feature_endpoint.f192a3c5 - 0x00000000 0x284 usb_standard_request.o - .gnu.lto_usb_standard_request_clear_feature.f192a3c5 - 0x00000000 0x203 usb_standard_request.o - .gnu.lto_usb_standard_request_set_feature_endpoint.f192a3c5 - 0x00000000 0x285 usb_standard_request.o - .gnu.lto_usb_standard_request_set_feature.f192a3c5 - 0x00000000 0x202 usb_standard_request.o - .gnu.lto_usb_standard_request_get_interface.f192a3c5 - 0x00000000 0x252 usb_standard_request.o - .gnu.lto_usb_standard_request_set_interface.f192a3c5 - 0x00000000 0x21c usb_standard_request.o - .gnu.lto_usb_send_descriptor.f192a3c5 - 0x00000000 0x356 usb_standard_request.o - .gnu.lto_usb_send_descriptor_config.f192a3c5 - 0x00000000 0x349 usb_standard_request.o - .gnu.lto_usb_send_descriptor_string.f192a3c5 - 0x00000000 0x315 usb_standard_request.o - .gnu.lto_usb_standard_request_get_configuration_setup.f192a3c5 - 0x00000000 0x2e2 usb_standard_request.o - .gnu.lto_usb_standard_request_get_configuration.f192a3c5 - 0x00000000 0x19c usb_standard_request.o - .gnu.lto_usb_standard_request_get_descriptor_setup.f192a3c5 - 0x00000000 0x3bd usb_standard_request.o - .gnu.lto_usb_standard_request_get_descriptor.f192a3c5 - 0x00000000 0x19e usb_standard_request.o - .gnu.lto_usb_standard_request_set_address_setup.f192a3c5 - 0x00000000 0x1b7 usb_standard_request.o - .gnu.lto_usb_standard_request_set_address.f192a3c5 - 0x00000000 0x19b usb_standard_request.o - .gnu.lto_usb_endpoint_descriptor.f192a3c5 - 0x00000000 0x2fe usb_standard_request.o - .gnu.lto_usb_endpoint_descriptor_max_packet_size.f192a3c5 - 0x00000000 0x19b usb_standard_request.o - .gnu.lto_usb_endpoint_descriptor_transfer_type.f192a3c5 - 0x00000000 0x12d usb_standard_request.o - .gnu.lto_usb_set_configuration_changed_cb.f192a3c5 - 0x00000000 0xea usb_standard_request.o - .gnu.lto_usb_set_configuration.f192a3c5 - 0x00000000 0x479 usb_standard_request.o - .gnu.lto_usb_standard_request_set_configuration_setup.f192a3c5 - 0x00000000 0x279 usb_standard_request.o - .gnu.lto_usb_standard_request_set_configuration.f192a3c5 - 0x00000000 0x19d usb_standard_request.o - .gnu.lto_usb_standard_request.f192a3c5 - 0x00000000 0x2da usb_standard_request.o - .gnu.lto_.cgraph.f192a3c5 - 0x00000000 0x190 usb_standard_request.o - .gnu.lto_.vars.f192a3c5 - 0x00000000 0x2c usb_standard_request.o - .gnu.lto_.refs.f192a3c5 - 0x00000000 0x2c usb_standard_request.o - .gnu.lto_.statics.f192a3c5 - 0x00000000 0x14 usb_standard_request.o - .gnu.lto_.decls.f192a3c5 - 0x00000000 0x14d2 usb_standard_request.o - .gnu.lto_.symtab.f192a3c5 - 0x00000000 0x2a4 usb_standard_request.o - .gnu.lto_.opts - 0x00000000 0x52 usb_standard_request.o - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00000000 0x16f ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .text.ssp_disable - 0x00000000 0x18 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0x16f ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00000000 0xaca ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00000000 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text.nvic_disable_irq - 0x00000000 0x18 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text.nvic_get_pending_irq - 0x00000000 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text.nvic_set_pending_irq - 0x00000000 0x18 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text.nvic_clear_pending_irq - 0x00000000 0x18 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .text.nvic_get_irq_enabled - 0x00000000 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0x47 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00000000 0xc4 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_thumb1_case_uqi.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_thumb1_case_uqi.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_dvmd_tls.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_dvmd_tls.o) - .text 0x00000000 0x48 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) - .ARM.attributes - 0x00000000 0x1e c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_aeabi_ldivmod.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - .text 0x00000000 0x74 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - .ARM.attributes - 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - .debug_frame 0x00000000 0x60 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(bpabi.o) - .text 0x00000000 0x3d0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .ARM.extab 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .ARM.exidx 0x00000000 0x8 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .ARM.attributes - 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .debug_frame 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_divdi3.o) - .text 0x00000000 0x38c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .ARM.extab 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .ARM.exidx 0x00000000 0x8 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .ARM.attributes - 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .debug_frame 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivdi3.o) - .text 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_clzsi2.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_clzsi2.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_clzsi2.o) - .ARM.attributes - 0x00000000 0x1e c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_clzsi2.o) - .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - -Memory Configuration - -Name Origin Length Attributes -rom 0x00000000 0x00100000 xr -ram_local1 0x10000000 0x00020000 xrw -ram_local2 0x10080000 0x00012000 xrw -ram_local_m0sub 0x18000000 0x00004800 xrw -ram_ahb1_m0_stack 0x20000000 0x00001000 xrw -ram_ahb1_spare 0x20001000 0x00000c00 xrw -ram_ahb1_m4_share 0x20001c00 0x00000400 xrw -ram_ahb1_adchs 0x20002000 0x00001000 xrw -ram_ahb1_m0_share 0x20003000 0x00001000 xrw -ram_ahb2 0x2000c000 0x00004000 xrw -*default* 0x00000000 0xffffffff - -Linker script and memory map - -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libnosys.a -LOAD airspy_m0.o -LOAD airspy_rx.o -LOAD airspy_usb_req.o -LOAD usb_descriptor.o -LOAD usb_device.o -LOAD usb_endpoint.o -LOAD airspy_core.o -LOAD fault_handler.o -LOAD si5351c.o -LOAD r820t.o -LOAD w25q80bv.o -LOAD rom_iap.o -LOAD signal_mcu.o -LOAD usb.o -LOAD usb_queue.o -LOAD usb_request.o -LOAD usb_standard_request.o -LOAD ../libopencm3/lib\libopencm3_lpc43xx_m0.a -START GROUP -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a -END GROUP - 0x20001c00 cm4_data_share = ORIGIN (ram_ahb1_m4_share) - 0x20002000 adchs_data = ORIGIN (ram_ahb1_adchs) - 0x20003000 cm0_data_share = ORIGIN (ram_ahb1_m0_share) - 0x2000c000 cm0_exec_baseaddr = ORIGIN (ram_ahb2) - 0x18000000 cm0s_exec_baseaddr = ORIGIN (ram_local_m0sub) - 0x20001000 conf_data_share = ORIGIN (ram_ahb1_spare) - 0x00000c00 conf_data_share_size = 0xc00 - 0x2000c000 . = ORIGIN (ram_ahb2) - -.text 0x2000c000 0x2c6c - 0x2000c000 . = ALIGN (0x400) - *(.vectors) - .vectors 0x2000c000 0xc0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - 0x2000c000 vector_table - *(.text*) - .text.usb_configuration_changed - 0x2000c0c0 0x14 airspy_m0.o - 0x2000c0c0 usb_configuration_changed - .text.set_samplerate_m4 - 0x2000c0d4 0x1c airspy_m0.o - 0x2000c0d4 set_samplerate_m4 - .text.set_packing_m4 - 0x2000c0f0 0x1c airspy_m0.o - 0x2000c0f0 set_packing_m4 - .text.ADCHS_start - 0x2000c10c 0x90 airspy_m0.o - 0x2000c10c ADCHS_start - .text.ADCHS_stop - 0x2000c19c 0x3c airspy_m0.o - 0x2000c19c ADCHS_stop - .text.m4core_isr - 0x2000c1d8 0xc airspy_m0.o - 0x2000c1d8 m4core_isr - .text.startup.main - 0x2000c1e4 0xe0 airspy_m0.o - 0x2000c1e4 main - .text.set_receiver_mode - 0x2000c2c4 0x34 airspy_rx.o - 0x2000c2c4 set_receiver_mode - .text.get_receiver_mode - 0x2000c2f8 0xc airspy_rx.o - 0x2000c2f8 get_receiver_mode - .text.usb_vendor_request - 0x2000c304 0x24 airspy_usb_req.o - 0x2000c304 usb_vendor_request - .text.usb_vendor_request_reset - 0x2000c328 0xe airspy_usb_req.o - 0x2000c328 usb_vendor_request_reset - .text.usb_vendor_request_erase_sector_spiflash - 0x2000c336 0x2a airspy_usb_req.o - 0x2000c336 usb_vendor_request_erase_sector_spiflash - .text.usb_vendor_request_gpiodir_write_command - 0x2000c360 0x44 airspy_usb_req.o - 0x2000c360 usb_vendor_request_gpiodir_write_command - .text.usb_vendor_request_erase_spiflash - 0x2000c3a4 0x1c airspy_usb_req.o - 0x2000c3a4 usb_vendor_request_erase_spiflash - .text.usb_vendor_request_get_samplerates_command - 0x2000c3c0 0x6c airspy_usb_req.o - 0x2000c3c0 usb_vendor_request_get_samplerates_command - .text.usb_vendor_request_gpiodir_read_command - 0x2000c42c 0x4c airspy_usb_req.o - 0x2000c42c usb_vendor_request_gpiodir_read_command - .text.usb_vendor_request_ms_vendor_command - 0x2000c478 0x48 airspy_usb_req.o - 0x2000c478 usb_vendor_request_ms_vendor_command - .text.usb_vendor_request_read_board_id - 0x2000c4c0 0x20 airspy_usb_req.o - 0x2000c4c0 usb_vendor_request_read_board_id - .text.usb_vendor_request_set_rf_bias_command - 0x2000c4e0 0x22 airspy_usb_req.o - 0x2000c4e0 usb_vendor_request_set_rf_bias_command - *fill* 0x2000c502 0x2 00 - .text.usb_vendor_request_set_mixer_agc - 0x2000c504 0x30 airspy_usb_req.o - 0x2000c504 usb_vendor_request_set_mixer_agc - .text.usb_vendor_request_set_lna_agc - 0x2000c534 0x30 airspy_usb_req.o - 0x2000c534 usb_vendor_request_set_lna_agc - .text.usb_vendor_request_set_vga_gain - 0x2000c564 0x30 airspy_usb_req.o - 0x2000c564 usb_vendor_request_set_vga_gain - .text.usb_vendor_request_set_mixer_gain - 0x2000c594 0x30 airspy_usb_req.o - 0x2000c594 usb_vendor_request_set_mixer_gain - .text.usb_vendor_request_set_lna_gain - 0x2000c5c4 0x30 airspy_usb_req.o - 0x2000c5c4 usb_vendor_request_set_lna_gain - .text.usb_vendor_request_set_freq - 0x2000c5f4 0x38 airspy_usb_req.o - 0x2000c5f4 usb_vendor_request_set_freq - .text.usb_vendor_request_set_samplerate - 0x2000c62c 0xc0 airspy_usb_req.o - 0x2000c62c usb_vendor_request_set_samplerate - .text.usb_vendor_request_set_packing_command - 0x2000c6ec 0x54 airspy_usb_req.o - 0x2000c6ec usb_vendor_request_set_packing_command - .text.usb_vendor_request_read_partid_serialno - 0x2000c740 0x60 airspy_usb_req.o - 0x2000c740 usb_vendor_request_read_partid_serialno - .text.usb_vendor_request_read_version_string - 0x2000c7a0 0x60 airspy_usb_req.o - 0x2000c7a0 usb_vendor_request_read_version_string - .text.usb_vendor_request_read_spiflash - 0x2000c800 0x8c airspy_usb_req.o - 0x2000c800 usb_vendor_request_read_spiflash - .text.usb_vendor_request_write_spiflash - 0x2000c88c 0x78 airspy_usb_req.o - 0x2000c88c usb_vendor_request_write_spiflash - .text.usb_vendor_request_read_r820t - 0x2000c904 0x40 airspy_usb_req.o - 0x2000c904 usb_vendor_request_read_r820t - .text.usb_vendor_request_write_r820t - 0x2000c944 0x38 airspy_usb_req.o - 0x2000c944 usb_vendor_request_write_r820t - .text.usb_vendor_request_read_si5351c - 0x2000c97c 0x34 airspy_usb_req.o - 0x2000c97c usb_vendor_request_read_si5351c - .text.usb_vendor_request_write_si5351c - 0x2000c9b0 0x2c airspy_usb_req.o - 0x2000c9b0 usb_vendor_request_write_si5351c - .text.usb_vendor_request_set_receiver_mode - 0x2000c9dc 0x26 airspy_usb_req.o - 0x2000c9dc usb_vendor_request_set_receiver_mode - *fill* 0x2000ca02 0x2 00 - .text.usb_vendor_request_write_gpio_command - 0x2000ca04 0x48 airspy_usb_req.o - 0x2000ca04 usb_vendor_request_write_gpio_command - .text.usb_vendor_request_read_gpio_command - 0x2000ca4c 0x58 airspy_usb_req.o - 0x2000ca4c usb_vendor_request_read_gpio_command - .text.gpio_set - 0x2000caa4 0xa airspy_usb_req.o - 0x2000caa4 gpio_set - .text.gpio_clear - 0x2000caae 0xa airspy_usb_req.o - 0x2000caae gpio_clear - .text.usb_streaming_disable - 0x2000cab8 0x18 airspy_usb_req.o - 0x2000cab8 usb_streaming_disable - .text.airspy_usb_req_init - 0x2000cad0 0x100 airspy_usb_req.o - 0x2000cad0 airspy_usb_req_init - .text.usb_descriptor_fill_string_serial_number - 0x2000cbd0 0xc0 usb_descriptor.o - 0x2000cbd0 usb_descriptor_fill_string_serial_number - .text.delay 0x2000cc90 0xe airspy_core.o - 0x2000cc90 delay - *fill* 0x2000cc9e 0x2 00 - .text.cpu_reset - 0x2000cca0 0xc airspy_core.o - 0x2000cca0 cpu_reset - .text.enable_biast_power - 0x2000ccac 0x14 airspy_core.o - 0x2000ccac enable_biast_power - .text.disable_biast_power - 0x2000ccc0 0x14 airspy_core.o - 0x2000ccc0 disable_biast_power - .text.hard_fault_handler - 0x2000ccd4 0x14 fault_handler.o - 0x2000ccd4 hard_fault_handler - .text.hard_fault_handler_c - 0x2000cce8 0xc fault_handler.o - 0x2000cce8 hard_fault_handler_c - .text.si5351c_write_single - 0x2000ccf4 0x22 si5351c.o - 0x2000ccf4 si5351c_write_single - .text.si5351c_read_single - 0x2000cd16 0x2c si5351c.o - 0x2000cd16 si5351c_read_single - *fill* 0x2000cd42 0x2 00 - .text.airspy_r820t_write_direct - 0x2000cd44 0x3c r820t.o - .text.r820t_freq_get_idx - 0x2000cd80 0x20 r820t.o - 0x2000cd80 r820t_freq_get_idx - .text.airspy_r820t_write_init - 0x2000cda0 0x44 r820t.o - 0x2000cda0 airspy_r820t_write_init - .text.airspy_r820t_read - 0x2000cde4 0xa4 r820t.o - 0x2000cde4 airspy_r820t_read - .text.airspy_r820t_write_single - 0x2000ce88 0x44 r820t.o - 0x2000ce88 airspy_r820t_write_single - .text.r820t_write_reg - 0x2000cecc 0x1e r820t.o - .text.r820t_write_reg_mask - 0x2000ceea 0x20 r820t.o - *fill* 0x2000cf0a 0x2 00 - .text.airspy_r820t_read_single - 0x2000cf0c 0x18 r820t.o - 0x2000cf0c airspy_r820t_read_single - .text.r820t_set_pll - 0x2000cf24 0xd4 r820t.o - 0x2000cf24 r820t_set_pll - .text.r820t_set_freq - 0x2000cff8 0xa8 r820t.o - 0x2000cff8 r820t_set_freq - .text.r820t_set_lna_gain - 0x2000d0a0 0xe r820t.o - 0x2000d0a0 r820t_set_lna_gain - .text.r820t_set_mixer_gain - 0x2000d0ae 0xe r820t.o - 0x2000d0ae r820t_set_mixer_gain - .text.r820t_set_vga_gain - 0x2000d0bc 0xe r820t.o - 0x2000d0bc r820t_set_vga_gain - .text.r820t_set_lna_agc - 0x2000d0ca 0x12 r820t.o - 0x2000d0ca r820t_set_lna_agc - .text.r820t_set_mixer_agc - 0x2000d0dc 0x12 r820t.o - 0x2000d0dc r820t_set_mixer_agc - *fill* 0x2000d0ee 0x2 00 - .text.r820t_calibrate - 0x2000d0f0 0xa8 r820t.o - 0x2000d0f0 r820t_calibrate - .text.r820t_init - 0x2000d198 0x40 r820t.o - 0x2000d198 r820t_init - .text.r820t_set_if_bandwidth - 0x2000d1d8 0x4c r820t.o - 0x2000d1d8 r820t_set_if_bandwidth - .text.r820t_standby - 0x2000d224 0x68 r820t.o - 0x2000d224 r820t_standby - .text.r820t_startup - 0x2000d28c 0x18 r820t.o - 0x2000d28c r820t_startup - .text.w25q80bv_get_status - 0x2000d2a4 0x34 w25q80bv.o - 0x2000d2a4 w25q80bv_get_status - .text.w25q80bv_get_device_id - 0x2000d2d8 0x4c w25q80bv.o - 0x2000d2d8 w25q80bv_get_device_id - .text.w25q80bv_setup - 0x2000d324 0xf4 w25q80bv.o - 0x2000d324 w25q80bv_setup - .text.w25q80bv_get_unique_id - 0x2000d418 0x94 w25q80bv.o - 0x2000d418 w25q80bv_get_unique_id - .text.w25q80bv_wait_while_busy - 0x2000d4ac 0xc w25q80bv.o - 0x2000d4ac w25q80bv_wait_while_busy - .text.w25q80bv_write_enable - 0x2000d4b8 0x2c w25q80bv.o - 0x2000d4b8 w25q80bv_write_enable - .text.w25q80bv_sector_erase - 0x2000d4e4 0x68 w25q80bv.o - 0x2000d4e4 w25q80bv_sector_erase - .text.w25q80bv_page_program - 0x2000d54c 0x78 w25q80bv.o - 0x2000d54c w25q80bv_page_program - .text.w25q80bv_program - 0x2000d5c4 0x7e w25q80bv.o - 0x2000d5c4 w25q80bv_program - *fill* 0x2000d642 0x2 00 - .text.w25q80bv_read - 0x2000d644 0x7c w25q80bv.o - 0x2000d644 w25q80bv_read - .text.iap_is_implemented - 0x2000d6c0 0x18 rom_iap.o - 0x2000d6c0 iap_is_implemented - .text.iap_cmd_call - 0x2000d6d8 0x5c rom_iap.o - 0x2000d6d8 iap_cmd_call - .text.usb_clear_pending_interrupts - 0x2000d734 0x34 usb.o - .text.usb_flush_primed_endpoints - 0x2000d768 0x1c usb.o - .text.usb_disable_all_endpoints - 0x2000d784 0x50 usb.o - .text.usb_queue_head - 0x2000d7d4 0x18 usb.o - 0x2000d7d4 usb_queue_head - .text.usb_peripheral_reset - 0x2000d7ec 0x20 usb.o - 0x2000d7ec usb_peripheral_reset - .text.usb_endpoint_prime - 0x2000d80c 0x30 usb.o - 0x2000d80c usb_endpoint_prime - .text.usb_endpoint_flush - 0x2000d83c 0x20 usb.o - 0x2000d83c usb_endpoint_flush - .text.usb_endpoint_disable - 0x2000d85c 0x54 usb.o - 0x2000d85c usb_endpoint_disable - .text.usb_endpoint_is_ready - 0x2000d8b0 0x2c usb.o - 0x2000d8b0 usb_endpoint_is_ready - .text.usb_endpoint_schedule_append - 0x2000d8dc 0x68 usb.o - 0x2000d8dc usb_endpoint_schedule_append - .text.usb_endpoint_schedule_wait - 0x2000d944 0x1e usb.o - 0x2000d944 usb_endpoint_schedule_wait - *fill* 0x2000d962 0x2 00 - .text.usb_endpoint_stall - 0x2000d964 0x20 usb.o - 0x2000d964 usb_endpoint_stall - .text.usb_speed - 0x2000d984 0x2c usb.o - 0x2000d984 usb_speed - .text.usb_set_address_immediate - 0x2000d9b0 0x18 usb.o - 0x2000d9b0 usb_set_address_immediate - .text.usb_set_address_deferred - 0x2000d9c8 0x20 usb.o - 0x2000d9c8 usb_set_address_deferred - .text.usb_device_init - 0x2000d9e8 0x88 usb.o - 0x2000d9e8 usb_device_init - .text.usb_run 0x2000da70 0x24 usb.o - 0x2000da70 usb_run - .text.usb_endpoint_init - 0x2000da94 0x90 usb.o - 0x2000da94 usb_endpoint_init - .text.usb0_isr - 0x2000db24 0x18c usb.o - 0x2000db24 usb0_isr - .text.endpoint_queue - 0x2000dcb0 0x20 usb_queue.o - .text.usb_queue_init - 0x2000dcd0 0x54 usb_queue.o - 0x2000dcd0 usb_queue_init - .text.usb_queue_flush_endpoint - 0x2000dd24 0x22 usb_queue.o - 0x2000dd24 usb_queue_flush_endpoint - *fill* 0x2000dd46 0x2 00 - .text.usb_transfer_schedule - 0x2000dd48 0xa0 usb_queue.o - 0x2000dd48 usb_transfer_schedule - .text.usb_transfer_schedule_block - 0x2000dde8 0x1a usb_queue.o - 0x2000dde8 usb_transfer_schedule_block - .text.usb_transfer_schedule_ack - 0x2000de02 0xc usb_queue.o - 0x2000de02 usb_transfer_schedule_ack - .text.usb_queue_transfer_complete - 0x2000de0e 0x36 usb_queue.o - 0x2000de0e usb_queue_transfer_complete - .text.usb_request - 0x2000de44 0x4c usb_request.o - .text.usb_setup_complete - 0x2000de90 0xa usb_request.o - 0x2000de90 usb_setup_complete - .text.usb_control_out_complete - 0x2000de9a 0x1c usb_request.o - 0x2000de9a usb_control_out_complete - .text.usb_control_in_complete - 0x2000deb6 0x1c usb_request.o - 0x2000deb6 usb_control_in_complete - .text.usb_send_descriptor - 0x2000ded2 0x30 usb_standard_request.o - .text.usb_send_descriptor_config - 0x2000df02 0x28 usb_standard_request.o - .text.usb_endpoint_descriptor - 0x2000df2a 0x2a usb_standard_request.o - 0x2000df2a usb_endpoint_descriptor - .text.usb_endpoint_descriptor_max_packet_size - 0x2000df54 0xc usb_standard_request.o - 0x2000df54 usb_endpoint_descriptor_max_packet_size - .text.usb_endpoint_descriptor_transfer_type - 0x2000df60 0x8 usb_standard_request.o - 0x2000df60 usb_endpoint_descriptor_transfer_type - .text.usb_set_configuration_changed_cb - 0x2000df68 0xc usb_standard_request.o - 0x2000df68 usb_set_configuration_changed_cb - .text.usb_set_configuration - 0x2000df74 0x48 usb_standard_request.o - 0x2000df74 usb_set_configuration - .text.usb_standard_request - 0x2000dfbc 0x20c usb_standard_request.o - 0x2000dfbc usb_standard_request - .text.scu_pinmux - 0x2000e1c8 0x4 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - 0x2000e1c8 scu_pinmux - .text.i2c0_init - 0x2000e1cc 0x34 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e1cc i2c0_init - .text.i2c1_init - 0x2000e200 0x38 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e200 i2c1_init - .text.i2c0_tx_start - 0x2000e238 0x40 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e238 i2c0_tx_start - .text.i2c1_tx_start - 0x2000e278 0x40 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e278 i2c1_tx_start - .text.i2c0_tx_byte - 0x2000e2b8 0x4c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e2b8 i2c0_tx_byte - .text.i2c1_tx_byte - 0x2000e304 0x4c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e304 i2c1_tx_byte - .text.i2c0_rx_byte - 0x2000e350 0x4c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e350 i2c0_rx_byte - .text.i2c1_rx_byte - 0x2000e39c 0x5c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e39c i2c1_rx_byte - .text.i2c0_stop - 0x2000e3f8 0x24 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e3f8 i2c0_stop - .text.i2c1_stop - 0x2000e41c 0x24 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0x2000e41c i2c1_stop - .text.ssp_init - 0x2000e440 0xc0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - 0x2000e440 ssp_init - .text.ssp_transfer - 0x2000e500 0x4c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - 0x2000e500 ssp_transfer - .text.blocking_handler - 0x2000e54c 0x4 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - 0x2000e54c adc0_isr - 0x2000e54c m0sub_isr - 0x2000e54c usart2_or_c_can1_isr - 0x2000e54c usart3_isr - 0x2000e54c rtc_isr - 0x2000e54c gint1_isr - 0x2000e54c flasheepromat_isr - 0x2000e54c usart0_isr - 0x2000e54c blocking_handler - 0x2000e54c i2c0_or_irc1_isr - 0x2000e54c sdio_isr - 0x2000e54c ritimer_or_wwdt_isr - 0x2000e54c dma_isr - 0x2000e54c ethernet_isr - 0x2000e54c c_can0_isr - 0x2000e54c eventrouter_isr - 0x2000e54c spifi_or_adchs_isr - 0x2000e54c uart1_isr - 0x2000e54c ssp0_or_ssp1_isr - 0x2000e54c sct_isr - 0x2000e54c timer3_isr - 0x2000e54c lcd_isr - 0x2000e54c spi_or_dac_isr - 0x2000e54c sgpio_isr - 0x2000e54c i2s0_or_i2s1_isr - 0x2000e54c adc1_isr - 0x2000e54c mcpwm_isr - 0x2000e54c timer0_isr - 0x2000e54c usb1_isr - 0x2000e54c pin_int4_isr - .text.null_handler - 0x2000e550 0x4 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - 0x2000e550 sv_call_handler - 0x2000e550 pend_sv_handler - 0x2000e550 sys_tick_handler - 0x2000e550 nmi_handler - 0x2000e550 null_handler - .text.reset_handler - 0x2000e554 0x168 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - 0x2000e554 reset_handler - .text.nvic_enable_irq - 0x2000e6bc 0x18 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - 0x2000e6bc nvic_enable_irq - .text.nvic_set_priority - 0x2000e6d4 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - 0x2000e6d4 nvic_set_priority - .text 0x2000e6f4 0x14 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_thumb1_case_uqi.o) - 0x2000e6f4 __gnu_thumb1_case_uqi - .text 0x2000e708 0x9c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - 0x2000e708 __aeabi_uidiv - 0x2000e708 __udivsi3 - 0x2000e790 __aeabi_uidivmod - .text 0x2000e7a4 0x4 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_dvmd_tls.o) - 0x2000e7a4 __aeabi_idiv0 - 0x2000e7a4 __aeabi_ldiv0 - .text 0x2000e7a8 0x44 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - 0x2000e7a8 __muldi3 - 0x2000e7a8 __aeabi_lmul - .text.memcpy 0x2000e7ec 0x144 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - 0x2000e7ec memcpy - .text.strcpy 0x2000e930 0x10 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - 0x2000e930 strcpy - .text.strlen 0x2000e940 0x10 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - 0x2000e940 strlen - 0x2000e950 . = ALIGN (0x4) - *(.rodata*) - .rodata.version_string - 0x2000e950 0x29 airspy_m0.o - 0x2000e950 version_string - *fill* 0x2000e979 0x3 00 - .rodata.usb_request_handlers - 0x2000e97c 0x10 airspy_usb_req.o - 0x2000e97c usb_request_handlers - .rodata.usb_descriptor_strings - 0x2000e98c 0x14 usb_descriptor.o - 0x2000e98c usb_descriptor_strings - .rodata.htoa 0x2000e9a0 0x10 usb_descriptor.o - .rodata 0x2000e9b0 0x14 r820t.o - .rodata.freq_to_idx - 0x2000e9c4 0x258 r820t.o - 0x2000e9c4 freq_to_idx - .rodata.freq_ranges - 0x2000ec1c 0x3f r820t.o - 0x2000ec1c freq_ranges - .rodata.lut 0x2000ec5b 0x10 r820t.o - 0x2000ec5b lut - 0x2000ec6c . = ALIGN (0x4) - *fill* 0x2000ec6b 0x1 00 - -.glue_7 0x2000ec6c 0x0 - .glue_7 0x00000000 0x0 linker stubs - -.glue_7t 0x2000ec6c 0x0 - .glue_7t 0x00000000 0x0 linker stubs - -.vfp11_veneer 0x2000ec6c 0x0 - .vfp11_veneer 0x00000000 0x0 linker stubs - -.v4_bx 0x2000ec6c 0x0 - .v4_bx 0x00000000 0x0 linker stubs - -.iplt 0x2000ec6c 0x0 - .iplt 0x00000000 0x0 airspy_m0.o - -.rel.dyn 0x2000ec6c 0x0 - .rel.iplt 0x00000000 0x0 airspy_m0.o - -.preinit_array 0x2000ec6c 0x0 - 0x2000ec6c . = ALIGN (0x4) - 0x2000ec6c __preinit_array_start = . - *(.preinit_array) - 0x2000ec6c __preinit_array_end = . - -.init_array 0x2000ec6c 0x0 - 0x2000ec6c . = ALIGN (0x4) - 0x2000ec6c __init_array_start = . - *(SORT(.init_array.*)) - *(.init_array) - 0x2000ec6c __init_array_end = . - -.fini_array 0x2000ec6c 0x0 - 0x2000ec6c . = ALIGN (0x4) - 0x2000ec6c __fini_array_start = . - *(.fini_array) - *(SORT(.fini_array.*)) - 0x2000ec6c __fini_array_end = . - -.ARM.extab - *(.ARM.extab*) - *(.ARM.extab*) - -.ARM.exidx 0x2000ec6c 0x0 - 0x2000ec6c __exidx_start = . - *(.ARM.exidx*) - 0x2000ec6c __exidx_end = . - 0x2000ec6c . = ALIGN (0x4) - 0x2000ec6c _etext = . - 0x00000000 _etext_ram = 0x0 - 0x00000000 _etext_rom = 0x0 - 0x2000c000 . = ORIGIN (ram_ahb2) - -.data 0x2000ec6c 0x2c4 - 0x2000ec6c _data = . - *(.data*) - .data.set_samplerate - 0x2000ec6c 0x4 airspy_m0.o - 0x2000ec6c set_samplerate - .data.set_packing - 0x2000ec70 0x4 airspy_m0.o - 0x2000ec70 set_packing - .data.usb_bulk_buffer_offset - 0x2000ec74 0x4 airspy_m0.o - 0x2000ec74 usb_bulk_buffer_offset - .data.start_adchs - 0x2000ec78 0x4 airspy_m0.o - 0x2000ec78 start_adchs - .data.usb_bulk_buffer_length - 0x2000ec7c 0x4 airspy_m0.o - 0x2000ec7c usb_bulk_buffer_length - .data.last_offset_m0 - 0x2000ec80 0x4 airspy_m0.o - 0x2000ec80 last_offset_m0 - .data.usb_descriptor_device_qualifier - 0x2000ec84 0xa usb_descriptor.o - 0x2000ec84 usb_descriptor_device_qualifier - .data.usb_descriptor_configuration_full_speed - 0x2000ec8e 0x21 usb_descriptor.o - 0x2000ec8e usb_descriptor_configuration_full_speed - .data.usb_descriptor_CompatIDDescriptor - 0x2000ecaf 0x28 usb_descriptor.o - 0x2000ecaf usb_descriptor_CompatIDDescriptor - .data.usb_descriptor_string_serial_number - 0x2000ecd7 0x36 usb_descriptor.o - 0x2000ecd7 usb_descriptor_string_serial_number - .data.usb_descriptor_device - 0x2000ed0d 0x12 usb_descriptor.o - 0x2000ed0d usb_descriptor_device - .data.usb_descriptor_string_languages - 0x2000ed1f 0x4 usb_descriptor.o - 0x2000ed1f usb_descriptor_string_languages - .data.usb_descriptor_string_manufacturer - 0x2000ed23 0x1e usb_descriptor.o - 0x2000ed23 usb_descriptor_string_manufacturer - .data.usb_descriptor_MSDescriptor - 0x2000ed41 0x12 usb_descriptor.o - 0x2000ed41 usb_descriptor_MSDescriptor - .data.usb_descriptor_configuration_high_speed - 0x2000ed53 0x21 usb_descriptor.o - 0x2000ed53 usb_descriptor_configuration_high_speed - .data.usb_descriptor_string_product - 0x2000ed74 0xe usb_descriptor.o - 0x2000ed74 usb_descriptor_string_product - .data.usb_descriptor_ExtProps - 0x2000ed82 0x8e usb_descriptor.o - 0x2000ed82 usb_descriptor_ExtProps - .data.usb_configuration_high_speed - 0x2000ee10 0xc usb_device.o - 0x2000ee10 usb_configuration_high_speed - .data.usb_device - 0x2000ee1c 0x14 usb_device.o - 0x2000ee1c usb_device - .data.usb_configuration_full_speed - 0x2000ee30 0xc usb_device.o - 0x2000ee30 usb_configuration_full_speed - .data.usb_configurations - 0x2000ee3c 0xc usb_device.o - 0x2000ee3c usb_configurations - .data.usb_endpoint_control_out_queue - 0x2000ee48 0x10 usb_endpoint.o - 0x2000ee48 usb_endpoint_control_out_queue - .data.usb_endpoint_bulk_out_queue - 0x2000ee58 0x10 usb_endpoint.o - 0x2000ee58 usb_endpoint_bulk_out_queue - .data.usb_endpoint_control_in_queue - 0x2000ee68 0x10 usb_endpoint.o - 0x2000ee68 usb_endpoint_control_in_queue - .data.usb_endpoint_control_out - 0x2000ee78 0x28 usb_endpoint.o - 0x2000ee78 usb_endpoint_control_out - .data.usb_endpoint_bulk_out - 0x2000eea0 0x28 usb_endpoint.o - 0x2000eea0 usb_endpoint_bulk_out - .data.usb_endpoint_control_in - 0x2000eec8 0x28 usb_endpoint.o - 0x2000eec8 usb_endpoint_control_in - .data.usb_endpoint_bulk_in_queue - 0x2000eef0 0x10 usb_endpoint.o - 0x2000eef0 usb_endpoint_bulk_in_queue - .data.usb_endpoint_bulk_in - 0x2000ef00 0x28 usb_endpoint.o - 0x2000ef00 usb_endpoint_bulk_in - .data.airspy_conf - 0x2000ef28 0x4 airspy_core.o - 0x2000ef28 airspy_conf - .data.r820t_state_standby - 0x2000ef2c 0x1 r820t.o - 0x2000ef2c r820t_state_standby - 0x2000ef30 . = ALIGN (0x4) - *fill* 0x2000ef2d 0x3 00 - 0x2000ec6c _data_loadaddr = LOADADDR (.data) - 0x2000ef30 _data = . - 0x2000ef30 _edata = . - -.igot.plt 0x2000ef30 0x0 - .igot.plt 0x00000000 0x0 airspy_m0.o - -.bss 0x2000f000 0xb04 - 0x2000f000 _bss = . - *(.bss_aligned*) - *(.bss*) - .bss.phase 0x2000f000 0x4 airspy_m0.o - 0x2000f000 phase - .bss.receiver_mode - 0x2000f004 0x1 airspy_rx.o - *fill* 0x2000f005 0x3b 00 - .bss.usb_endpoint_bulk_in_transfers - 0x2000f040 0x80 usb_endpoint.o - .bss.usb_endpoint_control_in_transfers - 0x2000f0c0 0x200 usb_endpoint.o - .bss.usb_endpoint_bulk_out_transfers - 0x2000f2c0 0x80 usb_endpoint.o - .bss.usb_device_usb0 - 0x2000f340 0x4 usb.o - 0x2000f340 usb_device_usb0 - .bss.endpoint_queues - 0x2000f344 0x30 usb_queue.o - 0x2000f344 endpoint_queues - .bss.usb_configuration_changed_cb - 0x2000f374 0x4 usb_standard_request.o - 0x2000f374 usb_configuration_changed_cb - .bss.USB_InterfaceStatus - 0x2000f378 0x2 usb_standard_request.o - 0x2000f378 USB_InterfaceStatus - .bss.USB_DeviceStatus - 0x2000f37a 0x2 usb_standard_request.o - 0x2000f37a USB_DeviceStatus - .bss.USB_CurrentInterface - 0x2000f37c 0x1 usb_standard_request.o - 0x2000f37c USB_CurrentInterface - *(COMMON) - *fill* 0x2000f37d 0x3 00 - COMMON 0x2000f380 0xd airspy_m0.o - 0x2000f380 set_sample_r_params - 0x2000f388 set_freq_params - 0x2000f38c __gnu_lto_v1 - *fill* 0x2000f38d 0x3 00 - COMMON 0x2000f390 0x171 airspy_usb_req.o - 0x2000f390 vendor_request_handler - 0x2000f400 spiflash_buffer - 0x2000f500 sample_rate_conf_no - *fill* 0x2000f501 0x3f 00 - COMMON 0x2000f540 0x200 usb_endpoint.o - 0x2000f540 usb_endpoint_control_out_transfers - COMMON 0x2000f740 0x4 fault_handler.o - 0x2000f740 hard_fault_stack_pt - COMMON 0x2000f744 0x20 r820t.o - 0x2000f744 r820t_read_data - COMMON 0x2000f764 0x1 w25q80bv.o - 0x2000f764 device_id - *fill* 0x2000f765 0x9b 00 - COMMON 0x2000f800 0x300 usb.o - 0x2000f800 usb_qh - COMMON 0x2000fb00 0x2 usb_standard_request.o - 0x2000fb00 USB_EpStatus - 0x2000fb04 . = ALIGN (0x4) - *fill* 0x2000fb02 0x2 00 - 0x2000fb04 _ebss = . - -/DISCARD/ - *(.eh_frame) - 0x2000fb04 . = ALIGN (0x4) - 0x2000fb04 end = . - 0x20000fe0 __StackTop = ((ORIGIN (ram_ahb1_m0_stack) + 0x1000) - 0x20) - 0x20000fe0 PROVIDE (_stack, __StackTop) -OUTPUT(airspy_m0.elf elf32-littlearm) - -.debug_info 0x00000000 0xdda3 - .debug_info 0x00000000 0x123e airspy_m0.o - .debug_info 0x0000123e 0x47e airspy_rx.o - .debug_info 0x000016bc 0x27d5 airspy_usb_req.o - .debug_info 0x00003e91 0x3e6 usb_descriptor.o - .debug_info 0x00004277 0x241 usb_device.o - .debug_info 0x000044b8 0x596 usb_endpoint.o - .debug_info 0x00004a4e 0x143c airspy_core.o - .debug_info 0x00005e8a 0x3a5 fault_handler.o - .debug_info 0x0000622f 0x72a si5351c.o - .debug_info 0x00006959 0x1446 r820t.o - .debug_info 0x00007d9f 0x1530 w25q80bv.o - .debug_info 0x000092cf 0x37a rom_iap.o - .debug_info 0x00009649 0x1624 usb.o - .debug_info 0x0000ac6d 0xa20 usb_queue.o - .debug_info 0x0000b68d 0x641 usb_request.o - .debug_info 0x0000bcce 0xef0 usb_standard_request.o - .debug_info 0x0000cbbe 0x7b9 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_info 0x0000d377 0x248 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_info 0x0000d5bf 0x345 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_info 0x0000d904 0x2e5 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_info 0x0000dbe9 0x1ba ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_abbrev 0x00000000 0x28fe - .debug_abbrev 0x00000000 0x30c airspy_m0.o - .debug_abbrev 0x0000030c 0x194 airspy_rx.o - .debug_abbrev 0x000004a0 0x3e3 airspy_usb_req.o - .debug_abbrev 0x00000883 0x103 usb_descriptor.o - .debug_abbrev 0x00000986 0xae usb_device.o - .debug_abbrev 0x00000a34 0x11c usb_endpoint.o - .debug_abbrev 0x00000b50 0x2da airspy_core.o - .debug_abbrev 0x00000e2a 0x113 fault_handler.o - .debug_abbrev 0x00000f3d 0x18f si5351c.o - .debug_abbrev 0x000010cc 0x363 r820t.o - .debug_abbrev 0x0000142f 0x29a w25q80bv.o - .debug_abbrev 0x000016c9 0x17c rom_iap.o - .debug_abbrev 0x00001845 0x4cc usb.o - .debug_abbrev 0x00001d11 0x2c3 usb_queue.o - .debug_abbrev 0x00001fd4 0x1a7 usb_request.o - .debug_abbrev 0x0000217b 0x342 usb_standard_request.o - .debug_abbrev 0x000024bd 0x86 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_abbrev 0x00002543 0xbe ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_abbrev 0x00002601 0x11e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_abbrev 0x0000271f 0x137 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_abbrev 0x00002856 0xa8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_loc 0x00000000 0x6177 - .debug_loc 0x00000000 0x188 airspy_m0.o - .debug_loc 0x00000188 0x41 airspy_rx.o - .debug_loc 0x000001c9 0x1c42 airspy_usb_req.o - .debug_loc 0x00001e0b 0x235 usb_descriptor.o - .debug_loc 0x00002040 0x6ca airspy_core.o - .debug_loc 0x0000270a 0x31f si5351c.o - .debug_loc 0x00002a29 0x1146 r820t.o - .debug_loc 0x00003b6f 0x53d w25q80bv.o - .debug_loc 0x000040ac 0xae rom_iap.o - .debug_loc 0x0000415a 0xa86 usb.o - .debug_loc 0x00004be0 0x527 usb_queue.o - .debug_loc 0x00005107 0x211 usb_request.o - .debug_loc 0x00005318 0xa0b usb_standard_request.o - .debug_loc 0x00005d23 0x136 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_loc 0x00005e59 0x1ea ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_loc 0x00006043 0x34 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_loc 0x00006077 0x100 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_aranges 0x00000000 0x740 - .debug_aranges - 0x00000000 0x50 airspy_m0.o - .debug_aranges - 0x00000050 0x28 airspy_rx.o - .debug_aranges - 0x00000078 0x128 airspy_usb_req.o - .debug_aranges - 0x000001a0 0x20 usb_descriptor.o - .debug_aranges - 0x000001c0 0x18 usb_device.o - .debug_aranges - 0x000001d8 0x18 usb_endpoint.o - .debug_aranges - 0x000001f0 0x80 airspy_core.o - .debug_aranges - 0x00000270 0x40 fault_handler.o - .debug_aranges - 0x000002b0 0x70 si5351c.o - .debug_aranges - 0x00000320 0xb8 r820t.o - .debug_aranges - 0x000003d8 0x70 w25q80bv.o - .debug_aranges - 0x00000448 0x28 rom_iap.o - .debug_aranges - 0x00000470 0xb8 usb.o - .debug_aranges - 0x00000528 0x50 usb_queue.o - .debug_aranges - 0x00000578 0x38 usb_request.o - .debug_aranges - 0x000005b0 0x58 usb_standard_request.o - .debug_aranges - 0x00000608 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_aranges - 0x00000628 0x68 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_aranges - 0x00000690 0x30 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_aranges - 0x000006c0 0x30 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_aranges - 0x000006f0 0x50 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_ranges 0x00000000 0xc78 - .debug_ranges 0x00000000 0x58 airspy_m0.o - .debug_ranges 0x00000058 0x18 airspy_rx.o - .debug_ranges 0x00000070 0x198 airspy_usb_req.o - .debug_ranges 0x00000208 0x10 usb_descriptor.o - .debug_ranges 0x00000218 0xa0 airspy_core.o - .debug_ranges 0x000002b8 0x30 fault_handler.o - .debug_ranges 0x000002e8 0x60 si5351c.o - .debug_ranges 0x00000348 0x1f8 r820t.o - .debug_ranges 0x00000540 0xb0 w25q80bv.o - .debug_ranges 0x000005f0 0x18 rom_iap.o - .debug_ranges 0x00000608 0x390 usb.o - .debug_ranges 0x00000998 0x140 usb_queue.o - .debug_ranges 0x00000ad8 0x28 usb_request.o - .debug_ranges 0x00000b00 0x60 usb_standard_request.o - .debug_ranges 0x00000b60 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_ranges 0x00000b70 0x58 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_ranges 0x00000bc8 0x50 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_ranges 0x00000c18 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_ranges 0x00000c38 0x40 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_line 0x00000000 0x3c14 - .debug_line 0x00000000 0x31d airspy_m0.o - .debug_line 0x0000031d 0x13b airspy_rx.o - .debug_line 0x00000458 0x6d1 airspy_usb_req.o - .debug_line 0x00000b29 0x148 usb_descriptor.o - .debug_line 0x00000c71 0xe3 usb_device.o - .debug_line 0x00000d54 0x122 usb_endpoint.o - .debug_line 0x00000e76 0x46f airspy_core.o - .debug_line 0x000012e5 0x133 fault_handler.o - .debug_line 0x00001418 0x243 si5351c.o - .debug_line 0x0000165b 0x405 r820t.o - .debug_line 0x00001a60 0x2c6 w25q80bv.o - .debug_line 0x00001d26 0x117 rom_iap.o - .debug_line 0x00001e3d 0x505 usb.o - .debug_line 0x00002342 0x2b2 usb_queue.o - .debug_line 0x000025f4 0x160 usb_request.o - .debug_line 0x00002754 0x285 usb_standard_request.o - .debug_line 0x000029d9 0x2ee ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_line 0x00002cc7 0x42e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_line 0x000030f5 0x351 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_line 0x00003446 0x424 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_line 0x0000386a 0x3aa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.debug_str 0x00000000 0x11b69 - .debug_str 0x00000000 0xbd2 airspy_m0.o - 0xdcf (size before relaxing) - .debug_str 0x00000bd2 0x48 airspy_rx.o - 0x382 (size before relaxing) - .debug_str 0x00000c1a 0xa41 airspy_usb_req.o - 0x146a (size before relaxing) - .debug_str 0x0000165b 0x26f usb_descriptor.o - 0x675 (size before relaxing) - .debug_str 0x000018ca 0x5a usb_device.o - 0x2d1 (size before relaxing) - .debug_str 0x00001924 0x93 usb_endpoint.o - 0x4c9 (size before relaxing) - .debug_str 0x000019b7 0x6df airspy_core.o - 0xc0f (size before relaxing) - .debug_str 0x00002096 0x18d fault_handler.o - 0x28e (size before relaxing) - .debug_str 0x00002223 0x8a si5351c.o - 0x2ae (size before relaxing) - .debug_str 0x000022ad 0x235 r820t.o - 0x4c4 (size before relaxing) - .debug_str 0x000024e2 0x346 w25q80bv.o - 0x897 (size before relaxing) - .debug_str 0x00002828 0x49 rom_iap.o - 0x413 (size before relaxing) - .debug_str 0x00002871 0x6b5 usb.o - 0xa9b (size before relaxing) - .debug_str 0x00002f26 0xfa usb_queue.o - 0x50c (size before relaxing) - .debug_str 0x00003020 0x2da usb_request.o - 0x6ca (size before relaxing) - .debug_str 0x000032fa 0x55b usb_standard_request.o - 0xe21 (size before relaxing) - .debug_str 0x00003855 0x5f4c ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - 0x6413 (size before relaxing) - .debug_str 0x000097a1 0x54ff ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - 0xb5d0 (size before relaxing) - .debug_str 0x0000eca0 0x1ab8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - 0xa4cf (size before relaxing) - .debug_str 0x00010758 0xb09 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - 0x3d20 (size before relaxing) - .debug_str 0x00011261 0x908 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - 0x4058 (size before relaxing) - -.comment 0x00000000 0x70 - .comment 0x00000000 0x70 airspy_m0.o - 0x71 (size before relaxing) - .comment 0x00000000 0x71 airspy_rx.o - .comment 0x00000000 0x71 airspy_usb_req.o - .comment 0x00000000 0x71 usb_descriptor.o - .comment 0x00000000 0x71 usb_device.o - .comment 0x00000000 0x71 usb_endpoint.o - .comment 0x00000000 0x71 airspy_core.o - .comment 0x00000000 0x71 fault_handler.o - .comment 0x00000000 0x71 si5351c.o - .comment 0x00000000 0x71 r820t.o - .comment 0x00000000 0x71 w25q80bv.o - .comment 0x00000000 0x71 rom_iap.o - .comment 0x00000000 0x71 usb.o - .comment 0x00000000 0x71 usb_queue.o - .comment 0x00000000 0x71 usb_request.o - .comment 0x00000000 0x71 usb_standard_request.o - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - -.ARM.attributes - 0x00000000 0x31 - .ARM.attributes - 0x00000000 0x31 airspy_m0.o - .ARM.attributes - 0x00000031 0x31 airspy_rx.o - .ARM.attributes - 0x00000062 0x31 airspy_usb_req.o - .ARM.attributes - 0x00000093 0x31 usb_descriptor.o - .ARM.attributes - 0x000000c4 0x31 usb_device.o - .ARM.attributes - 0x000000f5 0x31 usb_endpoint.o - .ARM.attributes - 0x00000126 0x31 airspy_core.o - .ARM.attributes - 0x00000157 0x31 fault_handler.o - .ARM.attributes - 0x00000188 0x31 si5351c.o - .ARM.attributes - 0x000001b9 0x31 r820t.o - .ARM.attributes - 0x000001ea 0x31 w25q80bv.o - .ARM.attributes - 0x0000021b 0x31 rom_iap.o - .ARM.attributes - 0x0000024c 0x31 usb.o - .ARM.attributes - 0x0000027d 0x31 usb_queue.o - .ARM.attributes - 0x000002ae 0x31 usb_request.o - .ARM.attributes - 0x000002df 0x31 usb_standard_request.o - .ARM.attributes - 0x00000310 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .ARM.attributes - 0x00000341 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .ARM.attributes - 0x00000372 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .ARM.attributes - 0x000003a3 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .ARM.attributes - 0x000003d4 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .ARM.attributes - 0x00000405 0x1e c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_thumb1_case_uqi.o) - .ARM.attributes - 0x00000423 0x1e c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - .ARM.attributes - 0x00000441 0x1e c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_dvmd_tls.o) - .ARM.attributes - 0x0000045f 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - .ARM.attributes - 0x0000048b 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - .ARM.attributes - 0x000004b7 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - .ARM.attributes - 0x000004e3 0x2c c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - -.debug_frame 0x00000000 0x11b8 - .debug_frame 0x00000000 0xac airspy_m0.o - .debug_frame 0x000000ac 0x3c airspy_rx.o - .debug_frame 0x000000e8 0x374 airspy_usb_req.o - .debug_frame 0x0000045c 0x30 usb_descriptor.o - .debug_frame 0x0000048c 0x158 airspy_core.o - .debug_frame 0x000005e4 0x60 fault_handler.o - .debug_frame 0x00000644 0x148 si5351c.o - .debug_frame 0x0000078c 0x228 r820t.o - .debug_frame 0x000009b4 0x14c w25q80bv.o - .debug_frame 0x00000b00 0x3c rom_iap.o - .debug_frame 0x00000b3c 0x1cc usb.o - .debug_frame 0x00000d08 0xbc usb_queue.o - .debug_frame 0x00000dc4 0x70 usb_request.o - .debug_frame 0x00000e34 0xc8 usb_standard_request.o - .debug_frame 0x00000efc 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_frame 0x00000f1c 0xb0 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_frame 0x00000fcc 0x68 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_frame 0x00001034 0x40 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_frame 0x00001074 0x80 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_frame 0x000010f4 0x20 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_udivsi3.o) - .debug_frame 0x00001114 0x30 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a(_muldi3.o) - .debug_frame 0x00001144 0x34 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-memcpy.o) - .debug_frame 0x00001178 0x20 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strcpy.o) - .debug_frame 0x00001198 0x20 c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a(lib_a-strlen.o) - -.debug_macro 0x00000000 0x31e3 - .debug_macro 0x00000000 0x94 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000094 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000872 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x000008ac 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x000008bc 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x000008ea 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x0000098c 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000b9a 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000bbc 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000cb6 0x16f ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00000e25 0x6db ../libopencm3/lib\libopencm3_lpc43xx_m0.a(scu.o) - .debug_macro 0x00001500 0xb2 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x000015b2 0x180 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00001732 0x6e1 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x00001e13 0xaca ../libopencm3/lib\libopencm3_lpc43xx_m0.a(i2c.o) - .debug_macro 0x000028dd 0xa6 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00002983 0xf5 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00002a78 0x328 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(ssp.o) - .debug_macro 0x00002da0 0xc8 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00002e68 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00002e96 0x47 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00002edd 0xc4 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(vector.o) - .debug_macro 0x00002fa1 0xb5 ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) - .debug_macro 0x00003056 0x18d ../libopencm3/lib\libopencm3_lpc43xx_m0.a(nvic.o) diff --git a/airspy_m0/airspy_m0.o b/airspy_m0/airspy_m0.o deleted file mode 100644 index 3e1f9f0..0000000 Binary files a/airspy_m0/airspy_m0.o and /dev/null differ diff --git a/airspy_m0/airspy_m0.srec b/airspy_m0/airspy_m0.srec deleted file mode 100644 index 618ded9..0000000 --- a/airspy_m0/airspy_m0.srec +++ /dev/null @@ -1,758 +0,0 @@ -S01100006169727370795F6D302E737265637F -S3152000C000E00F002055E5002051E50020D5CC00208A -S3152000C01000000000000000000000000000000000FA -S3152000C02000000000000000000000000051E5002094 -S3152000C030000000000000000051E5002051E500202E -S3152000C0404DE50020D9C100204DE50020000000006C -S3152000C0504DE500204DE500204DE500204DE5002072 -S3152000C06025DB00204DE500204DE500204DE5002094 -S3152000C0704DE500204DE500204DE500204DE5002052 -S3152000C0804DE500204DE500204DE500204DE5002042 -S3152000C0904DE500204DE500204DE500204DE5002032 -S3152000C0A04DE500204DE500204DE500204DE5002022 -S3152000C0B04DE500204DE500204DE500204DE5002012 -S3152000C0C008B503695868002801D000F015F900F07A -S3152000C0D0F9F808BD054B0122196848700A70BFF3AC -S3152000C0E04F8F40BF08680028FCD170476CEC0020B9 -S3152000C0F0054B0122196848700A70BFF34F8F40BF65 -S3152000C10008680028FCD1704770EC002038B5204B19 -S3152000C110051C1868012245700270BFF34F8F40BF7F -S3152000C12001680029FCD11B4C2368188B02F04EF8BD -S3152000C1302068408B02F064F86AB2002A12DA7F2067 -S3152000C1402168054018225543081C0431CB6F48301E -S3152000C1505919096901F020F82468201C0434483054 -S3152000C160E36F0DE0182321685D438A6F081C51197F -S3152000C1704830096901F010F82468201CA36F483064 -S3152000C1805D19297D01F028F8034A0120106038BD89 -S3152000C19078EC002028EF002000F0002010B5041CC9 -S3152000C1A001F040F80A4B0222186844700270BFF36F -S3152000C1B04F8F40BF01680029FCD1064C2368188B9D -S3152000C1C002F004F82068808B02F01AF810BDC046F1 -S3152000C1D078EC002028EF0020014B00221A607047DF -S3152000C1E03031044070B58CB000F072FC274B01ACA6 -S3152000C1F01868483001F04AF8254801F0B5FE01F0EC -S3152000C200F5FA244D0020291C01F0EEFB224801F00E -S3152000C2105FFD224801F05CFD214801F059FD2148CF -S3152000C22001F056FD204801F035FC204801F032FC93 -S3152000C2303A202070201C01F04FFA218B002903D1CF -S3152000C240606AA16A00F0C4FC0820FF2102F042FACD -S3152000C2500120011C02F03EFA012002F02FFA281CD0 -S3152000C26001F006FC124A134B134D1668186829680C -S3152000C27020BF346802680B689C42F9D00F4E1048E4 -S3152000C280A11901F0B1FD2A681460EBE728EF002020 -S3152000C290C1C000201CEE002048EE002068EE0020E1 -S3152000C2A058EE0020F0EE002078EE0020C8EE0020A8 -S3152000C2B074EC00207CEC002080EC00200040002064 -S3152000C2C000EF002038B5041C00F0F6FB074D012CCA -S3152000C2D006D1074801F0DEFB2878FFF717FF02E0BA -S3152000C2E02878FFF75BFF034B1C7038BD00F5002054 -S3152000C2F000EF002004F00020014B18787047C0465C -S3152000C30004F0002008B543781B2B06D8054A9B006D -S3152000C3109B58002B04D0984703E04842484100E050 -S3152000C320012008BD90F3002008B5002901D100F0B6 -S3152000C330B7FC002008BD70B5051C00200C1E8442E9 -S3152000C3400DD16E880120B21E0B2A08D800F0EAFF14 -S3152000C350300401F0C7F8A86901F053FD201C70BD18 -S3152000C36038B50023994219D181880123FF2915D890 -S3152000C37044889C4212D80A4D4A0952191F25294041 -S3152000C38092008B401168012C01D10B4301E09943A7 -S3152000C3900B1C1360806901F034FD0023181C38BD86 -S3152000C3A000D8031038B5051C0C1E07D100F0BAFFC3 -S3152000C3B0201C01F097F8A86901F023FD002038BD64 -S3152000C3C0F8B5041C00292AD1164B81881868021C4E -S3152000C3D0763215882E1C8D4200D90E1CB2B2124917 -S3152000C3E0402A02D8002A03D000E04022002303E09E -S3152000C3F00D60A06904220DE0934209DA18265E43F7 -S3152000C400876F9D00BE19376901337E004E51F3E7D1 -S3152000C410A069920001F0E8FCE06901F0F2FC00203E -S3152000C420F8BDC04628EF002000F40020002238B5D1 -S3152000C430041C0D1E95421AD183880122FF2B16D883 -S3152000C4400C4859090918880001681F200340101C50 -S3152000C4509840031C0B40591E8B41211C2372083126 -S3152000C460A06901F0C1FCE06901F0CBFC2A1C101C7C -S3152000C47038BDC04600D8031070B50025041C0E1E1A -S3152000C480AE4217D18388042B08D1C2880A49806915 -S3152000C49001F0AAFCE06901F0B4FC0BE00125052BB4 -S3152000C4A008D1C2880549806901F09EFCE06901F047 -S3152000C4B0A8FC351C281C70BDAFEC002082ED0020A6 -S3152000C4C010B5041C002909D10172011C08318069AC -S3152000C4D0012201F089FCE06901F093FC002010BDE7 -S3152000C4E010B5041C00290AD18388012B02D100F043 -S3152000C4F0DDFB01E000F0E4FBA06901F082FC0020F6 -S3152000C50010BD000010B5041C00290FD1084B21795D -S3152000C5101868483000F0E2FD211C20720831A0691D -S3152000C520012201F061FCE06901F06BFC002010BDE6 -S3152000C53028EF002010B5041C00290FD1084B2179C3 -S3152000C5401868483000F0C1FD211C20720831A0690E -S3152000C550012201F049FCE06901F053FC002010BDE6 -S3152000C56028EF002010B5041C00290FD1084B217993 -S3152000C5701868483000F0A2FD211C20720831A069FD -S3152000C580012201F031FCE06901F03BFC002010BDE6 -S3152000C59028EF002010B5041C00290FD1084B217963 -S3152000C5A01868483000F083FD211C20720831A069EC -S3152000C5B0012201F019FCE06901F023FC002010BDE6 -S3152000C5C028EF002010B5041C00290FD1084B217933 -S3152000C5D01868483000F064FD211C20720831A069DB -S3152000C5E0012201F001FCE06901F00BFC002010BDE6 -S3152000C5F028EF002010B5041C002905D10949042282 -S3152000C600C06901F0F1FB0BE0012909D1064B054970 -S3152000C61018680968483000F0EFFCA06901F0F1FBCA -S3152000C620002010BD88F3002028EF002070B5041CE0 -S3152000C6300020814255D1A3882A4A3F2B06D810686C -S3152000C64076300188012099422ADC4AE0FA201268D5 -S3152000C65080005843131C76331B8899420CDA182520 -S3152000C6604D43966F75192E69B500854202D11E4A33 -S3152000C67011701AE00131F0E7111C7E310988002380 -S3152000C68000E001338B420EDA151DEE6F18255D434F -S3152000C69076193569AE008642F3D1802041420B439C -S3152000C6A0114E337001E001201BE0FFF725FE0E4DF1 -S3152000C6B0061E012E02D12878FFF770FD2878FFF795 -S3152000C6C009FD012E02D12878FFF720FD0122211C29 -S3152000C6D022720831A06901F087FBE06901F091FB25 -S3152000C6E0002070BD28EF002000F5002070B5041C46 -S3152000C6F00020814221D1A388012083421DD8DEB2A9 -S3152000C700FFF7FAFD051E012D03D10C480078FFF72F -S3152000C71045FD301CFFF7ECFC012D03D107490878B5 -S3152000C720FFF7F4FC0122211C22720831A06901F0D6 -S3152000C7305BFBE06901F065FB002070BD00F5002081 -S3152000C74070B5002592B0061CA94226D107AC362327 -S3152000C750201C237000F0C0FF208BA84201D00125A9 -S3152000C7601BE0E169226A3A23201C01910292237080 -S3152000C77000F0B2FF208B0028F1D1E169226A636ABA -S3152000C780A46A03910492B06901A91822059306941C -S3152000C79001F02AFBF06901F034FB281C12B070BDB1 -S3152000C7A038B5051C002922D1124C00220B198020F5 -S3152000C7B001311A7043009942F6D10F49201C0968AD -S3152000C7C0083102F0B5F8201C02F0BAF80B4900191E -S3152000C7D002F0AEF8201C02F0B3F8021D03208243BB -S3152000C7E0211CA86901F000FBE86901F00AFB002082 -S3152000C7F038BDC04600F4002028EF002050E9002074 -S3152000C800F8B5051C002931D1C4884788828880263E -S3152000C81001208640B44236D83804104380230719B5 -S3152000C820194E5A03974217D9032C0DD90323271CD7 -S3152000C8301F4009D1034008D1A1089A001758013397 -S3152000C840B7508B42F9D30BE000E0391CA14207D246 -S3152000C8500A5C72540131F9E7211C321C00F0F2FE09 -S3152000C860A869311C221C01F0BFFA0BE00020012927 -S3152000C87009D1EA888023081C59008A4203D8E8692E -S3152000C88001F0BFFA0020F8BD00F4002070B5041CAA -S3152000C8900D1E17D1E288012380264088A1889E405C -S3152000C8A0B2422AD8050480200D4341038D4224D864 -S3152000C8B0AE188E4221D81249E06901F095FA00F0AF -S3152000C8C031FD19E00023012917D1E18880262B1C90 -S3152000C8D04088A2887500A9420FD800041043802200 -S3152000C8E05603B04209D84518B54206D8044A00F086 -S3152000C8F069FEA06901F085FA0023181C70BDC046A8 -S3152000C90000F4002070B50025041C0E1EAE4214D182 -S3152000C91081880125FF2910D8094BC9B218684830EB -S3152000C92000F0F4FA211C2A1C20720831A06901F0BB -S3152000C9305BFAE06901F065FA351C281C70BDC0461B -S3152000C94028EF002038B5041C00200D1E854211D189 -S3152000C950A1880120FF290DD86288FF2A0AD8064B14 -S3152000C960C9B21868D2B2483000F08EFAA06901F038 -S3152000C97048FA281C38BDC04628EF002070B500258F -S3152000C980041C0E1EAE4211D180880125FF280DD829 -S3152000C990C0B200F0C0F9211C2A1C20720831A069FF -S3152000C9A001F022FAE06901F02CFA351C281C70BD32 -S3152000C9B038B5041C00200D1E85420ED1A388012007 -S3152000C9C0FF2B0AD86188FF2907D8D8B2C9B200F050 -S3152000C9D091F9A06901F015FA281C38BD38B5002355 -S3152000C9E0051C0C1E9C420AD140880123984206D879 -S3152000C9F0C0B2FFF767FCA86901F003FA231C181CD4 -S3152000CA0038BD000038B5002399421BD18288012306 -S3152000CA10FF2A17D844889C4214D80B4D510949192E -S3152000CA201F252A4089009340012C03D18025AA0086 -S3152000CA30891802E0A022940009190B60806901F090 -S3152000CA40E0F90023181C38BD00D8031010B5041CCB -S3152000CA500020814222D1A2880120FF2A1ED8104917 -S3152000CA6053095B181F210A409B0090401A68104208 -S3152000CA7003D080218A009B1801E00133FF331B6815 -S3152000CA80211C1840431E9841207208310122A069BA -S3152000CA9001F0AAF9E06901F0B4F9002010BDC04602 -S3152000CAA000D8031080239A00801801607047A023C5 -S3152000CAB09A0080180160704708B5034800F0CEFE42 -S3152000CAC0024800F0CBFE08BD00EF0020A0EE0020BB -S3152000CAD01F4B2049204800221A7008601F4B204A0D -S3152000CAE0204821491A6058609960204A20482149E7 -S3152000CAF0DA6018615961204A204821499A61D86133 -S3152000CB001962204A204821495A629862D962204AED -S3152000CB10204821491A6358639963204A20482149AD -S3152000CB20DA63214A18645964204821499A64214AC3 -S3152000CB30D8641965204821495A65214A9865D965DE -S3152000CB401A6620482049214A58669966DA6670474F -S3152000CB5000F5002088F3002000E1F50590F3002081 -S3152000CB6029C30020DDC90020B1C900207DC90020CD -S3152000CB7045C9002005C90020A5C300208DC8002076 -S3152000CB8001C80020C1C40020A1C7002041C7002041 -S3152000CB902DC60020F5C50020C5C5002095C500205E -S3152000CBA065C5002035C5002005C5002079C40020B4 -S3152000CBB0E1C4002005CA00204DCA002061C3002020 -S3152000CBC02DC40020C1C30020EDC6002037C300209D -S3152000CBD0F0B52D4B050E2C091E5D0F2425402B4A42 -S3152000CBE05F5DFF25967517762E04071C37403D0C92 -S3152000CBF02F09DF5D25405D5D9776FF2715773D027E -S3152000CC0005402F0A3D095D5D2740BC469577654660 -S3152000CC105D5D571CFD77C7B23D095D5D2040185C00 -S3152000CC20D71CFD77571DF877080E05095D5DD71DC2 -S3152000CC302040185CFD770E40171C350C28373870BD -S3152000CC402F09D85D161C2A3630702540FF265D5DDB -S3152000CC50171C300208402C373D70070A3E09985DA4 -S3152000CC60151C2740DF5D2E35161C28703036CDB2B8 -S3152000CC7037700C402E099F5D101C195D32303432FE -S3152000CC8007701170F0BDC046A0E90020D7EC002047 -S3152000CC900023834202D0C0460133FAE770470000E2 -S3152000CCA0014B01221A60FEE70031054008B58021BC -S3152000CCB002488901FFF7F6FE08BDC04604600F4012 -S3152000CCC008B5802102488901FFF7F1FE08BDC0465C -S3152000CCD004600F40042475462C4202D0EFF30980ED -S3152000CCE002E0EFF30880FFE7014B186000BEFEE785 -S3152000CCF040F7002038B50C1C051C01F09DFAC02019 -S3152000CD0001F0DAFA281C01F0D7FA201C01F0D4FA37 -S3152000CD1001F072FB38BD10B5041C01F08DFAC0205D -S3152000CD2001F0CAFA201C01F0C7FA01F085FAC120E9 -S3152000CD3001F0C2FA01F00CFB041C01F05DFB201C83 -S3152000CD4010BD000038B50C4B051C18680C1C0206DB -S3152000CD5010D50A490A78002A0CD101F08DFA342020 -S3152000CD6001F0D0FA281C01F0CDFA201C01F0CAFAF5 -S3152000CD7001F054FB38BDC04604620F402CEF002062 -S3152000CD800021312806D9044A32381421904201D88C -S3152000CD90024B195C081C704757020000C4E90020AA -S3152000CDA038B50E4B051C1868020616D50C490C78AA -S3152000CDB0002C12D101F060FA342001F0A3FA0520EC -S3152000CDC001F0A0FA285D013401F09CFA1B2CF9D160 -S3152000CDD0002001F097FA01F021FB38BD04620F40D4 -S3152000CDE02CEF0020F8B5254B161C1A6880240D1C44 -S3152000CDF014400CD0224900240F78002F07D10CE0D4 -S3152000CE00671F1D2F06D80219D3792B550134B4423A -S3152000CE10F6DB32E001214B42F7E701F02DFA35200F -S3152000CE2001F070FA174C012E0ED8381C01F0B6FA14 -S3152000CE300F2606400709A25DF8B2245C11012143A2 -S3152000CE40297001F0EBFA18E02F1C731E781B98420C -S3152000CE500DDA012001F0A2FA0F230340E25C00095B -S3152000CE60C3B21101E25C114339700137EDE70020AE -S3152000CE70AD1901F093FA013DDAE7F8BD04620F40DF -S3152000CE802CEF00205BEC00200E4B70B5061C1868BA -S3152000CE900D1C141C020603D50B490A78002A02D061 -S3152000CEA07619F47170BD01F0E7F9342001F02AFA01 -S3152000CEB0281C01F027FA201C01F024FA01F0AEFA12 -S3152000CEC0EEE7C04604620F402CEF002008B54B1F4A -S3152000CED01D2B02D8C3181B7B01E001235B42934222 -S3152000CEE001D0FFF7D1FF002008BD10B54C1F1D2C27 -S3152000CEF008D80419247B9C431340221C1A43FFF7AD -S3152000CF00E5FF01E00120404210BD000038B5044D88 -S3152000CF104A1C0C1CD2B2291CFFF764FF285D38BDC1 -S3152000CF2044F70020F7B50568041C0E1C00235F1C7F -S3152000CF30311C2F4AB94088182E49884203D93B1EF6 -S3152000CF40052BF4D100E01F1C7A01D2B2201C10213F -S3152000CF50E023FFF7CAFF002848DB0137690C680881 -S3152000CF60BE40019000917018291C01F0CDFB031CD6 -S3152000CF700D3BDAB2071C90088100531A9A018018DB -S3152000CF80C2B21421201CFFF7A1FF00282EDBFFB21E -S3152000CF907D43761B04D10822201C1221131C23E07A -S3152000CFA0009D002776193B1C019ADA40964206D34B -S3152000CFB08021080218410743BFB2B61A02D00133B6 -S3152000CFC0102BF1D1FAB2201C1521FFF77FFF002884 -S3152000CFD00CDB3A0A201C1621FFF778FF002805DB18 -S3152000CFE0201C122100220823FFF77FFFFEBDC0462A -S3152000CFF080F17F968038F57EF8B5264B244A041CAE -S3152000D0000D1C8768081C002101F0CEFB081CFFF7C9 -S3152000D010B7FE03267043204908230E183278201CB9 -S3152000D0201721FFF762FF00282EDB7278201C1A21B9 -S3152000D030C323FFF75AFF002826DBB278201C1B21CA -S3152000D040FFF744FF00281FDB201C102108220B239A -S3152000D050FFF74BFF002817DB201C082100223F2367 -S3152000D060FFF743FF00280FDB201C092100223F2366 -S3152000D070FFF73BFF002807DBE919201CFFF752FFCB -S3152000D080002801DB65600020F8BDC046C046C046CA -S3152000D090C7100000000000001CEC0020C046C0465F -S3152000D0A008B50A1C0F230521FFF71FFF08BD08B589 -S3152000D0B00A1C0F230721FFF718FF08BD08B50A1C15 -S3152000D0C00F230C21FFF711FF08BD08B54A424A413C -S3152000D0D0120105211023FFF708FF08BD08B50A1E17 -S3152000D0E000D0102207211023FFF7FFFE08BD000005 -S3152000D0F037B5041C0525201C0B2108226023FFF7C9 -S3152000D100F4FE002843DB0422201C0F21131CFFF70A -S3152000D110ECFE00283BDB201C102100220323FFF716 -S3152000D120E4FE002833DB201C1949FFF7FBFE00280C -S3152000D1302DDB1022201C0B21131CFFF7D6FE002806 -S3152000D14025DB1448FFF7A4FD201C0B210022102309 -S3152000D150FFF7CBFE00281ADB201C0F210022042318 -S3152000D160FFF7C3FE002812DB201C05226946FFF7C5 -S3152000D17039FE6B461A790F20104001D00F2805D1B1 -S3152000D180013D002DB7D10121484200E000203EBDDF -S3152000D19000C63E051027000038B50E4B041C0022A1 -S3152000D1A081600C301A70FFF7FBFD6168201CFFF7C9 -S3152000D1B023FF201C6568FFF79BFF6560002803DAC4 -S3152000D1C0201CFFF795FF6560291C201CFFF714FF24 -S3152000D1D038BDC0462CEF0020F0B5114F87B001AE08 -S3152000D1E0041C0D1C301C391C042201F0FFFA391DC9 -S3152000D1F002A8102201F0FAFA0F202B0902A90540F5 -S3152000D200F65C4A5DB02506432A43201C0A21FFF717 -S3152000D2105DFE201C0B21321CFFF758FE07B0F0BD27 -S3152000D220B0E9002008B50520A021FFF78BFD0620D8 -S3152000D230D021FFF787FD07200021FFF783FD082077 -S3152000D2404021FFF77FFD0920C021FFF77BFD0A2043 -S3152000D2507021FFF777FD0C20A021FFF773FD0F202B -S3152000D2602A21FFF76FFD11200321FFF76BFD172001 -S3152000D270F421FFF767FD19200C21FFF763FD024B10 -S3152000D280012200201A7008BD2CEF002008B5044B9F -S3152000D29000220C301A70FFF783FDFFF7C3FF08BD8D -S3152000D2A02CEF002070B50B4D80242401281C211C56 -S3152000D2B0FFF7FDFB0521002001F022F9FF210020C8 -S3152000D2C001F01EF9211C061C281CFFF7EBFBF0B20F -S3152000D2D070BDC04614600F4070B5114D80242401E6 -S3152000D2E0281C211CFFF7E3FBAB21002001F008F9E5 -S3152000D2F0FF21002001F004F9FF21002001F000F9B0 -S3152000D300FF21002001F0FCF8FF21002001F0F8F8B1 -S3152000D310211C061C281CFFF7C5FBF0B270BDC046B9 -S3152000D32014600F40F0B58022314B900387B018600F -S3152000D330F221304800F048FF2F48F02100F044FF4A -S3152000D3402E48F02100F040FF2D48F02100F03CFF50 -S3152000D3502C48F42100F038FF2B48F42100F034FF4C -S3152000D3602748F52100F030FF2648F52100F02CFF54 -S3152000D3702048F22100F028FF1F48F02100F024FF6A -S3152000D380224D1E48F021C02700F01EFF204C1E48CB -S3152000D390F4213F02802600F017FF3601281C391C95 -S3152000D3A0FFF780FB311C201CFFF77CFB296802203D -S3152000D3B00F432F6022680025164326602B1C009001 -S3152000D3C00190029503950495281C07212A1C01F03B -S3152000D3D037F8104B1D701F1C3C78132C05D0152CCC -S3152000D3E003D0FFF779FF3870F6E707B0F0BDC046E7 -S3152000D3F0043105408C6108409061084094610840E2 -S3152000D400986108409C610840A061084004600F4074 -S3152000D41014600F4064F70020802138B50901051CEF -S3152000D4202048FFF744FB204B1878132819D10020F9 -S3152000D4304B2101F065F804240020FF21013C01F076 -S3152000D4405FF8002CF8D10020FF2101F059F828556B -S3152000D4500134082CF7D1802212481101FFF722FB54 -S3152000D46038BD1528F7D14B21002001F049F80020BE -S3152000D470011C01F045F80121002001F041F80221AC -S3152000D480002001F03DF80020FF2101F039F80024AA -S3152000D4900020FF2101F034F828550134082CF7D15B -S3152000D4A0D9E7C04614600F4064F7002008B5FFF79F -S3152000D4B0F9FEC307FBD408BD38B5094D80242401E5 -S3152000D4C0FFF7F4FF281C211CFFF7F1FA06210020A4 -S3152000D4D001F016F8281C211CFFF7E4FA38BDC046D7 -S3152000D4E014600F4038B5174D0023041C2B70287884 -S3152000D4F0132805D0152803D0FFF7EEFE2870F6E78F -S3152000D500FFF7DAFFFFF7D2FF80210F480901FFF767 -S3152000D510CEFAD821002000F0F3FF2202110E2504B6 -S3152000D520002000F0EDFF290E002000F0E9FFE1B217 -S3152000D5300020802400F0E4FF03482101FFF7B2FA1F -S3152000D54038BDC04664F7002014600F40F8B5C7B256 -S3152000D550161C8023CA19041C0D1C580082422ED882 -S3152000D56080214A03531B9C4229D8FFF7A5FFFFF7CA -S3152000D5709DFF802112480901FFF799FA0221002018 -S3152000D58000F0BEFF2002010E2404002000F0B8FFA8 -S3152000D590210E002000F0B4FFB9B2002000F0B0FF49 -S3152000D5A0341CA71BAF4205DA2178002000F0A8FF23 -S3152000D5B00134F6E7802502482901FFF773FAF8BD02 -S3152000D5C014600F40F8B5041C0D1C171CFFF784FED1 -S3152000D5D0132801D01528F9D18023580385422FD846 -S3152000D5E084422DD82A1982422AD880267300E1B295 -S3152000D5F0581A86B2B54202D2AEB2002E07D0201CEF -S3152000D6003A1C311CFFF7A2FFA419BF19AD1B261C1B -S3152000D6103A1B611992198B1BFF2B07D98021301CCD -S3152000D62049000136FFF792FFFF36F1E7280A060286 -S3152000D630EDB23019BA19002D02D0A9B2FFF786FF34 -S3152000D640F8BD0000F8B58023051C0E1C141C5803D9 -S3152000D650814231D885422FD84A1982422CD8FFF7E9 -S3152000D66025FF802115480901FFF721FA0B2100200B -S3152000D67000F046FF290C002000F042FFFF27290A70 -S3152000D6803940002000F03CFF291C3940002000F0E2 -S3152000D69037FF0020391C00F033FFA519AC4206D015 -S3152000D6A00020FF2100F02CFF20700134F6E78024B3 -S3152000D6B002482101FFF7F6F9F8BDC04614600F4075 -S3152000D6C0034B044918684018431E98417047C046CA -S3152000D6D00001401088A9CBED38B5041CFFF7F0FFF8 -S3152000D6E0051E06D0104D211C18312A68201C904793 -S3152000D6F018E0FFF717FE2378362B08D03A2B0ED1E9 -S3152000D700201CE56125622430FFF786FE05E0074AE6 -S3152000D71007481368E36101682162258302E08020BF -S3152000D72041002183208B38BD000140100032044087 -S3152000D73000500440074B0849084A1860084B086007 -S3152000D7401060196801401960064B1A68104018606D -S3152000D7507047C046786100407C61004044610040CB -S3152000D760AC610040BC610040044B19680142FBD10A -S3152000D770034B18601A680242FCD17047B061004022 -S3152000D780B46100400C4A0D4B11680D4819401160D8 -S3152000D79002681A4002600B480B4A01681940016072 -S3152000D7A0106818401060094A09481168194011602C -S3152000D7B00268134003607047C06100407FFF7FFF0F -S3152000D7C0C4610040C8610040CC610040D061004087 -S3152000D7D0D46100400F2203061040D90F40000B18D9 -S3152000D7E0014A99018818704700F80020054A8023CD -S3152000D7F09802002110601160034A13680342FBD08F -S3152000D8007047C046003105405031054038B504699F -S3152000D8100D1C201CFFF7DEFFC368C02293438560E2 -S3152000D820C3600F20204001218140034D0B1C2006A0 -S3152000D83000D50B042B6038BDB0610040026938B5B5 -S3152000D840041C0F25154000F06DFA23690120A8401D -S3152000D8501A0600D50004FFF787FF38BD036910B507 -S3152000D8600F21041C1048194080220918134205D0A4 -S3152000D870890008680D4B03400B6003E08B00186895 -S3152000D88090431860201C00F04DFA21690F220A40AF -S3152000D89001209040090600D50004FFF74BFF201C0D -S3152000D8A0FFF7CCFF10BDC04670180010FFFF7FFFAA -S3152000D8B010B504690F23234007490122200603D50A -S3152000D8C09A400868140402E09A400868141C204014 -S3152000D8D0431E984110BDC046B8610040F8B50369A3 -S3152000D8E00A60161C0F22051C1A40134801211C062B -S3152000D8F003D5914004680F0402E0914004680F1C90 -S3152000D9003C40621E9441002C15D10C4C802022688C -S3152000D910C7013A432260281CFFF7CAFF2168394213 -S3152000D920F3D02268064B13402360002803D1281C1D -S3152000D930311CFFF76BFFF8BDB0610040406100402D -S3152000D940FFBFFFFF38B5051C0C1C281CFFF7B0FFD6 -S3152000D9500028FAD10123281C2360211CFFF756FF3B -S3152000D96038BD000002690F230448134019188B00A4 -S3152000D9701A68034802431A607047C04670180010A0 -S3152000D98001000100084B021C196801208A420AD1B5 -S3152000D9900648C02302681905F82011400206881897 -S3152000D9A0434258410130704740F3002084610040D3 -S3152000D9B0034B1A68904202D102484906016070471B -S3152000D9C040F3002054610040054B1A68904205D16F -S3152000D9D0480680214A04034B02431A607047C0461A -S3152000D9E040F300205461004008B500282BD116488A -S3152000D9F0164B0268196020218A430260FFF7C2FE97 -S3152000DA0001235842FFF796FE01204042FFF7ACFE65 -S3152000DA100F4B01211A6802208A431A601860186881 -S3152000DA2002210B4A0842FAD10A4B092019600A49F9 -S3152000DA300A4B086010680A490340136009480A4ADD -S3152000DA400A4B0A60186008BD0430044040F30020E9 -S3152000DA5040610040A8610040A4610040FFFF00FF34 -S3152000DA60586100404701000000F80020486100404E -S3152000DA7008B5064B1968884202D1082000F01EFE20 -S3152000DA800348012302681A43026008BD40F30020C0 -S3152000DA9040610040F8B5041CFFF7D0FE63691868A2 -S3152000DAA0C779201C00F041FA051E06D000F052FA74 -S3152000DAB0071C281C00F054FA051C2669301CFFF7A9 -S3152000DAC089FE6B426B4180223904DF03930519439B -S3152000DAD03943016001270021C160416001618760EF -S3152000DAE041618161C161016244620F240B48344067 -S3152000DAF02218930019680A4CAF00AD043D430C4030 -S3152000DB0025431D60320603D5C0221868160401E09D -S3152000DB101E68C02006431E60F8BDC046701800105F -S3152000DB20F3FFF3FFF0B55D4B5D4A1968106885B0C9 -S3152000DB3001400091196000D1ADE0CB0718D40098C0 -S3152000DB40420600D4A7E0574E012437680125FFF787 -S3152000DB5019FE6042FFF7EEFD6842FFF705FE381C0E -S3152000DB600021FFF725FF381C002100F003FA92E080 -S3152000DB704D4F00263B680393B3425DD14B4E0024A4 -S3152000DB803768A74270D1DAE7301CFFF723FE446AD4 -S3152000DB90002C58D0206A002855D02369181C0193E0 -S3152000DBA0FFF718FE011C28310A78051C227029353A -S3152000DBB02B78011C63702A310A78051CA2702B353C -S3152000DBC02B78011CE3702C310A78051C22712D3527 -S3152000DBD02B78011C63712E310A782F30A2710078C0 -S3152000DBE0A569E0710198FFF7F5FD031C2833197824 -S3152000DBF0021C297029321378011C6B702A310A788D -S3152000DC00031CAA702B331978021CE9702C32137866 -S3152000DC10011C2B712D310A78031C6A712E33197859 -S3152000DC202F30A9710078E871029D226A3D60201C80 -S3152000DC3090470136062EA1D00121039AB1400291C8 -S3152000DC400A42F6D0A0E7029D3D60F2E73560201C2F -S3152000DC50FFF7C0FD406A00280BD129040F420DD1E1 -S3152000DC600134062C00D16AE70125A5402F42F4D0C5 -S3152000DC70ECE7436A002BF0D09847EEE7201C316092 -S3152000DC808030FFF7A7FD406A0028E9D0426A002AC3 -S3152000DC90E6D09047E4E705B0F0BDC04644610040B9 -S3152000DCA04861004040F30020AC610040BC61004068 -S3152000DCB003690F211A060B40D00F5B001A1803497F -S3152000DCC090004058002800D1FEE7704744F300201A -S3152000DCD0036870B51C690F2221061440CD0F66001B -S3152000DCE0AC190E4BA100CA58002A00D0FEE7C85036 -S3152000DCF0816844680B1C651EAA4206D280331E1C0E -S3152000DD00803E336070660132F6E7054D00236219C6 -S3152000DD10D6018C192360606670BDC04644F300208E -S3152000DD20FFFFFF0108B5FFF7C3FF72B6C368002BDC -S3152000DD3007D0C36819685A6EC160916819609360EC -S3152000DD40F4E762B608BD000038B50C1C151CFFF7B9 -S3152000DD50AFFF8368002B42D072B683680022196811 -S3152000DD6081601A6062B6012119641E492A040A4399 -S3152000DD705A64802251016218110B0A0380219C6487 -S3152000DD80DA648A01A1180A0B1103C02219659101D0 -S3152000DD906218110B0A0380215A65CA01A418210BA7 -S3152000DDA00A039A651D6672B65D6EEC68002C0DD06E -S3152000DDB0E9680A68002A01D0111CFAE71A1C0B60D0 -S3152000DDC0006840314032FFF789FD05E0191CEB6001 -S3152000DDD000684031FFF7B6FD62B6002001E0012061 -S3152000DDE0404238BD8080000070B5061C0D1C141CF6 -S3152000DDF0301C291C221CFFF7A7FF0130F8D0002079 -S3152000DE0070BD08B500210A1CFFF7EEFF08BD10B54E -S3152000DE10FFF74EFF002800D1FEE7C368002B10D085 -S3152000DE205A6C68210A4200D0FEE7110609D41A6806 -S3152000DE30596EC26072B68C681C608B6062B6131C09 -S3152000DE40ECE710BD10B502786023041C1340402B6C -S3152000DE500FD006D8002B09D0202B12D10B484268B0 -S3152000DE6009E0602B0DD1094BDA6804E0074A1268F5 -S3152000DE7001E006488268002A03D0201C904700282B -S3152000DE8002D0201CFFF76EFD10BDC0467CE90020A5 -S3152000DE9008B50021FFF7D6FF08BD10B50378041C8E -S3152000DEA0DA090221002A00D10121FFF7CBFF201C2D -S3152000DEB0FFF7ADFF10BD10B50378041CDA09012168 -S3152000DEC0002A00D10221FFF7BDFF201CFFF79FFF8C -S3152000DED010BD10B5041CC38848780A78022801D0E2 -S3152000DEE0072803D1CA78887812020243A0699A4289 -S3152000DEF000D91A1CFFF778FFE069FFF782FF0020A0 -S3152000DF0010BD436970B5DD68002408CD002B0AD00A -S3152000DF101E7A8E42F9D1944203D11968FFF7D9FFB0 -S3152000DF2002E00134F1E7012070BD436910B51B6999 -S3152000DF30021C002B0CD018680378002B08D04178DF -S3152000DF40052903D181781469A14202D0C018F3E7CC -S3152000DF50181C10BD427903791102081C184370471A -S3152000DF60C078032318407047014B18607047C0469D -S3152000DF7074F3002070B5041C0D1E0ED0C668002E4A -S3152000DF8018D0FFF7FFFC08CE002B13D01A7A824256 -S3152000DF90F9D15968A942F6D100E00B1C20698342C9 -S3152000DFA000D02361044B1D68002D01D0201CA847FA -S3152000DFB0012000E0002070BD74F30020F8B5041C99 -S3152000DFC040780E1C0B2800D9EAE000F093FB062AC5 -S3152000DFD0E93EE9AF70E9CCBA53630025A94200D0E7 -S3152000DFE0DFE022781F210A40012A16D0AA4211D04A -S3152000DFF0022A00D0D5E0A7886B480F233B401E1885 -S3152000E000B1000F68694B6A493B40581E83410B801B -S3152000E010A0693BE0A069674901E0A0696649022240 -S3152000E02034E00025A94200D0BBE022781F21114010 -S3152000E030022900D0B5E0A7885B480F233B401E1875 -S3152000E040B7003A685D48104012E00025A94200D08A -S3152000E050A7E027781F203840022800D0A1E0A68814 -S3152000E0600F225149324053189F0038684F4E304393 -S3152000E070386018E00025A94200D092E022781F20BF -S3152000E0800240012A00D08CE0A0694D49FFF7ACFE82 -S3152000E090E06909E00025A94200D082E022781F230A -S3152000E0A01340012B7DD1A069FFF7ABFE79E0002953 -S3152000E0B05BD1E0780138062872D800F01BFB0407F4 -S3152000E0C02171711013006169096823E06069FFF707 -S3152000E0D059FCA278011C201C02290AD10DE0636993 -S3152000E0E0996817E06069FFF74DFCA278022802D1F3 -S3152000E0F0201C012101E0201C0221FFF702FF0CE079 -S3152000E100A078EE2802D1201C2E4904E0676900265B -S3152000E1107D6807E0201CFFF7DCFE051C41E08642F7 -S3152000E120F8D0013602CD0029F9D139E000291CD1D9 -S3152000E130A1786069FFF748FCA069FFF762FE351CED -S3152000E1402FE0002911D1A7786069391CFFF712FF4B -S3152000E1500125002825D0002F03D16069311CFFF747 -S3152000E16027FCA06918E0002904D00222B2429B4174 -S3152000E1705D4216E0E1880125A94212D16569267221 -S3152000E1802E69002E01D072682272211C0831A069E6 -S3152000E1900122FFF729FEE069FFF733FE002500E0A4 -S3152000E1A00125281CF8BDC04670180010010001008A -S3152000E1B000FB00207AF3002078F30020FEFFFEFF0C -S3152000E1C07CF3002041ED002001607047064A074B92 -S3152000E1D007491A60074A0860074B1060074A6C20F7 -S3152000E1E0402118601160704708080000846C0840C0 -S3152000E1F010100A4014100A4018100A4000100A4055 -S3152000E200074A0849C12313600B60074B074A186069 -S3152000E2100749084B10606C20402208601A6070473E -S3152000E2200C6108401061084010000E4014000E409A -S3152000E23018000E4000000E400C4A0D4908232020ED -S3152000E240136008600A6813420BD10A4B082205E0C6 -S3152000E2500868024205D1023B002B02D00868024220 -S3152000E260F6D0024B202119607047C04618100A408C -S3152000E27000100A40102700000C4A0D4908232020D0 -S3152000E280136008600A6813420BD10A4B082205E086 -S3152000E2900868024205D1023B002B02D008680242E0 -S3152000E2A0F6D0024B202119607047C04618000E4058 -S3152000E2B000000E40102700000E4B20211A68114244 -S3152000E2C001D00D4B19600D4A0B49106008200860DB -S3152000E2D008490B6818420BD1094B082205E008684B -S3152000E2E0024205D1023B002B02D008680242F6D03A -S3152000E2F07047C04600100A4018100A4008100A400D -S3152000E300102700000E4B20211A68114201D00D4B18 -S3152000E31019600D4A0B4910600820086008490B68EF -S3152000E32018420BD1094B082205E00868024205D1A4 -S3152000E330023B002B02D008680242F6D07047C04646 -S3152000E34000000E4018000E4008000E401027000066 -S3152000E3500E4B20201A68104201D00D4908600C4A45 -S3152000E36008230A491360086803420BD1094B082287 -S3152000E37005E00868024205D1023B002B02D008685E -S3152000E3800242F6D004490B68D8B2704700100A4002 -S3152000E39018100A401027000008100A40124B2021AE -S3152000E3A01A68114201D0114B19600422002818D096 -S3152000E3B00D490A600D4A08230B4913600868034279 -S3152000E3C00BD10B4B082205E00868024205D1023B1F -S3152000E3D0002B02D008680242F6D006490B68D8B254 -S3152000E3E0704702480260E5E700000E4018000E4024 -S3152000E3F01027000008000E40064B20201A68104205 -S3152000E40001D005490860034B0349102208201A60F1 -S3152000E4100860704700100A4018100A40064B20205A -S3152000E4201A68104201D005490860034B034910229F -S3152000E43008201A600860704700000E4018000E4041 -S3152000E440F0B55F464D4656464446F0B483B09C46EA -S3152000E4500CAB1C780DAD2E780EAFA34610ACB14692 -S3152000E4603E7827780FAB1D7801971A4B002824D0C9 -S3152000E47019481A4F03603C6801232343184C3B601C -S3152000E4801848194FA0460023036044464B46236094 -S3152000E49011435B4662461C02114321433960022127 -S3152000E4A03143019E29433143CDB2056003B03CBCC4 -S3152000E4B090469946A246AB46F0BD0C4F0C483B60B1 -S3152000E4C0036801271F4307600A480B4F80460B4805 -S3152000E4D0D9E7C046000800099800054028160540DF -S3152000E4E010500C4004500C4000500C409400054045 -S3152000E4F01815054010300840003008400430084008 -S3152000E50030B5002816D10D4D0D4B02241A68144241 -S3152000E510FCD0296000280BD109481021046821422B -S3152000E520FCD104201A681042FCD02D68A8B230BD58 -S3152000E5300448F2E7044D034BE7E7C046083008409D -S3152000E5400C3008400C500C4008500C40FEE7C046EA -S3152000E5507047C0464F4A504B9A421FD2DF1C141DAB -S3152000E560381B810801318F004C4B381F4107FE189C -S3152000E570C80F02CB1160B3420FD0002803D001CBC5 -S3152000E58001C4B34209D0181C20C8211C20C15B68D5 -S3152000E5906360031D0C1DB342F5D1D2194048824257 -S3152000E5A016D2C41C131DE51AA908013188001018BB -S3152000E5B0C41A0021650708D511601A1C043311609E -S3152000E5C0834205D01A1D1960131D11608342F9D1AB -S3152000E5D03448354988421BD20331061D8F1BBD089E -S3152000E5E001246F1C2C40026801259047BD420FD0A4 -S3152000E5F0002C04D008CE02259847BD4208D0341CF2 -S3152000E60001CC804702357668B047261DBD42F6D13B -S3152000E610264B27498B421BD203311E1D8F1BBD085B -S3152000E62001246F1C2C401A6801259047BD420FD04B -S3152000E630002C04D001CE02258047BD4208D0341CD0 -S3152000E64008CC984702357668B047261DBD42F6D1DC -S3152000E650FDF7C8FD1748184988421BD20331061D0D -S3152000E6608F1BBD0801246F1C2C4002680125904792 -S3152000E670BD420FD0002C04D008CE02259847BD42BB -S3152000E68008D0341C01CC804702357668B047261D59 -S3152000E690BD42F6D130EF002030EF00206CEC002098 -S3152000E6A004FB00206CEC00206CEC00206CEC0020BD -S3152000E6B06CEC00206CEC00206CEC00204309044A32 -S3152000E6C099008B181F210840012282401A6070474A -S3152000E6D000E100E01F2803D8044BC01801707047E2 -S3152000E6E00F22034B1040C0180170F8E700E400E049 -S3152000E6F014ED00E002B4714649084900095C49005E -S3152000E7008E4402BC7047C046002934D00123002223 -S3152000E71010B488422CD301242407A14204D281427A -S3152000E72002D209011B01F8E7E400A14204D281428A -S3152000E73002D249005B00F8E7884201D3401A1A4307 -S3152000E7404C08A04202D3001B5C0822438C08A0423E -S3152000E75002D3001B9C082243CC08A04202D3001BF4 -S3152000E760DC082243002803D01B0901D00909E3E76E -S3152000E770101C10BC7047002801D00020C04307B4ED -S3152000E780024802A14018029003BDC04619000000AD -S3152000E7900029F0D003B5FFF7B9FF0EBC4243891A12 -S3152000E7A01847C0467047C0469C460304F0B51B0C6C -S3152000E7B017043F0C150C1E1C041C000C7E436B43D7 -S3152000E7C047434543FB18300C1818874202D9802747 -S3152000E7D07B02ED18070CED1967467C434A43360445 -S3152000E7E0330CA11800044919C018F0BDF0B54F46E6 -S3152000E7F04646C0B40F2A72D90B1C03439C0700D08F -S3152000E80090E0171C103F3C09013427010C683B1C83 -S3152000E8100460103BDE064B68CD1943608C68F60F0A -S3152000E8208460CB68041CC3600B1C103310349D42DB -S3152000E83027D0002E0BD0196821605E686660996823 -S3152000E840A160DE681033E66010349D4219D0196845 -S3152000E85021605E6866609968A160DE68191CE660C2 -S3152000E8601B69261C23614C6974618B69B361CC6971 -S3152000E8701031F4610B1C1036341C103310349D42B9 -S3152000E880E5D13F180F21B846114003294DD9043947 -S3152000E8908E08B3000433EC18A446043B2C1C5F07F7 -S3152000E8A008CC4146B14608C1FE0F64450FD0002E64 -S3152000E8B003D080CC80C1644509D0271C08CF0E1C0C -S3152000E8C008C664684C603C1D311D6445F5D1494637 -S3152000E8D001318E000327AD193A40464401E00D1C54 -S3152000E8E0061C002A1AD02F78B218F343D118012417 -S3152000E8F0377001360C40013596420FD0002C05D0DA -S3152000E9002B78013533700136964207D0297831703D -S3152000E9106C780235747002369642F7D10CBC90465C -S3152000E9209946F0BD061C0D1CDDE73E1C0A1CD8E7E7 -S3152000E930031C0A7801311A700133002AF9D1704775 -S3152000E9400023C25C0133002AFBD1581E7047C04603 -S3152000E9502076312E302E302D726331302D342D67B6 -S3152000E960386135373564362D6469727479203230D2 -S3152000E97032302D30352D303700000000BDDF00202D -S3152000E9800000000005C30020000000001FED00204D -S3152000E99023ED002074ED0020D7EC002000000000BD -S3152000E9A0303132333435363738394142434445469F -S3152000E9B0E08060000F0E0D0C0B0A090807060504FF -S3152000E9C00302010001010101010202020202030306 -S3152000E9D003030304040404040505050505060606C9 -S3152000E9E0060607070707070707070707080808088F -S3152000E9F00808080808080909090909090909090967 -S3152000EA000A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B3A -S3152000EA100B0B0B0B0B0B0B0B0B0B0B0B0B0B0C0C1E -S3152000EA200C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C00 -S3152000EA300C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CF0 -S3152000EA400C0C0C0C0C0C0D0D0D0D0D0D0D0D0D0DD6 -S3152000EA500D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0DC0 -S3152000EA600D0D0D0D0D0D0D0D0D0D0D0D0D0D0E0EAE -S3152000EA700E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E90 -S3152000EA800E0E0E0E0E0E0E0E0E0E0E0E0F0F0F0F7C -S3152000EA900F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F60 -S3152000EAA00F0F0F0F0F0F0F0F0F0F1010101010104A -S3152000EAB01010101010101010101010101010101030 -S3152000EAC01010101010101010111111111111111118 -S3152000EAD01111111111111111111111111111111100 -S3152000EAE011111111111111111111111111111111F0 -S3152000EAF011111111111111111111111111111111E0 -S3152000EB0011111111111111111111111111111111CF -S3152000EB1011111111111111111111111111111111BF -S3152000EB2011111111111111111111111111111111AF -S3152000EB30111111111111111111111111111111119F -S3152000EB40111111111111111111111111111111118F -S3152000EB501111111112121212121212121212121273 -S3152000EB60121212121212121212121212121212125F -S3152000EB70121212121212121212121212121212124F -S3152000EB80121212121212121212121212121212123F -S3152000EB90121212121212121212121212121212122F -S3152000EBA0121212121212121212121212121212121F -S3152000EBB0121212121212121212121212121212120F -S3152000EBC012121212121212121212121212121212FF -S3152000EBD012121212121212121212121212121313ED -S3152000EBE013131313131313131313131313131313CF -S3152000EBF013131313131313131313131313131313BF -S3152000EC0013131313131313131313131313131313AE -S3152000EC101313131313131313131313130802DF08F9 -S3152000EC2002BE08028B08027B08026908025800020D -S3152000EC30440002440002340002340002240002246C -S3152000EC400002140002130002130002110002000049 -S3152000EC5041000041000040000040000008040C0272 -S3112000EC600A060E0109050D030B070F0024 -S3152000EC6C0430002008300020001C0020003000203A -S3152000EC7C041C0020081C00200A060002000000408C -S3152000EC8C01000902200001010080FA09040000029B -S3152000EC9CFFFFFF0007058102400000070502024026 -S3152000ECAC0000002800000000010400010000000004 -S3152000ECBC000000010157494E555342000057494E5A -S3152000ECCC5553420000000000000000360341004965 -S3152000ECDC005200530050005900200053004E003AB9 -S3152000ECEC00200020002000200020002000200020F2 -S3152000ECFC00200020002000200020002000200020E2 -S3152000ED0C001201000200000040501DA1600001010C -S3152000ED1C020301040309041E037700770077002EF3 -S3152000ED2C006100690072007300700079002E006388 -S3152000ED3C006F006D0012034D005300460054003145 -S3152000ED4C003000300013000902200001010080FA77 -S3152000ED5C0904000002FFFFFF0007058102000200E4 -S3152000ED6C07050202000200000E0341004900520072 -S3152000ED7C5300500059008E000000000105000100D0 -S3152000ED8C8400000001000000280044006500760085 -S3152000ED9C69006300650049006E007400650072000E -S3152000EDAC6600610063006500470055004900440079 -S3152000EDBC00004E0000007B00340041004600340069 -S3152000EDCC31003800360035002D004200430031005A -S3152000EDDC45002D0037003400350041002D00390048 -S3152000EDEC3800320036002D00390037004300410030 -S3152000EDFC41003800450045003000340037004600FD -S3152000EE0C7D00000053ED00200100000002000000F0 -S3152000EE1C0DED00208CE9002084EC00203CEE002037 -S3152000EE2C000000008EEC0020010000000100000014 -S3152000EE3C10EE002030EE00200000000078EE0020BE -S3152000EE4C0400000040F5002000000000A0EE002089 -S3152000EE5C01000000C0F2002000000000C8EE0020D7 -S3152000EE6C04000000C0F0002000000000000000009C -S3152000EE7C0000000000000000000000000000000060 -S3152000EE8C1CEE0020C8EE002078EE002091DE00203B -S3152000EE9C9BDE0020000000000000000000000000A7 -S3152000EEAC00000000020000001CEE00200000000004 -S3152000EEBCA0EE0020000000000FDE00200000000065 -S3152000EECC0000000000000000000000008000000090 -S3152000EEDC1CEE0020C8EE002078EE0020000000007A -S3152000EEECB7DE002000EF00200100000040F00020DB -S3152000EEFC00000000000000000000000000000000E0 -S3152000EF0C00000000810000001CEE002000EF002015 -S3152000EF1C00000000000000000FDE00200010002082 -S3092000EF2C01000000BA -S7052000E555A0 diff --git a/airspy_m0/airspy_rx.o b/airspy_m0/airspy_rx.o deleted file mode 100644 index e5a2bcc..0000000 Binary files a/airspy_m0/airspy_rx.o and /dev/null differ diff --git a/airspy_m0/airspy_usb_req.o b/airspy_m0/airspy_usb_req.o deleted file mode 100644 index 5184fd2..0000000 Binary files a/airspy_m0/airspy_usb_req.o and /dev/null differ diff --git a/airspy_m0/fault_handler.o b/airspy_m0/fault_handler.o deleted file mode 100644 index c39caa2..0000000 Binary files a/airspy_m0/fault_handler.o and /dev/null differ diff --git a/airspy_m0/r820t.o b/airspy_m0/r820t.o deleted file mode 100644 index c729223..0000000 Binary files a/airspy_m0/r820t.o and /dev/null differ diff --git a/airspy_m0/rom_iap.o b/airspy_m0/rom_iap.o deleted file mode 100644 index 76d2a2e..0000000 Binary files a/airspy_m0/rom_iap.o and /dev/null differ diff --git a/airspy_m0/si5351c.o b/airspy_m0/si5351c.o deleted file mode 100644 index 4866dcc..0000000 Binary files a/airspy_m0/si5351c.o and /dev/null differ diff --git a/airspy_m0/signal_mcu.o b/airspy_m0/signal_mcu.o deleted file mode 100644 index c50afa4..0000000 Binary files a/airspy_m0/signal_mcu.o and /dev/null differ diff --git a/airspy_m0/usb.o b/airspy_m0/usb.o deleted file mode 100644 index 51d70e7..0000000 Binary files a/airspy_m0/usb.o and /dev/null differ diff --git a/airspy_m0/usb_descriptor.o b/airspy_m0/usb_descriptor.o deleted file mode 100644 index 79438c8..0000000 Binary files a/airspy_m0/usb_descriptor.o and /dev/null differ diff --git a/airspy_m0/usb_device.o b/airspy_m0/usb_device.o deleted file mode 100644 index 536575a..0000000 Binary files a/airspy_m0/usb_device.o and /dev/null differ diff --git a/airspy_m0/usb_endpoint.o b/airspy_m0/usb_endpoint.o deleted file mode 100644 index 4c30111..0000000 Binary files a/airspy_m0/usb_endpoint.o and /dev/null differ diff --git a/airspy_m0/usb_queue.o b/airspy_m0/usb_queue.o deleted file mode 100644 index 96d1417..0000000 Binary files a/airspy_m0/usb_queue.o and /dev/null differ diff --git a/airspy_m0/usb_request.o b/airspy_m0/usb_request.o deleted file mode 100644 index 0534aad..0000000 Binary files a/airspy_m0/usb_request.o and /dev/null differ diff --git a/airspy_m0/usb_standard_request.o b/airspy_m0/usb_standard_request.o deleted file mode 100644 index d2830ef..0000000 Binary files a/airspy_m0/usb_standard_request.o and /dev/null differ diff --git a/airspy_m0/w25q80bv.o b/airspy_m0/w25q80bv.o deleted file mode 100644 index c226f01..0000000 Binary files a/airspy_m0/w25q80bv.o and /dev/null differ diff --git a/airspy_m0s/airspy_m0s.bin b/airspy_m0s/airspy_m0s.bin deleted file mode 100644 index 5414f57..0000000 Binary files a/airspy_m0s/airspy_m0s.bin and /dev/null differ diff --git a/airspy_m0s/airspy_m0s.elf b/airspy_m0s/airspy_m0s.elf deleted file mode 100644 index e58500c..0000000 Binary files a/airspy_m0s/airspy_m0s.elf and /dev/null differ diff --git a/airspy_m0s/airspy_m0s.hdr b/airspy_m0s/airspy_m0s.hdr deleted file mode 100644 index 364d8d5..0000000 --- a/airspy_m0s/airspy_m0s.hdr +++ /dev/null @@ -1,2 +0,0 @@ -#define AIRSPY_FW_GIT_TAG "v1.0.0-rc10-4-g8a575d6-dirty" -#define AIRSPY_FW_CHECKIN_DATE "2020-05-07" diff --git a/airspy_m0s/airspy_m0s.hex b/airspy_m0s/airspy_m0s.hex deleted file mode 100644 index 2c94e5a..0000000 --- a/airspy_m0s/airspy_m0s.hex +++ /dev/null @@ -1,41 +0,0 @@ -:020000041800E2 -:10000000E0470018ED000018E9000018C5000018CE -:1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000E9000018CF -:100030000000000000000000E9000018E9000018BE -:10004000E5000018E5000018E500001800000000B9 -:10005000E5000018E5000018E5000018E5000018AC -:10006000E5000018E5000018E5000018E50000189C -:10007000E5000018E5000018E5000018E50000188C -:10008000E5000018E5000018E5000018E50000187C -:10009000E5000018E5000018E5000018E50000186C -:1000A000E5000018E5000018E5000018E50000185C -:1000B000E5000018E5000018E5000018E50000184C -:1000C00020BFFDE7042475462C4202D0EFF30980DF -:1000D00002E0EFF30880FFE7014B186000BEFEE787 -:1000E00054020018FEE7C0467047C0464F4A504BC6 -:1000F0009A421FD2DF1C141D381B810801318F006A -:100100004C4B381F4107FE18C80F02CB1160B34299 -:100110000FD0002803D001CB01C4B34209D0181C72 -:1001200020C8211C20C15B686360031D0C1DB34205 -:10013000F5D1D2194048824216D2C41C131DE51ACB -:10014000A908013188001018C41A0021650708D5D4 -:1001500011601A1C04331160834205D01A1D196006 -:10016000131D11608342F9D13448354988421BD2AE -:100170000331061D8F1BBD0801246F1C2C40026833 -:1001800001259047BD420FD0002C04D008CE022597 -:100190009847BD4208D0341C01CC804702357668B0 -:1001A000B047261DBD42F6D1264B27498B421BD2B4 -:1001B00003311E1D8F1BBD0801246F1C2C401A68C3 -:1001C00001259047BD420FD0002C04D001CE02255E -:1001D0008047BD4208D0341C08CC98470235766869 -:1001E000B047261DBD42F6D1FFF76AFF17481849F0 -:1001F00088421BD20331061D8F1BBD0801246F1CD2 -:100200002C40026801259047BD420FD0002C04D03D -:1002100008CE02259847BD4208D0341C01CC804747 -:1002200002357668B047261DBD42F6D1540200184B -:100230005402001854020018580200185402001802 -:1002400054020018540200185402001854020018F6 -:04025000540200183C -:04000005180000EDF2 -:00000001FF diff --git a/airspy_m0s/airspy_m0s.list b/airspy_m0s/airspy_m0s.list deleted file mode 100644 index 4cd1f96..0000000 --- a/airspy_m0s/airspy_m0s.list +++ /dev/null @@ -1,457 +0,0 @@ - -airspy_m0s.elf: file format elf32-littlearm - - -Disassembly of section .text: - -18000000 : -18000000: e0 47 00 18 ed 00 00 18 e9 00 00 18 c5 00 00 18 .G.............. - ... -1800002c: e9 00 00 18 00 00 00 00 00 00 00 00 e9 00 00 18 ................ -1800003c: e9 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800004c: 00 00 00 00 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800005c: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800006c: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800007c: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800008c: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -1800009c: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -180000ac: e5 00 00 18 e5 00 00 18 e5 00 00 18 e5 00 00 18 ................ -180000bc: e5 00 00 18 .... - -180000c0
: -If the event register is 1, WFE clears it to 0 and completes immediately. -Instruction for Cortex M0, M3/M4 -*/ -__attribute__ ((always_inline)) static inline void signal_wfe(void) -{ - __asm("wfe"); -180000c0: bf20 wfe -180000c2: e7fd b.n 180000c0
- -180000c4 : -/* Code Compatible with CortexM0, M3, M4 (R4 & R5 are modified for ARCH 6M) */ -__attribute__((naked)) -void hard_fault_handler(void) -{ -#if defined(__ARM_ARCH_6M__) - __asm__("MOVS R4, #4"); -180000c4: 2404 movs r4, #4 - __asm__("MOV R5, LR"); -180000c6: 4675 mov r5, lr - __asm__("TST R4, R5"); -180000c8: 422c tst r4, r5 - __asm__("BEQ _MSP"); -180000ca: d002 beq.n 180000d2 <_MSP> - __asm__("MRS R0, PSP"); -180000cc: f3ef 8009 mrs r0, PSP - __asm__("B hard_fault_handler_c"); -180000d0: e002 b.n 180000d8 - -180000d2 <_MSP>: - __asm__("_MSP:"); - __asm__("MRS R0, MSP"); -180000d2: f3ef 8008 mrs r0, MSP - __asm__("B hard_fault_handler_c"); -180000d6: e7ff b.n 180000d8 - -180000d8 : -volatile hard_fault_stack_t* hard_fault_stack_pt; - -__attribute__((used)) void hard_fault_handler_c(uint32_t* args) -{ - /* hard_fault_stack_pt contains registers saved before the hard fault */ - hard_fault_stack_pt = (hard_fault_stack_t*)args; -180000d8: 4b01 ldr r3, [pc, #4] ; (180000e0 ) -180000da: 6018 str r0, [r3, #0] - if( SCB->CFSR & CSCB_CFSR_BFSR_PRECISERR ) { - } - } - } - */ - __asm("BKPT #0\n") ; // Break into the debugger -180000dc: be00 bkpt 0x0000 -180000de: e7fe b.n 180000de -180000e0: 18000254 .word 0x18000254 - -180000e4 : - } - -} - -void blocking_handler(void) -{ -180000e4: e7fe b.n 180000e4 -180000e6: 46c0 nop ; (mov r8, r8) - -180000e8 : -} - -void null_handler(void) -{ - /* Do nothing. */ -} -180000e8: 4770 bx lr -180000ea: 46c0 nop ; (mov r8, r8) - -180000ec : -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -180000ec: 4a4f ldr r2, [pc, #316] ; (1800022c ) -180000ee: 4b50 ldr r3, [pc, #320] ; (18000230 ) -180000f0: 429a cmp r2, r3 -180000f2: d21f bcs.n 18000134 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -180000f4: 1cdf adds r7, r3, #3 -180000f6: 1d14 adds r4, r2, #4 -180000f8: 1b38 subs r0, r7, r4 -180000fa: 0881 lsrs r1, r0, #2 -180000fc: 3101 adds r1, #1 -180000fe: 008f lsls r7, r1, #2 -18000100: 4b4c ldr r3, [pc, #304] ; (18000234 ) -18000102: 1f38 subs r0, r7, #4 -18000104: 0741 lsls r1, r0, #29 -18000106: 18fe adds r6, r7, r3 -18000108: 0fc8 lsrs r0, r1, #31 - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - *dest = *src; -1800010a: cb02 ldmia r3!, {r1} -1800010c: 6011 str r1, [r2, #0] -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -1800010e: 42b3 cmp r3, r6 -18000110: d00f beq.n 18000132 -18000112: 2800 cmp r0, #0 -18000114: d003 beq.n 1800011e - dest < &_edata; - src++, dest++) { - *dest = *src; -18000116: cb01 ldmia r3!, {r0} -18000118: c401 stmia r4!, {r0} -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -1800011a: 42b3 cmp r3, r6 -1800011c: d009 beq.n 18000132 - dest < &_edata; - src++, dest++) { - *dest = *src; -1800011e: 1c18 adds r0, r3, #0 -18000120: c820 ldmia r0!, {r5} -18000122: 1c21 adds r1, r4, #0 -18000124: c120 stmia r1!, {r5} -18000126: 685b ldr r3, [r3, #4] -18000128: 6063 str r3, [r4, #4] - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { -1800012a: 1d03 adds r3, r0, #4 -1800012c: 1d0c adds r4, r1, #4 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; -1800012e: 42b3 cmp r3, r6 -18000130: d1f5 bne.n 1800011e -18000132: 19d2 adds r2, r2, r7 - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -18000134: 4840 ldr r0, [pc, #256] ; (18000238 ) -18000136: 4282 cmp r2, r0 -18000138: d216 bcs.n 18000168 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -1800013a: 1cc4 adds r4, r0, #3 -1800013c: 1d13 adds r3, r2, #4 -1800013e: 1ae5 subs r5, r4, r3 -18000140: 08a9 lsrs r1, r5, #2 -18000142: 3101 adds r1, #1 -18000144: 0088 lsls r0, r1, #2 -18000146: 1810 adds r0, r2, r0 -18000148: 1ac4 subs r4, r0, r3 - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - *dest++ = 0; -1800014a: 2100 movs r1, #0 -1800014c: 0765 lsls r5, r4, #29 -1800014e: d508 bpl.n 18000162 -18000150: 6011 str r1, [r2, #0] -18000152: 1c1a adds r2, r3, #0 -18000154: 3304 adds r3, #4 -18000156: 6011 str r1, [r2, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -18000158: 4283 cmp r3, r0 -1800015a: d005 beq.n 18000168 - *dest++ = 0; -1800015c: 1d1a adds r2, r3, #4 -1800015e: 6019 str r1, [r3, #0] -18000160: 1d13 adds r3, r2, #4 -18000162: 6011 str r1, [r2, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { -18000164: 4283 cmp r3, r0 -18000166: d1f9 bne.n 1800015c - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -18000168: 4834 ldr r0, [pc, #208] ; (1800023c ) -1800016a: 4935 ldr r1, [pc, #212] ; (18000240 ) -1800016c: 4288 cmp r0, r1 -1800016e: d21b bcs.n 180001a8 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -18000170: 3103 adds r1, #3 -18000172: 1d06 adds r6, r0, #4 -18000174: 1b8f subs r7, r1, r6 -18000176: 08bd lsrs r5, r7, #2 -18000178: 2401 movs r4, #1 -1800017a: 1c6f adds r7, r5, #1 -1800017c: 402c ands r4, r5 - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); -1800017e: 6802 ldr r2, [r0, #0] -18000180: 2501 movs r5, #1 -18000182: 4790 blx r2 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -18000184: 42bd cmp r5, r7 -18000186: d00f beq.n 180001a8 -18000188: 2c00 cmp r4, #0 -1800018a: d004 beq.n 18000196 - (*fp)(); -1800018c: ce08 ldmia r6!, {r3} -1800018e: 2502 movs r5, #2 -18000190: 4798 blx r3 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -18000192: 42bd cmp r5, r7 -18000194: d008 beq.n 180001a8 - (*fp)(); -18000196: 1c34 adds r4, r6, #0 -18000198: cc01 ldmia r4!, {r0} -1800019a: 4780 blx r0 -1800019c: 3502 adds r5, #2 -1800019e: 6876 ldr r6, [r6, #4] -180001a0: 47b0 blx r6 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { -180001a2: 1d26 adds r6, r4, #4 -180001a4: 42bd cmp r5, r7 -180001a6: d1f6 bne.n 18000196 - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -180001a8: 4b26 ldr r3, [pc, #152] ; (18000244 ) -180001aa: 4927 ldr r1, [pc, #156] ; (18000248 ) -180001ac: 428b cmp r3, r1 -180001ae: d21b bcs.n 180001e8 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -180001b0: 3103 adds r1, #3 -180001b2: 1d1e adds r6, r3, #4 -180001b4: 1b8f subs r7, r1, r6 -180001b6: 08bd lsrs r5, r7, #2 -180001b8: 2401 movs r4, #1 -180001ba: 1c6f adds r7, r5, #1 -180001bc: 402c ands r4, r5 - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - (*fp)(); -180001be: 681a ldr r2, [r3, #0] -180001c0: 2501 movs r5, #1 -180001c2: 4790 blx r2 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -180001c4: 42bd cmp r5, r7 -180001c6: d00f beq.n 180001e8 -180001c8: 2c00 cmp r4, #0 -180001ca: d004 beq.n 180001d6 - (*fp)(); -180001cc: ce01 ldmia r6!, {r0} -180001ce: 2502 movs r5, #2 -180001d0: 4780 blx r0 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -180001d2: 42bd cmp r5, r7 -180001d4: d008 beq.n 180001e8 - (*fp)(); -180001d6: 1c34 adds r4, r6, #0 -180001d8: cc08 ldmia r4!, {r3} -180001da: 4798 blx r3 -180001dc: 3502 adds r5, #2 -180001de: 6876 ldr r6, [r6, #4] -180001e0: 47b0 blx r6 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { -180001e2: 1d26 adds r6, r4, #4 -180001e4: 42bd cmp r5, r7 -180001e6: d1f6 bne.n 180001d6 - - /* might be provided by platform specific vector.c */ - pre_main(); - - /* Call the application's entry point. */ - main(); -180001e8: f7ff ff6a bl 180000c0
- - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -180001ec: 4817 ldr r0, [pc, #92] ; (1800024c ) -180001ee: 4918 ldr r1, [pc, #96] ; (18000250 ) -180001f0: 4288 cmp r0, r1 -180001f2: d21b bcs.n 1800022c - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) -180001f4: 3103 adds r1, #3 -180001f6: 1d06 adds r6, r0, #4 -180001f8: 1b8f subs r7, r1, r6 -180001fa: 08bd lsrs r5, r7, #2 -180001fc: 2401 movs r4, #1 -180001fe: 1c6f adds r7, r5, #1 -18000200: 402c ands r4, r5 - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - (*fp)(); -18000202: 6802 ldr r2, [r0, #0] -18000204: 2501 movs r5, #1 -18000206: 4790 blx r2 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -18000208: 42bd cmp r5, r7 -1800020a: d00f beq.n 1800022c -1800020c: 2c00 cmp r4, #0 -1800020e: d004 beq.n 1800021a - (*fp)(); -18000210: ce08 ldmia r6!, {r3} -18000212: 2502 movs r5, #2 -18000214: 4798 blx r3 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -18000216: 42bd cmp r5, r7 -18000218: d008 beq.n 1800022c - (*fp)(); -1800021a: 1c34 adds r4, r6, #0 -1800021c: cc01 ldmia r4!, {r0} -1800021e: 4780 blx r0 -18000220: 3502 adds r5, #2 -18000222: 6876 ldr r6, [r6, #4] -18000224: 47b0 blx r6 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { -18000226: 1d26 adds r6, r4, #4 -18000228: 42bd cmp r5, r7 -1800022a: d1f6 bne.n 1800021a -1800022c: 18000254 .word 0x18000254 -18000230: 18000254 .word 0x18000254 -18000234: 18000254 .word 0x18000254 -18000238: 18000258 .word 0x18000258 -1800023c: 18000254 .word 0x18000254 -18000240: 18000254 .word 0x18000254 -18000244: 18000254 .word 0x18000254 -18000248: 18000254 .word 0x18000254 -1800024c: 18000254 .word 0x18000254 -18000250: 18000254 .word 0x18000254 diff --git a/airspy_m0s/airspy_m0s.map b/airspy_m0s/airspy_m0s.map deleted file mode 100644 index 7acd0f1..0000000 --- a/airspy_m0s/airspy_m0s.map +++ /dev/null @@ -1,371 +0,0 @@ -Archive member included because of file (symbol) - -../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - (reset_handler) - -Allocating common symbols -Common symbol size file - -hard_fault_stack_pt - 0x4 fault_handler.o -__gnu_lto_v1 0x1 airspy_m0s.o - -Discarded input sections - - .text 0x00000000 0x0 airspy_m0s.o - .data 0x00000000 0x0 airspy_m0s.o - .bss 0x00000000 0x0 airspy_m0s.o - .gnu.lto_.jmpfuncs.f192f8cd - 0x00000000 0x15 airspy_m0s.o - .gnu.lto_.inline.f192f8cd - 0x00000000 0x24 airspy_m0s.o - .gnu.lto_.pureconst.f192f8cd - 0x00000000 0x15 airspy_m0s.o - .gnu.lto_main.f192f8cd - 0x00000000 0xa4 airspy_m0s.o - .gnu.lto_.cgraph.f192f8cd - 0x00000000 0x22 airspy_m0s.o - .gnu.lto_.vars.f192f8cd - 0x00000000 0x12 airspy_m0s.o - .gnu.lto_.refs.f192f8cd - 0x00000000 0x13 airspy_m0s.o - .gnu.lto_.statics.f192f8cd - 0x00000000 0x14 airspy_m0s.o - .gnu.lto_.decls.f192f8cd - 0x00000000 0xa8 airspy_m0s.o - .gnu.lto_.symtab.f192f8cd - 0x00000000 0x14 airspy_m0s.o - .gnu.lto_.opts - 0x00000000 0x52 airspy_m0s.o - COMMON 0x00000000 0x1 airspy_m0s.o - .text 0x00000000 0x0 fault_handler.o - .data 0x00000000 0x0 fault_handler.o - .bss 0x00000000 0x0 fault_handler.o - .gnu.lto_.jmpfuncs.f19283b6 - 0x00000000 0x1e fault_handler.o - .gnu.lto_.inline.f19283b6 - 0x00000000 0x3f fault_handler.o - .gnu.lto_.pureconst.f19283b6 - 0x00000000 0x1e fault_handler.o - .gnu.lto_hard_fault_handler.f19283b6 - 0x00000000 0x107 fault_handler.o - .gnu.lto_hard_fault_handler_c.f19283b6 - 0x00000000 0x101 fault_handler.o - .gnu.lto_mem_manage_handler.f19283b6 - 0x00000000 0x88 fault_handler.o - .gnu.lto_bus_fault_handler.f19283b6 - 0x00000000 0x88 fault_handler.o - .gnu.lto_usage_fault_handler.f19283b6 - 0x00000000 0x88 fault_handler.o - .gnu.lto_.cgraph.f19283b6 - 0x00000000 0x3c fault_handler.o - .gnu.lto_.vars.f19283b6 - 0x00000000 0x19 fault_handler.o - .gnu.lto_.refs.f19283b6 - 0x00000000 0x17 fault_handler.o - .gnu.lto_.statics.f19283b6 - 0x00000000 0x14 fault_handler.o - .gnu.lto_.decls.f19283b6 - 0x00000000 0x3cb fault_handler.o - .gnu.lto_.symtab.f19283b6 - 0x00000000 0xcf fault_handler.o - .gnu.lto_.opts - 0x00000000 0x52 fault_handler.o - .text.mem_manage_handler - 0x00000000 0x2 fault_handler.o - .text.bus_fault_handler - 0x00000000 0x2 fault_handler.o - .text.usage_fault_handler - 0x00000000 0x2 fault_handler.o - .text 0x00000000 0x0 signal_mcu.o - .data 0x00000000 0x0 signal_mcu.o - .bss 0x00000000 0x0 signal_mcu.o - .gnu.lto_.inline.f192fb53 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.pureconst.f192fb53 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.cgraph.f192fb53 - 0x00000000 0x13 signal_mcu.o - .gnu.lto_.vars.f192fb53 - 0x00000000 0x12 signal_mcu.o - .gnu.lto_.refs.f192fb53 - 0x00000000 0x13 signal_mcu.o - .gnu.lto_.statics.f192fb53 - 0x00000000 0x14 signal_mcu.o - .gnu.lto_.decls.f192fb53 - 0x00000000 0x1a signal_mcu.o - .gnu.lto_.symtab.f192fb53 - 0x00000000 0x0 signal_mcu.o - .gnu.lto_.opts - 0x00000000 0x52 signal_mcu.o - .debug_line 0x00000000 0x0 signal_mcu.o - .comment 0x00000000 0x71 signal_mcu.o - .ARM.attributes - 0x00000000 0x31 signal_mcu.o - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .group 0x00000000 0x8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .text 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .data 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .bss 0x00000000 0x0 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -Memory Configuration - -Name Origin Length Attributes -rom 0x00000000 0x00100000 xr -ram_local1 0x10000000 0x00020000 xrw -ram_local2 0x10080000 0x00012000 xrw -ram_local_m0sub 0x18000000 0x00004800 xrw -ram_ahb1_m0_stack 0x20000000 0x00001000 xrw -ram_ahb1_spare 0x20001000 0x00000c00 xrw -ram_ahb1_m4_share 0x20001c00 0x00000400 xrw -ram_ahb1_adchs 0x20002000 0x00001000 xrw -ram_ahb1_m0_share 0x20003000 0x00001000 xrw -ram_ahb2 0x2000c000 0x00004000 xrw -*default* 0x00000000 0xffffffff - -Linker script and memory map - -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libnosys.a -LOAD airspy_m0s.o -LOAD fault_handler.o -LOAD signal_mcu.o -LOAD ../libopencm3/lib\libopencm3_lpc43xx_m0s.a -START GROUP -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv6-m\libgcc.a -LOAD c:/program files (x86)/gnu tools arm embedded/4.7 2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv6-m\libc.a -END GROUP - 0x20001c00 cm4_data_share = ORIGIN (ram_ahb1_m4_share) - 0x20002000 adchs_data = ORIGIN (ram_ahb1_adchs) - 0x20003000 cm0_data_share = ORIGIN (ram_ahb1_m0_share) - 0x2000c000 cm0_exec_baseaddr = ORIGIN (ram_ahb2) - 0x18000000 cm0s_exec_baseaddr = ORIGIN (ram_local_m0sub) - 0x20001000 conf_data_share = ORIGIN (ram_ahb1_spare) - 0x00000c00 conf_data_share_size = 0xc00 - 0x18000000 . = ORIGIN (ram_local_m0sub) - -.text 0x18000000 0x254 - 0x18000000 . = ALIGN (0x400) - *(.vectors) - .vectors 0x18000000 0xc0 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - 0x18000000 vector_table - *(.text*) - .text.startup.main - 0x180000c0 0x4 airspy_m0s.o - 0x180000c0 main - .text.hard_fault_handler - 0x180000c4 0x14 fault_handler.o - 0x180000c4 hard_fault_handler - .text.hard_fault_handler_c - 0x180000d8 0xc fault_handler.o - 0x180000d8 hard_fault_handler_c - .text.blocking_handler - 0x180000e4 0x4 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - 0x180000e4 adc0_isr - 0x180000e4 spi_isr - 0x180000e4 usart2_or_c_can1_isr - 0x180000e4 usart3_isr - 0x180000e4 gint1_isr - 0x180000e4 sgpio_pos_isr - 0x180000e4 timer1_isr - 0x180000e4 i2c0_isr - 0x180000e4 usart0_isr - 0x180000e4 blocking_handler - 0x180000e4 sgpio_shift_isr - 0x180000e4 i2c1_isr - 0x180000e4 ritimer_isr - 0x180000e4 dac_isr - 0x180000e4 m0app_isr - 0x180000e4 dma_isr - 0x180000e4 c_can0_isr - 0x180000e4 eventrouter_isr - 0x180000e4 sgpio_match_isr - 0x180000e4 usb0_isr - 0x180000e4 spifi_or_adchs_isr - 0x180000e4 uart1_isr - 0x180000e4 ssp0_or_ssp1_isr - 0x180000e4 pin_int5_isr - 0x180000e4 i2s0_or_i2s1_or_qei_isr - 0x180000e4 timer2_isr - 0x180000e4 m4core_isr - 0x180000e4 sct_isr - 0x180000e4 adc1_isr - 0x180000e4 mcpwm_isr - 0x180000e4 sgpio_input_isr - 0x180000e4 usb1_isr - .text.null_handler - 0x180000e8 0x4 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - 0x180000e8 sv_call_handler - 0x180000e8 pend_sv_handler - 0x180000e8 sys_tick_handler - 0x180000e8 nmi_handler - 0x180000e8 null_handler - .text.reset_handler - 0x180000ec 0x168 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - 0x180000ec reset_handler - 0x18000254 . = ALIGN (0x4) - *(.rodata*) - 0x18000254 . = ALIGN (0x4) - -.glue_7 0x18000254 0x0 - .glue_7 0x00000000 0x0 linker stubs - -.glue_7t 0x18000254 0x0 - .glue_7t 0x00000000 0x0 linker stubs - -.vfp11_veneer 0x18000254 0x0 - .vfp11_veneer 0x00000000 0x0 linker stubs - -.v4_bx 0x18000254 0x0 - .v4_bx 0x00000000 0x0 linker stubs - -.iplt 0x18000254 0x0 - .iplt 0x00000000 0x0 airspy_m0s.o - -.rel.dyn 0x18000254 0x0 - .rel.iplt 0x00000000 0x0 airspy_m0s.o - -.preinit_array 0x18000254 0x0 - 0x18000254 . = ALIGN (0x4) - 0x18000254 __preinit_array_start = . - *(.preinit_array) - 0x18000254 __preinit_array_end = . - -.init_array 0x18000254 0x0 - 0x18000254 . = ALIGN (0x4) - 0x18000254 __init_array_start = . - *(SORT(.init_array.*)) - *(.init_array) - 0x18000254 __init_array_end = . - -.fini_array 0x18000254 0x0 - 0x18000254 . = ALIGN (0x4) - 0x18000254 __fini_array_start = . - *(.fini_array) - *(SORT(.fini_array.*)) - 0x18000254 __fini_array_end = . - -.ARM.extab - *(.ARM.extab*) - *(.ARM.extab*) - -.ARM.exidx 0x18000254 0x0 - 0x18000254 __exidx_start = . - *(.ARM.exidx*) - 0x18000254 __exidx_end = . - 0x18000254 . = ALIGN (0x4) - 0x18000254 _etext = . - 0x00000000 _etext_ram = 0x0 - 0x00000000 _etext_rom = 0x0 - 0x18000000 . = ORIGIN (ram_local_m0sub) - -.data 0x18000254 0x0 - 0x18000254 _data = . - *(.data*) - 0x18000254 . = ALIGN (0x4) - 0x18000254 _data_loadaddr = LOADADDR (.data) - 0x18000254 _data = . - 0x18000254 _edata = . - -.igot.plt 0x18000254 0x0 - .igot.plt 0x00000000 0x0 airspy_m0s.o - -.bss 0x18000254 0x4 - 0x18000254 _bss = . - *(.bss_aligned*) - *(.bss*) - *(COMMON) - COMMON 0x18000254 0x4 fault_handler.o - 0x18000254 hard_fault_stack_pt - 0x18000258 . = ALIGN (0x4) - 0x18000258 _ebss = . - -/DISCARD/ - *(.eh_frame) - 0x18000258 . = ALIGN (0x4) - 0x18000258 end = . - 0x180047e0 __StackTop = ((ORIGIN (ram_local_m0sub) + 0x4800) - 0x20) - 0x180047e0 PROVIDE (_stack, __StackTop) -OUTPUT(airspy_m0s.elf elf32-littlearm) - -.debug_info 0x00000000 0x6f1 - .debug_info 0x00000000 0x67 airspy_m0s.o - .debug_info 0x00000067 0x3a5 fault_handler.o - .debug_info 0x0000040c 0x2e5 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_abbrev 0x00000000 0x2a5 - .debug_abbrev 0x00000000 0x5b airspy_m0s.o - .debug_abbrev 0x0000005b 0x113 fault_handler.o - .debug_abbrev 0x0000016e 0x137 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_aranges 0x00000000 0x90 - .debug_aranges - 0x00000000 0x20 airspy_m0s.o - .debug_aranges - 0x00000020 0x40 fault_handler.o - .debug_aranges - 0x00000060 0x30 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_ranges 0x00000000 0x60 - .debug_ranges 0x00000000 0x10 airspy_m0s.o - .debug_ranges 0x00000010 0x30 fault_handler.o - .debug_ranges 0x00000040 0x20 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_line 0x00000000 0x5b8 - .debug_line 0x00000000 0x5f airspy_m0s.o - .debug_line 0x0000005f 0x133 fault_handler.o - .debug_line 0x00000192 0x426 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_str 0x00000000 0x3e3e - .debug_str 0x00000000 0x84 airspy_m0s.o - 0x89 (size before relaxing) - .debug_str 0x00000084 0x19f fault_handler.o - 0x28f (size before relaxing) - .debug_str 0x00000223 0x3c1b ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - 0x3d1a (size before relaxing) - -.comment 0x00000000 0x70 - .comment 0x00000000 0x70 airspy_m0s.o - 0x71 (size before relaxing) - .comment 0x00000000 0x71 fault_handler.o - .comment 0x00000000 0x71 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.ARM.attributes - 0x00000000 0x31 - .ARM.attributes - 0x00000000 0x31 airspy_m0s.o - .ARM.attributes - 0x00000031 0x31 fault_handler.o - .ARM.attributes - 0x00000062 0x31 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_frame 0x00000000 0xc0 - .debug_frame 0x00000000 0x20 airspy_m0s.o - .debug_frame 0x00000020 0x60 fault_handler.o - .debug_frame 0x00000080 0x40 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_loc 0x00000000 0x34 - .debug_loc 0x00000000 0x34 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - -.debug_macro 0x00000000 0xe23 - .debug_macro 0x00000000 0xc8 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x000000c8 0x7de ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x000008a6 0x3a ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x000008e0 0x10 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x000008f0 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x0000091e 0xa2 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x000009c0 0x20e ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x00000bce 0x22 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x00000bf0 0xfa ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x00000cea 0x2e ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x00000d18 0x47 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) - .debug_macro 0x00000d5f 0xc4 ../libopencm3/lib\libopencm3_lpc43xx_m0s.a(vector.o) diff --git a/airspy_m0s/airspy_m0s.o b/airspy_m0s/airspy_m0s.o deleted file mode 100644 index 5be9daa..0000000 Binary files a/airspy_m0s/airspy_m0s.o and /dev/null differ diff --git a/airspy_m0s/airspy_m0s.srec b/airspy_m0s/airspy_m0s.srec deleted file mode 100644 index bbf40b1..0000000 --- a/airspy_m0s/airspy_m0s.srec +++ /dev/null @@ -1,40 +0,0 @@ -S01200006169727370795F6D30732E737265630B -S31518000000E0470018ED000018E9000018C5000018B0 -S3151800001000000000000000000000000000000000C2 -S31518000020000000000000000000000000E9000018B1 -S315180000300000000000000000E9000018E9000018A0 -S31518000040E5000018E5000018E5000018000000009B -S31518000050E5000018E5000018E5000018E50000188E -S31518000060E5000018E5000018E5000018E50000187E -S31518000070E5000018E5000018E5000018E50000186E -S31518000080E5000018E5000018E5000018E50000185E -S31518000090E5000018E5000018E5000018E50000184E -S315180000A0E5000018E5000018E5000018E50000183E -S315180000B0E5000018E5000018E5000018E50000182E -S315180000C020BFFDE7042475462C4202D0EFF30980C1 -S315180000D002E0EFF30880FFE7014B186000BEFEE769 -S315180000E054020018FEE7C0467047C0464F4A504BA8 -S315180000F09A421FD2DF1C141D381B810801318F004C -S315180001004C4B381F4107FE18C80F02CB1160B3427B -S315180001100FD0002803D001CB01C4B34209D0181C54 -S3151800012020C8211C20C15B686360031D0C1DB342E7 -S31518000130F5D1D2194048824216D2C41C131DE51AAD -S31518000140A908013188001018C41A0021650708D5B6 -S3151800015011601A1C04331160834205D01A1D1960E8 -S31518000160131D11608342F9D13448354988421BD290 -S315180001700331061D8F1BBD0801246F1C2C40026815 -S3151800018001259047BD420FD0002C04D008CE022579 -S315180001909847BD4208D0341C01CC80470235766892 -S315180001A0B047261DBD42F6D1264B27498B421BD296 -S315180001B003311E1D8F1BBD0801246F1C2C401A68A5 -S315180001C001259047BD420FD0002C04D001CE022540 -S315180001D08047BD4208D0341C08CC9847023576684B -S315180001E0B047261DBD42F6D1FFF76AFF17481849D2 -S315180001F088421BD20331061D8F1BBD0801246F1CB4 -S315180002002C40026801259047BD420FD0002C04D01F -S3151800021008CE02259847BD4208D0341C01CC804729 -S3151800022002357668B047261DBD42F6D1540200182D -S3151800023054020018540200185802001854020018E4 -S3151800024054020018540200185402001854020018D8 -S30918000250540200181E -S705180000EDF5 diff --git a/airspy_m0s/fault_handler.o b/airspy_m0s/fault_handler.o deleted file mode 100644 index 4ff85dc..0000000 Binary files a/airspy_m0s/fault_handler.o and /dev/null differ diff --git a/airspy_m0s/signal_mcu.o b/airspy_m0s/signal_mcu.o deleted file mode 100644 index 9b56909..0000000 Binary files a/airspy_m0s/signal_mcu.o and /dev/null differ diff --git a/airspy_rom_to_ram/adchs.d b/airspy_rom_to_ram/adchs.d deleted file mode 100644 index b0d1540..0000000 --- a/airspy_rom_to_ram/adchs.d +++ /dev/null @@ -1,15 +0,0 @@ -adchs.o: ../airspy_m4/adchs.c ../common/airspy_core.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdbool.h \ - ../libopencm3/include/libopencm3/lpc43xx/cgu.h \ - ../libopencm3/include/libopencm3/cm3/common.h \ - ../libopencm3/include/libopencm3/lpc43xx/memorymap.h \ - ../libopencm3/include/libopencm3/lpc43xx/creg.h \ - ../libopencm3/include/libopencm3/lpc43xx/rgu.h ../airspy_m4/adchs.h \ - ../common/airspy_commands.h diff --git a/airspy_rom_to_ram/adchs.o b/airspy_rom_to_ram/adchs.o deleted file mode 100644 index 4c5d3ee..0000000 Binary files a/airspy_rom_to_ram/adchs.o and /dev/null differ diff --git a/airspy_rom_to_ram/airspy.dll b/airspy_rom_to_ram/airspy.dll deleted file mode 100644 index ecea521..0000000 Binary files a/airspy_rom_to_ram/airspy.dll and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_core.d b/airspy_rom_to_ram/airspy_core.d deleted file mode 100644 index 0a8fbd9..0000000 --- a/airspy_rom_to_ram/airspy_core.d +++ /dev/null @@ -1,21 +0,0 @@ -airspy_core.o: ../common/airspy_core.c ../common/airspy_core.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdbool.h \ - ../libopencm3/include/libopencm3/lpc43xx/cgu.h \ - ../libopencm3/include/libopencm3/cm3/common.h \ - ../libopencm3/include/libopencm3/lpc43xx/memorymap.h \ - ../common/airspy_conf.h ../common/airspy_commands.h ../common/r820t.h \ - ../common/airspy_calib.h ../common/si5351c.h \ - ../libopencm3/include/libopencm3/lpc43xx/i2c.h \ - ../libopencm3/include/libopencm3/lpc43xx/ccu.h \ - ../libopencm3/include/libopencm3/lpc43xx/creg.h \ - ../libopencm3/include/libopencm3/lpc43xx/gpio.h \ - ../libopencm3/include/libopencm3/lpc43xx/scu.h \ - ../libopencm3/include/libopencm3/lpc43xx/ssp.h \ - ../libopencm3/include/libopencm3/lpc43xx/rgu.h diff --git a/airspy_rom_to_ram/airspy_core.o b/airspy_rom_to_ram/airspy_core.o deleted file mode 100644 index b60a2da..0000000 Binary files a/airspy_rom_to_ram/airspy_core.o and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_m4.d b/airspy_rom_to_ram/airspy_m4.d deleted file mode 100644 index 4b2b387..0000000 --- a/airspy_rom_to_ram/airspy_m4.d +++ /dev/null @@ -1,36 +0,0 @@ -airspy_m4.o: ../airspy_m4/airspy_m4.c \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/string.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/reent.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/_types.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_types.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/_default_types.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/lock.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/string.h \ - ../libopencm3/include/libopencm3/lpc43xx/cgu.h \ - ../libopencm3/include/libopencm3/cm3/common.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdbool.h \ - ../libopencm3/include/libopencm3/lpc43xx/memorymap.h \ - ../libopencm3/include/libopencm3/lpc43xx/ccu.h \ - ../libopencm3/include/libopencm3/lpc43xx/gpio.h \ - ../libopencm3/include/libopencm3/lpc43xx/m4/nvic.h \ - ../libopencm3/include/libopencm3/cm3/nvic.h \ - ../libopencm3/include/libopencm3/cm3/memorymap.h \ - ../libopencm3/include/libopencm3/dispatch/nvic.h \ - ../libopencm3/include/libopencm3/lpc43xx/creg.h \ - ../libopencm3/include/libopencm3/lpc43xx/rgu.h \ - ../libopencm3/include/libopencm3/lpc43xx/ipc.h \ - ../libopencm3/include/libopencm3/cm3/scs.h ../common/airspy_core.h \ - ../common/si5351c.h ../common/airspy_core.h ../common/airspy_conf.h \ - ../common/airspy_commands.h ../common/r820t.h ../common/w25q80bv.h \ - ../common/rom_iap.h ../common/signal_mcu.h ../airspy_m4/adchs.h \ - ../common/airspy_commands.h ../airspy_m4/m0_bin.h ../airspy_m4/m0s_bin.h \ - ../common/airspy_conf.h diff --git a/airspy_rom_to_ram/airspy_m4.o b/airspy_rom_to_ram/airspy_m4.o deleted file mode 100644 index 7614788..0000000 Binary files a/airspy_rom_to_ram/airspy_m4.o and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_mini_conf.d b/airspy_rom_to_ram/airspy_mini_conf.d deleted file mode 100644 index 1b9f732..0000000 --- a/airspy_rom_to_ram/airspy_mini_conf.d +++ /dev/null @@ -1,14 +0,0 @@ -airspy_mini_conf.o: ../common/airspy_mini_conf.c ../common/airspy_conf.h \ - ../common/airspy_core.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdbool.h \ - ../libopencm3/include/libopencm3/lpc43xx/cgu.h \ - ../libopencm3/include/libopencm3/cm3/common.h \ - ../libopencm3/include/libopencm3/lpc43xx/memorymap.h \ - ../common/airspy_commands.h ../common/r820t.h diff --git a/airspy_rom_to_ram/airspy_mini_conf.o b/airspy_rom_to_ram/airspy_mini_conf.o deleted file mode 100644 index 678c005..0000000 Binary files a/airspy_rom_to_ram/airspy_mini_conf.o and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_nos_conf.d b/airspy_rom_to_ram/airspy_nos_conf.d deleted file mode 100644 index e8a21d9..0000000 --- a/airspy_rom_to_ram/airspy_nos_conf.d +++ /dev/null @@ -1,14 +0,0 @@ -airspy_nos_conf.o: ../common/airspy_nos_conf.c ../common/airspy_conf.h \ - ../common/airspy_core.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/stdint.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/_ansi.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/newlib.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/config.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/machine/ieeefp.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/include/sys/features.h \ - c:\program\ files\ (x86)\gnu\ tools\ arm\ embedded\4.7\ 2013q3\bin\../lib/gcc/arm-none-eabi/4.7.4/include/stdbool.h \ - ../libopencm3/include/libopencm3/lpc43xx/cgu.h \ - ../libopencm3/include/libopencm3/cm3/common.h \ - ../libopencm3/include/libopencm3/lpc43xx/memorymap.h \ - ../common/airspy_commands.h ../common/r820t.h diff --git a/airspy_rom_to_ram/airspy_nos_conf.o b/airspy_rom_to_ram/airspy_nos_conf.o deleted file mode 100644 index 0662b6a..0000000 Binary files a/airspy_rom_to_ram/airspy_nos_conf.o and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_rom_to_ram.bin b/airspy_rom_to_ram/airspy_rom_to_ram.bin deleted file mode 100644 index 06561b9..0000000 Binary files a/airspy_rom_to_ram/airspy_rom_to_ram.bin and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_rom_to_ram.elf b/airspy_rom_to_ram/airspy_rom_to_ram.elf deleted file mode 100644 index 08f9a75..0000000 Binary files a/airspy_rom_to_ram/airspy_rom_to_ram.elf and /dev/null differ diff --git a/airspy_rom_to_ram/airspy_rom_to_ram.hex b/airspy_rom_to_ram/airspy_rom_to_ram.hex deleted file mode 100644 index 612b6cf..0000000 --- a/airspy_rom_to_ram/airspy_rom_to_ram.hex +++ /dev/null @@ -1,1351 +0,0 @@ -:10000000E01F0910A9130000A5130000110700004C -:10001000310700003507000039070000000000002C -:10002000000000000000000000000000A513000018 -:10003000A513000000000000A5130000A513000098 -:10004000A11300005D020000090200000000000092 -:10005000A1130000A1130000A1130000A1130000D0 -:10006000A1130000A1130000A1130000A1130000C0 -:10007000A1130000A1130000A1130000A1130000B0 -:10008000A1130000A1130000A1130000A1130000A0 -:10009000A1130000A1130000A1130000A113000090 -:1000A000A1130000A1130000A1130000A113000080 -:1000B000A1130000A1130000A1130000A113000070 -:1000C000A1130000A1130000A1130000A113000060 -:1000D000A1130000A1130000A1130000A113000050 -:1000E000A1130000A1130000A1130000A113000040 -:1000F00000000000A1130000A1130000A1130000E4 -:1001000000000000A1130000A1130000A1130000D3 -:10011000A1130000074B1B6830B1074A01214FF4BF -:10012000C05011601860704703494FF48042086066 -:100130001A6070470C0008102800081038B50546F2 -:1001400072B6264C2368002B3FD043F6FC734BF667 -:10015000FC74C2F200030020C2F200041A1D5860B1 -:100160000833A3425060F9D11D4C216811BB1D4BCF -:1001700018684FF4804202601B481C490268002343 -:100180000B60136000F084FA284600F0B1FA226890 -:100190004FF48040C2F20000D1B200F0E9F900F063 -:1001A0002FFE0020C4F20F0001230361BFF34F8F25 -:1001B00062B638BD0B490E4B08681B684FF40052FD -:1001C0004FF4804102601960D6E70A480068303079 -:1001D00000F0DAFD01212160B7E700BF3800081008 -:1001E000280008100800081010000810200008104F -:1001F000340008101800081008B572B600F03CFA78 -:1002000000F006FE62B608BD4FF40053C4F20003CE -:100210005A68D20711D5986840F0010199600C4BDB -:100220001A685AB90B4801680B6803F580425004FC -:10023000430C0B60BFF34F8F40BF704706490A68FD -:10024000106800F500535904480C1060704700BF57 -:10025000280008100800081034000810F8B54FF402 -:100260005052264CC4F204022368002111605D78CC -:100270001A78012AE9B226D0214D2A6850781378DD -:10028000012B34D01F4D2B681C78012C02D0022C7E -:100290000DD0F8BD1C4F3E6836B93046FFF74EFF13 -:1002A0001A482B683C60066000221A60F8BD174EA1 -:1002B0003468002CF8D1FFF79FFF13492B68012207 -:1002C00032600C60F0E7124A6DB21368002DBABFBD -:1002D00001F07F01D3F88000986F01EB410100EB42 -:1002E000C10000F02BFA206800240460C4E7FFF787 -:1002F00011FF296800200860C4E700BF0000081053 -:100300001400081004000810240008103000081021 -:100310001800081070B500F0EFFF144B144A1C6869 -:10032000A41894421CD91346D04353F8045B1149D6 -:1003300020189C420D60C0F3800011D930B11868BC -:1003400002F108039C4241F8040F09D91A465E687D -:1003500052F8045B8E60131D4D6008319C42F5D845 -:100360000448BDE8704000F0E1BF00BF804B0000D2 -:10037000501C000000C000204EF6FC52CEF20002DD -:100380004FF4805311682DE9F04FCEF2000341F095 -:10039000807010601C68DFF880B144F0010585B002 -:1003A0001D6000F057FD00F043FA0220FF2101F02C -:1003B00053F90120014601F04FF9DBF80060002EEF -:1003C00000F08D804A4C4B480394039E05683768C3 -:1003D00002904FF400524FF480432A603B6046493C -:1003E000DFF838C10D68454F0024CCF800400220EA -:1003F0002C60CDF804C001F021F9012001F01EF9B4 -:10040000FFF7FAFE3E483F4906683F4D3A684FF411 -:10041000804001230B602C60CBF8004030603B4EE5 -:10042000146037683A4A3C6013681C6041F21074EB -:10043000C4F20504FFF76EFF00F098FF2568354908 -:10044000039EDDF804C025F0010020600C463160F9 -:1004500020BFDBF80070002FFAD0D4F800E0DCF801 -:1004600000309E45F4D00EF1005202F58040014666 -:100470004FF48052B0E8F0004FEA1448C5F30B1374 -:1004800043EA082848EA04582B0C2D0745EA03459F -:1004900045EA16651FFA86F945EA0919360C1FFA6E -:1004A00087FA4FEA0A3A4AEA066A4AEA174AA1E88C -:1004B0000007083ADED1029C21680D6805F500505E -:1004C0004604770C0F60BFF34F8F40BF40F220030C -:1004D000C1F20803039AC3F800E01468B8E7054FB7 -:1004E000034A3B6802974FF480410392196076E714 -:1004F000340008100800081010000810040008104C -:100500000C0008103000081024000810000008102B -:10051000140008102C0008102800081020000810F3 -:100520004FF40052C4F2000243F21C13C4F204035D -:10053000012090601061196821F440411960196828 -:1005400041F440411960196821F44031196019687B -:1005500041F440311960114610630A6B4FF40053A7 -:10056000D207C4F20003F8D500201863704700BF1B -:100570002DE9F84304460E46FFF7D2FF234B4FF414 -:100580000072C4F20F024FF4205003F11005C0F6C0 -:10059000493004F5005903F1200804F5804C03F1BB -:1005A000300704F5C04183E834001A611A621A6307 -:1005B0004FF42052D860C3F81490C3F81880C3F8E1 -:1005C00024C09F62D86259639B63C8F64932D6B192 -:1005D000DA60DA61DA62DA634FF400501968C4F263 -:1005E0000000C0F800115A68C0F80421DB684DF221 -:1005F00011010122C0F80C31C0F80851C0F81011E7 -:100600000263BDE8F883DA61DA63E5E740000810C9 -:1006100043F20413C4F2050343F254124FF0805125 -:100620001960C4F205021068C100FCD50023C4F2B1 -:100630000F037F22C3F8002F1946C3F8102FD1F8FB -:100640000C0F002310F07D0FC4F20F03F7D16FF0F1 -:100650006042C3F8202F1946C3F8302FD1F82C0F71 -:100660000023C4F20F030028F8D101221121986160 -:100670001A60D960704700BF08B5FFF751FFFFF758 -:10068000C7FF0023C4F20F030022C3F8082108BDEE -:1006900008B5FFF7BDFF0023C4F20F034FF48262D9 -:1006A000C0F2060242F20141D961C3F808210022DA -:1006B000C3F804210122052019461A608A68002324 -:1006C000C4F20F03002AF9D10138F7D14FF4704278 -:1006D000C0F2FF027F206FF060411A625A62C3F8D5 -:1006E000000FC3F8100FC3F8201FC3F8301F08BD58 -:1006F0000023C4F20F0340F0014040F4C072012116 -:1007000040F040005961C3F82023C3F8000370474C -:100710001EF0040F0CBFEFF30880EFF3098000F028 -:1007200001B800BF014B186000BEFEE78000081052 -:10073000FEE700BFFEE700BFFEE700BFF0B490E8B1 -:10074000E0008C2230244C21C4F20502C4F20504DE -:10075000C4F205010123136023600B600DB9002E64 -:1007600032D03020C4F2050040F60101C0F2004151 -:100770002C220160C4F205021368D907FCD434208E -:100780003821C4F20500C4F205013023C4F2050388 -:1007900005600E601A6847EA020040F4005141F01B -:1007A00011021A6018682C2220F001011960C4F2AD -:1007B00005021368DB07FCD58C20C4F205004FF05E -:1007C00008220260F0BC7047037B2BB94FF4006134 -:1007D000C0F200411160F5E7980040F080604FF4EE -:1007E00000631843C0F6005308601360EAE700BFD7 -:1007F0004421C4F2050170B44CF63C430E68056810 -:1008000082684468CEF20003334043EA052040F09A -:10081000806343F0C00040EA043343EA02404022D0 -:100820000860C4F205021168C807FCD570BC7047A7 -:100830001822C4F205022DE9F04F116821F00400DE -:100840001060146824F0010595B042F2107615602E -:1008500000BF731E00BF5E1EFAD16C276424802186 -:100860008422C4F20501C4F20502C4F20507C4F2F1 -:1008700005044FF40065C0F200653D60102025605E -:100880000D60214C156000F059FC00F0C3FB1F4FB8 -:100890002368D919002800F0ED811D4E8B4246F0E7 -:1008A0000046184680F03B821A1A915D03F8011B3E -:1008B0002568EA199342F7D3D5F89C30B5F874103F -:1008C0002B65B5F876E0B5F87E70B5F87C606868A1 -:1008D0000023C8F2020305F18C020EFB012107FB85 -:1008E0000616D3F808801F68AA678307C5F880102A -:1008F000C5F8886000F1CD810122CCF61B22974219 -:1009000000F0F88106E000BF18000810000C00009D -:10091000DC50000005F13C00FFF76AFF2668308BD1 -:1009200000F00CFC2068808B00F028FC4FF06C0974 -:100930004FF0640C802784262021C4F205094FF46F -:100940000063C4F2050CC4F20507C4F20506C4F244 -:10095000050140F60100C0F60013C0F200401C2261 -:10096000C9F80030C4F20502CCF800303B603360B7 -:1009700008601768FE07FCD42426696AC4F20506DD -:1009800028203160AA6AC4F205002023C4F20503BE -:1009900002601F68ED6A47EA050646F0110119601A -:1009A00018681C2220F001071F60C4F205021368BA -:1009B000DD07FCD56025C4F205054FF4006643F25F -:1009C0002C11C4F20401C0F2007678272E60C4F224 -:1009D000050708680397902774227C23C4F2050753 -:1009E0000697C4F20502C4F205039C270192049302 -:1009F00088229423C4F205070997C4F20502C4F2C1 -:100A00000503A827059207939822A023C4F205079F -:100A10000C97C4F20502C4F20503B42708920A93A6 -:100A2000A422AC23C4F205070F97C4F20502C4F256 -:100A30000503C02702900B920D93B022B823C4F295 -:100A400005071297C4F20502029F0E92C4F2050335 -:100A50001093BC22C423C4F20502C4F2050347F478 -:100A600000374FF0180A4FF05C094FF068084FF05C -:100A7000700E11921393C4F2050A0F60C4F20509B7 -:100A80000199039FC4F20508C4F2050E0123CAF8B8 -:100A90000030C9F80030C8F80030CEF800300B60E4 -:100AA0003B600499059F0B603B600699079F0B60B4 -:100AB0003B600899099F0B603B600A990B9F0B6094 -:100AC0003B600C990D9F0B603B600E990F9F0B6074 -:100AD0003B601099119F0B605026542558204FF011 -:100AE000C80B3B601299139F0B60C4F2050BC4F254 -:100AF0000506C4F20505C4F2050041F20842C4F23D -:100B000005023B60CBF8003033602B600360106857 -:100B100041F21843C4F2050320F001011160186886 -:100B20004FF4A152C4F2050220F0010119601068CF -:100B300041F23043C4F2050320F00101116018684E -:100B400041F23842C4F2050220F001011960106838 -:100B500041F26843C4F2050320F0010111601868F6 -:100B600041F27042C4F2050220F0010119601068E0 -:100B700041F27843C4F2050320F0010111601868C6 -:100B80004FF4A852C4F2050220F001011960106868 -:100B900041F20853C4F2050320F001011160186806 -:100BA00041F21052C4F2050220F0010119601068F0 -:100BB00041F21853C4F2050320F0010111601868D6 -:100BC00041F22862C4F2050220F0010119601068A8 -:100BD0004FF4A953C4F2050320F001011160186815 -:100BE00041F22852C4F2050220F001011960106898 -:100BF0004FF4B053C4F2050320F0010111601868EE -:100C000041F20862C4F2050220F001011960106887 -:100C100041F21063C4F2050320F00101116018686D -:100C200041F21862C4F2050220F001011960106857 -:100C30004FF4B153C4F2050320F0010111601868AC -:100C400041F23062C4F2050220F00101196010681F -:100C5000216841F21873C4F2050320F0010010600E -:100C60001A68886F22F00101196015B0BDE8F04FD5 -:100C7000FFF764BD40488B4240F0004618464ED214 -:100C80001A1A955D03F8015B2568E9198B42F7D3C1 -:100C900012E600F0AFF900F00FFA00F0F9F900F0F9 -:100CA00019FA002000F064F9344E3070002000F092 -:100CB0005FF900F01005EAB2727092BB2068D0F8BC -:100CC0008800B43000F026F9002000F051F942F21B -:100CD0001077B07000F00CFA00F018FA3A4600BF36 -:100CE000551E00BF6A1EFAD1104600F041F9256872 -:100CF000F0700FE6AE6C4046C117A6FB082306FB5A -:100D0000013319A1D1E90001801841EB030118A3B7 -:100D1000D3E9002300F0B0FC3718AF64FAE51D46B4 -:100D2000CAE52168D1F8880000F0F4F80123CCF678 -:100D30001B239F42C8D1124F3F68BD6C4246D0175B -:100D4000A5FB082305FB003307A1D1E900018018AA -:100D500041EB030106A3D3E9002300F08DFC291821 -:100D6000B964B1E7AFF300800065CD1D000000005D -:100D700000CA9A3B0000000048530000840008109D -:100D800018000810AFF300804421C4F2050130B40C -:100D900002680D68446880684CF63C43CEF200035C -:100DA00012022B4042EA043243F0806342EA0040E0 -:100DB00043F04003034340220B60C4F20502116874 -:100DC000CB07FCD542F2107200BF531E00BF5A1E63 -:100DD000FAD14421C4F205014CF63C430A68CEF234 -:100DE0000003134043F0806343F0C00210434022ED -:100DF0000860C4F205021168C907FCD530BC704711 -:100E00004FF4C040C4F20F004FF4805100F08CB991 -:100E10004FF4C040C4F20F004FF4805100F088B985 -:100E200046F20400C4F20F0008B5802100F07CF9FE -:100E300048F2A060C0F2010000BF431E00BF581E70 -:100E4000FAD108BD46F20400C4F20F004FF400517D -:100E500000F06EB9F8B54FF4C04C46F2040E46F2FD -:100E6000080746F20C0646F2100446F2140046F259 -:100E7000180146F21C02C4F20F0CC4F20F0EC4F2A9 -:100E80000F04C4F20F00C4F20F01C4F20F02C4F247 -:100E90000F07C4F20F0600231D4DCCF80030CEF82A -:100EA00000303B603360236003600B60136095E8A3 -:100EB000030000F041F90824291928594968083429 -:100EC00000F03AF92A1928595168083400F034F929 -:100ED000B4F5A16FF0D146F20404C4F20F04206807 -:100EE00040F080032360FFF79BFF216841F400522C -:100EF0002260FFF7A7FF4FF4C040C4F20F00036861 -:100F000043F480510160BDE8F840FFF781BF00BFA6 -:100F1000904B000070B5064600F050F9C02000F07C -:100F200071F90F2000F06EF90F24651C305D00F0A0 -:100F300069F90234705D00F065F95D2CF5D100F0BF -:100F4000C1F900F03BF9C02000F05CF9952000F0F9 -:100F500059F99524651C305D00F054F90234705D38 -:100F600000F050F9AB2CF5D1BDE8704000F0AAB903 -:100F700010B5044600F022F9C02000F043F92046E5 -:100F800000F040F900F01AF9C12000F03BF900F040 -:100F900069F9044600F096F9204610BD70B5054683 -:100FA0000E4600F00BF9C02000F02CF9EEB12C46F3 -:100FB000AE1914F8010BED43A91901F0010500F079 -:100FC00021F9B44211D02DB114F8010B00F01AF937 -:100FD000B4420AD0254615F8010B00F013F96078E9 -:100FE0006C1C00F00FF9B442F4D1BDE8704000F081 -:100FF00069B900BF00B545F29803C0F2000383B0A1 -:101000001A8801A80221ADF80420FFF7C7FF03B03A -:1010100000BD00BF70B582B055230924022101A88C -:101020008DF805308DF80440FFF7B8FF2046FFF734 -:101030009FFF552802D0002002B070BD99220221E6 -:1010400001A88DF80520FFF7A9FF2046FFF790FFC4 -:10105000AA260221054601A88DF80560FFF79EFF2C -:101060002046FFF785FFFF230221064601A88DF8E1 -:101070000530FFF793FF2046FFF77AFF992DDAD16D -:10108000AA2ED8D1B0F1FF0148424841D4E700BFB1 -:1010900000B545F29803C0F2000385B053F8040F81 -:1010A00059681B7A01AA03C201A809211370FFF72E -:1010B00075FF05B000BD00BF00B5054B83B01A88B1 -:1010C00001A80221ADF80420FFF768FF03B000BDBE -:1010D000A850000000B5054B83B01A8801A8022172 -:1010E000ADF80420FFF75AFF03B000BDAC5000007C -:1010F00000B5054B83B01A8801A80221ADF8042081 -:10110000FFF74CFF03B000BDB050000000B5054B29 -:1011100083B01A8801A80221ADF80420FFF73EFF32 -:1011200003B000BDB4500000C0F80012704700BF0B -:10113000C0F88012704700BF0160704770B441F280 -:10114000140146F6844541F21004C4F20A0141F24A -:1011500018024FF48053C4F20805C4F20A04C4F222 -:101160000A02C4F20A0340F608062E6020600860F6 -:101170006C2040211060196070BC7047F0B41421DD -:1011800046F20C1646F210151024C4F20E01182275 -:101190000023C4F20806C4F20805C4F20E04C127F5 -:1011A000C4F20E02C4F20E0337602F6020600860A4 -:1011B0006C20402110601960F0BC704741F21803A8 -:1011C0004FF48052C4F20A02C4F20A03082120201C -:1011D00019601060136818070DD442F2107004E013 -:1011E0001368190707D4013805D0116811F0080FEA -:1011F00000F1FF30F4D041F21801C4F20A012022BC -:101200000A6070474FF48053C4F20A0319688B06D2 -:1012100005D541F21803C4F20A0320221A6041F2F4 -:101220000801C4F20A0141F21803C4F20A034FF4A0 -:1012300080520860C4F20A0208201860116808078A -:101240000DD442F2107304E01168090707D4013B82 -:1012500006D0106810F0080F03F1FF33F4D0704788 -:10126000704700BF4FF48053C4F20A031868830626 -:1012700005D541F21801C4F20A0120220A6041F2A8 -:101280001803C4F20A034FF480520820C4F20A0281 -:101290001860116808070DD442F2107304E0116859 -:1012A000090707D4013B05D0106810F0080F03F1BF -:1012B000FF33F4D041F20802C4F20A021068C0B24F -:1012C000704700BF4FF48053C4F20A0318688206C7 -:1012D00005D541F21801C4F20A0120220A604FF438 -:1012E000805041F21803C4F20A00C4F20A0310212C -:1012F000082201601A60704743F25411C4F20501DC -:1013000082B00B6801930198C2010DD543F204121B -:10131000C4F20502019BD84340F080731360086853 -:101320000190019BDB01F5D402B0704743F2044306 -:10133000C4F2040343F25411C4F20501186082B0F0 -:1013400008680190019AD3010DD443F20412C4F24B -:101350000502019BD84320F0807313600868019058 -:10136000019BD801F5D502B0704700BF43F2501180 -:10137000C4F2050182B00B6801930198C3040DD536 -:101380004FF44452C4F20502019BD84340F4805309 -:10139000136008680190019BD804F5D402B070472F -:1013A000FEE700BF704700BF9749984A914280F01E -:1013B0002881D51C0B1D9648EC1A24F00307024621 -:1013C0003D1D52F8046B3C466F18BB420E60C4F3DF -:1013D000800614D03EB112681A6001F10803BB42C6 -:1013E00000F108020BD01146184651F8044B40F8A2 -:1013F000044B55685D60031D0A1DBB42F3D1854F48 -:10140000BB4216D2FE1C1A1DB11A21F00300041DA6 -:101410001D19AF1A00267C0708D51E60134604323A -:10142000AA421E6005D0131D16601A1DAA421E6036 -:10143000F9D1794D794B9D421CD2D91C2E1D881BA8 -:1014400083085F1C01242A6803EA04089047BC4211 -:1014500010D0B8F1000F05D0022431688847BC4293 -:10146000354607D06E68B0470234A8688047083513 -:10147000BC42F7D16A4D6B4B9D421CD2DF1C2E1D26 -:10148000BA1B91084F1C0124286801EA040980470F -:10149000BC4210D0B9F1000F05D002243368984740 -:1014A000BC42354607D06E68B0470234AA68904700 -:1014B0000835BC42F7D172B64FF4445943F2041CCC -:1014C0004EF2802E4EF284274EF288264EF28C2564 -:1014D0004EF290244EF294204EF298214EF29C222D -:1014E000C4F20509C4F2050CCEF2000ECEF20007DC -:1014F000CEF20006CEF20005CEF20004CEF20000DD -:10150000CEF20001CEF200024FF4805A4FF2FF7883 -:101510004FF0FF33C1F2DF0AC0F2DF18C9F800A0B4 -:10152000CCF80080CEF800303B6033602B60236045 -:1015300003600B60136062B63B4B3C4E9D1B032D5A -:1015400033DD4FF444503A4A25F00301C4F204005D -:10155000521A9E42026023D2DC1C301D1346251A0B -:1015600025F0030553F8044B294604355519AB42C1 -:101570003460C1F3800213D032B153F8041BAB4284 -:10158000016006F108000BD01946024651F8044BE1 -:1015900042F8044B5C680B1D4460101DAB42F3D154 -:1015A0004FF44453C4F204031E604EF68855CEF245 -:1015B0000005286840F470012960FEF7DDFE1D4D2E -:1015C0001D4A95421DD2D71C2E1DBC1BA3085F1CB3 -:1015D0000124286803EA04088047BC4211D0B8F10E -:1015E000000F05D0022431688847BC42354608D038 -:1015F0006A6890470234AB682E1D98470835BC4294 -:10160000F6D10B46FBE600BF000008101C000810D6 -:10161000C050000088000810B8500000B85000000A -:10162000B8500000B8500000C0500010000000107A -:10163000C0500080B8500000B85000004309990025 -:1016400001F1604202F5614300F01F00012101FA3F -:1016500000F21A60704700BF342805D800F16040DE -:1016600000F56442117070474EF6145300F00F00FD -:10167000CEF20003C154704773B96AB9002908BF9C -:101680000028BCBF00204FF00041C4BF6FF00041F4 -:101690004FF0FF3000F038B882B0EC462DE9005032 -:1016A00000F006F8DDF804E002B00CBC704700BFA3 -:1016B000F8B5164604460D461F4600F027F806FB0F -:1016C00001F300FB0737A6FB0023FB18A21A65EB0A -:1016D0000303069CC4E90023F8BD00BFF8B5164615 -:1016E00004460D461F4600F06FF900FB07F7A0FB0C -:1016F000062306FB0177FB18A21A65EB0303069C81 -:10170000C4E90023F8BD00BF704700BF00292DE9E0 -:10171000F00F1D46C0F29D800024002DC0F2948081 -:1017200080460F4694461E46E3BB8A4255D9B2FA1C -:1017300082F747B1C7F1200520FA05F601FA07F153 -:10174000BA403143B840170CB1FBF7F6030C1FFA4F -:1017500082FC07FB16110CFB06F543EA01439D4290 -:1017600008D9711E9B1880F013819D4240F21081B0 -:10177000023E9B18591BB1FBF7F507FB151380B20E -:101780000CFB05FC40EA03418C4507D96B1E8A1807 -:1017900080F00081944540F2FD80023D45EA06411B -:1017A000002503E08B420CD9002529460A462B462A -:1017B00014B1524263EB430310461946BDE8F00FE3 -:1017C0007047B3FA83F5002D40F087808B4201D338 -:1017D0008242EAD800250121E8E712B90126B6FBCA -:1017E000F2F2B2FA82F6002E39D18E1A130C1FFAD9 -:1017F00082FC0125B6FBF3F703FB17614FEA1049A2 -:101800000CFB07F849EA0146B04506D9791EB6181F -:1018100002D2B04500F2D3800F46C8EB0606B6FBF5 -:10182000F3F103FB116380B20CFB01FC40EA0343BC -:101830009C4506D94E1E9A1802D2944500F2C280E9 -:10184000314641EA0741B1E7E443524263EB4303C7 -:1018500066E7404261EB41014FF0FF345DE7B24083 -:10186000C6F1200921FA09F720FA09F5130C01FA4B -:1018700006F1B7FBF3F845EA01091FFA82FC03FB06 -:1018800018774FEA19410CFB08F541EA0747B040C9 -:10189000BD420AD9BF1808F1FF3680F08E80BD42E4 -:1018A00040F28B80A8F10208BF18791BB1FBF3F559 -:1018B00003FB15171FFA89F90CFB05F649EA0741E6 -:1018C0008E4206D96F1E891871D28E426FD9023DA1 -:1018D00089188E1B45EA08458CE7C5F1200122FADC -:1018E00001F306FA05F61E4327FA01F24FEA1649FC -:1018F00007FA05F720FA01F1B2FBF9F80F433B0CA8 -:101900001FFA86FA09FB18220AFB08FB43EA024287 -:1019100093450CFA05FC08D9921908F1FF314AD217 -:10192000934548D9A8F102089219CBEB0203B3FB07 -:10193000F9F109FB1132BFB20AFB01FA47EA02438F -:101940009A4506D94A1E9B1933D29A4531D9023994 -:101950009B1941EA08410F0C1FFA8CF808FB07F6A7 -:101960008AB24FEA1C4C08FB02F80CFB026202EB45 -:1019700018420CFB07FC964288BF0CF5803CCAEB72 -:1019800003030CEB124C63450ED305D000250DE785 -:101990000E46EFE61D4601E71FFA88F800FA05F04B -:1019A00008EB0245A842F1D201390025FEE63D468A -:1019B0008FE71146CDE78846B7E7B04675E7023FA7 -:1019C000B6182AE702393CE72DE9F0071446054628 -:1019D0000E46002B3DD18A4249D9B2FA82F747B16F -:1019E000C7F1200120FA01F206FA07F6BC401643BF -:1019F000BD40220CB6FBF2F02F0CA1B202FB106628 -:101A000001FB00F347EA0646B34208D9471E3619E0 -:101A100080F0F880B34240F2F58002383619F61AA9 -:101A2000B6FBF2F302FB1362ADB201FB03F145EA30 -:101A30000242914207D95E1E121980F0E580914260 -:101A400040F2E280023B43EA00400021BDE8F0079B -:101A500070478B4243D8B3FA83F4002C42D18B42B7 -:101A600002D3824200F2DF8000210120EEE712B9AA -:101A70000127B7FBF2F4B4FA84F2002A40F0888020 -:101A80000A1B230CA7B20121B2FBF3F603FB1622BB -:101A90004FEA154C07FB06F04CEA0242904207D988 -:101AA000121906F1FF3C02D2904200F2CE80664647 -:101AB000121AB2FBF3F003FB1023ADB207FB00F7E1 -:101AC00045EA03439F4207D9421E1B1980F09E80BE -:101AD0009F4240F29B80023840EA0640B6E7002170 -:101AE0000846B3E7C4F1200622FA06F503FA04F328 -:101AF0002B434FEA134C21FA06F501FA04F120FAC0 -:101B000006F6B5FBFCF746EA010A1FFA83F80CFB60 -:101B100017554FEA1A4108FB07F941EA0545A9455F -:101B200002FA04F203D97E1EED187FD33746C9EBC3 -:101B30000501B1FBFCF60CFB16151FFA8AFA08FB2F -:101B400006F84AEA0541884503D9751EC91873D3BA -:101B50002E4646EA0746370C1FFA82FC0CFB07F5B7 -:101B6000120CB3B20CFB03FC02FB035303EB1C434C -:101B700002FB07F29D4288BF02F58032C8EB0101EB -:101B800002EB134291424BD342D0304600215DE735 -:101B90009440C2F1200521FA05F6230C20FA05F73E -:101BA00001FA02F1B6FBF3FC39430D0CA7B203FBBB -:101BB0001C6645EA064607FB0CF8B04500FA02F53C -:101BC00008D936190CF1FF303DD2B0453BD9ACF104 -:101BD000020C3619C8EB0602B2FBF3F003FB102629 -:101BE0008AB242EA064207FB00F1914206D9461E3C -:101BF000121926D2914224D902381219521A40EAF7 -:101C00000C4141E738460AE733461CE7104663E7D4 -:101C10001FFA8CFC00FA04F00CEB03439842B4D298 -:101C2000701E002112E7214620460FE7A9457FF6E6 -:101C30007DAF023FED187AE7884589D9023EC91881 -:101C400087E73046DAE78446C4E7023E12192FE7F9 -:101C5000E00F002055E5002051E50020D5CC002004 -:101C60000000000000000000000000000000000074 -:101C700000000000000000000000000051E500200E -:101C8000000000000000000051E5002051E50020A8 -:101C90004DE50020D9C100204DE5002000000000E6 -:101CA0004DE500204DE500204DE500204DE50020EC -:101CB00025DB00204DE500204DE500204DE500200E -:101CC0004DE500204DE500204DE500204DE50020CC -:101CD0004DE500204DE500204DE500204DE50020BC -:101CE0004DE500204DE500204DE500204DE50020AC -:101CF0004DE500204DE500204DE500204DE500209C -:101D00004DE500204DE500204DE500204DE500208B -:101D100008B503695868002801D000F015F900F0F3 -:101D2000F9F808BD054B0122196848700A70BFF325 -:101D30004F8F40BF08680028FCD170476CEC002032 -:101D4000054B0122196848700A70BFF34F8F40BFDE -:101D500008680028FCD1704770EC002038B5204B93 -:101D6000051C1868012245700270BFF34F8F40BFF9 -:101D700001680029FCD11B4C2368188B02F04EF837 -:101D80002068408B02F064F86AB2002A12DA7F20E1 -:101D90002168054018225543081C0431CB6F483098 -:101DA0005919096901F020F82468201C04344830CE -:101DB000E36F0DE0182321685D438A6F081C5119F9 -:101DC0004830096901F010F82468201CA36F4830DE -:101DD0005D19297D01F028F8034A0120106038BD03 -:101DE00078EC002028EF002000F0002010B5041C43 -:101DF00001F040F80A4B0222186844700270BFF3E9 -:101E00004F8F40BF01680029FCD1064C2368188B16 -:101E100002F004F82068808B02F01AF810BDC0466A -:101E200078EC002028EF0020014B00221A60704758 -:101E30003031044070B58CB000F072FC274B01AC1F -:101E40001868483001F04AF8254801F0B5FE01F065 -:101E5000F5FA244D0020291C01F0EEFB224801F088 -:101E60005FFD224801F05CFD214801F059FD214849 -:101E700001F056FD204801F035FC204801F032FC0D -:101E80003A202070201C01F04FFA218B002903D149 -:101E9000606AA16A00F0C4FC0820FF2102F042FA47 -:101EA0000120011C02F03EFA012002F02FFA281C4A -:101EB00001F006FC124A134B134D16681868296886 -:101EC00020BF346802680B689C42F9D00F4E10485E -:101ED000A11901F0B1FD2A681460EBE728EF00209A -:101EE000C1C000201CEE002048EE002068EE00205B -:101EF00058EE0020F0EE002078EE0020C8EE002022 -:101F000074EC00207CEC002080EC002000400020DD -:101F100000EF002038B5041C00F0F6FB074D012C43 -:101F200006D1074801F0DEFB2878FFF717FF02E033 -:101F30002878FFF75BFF034B1C7038BD00F50020CD -:101F400000EF002004F00020014B18787047C046D5 -:101F500004F0002008B543781B2B06D8054A9B00E7 -:101F60009B58002B04D0984703E04842484100E0CA -:101F7000012008BD90F3002008B5002901D100F030 -:101F8000B7FC002008BD70B5051C00200C1E844263 -:101F90000DD16E880120B21E0B2A08D800F0EAFF8E -:101FA000300401F0C7F8A86901F053FD201C70BD92 -:101FB00038B50023994219D181880123FF2915D80A -:101FC00044889C4212D80A4D4A0952191F252940BB -:101FD00092008B401168012C01D10B4301E0994321 -:101FE0000B1C1360806901F034FD0023181C38BD00 -:101FF00000D8031038B5051C0C1E07D100F0BAFF3D -:10200000201C01F097F8A86901F023FD002038BDDD -:10201000F8B5041C00292AD1164B81881868021CC7 -:10202000763215882E1C8D4200D90E1CB2B2124990 -:10203000402A02D8002A03D000E04022002303E017 -:102040000D60A06904220DE0934209DA18265E4370 -:10205000876F9D00BE19376901337E004E51F3E74B -:10206000A069920001F0E8FCE06901F0F2FC0020B8 -:10207000F8BDC04628EF002000F40020002238B54B -:10208000041C0D1E95421AD183880122FF2B16D8FD -:102090000C4859090918880001681F200340101CCA -:1020A0009840031C0B40591E8B41211C23720831A0 -:1020B000A06901F0C1FCE06901F0CBFC2A1C101CF6 -:1020C00038BDC04600D8031070B50025041C0E1E94 -:1020D000AE4217D18388042B08D1C2880A4980698F -:1020E00001F0AAFCE06901F0B4FC0BE00125052B2E -:1020F00008D1C2880549806901F09EFCE06901F0C1 -:10210000A8FC351C281C70BDAFEC002082ED00201F -:1021100010B5041C002909D10172011C0831806925 -:10212000012201F089FCE06901F093FC002010BD60 -:1021300010B5041C00290AD18388012B02D100F0BC -:10214000DDFB01E000F0E4FBA06901F082FC00206F -:1021500010BD000010B5041C00290FD1084B2179D7 -:102160001868483000F0E2FD211C20720831A06997 -:10217000012201F061FCE06901F06BFC002010BD60 -:1021800028EF002010B5041C00290FD1084B21793D -:102190001868483000F0C1FD211C20720831A06988 -:1021A000012201F049FCE06901F053FC002010BD60 -:1021B00028EF002010B5041C00290FD1084B21790D -:1021C0001868483000F0A2FD211C20720831A06977 -:1021D000012201F031FCE06901F03BFC002010BD60 -:1021E00028EF002010B5041C00290FD1084B2179DD -:1021F0001868483000F083FD211C20720831A06966 -:10220000012201F019FCE06901F023FC002010BD5F -:1022100028EF002010B5041C00290FD1084B2179AC -:102220001868483000F064FD211C20720831A06954 -:10223000012201F001FCE06901F00BFC002010BD5F -:1022400028EF002010B5041C002905D109490422FB -:10225000C06901F0F1FB0BE0012909D1064B0549EA -:1022600018680968483000F0EFFCA06901F0F1FB44 -:10227000002010BD88F3002028EF002070B5041C5A -:102280000020814255D1A3882A4A3F2B06D81068E6 -:1022900076300188012099422ADC4AE0FA2012684F -:1022A00080005843131C76331B8899420CDA18259A -:1022B0004D43966F75192E69B500854202D11E4AAD -:1022C00011701AE00131F0E7111C7E3109880023FA -:1022D00000E001338B420EDA151DEE6F18255D43C9 -:1022E00076193569AE008642F3D1802041420B4316 -:1022F000114E337001E001201BE0FFF725FE0E4D6B -:10230000061E012E02D12878FFF770FD2878FFF70E -:1023100009FD012E02D12878FFF720FD0122211CA2 -:1023200022720831A06901F087FBE06901F091FB9E -:10233000002070BD28EF002000F5002070B5041CBF -:102340000020814221D1A388012083421DD8DEB222 -:10235000FFF7FAFD051E012D03D10C480078FFF7A9 -:1023600045FD301CFFF7ECFC012D03D1074908782F -:10237000FFF7F4FC0122211C22720831A06901F050 -:102380005BFBE06901F065FB002070BD00F50020FB -:1023900070B5002592B0061CA94226D107AC3623A1 -:1023A000201C237000F0C0FF208BA84201D0012523 -:1023B0001BE0E169226A3A23201C019102922370FA -:1023C00000F0B2FF208B0028F1D1E169226A636A34 -:1023D000A46A03910492B06901A918220593069496 -:1023E00001F02AFBF06901F034FB281C12B070BD2B -:1023F00038B5051C002922D1124C00220B1980206F -:1024000001311A7043009942F6D10F49201C096826 -:10241000083102F0B5F8201C02F0BAF80B49001997 -:1024200002F0AEF8201C02F0B3F8021D0320824334 -:10243000211CA86901F000FBE86901F00AFB0020FB -:1024400038BDC04600F4002028EF002050E90020ED -:10245000F8B5051C002931D1C488478882888026B8 -:1024600001208640B44236D838041043802307192F -:10247000194E5A03974217D9032C0DD90323271C51 -:102480001F4009D1034008D1A1089A001758013311 -:10249000B7508B42F9D30BE000E0391CA14207D2C0 -:1024A0000A5C72540131F9E7211C321C00F0F2FE83 -:1024B000A869311C221C01F0BFFA0BE000200129A1 -:1024C00009D1EA888023081C59008A4203D8E869A8 -:1024D00001F0BFFA0020F8BD00F4002070B5041C24 -:1024E0000D1E17D1E288012380264088A1889E40D6 -:1024F000B2422AD8050480200D4341038D4224D8DE -:10250000AE188E4221D81249E06901F095FA00F028 -:1025100031FD19E00023012917D1E18880262B1C09 -:102520004088A2887500A9420FD800041043802279 -:102530005603B04209D84518B54206D8044A00F0FF -:1025400069FEA06901F085FA0023181C70BDC04621 -:1025500000F4002070B50025041C0E1EAE4214D1FC -:1025600081880125FF2910D8094BC9B21868483065 -:1025700000F0F4FA211C2A1C20720831A06901F035 -:102580005BFAE06901F065FA351C281C70BDC04695 -:1025900028EF002038B5041C00200D1E854211D103 -:1025A000A1880120FF290DD86288FF2A0AD8064B8E -:1025B000C9B21868D2B2483000F08EFAA06901F0B2 -:1025C00048FA281C38BDC04628EF002070B5002509 -:1025D000041C0E1EAE4211D180880125FF280DD8A3 -:1025E000C0B200F0C0F9211C2A1C20720831A06979 -:1025F00001F022FAE06901F02CFA351C281C70BDAC -:1026000038B5041C00200D1E85420ED1A388012080 -:10261000FF2B0AD86188FF2907D8D8B2C9B200F0C9 -:1026200091F9A06901F015FA281C38BD38B50023CE -:10263000051C0C1E9C420AD140880123984206D8F2 -:10264000C0B2FFF767FCA86901F003FA231C181C4D -:1026500038BD000038B5002399421BD18288012380 -:10266000FF2A17D844889C4214D80B4D51094919A8 -:102670001F252A4089009340012C03D18025AA0000 -:10268000891802E0A022940009190B60806901F00A -:10269000E0F90023181C38BD00D8031010B5041C45 -:1026A0000020814222D1A2880120FF2A1ED8104991 -:1026B00053095B181F210A409B0090401A68104282 -:1026C00003D080218A009B1801E00133FF331B688F -:1026D000211C1840431E9841207208310122A06934 -:1026E00001F0AAF9E06901F0B4F9002010BDC0467C -:1026F00000D8031080239A00801801607047A0233F -:102700009A0080180160704708B5034800F0CEFEBB -:10271000024800F0CBFE08BD00EF0020A0EE002034 -:102720001F4B2049204800221A7008601F4B204A86 -:10273000204821491A6058609960204A2048214960 -:10274000DA6018615961204A204821499A61D861AC -:102750001962204A204821495A629862D962204A67 -:10276000204821491A6358639963204A2048214927 -:10277000DA63214A18645964204821499A64214A3D -:10278000D8641965204821495A65214A9865D96558 -:102790001A6620482049214A58669966DA667047C9 -:1027A00000F5002088F3002000E1F50590F30020FB -:1027B00029C30020DDC90020B1C900207DC9002047 -:1027C00045C9002005C90020A5C300208DC80020F0 -:1027D00001C80020C1C40020A1C7002041C70020BB -:1027E0002DC60020F5C50020C5C5002095C50020D8 -:1027F00065C5002035C5002005C5002079C400202E -:10280000E1C4002005CA00204DCA002061C3002099 -:102810002DC40020C1C30020EDC6002037C3002016 -:10282000F0B52D4B050E2C091E5D0F2425402B4ABB -:102830005F5DFF25967517762E04071C37403D0C0B -:102840002F09DF5D25405D5D9776FF2715773D02F7 -:1028500005402F0A3D095D5D2740BC4695776546DA -:102860005D5D571CFD77C7B23D095D5D2040185C7A -:10287000D71CFD77571DF877080E05095D5DD71D3C -:102880002040185CFD770E40171C350C2837387037 -:102890002F09D85D161C2A3630702540FF265D5D55 -:1028A000171C300208402C373D70070A3E09985D1E -:1028B000151C2740DF5D2E35161C28703036CDB232 -:1028C00037700C402E099F5D101C195D3230343278 -:1028D00007701170F0BDC046A0E90020D7EC0020C1 -:1028E0000023834202D0C0460133FAE7704700005C -:1028F000014B01221A60FEE70031054008B5802136 -:1029000002488901FFF7F6FE08BDC04604600F408B -:1029100008B5802102488901FFF7F1FE08BDC046D5 -:1029200004600F40042475462C4202D0EFF3098066 -:1029300002E0EFF30880FFE7014B186000BEFEE7FE -:1029400040F7002038B50C1C051C01F09DFAC02092 -:1029500001F0DAFA281C01F0D7FA201C01F0D4FAB1 -:1029600001F072FB38BD10B5041C01F08DFAC020D7 -:1029700001F0CAFA201C01F0C7FA01F085FAC12063 -:1029800001F0C2FA01F00CFB041C01F05DFB201CFD -:1029900010BD000038B50C4B051C18680C1C020655 -:1029A00010D50A490A78002A0CD101F08DFA34209A -:1029B00001F0D0FA281C01F0CDFA201C01F0CAFA6F -:1029C00001F054FB38BDC04604620F402CEF0020DC -:1029D0000021312806D9044A32381421904201D806 -:1029E000024B195C081C704757020000C4E9002024 -:1029F00038B50E4B051C1868020616D50C490C7824 -:102A0000002C12D101F060FA342001F0A3FA052065 -:102A100001F0A0FA285D013401F09CFA1B2CF9D1D9 -:102A2000002001F097FA01F021FB38BD04620F404D -:102A30002CEF0020F8B5254B161C1A6880240D1CBD -:102A400014400CD0224900240F78002F07D10CE04D -:102A5000671F1D2F06D80219D3792B550134B442B4 -:102A6000F6DB32E001214B42F7E701F02DFA352089 -:102A700001F070FA174C012E0ED8381C01F0B6FA8E -:102A80000F2606400709A25DF8B2245C110121431C -:102A9000297001F0EBFA18E02F1C731E781B984286 -:102AA0000DDA012001F0A2FA0F230340E25C0009D5 -:102AB000C3B21101E25C114339700137EDE7002028 -:102AC000AD1901F093FA013DDAE7F8BD04620F4059 -:102AD0002CEF00205BEC00200E4B70B5061C186834 -:102AE0000D1C141C020603D50B490A78002A02D0DB -:102AF0007619F47170BD01F0E7F9342001F02AFA7B -:102B0000281C01F027FA201C01F024FA01F0AEFA8B -:102B1000EEE7C04604620F402CEF002008B54B1FC3 -:102B20001D2B02D8C3181B7B01E001235B4293429B -:102B300001D0FFF7D1FF002008BD10B54C1F1D2CA0 -:102B400008D80419247B9C431340221C1A43FFF726 -:102B5000E5FF01E00120404210BD000038B5044D02 -:102B60004A1C0C1CD2B2291CFFF764FF285D38BD3B -:102B700044F70020F7B50568041C0E1C00235F1CF9 -:102B8000311C2F4AB94088182E49884203D93B1E70 -:102B9000052BF4D100E01F1C7A01D2B2201C1021B9 -:102BA000E023FFF7CAFF002848DB0137690C6808FB -:102BB000BE40019000917018291C01F0CDFB031C50 -:102BC0000D3BDAB2071C90088100531A9A01801855 -:102BD000C2B21421201CFFF7A1FF00282EDBFFB298 -:102BE0007D43761B04D10822201C1221131C23E0F4 -:102BF000009D002776193B1C019ADA40964206D3C5 -:102C00008021080218410743BFB2B61A02D001332F -:102C1000102BF1D1FAB2201C1521FFF77FFF0028FD -:102C20000CDB3A0A201C1621FFF778FF002805DB91 -:102C3000201C122100220823FFF77FFFFEBDC046A3 -:102C400080F17F968038F57EF8B5264B244A041C27 -:102C50000D1C8768081C002101F0CEFB081CFFF743 -:102C6000B7FE03267043204908230E183278201C33 -:102C70001721FFF762FF00282EDB7278201C1A2133 -:102C8000C323FFF75AFF002826DBB278201C1B2144 -:102C9000FFF744FF00281FDB201C102108220B2314 -:102CA000FFF74BFF002817DB201C082100223F23E1 -:102CB000FFF743FF00280FDB201C092100223F23E0 -:102CC000FFF73BFF002807DBE919201CFFF752FF45 -:102CD000002801DB65600020F8BDC046C046C04644 -:102CE000C7100000000000001CEC0020C046C046D9 -:102CF00008B50A1C0F230521FFF71FFF08BD08B503 -:102D00000A1C0F230721FFF718FF08BD08B50A1C8E -:102D10000F230C21FFF711FF08BD08B54A424A41B5 -:102D2000120105211023FFF708FF08BD08B50A1E90 -:102D300000D0102207211023FFF7FFFE08BD00007E -:102D400037B5041C0525201C0B2108226023FFF742 -:102D5000F4FE002843DB0422201C0F21131CFFF784 -:102D6000ECFE00283BDB201C102100220323FFF790 -:102D7000E4FE002833DB201C1949FFF7FBFE002886 -:102D80002DDB1022201C0B21131CFFF7D6FE002880 -:102D900025DB1448FFF7A4FD201C0B210022102383 -:102DA000FFF7CBFE00281ADB201C0F210022042392 -:102DB000FFF7C3FE002812DB201C05226946FFF73F -:102DC00039FE6B461A790F20104001D00F2805D12B -:102DD000013D002DB7D10121484200E000203EBD59 -:102DE00000C63E051027000038B50E4B041C00221B -:102DF00081600C301A70FFF7FBFD6168201CFFF743 -:102E000023FF201C6568FFF79BFF6560002803DA3D -:102E1000201CFFF795FF6560291C201CFFF714FF9D -:102E200038BDC0462CEF0020F0B5114F87B001AE81 -:102E3000041C0D1C301C391C042201F0FFFA391D42 -:102E400002A8102201F0FAFA0F202B0902A905406E -:102E5000F65C4A5DB02506432A43201C0A21FFF791 -:102E60005DFE201C0B21321CFFF758FE07B0F0BDA1 -:102E7000B0E9002008B50520A021FFF78BFD062052 -:102E8000D021FFF787FD07200021FFF783FD0820F1 -:102E90004021FFF77FFD0920C021FFF77BFD0A20BD -:102EA0007021FFF777FD0C20A021FFF773FD0F20A5 -:102EB0002A21FFF76FFD11200321FFF76BFD17207B -:102EC000F421FFF767FD19200C21FFF763FD024B8A -:102ED000012200201A7008BD2CEF002008B5044B19 -:102EE00000220C301A70FFF783FDFFF7C3FF08BD07 -:102EF0002CEF002070B50B4D80242401281C211CD0 -:102F0000FFF7FDFB0521002001F022F9FF21002041 -:102F100001F01EF9211C061C281CFFF7EBFBF0B288 -:102F200070BDC04614600F4070B5114D802424015F -:102F3000281C211CFFF7E3FBAB21002001F008F95E -:102F4000FF21002001F004F9FF21002001F000F929 -:102F5000FF21002001F0FCF8FF21002001F0F8F82B -:102F6000211C061C281CFFF7C5FBF0B270BDC04633 -:102F700014600F40F0B58022314B900387B0186089 -:102F8000F221304800F048FF2F48F02100F044FFC4 -:102F90002E48F02100F040FF2D48F02100F03CFFCA -:102FA0002C48F42100F038FF2B48F42100F034FFC6 -:102FB0002748F52100F030FF2648F52100F02CFFCE -:102FC0002048F22100F028FF1F48F02100F024FFE4 -:102FD000224D1E48F021C02700F01EFF204C1E4845 -:102FE000F4213F02802600F017FF3601281C391C0F -:102FF000FFF780FB311C201CFFF77CFB29680220B7 -:103000000F432F6022680025164326602B1C00907A -:103010000190029503950495281C07212A1C01F0B4 -:1030200037F8104B1D701F1C3C78132C05D0152C45 -:1030300003D0FFF779FF3870F6E707B0F0BDC04660 -:10304000043105408C61084090610840946108405B -:10305000986108409C610840A061084004600F40EE -:1030600014600F4064F70020802138B50901051C69 -:103070002048FFF744FB204B1878132819D1002073 -:103080004B2101F065F804240020FF21013C01F0F0 -:103090005FF8002CF8D10020FF2101F059F82855E5 -:1030A0000134082CF7D1802212481101FFF722FBCE -:1030B00038BD1528F7D14B21002001F049F8002038 -:1030C000011C01F045F80121002001F041F8022126 -:1030D000002001F03DF80020FF2101F039F8002424 -:1030E0000020FF2101F034F828550134082CF7D1D5 -:1030F000D9E7C04614600F4064F7002008B5FFF719 -:10310000F9FEC307FBD408BD38B5094D802424015E -:10311000FFF7F4FF281C211CFFF7F1FA062100201D -:1031200001F016F8281C211CFFF7E4FA38BDC04650 -:1031300014600F4038B5174D0023041C2B702878FD -:10314000132805D0152803D0FFF7EEFE2870F6E708 -:10315000FFF7DAFFFFF7D2FF80210F480901FFF7E1 -:10316000CEFAD821002000F0F3FF2202110E250430 -:10317000002000F0EDFF290E002000F0E9FFE1B291 -:103180000020802400F0E4FF03482101FFF7B2FA99 -:1031900038BDC04664F7002014600F40F8B5C7B2D0 -:1031A000161C8023CA19041C0D1C580082422ED8FC -:1031B00080214A03531B9C4229D8FFF7A5FFFFF744 -:1031C0009DFF802112480901FFF799FA0221002092 -:1031D00000F0BEFF2002010E2404002000F0B8FF22 -:1031E000210E002000F0B4FFB9B2002000F0B0FFC3 -:1031F000341CA71BAF4205DA2178002000F0A8FF9D -:103200000134F6E7802502482901FFF773FAF8BD7B -:1032100014600F40F8B5041C0D1C171CFFF784FE4A -:10322000132801D01528F9D18023580385422FD8BF -:1032300084422DD82A1982422AD880267300E1B20E -:10324000581A86B2B54202D2AEB2002E07D0201C68 -:103250003A1C311CFFF7A2FFA419BF19AD1B261C95 -:103260003A1B611992198B1BFF2B07D98021301C47 -:1032700049000136FFF792FFFF36F1E7280A060200 -:10328000EDB23019BA19002D02D0A9B2FFF786FFAE -:10329000F8BD0000F8B58023051C0E1C141C580353 -:1032A000814231D885422FD84A1982422CD8FFF763 -:1032B00025FF802115480901FFF721FA0B21002085 -:1032C00000F046FF290C002000F042FFFF27290AEA -:1032D0003940002000F03CFF291C3940002000F05C -:1032E00037FF0020391C00F033FFA519AC4206D08F -:1032F0000020FF2100F02CFF20700134F6E780242D -:1033000002482101FFF7F6F9F8BDC04614600F40EE -:10331000034B044918684018431E98417047C04643 -:103320000001401088A9CBED38B5041CFFF7F0FF71 -:10333000051E06D0104D211C18312A68201C90470C -:1033400018E0FFF717FE2378362B08D03A2B0ED162 -:10335000201CE56125622430FFF786FE05E0074A60 -:1033600007481368E36101682162258302E0802039 -:1033700041002183208B38BD000140100032044001 -:1033800000500440074B0849084A1860084B086081 -:103390001060196801401960064B1A6810401860E7 -:1033A0007047C046786100407C6100404461004045 -:1033B000AC610040BC610040044B19680142FBD184 -:1033C000034B18601A680242FCD17047B06100409C -:1033D000B46100400C4A0D4B11680D481940116052 -:1033E00002681A4002600B480B4A016819400160EC -:1033F000106818401060094A0948116819401160A6 -:103400000268134003607047C06100407FFF7FFF88 -:10341000C4610040C8610040CC610040D061004000 -:10342000D46100400F2203061040D90F40000B1852 -:10343000014A99018818704700F80020054A802346 -:103440009802002110601160034A13680342FBD008 -:103450007047C046003105405031054038B5046919 -:103460000D1C201CFFF7DEFFC368C022934385605C -:10347000C3600F20204001218140034D0B1C20061A -:1034800000D50B042B6038BDB0610040026938B52F -:10349000041C0F25154000F06DFA23690120A84097 -:1034A0001A0600D50004FFF787FF38BD036910B581 -:1034B0000F21041C1048194080220918134205D01E -:1034C000890008680D4B03400B6003E08B0018680F -:1034D00090431860201C00F04DFA21690F220A4029 -:1034E00001209040090600D50004FFF74BFF201C87 -:1034F000FFF7CCFF10BDC04670180010FFFF7FFF24 -:1035000010B504690F23234007490122200603D583 -:103510009A400868140402E09A400868141C20408D -:10352000431E984110BDC046B8610040F8B503691C -:103530000A60161C0F22051C1A40134801211C06A4 -:1035400003D5914004680F0402E0914004680F1C09 -:103550003C40621E9441002C15D10C4C8020226806 -:10356000C7013A432260281CFFF7CAFF216839428D -:10357000F3D02268064B13402360002803D1281C97 -:10358000311CFFF76BFFF8BDB061004040610040A7 -:10359000FFBFFFFF38B5051C0C1C281CFFF7B0FF50 -:1035A0000028FAD10123281C2360211CFFF756FFB5 -:1035B00038BD000002690F230448134019188B001E -:1035C0001A68034802431A607047C046701800101A -:1035D00001000100084B021C196801208A420AD12F -:1035E0000648C02302681905F82011400206881811 -:1035F000434258410130704740F30020846100404D -:10360000034B1A68904202D1024849060160704794 -:1036100040F3002054610040054B1A68904205D1E8 -:10362000480680214A04034B02431A607047C04693 -:1036300040F300205461004008B500282BD1164803 -:10364000164B0268196020218A430260FFF7C2FE10 -:1036500001235842FFF796FE01204042FFF7ACFEDF -:103660000F4B01211A6802208A431A6018601868FB -:1036700002210B4A0842FAD10A4B092019600A4973 -:103680000A4B086010680A490340136009480A4A57 -:103690000A4B0A60186008BD0430044040F3002063 -:1036A00040610040A8610040A4610040FFFF00FFAE -:1036B000586100404701000000F8002048610040C8 -:1036C00008B5064B1968884202D1082000F01EFE9A -:1036D0000348012302681A43026008BD40F300203A -:1036E00040610040F8B5041CFFF7D0FE636918681C -:1036F000C779201C00F041FA051E06D000F052FAEE -:10370000071C281C00F054FA051C2669301CFFF722 -:1037100089FE6B426B4180223904DF039305194314 -:103720003943016001270021C16041600161876068 -:1037300041618161C161016244620F240B483440E0 -:103740002218930019680A4CAF00AD043D430C40A9 -:1037500025431D60320603D5C0221868160401E017 -:103760001E68C02006431E60F8BDC04670180010D9 -:10377000F3FFF3FFF0B55D4B5D4A1968106885B043 -:1037800001400091196000D1ADE0CB0718D400983A -:10379000420600D4A7E0574E012437680125FFF701 -:1037A00019FE6042FFF7EEFD6842FFF705FE381C88 -:1037B0000021FFF725FF381C002100F003FA92E0FA -:1037C0004D4F00263B680393B3425DD14B4E00241E -:1037D0003768A74270D1DAE7301CFFF723FE446A4E -:1037E000002C58D0206A002855D02369181C01935A -:1037F000FFF718FE011C28310A78051C22702935B4 -:103800002B78011C63702A310A78051CA2702B35B5 -:103810002B78011CE3702C310A78051C22712D35A0 -:103820002B78011C63712E310A782F30A271007839 -:10383000A569E0710198FFF7F5FD031C283319789D -:10384000021C297029321378011C6B702A310A7806 -:10385000031CAA702B331978021CE9702C321378E0 -:10386000011C2B712D310A78031C6A712E331978D3 -:103870002F30A9710078E871029D226A3D60201CFA -:1038800090470136062EA1D00121039AB140029142 -:103890000A42F6D0A0E7029D3D60F2E73560201CA9 -:1038A000FFF7C0FD406A00280BD129040F420DD15B -:1038B0000134062C00D16AE70125A5402F42F4D03F -:1038C000ECE7436A002BF0D09847EEE7201C31600C -:1038D0008030FFF7A7FD406A0028E9D0426A002A3D -:1038E000E6D09047E4E705B0F0BDC0464461004033 -:1038F0004861004040F30020AC610040BC610040E2 -:1039000003690F211A060B40D00F5B001A180349F8 -:1039100090004058002800D1FEE7704744F3002093 -:10392000036870B51C690F2221061440CD0F660094 -:10393000AC190E4BA100CA58002A00D0FEE7C850AF -:10394000816844680B1C651EAA4206D280331E1C87 -:10395000803E336070660132F6E7054D0023621940 -:10396000D6018C192360606670BDC04644F3002008 -:10397000FFFFFF0108B5FFF7C3FF72B6C368002B56 -:1039800007D0C36819685A6EC16091681960936066 -:10399000F4E762B608BD000038B50C1C151CFFF733 -:1039A000AFFF8368002B42D072B68368002219688B -:1039B00081601A6062B6012119641E492A040A4313 -:1039C0005A64802251016218110B0A0380219C6401 -:1039D000DA648A01A1180A0B1103C022196591014A -:1039E0006218110B0A0380215A65CA01A418210B21 -:1039F0000A039A651D6672B65D6EEC68002C0DD0E8 -:103A0000E9680A68002A01D0111CFAE71A1C0B6049 -:103A1000006840314032FFF789FD05E0191CEB607A -:103A200000684031FFF7B6FD62B6002001E00120DA -:103A3000404238BD8080000070B5061C0D1C141C6F -:103A4000301C291C221CFFF7A7FF0130F8D00020F2 -:103A500070BD08B500210A1CFFF7EEFF08BD10B5C8 -:103A6000FFF74EFF002800D1FEE7C368002B10D0FF -:103A70005A6C68210A4200D0FEE7110609D41A6880 -:103A8000596EC26072B68C681C608B6062B6131C83 -:103A9000ECE710BD10B502786023041C1340402BE6 -:103AA0000FD006D8002B09D0202B12D10B4842682A -:103AB00009E0602B0DD1094BDA6804E0074A12686F -:103AC00001E006488268002A03D0201C90470028A5 -:103AD00002D0201CFFF76EFD10BDC0467CE900201F -:103AE00008B50021FFF7D6FF08BD10B50378041C08 -:103AF000DA090221002A00D10121FFF7CBFF201CA7 -:103B0000FFF7ADFF10BD10B50378041CDA090121E1 -:103B1000002A00D10221FFF7BDFF201CFFF79FFF05 -:103B200010BD10B5041CC38848780A78022801D05B -:103B3000072803D1CA78887812020243A0699A4202 -:103B400000D91A1CFFF778FFE069FFF782FF002019 -:103B500010BD436970B5DD68002408CD002B0AD084 -:103B60001E7A8E42F9D1944203D11968FFF7D9FF2A -:103B700002E00134F1E7012070BD436910B51B6913 -:103B8000021C002B0CD018680378002B08D0417859 -:103B9000052903D181781469A14202D0C018F3E746 -:103BA000181C10BD427903791102081C1843704794 -:103BB000C078032318407047014B18607047C04617 -:103BC00074F3002070B5041C0D1E0ED0C668002EC4 -:103BD00018D0FFF7FFFC08CE002B13D01A7A8242D0 -:103BE000F9D15968A942F6D100E00B1C2069834243 -:103BF00000D02361044B1D68002D01D0201CA84774 -:103C0000012000E0002070BD74F30020F8B5041C12 -:103C100040780E1C0B2800D9EAE000F093FB062A3E -:103C2000E93EE9AF70E9CCBA53630025A94200D060 -:103C3000DFE022781F210A40012A16D0AA4211D0C3 -:103C4000022A00D0D5E0A7886B480F233B401E18FE -:103C5000B1000F68694B6A493B40581E83410B8095 -:103C6000A0693BE0A069674901E0A06966490222BA -:103C700034E00025A94200D0BBE022781F2111408A -:103C8000022900D0B5E0A7885B480F233B401E18EF -:103C9000B7003A685D48104012E00025A94200D004 -:103CA000A7E027781F203840022800D0A1E0A6888E -:103CB0000F225149324053189F0038684F4E30430D -:103CC000386018E00025A94200D092E022781F2039 -:103CD0000240012A00D08CE0A0694D49FFF7ACFEFC -:103CE000E06909E00025A94200D082E022781F2384 -:103CF0001340012B7DD1A069FFF7ABFE79E00029CD -:103D00005BD1E0780138062872D800F01BFB04076D -:103D10002171711013006169096823E06069FFF780 -:103D200059FCA278011C201C02290AD10DE063690C -:103D3000996817E06069FFF74DFCA278022802D16C -:103D4000201C012101E0201C0221FFF702FF0CE0F2 -:103D5000A078EE2802D1201C2E4904E067690026D5 -:103D60007D6807E0201CFFF7DCFE051C41E0864271 -:103D7000F8D0013602CD0029F9D139E000291CD153 -:103D8000A1786069FFF748FCA069FFF762FE351C67 -:103D90002FE0002911D1A7786069391CFFF712FFC5 -:103DA0000125002825D0002F03D16069311CFFF7C1 -:103DB00027FCA06918E0002904D00222B2429B41EE -:103DC0005D4216E0E1880125A94212D1656926729B -:103DD0002E69002E01D072682272211C0831A06960 -:103DE0000122FFF729FEE069FFF733FE002500E01E -:103DF0000125281CF8BDC046701800100100010004 -:103E000000FB00207AF3002078F30020FEFFFEFF85 -:103E10007CF3002041ED002001607047064A074B0B -:103E200007491A60074A0860074B1060074A6C2070 -:103E3000402118601160704708080000846C084039 -:103E400010100A4014100A4018100A4000100A40CE -:103E5000074A0849C12313600B60074B074A1860E3 -:103E60000749084B10606C20402208601A607047B8 -:103E70000C6108401061084010000E4014000E4014 -:103E800018000E4000000E400C4A0D490823202067 -:103E9000136008600A6813420BD10A4B082205E040 -:103EA0000868024205D1023B002B02D0086802429A -:103EB000F6D0024B202119607047C04618100A4006 -:103EC00000100A40102700000C4A0D49082320204A -:103ED000136008600A6813420BD10A4B082205E000 -:103EE0000868024205D1023B002B02D0086802425A -:103EF000F6D0024B202119607047C04618000E40D2 -:103F000000000E40102700000E4B20211A681142BD -:103F100001D00D4B19600D4A0B4910600820086054 -:103F200008490B6818420BD1094B082205E00868C4 -:103F3000024205D1023B002B02D008680242F6D0B3 -:103F40007047C04600100A4018100A4008100A4086 -:103F5000102700000E4B20211A68114201D00D4B92 -:103F600019600D4A0B4910600820086008490B6869 -:103F700018420BD1094B082205E00868024205D11E -:103F8000023B002B02D008680242F6D07047C046C0 -:103F900000000E4018000E4008000E4010270000E0 -:103FA0000E4B20201A68104201D00D4908600C4ABF -:103FB00008230A491360086803420BD1094B082201 -:103FC00005E00868024205D1023B002B02D00868D8 -:103FD0000242F6D004490B68D8B2704700100A407C -:103FE00018100A401027000008100A40124B202128 -:103FF0001A68114201D0114B19600422002818D010 -:104000000D490A600D4A08230B49136008680342F2 -:104010000BD10B4B082205E00868024205D1023B98 -:10402000002B02D008680242F6D006490B68D8B2CD -:10403000704702480260E5E700000E4018000E409D -:104040001027000008000E40064B20201A6810427E -:1040500001D005490860034B0349102208201A606B -:104060000860704700100A4018100A40064B2020D4 -:104070001A68104201D005490860034B0349102219 -:1040800008201A600860704700000E4018000E40BB -:10409000F0B55F464D4656464446F0B483B09C4664 -:1040A0000CAB1C780DAD2E780EAFA34610ACB1460C -:1040B0003E7827780FAB1D7801971A4B002824D043 -:1040C00019481A4F03603C6801232343184C3B6096 -:1040D0001848194FA0460023036044464B4623600E -:1040E00011435B4662461C021143214339600221A1 -:1040F0003143019E29433143CDB2056003B03CBC3E -:1041000090469946A246AB46F0BD0C4F0C483B602A -:10411000036801271F4307600A480B4F80460B487E -:10412000D9E7C04600080009980005402816054058 -:1041300010500C4004500C4000500C4094000540BE -:104140001815054010300840003008400430084081 -:1041500030B5002816D10D4D0D4B02241A681442BB -:10416000FCD0296000280BD10948102104682142A5 -:10417000FCD104201A681042FCD02D68A8B230BDD2 -:104180000448F2E7044D034BE7E7C0460830084017 -:104190000C3008400C500C4008500C40FEE7C04664 -:1041A0007047C0464F4A504B9A421FD2DF1C141D25 -:1041B000381B810801318F004C4B381F4107FE1816 -:1041C000C80F02CB1160B3420FD0002803D001CB3F -:1041D00001C4B34209D0181C20C8211C20C15B684F -:1041E0006360031D0C1DB342F5D1D21940488242D1 -:1041F00016D2C41C131DE51AA90801318800101835 -:10420000C41A0021650708D511601A1C0433116017 -:10421000834205D01A1D1960131D11608342F9D124 -:104220003448354988421BD20331061D8F1BBD0817 -:1042300001246F1C2C40026801259047BD420FD01D -:10424000002C04D008CE02259847BD4208D0341C6B -:1042500001CC804702357668B047261DBD42F6D1B5 -:10426000264B27498B421BD203311E1D8F1BBD08D5 -:1042700001246F1C2C401A6801259047BD420FD0C5 -:10428000002C04D001CE02258047BD4208D0341C4A -:1042900008CC984702357668B047261DBD42F6D156 -:1042A000FDF7C8FD1748184988421BD20331061D87 -:1042B0008F1BBD0801246F1C2C400268012590470C -:1042C000BD420FD0002C04D008CE02259847BD4235 -:1042D00008D0341C01CC804702357668B047261DD3 -:1042E000BD42F6D130EF002030EF00206CEC002012 -:1042F00004FB00206CEC00206CEC00206CEC002037 -:104300006CEC00206CEC00206CEC00204309044AAB -:1043100099008B181F210840012282401A607047C3 -:1043200000E100E01F2803D8044BC018017070475B -:104330000F22034B1040C0180170F8E700E400E0C2 -:1043400014ED00E002B4714649084900095C4900D7 -:104350008E4402BC7047C046002934D0012300229D -:1043600010B488422CD301242407A14204D28142F4 -:1043700002D209011B01F8E7E400A14204D2814204 -:1043800002D249005B00F8E7884201D3401A1A4381 -:104390004C08A04202D3001B5C0822438C08A042B8 -:1043A00002D3001B9C082243CC08A04202D3001B6E -:1043B000DC082243002803D01B0901D00909E3E7E8 -:1043C000101C10BC7047002801D00020C04307B467 -:1043D000024802A14018029003BDC0461900000027 -:1043E0000029F0D003B5FFF7B9FF0EBC4243891A8C -:1043F0001847C0467047C0469C460304F0B51B0CE6 -:1044000017043F0C150C1E1C041C000C7E436B4350 -:1044100047434543FB18300C1818874202D98027C0 -:104420007B02ED18070CED1967467C434A433604BE -:10443000330CA11800044919C018F0BDF0B54F465F -:104440004646C0B40F2A72D90B1C03439C0700D008 -:1044500090E0171C103F3C09013427010C683B1CFD -:104460000460103BDE064B68CD1943608C68F60F84 -:104470008460CB68041CC3600B1C103310349D4255 -:1044800027D0002E0BD0196821605E68666099689D -:10449000A160DE681033E66010349D4219D01968BF -:1044A00021605E6866609968A160DE68191CE6603C -:1044B0001B69261C23614C6974618B69B361CC69EB -:1044C0001031F4610B1C1036341C103310349D4233 -:1044D000E5D13F180F21B846114003294DD90439C1 -:1044E0008E08B3000433EC18A446043B2C1C5F0771 -:1044F00008CC4146B14608C1FE0F64450FD0002EDE -:1045000003D080CC80C1644509D0271C08CF0E1C85 -:1045100008C664684C603C1D311D6445F5D14946B0 -:1045200001318E000327AD193A40464401E00D1CCD -:10453000061C002A1AD02F78B218F343D118012490 -:10454000377001360C40013596420FD0002C05D053 -:104550002B78013533700136964207D029783170B7 -:104560006C780235747002369642F7D10CBC9046D6 -:104570009946F0BD061C0D1CDDE73E1C0A1CD8E761 -:10458000031C0A7801311A700133002AF9D17047EF -:104590000023C25C0133002AFBD1581E7047C0467D -:1045A0002076312E302E302D726331302D342D6730 -:1045B000386135373564362D64697274792032304C -:1045C00032302D30352D303700000000BDDF0020A7 -:1045D0000000000005C30020000000001FED0020C7 -:1045E00023ED002074ED0020D7EC00200000000037 -:1045F0003031323334353637383941424344454619 -:10460000E08060000F0E0D0C0B0A09080706050478 -:10461000030201000101010101020202020203037F -:104620000303030404040404050505050506060642 -:104630000606070707070707070707070808080808 -:1046400008080808080809090909090909090909E0 -:104650000A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0BB4 -:104660000B0B0B0B0B0B0B0B0B0B0B0B0B0B0C0C98 -:104670000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C7A -:104680000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C6A -:104690000C0C0C0C0C0C0D0D0D0D0D0D0D0D0D0D50 -:1046A0000D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D3A -:1046B0000D0D0D0D0D0D0D0D0D0D0D0D0D0D0E0E28 -:1046C0000E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0A -:1046D0000E0E0E0E0E0E0E0E0E0E0E0E0F0F0F0FF6 -:1046E0000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FDA -:1046F0000F0F0F0F0F0F0F0F0F0F101010101010C4 -:1047000010101010101010101010101010101010A9 -:104710001010101010101010111111111111111191 -:104720001111111111111111111111111111111179 -:104730001111111111111111111111111111111169 -:104740001111111111111111111111111111111159 -:104750001111111111111111111111111111111149 -:104760001111111111111111111111111111111139 -:104770001111111111111111111111111111111129 -:104780001111111111111111111111111111111119 -:104790001111111111111111111111111111111109 -:1047A00011111111121212121212121212121212ED -:1047B00012121212121212121212121212121212D9 -:1047C00012121212121212121212121212121212C9 -:1047D00012121212121212121212121212121212B9 -:1047E00012121212121212121212121212121212A9 -:1047F0001212121212121212121212121212121299 -:104800001212121212121212121212121212121288 -:104810001212121212121212121212121212121278 -:104820001212121212121212121212121212131366 -:104830001313131313131313131313131313131348 -:104840001313131313131313131313131313131338 -:104850001313131313131313131313131313131328 -:104860001313131313131313131313130802DF0873 -:1048700002BE08028B08027B080269080258000287 -:1048800044000244000234000234000224000224E6 -:1048900000021400021300021300021100020000C3 -:1048A00041000041000040000040000008040C02EC -:1048B0000A060E0109050D030B070F000430002046 -:1048C00008300020001C002000300020041C0020C4 -:1048D000081C00200A060002000000400100090236 -:1048E000200001010080FA0904000002FFFFFF0020 -:1048F0000705810240000007050202400000002871 -:1049000000000000010400010000000000000001A0 -:104910000157494E555342000057494E55534200E6 -:10492000000000000000003603410049005200531F -:104930000050005900200053004E003A0020002093 -:104940000020002000200020002000200020002067 -:104950000020002000200020002000200012010084 -:104960000200000040501DA160000101020301048B -:104970000309041E037700770077002E00610069A9 -:104980000072007300700079002E0063006F006DEC -:104990000012034D00530046005400310030003037 -:1049A0000013000902200001010080FA0904000040 -:1049B00002FFFFFF00070581020002000705020257 -:1049C000000200000E034100490052005300500055 -:1049D00059008E0000000001050001008400000065 -:1049E00001000000280044006500760069006300B3 -:1049F000650049006E007400650072006600610089 -:104A000063006500470055004900440000004E0067 -:104A100000007B00340041004600340031003800C3 -:104A2000360035002D0042004300310045002D00C6 -:104A300037003400350041002D00390038003200C5 -:104A400036002D0039003700430041004100380096 -:104A50004500450030003400370046007D0000006E -:104A600053ED002001000000020000000DED0020C9 -:104A70008CE9002084EC00203CEE002000000000C7 -:104A80008EEC0020010000000100000010EE00206C -:104A900030EE00200000000078EE0020040000004E -:104AA00040F5002000000000A0EE00200100000002 -:104AB000C0F2002000000000C8EE0020040000004A -:104AC000C0F0002000000000000000000000000016 -:104AD0000000000000000000000000001CEE0020AC -:104AE000C8EE002078EE002091DE00209BDE002042 -:104AF00000000000000000000000000000000000B6 -:104B0000020000001CEE002000000000A0EE0020CB -:104B1000000000000FDE0020000000000000000088 -:104B20000000000000000000800000001CEE0020DB -:104B3000C8EE002078EE002000000000B7DE002064 -:104B400000EF00200100000040F000200000000005 -:104B50000000000000000000000000000000000055 -:104B6000810000001CEE002000EF0020000000008B -:104B7000000000000FDE00200010002001000000F7 -:104B8000302F0000000000000000000000000000C6 -:104B900000600840100000000460084010000000A1 -:104BA0008060084010000000846008401000000091 -:104BB00088600840100000008C6008401000000071 -:104BC0009060084010000000946008401000000051 -:104BD00098600840100000009C6008401000000031 -:104BE000A060084010000000A46008401000000011 -:104BF000A860084010000000AC60084010000000F1 -:104C0000B060084010000000B460084010000000D0 -:104C1000B860084000000000BC60084010000000C0 -:104C2000C060084010000000C460084000000000A0 -:104C3000C860084010000000CC600840120000006E -:104C4000D06008401000000000610840140000001F -:104C500004610840140000000861084014000000CE -:104C60000C610840140000001061084014000000AE -:104C7000146108401400000018610840140000008E -:104C80001C61084010000000206108401400000072 -:104C90002461084010000000286108401000000056 -:104CA0002C61084010000000306108401000000036 -:104CB00034610840000000008061084010000000DE -:104CC000846108401400000088610840140000005E -:104CD000006208401000000004620840100000005C -:104CE00008620840100000000C620840100000003C -:104CF000106208401000000014620840100000001C -:104D000018620840100000001C62084012000000F9 -:104D100020620840140000002462084014000000D3 -:104D20002862084014000000806208401000000063 -:104D300084620840100000008862084010000000F3 -:104D40008C620840100000009062084010000000D3 -:104D500094620840100000009862084010000000B3 -:104D60009C62084010000000006308401000000032 -:104D700004630840100000000863084010000000B1 -:104D80000C63084010000000106308401000000091 -:104D90001463084010000000186308401000000071 -:104DA0001C63084010000000206308401000000051 -:104DB0002463084010000000286308401000000031 -:104DC0002C63084010000000306308401000000011 -:104DD0008063084010000000846308401000000059 -:104DE00088630840100000008C6308401000000039 -:104DF0009063084010000000946308401000000019 -:104E000098630840100000009C63084010000000F8 -:104E10000064084010000000046408401000000016 -:104E200008640840100000000C64084010000000F6 -:104E300010640840100000001464084010000000D6 -:104E400018640840100000001C64084010000000B6 -:104E500020640840100000000065084010000000B9 -:104E600004650840100000000865084010000000BC -:104E70000C6508401000000010650840100000009C -:104E800080650840100000008465084010000000A4 -:104E900088650840100000008C6508401000000084 -:104EA0009065084010000000946508401000000064 -:104EB00098650840100000000066084010000000DF -:104EC0000466084014000000086608401400000052 -:104ED0000C66084014000000106608401000000036 -:104EE000146608401000000018660840100000001A -:104EF0001C660840100000002066084010000000FA -:104F000024660840100000002866084010000000D9 -:104F10002C660840100000003066084010000000B9 -:104F20003466084010000000386608401000000099 -:104F300080660840100000008466084010000000F1 -:104F400088660840100000008C66084010000000D1 -:104F500090660840100000009466084010000000B1 -:104F600098660840100000009C6608401000000091 -:104F7000A066084010000000A46608401000000071 -:104F8000A866084010000000AC6608401000000051 -:104F9000B066084010000000B46608401000000031 -:104FA000B866084010000000BC6608401000000011 -:104FB000C0660840100000000067084010000000B4 -:104FC0000467084010000000086708401400000053 -:104FD0000C67084010000000106708401000000037 -:104FE0001467084010000000186708401000000017 -:104FF0001C670840100000002067084010000000F7 -:1050000024670840100000002867084010000000D6 -:105010002C670840100000003067084010000000B6 -:105020003467084010000000386708401000000096 -:105030003C67084010000000806708401100000035 -:1050400084670840100000008867084010000000D6 -:105050008C6708401000000090670840E9000000DD -:105060009467084010000000986708401000000096 -:105070009C67084010000000A06708401000000076 -:10508000A467084010000000A86708401000000056 -:10509000AC6708401000000003FF00001080808013 -:1050A0008080808080000000BBC00000B7920000BC -:0850B000B1AC0000037E00001A -:0850B80054C6FF7F0100000057 -:1050C0000430002000300020001C0020041C0020C0 -:0C50D000081C0020083000200010002008 -:1050DC000100000003000000416972537079204EFA -:1050EC004F53000000000000AF00AF003200000082 -:1050FC0000000000FF030E04000000000C00000084 -:10510C00000000000000000006000000000000008D -:10511C00000000000100000040787D01000000004C -:10512C0000E1F5059080608040A80F406375F87C25 -:10513C004206000F00C0A048CC600054AE0AC0006C -:10514C00000000001800020000000000180003001E -:10515C0000000000B400020000000000000000008D -:10516C00000000000000000000000000404B4C005C -:10517C003B000000000000000000000000000000E8 -:10518C0003000000D012130000000000FF03000019 -:10519C000E0000000400000000000000808D5B0089 -:1051AC003F0000007F000000180000000400000019 -:1051BC0000000000C0C62D002000000024490000A3 -:1051CC0006F00300000000000000000000401F007B -:1051DC0019000000000000000000000000000000AA -:1051EC0000000000000000000000002C0000000087 -:1051FC000000000000000001000E00000000000094 -:10520C000000000000000000000000000000000092 -:10521C000000000000000000000000000000000082 -:10522C000000000000000000000000000000000A68 -:10523C002000000000000000000000000000000042 -:10524C000000000000000000000000000000000052 -:10525C000000000000000000000000000000000042 -:10526C000000000000000000000000000000000032 -:10527C000000000000000000000000000000000022 -:10528C000000000000000000000000000000000012 -:10529C00000000000000000C4C0000000000002C7E -:1052AC0000000001002B000000000001002A00009B -:1052BC0000000001100700000000000000000000CA -:1052CC0000000000000000000000000000000000D2 -:1052DC0000000000000000000000000000000000C2 -:1052EC00000000161000000000000000000000008C -:1052FC0000000000000000000000000000000000A2 -:10530C000000000000000000000000000000000091 -:10531C000000000000000000000000000000000081 -:10532C000000000000000000000000000000000071 -:10533C000000000000000000000000000100000060 -:10534C0001000000416972537079204D494E4900AB -:10535C0000000000960096005A00000000000000BB -:10536C00FF000C03000000000C0000000000000017 -:10537C00000000000400000000000000000000001D -:10538C000200000000366E010000000000E1F5058F -:10539C009080608040A80F406375E87C4206000F47 -:1053AC0000C0A048CC600054AE0AC0000000000051 -:1053BC0018000200000000001800020000000000AD -:1053CC0000000000000000000000000000000000D1 -:1053DC000000000001000000C0C62D0020000000ED -:1053EC0000000000000000000000000003000000AE -:1053FC0060E3160010000000FF0000001B203000CE -:10540C000400000000000000404B4C003B0000007A -:10541C00922D000006D003000000000000000000E8 -:08542C0000401F001900000000 -:04000003000013A93D -:00000001FF diff --git a/airspy_rom_to_ram/airspy_rom_to_ram.list b/airspy_rom_to_ram/airspy_rom_to_ram.list deleted file mode 100644 index d261d79..0000000 --- a/airspy_rom_to_ram/airspy_rom_to_ram.list +++ /dev/null @@ -1,9914 +0,0 @@ - -airspy_rom_to_ram.elf: file format elf32-littlearm - - -Disassembly of section .text: - -00000000 : - 0: e0 1f 09 10 a9 13 00 00 a5 13 00 00 11 07 00 00 ................ - 10: 31 07 00 00 35 07 00 00 39 07 00 00 00 00 00 00 1...5...9....... - ... - 2c: a5 13 00 00 a5 13 00 00 00 00 00 00 a5 13 00 00 ................ - 3c: a5 13 00 00 a1 13 00 00 5d 02 00 00 09 02 00 00 ........]....... - 4c: 00 00 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - 5c: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - 6c: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - 7c: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - 8c: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - 9c: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - ac: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - bc: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - cc: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - dc: a1 13 00 00 a1 13 00 00 a1 13 00 00 a1 13 00 00 ................ - ec: a1 13 00 00 00 00 00 00 a1 13 00 00 a1 13 00 00 ................ - fc: a1 13 00 00 00 00 00 00 a1 13 00 00 a1 13 00 00 ................ - 10c: a1 13 00 00 a1 13 00 00 ........ - -00000114 : -void set_packing_state(uint8_t state) -{ - if(state == 0) - { - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - 114: 4b07 ldr r3, [pc, #28] ; (134 ) - 116: 681b ldr r3, [r3, #0] - set_packing->raw = 0; -} - -void set_packing_state(uint8_t state) -{ - if(state == 0) - 118: b130 cbz r0, 128 - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - } - else - { - use_packing = 1; - 11a: 4a07 ldr r2, [pc, #28] ; (138 ) - 11c: 2101 movs r1, #1 - *usb_bulk_buffer_length = 0x1800; - 11e: f44f 50c0 mov.w r0, #6144 ; 0x1800 - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - } - else - { - use_packing = 1; - 122: 6011 str r1, [r2, #0] - *usb_bulk_buffer_length = 0x1800; - 124: 6018 str r0, [r3, #0] - 126: 4770 bx lr - -void set_packing_state(uint8_t state) -{ - if(state == 0) - { - use_packing = 0; - 128: 4903 ldr r1, [pc, #12] ; (138 ) - *usb_bulk_buffer_length = 0x4000; - 12a: f44f 4280 mov.w r2, #16384 ; 0x4000 - -void set_packing_state(uint8_t state) -{ - if(state == 0) - { - use_packing = 0; - 12e: 6008 str r0, [r1, #0] - *usb_bulk_buffer_length = 0x4000; - 130: 601a str r2, [r3, #0] - 132: 4770 bx lr - 134: 1008000c .word 0x1008000c - 138: 10080028 .word 0x10080028 - -0000013c : - *usb_bulk_buffer_length = 0x1800; - } -} - -void adchs_start(uint8_t chan_num) -{ - 13c: b538 push {r3, r4, r5, lr} - 13e: 4605 mov r5, r0 - int i; - uint32_t *dst; - - /* Disable IRQ globally */ - __asm__("cpsid i"); - 140: b672 cpsid i - - if(first_start == 0) - 142: 4c26 ldr r4, [pc, #152] ; (1dc ) - 144: 6823 ldr r3, [r4, #0] - 146: 2b00 cmp r3, #0 - 148: d03f beq.n 1ca - *usb_bulk_buffer_length = 0x1800; - } -} - -void adchs_start(uint8_t chan_num) -{ - 14a: f643 73fc movw r3, #16380 ; 0x3ffc - first_start = 1; - } - - /* Clear ADCHS Buffer */ - dst = (uint32_t *)ADCHS_DATA_BUFFER; - for(i=0; i<(ADCHS_DATA_BUFFER_SIZE_BYTE/4); i++) - 14e: f64b 74fc movw r4, #49148 ; 0xbffc - *usb_bulk_buffer_length = 0x1800; - } -} - -void adchs_start(uint8_t chan_num) -{ - 152: f2c2 0300 movt r3, #8192 ; 0x2000 - - /* Clear ADCHS Buffer */ - dst = (uint32_t *)ADCHS_DATA_BUFFER; - for(i=0; i<(ADCHS_DATA_BUFFER_SIZE_BYTE/4); i++) - { - dst[i] = 0; - 156: 2000 movs r0, #0 - first_start = 1; - } - - /* Clear ADCHS Buffer */ - dst = (uint32_t *)ADCHS_DATA_BUFFER; - for(i=0; i<(ADCHS_DATA_BUFFER_SIZE_BYTE/4); i++) - 158: f2c2 0400 movt r4, #8192 ; 0x2000 - 15c: 1d1a adds r2, r3, #4 - { - dst[i] = 0; - 15e: 6058 str r0, [r3, #4] - 160: 3308 adds r3, #8 - first_start = 1; - } - - /* Clear ADCHS Buffer */ - dst = (uint32_t *)ADCHS_DATA_BUFFER; - for(i=0; i<(ADCHS_DATA_BUFFER_SIZE_BYTE/4); i++) - 162: 42a3 cmp r3, r4 - { - dst[i] = 0; - 164: 6050 str r0, [r2, #4] - first_start = 1; - } - - /* Clear ADCHS Buffer */ - dst = (uint32_t *)ADCHS_DATA_BUFFER; - for(i=0; i<(ADCHS_DATA_BUFFER_SIZE_BYTE/4); i++) - 166: d1f9 bne.n 15c - -} - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - 168: 4c1d ldr r4, [pc, #116] ; (1e0 ) - 16a: 6821 ldr r1, [r4, #0] - 16c: bb11 cbnz r1, 1b4 - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 16e: 4b1d ldr r3, [pc, #116] ; (1e4 ) - 170: 6818 ldr r0, [r3, #0] - 172: f44f 4280 mov.w r2, #16384 ; 0x4000 - 176: 6002 str r2, [r0, #0] - } - - last_offset_m4 = 0; - *last_offset_m0 = 0; - 178: 481b ldr r0, [pc, #108] ; (1e8 ) - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - 17a: 491c ldr r1, [pc, #112] ; (1ec ) - *last_offset_m0 = 0; - 17c: 6802 ldr r2, [r0, #0] - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - 17e: 2300 movs r3, #0 - 180: 600b str r3, [r1, #0] - *last_offset_m0 = 0; - 182: 6013 str r3, [r2, #0] - { - dst[i] = 0; - } - clr_usb_buffer_offset(); - - ADCHS_init(); - 184: f000 fa84 bl 690 - ADCHS_desc_init(chan_num); - 188: 4628 mov r0, r5 - 18a: f000 fab1 bl 6f0 - ADCHS_DMA_init((uint32_t)ADCHS_DATA_BUFFER, use_packing); - 18e: 6822 ldr r2, [r4, #0] - 190: f44f 4080 mov.w r0, #16384 ; 0x4000 - 194: f2c2 0000 movt r0, #8192 ; 0x2000 - 198: b2d1 uxtb r1, r2 - 19a: f000 f9e9 bl 570 - - led_on(); - 19e: f000 fe2f bl e00 - LPC_ADCHS->TRIGGER = 1; - 1a2: 2000 movs r0, #0 - 1a4: f2c4 000f movt r0, #16399 ; 0x400f - 1a8: 2301 movs r3, #1 - 1aa: 6103 str r3, [r0, #16] - __asm("dsb"); - 1ac: f3bf 8f4f dsb sy - - /* Enable IRQ globally */ - __asm__("cpsie i"); - 1b0: b662 cpsie i - 1b2: bd38 pop {r3, r4, r5, pc} - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 1b4: 490b ldr r1, [pc, #44] ; (1e4 ) - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 1b6: 4b0e ldr r3, [pc, #56] ; (1f0 ) - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 1b8: 6808 ldr r0, [r1, #0] - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 1ba: 681b ldr r3, [r3, #0] - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 1bc: f44f 5200 mov.w r2, #8192 ; 0x2000 - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 1c0: f44f 4180 mov.w r1, #16384 ; 0x4000 - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 1c4: 6002 str r2, [r0, #0] - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 1c6: 6019 str r1, [r3, #0] - 1c8: e7d6 b.n 178 - /* Disable IRQ globally */ - __asm__("cpsid i"); - - if(first_start == 0) - { - cpu_clock_pll1_high_speed(&airspy_conf->airspy_m4_init_conf.pll1_hs); - 1ca: 480a ldr r0, [pc, #40] ; (1f4 ) - 1cc: 6800 ldr r0, [r0, #0] - 1ce: 3030 adds r0, #48 ; 0x30 - 1d0: f000 fdda bl d88 - first_start = 1; - 1d4: 2101 movs r1, #1 - 1d6: 6021 str r1, [r4, #0] - 1d8: e7b7 b.n 14a - 1da: bf00 nop - 1dc: 10080038 .word 0x10080038 - 1e0: 10080028 .word 0x10080028 - 1e4: 10080008 .word 0x10080008 - 1e8: 10080010 .word 0x10080010 - 1ec: 10080020 .word 0x10080020 - 1f0: 10080034 .word 0x10080034 - 1f4: 10080018 .word 0x10080018 - -000001f8 : - /* Enable IRQ globally */ - __asm__("cpsie i"); -} - -void adchs_stop(void) -{ - 1f8: b508 push {r3, lr} - /* Disable IRQ globally */ - __asm__("cpsid i"); - 1fa: b672 cpsid i - - ADCHS_deinit(); - 1fc: f000 fa3c bl 678 - -// cpu_clock_pll1_low_speed(&airspy_conf->airspy_m4_init_conf.pll1_ls); - - led_off(); - 200: f000 fe06 bl e10 - - /* Enable IRQ globally */ - __asm__("cpsie i"); - 204: b662 cpsie i - 206: bd08 pop {r3, pc} - -00000208 : - stat_adchs.dma_err_cnt++; // Count DMA Error - LPC_GPDMA->INTERRCLR |= status; - } -#endif - - status = LPC_GPDMA->INTTCSTAT; - 208: f44f 5300 mov.w r3, #8192 ; 0x2000 - 20c: f2c4 0300 movt r3, #16384 ; 0x4000 - 210: 685a ldr r2, [r3, #4] - if( status & INTTC0 ) - 212: 07d2 lsls r2, r2, #31 - 214: d511 bpl.n 23a - { - LPC_GPDMA->INTTCCLEAR |= INTTC0; /* Clear Chan0 */ - 216: 6898 ldr r0, [r3, #8] - 218: f040 0101 orr.w r1, r0, #1 - 21c: 6099 str r1, [r3, #8] - - if(use_packing) - 21e: 4b0c ldr r3, [pc, #48] ; (250 ) - 220: 681a ldr r2, [r3, #0] - 222: b95a cbnz r2, 23c - { - set_usb_buffer_offset_m4( inc_mask_usb_buffer_offset_m4(get_usb_buffer_offset_m4(), 8192)); - } - else - { - set_usb_buffer_offset( inc_mask_usb_buffer_offset(get_usb_buffer_offset(), USB_DATA_TRANSFER_SIZE_BYTE) ); - 224: 480b ldr r0, [pc, #44] ; (254 ) - 226: 6801 ldr r1, [r0, #0] - 228: 680b ldr r3, [r1, #0] - 22a: f503 4280 add.w r2, r3, #16384 ; 0x4000 - 22e: 0450 lsls r0, r2, #17 - 230: 0c43 lsrs r3, r0, #17 - 232: 600b str r3, [r1, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); - 234: f3bf 8f4f dsb sy - __asm("sev"); - 238: bf40 sev - 23a: 4770 bx lr - { - LPC_GPDMA->INTTCCLEAR |= INTTC0; /* Clear Chan0 */ - - if(use_packing) - { - set_usb_buffer_offset_m4( inc_mask_usb_buffer_offset_m4(get_usb_buffer_offset_m4(), 8192)); - 23c: 4906 ldr r1, [pc, #24] ; (258 ) - 23e: 680a ldr r2, [r1, #0] - 240: 6810 ldr r0, [r2, #0] - 242: f500 5300 add.w r3, r0, #8192 ; 0x2000 - 246: 0459 lsls r1, r3, #17 - 248: 0c48 lsrs r0, r1, #17 - 24a: 6010 str r0, [r2, #0] - 24c: 4770 bx lr - 24e: bf00 nop - 250: 10080028 .word 0x10080028 - 254: 10080008 .word 0x10080008 - 258: 10080034 .word 0x10080034 - -0000025c : - stat_adchs.dma_irq_cycles_idx = 0; -#endif -} - -void m0core_isr(void) -{ - 25c: b5f8 push {r3, r4, r5, r6, r7, lr} - uint8_t adchs_start_stop_cmd; - uint8_t samplerate_cmd; - uint8_t packing_cmd; - uint8_t packing_state; - - SLAVE_TXEV_QUIT(); - 25e: f44f 5250 mov.w r2, #13312 ; 0x3400 - start_adchs->raw = 0; -} - -static __inline__ uint8_t get_samplerate(uint8_t *conf_number) -{ - *conf_number = set_samplerate->conf; - 262: 4c26 ldr r4, [pc, #152] ; (2fc ) - uint8_t adchs_start_stop_cmd; - uint8_t samplerate_cmd; - uint8_t packing_cmd; - uint8_t packing_state; - - SLAVE_TXEV_QUIT(); - 264: f2c4 0204 movt r2, #16388 ; 0x4004 - start_adchs->raw = 0; -} - -static __inline__ uint8_t get_samplerate(uint8_t *conf_number) -{ - *conf_number = set_samplerate->conf; - 268: 6823 ldr r3, [r4, #0] - uint8_t adchs_start_stop_cmd; - uint8_t samplerate_cmd; - uint8_t packing_cmd; - uint8_t packing_state; - - SLAVE_TXEV_QUIT(); - 26a: 2100 movs r1, #0 - 26c: 6011 str r1, [r2, #0] - start_adchs->raw = 0; -} - -static __inline__ uint8_t get_samplerate(uint8_t *conf_number) -{ - *conf_number = set_samplerate->conf; - 26e: 785d ldrb r5, [r3, #1] - return(set_samplerate->cmd); - 270: 781a ldrb r2, [r3, #0] - uint8_t packing_state; - - SLAVE_TXEV_QUIT(); - - samplerate_cmd = get_samplerate(&adchs_conf); - if(samplerate_cmd == SET_SAMPLERATE_CMD) - 272: 2a01 cmp r2, #1 - start_adchs->raw = 0; -} - -static __inline__ uint8_t get_samplerate(uint8_t *conf_number) -{ - *conf_number = set_samplerate->conf; - 274: b2e9 uxtb r1, r5 - uint8_t packing_state; - - SLAVE_TXEV_QUIT(); - - samplerate_cmd = get_samplerate(&adchs_conf); - if(samplerate_cmd == SET_SAMPLERATE_CMD) - 276: d026 beq.n 2c6 - set_samplerate->raw = 0; -} - -static __inline__ uint8_t get_packing(uint8_t *packing_state) -{ - *packing_state = set_packing->conf; - 278: 4d21 ldr r5, [pc, #132] ; (300 ) - 27a: 682a ldr r2, [r5, #0] - 27c: 7850 ldrb r0, [r2, #1] - return(set_packing->cmd); - 27e: 7813 ldrb r3, [r2, #0] - } - ack_samplerate(); - } - - packing_cmd = get_packing(&packing_state); - if(packing_cmd == SET_PACKING_CMD) - 280: 2b01 cmp r3, #1 - 282: d034 beq.n 2ee - *last_offset_m0 = 0; -} - -static __inline__ uint32_t get_start_stop_adchs(void) -{ - return(start_adchs->cmd); - 284: 4d1f ldr r5, [pc, #124] ; (304 ) - 286: 682b ldr r3, [r5, #0] - 288: 781c ldrb r4, [r3, #0] - set_packing_state(packing_state); - ack_packing(); - } - - adchs_start_stop_cmd = get_start_stop_adchs(); - switch(adchs_start_stop_cmd) - 28a: 2c01 cmp r4, #1 - 28c: d002 beq.n 294 - 28e: 2c02 cmp r4, #2 - 290: d00d beq.n 2ae - 292: bdf8 pop {r3, r4, r5, r6, r7, pc} - { - case START_ADCHS_CMD: - if(adchs_started == 0) - 294: 4f1c ldr r7, [pc, #112] ; (308 ) - 296: 683e ldr r6, [r7, #0] - 298: b936 cbnz r6, 2a8 - { - adchs_start(DEFAULT_ADCHS_CHAN); - 29a: 4630 mov r0, r6 - 29c: f7ff ff4e bl 13c - adchs_started = 1; - adchs_stopped = 0; - 2a0: 481a ldr r0, [pc, #104] ; (30c ) - 2a2: 682b ldr r3, [r5, #0] - { - case START_ADCHS_CMD: - if(adchs_started == 0) - { - adchs_start(DEFAULT_ADCHS_CHAN); - adchs_started = 1; - 2a4: 603c str r4, [r7, #0] - adchs_stopped = 0; - 2a6: 6006 str r6, [r0, #0] -} - -/* Acknowledge Start/Stop ADCHS by clearing the data */ -static __inline__ void ack_start_stop_adchs(void) -{ - start_adchs->raw = 0; - 2a8: 2200 movs r2, #0 - 2aa: 601a str r2, [r3, #0] - 2ac: bdf8 pop {r3, r4, r5, r6, r7, pc} - } - ack_start_stop_adchs(); - break; - - case STOP_ADCHS_CMD: - if(adchs_stopped == 0) - 2ae: 4e17 ldr r6, [pc, #92] ; (30c ) - 2b0: 6834 ldr r4, [r6, #0] - 2b2: 2c00 cmp r4, #0 - 2b4: d1f8 bne.n 2a8 - { - adchs_stop(); - 2b6: f7ff ff9f bl 1f8 - adchs_stopped = 1; - adchs_started = 0; - 2ba: 4913 ldr r1, [pc, #76] ; (308 ) - 2bc: 682b ldr r3, [r5, #0] - - case STOP_ADCHS_CMD: - if(adchs_stopped == 0) - { - adchs_stop(); - adchs_stopped = 1; - 2be: 2201 movs r2, #1 - 2c0: 6032 str r2, [r6, #0] - adchs_started = 0; - 2c2: 600c str r4, [r1, #0] - 2c4: e7f0 b.n 2a8 - if(samplerate_cmd == SET_SAMPLERATE_CMD) - { - if((adchs_conf & AIRSPY_SAMPLERATE_CONF_ALT) == AIRSPY_SAMPLERATE_CONF_ALT) - { - adchs_conf = adchs_conf & (~AIRSPY_SAMPLERATE_CONF_ALT); - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_alt_conf[adchs_conf].airspy_m4_conf); - 2c6: 4a12 ldr r2, [pc, #72] ; (310 ) - SLAVE_TXEV_QUIT(); - - samplerate_cmd = get_samplerate(&adchs_conf); - if(samplerate_cmd == SET_SAMPLERATE_CMD) - { - if((adchs_conf & AIRSPY_SAMPLERATE_CONF_ALT) == AIRSPY_SAMPLERATE_CONF_ALT) - 2c8: b26d sxtb r5, r5 - { - adchs_conf = adchs_conf & (~AIRSPY_SAMPLERATE_CONF_ALT); - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_alt_conf[adchs_conf].airspy_m4_conf); - 2ca: 6813 ldr r3, [r2, #0] - SLAVE_TXEV_QUIT(); - - samplerate_cmd = get_samplerate(&adchs_conf); - if(samplerate_cmd == SET_SAMPLERATE_CMD) - { - if((adchs_conf & AIRSPY_SAMPLERATE_CONF_ALT) == AIRSPY_SAMPLERATE_CONF_ALT) - 2cc: 2d00 cmp r5, #0 - { - adchs_conf = adchs_conf & (~AIRSPY_SAMPLERATE_CONF_ALT); - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_alt_conf[adchs_conf].airspy_m4_conf); - 2ce: bfba itte lt - 2d0: f001 017f andlt.w r1, r1, #127 ; 0x7f - 2d4: f8d3 0080 ldrlt.w r0, [r3, #128] ; 0x80 - }else - { - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_conf[adchs_conf].airspy_m4_conf); - 2d8: 6f98 ldrge r0, [r3, #120] ; 0x78 - 2da: eb01 0141 add.w r1, r1, r1, lsl #1 - 2de: eb00 00c1 add.w r0, r0, r1, lsl #3 - 2e2: f000 fa2b bl 73c -} - -/* Acknowledge set_samplerate by clearing the data */ -static __inline__ void ack_samplerate(void) -{ - set_samplerate->raw = 0; - 2e6: 6820 ldr r0, [r4, #0] - 2e8: 2400 movs r4, #0 - 2ea: 6004 str r4, [r0, #0] - 2ec: e7c4 b.n 278 - } - - packing_cmd = get_packing(&packing_state); - if(packing_cmd == SET_PACKING_CMD) - { - set_packing_state(packing_state); - 2ee: f7ff ff11 bl 114 - return(set_packing->cmd); -} - -static __inline__ void ack_packing(void) -{ - set_packing->raw = 0; - 2f2: 6829 ldr r1, [r5, #0] - 2f4: 2000 movs r0, #0 - 2f6: 6008 str r0, [r1, #0] - 2f8: e7c4 b.n 284 - 2fa: bf00 nop - 2fc: 10080000 .word 0x10080000 - 300: 10080014 .word 0x10080014 - 304: 10080004 .word 0x10080004 - 308: 10080024 .word 0x10080024 - 30c: 10080030 .word 0x10080030 - 310: 10080018 .word 0x10080018 - -00000314 : - break; - } -} - -void m0_startup(void) -{ - 314: b570 push {r4, r5, r6, lr} - uint32_t *src, *dest; - - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - 316: f000 ffef bl 12f8 - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 31a: 4b14 ldr r3, [pc, #80] ; (36c ) - 31c: 4a14 ldr r2, [pc, #80] ; (370 ) - 31e: 681c ldr r4, [r3, #0] - 320: 18a4 adds r4, r4, r2 - 322: 4294 cmp r4, r2 - 324: d91c bls.n 360 - { - *dest++ = *src++; - 326: 4613 mov r3, r2 - 328: 43d0 mvns r0, r2 - 32a: f853 5b04 ldr.w r5, [r3], #4 - 32e: 4911 ldr r1, [pc, #68] ; (374 ) - 330: 1820 adds r0, r4, r0 - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 332: 429c cmp r4, r3 - { - *dest++ = *src++; - 334: 600d str r5, [r1, #0] - 336: f3c0 0080 ubfx r0, r0, #2, #1 - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 33a: d911 bls.n 360 - 33c: b130 cbz r0, 34c - { - *dest++ = *src++; - 33e: 6818 ldr r0, [r3, #0] - 340: f102 0308 add.w r3, r2, #8 - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 344: 429c cmp r4, r3 - { - *dest++ = *src++; - 346: f841 0f04 str.w r0, [r1, #4]! - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 34a: d909 bls.n 360 - { - *dest++ = *src++; - 34c: 461a mov r2, r3 - 34e: 685e ldr r6, [r3, #4] - 350: f852 5b04 ldr.w r5, [r2], #4 - 354: 608e str r6, [r1, #8] - 356: 1d13 adds r3, r2, #4 - 358: 604d str r5, [r1, #4] - 35a: 3108 adds r1, #8 - /* Halt M0 core (in case it was running) */ - ipc_halt_m0(); - - /* Copy M0 code from M4 embedded addr to final addr M0 */ - dest = &cm0_exec_baseaddr; - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - 35c: 429c cmp r4, r3 - 35e: d8f5 bhi.n 34c - { - *dest++ = *src++; - } - - ipc_start_m0( (uint32_t)(&cm0_exec_baseaddr) ); - 360: 4804 ldr r0, [pc, #16] ; (374 ) -} - 362: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - for(src = (uint32_t *)&m0_bin[0]; src < (uint32_t *)(&m0_bin[0]+m0_bin_size); ) - { - *dest++ = *src++; - } - - ipc_start_m0( (uint32_t)(&cm0_exec_baseaddr) ); - 366: f000 bfe1 b.w 132c - 36a: bf00 nop - 36c: 00004b80 .word 0x00004b80 - 370: 00001c50 .word 0x00001c50 - 374: 2000c000 .word 0x2000c000 - -00000378
: - ipc_start_m0s( (uint32_t)(&cm0s_exec_baseaddr) ); -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - 378: f64e 52fc movw r2, #60924 ; 0xedfc - 37c: f2ce 0200 movt r2, #57344 ; 0xe000 - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; - 380: f44f 5380 mov.w r3, #4096 ; 0x1000 - ipc_start_m0s( (uint32_t)(&cm0s_exec_baseaddr) ); -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - 384: 6811 ldr r1, [r2, #0] - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; -} - -int main(void) -{ - 386: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; - 38a: f2ce 0300 movt r3, #57344 ; 0xe000 - ipc_start_m0s( (uint32_t)(&cm0s_exec_baseaddr) ); -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - 38e: f041 7080 orr.w r0, r1, #16777216 ; 0x1000000 - 392: 6010 str r0, [r2, #0] - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; - 394: 681c ldr r4, [r3, #0] - -} - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - 396: f8df b180 ldr.w fp, [pc, #384] ; 518 -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; - 39a: f044 0501 orr.w r5, r4, #1 -} - -int main(void) -{ - 39e: b085 sub sp, #20 -} - -void scs_dwt_cycle_counter_enabled(void) -{ - SCS_DEMCR |= SCS_DEMCR_TRCENA; - SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; - 3a0: 601d str r5, [r3, #0] -} - -int main(void) -{ - scs_dwt_cycle_counter_enabled(); - pin_setup(); - 3a2: f000 fd57 bl e54 - sys_clock_init(); - 3a6: f000 fa43 bl 830 - - nvic_set_priority(NVIC_DMA_IRQ, 255); - 3aa: 2002 movs r0, #2 - 3ac: 21ff movs r1, #255 ; 0xff - 3ae: f001 f953 bl 1658 - nvic_set_priority(NVIC_M0CORE_IRQ, 1); - 3b2: 2001 movs r0, #1 - 3b4: 4601 mov r1, r0 - 3b6: f001 f94f bl 1658 - -} - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - 3ba: f8db 6000 ldr.w r6, [fp] - 3be: 2e00 cmp r6, #0 - 3c0: f000 808d beq.w 4de - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 3c4: 4c4a ldr r4, [pc, #296] ; (4f0 ) - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 3c6: 484b ldr r0, [pc, #300] ; (4f4 ) - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 3c8: 9403 str r4, [sp, #12] - 3ca: 9e03 ldr r6, [sp, #12] - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 3cc: 6805 ldr r5, [r0, #0] - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 3ce: 6837 ldr r7, [r6, #0] - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 3d0: 9002 str r0, [sp, #8] - 3d2: f44f 5200 mov.w r2, #8192 ; 0x2000 - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 3d6: f44f 4380 mov.w r3, #16384 ; 0x4000 - -static __inline__ void clr_usb_buffer_offset(void) -{ - if(use_packing) - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - 3da: 602a str r2, [r5, #0] - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 3dc: 603b str r3, [r7, #0] - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - *last_offset_m0 = 0; - 3de: 4946 ldr r1, [pc, #280] ; (4f8 ) - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - 3e0: f8df c138 ldr.w ip, [pc, #312] ; 51c - *last_offset_m0 = 0; - 3e4: 680d ldr r5, [r1, #0] -} - -/* Acknowledge Start/Stop ADCHS by clearing the data */ -static __inline__ void ack_start_stop_adchs(void) -{ - start_adchs->raw = 0; - 3e6: 4f45 ldr r7, [pc, #276] ; (4fc ) - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - 3e8: 2400 movs r4, #0 - 3ea: f8cc 4000 str.w r4, [ip] - nvic_set_priority(NVIC_DMA_IRQ, 255); - nvic_set_priority(NVIC_M0CORE_IRQ, 1); - - clr_usb_buffer_offset(); - - nvic_enable_irq(NVIC_DMA_IRQ); - 3ee: 2002 movs r0, #2 - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - - last_offset_m4 = 0; - *last_offset_m0 = 0; - 3f0: 602c str r4, [r5, #0] - nvic_set_priority(NVIC_DMA_IRQ, 255); - nvic_set_priority(NVIC_M0CORE_IRQ, 1); - - clr_usb_buffer_offset(); - - nvic_enable_irq(NVIC_DMA_IRQ); - 3f2: f8cd c004 str.w ip, [sp, #4] - 3f6: f001 f921 bl 163c - nvic_enable_irq(NVIC_M0CORE_IRQ); - 3fa: 2001 movs r0, #1 - 3fc: f001 f91e bl 163c - - adchs_stop(); - 400: f7ff fefa bl 1f8 - adchs_stopped = 1; - adchs_started = 0; - - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - 404: 483e ldr r0, [pc, #248] ; (500 ) - - nvic_enable_irq(NVIC_DMA_IRQ); - nvic_enable_irq(NVIC_M0CORE_IRQ); - - adchs_stop(); - adchs_stopped = 1; - 406: 493f ldr r1, [pc, #252] ; (504 ) - adchs_started = 0; - - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - 408: 6806 ldr r6, [r0, #0] - nvic_enable_irq(NVIC_DMA_IRQ); - nvic_enable_irq(NVIC_M0CORE_IRQ); - - adchs_stop(); - adchs_stopped = 1; - adchs_started = 0; - 40a: 4d3f ldr r5, [pc, #252] ; (508 ) -} - -/* Acknowledge Start/Stop ADCHS by clearing the data */ -static __inline__ void ack_start_stop_adchs(void) -{ - start_adchs->raw = 0; - 40c: 683a ldr r2, [r7, #0] - adchs_stop(); - adchs_stopped = 1; - adchs_started = 0; - - use_packing = 0; - *usb_bulk_buffer_length = 0x4000; - 40e: f44f 4080 mov.w r0, #16384 ; 0x4000 - - nvic_enable_irq(NVIC_DMA_IRQ); - nvic_enable_irq(NVIC_M0CORE_IRQ); - - adchs_stop(); - adchs_stopped = 1; - 412: 2301 movs r3, #1 - 414: 600b str r3, [r1, #0] - adchs_started = 0; - 416: 602c str r4, [r5, #0] - - use_packing = 0; - 418: f8cb 4000 str.w r4, [fp] - *usb_bulk_buffer_length = 0x4000; - 41c: 6030 str r0, [r6, #0] -} - -/* Acknowledge set_samplerate by clearing the data */ -static __inline__ void ack_samplerate(void) -{ - set_samplerate->raw = 0; - 41e: 4e3b ldr r6, [pc, #236] ; (50c ) -} - -/* Acknowledge Start/Stop ADCHS by clearing the data */ -static __inline__ void ack_start_stop_adchs(void) -{ - start_adchs->raw = 0; - 420: 6014 str r4, [r2, #0] -} - -/* Acknowledge set_samplerate by clearing the data */ -static __inline__ void ack_samplerate(void) -{ - set_samplerate->raw = 0; - 422: 6837 ldr r7, [r6, #0] - return(set_packing->cmd); -} - -static __inline__ void ack_packing(void) -{ - set_packing->raw = 0; - 424: 4a3a ldr r2, [pc, #232] ; (510 ) -} - -/* Acknowledge set_samplerate by clearing the data */ -static __inline__ void ack_samplerate(void) -{ - set_samplerate->raw = 0; - 426: 603c str r4, [r7, #0] - return(set_packing->cmd); -} - -static __inline__ void ack_packing(void) -{ - set_packing->raw = 0; - 428: 6813 ldr r3, [r2, #0] - 42a: 601c str r4, [r3, #0] - m0s_startup(); -#else - // Halt M0s - ipc_halt_m0s(); - // Disable M0 Sub - CCU1_CLK_PERIPH_CORE_CFG &= ~(1); - 42c: f241 7410 movw r4, #5904 ; 0x1710 - 430: f2c4 0405 movt r4, #16389 ; 0x4005 - ack_start_stop_adchs(); - ack_samplerate(); - ack_packing(); - - /* Start M0 */ - m0_startup(); - 434: f7ff ff6e bl 314 -#ifdef ENABLE_M0S - /* Start M0s */ - m0s_startup(); -#else - // Halt M0s - ipc_halt_m0s(); - 438: f000 ff98 bl 136c - // Disable M0 Sub - CCU1_CLK_PERIPH_CORE_CFG &= ~(1); - 43c: 6825 ldr r5, [r4, #0] -#endif - - usb_bulk_buffer_offset_m4 = &usb_bulk_buffer_offset_uint32_m4; - 43e: 4935 ldr r1, [pc, #212] ; (514 ) - 440: 9e03 ldr r6, [sp, #12] - - if(use_packing) - { - /* Thanks to Pierre HB9FUF for the initial packing proof-of-concept */ - uint32_t offset = get_usb_buffer_offset_m4(); - if(offset != last_offset_m4) - 442: f8dd c004 ldr.w ip, [sp, #4] - m0s_startup(); -#else - // Halt M0s - ipc_halt_m0s(); - // Disable M0 Sub - CCU1_CLK_PERIPH_CORE_CFG &= ~(1); - 446: f025 0001 bic.w r0, r5, #1 - 44a: 6020 str r0, [r4, #0] -#endif - - usb_bulk_buffer_offset_m4 = &usb_bulk_buffer_offset_uint32_m4; - 44c: 460c mov r4, r1 - 44e: 6031 str r1, [r6, #0] -If the event register is 1, WFE clears it to 0 and completes immediately. -Instruction for Cortex M0, M3/M4 -*/ -__attribute__ ((always_inline)) static inline void signal_wfe(void) -{ - __asm("wfe"); - 450: bf20 wfe - - while(true) - { - signal_wfe(); - - if(use_packing) - 452: f8db 7000 ldr.w r7, [fp] - 456: 2f00 cmp r7, #0 - 458: d0fa beq.n 450 - { - /* Thanks to Pierre HB9FUF for the initial packing proof-of-concept */ - uint32_t offset = get_usb_buffer_offset_m4(); - 45a: f8d4 e000 ldr.w lr, [r4] - if(offset != last_offset_m4) - 45e: f8dc 3000 ldr.w r3, [ip] - 462: 459e cmp lr, r3 - 464: d0f4 beq.n 450 - { - pack((uint32_t*)&usb_bulk_buffer[offset], (uint32_t*)&usb_bulk_buffer[offset], 0x1000); - 466: f10e 5200 add.w r2, lr, #536870912 ; 0x20000000 - 46a: f502 4080 add.w r0, r2, #16384 ; 0x4000 -}*/ - -__attribute__ ((always_inline)) static void pack(uint32_t* input, uint32_t* output, uint32_t length) -{ - register uint32_t *a0 asm("r0") = input; - register uint32_t *a1 asm("r1") = output; - 46e: 4601 mov r1, r0 - register uint32_t a2 asm("r2") = length; - 470: f44f 5280 mov.w r2, #4096 ; 0x1000 - - asm volatile("1:\n\t" - 474: e8b0 00f0 ldmia.w r0!, {r4, r5, r6, r7} - 478: ea4f 4814 mov.w r8, r4, lsr #16 - 47c: f3c5 130b ubfx r3, r5, #4, #12 - 480: ea43 2808 orr.w r8, r3, r8, lsl #8 - 484: ea48 5804 orr.w r8, r8, r4, lsl #20 - 488: 0c2b lsrs r3, r5, #16 - 48a: 072d lsls r5, r5, #28 - 48c: ea45 4503 orr.w r5, r5, r3, lsl #16 - 490: ea45 6516 orr.w r5, r5, r6, lsr #24 - 494: fa1f f986 uxth.w r9, r6 - 498: ea45 1909 orr.w r9, r5, r9, lsl #4 - 49c: 0c36 lsrs r6, r6, #16 - 49e: fa1f fa87 uxth.w sl, r7 - 4a2: ea4f 3a0a mov.w sl, sl, lsl #12 - 4a6: ea4a 6a06 orr.w sl, sl, r6, lsl #24 - 4aa: ea4a 4a17 orr.w sl, sl, r7, lsr #16 - 4ae: e8a1 0700 stmia.w r1!, {r8, r9, sl} - 4b2: 3a08 subs r2, #8 - 4b4: d1de bne.n 474 - /* Thanks to Pierre HB9FUF for the initial packing proof-of-concept */ - uint32_t offset = get_usb_buffer_offset_m4(); - if(offset != last_offset_m4) - { - pack((uint32_t*)&usb_bulk_buffer[offset], (uint32_t*)&usb_bulk_buffer[offset], 0x1000); - set_usb_buffer_offset( inc_mask_usb_buffer_offset(get_usb_buffer_offset(), 0x2000)); - 4b6: 9c02 ldr r4, [sp, #8] - 4b8: 6821 ldr r1, [r4, #0] - 4ba: 680d ldr r5, [r1, #0] - 4bc: f505 5000 add.w r0, r5, #8192 ; 0x2000 - 4c0: 0446 lsls r6, r0, #17 - 4c2: 0c77 lsrs r7, r6, #17 - 4c4: 600f str r7, [r1, #0] -It also sets the local event register, see Power management (sleep mode, deep sleep mode of System Control Register for more details). -Instruction for Cortex M0, M3/M4 */ -__attribute__ ((always_inline)) static inline void signal_sev(void) -{ - /* make sure all data transactions complete before next instruction is executed */ - __asm("dsb"); - 4c6: f3bf 8f4f dsb sy - __asm("sev"); - 4ca: bf40 sev - signal_sev(); - last_offset_m4 = offset; - 4cc: f240 0320 movw r3, #32 - 4d0: f2c1 0308 movt r3, #4104 ; 0x1008 - 4d4: 9a03 ldr r2, [sp, #12] - 4d6: f8c3 e000 str.w lr, [r3] - 4da: 6814 ldr r4, [r2, #0] - 4dc: e7b8 b.n 450 - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE / 2; - usb_bulk_buffer_offset_m4[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - } - else - { - usb_bulk_buffer_offset[0] = ADCHS_DATA_TRANSFER_SIZE_BYTE; - 4de: 4f05 ldr r7, [pc, #20] ; (4f4 ) - 4e0: 4a03 ldr r2, [pc, #12] ; (4f0 ) - 4e2: 683b ldr r3, [r7, #0] - 4e4: 9702 str r7, [sp, #8] - 4e6: f44f 4180 mov.w r1, #16384 ; 0x4000 - 4ea: 9203 str r2, [sp, #12] - 4ec: 6019 str r1, [r3, #0] - 4ee: e776 b.n 3de - 4f0: 10080034 .word 0x10080034 - 4f4: 10080008 .word 0x10080008 - 4f8: 10080010 .word 0x10080010 - 4fc: 10080004 .word 0x10080004 - 500: 1008000c .word 0x1008000c - 504: 10080030 .word 0x10080030 - 508: 10080024 .word 0x10080024 - 50c: 10080000 .word 0x10080000 - 510: 10080014 .word 0x10080014 - 514: 1008002c .word 0x1008002c - 518: 10080028 .word 0x10080028 - 51c: 10080020 .word 0x10080020 - -00000520 : -t_gpdma_lli adchs_dma_lli[ADCHS_DMA_NUM_LLI] __attribute__ ((aligned(16))); - -void ADCHS_DMA_init_stop(void) -{ - /* clear all interrupts on channel 0 */ - LPC_GPDMA->INTTCCLEAR = 0x01; - 520: f44f 5200 mov.w r2, #8192 ; 0x2000 - 524: f2c4 0200 movt r2, #16384 ; 0x4000 - LPC_GPDMA->INTERRCLR = 0x01; - - /* Setup the DMAMUX */ - CREG_DMAMUX &= ~(0x3<<(ADCHS_DMA_WRITE*2)); - 528: f243 131c movw r3, #12572 ; 0x311c - 52c: f2c4 0304 movt r3, #16388 ; 0x4004 -t_gpdma_lli adchs_dma_lli[ADCHS_DMA_NUM_LLI] __attribute__ ((aligned(16))); - -void ADCHS_DMA_init_stop(void) -{ - /* clear all interrupts on channel 0 */ - LPC_GPDMA->INTTCCLEAR = 0x01; - 530: 2001 movs r0, #1 - 532: 6090 str r0, [r2, #8] - LPC_GPDMA->INTERRCLR = 0x01; - 534: 6110 str r0, [r2, #16] - - /* Setup the DMAMUX */ - CREG_DMAMUX &= ~(0x3<<(ADCHS_DMA_WRITE*2)); - 536: 6819 ldr r1, [r3, #0] - 538: f421 4140 bic.w r1, r1, #49152 ; 0xc000 - 53c: 6019 str r1, [r3, #0] - CREG_DMAMUX |= 0x3<<(ADCHS_DMA_WRITE*2); - 53e: 6819 ldr r1, [r3, #0] - 540: f441 4140 orr.w r1, r1, #49152 ; 0xc000 - 544: 6019 str r1, [r3, #0] - CREG_DMAMUX &= ~(0x3<<(ADCHS_DMA_READ*2)); - 546: 6819 ldr r1, [r3, #0] - 548: f421 3140 bic.w r1, r1, #196608 ; 0x30000 - 54c: 6019 str r1, [r3, #0] - CREG_DMAMUX |= 0x3<<(ADCHS_DMA_READ*2); - 54e: 6819 ldr r1, [r3, #0] - 550: f441 3140 orr.w r1, r1, #196608 ; 0x30000 - 554: 6019 str r1, [r3, #0] - - LPC_GPDMA->CONFIG = 0x01; /* Enable DMA channels, little endian */ - while ( !(LPC_GPDMA->CONFIG & 0x01) ); - 556: 4611 mov r1, r2 - CREG_DMAMUX &= ~(0x3<<(ADCHS_DMA_WRITE*2)); - CREG_DMAMUX |= 0x3<<(ADCHS_DMA_WRITE*2); - CREG_DMAMUX &= ~(0x3<<(ADCHS_DMA_READ*2)); - CREG_DMAMUX |= 0x3<<(ADCHS_DMA_READ*2); - - LPC_GPDMA->CONFIG = 0x01; /* Enable DMA channels, little endian */ - 558: 6310 str r0, [r2, #48] ; 0x30 - while ( !(LPC_GPDMA->CONFIG & 0x01) ); - 55a: 6b0a ldr r2, [r1, #48] ; 0x30 - 55c: f44f 5300 mov.w r3, #8192 ; 0x2000 - 560: 07d2 lsls r2, r2, #31 - 562: f2c4 0300 movt r3, #16384 ; 0x4000 - 566: d5f8 bpl.n 55a - - /* Disable Channel before to change settings */ - LPC_GPDMA->CONFIG = 0x00; /* Disable DMA channels, little endian */ - 568: 2000 movs r0, #0 - 56a: 6318 str r0, [r3, #48] ; 0x30 - 56c: 4770 bx lr - 56e: bf00 nop - -00000570 : -} - -void ADCHS_DMA_init(uint32_t dest_addr, uint8_t packed) -{ - 570: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 574: 4604 mov r4, r0 - 576: 460e mov r6, r1 - uint32_t nb_dma_transfer; - int i; - - ADCHS_DMA_init_stop(); - 578: f7ff ffd2 bl 520 - nb_dma_transfer = ADCHS_DATA_BUFFER_SIZE_BYTE / (ADC_FIFO_LEVEL * ADCHS_DMA_NUM_LLI); - nb_dma_transfer = (nb_dma_transfer * ADC_FIFO_LEVEL) / 4; - - for(i=0; i) - 57e: f44f 7200 mov.w r2, #512 ; 0x200 - 582: f2c4 020f movt r2, #16399 ; 0x400f - adchs_dma_lli[i].dst_addr = ((uint32_t)dest_addr) + (nb_dma_transfer*4*i); - /* Modulo with round rubin last LLI point to First in infinite loop */ - adchs_dma_lli[i].next_lli = (uint32_t)(&adchs_dma_lli[(i+1)%ADCHS_DMA_NUM_LLI]); - - adchs_dma_lli[i].control = ( (nb_dma_transfer) << 0) | - 586: f44f 5020 mov.w r0, #10240 ; 0x2800 - for(i=0; i - { - for(i=0; iC0SRCADDR = adchs_dma_lli[0].src_addr; - 5d8: f44f 5000 mov.w r0, #8192 ; 0x2000 - 5dc: 6819 ldr r1, [r3, #0] - 5de: f2c4 0000 movt r0, #16384 ; 0x4000 - 5e2: f8c0 1100 str.w r1, [r0, #256] ; 0x100 - LPC_GPDMA->C0DESTADDR = adchs_dma_lli[0].dst_addr; - 5e6: 685a ldr r2, [r3, #4] - 5e8: f8c0 2104 str.w r2, [r0, #260] ; 0x104 - LPC_GPDMA->C0CONTROL = adchs_dma_lli[0].control; - 5ec: 68db ldr r3, [r3, #12] - LPC_GPDMA->C0LLI = (uint32_t)(&adchs_dma_lli[1]); // must be pointing to the second LLI as the first is used when initializing - LPC_GPDMA->C0CONFIG = (0x1) | // Enable bit - 5ee: f24d 0111 movw r1, #53265 ; 0xd011 - (0x0 << 6) | - (0x2 << 11) | - (0x1 << 14) | - (0x1 << 15); - - LPC_GPDMA->CONFIG = 0x01; /* Enable DMA channels, little endian */ - 5f2: 2201 movs r2, #1 - adchs_dma_lli[i-1].control |= (0x1UL << 31); - } - - LPC_GPDMA->C0SRCADDR = adchs_dma_lli[0].src_addr; - LPC_GPDMA->C0DESTADDR = adchs_dma_lli[0].dst_addr; - LPC_GPDMA->C0CONTROL = adchs_dma_lli[0].control; - 5f4: f8c0 310c str.w r3, [r0, #268] ; 0x10c - LPC_GPDMA->C0LLI = (uint32_t)(&adchs_dma_lli[1]); // must be pointing to the second LLI as the first is used when initializing - 5f8: f8c0 5108 str.w r5, [r0, #264] ; 0x108 - LPC_GPDMA->C0CONFIG = (0x1) | // Enable bit - 5fc: f8c0 1110 str.w r1, [r0, #272] ; 0x110 - (0x0 << 6) | - (0x2 << 11) | - (0x1 << 14) | - (0x1 << 15); - - LPC_GPDMA->CONFIG = 0x01; /* Enable DMA channels, little endian */ - 600: 6302 str r2, [r0, #48] ; 0x30 - 602: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - adchs_dma_lli[i].control |= (0x1UL << 31); - } - } - else - { - adchs_dma_lli[(ADCHS_DMA_NUM_LLI/2)-1].control |= (0x1UL << 31); - 606: 61da str r2, [r3, #28] - adchs_dma_lli[i-1].control |= (0x1UL << 31); - 608: 63da str r2, [r3, #60] ; 0x3c - 60a: e7e5 b.n 5d8 - 60c: 10080040 .word 0x10080040 - -00000610 : -} - -void ADCHS_init_stop(void) -{ - /* Reset ADCHS using RGU */ - RESET_CTRL1 = RESET_CTRL1_ADCHS; - 610: f243 1304 movw r3, #12548 ; 0x3104 - 614: f2c4 0305 movt r3, #16389 ; 0x4005 - /* Wait end of Reset */ - while( (RESET_ACTIVE_STATUS1 & RESET_CTRL1_ADCHS) != RESET_CTRL1_ADCHS ); - 618: f243 1254 movw r2, #12628 ; 0x3154 -} - -void ADCHS_init_stop(void) -{ - /* Reset ADCHS using RGU */ - RESET_CTRL1 = RESET_CTRL1_ADCHS; - 61c: f04f 5180 mov.w r1, #268435456 ; 0x10000000 - 620: 6019 str r1, [r3, #0] - /* Wait end of Reset */ - while( (RESET_ACTIVE_STATUS1 & RESET_CTRL1_ADCHS) != RESET_CTRL1_ADCHS ); - 622: f2c4 0205 movt r2, #16389 ; 0x4005 - 626: 6810 ldr r0, [r2, #0] - 628: 00c1 lsls r1, r0, #3 - 62a: d5fc bpl.n 626 - - LPC_ADCHS->CLR_EN0 = STATUS0_CLEAR_MASK; - 62c: 2300 movs r3, #0 - 62e: f2c4 030f movt r3, #16399 ; 0x400f - 632: 227f movs r2, #127 ; 0x7f - 634: f8c3 2f00 str.w r2, [r3, #3840] ; 0xf00 - LPC_ADCHS->CLR_STAT0 = STATUS0_CLEAR_MASK; - - while(LPC_ADCHS->STATUS0 & STATUS0_CLEAR); - 638: 4619 mov r1, r3 - RESET_CTRL1 = RESET_CTRL1_ADCHS; - /* Wait end of Reset */ - while( (RESET_ACTIVE_STATUS1 & RESET_CTRL1_ADCHS) != RESET_CTRL1_ADCHS ); - - LPC_ADCHS->CLR_EN0 = STATUS0_CLEAR_MASK; - LPC_ADCHS->CLR_STAT0 = STATUS0_CLEAR_MASK; - 63a: f8c3 2f10 str.w r2, [r3, #3856] ; 0xf10 - - while(LPC_ADCHS->STATUS0 & STATUS0_CLEAR); - 63e: f8d1 0f0c ldr.w r0, [r1, #3852] ; 0xf0c - 642: 2300 movs r3, #0 - 644: f010 0f7d tst.w r0, #125 ; 0x7d - 648: f2c4 030f movt r3, #16399 ; 0x400f - 64c: d1f7 bne.n 63e - - LPC_ADCHS->CLR_EN1 = STATUS1_CLEAR_MASK; - 64e: f06f 4260 mvn.w r2, #3758096384 ; 0xe0000000 - 652: f8c3 2f20 str.w r2, [r3, #3872] ; 0xf20 - LPC_ADCHS->CLR_STAT1 = STATUS1_CLEAR_MASK; - while(LPC_ADCHS->STATUS1); - 656: 4619 mov r1, r3 - LPC_ADCHS->CLR_STAT0 = STATUS0_CLEAR_MASK; - - while(LPC_ADCHS->STATUS0 & STATUS0_CLEAR); - - LPC_ADCHS->CLR_EN1 = STATUS1_CLEAR_MASK; - LPC_ADCHS->CLR_STAT1 = STATUS1_CLEAR_MASK; - 658: f8c3 2f30 str.w r2, [r3, #3888] ; 0xf30 - while(LPC_ADCHS->STATUS1); - 65c: f8d1 0f2c ldr.w r0, [r1, #3884] ; 0xf2c - 660: 2300 movs r3, #0 - 662: f2c4 030f movt r3, #16399 ; 0x400f - 666: 2800 cmp r0, #0 - 668: d1f8 bne.n 65c - - LPC_ADCHS->POWER_DOWN = (0<<0); - LPC_ADCHS->FLUSH = 1; - 66a: 2201 movs r2, #1 - LPC_ADCHS->FIFO_CFG = ADC_FIFO_LEVEL<<1 | 0x1; - 66c: 2111 movs r1, #17 - - LPC_ADCHS->CLR_EN1 = STATUS1_CLEAR_MASK; - LPC_ADCHS->CLR_STAT1 = STATUS1_CLEAR_MASK; - while(LPC_ADCHS->STATUS1); - - LPC_ADCHS->POWER_DOWN = (0<<0); - 66e: 6198 str r0, [r3, #24] - LPC_ADCHS->FLUSH = 1; - 670: 601a str r2, [r3, #0] - LPC_ADCHS->FIFO_CFG = ADC_FIFO_LEVEL<<1 | 0x1; - 672: 60d9 str r1, [r3, #12] - 674: 4770 bx lr - 676: bf00 nop - -00000678 : -} - -void ADCHS_deinit(void) -{ - 678: b508 push {r3, lr} - ADCHS_DMA_init_stop(); - 67a: f7ff ff51 bl 520 - ADCHS_init_stop(); - 67e: f7ff ffc7 bl 610 - LPC_ADCHS->POWER_CONTROL = 0x0; - 682: 2300 movs r3, #0 - 684: f2c4 030f movt r3, #16399 ; 0x400f - 688: 2200 movs r2, #0 - 68a: f8c3 2108 str.w r2, [r3, #264] ; 0x108 - 68e: bd08 pop {r3, pc} - -00000690 : -} - -/* Initialized ADCHS for freq between 0 to less than 30MSPS */ -void ADCHS_init(void) -{ - 690: b508 push {r3, lr} - uint32_t i; - - ADCHS_init_stop(); - 692: f7ff ffbd bl 610 - - LPC_ADCHS->CONFIG = - 696: 2300 movs r3, #0 - 698: f2c4 030f movt r3, #16399 ; 0x400f - ( 0x0 << 4 ) | - ( 0x0 << 5 ) | - ( 0x90 << 6 ); - - /* Configure and Enable ADCHS for fADC less than 30MS/s */ - LPC_ADCHS->POWER_CONTROL = - 69c: f44f 6282 mov.w r2, #1040 ; 0x410 - 6a0: f2c0 0206 movt r2, #6 -{ - uint32_t i; - - ADCHS_init_stop(); - - LPC_ADCHS->CONFIG = - 6a4: f242 4101 movw r1, #9217 ; 0x2401 - 6a8: 61d9 str r1, [r3, #28] - ( 0x0 << 4 ) | - ( 0x0 << 5 ) | - ( 0x90 << 6 ); - - /* Configure and Enable ADCHS for fADC less than 30MS/s */ - LPC_ADCHS->POWER_CONTROL = - 6aa: f8c3 2108 str.w r2, [r3, #264] ; 0x108 - (0x1 << 4) | - (0x1 << 10) | - (0 << 16) | - (1 << 17) | - (1 << 18); - LPC_ADCHS->ADC_SPEED = 0x0; - 6ae: 2200 movs r2, #0 - 6b0: f8c3 2104 str.w r2, [r3, #260] ; 0x104 - - LPC_ADCHS->FLUSH = 1; - 6b4: 2201 movs r2, #1 - 6b6: 2005 movs r0, #5 - - for(i = 0; i < 5; i++ ) - { - while( LPC_ADCHS->FIFO_STS ); /* Wait until FIFO empty. */ - 6b8: 4619 mov r1, r3 - (0 << 16) | - (1 << 17) | - (1 << 18); - LPC_ADCHS->ADC_SPEED = 0x0; - - LPC_ADCHS->FLUSH = 1; - 6ba: 601a str r2, [r3, #0] - - for(i = 0; i < 5; i++ ) - { - while( LPC_ADCHS->FIFO_STS ); /* Wait until FIFO empty. */ - 6bc: 688a ldr r2, [r1, #8] - 6be: 2300 movs r3, #0 - 6c0: f2c4 030f movt r3, #16399 ; 0x400f - 6c4: 2a00 cmp r2, #0 - 6c6: d1f9 bne.n 6bc - (1 << 18); - LPC_ADCHS->ADC_SPEED = 0x0; - - LPC_ADCHS->FLUSH = 1; - - for(i = 0; i < 5; i++ ) - 6c8: 3801 subs r0, #1 - 6ca: d1f7 bne.n 6bc - { - while( LPC_ADCHS->FIFO_STS ); /* Wait until FIFO empty. */ - } - - /* Configure Threshold A & B to default value (even if not used) */ - LPC_ADCHS->THR_A = 0x00FFF000; - 6cc: f44f 4270 mov.w r2, #61440 ; 0xf000 - 6d0: f2c0 02ff movt r2, #255 ; 0xff - LPC_ADCHS->THR_B = 0x00FFF000; - - /* Configure Interrupt 0 & 1 Enable register to default value (even if not used) */ - LPC_ADCHS->CLR_EN0 = STATUS0_CLEAR_MASK; - 6d4: 207f movs r0, #127 ; 0x7f - LPC_ADCHS->CLR_STAT0 = STATUS0_CLEAR_MASK; - LPC_ADCHS->CLR_EN1 = STATUS1_CLEAR_MASK; - 6d6: f06f 4160 mvn.w r1, #3758096384 ; 0xe0000000 - { - while( LPC_ADCHS->FIFO_STS ); /* Wait until FIFO empty. */ - } - - /* Configure Threshold A & B to default value (even if not used) */ - LPC_ADCHS->THR_A = 0x00FFF000; - 6da: 621a str r2, [r3, #32] - LPC_ADCHS->THR_B = 0x00FFF000; - 6dc: 625a str r2, [r3, #36] ; 0x24 - - /* Configure Interrupt 0 & 1 Enable register to default value (even if not used) */ - LPC_ADCHS->CLR_EN0 = STATUS0_CLEAR_MASK; - 6de: f8c3 0f00 str.w r0, [r3, #3840] ; 0xf00 - LPC_ADCHS->CLR_STAT0 = STATUS0_CLEAR_MASK; - 6e2: f8c3 0f10 str.w r0, [r3, #3856] ; 0xf10 - LPC_ADCHS->CLR_EN1 = STATUS1_CLEAR_MASK; - 6e6: f8c3 1f20 str.w r1, [r3, #3872] ; 0xf20 - LPC_ADCHS->CLR_STAT1 = STATUS1_CLEAR_MASK; - 6ea: f8c3 1f30 str.w r1, [r3, #3888] ; 0xf30 - 6ee: bd08 pop {r3, pc} - -000006f0 : - -} - -void ADCHS_desc_init(uint8_t chan_num) -{ - LPC_ADCHS->DSCR_STS = - 6f0: 2300 movs r3, #0 - 6f2: f2c4 030f movt r3, #16399 ; 0x400f - (0 << 4) | - (0 << 5) | - (0x2 << 6) | - (1 << 8) | - (0 << 22) | - (1 << 24) | - 6f6: f040 4001 orr.w r0, r0, #2164260864 ; 0x81000000 - 6fa: f440 72c0 orr.w r2, r0, #384 ; 0x180 - -} - -void ADCHS_desc_init(uint8_t chan_num) -{ - LPC_ADCHS->DSCR_STS = - 6fe: 2101 movs r1, #1 - (0 << 4) | - (0 << 5) | - (0x1 << 6) | - (0 << 8) | - (0 << 22) | - (1 << 24) | - 700: f040 0040 orr.w r0, r0, #64 ; 0x40 - -} - -void ADCHS_desc_init(uint8_t chan_num) -{ - LPC_ADCHS->DSCR_STS = - 704: 6159 str r1, [r3, #20] - (1<<0) | - (0<<1); - - LPC_ADCHS->DESCRIPTOR_1[0] = - 706: f8c3 2320 str.w r2, [r3, #800] ; 0x320 - (1 << 8) | - (0 << 22) | - (1 << 24) | - (0x1U << 31); - - LPC_ADCHS->DESCRIPTOR_0[0] = - 70a: f8c3 0300 str.w r0, [r3, #768] ; 0x300 - 70e: 4770 bx lr - -00000710 : - __asm__("B hard_fault_handler_c"); - __asm__("_MSP:"); - __asm__("MRS R0, MSP"); - __asm__("B hard_fault_handler_c"); -#elif defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) - __asm__("TST LR, #4"); - 710: f01e 0f04 tst.w lr, #4 - __asm__("ITE EQ"); - 714: bf0c ite eq - __asm__("MRSEQ R0, MSP"); - 716: f3ef 8008 mrseq r0, MSP - __asm__("MRSNE R0, PSP"); - 71a: f3ef 8009 mrsne r0, PSP - __asm__("B hard_fault_handler_c"); - 71e: f000 b801 b.w 724 - 722: bf00 nop - -00000724 : -volatile hard_fault_stack_t* hard_fault_stack_pt; - -__attribute__((used)) void hard_fault_handler_c(uint32_t* args) -{ - /* hard_fault_stack_pt contains registers saved before the hard fault */ - hard_fault_stack_pt = (hard_fault_stack_t*)args; - 724: 4b01 ldr r3, [pc, #4] ; (72c ) - 726: 6018 str r0, [r3, #0] - if( SCB->CFSR & CSCB_CFSR_BFSR_PRECISERR ) { - } - } - } - */ - __asm("BKPT #0\n") ; // Break into the debugger - 728: be00 bkpt 0x0000 - 72a: e7fe b.n 72a - 72c: 10080080 .word 0x10080080 - -00000730 : - - while(1); -} - -void mem_manage_handler() { - 730: e7fe b.n 730 - 732: bf00 nop - -00000734 : - while(1); -} - -void bus_fault_handler() { - 734: e7fe b.n 734 - 736: bf00 nop - -00000738 : - while(1); -} - -void usage_fault_handler() { - 738: e7fe b.n 738 - 73a: bf00 nop - -0000073c : - - while(1); -} - -void sys_clock_samplerate(const airspy_sys_samplerate_t* const pt_airspy_sys_samplerate) -{ - 73c: b4f0 push {r4, r5, r6, r7} - uint32_t pll0audio_npdiv; - uint32_t pll0audio_ctrl_flags; - - pll0audio_mdiv = pt_airspy_sys_samplerate->pll0audio_mdiv; - pll0audio_npdiv = pt_airspy_sys_samplerate->pll0audio_npdiv; - pll0audio_ctrl_flags = pt_airspy_sys_samplerate->pll0audio_ctrl_flags; - 73e: e890 00e0 ldmia.w r0, {r5, r6, r7} - - /* Power Down ADCHS Clock */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_PD; - 742: 228c movs r2, #140 ; 0x8c - /* Power Down PLL0AUDIO */ - CGU_PLL0AUDIO_CTRL = CGU_PLL0AUDIO_CTRL_PD; - 744: 2430 movs r4, #48 ; 0x30 - /* Power Down IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_PD; - 746: 214c movs r1, #76 ; 0x4c - pll0audio_mdiv = pt_airspy_sys_samplerate->pll0audio_mdiv; - pll0audio_npdiv = pt_airspy_sys_samplerate->pll0audio_npdiv; - pll0audio_ctrl_flags = pt_airspy_sys_samplerate->pll0audio_ctrl_flags; - - /* Power Down ADCHS Clock */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_PD; - 748: f2c4 0205 movt r2, #16389 ; 0x4005 - /* Power Down PLL0AUDIO */ - CGU_PLL0AUDIO_CTRL = CGU_PLL0AUDIO_CTRL_PD; - 74c: f2c4 0405 movt r4, #16389 ; 0x4005 - /* Power Down IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_PD; - 750: f2c4 0105 movt r1, #16389 ; 0x4005 - pll0audio_mdiv = pt_airspy_sys_samplerate->pll0audio_mdiv; - pll0audio_npdiv = pt_airspy_sys_samplerate->pll0audio_npdiv; - pll0audio_ctrl_flags = pt_airspy_sys_samplerate->pll0audio_ctrl_flags; - - /* Power Down ADCHS Clock */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_PD; - 754: 2301 movs r3, #1 - 756: 6013 str r3, [r2, #0] - /* Power Down PLL0AUDIO */ - CGU_PLL0AUDIO_CTRL = CGU_PLL0AUDIO_CTRL_PD; - 758: 6023 str r3, [r4, #0] - /* Power Down IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_PD; - 75a: 600b str r3, [r1, #0] - - if( (pll0audio_mdiv == 0) && - 75c: b90d cbnz r5, 762 - 75e: 2e00 cmp r6, #0 - 760: d032 beq.n 7c8 - - }else - { - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source PLL0AUDIO */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0AUDIO */ - CGU_PLL0AUDIO_CTRL = CGU_PLL0AUDIO_CTRL_PD - 762: 2030 movs r0, #48 ; 0x30 - 764: f2c4 0005 movt r0, #16389 ; 0x4005 - 768: f640 0101 movw r1, #2049 ; 0x801 - 76c: f2c0 4100 movt r1, #1024 ; 0x400 - | CGU_PLL0AUDIO_CTRL_AUTOBLOCK - | CGU_PLL0AUDIO_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0AUDIO_STAT & CGU_PLL0AUDIO_STAT_LOCK); - 770: 222c movs r2, #44 ; 0x2c - - }else - { - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source PLL0AUDIO */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0AUDIO */ - CGU_PLL0AUDIO_CTRL = CGU_PLL0AUDIO_CTRL_PD - 772: 6001 str r1, [r0, #0] - | CGU_PLL0AUDIO_CTRL_AUTOBLOCK - | CGU_PLL0AUDIO_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0AUDIO_STAT & CGU_PLL0AUDIO_STAT_LOCK); - 774: f2c4 0205 movt r2, #16389 ; 0x4005 - 778: 6813 ldr r3, [r2, #0] - 77a: 07d9 lsls r1, r3, #31 - 77c: d4fc bmi.n 778 - /* configure PLL0AUDIO to produce xxMHz */ - /* PLL Register settings (SEL_EXT=1): - Mdec=31=PLL0_MDIV[16:0] => CGU_PLL0AUDIO_MDIV - Ndec=0=PLL0_NPDIV[21:12], Pdec=21=PLL0_NPDIV[6:0] => CGU_PLL0AUDIO_NP_DIV - */ - CGU_PLL0AUDIO_MDIV = pll0audio_mdiv; - 77e: 2034 movs r0, #52 ; 0x34 - CGU_PLL0AUDIO_NP_DIV = pll0audio_npdiv; - 780: 2138 movs r1, #56 ; 0x38 - /* configure PLL0AUDIO to produce xxMHz */ - /* PLL Register settings (SEL_EXT=1): - Mdec=31=PLL0_MDIV[16:0] => CGU_PLL0AUDIO_MDIV - Ndec=0=PLL0_NPDIV[21:12], Pdec=21=PLL0_NPDIV[6:0] => CGU_PLL0AUDIO_NP_DIV - */ - CGU_PLL0AUDIO_MDIV = pll0audio_mdiv; - 782: f2c4 0005 movt r0, #16389 ; 0x4005 - CGU_PLL0AUDIO_NP_DIV = pll0audio_npdiv; - 786: f2c4 0105 movt r1, #16389 ; 0x4005 - CGU_PLL0AUDIO_CTRL |= (CGU_PLL0AUDIO_CTRL_PD - 78a: 2330 movs r3, #48 ; 0x30 - 78c: f2c4 0305 movt r3, #16389 ; 0x4005 - /* configure PLL0AUDIO to produce xxMHz */ - /* PLL Register settings (SEL_EXT=1): - Mdec=31=PLL0_MDIV[16:0] => CGU_PLL0AUDIO_MDIV - Ndec=0=PLL0_NPDIV[21:12], Pdec=21=PLL0_NPDIV[6:0] => CGU_PLL0AUDIO_NP_DIV - */ - CGU_PLL0AUDIO_MDIV = pll0audio_mdiv; - 790: 6005 str r5, [r0, #0] - CGU_PLL0AUDIO_NP_DIV = pll0audio_npdiv; - 792: 600e str r6, [r1, #0] - CGU_PLL0AUDIO_CTRL |= (CGU_PLL0AUDIO_CTRL_PD - 794: 681a ldr r2, [r3, #0] - 796: ea47 0002 orr.w r0, r7, r2 - 79a: f440 5100 orr.w r1, r0, #8192 ; 0x2000 - 79e: f041 0211 orr.w r2, r1, #17 - 7a2: 601a str r2, [r3, #0] - | pll0audio_ctrl_flags - | CGU_PLL0AUDIO_CTRL_SEL_EXT - | CGU_PLL0AUDIO_CTRL_CLKEN); - - /* power on PLL0AUDIO and wait until stable */ - CGU_PLL0AUDIO_CTRL &= ~CGU_PLL0AUDIO_CTRL_PD; - 7a4: 6818 ldr r0, [r3, #0] - while (!(CGU_PLL0AUDIO_STAT & CGU_PLL0AUDIO_STAT_LOCK)); - 7a6: 222c movs r2, #44 ; 0x2c - | pll0audio_ctrl_flags - | CGU_PLL0AUDIO_CTRL_SEL_EXT - | CGU_PLL0AUDIO_CTRL_CLKEN); - - /* power on PLL0AUDIO and wait until stable */ - CGU_PLL0AUDIO_CTRL &= ~CGU_PLL0AUDIO_CTRL_PD; - 7a8: f020 0101 bic.w r1, r0, #1 - 7ac: 6019 str r1, [r3, #0] - while (!(CGU_PLL0AUDIO_STAT & CGU_PLL0AUDIO_STAT_LOCK)); - 7ae: f2c4 0205 movt r2, #16389 ; 0x4005 - 7b2: 6813 ldr r3, [r2, #0] - 7b4: 07db lsls r3, r3, #31 - 7b6: d5fc bpl.n 7b2 - - /* use PLL0AUDIO as clock source for ADCHS */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_AUTOBLOCK - 7b8: 208c movs r0, #140 ; 0x8c - 7ba: f2c4 0005 movt r0, #16389 ; 0x4005 - 7be: f04f 2208 mov.w r2, #134219776 ; 0x8000800 - 7c2: 6002 str r2, [r0, #0] - | CGU_BASE_ADCHS_CLK_CLK_SEL(CGU_SRC_PLL0AUDIO); - } -} - 7c4: bcf0 pop {r4, r5, r6, r7} - 7c6: 4770 bx lr - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_PD; - - if( (pll0audio_mdiv == 0) && - (pll0audio_npdiv == 0) ) - { - if( pt_airspy_sys_samplerate->idivb == 0) - 7c8: 7b03 ldrb r3, [r0, #12] - 7ca: b92b cbnz r3, 7d8 - { - /* Do not use IDIVB direct connection CGU_SRC_GP_CLKIN to ACHS_CLK */ - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source CLK_IN */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_AUTOBLOCK - 7cc: f44f 6100 mov.w r1, #2048 ; 0x800 - 7d0: f2c0 4100 movt r1, #1024 ; 0x400 - 7d4: 6011 str r1, [r2, #0] - 7d6: e7f5 b.n 7c4 - | CGU_BASE_ADCHS_CLK_CLK_SEL(CGU_SRC_GP_CLKIN); - }else - { - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source IDIVB */ - /* Use CGU_SRC_GP_CLKIN as clock source for IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_IDIV(pt_airspy_sys_samplerate->idivb) - 7d8: 0098 lsls r0, r3, #2 - | CGU_IDIVB_CTRL_AUTOBLOCK - | CGU_IDIVB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - 7da: f040 6080 orr.w r0, r0, #67108864 ; 0x4000000 - - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source CLK_IDIVB */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_AUTOBLOCK - 7de: f44f 6300 mov.w r3, #2048 ; 0x800 - { - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source IDIVB */ - /* Use CGU_SRC_GP_CLKIN as clock source for IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_IDIV(pt_airspy_sys_samplerate->idivb) - | CGU_IDIVB_CTRL_AUTOBLOCK - | CGU_IDIVB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - 7e2: 4318 orrs r0, r3 - - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source CLK_IDIVB */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_AUTOBLOCK - 7e4: f6c0 5300 movt r3, #3328 ; 0xd00 - | CGU_BASE_ADCHS_CLK_CLK_SEL(CGU_SRC_GP_CLKIN); - }else - { - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source IDIVB */ - /* Use CGU_SRC_GP_CLKIN as clock source for IDIVB */ - CGU_IDIVB_CTRL = CGU_IDIVB_CTRL_IDIV(pt_airspy_sys_samplerate->idivb) - 7e8: 6008 str r0, [r1, #0] - | CGU_IDIVB_CTRL_AUTOBLOCK - | CGU_IDIVB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - - /* ADCHS Clock CGU_BASE_ADCHS_CLK => Clock Source CLK_IDIVB */ - CGU_BASE_ADCHS_CLK = CGU_BASE_ADCHS_CLK_AUTOBLOCK - 7ea: 6013 str r3, [r2, #0] - 7ec: e7ea b.n 7c4 - 7ee: bf00 nop - -000007f0 : - /* Configure PLL1 Clock */ - /* Integer mode: - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - 7f0: 2144 movs r1, #68 ; 0x44 - 7f2: f2c4 0105 movt r1, #16389 ; 0x4005 - Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3. - Init I2C0 & I2C1. -This function is mainly used to lower power consumption. -*/ -void cpu_clock_pll1_low_speed(const airspy_pll1_ls_t* const pt_airspy_pll1_ls_conf) -{ - 7f6: b470 push {r4, r5, r6} - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - 7f8: f64c 433c movw r3, #52284 ; 0xcc3c - /* Configure PLL1 Clock */ - /* Integer mode: - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - 7fc: 680e ldr r6, [r1, #0] - CGU_PLL1_CTRL_BYPASS | /* BYPASS */ - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - /* Set PLL1 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - 7fe: 6805 ldr r5, [r0, #0] - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - | CGU_PLL1_CTRL_MSEL(pll1_msel) - 800: 6882 ldr r2, [r0, #8] - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - /* Set PLL1 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - 802: 6844 ldr r4, [r0, #4] - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - 804: f2ce 0300 movt r3, #57344 ; 0xe000 - 808: 4033 ands r3, r6 - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - /* Set PLL1 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - 80a: ea43 2005 orr.w r0, r3, r5, lsl #8 - | CGU_PLL1_CTRL_MSEL(pll1_msel) - 80e: f040 6380 orr.w r3, r0, #67108864 ; 0x4000000 - 812: f043 00c0 orr.w r0, r3, #192 ; 0xc0 - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - CGU_PLL1_CTRL_BYPASS | /* BYPASS */ - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - /* Set PLL1 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - 816: ea40 3304 orr.w r3, r0, r4, lsl #12 - 81a: ea43 4002 orr.w r0, r3, r2, lsl #16 - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL - | CGU_PLL1_CTRL_DIRECT; - CGU_PLL1_CTRL = pll_reg; - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - 81e: 2240 movs r2, #64 ; 0x40 - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL - | CGU_PLL1_CTRL_DIRECT; - CGU_PLL1_CTRL = pll_reg; - 820: 6008 str r0, [r1, #0] - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - 822: f2c4 0205 movt r2, #16389 ; 0x4005 - 826: 6811 ldr r1, [r2, #0] - 828: 07c8 lsls r0, r1, #31 - 82a: d5fc bpl.n 826 - -} - 82c: bc70 pop {r4, r5, r6} - 82e: 4770 bx lr - -00000830 : - - /* - * 12MHz clock is entering LPC XTAL1/OSC input now. - */ - /* set xtal oscillator to low frequency mode */ - CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_HF; - 830: 2218 movs r2, #24 - 832: f2c4 0205 movt r2, #16389 ; 0x4005 -Configure PLL1 to min speed (48MHz) => see cpu_clock_pll1_low_speed() . -Configure PLL0USB @480MHz for USB0. -Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1, APB3. -*/ -void sys_clock_init(void) -{ - 836: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - - /* - * 12MHz clock is entering LPC XTAL1/OSC input now. - */ - /* set xtal oscillator to low frequency mode */ - CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_HF; - 83a: 6811 ldr r1, [r2, #0] - 83c: f021 0004 bic.w r0, r1, #4 - 840: 6010 str r0, [r2, #0] - - /* power on the oscillator and wait until stable */ - CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_ENABLE; - 842: 6814 ldr r4, [r2, #0] - 844: f024 0501 bic.w r5, r4, #1 -Configure PLL1 to min speed (48MHz) => see cpu_clock_pll1_low_speed() . -Configure PLL0USB @480MHz for USB0. -Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1, APB3. -*/ -void sys_clock_init(void) -{ - 848: b095 sub sp, #84 ; 0x54 - */ - /* set xtal oscillator to low frequency mode */ - CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_HF; - - /* power on the oscillator and wait until stable */ - CGU_XTAL_OSC_CTRL &= ~CGU_XTAL_OSC_CTRL_ENABLE; - 84a: f242 7610 movw r6, #10000 ; 0x2710 - 84e: 6015 str r5, [r2, #0] -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - __asm__("nop"); - 850: bf00 nop - 852: 1e73 subs r3, r6, #1 - 854: bf00 nop - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - 856: 1e5e subs r6, r3, #1 - 858: d1fa bne.n 850 - defined in User Manual 10503.pdf Rev1.8 See Fig 30. BASE_M4_CLK ramp-up procedure - */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - - /* Use CGU_SRC_XTAL as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_XTAL) | CGU_BASE_M4_CLK_AUTOBLOCK); - 85a: 276c movs r7, #108 ; 0x6c - - /* Use CGU_SRC_XTAL as clock source for Peripheral */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 85c: 2464 movs r4, #100 ; 0x64 - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 85e: 2180 movs r1, #128 ; 0x80 - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB3 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 860: 2284 movs r2, #132 ; 0x84 - /* Use CGU_SRC_XTAL as clock source for Peripheral */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 862: f2c4 0105 movt r1, #16389 ; 0x4005 - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB3 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 866: f2c4 0205 movt r2, #16389 ; 0x4005 - defined in User Manual 10503.pdf Rev1.8 See Fig 30. BASE_M4_CLK ramp-up procedure - */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - - /* Use CGU_SRC_XTAL as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_XTAL) | CGU_BASE_M4_CLK_AUTOBLOCK); - 86a: f2c4 0705 movt r7, #16389 ; 0x4005 - - /* Use CGU_SRC_XTAL as clock source for Peripheral */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 86e: f2c4 0405 movt r4, #16389 ; 0x4005 - defined in User Manual 10503.pdf Rev1.8 See Fig 30. BASE_M4_CLK ramp-up procedure - */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - - /* Use CGU_SRC_XTAL as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_XTAL) | CGU_BASE_M4_CLK_AUTOBLOCK); - 872: f44f 6500 mov.w r5, #2048 ; 0x800 - 876: f2c0 6500 movt r5, #1536 ; 0x600 - 87a: 603d str r5, [r7, #0] - * CLK5 -> NC - * CLK6 -> NC - * CLK7 -> LPC4370 Main Clock xxMHz. - */ - /* Configure I2C0 (for SI5351C) to about 375kHz (12MHz/(2*16)=0.375MHz) when we switch over to APB1 clock = 12MHz */ - i2c0_init(16); - 87c: 2010 movs r0, #16 - - /* Use CGU_SRC_XTAL as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_XTAL) | CGU_BASE_M4_CLK_AUTOBLOCK); - - /* Use CGU_SRC_XTAL as clock source for Peripheral */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 87e: 6025 str r5, [r4, #0] - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 880: 600d str r5, [r1, #0] - /* SI5351C detected continue init using AirSpy NOS configuration */ - addr = (uint32_t)&airspy_nos_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - 882: 4c21 ldr r4, [pc, #132] ; (908 ) - /* Use CGU_SRC_XTAL as clock source for APB1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_XTAL); - - /* Use CGU_SRC_XTAL as clock source for APB3 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 884: 6015 str r5, [r2, #0] - * CLK5 -> NC - * CLK6 -> NC - * CLK7 -> LPC4370 Main Clock xxMHz. - */ - /* Configure I2C0 (for SI5351C) to about 375kHz (12MHz/(2*16)=0.375MHz) when we switch over to APB1 clock = 12MHz */ - i2c0_init(16); - 886: f000 fc59 bl 113c - - if (si5351c_disable_oeb_pin_control() == true) - 88a: f000 fbc3 bl 1014 - /* SI5351C detected continue init using AirSpy NOS configuration */ - addr = (uint32_t)&airspy_nos_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - 88e: 4f1f ldr r7, [pc, #124] ; (90c ) - 890: 6823 ldr r3, [r4, #0] - 892: 19d9 adds r1, r3, r7 - * CLK7 -> LPC4370 Main Clock xxMHz. - */ - /* Configure I2C0 (for SI5351C) to about 375kHz (12MHz/(2*16)=0.375MHz) when we switch over to APB1 clock = 12MHz */ - i2c0_init(16); - - if (si5351c_disable_oeb_pin_control() == true) - 894: 2800 cmp r0, #0 - 896: f000 81ed beq.w c74 - { - /* SI5351C detected continue init using AirSpy NOS configuration */ - addr = (uint32_t)&airspy_nos_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - 89a: 4e1d ldr r6, [pc, #116] ; (910 ) - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - 89c: 428b cmp r3, r1 - - if (si5351c_disable_oeb_pin_control() == true) - { - /* SI5351C detected continue init using AirSpy NOS configuration */ - addr = (uint32_t)&airspy_nos_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - 89e: f046 4600 orr.w r6, r6, #2147483648 ; 0x80000000 - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - 8a2: 4618 mov r0, r3 - 8a4: f080 823b bcs.w d1e -/* -Configure PLL1 to min speed (48MHz) => see cpu_clock_pll1_low_speed() . -Configure PLL0USB @480MHz for USB0. -Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1, APB3. -*/ -void sys_clock_init(void) - 8a8: 1a1a subs r2, r3, r0 - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - { - *dest++ = *src++; - 8aa: 5d91 ldrb r1, [r2, r6] - 8ac: f803 1b01 strb.w r1, [r3], #1 - /* SI5351C detected continue init using AirSpy NOS configuration */ - addr = (uint32_t)&airspy_nos_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - 8b0: 6825 ldr r5, [r4, #0] - 8b2: 19ea adds r2, r5, r7 - 8b4: 4293 cmp r3, r2 - 8b6: d3f7 bcc.n 8a8 - addr += (sizeof_struct_u16 * nb_struct_u16); - /* 3rd Expansion Conf Point SI5351C Addr */ - airspy_conf->si5351c_config = (si5351c_conf_t*)addr; - - /* Set default r820t_conf_rw.if_freq to airspy_m0_m4_conf[0] => r820t_if_freq */ - airspy_conf->r820t_conf_rw.if_freq = airspy_conf->airspy_m0_m4_conf[0].airspy_m0_conf.r820t_if_freq; - 8b8: f8d5 309c ldr.w r3, [r5, #156] ; 0x9c - /* 1st Expansion Conf Point M0/M4 Addr */ - airspy_conf->airspy_m0_m4_conf = (airspy_m0_m4_conf_t*)addr; - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - 8bc: f8b5 1074 ldrh.w r1, [r5, #116] ; 0x74 - addr += (sizeof_struct_u16 * nb_struct_u16); - /* 3rd Expansion Conf Point SI5351C Addr */ - airspy_conf->si5351c_config = (si5351c_conf_t*)addr; - - /* Set default r820t_conf_rw.if_freq to airspy_m0_m4_conf[0] => r820t_if_freq */ - airspy_conf->r820t_conf_rw.if_freq = airspy_conf->airspy_m0_m4_conf[0].airspy_m0_conf.r820t_if_freq; - 8c0: 652b str r3, [r5, #80] ; 0x50 - /* 1st Expansion Conf Point M0/M4 Addr */ - airspy_conf->airspy_m0_m4_conf = (airspy_m0_m4_conf_t*)addr; - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - 8c2: f8b5 e076 ldrh.w lr, [r5, #118] ; 0x76 - /* 2nd Expansion Conf Point M0/M4 ALT Addr */ - airspy_conf->airspy_m0_m4_alt_conf = (airspy_m0_m4_conf_t*)addr; - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_alt_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_alt_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - 8c6: f8b5 707e ldrh.w r7, [r5, #126] ; 0x7e - 8ca: f8b5 607c ldrh.w r6, [r5, #124] ; 0x7c - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - airspy_calib.timestamp = airspy_calib_flash->timestamp; - airspy_calib.correction_ppb = airspy_calib_flash->correction_ppb; - - if((airspy_conf->conf_hw.hardware_type & HW_FEATURE_SI5351C) == HW_FEATURE_SI5351C) - 8ce: 6868 ldr r0, [r5, #4] - airspy_conf->r820t_conf_rw.if_freq = airspy_conf->airspy_m0_m4_conf[0].airspy_m0_conf.r820t_if_freq; - - /* Load calibration data */ - addr = (ROMFLASH_BASE_ADDR + AIRSPY_FLASH_CALIB_OFFSET); /* Addr from Flash Configuration 0 (Calibration Data) */ - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - 8d0: 2300 movs r3, #0 - 8d2: f2c8 0302 movt r3, #32770 ; 0x8002 - *dest++ = *src++; - } - } - - /* Compute & update 1st, 2nd & 3rd Expansion Conf Point Addr */ - addr = ((uint32_t)(&airspy_conf->si5351c_config)) + (sizeof(void *)); - 8d6: f105 028c add.w r2, r5, #140 ; 0x8c - /* 1st Expansion Conf Point M0/M4 Addr */ - airspy_conf->airspy_m0_m4_conf = (airspy_m0_m4_conf_t*)addr; - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - 8da: fb0e 2101 mla r1, lr, r1, r2 - /* 2nd Expansion Conf Point M0/M4 ALT Addr */ - airspy_conf->airspy_m0_m4_alt_conf = (airspy_m0_m4_conf_t*)addr; - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_alt_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_alt_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - 8de: fb07 1606 mla r6, r7, r6, r1 - /* Load calibration data */ - addr = (ROMFLASH_BASE_ADDR + AIRSPY_FLASH_CALIB_OFFSET); /* Addr from Flash Configuration 0 (Calibration Data) */ - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - airspy_calib.timestamp = airspy_calib_flash->timestamp; - airspy_calib.correction_ppb = airspy_calib_flash->correction_ppb; - 8e2: f8d3 8008 ldr.w r8, [r3, #8] - airspy_conf->r820t_conf_rw.if_freq = airspy_conf->airspy_m0_m4_conf[0].airspy_m0_conf.r820t_if_freq; - - /* Load calibration data */ - addr = (ROMFLASH_BASE_ADDR + AIRSPY_FLASH_CALIB_OFFSET); /* Addr from Flash Configuration 0 (Calibration Data) */ - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - 8e6: 681f ldr r7, [r3, #0] - } - - /* Compute & update 1st, 2nd & 3rd Expansion Conf Point Addr */ - addr = ((uint32_t)(&airspy_conf->si5351c_config)) + (sizeof(void *)); - /* 1st Expansion Conf Point M0/M4 Addr */ - airspy_conf->airspy_m0_m4_conf = (airspy_m0_m4_conf_t*)addr; - 8e8: 67aa str r2, [r5, #120] ; 0x78 - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - airspy_calib.timestamp = airspy_calib_flash->timestamp; - airspy_calib.correction_ppb = airspy_calib_flash->correction_ppb; - - if((airspy_conf->conf_hw.hardware_type & HW_FEATURE_SI5351C) == HW_FEATURE_SI5351C) - 8ea: 0783 lsls r3, r0, #30 - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - /* 2nd Expansion Conf Point M0/M4 ALT Addr */ - airspy_conf->airspy_m0_m4_alt_conf = (airspy_m0_m4_conf_t*)addr; - 8ec: f8c5 1080 str.w r1, [r5, #128] ; 0x80 - sizeof_struct_u16 = airspy_conf->sizeof_airspy_m0_m4_alt_conf_t; - nb_struct_u16 = airspy_conf->nb_airspy_m0_m4_alt_conf_t; - - addr += (sizeof_struct_u16 * nb_struct_u16); - /* 3rd Expansion Conf Point SI5351C Addr */ - airspy_conf->si5351c_config = (si5351c_conf_t*)addr; - 8f0: f8c5 6088 str.w r6, [r5, #136] ; 0x88 - airspy_calib_flash = (airspy_calib_t*)(addr); - airspy_calib.header = airspy_calib_flash->header; - airspy_calib.timestamp = airspy_calib_flash->timestamp; - airspy_calib.correction_ppb = airspy_calib_flash->correction_ppb; - - if((airspy_conf->conf_hw.hardware_type & HW_FEATURE_SI5351C) == HW_FEATURE_SI5351C) - 8f4: f100 81cd bmi.w c92 - delay(WAIT_CPU_CLOCK_INIT_DELAY); - si5351c_read[3] = si5351c_read_single(0); - }else - { - /* Check calibration is valid / enabled */ - if(airspy_calib.header == AIRSPY_FLASH_CALIB_HEADER) - 8f8: 2201 movs r2, #1 - 8fa: f6cc 221b movt r2, #51739 ; 0xca1b - 8fe: 4297 cmp r7, r2 - 900: f000 81f8 beq.w cf4 - 904: e006 b.n 914 - 906: bf00 nop - 908: 10080018 .word 0x10080018 - 90c: 00000c00 .word 0x00000c00 - 910: 000050dc .word 0x000050dc - - /* ********************************************************************* */ - /* M4/M0 core, Peripheral, APB1, APB3 Configuration (PLL1 clock source) */ - /* ********************************************************************* */ - /* Configure PLL1 with CGU_SRC_GP_CLKIN as source clock */ - cpu_clock_pll1_low_speed(&pt_airspy_sys_conf->pll1_ls); - 914: f105 003c add.w r0, r5, #60 ; 0x3c - 918: f7ff ff6a bl 7f0 - - /* Configure I2C0 (for SI5351C) to 400kHz when we switch over to APB1 clock = PLL1 */ - i2c0_init(airspy_conf->i2c_conf.i2c0_pll1_ls_hs_conf_val); - 91c: 6826 ldr r6, [r4, #0] - 91e: 8b30 ldrh r0, [r6, #24] - 920: f000 fc0c bl 113c - /* Configure I2C1 (for R820T) to 400kHz when we switch over to APB3 clock = PLL1 */ - i2c1_init(airspy_conf->i2c_conf.i2c1_pll1_ls_conf_val); - 924: 6820 ldr r0, [r4, #0] - 926: 8b80 ldrh r0, [r0, #28] - 928: f000 fc28 bl 117c - - /* ************************************************** */ - /* Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3 */ - /* ************************************************** */ - /* Use PLL1 as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK); - 92c: f04f 096c mov.w r9, #108 ; 0x6c - - /* Switch peripheral clock over to use PLL1 */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 930: f04f 0c64 mov.w ip, #100 ; 0x64 - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB1 clock over to use PLL1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 934: 2780 movs r7, #128 ; 0x80 - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB3 clock over to use PLL1 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 936: 2684 movs r6, #132 ; 0x84 - - /* **************************************************** */ - /* PLL0USB & USB0 Configuration (GP_CLKIN clock source) */ - /* **************************************************** */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0USB */ - CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD - 938: 2120 movs r1, #32 - - /* ************************************************** */ - /* Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3 */ - /* ************************************************** */ - /* Use PLL1 as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK); - 93a: f2c4 0905 movt r9, #16389 ; 0x4005 - 93e: f44f 6300 mov.w r3, #2048 ; 0x800 - - /* Switch peripheral clock over to use PLL1 */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 942: f2c4 0c05 movt ip, #16389 ; 0x4005 - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB1 clock over to use PLL1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 946: f2c4 0705 movt r7, #16389 ; 0x4005 - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB3 clock over to use PLL1 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 94a: f2c4 0605 movt r6, #16389 ; 0x4005 - - /* **************************************************** */ - /* PLL0USB & USB0 Configuration (GP_CLKIN clock source) */ - /* **************************************************** */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0USB */ - CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD - 94e: f2c4 0105 movt r1, #16389 ; 0x4005 - 952: f640 0001 movw r0, #2049 ; 0x801 - - /* ************************************************** */ - /* Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3 */ - /* ************************************************** */ - /* Use PLL1 as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK); - 956: f6c0 1300 movt r3, #2304 ; 0x900 - - /* **************************************************** */ - /* PLL0USB & USB0 Configuration (GP_CLKIN clock source) */ - /* **************************************************** */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0USB */ - CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD - 95a: f2c0 4000 movt r0, #1024 ; 0x400 - | CGU_PLL0USB_CTRL_AUTOBLOCK - | CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK); - 95e: 221c movs r2, #28 - - /* ************************************************** */ - /* Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3 */ - /* ************************************************** */ - /* Use PLL1 as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK); - 960: f8c9 3000 str.w r3, [r9] - /* **************************************************** */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0USB */ - CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD - | CGU_PLL0USB_CTRL_AUTOBLOCK - | CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK); - 964: f2c4 0205 movt r2, #16389 ; 0x4005 - /* ************************************************** */ - /* Use PLL1 as clock source for BASE_M4_CLK (CPU) */ - CGU_BASE_M4_CLK = (CGU_BASE_M4_CLK_CLK_SEL(CGU_SRC_PLL1) | CGU_BASE_M4_CLK_AUTOBLOCK); - - /* Switch peripheral clock over to use PLL1 */ - CGU_BASE_PERIPH_CLK = CGU_BASE_PERIPH_CLK_AUTOBLOCK - 968: f8cc 3000 str.w r3, [ip] - | CGU_BASE_PERIPH_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB1 clock over to use PLL1 */ - CGU_BASE_APB1_CLK = CGU_BASE_APB1_CLK_AUTOBLOCK - 96c: 603b str r3, [r7, #0] - | CGU_BASE_APB1_CLK_CLK_SEL(CGU_SRC_PLL1); - - /* Switch APB3 clock over to use PLL1 */ - CGU_BASE_APB3_CLK = CGU_BASE_APB3_CLK_AUTOBLOCK - 96e: 6033 str r3, [r6, #0] - - /* **************************************************** */ - /* PLL0USB & USB0 Configuration (GP_CLKIN clock source) */ - /* **************************************************** */ - /* Use CGU_SRC_GP_CLKIN as clock source for PLL0USB */ - CGU_PLL0USB_CTRL = CGU_PLL0USB_CTRL_PD - 970: 6008 str r0, [r1, #0] - | CGU_PLL0USB_CTRL_AUTOBLOCK - | CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK); - 972: 6817 ldr r7, [r2, #0] - 974: 07fe lsls r6, r7, #31 - 976: d4fc bmi.n 972 - - /* configure PLL0USB to produce 480 MHz clock from CGU_SRC_GP_CLKIN */ - CGU_PLL0USB_MDIV = pt_airspy_sys_conf->pll0_usb_mdiv; - 978: 2624 movs r6, #36 ; 0x24 - 97a: 6a69 ldr r1, [r5, #36] ; 0x24 - 97c: f2c4 0605 movt r6, #16389 ; 0x4005 - CGU_PLL0USB_NP_DIV = pt_airspy_sys_conf->pll0_usb_npdiv; - 980: 2028 movs r0, #40 ; 0x28 - | CGU_PLL0USB_CTRL_AUTOBLOCK - | CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK); - - /* configure PLL0USB to produce 480 MHz clock from CGU_SRC_GP_CLKIN */ - CGU_PLL0USB_MDIV = pt_airspy_sys_conf->pll0_usb_mdiv; - 982: 6031 str r1, [r6, #0] - CGU_PLL0USB_NP_DIV = pt_airspy_sys_conf->pll0_usb_npdiv; - 984: 6aaa ldr r2, [r5, #40] ; 0x28 - 986: f2c4 0005 movt r0, #16389 ; 0x4005 - CGU_PLL0USB_CTRL |= (CGU_PLL0USB_CTRL_PD - 98a: 2320 movs r3, #32 - 98c: f2c4 0305 movt r3, #16389 ; 0x4005 - | CGU_PLL0USB_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN); - while (CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK); - - /* configure PLL0USB to produce 480 MHz clock from CGU_SRC_GP_CLKIN */ - CGU_PLL0USB_MDIV = pt_airspy_sys_conf->pll0_usb_mdiv; - CGU_PLL0USB_NP_DIV = pt_airspy_sys_conf->pll0_usb_npdiv; - 990: 6002 str r2, [r0, #0] - CGU_PLL0USB_CTRL |= (CGU_PLL0USB_CTRL_PD - 992: 681f ldr r7, [r3, #0] - 994: 6aed ldr r5, [r5, #44] ; 0x2c - 996: ea47 0605 orr.w r6, r7, r5 - 99a: f046 0111 orr.w r1, r6, #17 - 99e: 6019 str r1, [r3, #0] - | pt_airspy_sys_conf->pll0usb_ctrl_flags - | CGU_PLL0USB_CTRL_CLKEN); - - /* Power on PLL0USB and wait until stable */ - CGU_PLL0USB_CTRL &= ~CGU_PLL0USB_CTRL_PD; - 9a0: 6818 ldr r0, [r3, #0] - while (!(CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK)); - 9a2: 221c movs r2, #28 - CGU_PLL0USB_CTRL |= (CGU_PLL0USB_CTRL_PD - | pt_airspy_sys_conf->pll0usb_ctrl_flags - | CGU_PLL0USB_CTRL_CLKEN); - - /* Power on PLL0USB and wait until stable */ - CGU_PLL0USB_CTRL &= ~CGU_PLL0USB_CTRL_PD; - 9a4: f020 0701 bic.w r7, r0, #1 - 9a8: 601f str r7, [r3, #0] - while (!(CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK)); - 9aa: f2c4 0205 movt r2, #16389 ; 0x4005 - 9ae: 6813 ldr r3, [r2, #0] - 9b0: 07dd lsls r5, r3, #31 - 9b2: d5fc bpl.n 9ae - - /* Use PLL0USB as clock source for USB0 */ - CGU_BASE_USB0_CLK = CGU_BASE_USB0_CLK_AUTOBLOCK - 9b4: 2560 movs r5, #96 ; 0x60 - 9b6: f2c4 0505 movt r5, #16389 ; 0x4005 - 9ba: f44f 6600 mov.w r6, #2048 ; 0x800 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - 9be: f243 112c movw r1, #12588 ; 0x312c - 9c2: f2c4 0104 movt r1, #16388 ; 0x4004 - /* Power on PLL0USB and wait until stable */ - CGU_PLL0USB_CTRL &= ~CGU_PLL0USB_CTRL_PD; - while (!(CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK)); - - /* Use PLL0USB as clock source for USB0 */ - CGU_BASE_USB0_CLK = CGU_BASE_USB0_CLK_AUTOBLOCK - 9c6: f2c0 7600 movt r6, #1792 ; 0x700 - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - 9ca: 2778 movs r7, #120 ; 0x78 - /* Power on PLL0USB and wait until stable */ - CGU_PLL0USB_CTRL &= ~CGU_PLL0USB_CTRL_PD; - while (!(CGU_PLL0USB_STAT & CGU_PLL0USB_STAT_LOCK)); - - /* Use PLL0USB as clock source for USB0 */ - CGU_BASE_USB0_CLK = CGU_BASE_USB0_CLK_AUTOBLOCK - 9cc: 602e str r6, [r5, #0] - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - 9ce: f2c4 0705 movt r7, #16389 ; 0x4005 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - 9d2: 6808 ldr r0, [r1, #0] - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - 9d4: 9703 str r7, [sp, #12] - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - 9d6: 2790 movs r7, #144 ; 0x90 - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - 9d8: 2274 movs r2, #116 ; 0x74 - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - 9da: 237c movs r3, #124 ; 0x7c - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - 9dc: f2c4 0705 movt r7, #16389 ; 0x4005 - 9e0: 9706 str r7, [sp, #24] - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - 9e2: f2c4 0205 movt r2, #16389 ; 0x4005 - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - 9e6: f2c4 0305 movt r3, #16389 ; 0x4005 - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - 9ea: 279c movs r7, #156 ; 0x9c - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - 9ec: 9201 str r2, [sp, #4] - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - 9ee: 9304 str r3, [sp, #16] - // CGU_BASE_APB1_CLK is used for I2C0 - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - 9f0: 2288 movs r2, #136 ; 0x88 - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - 9f2: 2394 movs r3, #148 ; 0x94 - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - 9f4: f2c4 0705 movt r7, #16389 ; 0x4005 - 9f8: 9709 str r7, [sp, #36] ; 0x24 - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - // CGU_BASE_APB1_CLK is used for I2C0 - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - 9fa: f2c4 0205 movt r2, #16389 ; 0x4005 - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - 9fe: f2c4 0305 movt r3, #16389 ; 0x4005 - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - a02: 27a8 movs r7, #168 ; 0xa8 - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - // CGU_BASE_APB1_CLK is used for I2C0 - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - a04: 9205 str r2, [sp, #20] - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - a06: 9307 str r3, [sp, #28] - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - a08: 2298 movs r2, #152 ; 0x98 - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - a0a: 23a0 movs r3, #160 ; 0xa0 - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - a0c: f2c4 0705 movt r7, #16389 ; 0x4005 - a10: 970c str r7, [sp, #48] ; 0x30 - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - a12: f2c4 0205 movt r2, #16389 ; 0x4005 - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - a16: f2c4 0305 movt r3, #16389 ; 0x4005 - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - a1a: 27b4 movs r7, #180 ; 0xb4 - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - a1c: 9208 str r2, [sp, #32] - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - a1e: 930a str r3, [sp, #40] ; 0x28 - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - a20: 22a4 movs r2, #164 ; 0xa4 - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - a22: 23ac movs r3, #172 ; 0xac - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - a24: f2c4 0705 movt r7, #16389 ; 0x4005 - a28: 970f str r7, [sp, #60] ; 0x3c - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - a2a: f2c4 0205 movt r2, #16389 ; 0x4005 - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - a2e: f2c4 0305 movt r3, #16389 ; 0x4005 - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - a32: 27c0 movs r7, #192 ; 0xc0 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - a34: 9002 str r0, [sp, #8] - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - a36: 920b str r2, [sp, #44] ; 0x2c - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - a38: 930d str r3, [sp, #52] ; 0x34 - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - a3a: 22b0 movs r2, #176 ; 0xb0 - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - a3c: 23b8 movs r3, #184 ; 0xb8 - CGU_OUTCLK_24_CTRL = 1; - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - a3e: f2c4 0705 movt r7, #16389 ; 0x4005 - a42: 9712 str r7, [sp, #72] ; 0x48 - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - a44: f2c4 0205 movt r2, #16389 ; 0x4005 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - a48: 9f02 ldr r7, [sp, #8] - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - a4a: 920e str r2, [sp, #56] ; 0x38 - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - a4c: f2c4 0305 movt r3, #16389 ; 0x4005 - a50: 9310 str r3, [sp, #64] ; 0x40 - CGU_OUTCLK_24_CTRL = 1; - a52: 22bc movs r2, #188 ; 0xbc - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - a54: 23c4 movs r3, #196 ; 0xc4 - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - a56: f2c4 0205 movt r2, #16389 ; 0x4005 - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - a5a: f2c4 0305 movt r3, #16389 ; 0x4005 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - a5e: f447 3700 orr.w r7, r7, #131072 ; 0x20000 - - /* Disable XTAL because GP_CLKIN is used from SI5351C instead */ - /* Switch off the oscillator */ - CGU_XTAL_OSC_CTRL = CGU_XTAL_OSC_CTRL_ENABLE; - a62: f04f 0a18 mov.w sl, #24 - - CGU_BASE_SAFE_CLK = CGU_BASE_USB1_CLK_PD; - a66: f04f 095c mov.w r9, #92 ; 0x5c - // CGU_BASE_USB0_CLK is used for USB0 HS - // CGU_BASE_M0_CLK is used - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - a6a: f04f 0868 mov.w r8, #104 ; 0x68 - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - a6e: f04f 0e70 mov.w lr, #112 ; 0x70 - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - a72: 9211 str r2, [sp, #68] ; 0x44 - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - a74: 9313 str r3, [sp, #76] ; 0x4c - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - - /* Disable XTAL because GP_CLKIN is used from SI5351C instead */ - /* Switch off the oscillator */ - CGU_XTAL_OSC_CTRL = CGU_XTAL_OSC_CTRL_ENABLE; - a76: f2c4 0a05 movt sl, #16389 ; 0x4005 - | CGU_BASE_USB0_CLK_CLK_SEL(CGU_SRC_PLL0USB); - - /* ****************************************** */ - /* Disable/PowerDown unused clock/peripherals */ - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - a7a: 600f str r7, [r1, #0] - - /* Disable XTAL because GP_CLKIN is used from SI5351C instead */ - /* Switch off the oscillator */ - CGU_XTAL_OSC_CTRL = CGU_XTAL_OSC_CTRL_ENABLE; - - CGU_BASE_SAFE_CLK = CGU_BASE_USB1_CLK_PD; - a7c: f2c4 0905 movt r9, #16389 ; 0x4005 - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - a80: 9901 ldr r1, [sp, #4] - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - a82: 9f03 ldr r7, [sp, #12] - - CGU_BASE_SAFE_CLK = CGU_BASE_USB1_CLK_PD; - // CGU_BASE_USB0_CLK is used for USB0 HS - // CGU_BASE_M0_CLK is used - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - a84: f2c4 0805 movt r8, #16389 ; 0x4005 - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - a88: f2c4 0e05 movt lr, #16389 ; 0x4005 - /* ****************************************** */ - CREG_CREG6 |= (1<<17); // PowerDown RNG - - /* Disable XTAL because GP_CLKIN is used from SI5351C instead */ - /* Switch off the oscillator */ - CGU_XTAL_OSC_CTRL = CGU_XTAL_OSC_CTRL_ENABLE; - a8c: 2301 movs r3, #1 - a8e: f8ca 3000 str.w r3, [sl] - - CGU_BASE_SAFE_CLK = CGU_BASE_USB1_CLK_PD; - a92: f8c9 3000 str.w r3, [r9] - // CGU_BASE_USB0_CLK is used for USB0 HS - // CGU_BASE_M0_CLK is used - /* Switch off USB1 clock */ - CGU_BASE_USB1_CLK = CGU_BASE_USB1_CLK_PD; - a96: f8c8 3000 str.w r3, [r8] - // CGU_BASE_M4_CLK is used - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - a9a: f8ce 3000 str.w r3, [lr] - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - a9e: 600b str r3, [r1, #0] - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - aa0: 603b str r3, [r7, #0] - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - aa2: 9904 ldr r1, [sp, #16] - // CGU_BASE_APB1_CLK is used for I2C0 - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - aa4: 9f05 ldr r7, [sp, #20] - CGU_BASE_SPIFI_CLK = CGU_BASE_SPIFI_CLK_PD; - /* Switch off SPI clock */ - CGU_BASE_SPI_CLK = CGU_BASE_SPI_CLK_PD; - /* Switch off PHY RX & TX clock */ - CGU_BASE_PHY_RX_CLK = CGU_BASE_PHY_RX_CLK_PD; - CGU_BASE_PHY_TX_CLK = CGU_BASE_PHY_TX_CLK_PD; - aa6: 600b str r3, [r1, #0] - // CGU_BASE_APB1_CLK is used for I2C0 - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - aa8: 603b str r3, [r7, #0] - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - aaa: 9906 ldr r1, [sp, #24] - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - aac: 9f07 ldr r7, [sp, #28] - // CGU_BASE_APB3_CLK is used for I2C1 - /* Switch off LCD clock */ - CGU_BASE_LCD_CLK = CGU_BASE_LCD_CLK_PD; - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - aae: 600b str r3, [r1, #0] - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - ab0: 603b str r3, [r7, #0] - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - ab2: 9908 ldr r1, [sp, #32] - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - ab4: 9f09 ldr r7, [sp, #36] ; 0x24 - // CGU_BASE_ADCHS_CLK is used - /* Switch off SDIO clock */ - CGU_BASE_SDIO_CLK = CGU_BASE_SDIO_CLK_PD; - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - ab6: 600b str r3, [r1, #0] - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - ab8: 603b str r3, [r7, #0] - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - aba: 990a ldr r1, [sp, #40] ; 0x28 - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - abc: 9f0b ldr r7, [sp, #44] ; 0x2c - CGU_BASE_SSP0_CLK = CGU_BASE_SSP0_CLK_PD; - /* Switch off SSP1 clock */ - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - abe: 600b str r3, [r1, #0] - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - ac0: 603b str r3, [r7, #0] - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - ac2: 990c ldr r1, [sp, #48] ; 0x30 - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - ac4: 9f0d ldr r7, [sp, #52] ; 0x34 - CGU_BASE_SSP1_CLK = CGU_BASE_SSP1_CLK_PD; - /* Switch off UART0 to 3 clock */ - CGU_BASE_UART0_CLK = CGU_BASE_UART0_CLK_PD; - CGU_BASE_UART1_CLK = CGU_BASE_UART1_CLK_PD; - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - ac6: 600b str r3, [r1, #0] - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - ac8: 603b str r3, [r7, #0] - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - aca: 990e ldr r1, [sp, #56] ; 0x38 - CGU_OUTCLK_22_CTRL = 1; - acc: 9f0f ldr r7, [sp, #60] ; 0x3c - CGU_BASE_UART2_CLK = CGU_BASE_UART2_CLK_PD; - CGU_BASE_UART3_CLK = CGU_BASE_UART3_CLK_PD; - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - ace: 600b str r3, [r1, #0] - CGU_OUTCLK_22_CTRL = 1; - ad0: 603b str r3, [r7, #0] - CGU_OUTCLK_23_CTRL = 1; - ad2: 9910 ldr r1, [sp, #64] ; 0x40 - CGU_OUTCLK_24_CTRL = 1; - ad4: 9f11 ldr r7, [sp, #68] ; 0x44 - /* Switch off OUT clocks */ - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - ad6: 600b str r3, [r1, #0] - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - CGU_BASE_CGU_OUT1_CLK = CGU_BASE_CGU_OUT1_CLK_PD; - /* Switch off IDIV C,D,E disabled */ - CGU_IDIVC_CTRL = CGU_IDIVC_CTRL_PD; - ad8: 2650 movs r6, #80 ; 0x50 - CGU_IDIVD_CTRL = CGU_IDIVD_CTRL_PD; - ada: 2554 movs r5, #84 ; 0x54 - CGU_IDIVE_CTRL = CGU_IDIVE_CTRL_PD; - adc: 2058 movs r0, #88 ; 0x58 - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - CGU_BASE_CGU_OUT1_CLK = CGU_BASE_CGU_OUT1_CLK_PD; - ade: f04f 0bc8 mov.w fp, #200 ; 0xc8 - CGU_BASE_OUT_CLK = CGU_BASE_OUT_CLK_PD; - /* Reserved/Undocumented clocks power down */ - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - ae2: 603b str r3, [r7, #0] - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - ae4: 9912 ldr r1, [sp, #72] ; 0x48 - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - ae6: 9f13 ldr r7, [sp, #76] ; 0x4c - CGU_OUTCLK_21_CTRL = 1; - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - ae8: 600b str r3, [r1, #0] - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - CGU_BASE_CGU_OUT1_CLK = CGU_BASE_CGU_OUT1_CLK_PD; - aea: f2c4 0b05 movt fp, #16389 ; 0x4005 - /* Switch off IDIV C,D,E disabled */ - CGU_IDIVC_CTRL = CGU_IDIVC_CTRL_PD; - aee: f2c4 0605 movt r6, #16389 ; 0x4005 - CGU_IDIVD_CTRL = CGU_IDIVD_CTRL_PD; - af2: f2c4 0505 movt r5, #16389 ; 0x4005 - CGU_IDIVE_CTRL = CGU_IDIVE_CTRL_PD; - af6: f2c4 0005 movt r0, #16389 ; 0x4005 -/* - // Power down M4 branches, but not BUS, GPIO, CREG and M0 & M4 CORE clock -*/ - //CCU1_CLK_M4_BUS_CFG &= ~(1); - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - afa: f241 4208 movw r2, #5128 ; 0x1408 - afe: f2c4 0205 movt r2, #16389 ; 0x4005 - CGU_OUTCLK_22_CTRL = 1; - CGU_OUTCLK_23_CTRL = 1; - CGU_OUTCLK_24_CTRL = 1; - /* Switch off AUDIO clock */ - CGU_BASE_APLL_CLK = CGU_BASE_APLL_CLK_PD; - CGU_BASE_CGU_OUT0_CLK = CGU_BASE_CGU_OUT0_CLK_PD; - b02: 603b str r3, [r7, #0] - CGU_BASE_CGU_OUT1_CLK = CGU_BASE_CGU_OUT1_CLK_PD; - b04: f8cb 3000 str.w r3, [fp] - /* Switch off IDIV C,D,E disabled */ - CGU_IDIVC_CTRL = CGU_IDIVC_CTRL_PD; - b08: 6033 str r3, [r6, #0] - CGU_IDIVD_CTRL = CGU_IDIVD_CTRL_PD; - b0a: 602b str r3, [r5, #0] - CGU_IDIVE_CTRL = CGU_IDIVE_CTRL_PD; - b0c: 6003 str r3, [r0, #0] -/* - // Power down M4 branches, but not BUS, GPIO, CREG and M0 & M4 CORE clock -*/ - //CCU1_CLK_M4_BUS_CFG &= ~(1); - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - b0e: 6810 ldr r0, [r2, #0] - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - b10: f241 4318 movw r3, #5144 ; 0x1418 - b14: f2c4 0305 movt r3, #16389 ; 0x4005 - CGU_IDIVE_CTRL = CGU_IDIVE_CTRL_PD; -/* - // Power down M4 branches, but not BUS, GPIO, CREG and M0 & M4 CORE clock -*/ - //CCU1_CLK_M4_BUS_CFG &= ~(1); - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - b18: f020 0101 bic.w r1, r0, #1 - b1c: 6011 str r1, [r2, #0] - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - b1e: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_ETHERNET_CFG &= ~(1); - b20: f44f 52a1 mov.w r2, #5152 ; 0x1420 - b24: f2c4 0205 movt r2, #16389 ; 0x4005 - // Power down M4 branches, but not BUS, GPIO, CREG and M0 & M4 CORE clock -*/ - //CCU1_CLK_M4_BUS_CFG &= ~(1); - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - b28: f020 0101 bic.w r1, r0, #1 - b2c: 6019 str r1, [r3, #0] - CCU1_CLK_M4_ETHERNET_CFG &= ~(1); - b2e: 6810 ldr r0, [r2, #0] - //CCU1_CLK_M4_USB0_CFG &= ~(1); - CCU1_CLK_M4_EMC_CFG &= ~(1); - b30: f241 4330 movw r3, #5168 ; 0x1430 - b34: f2c4 0305 movt r3, #16389 ; 0x4005 -*/ - //CCU1_CLK_M4_BUS_CFG &= ~(1); - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - CCU1_CLK_M4_ETHERNET_CFG &= ~(1); - b38: f020 0101 bic.w r1, r0, #1 - b3c: 6011 str r1, [r2, #0] - //CCU1_CLK_M4_USB0_CFG &= ~(1); - CCU1_CLK_M4_EMC_CFG &= ~(1); - b3e: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_SDIO_CFG &= ~(1); - b40: f241 4238 movw r2, #5176 ; 0x1438 - b44: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_SPIFI_CFG &= ~(1); - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - CCU1_CLK_M4_ETHERNET_CFG &= ~(1); - //CCU1_CLK_M4_USB0_CFG &= ~(1); - CCU1_CLK_M4_EMC_CFG &= ~(1); - b48: f020 0101 bic.w r1, r0, #1 - b4c: 6019 str r1, [r3, #0] - CCU1_CLK_M4_SDIO_CFG &= ~(1); - b4e: 6810 ldr r0, [r2, #0] - //CCU1_CLK_M4_DMA_CFG &= ~(1); - //CCU1_CLK_M4_M4CORE_CFG &= ~(1); - CCU1_CLK_M4_SCT_CFG &= ~(1); - b50: f241 4368 movw r3, #5224 ; 0x1468 - b54: f2c4 0305 movt r3, #16389 ; 0x4005 - //CCU1_CLK_M4_GPIO_CFG &= ~(1); - CCU1_CLK_M4_LCD_CFG &= ~(1); - CCU1_CLK_M4_ETHERNET_CFG &= ~(1); - //CCU1_CLK_M4_USB0_CFG &= ~(1); - CCU1_CLK_M4_EMC_CFG &= ~(1); - CCU1_CLK_M4_SDIO_CFG &= ~(1); - b58: f020 0101 bic.w r1, r0, #1 - b5c: 6011 str r1, [r2, #0] - //CCU1_CLK_M4_DMA_CFG &= ~(1); - //CCU1_CLK_M4_M4CORE_CFG &= ~(1); - CCU1_CLK_M4_SCT_CFG &= ~(1); - b5e: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_USB1_CFG &= ~(1); - b60: f241 4270 movw r2, #5232 ; 0x1470 - b64: f2c4 0205 movt r2, #16389 ; 0x4005 - //CCU1_CLK_M4_USB0_CFG &= ~(1); - CCU1_CLK_M4_EMC_CFG &= ~(1); - CCU1_CLK_M4_SDIO_CFG &= ~(1); - //CCU1_CLK_M4_DMA_CFG &= ~(1); - //CCU1_CLK_M4_M4CORE_CFG &= ~(1); - CCU1_CLK_M4_SCT_CFG &= ~(1); - b68: f020 0101 bic.w r1, r0, #1 - b6c: 6019 str r1, [r3, #0] - CCU1_CLK_M4_USB1_CFG &= ~(1); - b6e: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - b70: f241 4378 movw r3, #5240 ; 0x1478 - b74: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_EMC_CFG &= ~(1); - CCU1_CLK_M4_SDIO_CFG &= ~(1); - //CCU1_CLK_M4_DMA_CFG &= ~(1); - //CCU1_CLK_M4_M4CORE_CFG &= ~(1); - CCU1_CLK_M4_SCT_CFG &= ~(1); - CCU1_CLK_M4_USB1_CFG &= ~(1); - b78: f020 0101 bic.w r1, r0, #1 - b7c: 6011 str r1, [r2, #0] - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - b7e: 6818 ldr r0, [r3, #0] - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - b80: f44f 52a8 mov.w r2, #5376 ; 0x1500 - b84: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_SDIO_CFG &= ~(1); - //CCU1_CLK_M4_DMA_CFG &= ~(1); - //CCU1_CLK_M4_M4CORE_CFG &= ~(1); - CCU1_CLK_M4_SCT_CFG &= ~(1); - CCU1_CLK_M4_USB1_CFG &= ~(1); - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - b88: f020 0101 bic.w r1, r0, #1 - b8c: 6019 str r1, [r3, #0] - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - b8e: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_USART0_CFG &= ~(1); - b90: f241 5308 movw r3, #5384 ; 0x1508 - b94: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_SCT_CFG &= ~(1); - CCU1_CLK_M4_USB1_CFG &= ~(1); - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - b98: f020 0101 bic.w r1, r0, #1 - b9c: 6011 str r1, [r2, #0] - CCU1_CLK_M4_USART0_CFG &= ~(1); - b9e: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_UART1_CFG &= ~(1); - ba0: f241 5210 movw r2, #5392 ; 0x1510 - ba4: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_USB1_CFG &= ~(1); - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - CCU1_CLK_M4_USART0_CFG &= ~(1); - ba8: f020 0101 bic.w r1, r0, #1 - bac: 6019 str r1, [r3, #0] - CCU1_CLK_M4_UART1_CFG &= ~(1); - bae: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_SSP0_CFG &= ~(1); - bb0: f241 5318 movw r3, #5400 ; 0x1518 - bb4: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_EMCDIV_CFG &= ~(1); - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - CCU1_CLK_M4_USART0_CFG &= ~(1); - CCU1_CLK_M4_UART1_CFG &= ~(1); - bb8: f020 0101 bic.w r1, r0, #1 - bbc: 6011 str r1, [r2, #0] - CCU1_CLK_M4_SSP0_CFG &= ~(1); - bbe: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_SSP1_CFG &= ~(1); - bc0: f241 6228 movw r2, #5672 ; 0x1628 - bc4: f2c4 0205 movt r2, #16389 ; 0x4005 - //CCU1_CLK_M4_M0APP_CFG &= ~(1); - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - CCU1_CLK_M4_USART0_CFG &= ~(1); - CCU1_CLK_M4_UART1_CFG &= ~(1); - CCU1_CLK_M4_SSP0_CFG &= ~(1); - bc8: f020 0101 bic.w r1, r0, #1 - bcc: 6019 str r1, [r3, #0] - CCU1_CLK_M4_SSP1_CFG &= ~(1); - bce: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - bd0: f44f 53a9 mov.w r3, #5408 ; 0x1520 - bd4: f2c4 0305 movt r3, #16389 ; 0x4005 - //CCU1_CLK_M4_VADC_CFG &= ~(1); - CCU1_CLK_M4_WWDT_CFG &= ~(1); - CCU1_CLK_M4_USART0_CFG &= ~(1); - CCU1_CLK_M4_UART1_CFG &= ~(1); - CCU1_CLK_M4_SSP0_CFG &= ~(1); - CCU1_CLK_M4_SSP1_CFG &= ~(1); - bd8: f020 0101 bic.w r1, r0, #1 - bdc: 6011 str r1, [r2, #0] - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - bde: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - be0: f241 5228 movw r2, #5416 ; 0x1528 - be4: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_WWDT_CFG &= ~(1); - CCU1_CLK_M4_USART0_CFG &= ~(1); - CCU1_CLK_M4_UART1_CFG &= ~(1); - CCU1_CLK_M4_SSP0_CFG &= ~(1); - CCU1_CLK_M4_SSP1_CFG &= ~(1); - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - be8: f020 0101 bic.w r1, r0, #1 - bec: 6019 str r1, [r3, #0] - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - bee: 6810 ldr r0, [r2, #0] - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - bf0: f44f 53b0 mov.w r3, #5632 ; 0x1600 - bf4: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_USART0_CFG &= ~(1); - CCU1_CLK_M4_UART1_CFG &= ~(1); - CCU1_CLK_M4_SSP0_CFG &= ~(1); - CCU1_CLK_M4_SSP1_CFG &= ~(1); - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - bf8: f020 0101 bic.w r1, r0, #1 - bfc: 6011 str r1, [r2, #0] - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - bfe: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_USART2_CFG &= ~(1); - c00: f241 6208 movw r2, #5640 ; 0x1608 - c04: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_SSP1_CFG &= ~(1); - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - c08: f020 0101 bic.w r1, r0, #1 - c0c: 6019 str r1, [r3, #0] - CCU1_CLK_M4_USART2_CFG &= ~(1); - c0e: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_USART3_CFG &= ~(1); - c10: f241 6310 movw r3, #5648 ; 0x1610 - c14: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_TIMER0_CFG &= ~(1); - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - CCU1_CLK_M4_USART2_CFG &= ~(1); - c18: f020 0101 bic.w r1, r0, #1 - c1c: 6011 str r1, [r2, #0] - CCU1_CLK_M4_USART3_CFG &= ~(1); - c1e: 6818 ldr r0, [r3, #0] - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - c20: f241 6218 movw r2, #5656 ; 0x1618 - c24: f2c4 0205 movt r2, #16389 ; 0x4005 - CCU1_CLK_M4_TIMER1_CFG &= ~(1); - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - CCU1_CLK_M4_USART2_CFG &= ~(1); - CCU1_CLK_M4_USART3_CFG &= ~(1); - c28: f020 0101 bic.w r1, r0, #1 - c2c: 6019 str r1, [r3, #0] - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - c2e: 6810 ldr r0, [r2, #0] - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - c30: f44f 53b1 mov.w r3, #5664 ; 0x1620 - c34: f2c4 0305 movt r3, #16389 ; 0x4005 - //CCU1_CLK_M4_SCU_CFG &= ~(1); - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - CCU1_CLK_M4_USART2_CFG &= ~(1); - CCU1_CLK_M4_USART3_CFG &= ~(1); - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - c38: f020 0101 bic.w r1, r0, #1 - c3c: 6011 str r1, [r2, #0] - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - c3e: 6818 ldr r0, [r3, #0] - - CCU1_CLK_M4_QEI_CFG &= ~(1); - c40: f241 6230 movw r2, #5680 ; 0x1630 - c44: f2c4 0205 movt r2, #16389 ; 0x4005 - //CCU1_CLK_M4_CREG_CFG &= ~(1); - CCU1_CLK_M4_RITIMER_CFG &= ~(1); - CCU1_CLK_M4_USART2_CFG &= ~(1); - CCU1_CLK_M4_USART3_CFG &= ~(1); - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - c48: f020 0101 bic.w r1, r0, #1 - c4c: 6019 str r1, [r3, #0] - - CCU1_CLK_M4_QEI_CFG &= ~(1); - c4e: 6810 ldr r0, [r2, #0] - CCU1_CLK_PERIPH_SGPIO_CFG &= ~(1); - - /* ******************************************** */ - /* ADCHS Configuration (GP_CLKIN clock source) */ - /* ******************************************** */ - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_conf[0].airspy_m4_conf); - c50: 6821 ldr r1, [r4, #0] - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - - CCU1_CLK_M4_QEI_CFG &= ~(1); - - CCU1_CLK_PERIPH_SGPIO_CFG &= ~(1); - c52: f241 7318 movw r3, #5912 ; 0x1718 - c56: f2c4 0305 movt r3, #16389 ; 0x4005 - CCU1_CLK_M4_USART2_CFG &= ~(1); - CCU1_CLK_M4_USART3_CFG &= ~(1); - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - - CCU1_CLK_M4_QEI_CFG &= ~(1); - c5a: f020 0001 bic.w r0, r0, #1 - c5e: 6010 str r0, [r2, #0] - - CCU1_CLK_PERIPH_SGPIO_CFG &= ~(1); - c60: 681a ldr r2, [r3, #0] - - /* ******************************************** */ - /* ADCHS Configuration (GP_CLKIN clock source) */ - /* ******************************************** */ - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_conf[0].airspy_m4_conf); - c62: 6f88 ldr r0, [r1, #120] ; 0x78 - CCU1_CLK_M4_TIMER2_CFG &= ~(1); - CCU1_CLK_M4_TIMER3_CFG &= ~(1); - - CCU1_CLK_M4_QEI_CFG &= ~(1); - - CCU1_CLK_PERIPH_SGPIO_CFG &= ~(1); - c64: f022 0101 bic.w r1, r2, #1 - c68: 6019 str r1, [r3, #0] - - /* ******************************************** */ - /* ADCHS Configuration (GP_CLKIN clock source) */ - /* ******************************************** */ - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_conf[0].airspy_m4_conf); -} - c6a: b015 add sp, #84 ; 0x54 - c6c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - CCU1_CLK_PERIPH_SGPIO_CFG &= ~(1); - - /* ******************************************** */ - /* ADCHS Configuration (GP_CLKIN clock source) */ - /* ******************************************** */ - sys_clock_samplerate(&airspy_conf->airspy_m0_m4_conf[0].airspy_m4_conf); - c70: f7ff bd64 b.w 73c - } - }else - { - /* SI5351C not detected continue init using AirSpy MINI configuration */ - addr = (uint32_t)&airspy_mini_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - c74: 4840 ldr r0, [pc, #256] ; (d78 ) - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - c76: 428b cmp r3, r1 - } - }else - { - /* SI5351C not detected continue init using AirSpy MINI configuration */ - addr = (uint32_t)&airspy_mini_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - c78: f040 4600 orr.w r6, r0, #2147483648 ; 0x80000000 - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - c7c: 4618 mov r0, r3 - c7e: d24e bcs.n d1e -/* -Configure PLL1 to min speed (48MHz) => see cpu_clock_pll1_low_speed() . -Configure PLL0USB @480MHz for USB0. -Note: PLL1 clock is used by M4/M0 core, Peripheral, APB1, APB3. -*/ -void sys_clock_init(void) - c80: 1a1a subs r2, r3, r0 - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - { - *dest++ = *src++; - c82: 5d95 ldrb r5, [r2, r6] - c84: f803 5b01 strb.w r5, [r3], #1 - /* SI5351C not detected continue init using AirSpy MINI configuration */ - addr = (uint32_t)&airspy_mini_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - c88: 6825 ldr r5, [r4, #0] - c8a: 19e9 adds r1, r5, r7 - c8c: 428b cmp r3, r1 - c8e: d3f7 bcc.n c80 - c90: e612 b.n 8b8 - if((airspy_conf->conf_hw.hardware_type & HW_FEATURE_SI5351C) == HW_FEATURE_SI5351C) - { - /* Programming the Si5351 via I2C - http://community.silabs.com/t5/Silicon-Labs-Knowledge-Base/Programming-the-Si5351-via-I2C/ta-p/112251 - */ - si5351c_disable_all_outputs(); - c92: f000 f9af bl ff4 - si5351c_init_fanout(); - c96: f000 fa0f bl 10b8 - si5351c_power_down_all_clocks(); - c9a: f000 f9f9 bl 1090 - si5351c_init_xtal(); - c9e: f000 fa19 bl 10d4 - si5351c_read[0] = si5351c_read_single(0); - ca2: 2000 movs r0, #0 - ca4: f000 f964 bl f70 - ca8: 4e34 ldr r6, [pc, #208] ; (d7c ) - caa: 7030 strb r0, [r6, #0] - - /* Configure and enable SI5351C clocks */ - si5351c_read[1] = (si5351c_read_single(0) & SI5351C_REG0_CLKIN_LOS); - cac: 2000 movs r0, #0 - cae: f000 f95f bl f70 - cb2: f000 0510 and.w r5, r0, #16 - cb6: b2ea uxtb r2, r5 - cb8: 7072 strb r2, [r6, #1] - - /* CLKIN Loss Of Signal (LOS) ? */ - if(si5351c_read[1] == SI5351C_REG0_CLKIN_LOS) - cba: bb92 cbnz r2, d22 - { - airspy_conf->r820t_conf_rw.xtal_freq = sys_calib_r820t(airspy_conf->r820t_conf_rw.xtal_freq, airspy_calib.correction_ppb); - } - }else - { - si5351c_airspy_config(&airspy_conf->si5351c_config[AIRSPY_SI5351C_CONFIG_CLKIN]); - cbc: 6820 ldr r0, [r4, #0] - cbe: f8d0 0088 ldr.w r0, [r0, #136] ; 0x88 - cc2: 30b4 adds r0, #180 ; 0xb4 - cc4: f000 f926 bl f14 - } - - si5351c_read[2] = si5351c_read_single(0); - cc8: 2000 movs r0, #0 - cca: f000 f951 bl f70 - - si5351c_init_pll_soft_reset(); - si5351c_enable_clock_outputs(); - cce: f242 7710 movw r7, #10000 ; 0x2710 - }else - { - si5351c_airspy_config(&airspy_conf->si5351c_config[AIRSPY_SI5351C_CONFIG_CLKIN]); - } - - si5351c_read[2] = si5351c_read_single(0); - cd2: 70b0 strb r0, [r6, #2] - - si5351c_init_pll_soft_reset(); - cd4: f000 fa0c bl 10f0 - si5351c_enable_clock_outputs(); - cd8: f000 fa18 bl 110c - cdc: 463a mov r2, r7 -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - __asm__("nop"); - cde: bf00 nop - ce0: 1e55 subs r5, r2, #1 - ce2: bf00 nop - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - ce4: 1e6a subs r2, r5, #1 - ce6: d1fa bne.n cde - ce8: 4610 mov r0, r2 - si5351c_init_pll_soft_reset(); - si5351c_enable_clock_outputs(); - - /* Wait at least 300us after SI5351C Clock Enable */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - si5351c_read[3] = si5351c_read_single(0); - cea: f000 f941 bl f70 - cee: 6825 ldr r5, [r4, #0] - cf0: 70f0 strb r0, [r6, #3] - cf2: e60f b.n 914 - }else - { - /* Check calibration is valid / enabled */ - if(airspy_calib.header == AIRSPY_FLASH_CALIB_HEADER) - { - airspy_conf->r820t_conf_rw.xtal_freq = sys_calib_r820t(airspy_conf->r820t_conf_rw.xtal_freq, airspy_calib.correction_ppb); - cf4: 6cae ldr r6, [r5, #72] ; 0x48 - -/* Return corrected xtal_freq */ -uint32_t sys_calib_r820t(uint32_t xtal_freq, int32_t correction_ppb) -{ - const int invppb = 1000000000; - xtal_freq += ((int64_t)xtal_freq * (int64_t)correction_ppb + invppb / 2) / invppb; - cf6: 4640 mov r0, r8 - cf8: 17c1 asrs r1, r0, #31 - cfa: fba6 2308 umull r2, r3, r6, r8 - cfe: fb06 3301 mla r3, r6, r1, r3 - d02: a119 add r1, pc, #100 ; (adr r1, d68 ) - d04: e9d1 0100 ldrd r0, r1, [r1] - d08: 1880 adds r0, r0, r2 - d0a: eb41 0103 adc.w r1, r1, r3 - d0e: a318 add r3, pc, #96 ; (adr r3, d70 ) - d10: e9d3 2300 ldrd r2, r3, [r3] - d14: f000 fcb0 bl 1678 <__aeabi_ldivmod> - d18: 1837 adds r7, r6, r0 - }else - { - /* Check calibration is valid / enabled */ - if(airspy_calib.header == AIRSPY_FLASH_CALIB_HEADER) - { - airspy_conf->r820t_conf_rw.xtal_freq = sys_calib_r820t(airspy_conf->r820t_conf_rw.xtal_freq, airspy_calib.correction_ppb); - d1a: 64af str r7, [r5, #72] ; 0x48 - d1c: e5fa b.n 914 - /* SI5351C not detected continue init using AirSpy MINI configuration */ - addr = (uint32_t)&airspy_mini_conf; - addr = (addr | ROMFLASH_BASE_ADDR); /* Fix with Addr from ROMFLASH */ - src = (unsigned char *)addr; - /* Copy the configuration from Flash to SRAM */ - for (dest = (unsigned char *)airspy_conf; (uint32_t)dest < (((uint32_t)airspy_conf) + AIRSPY_CONF_MAX_DATA_SIZE); ) - d1e: 461d mov r5, r3 - d20: e5ca b.n 8b8 - - /* CLKIN Loss Of Signal (LOS) ? */ - if(si5351c_read[1] == SI5351C_REG0_CLKIN_LOS) - { - /* Apply SI5351C configuration */ - si5351c_airspy_config(&airspy_conf->si5351c_config[AIRSPY_SI5351C_CONFIG_XTAL]); - d22: 6821 ldr r1, [r4, #0] - d24: f8d1 0088 ldr.w r0, [r1, #136] ; 0x88 - d28: f000 f8f4 bl f14 - - /* Check calibration is valid / enabled */ - if(airspy_calib.header == AIRSPY_FLASH_CALIB_HEADER) - d2c: 2301 movs r3, #1 - d2e: f6cc 231b movt r3, #51739 ; 0xca1b - d32: 429f cmp r7, r3 - d34: d1c8 bne.n cc8 - { - airspy_conf->r820t_conf_rw.xtal_freq = sys_calib_r820t(airspy_conf->r820t_conf_rw.xtal_freq, airspy_calib.correction_ppb); - d36: 4f12 ldr r7, [pc, #72] ; (d80 ) - d38: 683f ldr r7, [r7, #0] - d3a: 6cbd ldr r5, [r7, #72] ; 0x48 - -/* Return corrected xtal_freq */ -uint32_t sys_calib_r820t(uint32_t xtal_freq, int32_t correction_ppb) -{ - const int invppb = 1000000000; - xtal_freq += ((int64_t)xtal_freq * (int64_t)correction_ppb + invppb / 2) / invppb; - d3c: 4642 mov r2, r8 - d3e: 17d0 asrs r0, r2, #31 - d40: fba5 2308 umull r2, r3, r5, r8 - d44: fb05 3300 mla r3, r5, r0, r3 - d48: a107 add r1, pc, #28 ; (adr r1, d68 ) - d4a: e9d1 0100 ldrd r0, r1, [r1] - d4e: 1880 adds r0, r0, r2 - d50: eb41 0103 adc.w r1, r1, r3 - d54: a306 add r3, pc, #24 ; (adr r3, d70 ) - d56: e9d3 2300 ldrd r2, r3, [r3] - d5a: f000 fc8d bl 1678 <__aeabi_ldivmod> - d5e: 1829 adds r1, r5, r0 - si5351c_airspy_config(&airspy_conf->si5351c_config[AIRSPY_SI5351C_CONFIG_XTAL]); - - /* Check calibration is valid / enabled */ - if(airspy_calib.header == AIRSPY_FLASH_CALIB_HEADER) - { - airspy_conf->r820t_conf_rw.xtal_freq = sys_calib_r820t(airspy_conf->r820t_conf_rw.xtal_freq, airspy_calib.correction_ppb); - d60: 64b9 str r1, [r7, #72] ; 0x48 - d62: e7b1 b.n cc8 - d64: f3af 8000 nop.w - d68: 1dcd6500 .word 0x1dcd6500 - d6c: 00000000 .word 0x00000000 - d70: 3b9aca00 .word 0x3b9aca00 - d74: 00000000 .word 0x00000000 - d78: 00005348 .word 0x00005348 - d7c: 10080084 .word 0x10080084 - d80: 10080018 .word 0x10080018 - d84: f3af 8000 nop.w - -00000d88 : - /* Configure PLL1 to Intermediate Clock final freq / 2 (because DIRECT=1) */ - /* Integer mode: - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - d88: 2144 movs r1, #68 ; 0x44 - d8a: f2c4 0105 movt r1, #16389 ; 0x4005 - Configure PLL1 to high speed with CGU_SRC_GP_CLKIN. -(PLL1 High Speed compliant with UM10503 Rev. 1.8 — 28 January 2014 Fig 30. BASE_M4_CLK ramp-up procedure) - Connect PLL1 to M4/M0 core, Peripheral, APB1, APB3. -*/ -void cpu_clock_pll1_high_speed(const airspy_pll1_hs_t* const pt_airspy_pll1_hs_conf) -{ - d8e: b430 push {r4, r5} - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - d90: 6802 ldr r2, [r0, #0] - /* Configure PLL1 to Intermediate Clock final freq / 2 (because DIRECT=1) */ - /* Integer mode: - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - d92: 680d ldr r5, [r1, #0] - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - d94: 6844 ldr r4, [r0, #4] - | CGU_PLL1_CTRL_MSEL(pll1_msel) - d96: 6880 ldr r0, [r0, #8] - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - d98: f64c 433c movw r3, #52284 ; 0xcc3c - d9c: f2ce 0300 movt r3, #57344 ; 0xe000 - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - da0: 0212 lsls r2, r2, #8 - FCLKOUT = M*(FCLKIN/N) - FCCO = 2*P*FCLKOUT = 2*P*M*(FCLKIN/N) - */ - pll_reg = CGU_PLL1_CTRL; - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - da2: 402b ands r3, r5 - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - da4: ea42 3204 orr.w r2, r2, r4, lsl #12 - CGU_PLL1_CTRL_BYPASS | /* BYPASS */ - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - da8: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - | CGU_PLL1_CTRL_MSEL(pll1_msel) - dac: ea42 4000 orr.w r0, r2, r0, lsl #16 - CGU_PLL1_CTRL_BYPASS | /* BYPASS */ - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - - /* Set PLL1 to High Speed/2 */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - db0: f043 0340 orr.w r3, r3, #64 ; 0x40 - db4: 4303 orrs r3, r0 - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL; - CGU_PLL1_CTRL = pll_reg; - - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - db6: 2240 movs r2, #64 ; 0x40 - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL; - CGU_PLL1_CTRL = pll_reg; - db8: 600b str r3, [r1, #0] - - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - dba: f2c4 0205 movt r2, #16389 ; 0x4005 - dbe: 6811 ldr r1, [r2, #0] - dc0: 07cb lsls r3, r1, #31 - dc2: d5fc bpl.n dbe - dc4: f242 7210 movw r2, #10000 ; 0x2710 -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - __asm__("nop"); - dc8: bf00 nop - dca: 1e53 subs r3, r2, #1 - dcc: bf00 nop - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - dce: 1e5a subs r2, r3, #1 - dd0: d1fa bne.n dc8 - */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - - /* Configure PLL1 High Speed (DIRECT=1) */ - /* Direct mode: FCLKOUT = FCCO = M*(FCLKIN/N) */ - pll_reg = CGU_PLL1_CTRL; - dd2: 2144 movs r1, #68 ; 0x44 - dd4: f2c4 0105 movt r1, #16389 ; 0x4005 - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - dd8: f64c 433c movw r3, #52284 ; 0xcc3c - */ - delay(WAIT_CPU_CLOCK_INIT_DELAY); - - /* Configure PLL1 High Speed (DIRECT=1) */ - /* Direct mode: FCLKOUT = FCCO = M*(FCLKIN/N) */ - pll_reg = CGU_PLL1_CTRL; - ddc: 680a ldr r2, [r1, #0] - /* Clear PLL1 bits */ - pll_reg &= ~( CGU_PLL1_CTRL_CLK_SEL_MASK | CGU_PLL1_CTRL_PD | CGU_PLL1_CTRL_FBSEL | /* CLK SEL, PowerDown , FBSEL */ - dde: f2ce 0300 movt r3, #57344 ; 0xe000 - de2: 4013 ands r3, r2 - CGU_PLL1_CTRL_BYPASS | /* BYPASS */ - CGU_PLL1_CTRL_DIRECT | /* DIRECT */ - CGU_PLL1_CTRL_PSEL_MASK | CGU_PLL1_CTRL_MSEL_MASK | CGU_PLL1_CTRL_NSEL_MASK ); /* PSEL, MSEL, NSEL- divider ratios */ - /* Set PLL1 to HighSpeed */ - pll_reg |= CGU_PLL1_CTRL_CLK_SEL(CGU_SRC_GP_CLKIN) - de4: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 - de8: f043 02c0 orr.w r2, r3, #192 ; 0xc0 - dec: 4310 orrs r0, r2 - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL - | CGU_PLL1_CTRL_DIRECT; - CGU_PLL1_CTRL = pll_reg; - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - dee: 2240 movs r2, #64 ; 0x40 - | CGU_PLL1_CTRL_PSEL(pll1_psel) - | CGU_PLL1_CTRL_NSEL(pll1_nsel) - | CGU_PLL1_CTRL_MSEL(pll1_msel) - | CGU_PLL1_CTRL_FBSEL - | CGU_PLL1_CTRL_DIRECT; - CGU_PLL1_CTRL = pll_reg; - df0: 6008 str r0, [r1, #0] - /* wait until stable */ - while (!(CGU_PLL1_STAT & CGU_PLL1_STAT_LOCK)); - df2: f2c4 0205 movt r2, #16389 ; 0x4005 - df6: 6811 ldr r1, [r2, #0] - df8: 07c9 lsls r1, r1, #31 - dfa: d5fc bpl.n df6 -} - dfc: bc30 pop {r4, r5} - dfe: 4770 bx lr - -00000e00 : - -void led_on(void) -{ - gpio_set(PORT_EN_LED1, PIN_EN_LED1); - e00: f44f 40c0 mov.w r0, #24576 ; 0x6000 - e04: f2c4 000f movt r0, #16399 ; 0x400f - e08: f44f 5180 mov.w r1, #4096 ; 0x1000 - e0c: f000 b98c b.w 1128 - -00000e10 : -} - -void led_off(void) -{ - gpio_clear(PORT_EN_LED1, PIN_EN_LED1); - e10: f44f 40c0 mov.w r0, #24576 ; 0x6000 - e14: f2c4 000f movt r0, #16399 ; 0x400f - e18: f44f 5180 mov.w r1, #4096 ; 0x1000 - e1c: f000 b988 b.w 1130 - -00000e20 : - led_off(); -} - -void enable_r820t_power(void) -{ - gpio_set(PORT_EN_R820T, PIN_EN_R820T); - e20: f246 0004 movw r0, #24580 ; 0x6004 - e24: f2c4 000f movt r0, #16399 ; 0x400f - - led_off(); -} - -void enable_r820t_power(void) -{ - e28: b508 push {r3, lr} - gpio_set(PORT_EN_R820T, PIN_EN_R820T); - e2a: 2180 movs r1, #128 ; 0x80 - e2c: f000 f97c bl 1128 - e30: f248 60a0 movw r0, #34464 ; 0x86a0 - e34: f2c0 0001 movt r0, #1 -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - __asm__("nop"); - e38: bf00 nop - e3a: 1e43 subs r3, r0, #1 - e3c: bf00 nop - -void delay(uint32_t duration) -{ - uint32_t i; - - for (i = 0; i < duration; i++) - e3e: 1e58 subs r0, r3, #1 - e40: d1fa bne.n e38 -void enable_r820t_power(void) -{ - gpio_set(PORT_EN_R820T, PIN_EN_R820T); - /* Wait after PowerOn (stabilization of LDO & Internal Init of R820T) */ - delay(WAIT_R820T_POWER_ON_DELAY); -} - e42: bd08 pop {r3, pc} - -00000e44 : - gpio_set(PORT_EN_BIAST, PIN_EN_BIAST); -} - -void disable_biast_power(void) -{ - gpio_clear(PORT_EN_BIAST, PIN_EN_BIAST); - e44: f246 0004 movw r0, #24580 ; 0x6004 - e48: f2c4 000f movt r0, #16399 ; 0x400f - e4c: f44f 5100 mov.w r1, #8192 ; 0x2000 - e50: f000 b96e b.w 1130 - -00000e54 : -{ - gpio_clear(PORT_EN_LED1, PIN_EN_LED1); -} - -void pin_setup(void) -{ - e54: b5f8 push {r3, r4, r5, r6, r7, lr} - int i; - - /* Configure all GPIO as Input (safe state) */ - GPIO0_DIR = 0; - e56: f44f 4cc0 mov.w ip, #24576 ; 0x6000 - GPIO1_DIR = 0; - e5a: f246 0e04 movw lr, #24580 ; 0x6004 - GPIO2_DIR = 0; - e5e: f246 0708 movw r7, #24584 ; 0x6008 - GPIO3_DIR = 0; - e62: f246 060c movw r6, #24588 ; 0x600c - GPIO4_DIR = 0; - e66: f246 0410 movw r4, #24592 ; 0x6010 - GPIO5_DIR = 0; - e6a: f246 0014 movw r0, #24596 ; 0x6014 - GPIO6_DIR = 0; - e6e: f246 0118 movw r1, #24600 ; 0x6018 - GPIO7_DIR = 0; - e72: f246 021c movw r2, #24604 ; 0x601c -void pin_setup(void) -{ - int i; - - /* Configure all GPIO as Input (safe state) */ - GPIO0_DIR = 0; - e76: f2c4 0c0f movt ip, #16399 ; 0x400f - GPIO1_DIR = 0; - e7a: f2c4 0e0f movt lr, #16399 ; 0x400f - GPIO2_DIR = 0; - GPIO3_DIR = 0; - GPIO4_DIR = 0; - e7e: f2c4 040f movt r4, #16399 ; 0x400f - GPIO5_DIR = 0; - e82: f2c4 000f movt r0, #16399 ; 0x400f - GPIO6_DIR = 0; - e86: f2c4 010f movt r1, #16399 ; 0x400f - GPIO7_DIR = 0; - e8a: f2c4 020f movt r2, #16399 ; 0x400f - int i; - - /* Configure all GPIO as Input (safe state) */ - GPIO0_DIR = 0; - GPIO1_DIR = 0; - GPIO2_DIR = 0; - e8e: f2c4 070f movt r7, #16399 ; 0x400f - GPIO3_DIR = 0; - e92: f2c4 060f movt r6, #16399 ; 0x400f -void pin_setup(void) -{ - int i; - - /* Configure all GPIO as Input (safe state) */ - GPIO0_DIR = 0; - e96: 2300 movs r3, #0 - e98: 4d1d ldr r5, [pc, #116] ; (f10 ) - e9a: f8cc 3000 str.w r3, [ip] - GPIO1_DIR = 0; - e9e: f8ce 3000 str.w r3, [lr] - GPIO2_DIR = 0; - ea2: 603b str r3, [r7, #0] - GPIO3_DIR = 0; - ea4: 6033 str r3, [r6, #0] - GPIO4_DIR = 0; - ea6: 6023 str r3, [r4, #0] - GPIO5_DIR = 0; - ea8: 6003 str r3, [r0, #0] - GPIO6_DIR = 0; - eaa: 600b str r3, [r1, #0] - GPIO7_DIR = 0; - eac: 6013 str r3, [r2, #0] - - /* Pin configuration for all pins */ - for(i = 0; i < GPIO_CONF_NB; i++) - { - scu_pinmux(gpio_conf[i].group_pin, gpio_conf[i].scu_conf); - eae: e895 0003 ldmia.w r5, {r0, r1} - eb2: f000 f941 bl 1138 - eb6: 2408 movs r4, #8 -void led_off(void) -{ - gpio_clear(PORT_EN_LED1, PIN_EN_LED1); -} - -void pin_setup(void) - eb8: 1929 adds r1, r5, r4 - GPIO7_DIR = 0; - - /* Pin configuration for all pins */ - for(i = 0; i < GPIO_CONF_NB; i++) - { - scu_pinmux(gpio_conf[i].group_pin, gpio_conf[i].scu_conf); - eba: 5928 ldr r0, [r5, r4] - ebc: 6849 ldr r1, [r1, #4] - ebe: 3408 adds r4, #8 - ec0: f000 f93a bl 1138 -void led_off(void) -{ - gpio_clear(PORT_EN_LED1, PIN_EN_LED1); -} - -void pin_setup(void) - ec4: 192a adds r2, r5, r4 - GPIO7_DIR = 0; - - /* Pin configuration for all pins */ - for(i = 0; i < GPIO_CONF_NB; i++) - { - scu_pinmux(gpio_conf[i].group_pin, gpio_conf[i].scu_conf); - ec6: 5928 ldr r0, [r5, r4] - ec8: 6851 ldr r1, [r2, #4] - eca: 3408 adds r4, #8 - ecc: f000 f934 bl 1138 - GPIO5_DIR = 0; - GPIO6_DIR = 0; - GPIO7_DIR = 0; - - /* Pin configuration for all pins */ - for(i = 0; i < GPIO_CONF_NB; i++) - ed0: f5b4 6fa1 cmp.w r4, #1288 ; 0x508 - ed4: d1f0 bne.n eb8 - { - scu_pinmux(gpio_conf[i].group_pin, gpio_conf[i].scu_conf); - } - - /* GPIO1[7] on P1_14 as output. */ - GPIO1_DIR |= PIN_EN_R820T; - ed6: f246 0404 movw r4, #24580 ; 0x6004 - eda: f2c4 040f movt r4, #16399 ; 0x400f - ede: 6820 ldr r0, [r4, #0] - ee0: f040 0380 orr.w r3, r0, #128 ; 0x80 - ee4: 6023 str r3, [r4, #0] - enable_r820t_power(); - ee6: f7ff ff9b bl e20 - - /* GPIO1[13] on P2_13 as output. */ - GPIO1_DIR |= PIN_EN_BIAST; - eea: 6821 ldr r1, [r4, #0] - eec: f441 5200 orr.w r2, r1, #8192 ; 0x2000 - ef0: 6022 str r2, [r4, #0] - disable_biast_power(); - ef2: f7ff ffa7 bl e44 - - /* GPIO0[12] on P1_17 as output. */ - GPIO0_DIR |= PIN_EN_LED1; - ef6: f44f 40c0 mov.w r0, #24576 ; 0x6000 - efa: f2c4 000f movt r0, #16399 ; 0x400f - efe: 6803 ldr r3, [r0, #0] - f00: f443 5180 orr.w r1, r3, #4096 ; 0x1000 - f04: 6001 str r1, [r0, #0] - - led_off(); -} - f06: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - disable_biast_power(); - - /* GPIO0[12] on P1_17 as output. */ - GPIO0_DIR |= PIN_EN_LED1; - - led_off(); - f0a: f7ff bf81 b.w e10 - f0e: bf00 nop - f10: 00004b90 .word 0x00004b90 - -00000f14 : - -#define SI5351C_WRITE_CONF_STEP2_REG (149) -#define SI5351C_WRITE_CONF_STEP2_SIZE (22) /* 170 - 149 + 1 */ - -void si5351c_airspy_config(const si5351c_conf_t* const pt_si5351c_conf) -{ - f14: b570 push {r4, r5, r6, lr} - f16: 4606 mov r6, r0 - int i; - - /* Write Conf Step1 */ - i2c0_tx_start(); - f18: f000 f950 bl 11bc - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - f1c: 20c0 movs r0, #192 ; 0xc0 - f1e: f000 f971 bl 1204 - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP1_REG); - f22: 200f movs r0, #15 - f24: f000 f96e bl 1204 - for(i = SI5351C_WRITE_CONF_STEP1_REG; i < (SI5351C_WRITE_CONF_STEP1_REG+SI5351C_WRITE_CONF_STEP1_SIZE); i++) - f28: 240f movs r4, #15 - f2a: 1c65 adds r5, r4, #1 - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - f2c: 5d30 ldrb r0, [r6, r4] - f2e: f000 f969 bl 1204 - /* Write Conf Step1 */ - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP1_REG); - for(i = SI5351C_WRITE_CONF_STEP1_REG; i < (SI5351C_WRITE_CONF_STEP1_REG+SI5351C_WRITE_CONF_STEP1_SIZE); i++) - f32: 3402 adds r4, #2 - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - f34: 5d70 ldrb r0, [r6, r5] - f36: f000 f965 bl 1204 - /* Write Conf Step1 */ - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP1_REG); - for(i = SI5351C_WRITE_CONF_STEP1_REG; i < (SI5351C_WRITE_CONF_STEP1_REG+SI5351C_WRITE_CONF_STEP1_SIZE); i++) - f3a: 2c5d cmp r4, #93 ; 0x5d - f3c: d1f5 bne.n f2a - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - } - i2c0_stop(); - f3e: f000 f9c1 bl 12c4 - - /* Write Conf Step2 */ - i2c0_tx_start(); - f42: f000 f93b bl 11bc - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - f46: 20c0 movs r0, #192 ; 0xc0 - f48: f000 f95c bl 1204 - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP2_REG); - f4c: 2095 movs r0, #149 ; 0x95 - f4e: f000 f959 bl 1204 - for (i = SI5351C_WRITE_CONF_STEP2_REG; i < (SI5351C_WRITE_CONF_STEP2_REG+SI5351C_WRITE_CONF_STEP2_SIZE); i++) - f52: 2495 movs r4, #149 ; 0x95 - f54: 1c65 adds r5, r4, #1 - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - f56: 5d30 ldrb r0, [r6, r4] - f58: f000 f954 bl 1204 - /* Write Conf Step2 */ - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP2_REG); - for (i = SI5351C_WRITE_CONF_STEP2_REG; i < (SI5351C_WRITE_CONF_STEP2_REG+SI5351C_WRITE_CONF_STEP2_SIZE); i++) - f5c: 3402 adds r4, #2 - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - f5e: 5d70 ldrb r0, [r6, r5] - f60: f000 f950 bl 1204 - /* Write Conf Step2 */ - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP2_REG); - for (i = SI5351C_WRITE_CONF_STEP2_REG; i < (SI5351C_WRITE_CONF_STEP2_REG+SI5351C_WRITE_CONF_STEP2_SIZE); i++) - f64: 2cab cmp r4, #171 ; 0xab - f66: d1f5 bne.n f54 - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - } - i2c0_stop(); -} - f68: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - i2c0_tx_byte(SI5351C_WRITE_CONF_STEP2_REG); - for (i = SI5351C_WRITE_CONF_STEP2_REG; i < (SI5351C_WRITE_CONF_STEP2_REG+SI5351C_WRITE_CONF_STEP2_SIZE); i++) - { - i2c0_tx_byte(pt_si5351c_conf->conf[i]); - } - i2c0_stop(); - f6c: f000 b9aa b.w 12c4 - -00000f70 : - i2c0_stop(); -} - -/* read single register */ -uint8_t si5351c_read_single(uint8_t reg) -{ - f70: b510 push {r4, lr} - f72: 4604 mov r4, r0 - uint8_t val; - - /* set register address with write */ - i2c0_tx_start(); - f74: f000 f922 bl 11bc - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - f78: 20c0 movs r0, #192 ; 0xc0 - f7a: f000 f943 bl 1204 - i2c0_tx_byte(reg); - f7e: 4620 mov r0, r4 - f80: f000 f940 bl 1204 - - /* read the value */ - i2c0_tx_start(); - f84: f000 f91a bl 11bc - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_READ); - f88: 20c1 movs r0, #193 ; 0xc1 - f8a: f000 f93b bl 1204 - val = i2c0_rx_byte(); - f8e: f000 f969 bl 1264 - f92: 4604 mov r4, r0 - i2c0_stop(); - f94: f000 f996 bl 12c4 - - return val; -} - f98: 4620 mov r0, r4 - f9a: bd10 pop {r4, pc} - -00000f9c : -/* - * Write to one or more contiguous registers. data[0] should be the first - * register number, one or more values follow. - */ -void si5351c_write(uint8_t* const data, const uint_fast8_t data_count) -{ - f9c: b570 push {r4, r5, r6, lr} - f9e: 4605 mov r5, r0 - fa0: 460e mov r6, r1 - uint_fast8_t i; - - i2c0_tx_start(); - fa2: f000 f90b bl 11bc - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - fa6: 20c0 movs r0, #192 ; 0xc0 - fa8: f000 f92c bl 1204 - - for (i = 0; i < data_count; i++) - fac: b1ee cbz r6, fea - i2c0_tx_byte(data[i]); - fae: 462c mov r4, r5 - -/* - * Write to one or more contiguous registers. data[0] should be the first - * register number, one or more values follow. - */ -void si5351c_write(uint8_t* const data, const uint_fast8_t data_count) - fb0: 19ae adds r6, r5, r6 - - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - for (i = 0; i < data_count; i++) - i2c0_tx_byte(data[i]); - fb2: f814 0b01 ldrb.w r0, [r4], #1 - fb6: 43ed mvns r5, r5 - fb8: 19a9 adds r1, r5, r6 - fba: f001 0501 and.w r5, r1, #1 - fbe: f000 f921 bl 1204 - uint_fast8_t i; - - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - for (i = 0; i < data_count; i++) - fc2: 42b4 cmp r4, r6 - fc4: d011 beq.n fea - fc6: b12d cbz r5, fd4 - i2c0_tx_byte(data[i]); - fc8: f814 0b01 ldrb.w r0, [r4], #1 - fcc: f000 f91a bl 1204 - uint_fast8_t i; - - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - for (i = 0; i < data_count; i++) - fd0: 42b4 cmp r4, r6 - fd2: d00a beq.n fea - i2c0_tx_byte(data[i]); - fd4: 4625 mov r5, r4 - fd6: f815 0b01 ldrb.w r0, [r5], #1 - fda: f000 f913 bl 1204 - fde: 7860 ldrb r0, [r4, #1] - fe0: 1c6c adds r4, r5, #1 - fe2: f000 f90f bl 1204 - uint_fast8_t i; - - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - for (i = 0; i < data_count; i++) - fe6: 42b4 cmp r4, r6 - fe8: d1f4 bne.n fd4 - i2c0_tx_byte(data[i]); - i2c0_stop(); -} - fea: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - i2c0_tx_start(); - i2c0_tx_byte(SI5351C_I2C_ADDR | I2C_WRITE); - - for (i = 0; i < data_count; i++) - i2c0_tx_byte(data[i]); - i2c0_stop(); - fee: f000 b969 b.w 12c4 - ff2: bf00 nop - -00000ff4 : -} - -/* Disable all CLKx outputs. */ -void si5351c_disable_all_outputs(void) -{ - ff4: b500 push {lr} - uint8_t data[] = { 3, 0xFF }; - ff6: f245 0398 movw r3, #20632 ; 0x5098 - ffa: f2c0 0300 movt r3, #0 - i2c0_stop(); -} - -/* Disable all CLKx outputs. */ -void si5351c_disable_all_outputs(void) -{ - ffe: b083 sub sp, #12 - uint8_t data[] = { 3, 0xFF }; - 1000: 881a ldrh r2, [r3, #0] - si5351c_write(data, sizeof(data)); - 1002: a801 add r0, sp, #4 - 1004: 2102 movs r1, #2 -} - -/* Disable all CLKx outputs. */ -void si5351c_disable_all_outputs(void) -{ - uint8_t data[] = { 3, 0xFF }; - 1006: f8ad 2004 strh.w r2, [sp, #4] - si5351c_write(data, sizeof(data)); - 100a: f7ff ffc7 bl f9c -} - 100e: b003 add sp, #12 - 1010: bd00 pop {pc} - 1012: bf00 nop - -00001014 : -/* Turn off OEB pin control for all CLKx - Check also the SI5351C work like expected - write/read with different pattern - */ -bool si5351c_disable_oeb_pin_control(void) -{ - 1014: b570 push {r4, r5, r6, lr} - 1016: b082 sub sp, #8 - uint8_t data[] = { 9, 0x00 }; - uint8_t val1; - - /* Check Written Data */ - data[1] = 0x55; - 1018: 2355 movs r3, #85 ; 0x55 - Check also the SI5351C work like expected - write/read with different pattern - */ -bool si5351c_disable_oeb_pin_control(void) -{ - uint8_t data[] = { 9, 0x00 }; - 101a: 2409 movs r4, #9 - uint8_t val1; - - /* Check Written Data */ - data[1] = 0x55; - si5351c_write(data, sizeof(data)); - 101c: 2102 movs r1, #2 - 101e: a801 add r0, sp, #4 -{ - uint8_t data[] = { 9, 0x00 }; - uint8_t val1; - - /* Check Written Data */ - data[1] = 0x55; - 1020: f88d 3005 strb.w r3, [sp, #5] - Check also the SI5351C work like expected - write/read with different pattern - */ -bool si5351c_disable_oeb_pin_control(void) -{ - uint8_t data[] = { 9, 0x00 }; - 1024: f88d 4004 strb.w r4, [sp, #4] - uint8_t val1; - - /* Check Written Data */ - data[1] = 0x55; - si5351c_write(data, sizeof(data)); - 1028: f7ff ffb8 bl f9c - val1 = si5351c_read_single(9); - 102c: 4620 mov r0, r4 - 102e: f7ff ff9f bl f70 - if(val1 == 0x55) - 1032: 2855 cmp r0, #85 ; 0x55 - 1034: d002 beq.n 103c - if( (val2 == 0x99) && (val3 == 0xAA) && (val4 == 0xFF) ) - { - return true; - }else - { - return false; - 1036: 2000 movs r0, #0 - } - }else - { - return false; - } -} - 1038: b002 add sp, #8 - 103a: bd70 pop {r4, r5, r6, pc} - { - uint8_t val2; - uint8_t val3; - uint8_t val4; - - data[1] = 0x99; - 103c: 2299 movs r2, #153 ; 0x99 - si5351c_write(data, sizeof(data)); - 103e: 2102 movs r1, #2 - 1040: a801 add r0, sp, #4 - { - uint8_t val2; - uint8_t val3; - uint8_t val4; - - data[1] = 0x99; - 1042: f88d 2005 strb.w r2, [sp, #5] - si5351c_write(data, sizeof(data)); - 1046: f7ff ffa9 bl f9c - val2 = si5351c_read_single(9); - 104a: 4620 mov r0, r4 - 104c: f7ff ff90 bl f70 - - data[1] = 0xAA; - 1050: 26aa movs r6, #170 ; 0xaa - si5351c_write(data, sizeof(data)); - 1052: 2102 movs r1, #2 - uint8_t val3; - uint8_t val4; - - data[1] = 0x99; - si5351c_write(data, sizeof(data)); - val2 = si5351c_read_single(9); - 1054: 4605 mov r5, r0 - - data[1] = 0xAA; - si5351c_write(data, sizeof(data)); - 1056: a801 add r0, sp, #4 - - data[1] = 0x99; - si5351c_write(data, sizeof(data)); - val2 = si5351c_read_single(9); - - data[1] = 0xAA; - 1058: f88d 6005 strb.w r6, [sp, #5] - si5351c_write(data, sizeof(data)); - 105c: f7ff ff9e bl f9c - val3 = si5351c_read_single(9); - 1060: 4620 mov r0, r4 - 1062: f7ff ff85 bl f70 - - data[1] = 0xFF; - 1066: 23ff movs r3, #255 ; 0xff - si5351c_write(data, sizeof(data)); - 1068: 2102 movs r1, #2 - si5351c_write(data, sizeof(data)); - val2 = si5351c_read_single(9); - - data[1] = 0xAA; - si5351c_write(data, sizeof(data)); - val3 = si5351c_read_single(9); - 106a: 4606 mov r6, r0 - - data[1] = 0xFF; - si5351c_write(data, sizeof(data)); - 106c: a801 add r0, sp, #4 - - data[1] = 0xAA; - si5351c_write(data, sizeof(data)); - val3 = si5351c_read_single(9); - - data[1] = 0xFF; - 106e: f88d 3005 strb.w r3, [sp, #5] - si5351c_write(data, sizeof(data)); - 1072: f7ff ff93 bl f9c - val4 = si5351c_read_single(9); - 1076: 4620 mov r0, r4 - 1078: f7ff ff7a bl f70 - - if( (val2 == 0x99) && (val3 == 0xAA) && (val4 == 0xFF) ) - 107c: 2d99 cmp r5, #153 ; 0x99 - 107e: d1da bne.n 1036 - 1080: 2eaa cmp r6, #170 ; 0xaa - 1082: d1d8 bne.n 1036 - 1084: f1b0 01ff subs.w r1, r0, #255 ; 0xff - 1088: 4248 negs r0, r1 - 108a: 4148 adcs r0, r1 - 108c: e7d4 b.n 1038 - 108e: bf00 nop - -00001090 : - } -} - -/* Power down all CLKx */ -void si5351c_power_down_all_clocks(void) -{ - 1090: b500 push {lr} - uint8_t data[] = { 16 - 1092: f245 0398 movw r3, #20632 ; 0x5098 - 1096: f2c0 0300 movt r3, #0 - } -} - -/* Power down all CLKx */ -void si5351c_power_down_all_clocks(void) -{ - 109a: b085 sub sp, #20 - uint8_t data[] = { 16 - 109c: f853 0f04 ldr.w r0, [r3, #4]! - 10a0: 6859 ldr r1, [r3, #4] - 10a2: 7a1b ldrb r3, [r3, #8] - 10a4: aa01 add r2, sp, #4 - 10a6: c203 stmia r2!, {r0, r1} - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - }; - si5351c_write(data, sizeof(data)); - 10a8: a801 add r0, sp, #4 - 10aa: 2109 movs r1, #9 -} - -/* Power down all CLKx */ -void si5351c_power_down_all_clocks(void) -{ - uint8_t data[] = { 16 - 10ac: 7013 strb r3, [r2, #0] - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - , SI5351C_CLK_POWERDOWN - }; - si5351c_write(data, sizeof(data)); - 10ae: f7ff ff75 bl f9c -} - 10b2: b005 add sp, #20 - 10b4: bd00 pop {pc} - 10b6: bf00 nop - -000010b8 : - -void si5351c_init_fanout(void) -{ - 10b8: b500 push {lr} - uint8_t data[] = { 187, 0xc0 }; - 10ba: 4b05 ldr r3, [pc, #20] ; (10d0 ) - }; - si5351c_write(data, sizeof(data)); -} - -void si5351c_init_fanout(void) -{ - 10bc: b083 sub sp, #12 - uint8_t data[] = { 187, 0xc0 }; - 10be: 881a ldrh r2, [r3, #0] - si5351c_write(data, sizeof(data)); - 10c0: a801 add r0, sp, #4 - 10c2: 2102 movs r1, #2 - si5351c_write(data, sizeof(data)); -} - -void si5351c_init_fanout(void) -{ - uint8_t data[] = { 187, 0xc0 }; - 10c4: f8ad 2004 strh.w r2, [sp, #4] - si5351c_write(data, sizeof(data)); - 10c8: f7ff ff68 bl f9c -} - 10cc: b003 add sp, #12 - 10ce: bd00 pop {pc} - 10d0: 000050a8 .word 0x000050a8 - -000010d4 : - -void si5351c_init_xtal(void) -{ - 10d4: b500 push {lr} - /* Set Crystal Internal CL = 8 pF */ - uint8_t data[] = { 183, 0x92 }; - 10d6: 4b05 ldr r3, [pc, #20] ; (10ec ) - uint8_t data[] = { 187, 0xc0 }; - si5351c_write(data, sizeof(data)); -} - -void si5351c_init_xtal(void) -{ - 10d8: b083 sub sp, #12 - /* Set Crystal Internal CL = 8 pF */ - uint8_t data[] = { 183, 0x92 }; - 10da: 881a ldrh r2, [r3, #0] - si5351c_write(data, sizeof(data)); - 10dc: a801 add r0, sp, #4 - 10de: 2102 movs r1, #2 -} - -void si5351c_init_xtal(void) -{ - /* Set Crystal Internal CL = 8 pF */ - uint8_t data[] = { 183, 0x92 }; - 10e0: f8ad 2004 strh.w r2, [sp, #4] - si5351c_write(data, sizeof(data)); - 10e4: f7ff ff5a bl f9c -} - 10e8: b003 add sp, #12 - 10ea: bd00 pop {pc} - 10ec: 000050ac .word 0x000050ac - -000010f0 : - -void si5351c_init_pll_soft_reset(void) -{ - 10f0: b500 push {lr} - uint8_t data[] = { 177, 0xac }; - 10f2: 4b05 ldr r3, [pc, #20] ; (1108 ) - uint8_t data[] = { 183, 0x92 }; - si5351c_write(data, sizeof(data)); -} - -void si5351c_init_pll_soft_reset(void) -{ - 10f4: b083 sub sp, #12 - uint8_t data[] = { 177, 0xac }; - 10f6: 881a ldrh r2, [r3, #0] - si5351c_write(data, sizeof(data)); - 10f8: a801 add r0, sp, #4 - 10fa: 2102 movs r1, #2 - si5351c_write(data, sizeof(data)); -} - -void si5351c_init_pll_soft_reset(void) -{ - uint8_t data[] = { 177, 0xac }; - 10fc: f8ad 2004 strh.w r2, [sp, #4] - si5351c_write(data, sizeof(data)); - 1100: f7ff ff4c bl f9c -} - 1104: b003 add sp, #12 - 1106: bd00 pop {pc} - 1108: 000050b0 .word 0x000050b0 - -0000110c : - -/* Enable CLK outputs 0(R820T) and 7(LPC) only. */ -void si5351c_enable_clock_outputs(void) -{ - 110c: b500 push {lr} - uint8_t data[] = { 3, 0x7E }; - 110e: 4b05 ldr r3, [pc, #20] ; (1124 ) - si5351c_write(data, sizeof(data)); -} - -/* Enable CLK outputs 0(R820T) and 7(LPC) only. */ -void si5351c_enable_clock_outputs(void) -{ - 1110: b083 sub sp, #12 - uint8_t data[] = { 3, 0x7E }; - 1112: 881a ldrh r2, [r3, #0] - si5351c_write(data, sizeof(data)); - 1114: a801 add r0, sp, #4 - 1116: 2102 movs r1, #2 -} - -/* Enable CLK outputs 0(R820T) and 7(LPC) only. */ -void si5351c_enable_clock_outputs(void) -{ - uint8_t data[] = { 3, 0x7E }; - 1118: f8ad 2004 strh.w r2, [sp, #4] - si5351c_write(data, sizeof(data)); - 111c: f7ff ff3e bl f9c -} - 1120: b003 add sp, #12 - 1122: bd00 pop {pc} - 1124: 000050b4 .word 0x000050b4 - -00001128 : - -#include - -void gpio_set(uint32_t gpioport, uint32_t gpios) -{ - GPIO_SET(gpioport) = gpios; - 1128: f8c0 1200 str.w r1, [r0, #512] ; 0x200 - 112c: 4770 bx lr - 112e: bf00 nop - -00001130 : -} - -void gpio_clear(uint32_t gpioport, uint32_t gpios) -{ - GPIO_CLR(gpioport) = gpios; - 1130: f8c0 1280 str.w r1, [r0, #640] ; 0x280 - 1134: 4770 bx lr - 1136: bf00 nop - -00001138 : -/* For pin_conf_normal value see scu.h define SCU_CONF_XXX or Configuration for - * different I/O pins types - */ -void scu_pinmux(scu_grp_pin_t group_pin, uint32_t scu_conf) -{ - MMIO32(group_pin) = scu_conf; - 1138: 6001 str r1, [r0, #0] - 113a: 4770 bx lr - -0000113c : -#define I2C_TIMEOUT (10000) - -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - 113c: b470 push {r4, r5, r6} - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; - 113e: f241 0114 movw r1, #4116 ; 0x1014 -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - 1142: f646 4584 movw r5, #27780 ; 0x6c84 - - I2C0_SCLH = duty_cycle_count; - 1146: f241 0410 movw r4, #4112 ; 0x1010 - I2C0_SCLL = duty_cycle_count; - 114a: f2c4 010a movt r1, #16394 ; 0x400a - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 114e: f241 0218 movw r2, #4120 ; 0x1018 - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; - 1152: f44f 5380 mov.w r3, #4096 ; 0x1000 -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - 1156: f2c4 0508 movt r5, #16392 ; 0x4008 - - I2C0_SCLH = duty_cycle_count; - 115a: f2c4 040a movt r4, #16394 ; 0x400a - I2C0_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 115e: f2c4 020a movt r2, #16394 ; 0x400a - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; - 1162: f2c4 030a movt r3, #16394 ; 0x400a -#define SFSP_I2C1_SDA_SCL (0x00000001 | SCU_CONF_ZIF_DIS_IN_GLITCH_FILT | SCU_CONF_EZI_EN_IN_BUFFER) - -void i2c0_init(const uint16_t duty_cycle_count) -{ - /* enable input on SCL and SDA pins */ - SCU_SFSI2C0 = SCU_I2C0_NOMINAL; - 1166: f640 0608 movw r6, #2056 ; 0x808 - 116a: 602e str r6, [r5, #0] - - I2C0_SCLH = duty_cycle_count; - 116c: 6020 str r0, [r4, #0] - I2C0_SCLL = duty_cycle_count; - 116e: 6008 str r0, [r1, #0] - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 1170: 206c movs r0, #108 ; 0x6c - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; - 1172: 2140 movs r1, #64 ; 0x40 - - I2C0_SCLH = duty_cycle_count; - I2C0_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C0_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 1174: 6010 str r0, [r2, #0] - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C0 */ - I2C0_CONSET = I2C_CONSET_I2EN; - 1176: 6019 str r1, [r3, #0] -} - 1178: bc70 pop {r4, r5, r6} - 117a: 4770 bx lr - -0000117c : - -void i2c1_init(const uint16_t duty_cycle_count) -{ - 117c: b4f0 push {r4, r5, r6, r7} - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - - I2C1_SCLH = duty_cycle_count; - I2C1_SCLL = duty_cycle_count; - 117e: 2114 movs r1, #20 -} - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - 1180: f246 160c movw r6, #24844 ; 0x610c - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - 1184: f246 1510 movw r5, #24848 ; 0x6110 - - I2C1_SCLH = duty_cycle_count; - 1188: 2410 movs r4, #16 - I2C1_SCLL = duty_cycle_count; - 118a: f2c4 010e movt r1, #16398 ; 0x400e - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 118e: 2218 movs r2, #24 - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; - 1190: 2300 movs r3, #0 -} - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - 1192: f2c4 0608 movt r6, #16392 ; 0x4008 - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - 1196: f2c4 0508 movt r5, #16392 ; 0x4008 - - I2C1_SCLH = duty_cycle_count; - 119a: f2c4 040e movt r4, #16398 ; 0x400e -} - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - 119e: 27c1 movs r7, #193 ; 0xc1 - - I2C1_SCLH = duty_cycle_count; - I2C1_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 11a0: f2c4 020e movt r2, #16398 ; 0x400e - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; - 11a4: f2c4 030e movt r3, #16398 ; 0x400e -} - -void i2c1_init(const uint16_t duty_cycle_count) -{ - /* Configure pin function for I2C1*/ - SCU_SFSP2_3 = SFSP_I2C1_SDA_SCL; - 11a8: 6037 str r7, [r6, #0] - SCU_SFSP2_4 = SFSP_I2C1_SDA_SCL; - 11aa: 602f str r7, [r5, #0] - - I2C1_SCLH = duty_cycle_count; - 11ac: 6020 str r0, [r4, #0] - I2C1_SCLL = duty_cycle_count; - 11ae: 6008 str r0, [r1, #0] - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 11b0: 206c movs r0, #108 ; 0x6c - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; - 11b2: 2140 movs r1, #64 ; 0x40 - - I2C1_SCLH = duty_cycle_count; - I2C1_SCLL = duty_cycle_count; - - /* clear the control bits */ - I2C1_CONCLR = (I2C_CONCLR_AAC | I2C_CONCLR_SIC - 11b4: 6010 str r0, [r2, #0] - | I2C_CONCLR_STAC | I2C_CONCLR_I2ENC); - - /* enable I2C1 */ - I2C1_CONSET = I2C_CONSET_I2EN; - 11b6: 6019 str r1, [r3, #0] -} - 11b8: bcf0 pop {r4, r5, r6, r7} - 11ba: 4770 bx lr - -000011bc : -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; - 11bc: f241 0318 movw r3, #4120 ; 0x1018 - I2C0_CONSET = I2C_CONSET_STA; - 11c0: f44f 5280 mov.w r2, #4096 ; 0x1000 - 11c4: f2c4 020a movt r2, #16394 ; 0x400a -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; - 11c8: f2c4 030a movt r3, #16394 ; 0x400a - 11cc: 2108 movs r1, #8 - I2C0_CONSET = I2C_CONSET_STA; - 11ce: 2020 movs r0, #32 -/* transmit start bit */ -void i2c0_tx_start(void) -{ - uint32_t timeout; - - I2C0_CONCLR = I2C_CONCLR_SIC; - 11d0: 6019 str r1, [r3, #0] - I2C0_CONSET = I2C_CONSET_STA; - 11d2: 6010 str r0, [r2, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 11d4: 6813 ldr r3, [r2, #0] - 11d6: 0718 lsls r0, r3, #28 - 11d8: d40d bmi.n 11f6 - 11da: f242 7010 movw r0, #10000 ; 0x2710 - 11de: e004 b.n 11ea - 11e0: 6813 ldr r3, [r2, #0] - 11e2: 0719 lsls r1, r3, #28 - 11e4: d407 bmi.n 11f6 - 11e6: 3801 subs r0, #1 - 11e8: d005 beq.n 11f6 - 11ea: 6811 ldr r1, [r2, #0] - 11ec: f011 0f08 tst.w r1, #8 - 11f0: f100 30ff add.w r0, r0, #4294967295 - 11f4: d0f4 beq.n 11e0 - { - timeout++; - } - - I2C0_CONCLR = I2C_CONCLR_STAC; - 11f6: f241 0118 movw r1, #4120 ; 0x1018 - 11fa: f2c4 010a movt r1, #16394 ; 0x400a - 11fe: 2220 movs r2, #32 - 1200: 600a str r2, [r1, #0] - 1202: 4770 bx lr - -00001204 : -/* transmit data byte */ -void i2c0_tx_byte(uint8_t byte) -{ - uint32_t timeout; - - if (I2C0_CONSET & I2C_CONSET_STA) - 1204: f44f 5380 mov.w r3, #4096 ; 0x1000 - 1208: f2c4 030a movt r3, #16394 ; 0x400a - 120c: 6819 ldr r1, [r3, #0] - 120e: 068b lsls r3, r1, #26 - 1210: d505 bpl.n 121e - { - I2C0_CONCLR = I2C_CONCLR_STAC; - 1212: f241 0318 movw r3, #4120 ; 0x1018 - 1216: f2c4 030a movt r3, #16394 ; 0x400a - 121a: 2220 movs r2, #32 - 121c: 601a str r2, [r3, #0] - } - I2C0_DAT = byte; - 121e: f241 0108 movw r1, #4104 ; 0x1008 - 1222: f2c4 010a movt r1, #16394 ; 0x400a - I2C0_CONCLR = I2C_CONCLR_SIC; - 1226: f241 0318 movw r3, #4120 ; 0x1018 - 122a: f2c4 030a movt r3, #16394 ; 0x400a - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 122e: f44f 5280 mov.w r2, #4096 ; 0x1000 - - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_DAT = byte; - 1232: 6008 str r0, [r1, #0] - I2C0_CONCLR = I2C_CONCLR_SIC; - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 1234: f2c4 020a movt r2, #16394 ; 0x400a - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_DAT = byte; - I2C0_CONCLR = I2C_CONCLR_SIC; - 1238: 2008 movs r0, #8 - 123a: 6018 str r0, [r3, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 123c: 6811 ldr r1, [r2, #0] - 123e: 0708 lsls r0, r1, #28 - 1240: d40d bmi.n 125e - 1242: f242 7310 movw r3, #10000 ; 0x2710 - 1246: e004 b.n 1252 - 1248: 6811 ldr r1, [r2, #0] - 124a: 0709 lsls r1, r1, #28 - 124c: d407 bmi.n 125e - 124e: 3b01 subs r3, #1 - 1250: d006 beq.n 1260 - 1252: 6810 ldr r0, [r2, #0] - 1254: f010 0f08 tst.w r0, #8 - 1258: f103 33ff add.w r3, r3, #4294967295 - 125c: d0f4 beq.n 1248 - 125e: 4770 bx lr - 1260: 4770 bx lr - 1262: bf00 nop - -00001264 : -/* receive data byte */ -uint8_t i2c0_rx_byte(void) -{ - uint32_t timeout; - - if (I2C0_CONSET & I2C_CONSET_STA) - 1264: f44f 5380 mov.w r3, #4096 ; 0x1000 - 1268: f2c4 030a movt r3, #16394 ; 0x400a - 126c: 6818 ldr r0, [r3, #0] - 126e: 0683 lsls r3, r0, #26 - 1270: d505 bpl.n 127e - { - I2C0_CONCLR = I2C_CONCLR_STAC; - 1272: f241 0118 movw r1, #4120 ; 0x1018 - 1276: f2c4 010a movt r1, #16394 ; 0x400a - 127a: 2220 movs r2, #32 - 127c: 600a str r2, [r1, #0] - } - I2C0_CONCLR = I2C_CONCLR_SIC; - 127e: f241 0318 movw r3, #4120 ; 0x1018 - 1282: f2c4 030a movt r3, #16394 ; 0x400a - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 1286: f44f 5280 mov.w r2, #4096 ; 0x1000 - - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONCLR = I2C_CONCLR_SIC; - 128a: 2008 movs r0, #8 - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 128c: f2c4 020a movt r2, #16394 ; 0x400a - - if (I2C0_CONSET & I2C_CONSET_STA) - { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONCLR = I2C_CONCLR_SIC; - 1290: 6018 str r0, [r3, #0] - - timeout = 0; - while( (!(I2C0_CONSET & I2C_CONSET_SI)) && (timeout < I2C_TIMEOUT) ) - 1292: 6811 ldr r1, [r2, #0] - 1294: 0708 lsls r0, r1, #28 - 1296: d40d bmi.n 12b4 - 1298: f242 7310 movw r3, #10000 ; 0x2710 - 129c: e004 b.n 12a8 - 129e: 6811 ldr r1, [r2, #0] - 12a0: 0709 lsls r1, r1, #28 - 12a2: d407 bmi.n 12b4 - 12a4: 3b01 subs r3, #1 - 12a6: d005 beq.n 12b4 - 12a8: 6810 ldr r0, [r2, #0] - 12aa: f010 0f08 tst.w r0, #8 - 12ae: f103 33ff add.w r3, r3, #4294967295 - 12b2: d0f4 beq.n 129e - { - timeout++; - } - - return I2C0_DAT; - 12b4: f241 0208 movw r2, #4104 ; 0x1008 - 12b8: f2c4 020a movt r2, #16394 ; 0x400a - 12bc: 6810 ldr r0, [r2, #0] -} - 12be: b2c0 uxtb r0, r0 - 12c0: 4770 bx lr - 12c2: bf00 nop - -000012c4 : -} - -/* transmit stop bit */ -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - 12c4: f44f 5380 mov.w r3, #4096 ; 0x1000 - 12c8: f2c4 030a movt r3, #16394 ; 0x400a - 12cc: 6818 ldr r0, [r3, #0] - 12ce: 0682 lsls r2, r0, #26 - 12d0: d505 bpl.n 12de - I2C0_CONCLR = I2C_CONCLR_STAC; - 12d2: f241 0118 movw r1, #4120 ; 0x1018 - 12d6: f2c4 010a movt r1, #16394 ; 0x400a - 12da: 2220 movs r2, #32 - 12dc: 600a str r2, [r1, #0] - } - I2C0_CONSET = I2C_CONSET_STO; - 12de: f44f 5080 mov.w r0, #4096 ; 0x1000 - I2C0_CONCLR = I2C_CONCLR_SIC; - 12e2: f241 0318 movw r3, #4120 ; 0x1018 -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONSET = I2C_CONSET_STO; - 12e6: f2c4 000a movt r0, #16394 ; 0x400a - I2C0_CONCLR = I2C_CONCLR_SIC; - 12ea: f2c4 030a movt r3, #16394 ; 0x400a -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONSET = I2C_CONSET_STO; - 12ee: 2110 movs r1, #16 - I2C0_CONCLR = I2C_CONCLR_SIC; - 12f0: 2208 movs r2, #8 -void i2c0_stop(void) -{ - if (I2C0_CONSET & I2C_CONSET_STA) { - I2C0_CONCLR = I2C_CONCLR_STAC; - } - I2C0_CONSET = I2C_CONSET_STO; - 12f2: 6001 str r1, [r0, #0] - I2C0_CONCLR = I2C_CONCLR_SIC; - 12f4: 601a str r2, [r3, #0] - 12f6: 4770 bx lr - -000012f8 : -void ipc_halt_m0(void) -{ - volatile uint32_t rst_active_status1; - - /* Check if M0 is reset by reading status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - 12f8: f243 1154 movw r1, #12628 ; 0x3154 - 12fc: f2c4 0105 movt r1, #16389 ; 0x4005 -#include -#include - -/* Set M0 in reset mode */ -void ipc_halt_m0(void) -{ - 1300: b082 sub sp, #8 - volatile uint32_t rst_active_status1; - - /* Check if M0 is reset by reading status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - 1302: 680b ldr r3, [r1, #0] - 1304: 9301 str r3, [sp, #4] - - /* If the M0 has reset not asserted, halt it... */ - while (rst_active_status1 & RESET_CTRL1_M0APP_RST) { - 1306: 9801 ldr r0, [sp, #4] - 1308: 01c2 lsls r2, r0, #7 - 130a: d50d bpl.n 1328 - RESET_CTRL1 = ((~rst_active_status1) | RESET_CTRL1_M0APP_RST); - 130c: f243 1204 movw r2, #12548 ; 0x3104 - 1310: f2c4 0205 movt r2, #16389 ; 0x4005 - 1314: 9b01 ldr r3, [sp, #4] - 1316: 43d8 mvns r0, r3 - 1318: f040 7380 orr.w r3, r0, #16777216 ; 0x1000000 - 131c: 6013 str r3, [r2, #0] - rst_active_status1 = RESET_ACTIVE_STATUS1; - 131e: 6808 ldr r0, [r1, #0] - 1320: 9001 str r0, [sp, #4] - - /* Check if M0 is reset by reading status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - - /* If the M0 has reset not asserted, halt it... */ - while (rst_active_status1 & RESET_CTRL1_M0APP_RST) { - 1322: 9b01 ldr r3, [sp, #4] - 1324: 01db lsls r3, r3, #7 - 1326: d4f5 bmi.n 1314 - RESET_CTRL1 = ((~rst_active_status1) | RESET_CTRL1_M0APP_RST); - rst_active_status1 = RESET_ACTIVE_STATUS1; - } -} - 1328: b002 add sp, #8 - 132a: 4770 bx lr - -0000132c : -void ipc_start_m0(uint32_t cm0_baseaddr) -{ - volatile uint32_t rst_active_status1; - - /* Set M0 memory mapping to point to start of M0 image */ - CREG_M0APPMEMMAP = cm0_baseaddr; - 132c: f243 4304 movw r3, #13316 ; 0x3404 - 1330: f2c4 0304 movt r3, #16388 ; 0x4004 - - /* Start/run M0 core */ - - /* Release Slave from reset, first read status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - 1334: f243 1154 movw r1, #12628 ; 0x3154 - 1338: f2c4 0105 movt r1, #16389 ; 0x4005 -void ipc_start_m0(uint32_t cm0_baseaddr) -{ - volatile uint32_t rst_active_status1; - - /* Set M0 memory mapping to point to start of M0 image */ - CREG_M0APPMEMMAP = cm0_baseaddr; - 133c: 6018 str r0, [r3, #0] - } -} - -/* Start M0 */ -void ipc_start_m0(uint32_t cm0_baseaddr) -{ - 133e: b082 sub sp, #8 - CREG_M0APPMEMMAP = cm0_baseaddr; - - /* Start/run M0 core */ - - /* Release Slave from reset, first read status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - 1340: 6808 ldr r0, [r1, #0] - 1342: 9001 str r0, [sp, #4] - - /* If the M0 is being held in reset, release it */ - /* 1 = no reset, 0 = reset */ - while (!(rst_active_status1 & RESET_CTRL1_M0APP_RST)) { - 1344: 9a01 ldr r2, [sp, #4] - 1346: 01d3 lsls r3, r2, #7 - 1348: d40d bmi.n 1366 - RESET_CTRL1 = ((~rst_active_status1) & ~RESET_CTRL1_M0APP_RST); - 134a: f243 1204 movw r2, #12548 ; 0x3104 - 134e: f2c4 0205 movt r2, #16389 ; 0x4005 - 1352: 9b01 ldr r3, [sp, #4] - 1354: 43d8 mvns r0, r3 - 1356: f020 7380 bic.w r3, r0, #16777216 ; 0x1000000 - 135a: 6013 str r3, [r2, #0] - rst_active_status1 = RESET_ACTIVE_STATUS1; - 135c: 6808 ldr r0, [r1, #0] - 135e: 9001 str r0, [sp, #4] - /* Release Slave from reset, first read status */ - rst_active_status1 = RESET_ACTIVE_STATUS1; - - /* If the M0 is being held in reset, release it */ - /* 1 = no reset, 0 = reset */ - while (!(rst_active_status1 & RESET_CTRL1_M0APP_RST)) { - 1360: 9b01 ldr r3, [sp, #4] - 1362: 01d8 lsls r0, r3, #7 - 1364: d5f5 bpl.n 1352 - RESET_CTRL1 = ((~rst_active_status1) & ~RESET_CTRL1_M0APP_RST); - rst_active_status1 = RESET_ACTIVE_STATUS1; - } -} - 1366: b002 add sp, #8 - 1368: 4770 bx lr - 136a: bf00 nop - -0000136c : -void ipc_halt_m0s(void) -{ - volatile uint32_t rst_active_status0; - - /* Check if M0s is reset by reading status */ - rst_active_status0 = RESET_ACTIVE_STATUS0; - 136c: f243 1150 movw r1, #12624 ; 0x3150 - 1370: f2c4 0105 movt r1, #16389 ; 0x4005 - CREG_M0TXEVENT &= ~CREG_M0TXEVENT_TXEVCLR; -} - -/* Set M0s in reset mode (only for LPC4370) */ -void ipc_halt_m0s(void) -{ - 1374: b082 sub sp, #8 - volatile uint32_t rst_active_status0; - - /* Check if M0s is reset by reading status */ - rst_active_status0 = RESET_ACTIVE_STATUS0; - 1376: 680b ldr r3, [r1, #0] - 1378: 9301 str r3, [sp, #4] - - /* If the M0s has reset not asserted, halt it... */ - while (rst_active_status0 & RESET_CTRL0_M0_SUB_RST) { - 137a: 9801 ldr r0, [sp, #4] - 137c: 04c3 lsls r3, r0, #19 - 137e: d50d bpl.n 139c - RESET_CTRL0 = ((~rst_active_status0) | RESET_CTRL0_M0_SUB_RST); - 1380: f44f 5244 mov.w r2, #12544 ; 0x3100 - 1384: f2c4 0205 movt r2, #16389 ; 0x4005 - 1388: 9b01 ldr r3, [sp, #4] - 138a: 43d8 mvns r0, r3 - 138c: f440 5380 orr.w r3, r0, #4096 ; 0x1000 - 1390: 6013 str r3, [r2, #0] - rst_active_status0 = RESET_ACTIVE_STATUS0; - 1392: 6808 ldr r0, [r1, #0] - 1394: 9001 str r0, [sp, #4] - - /* Check if M0s is reset by reading status */ - rst_active_status0 = RESET_ACTIVE_STATUS0; - - /* If the M0s has reset not asserted, halt it... */ - while (rst_active_status0 & RESET_CTRL0_M0_SUB_RST) { - 1396: 9b01 ldr r3, [sp, #4] - 1398: 04d8 lsls r0, r3, #19 - 139a: d4f5 bmi.n 1388 - RESET_CTRL0 = ((~rst_active_status0) | RESET_CTRL0_M0_SUB_RST); - rst_active_status0 = RESET_ACTIVE_STATUS0; - } -} - 139c: b002 add sp, #8 - 139e: 4770 bx lr - -000013a0 : - } - -} - -void blocking_handler(void) -{ - 13a0: e7fe b.n 13a0 - 13a2: bf00 nop - -000013a4 : - while (1); -} - -void null_handler(void) -{ - 13a4: 4770 bx lr - 13a6: bf00 nop - -000013a8 : -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13a8: 4997 ldr r1, [pc, #604] ; (1608 ) - 13aa: 4a98 ldr r2, [pc, #608] ; (160c ) - 13ac: 4291 cmp r1, r2 - 13ae: f080 8128 bcs.w 1602 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 13b2: 1cd5 adds r5, r2, #3 - 13b4: 1d0b adds r3, r1, #4 -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13b6: 4896 ldr r0, [pc, #600] ; (1610 ) - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 13b8: 1aec subs r4, r5, r3 - 13ba: f024 0703 bic.w r7, r4, #3 - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - *dest = *src; - 13be: 4602 mov r2, r0 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 13c0: 1d3d adds r5, r7, #4 - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - *dest = *src; - 13c2: f852 6b04 ldr.w r6, [r2], #4 - 13c6: 463c mov r4, r7 - 13c8: 186f adds r7, r5, r1 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13ca: 42bb cmp r3, r7 - dest < &_edata; - src++, dest++) { - *dest = *src; - 13cc: 600e str r6, [r1, #0] - 13ce: f3c4 0680 ubfx r6, r4, #2, #1 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13d2: d014 beq.n 13fe - 13d4: b13e cbz r6, 13e6 - dest < &_edata; - src++, dest++) { - *dest = *src; - 13d6: 6812 ldr r2, [r2, #0] - 13d8: 601a str r2, [r3, #0] - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - 13da: f101 0308 add.w r3, r1, #8 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13de: 42bb cmp r3, r7 - dest < &_edata; - src++, dest++) { - 13e0: f100 0208 add.w r2, r0, #8 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13e4: d00b beq.n 13fe - dest < &_edata; - src++, dest++) { - *dest = *src; - 13e6: 4611 mov r1, r2 - 13e8: 4618 mov r0, r3 - 13ea: f851 4b04 ldr.w r4, [r1], #4 - 13ee: f840 4b04 str.w r4, [r0], #4 - 13f2: 6855 ldr r5, [r2, #4] - 13f4: 605d str r5, [r3, #4] - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - dest < &_edata; - src++, dest++) { - 13f6: 1d03 adds r3, r0, #4 - 13f8: 1d0a adds r2, r1, #4 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 13fa: 42bb cmp r3, r7 - 13fc: d1f3 bne.n 13e6 - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - 13fe: 4f85 ldr r7, [pc, #532] ; (1614 ) - 1400: 42bb cmp r3, r7 - 1402: d216 bcs.n 1432 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 1404: 1cfe adds r6, r7, #3 - 1406: 1d1a adds r2, r3, #4 - 1408: 1ab1 subs r1, r6, r2 - 140a: f021 0003 bic.w r0, r1, #3 - 140e: 1d04 adds r4, r0, #4 - 1410: 191d adds r5, r3, r4 - 1412: 1aaf subs r7, r5, r2 - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - *dest++ = 0; - 1414: 2600 movs r6, #0 - 1416: 077c lsls r4, r7, #29 - 1418: d508 bpl.n 142c - 141a: 601e str r6, [r3, #0] - 141c: 4613 mov r3, r2 - 141e: 3204 adds r2, #4 - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - 1420: 42aa cmp r2, r5 - *dest++ = 0; - 1422: 601e str r6, [r3, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - 1424: d005 beq.n 1432 - *dest++ = 0; - 1426: 1d13 adds r3, r2, #4 - 1428: 6016 str r6, [r2, #0] - 142a: 1d1a adds r2, r3, #4 - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - 142c: 42aa cmp r2, r5 - *dest++ = 0; - 142e: 601e str r6, [r3, #0] - dest < &_edata; - src++, dest++) { - *dest = *src; - } - - while (dest < &_ebss) { - 1430: d1f9 bne.n 1426 - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - 1432: 4d79 ldr r5, [pc, #484] ; (1618 ) - 1434: 4b79 ldr r3, [pc, #484] ; (161c ) - 1436: 429d cmp r5, r3 - 1438: d21c bcs.n 1474 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 143a: 1cd9 adds r1, r3, #3 - 143c: 1d2e adds r6, r5, #4 - 143e: 1b88 subs r0, r1, r6 - 1440: 0883 lsrs r3, r0, #2 - 1442: 1c5f adds r7, r3, #1 - 1444: 2401 movs r4, #1 - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - 1446: 682a ldr r2, [r5, #0] - 1448: ea03 0804 and.w r8, r3, r4 - 144c: 4790 blx r2 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - 144e: 42bc cmp r4, r7 - 1450: d010 beq.n 1474 - 1452: f1b8 0f00 cmp.w r8, #0 - 1456: d005 beq.n 1464 - 1458: 2402 movs r4, #2 - (*fp)(); - 145a: 6831 ldr r1, [r6, #0] - 145c: 4788 blx r1 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - 145e: 42bc cmp r4, r7 - 1460: 4635 mov r5, r6 - 1462: d007 beq.n 1474 - (*fp)(); - 1464: 686e ldr r6, [r5, #4] - 1466: 47b0 blx r6 - 1468: 3402 adds r4, #2 - 146a: 68a8 ldr r0, [r5, #8] - 146c: 4780 blx r0 - 146e: 3508 adds r5, #8 - while (dest < &_ebss) { - *dest++ = 0; - } - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - 1470: 42bc cmp r4, r7 - 1472: d1f7 bne.n 1464 - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - 1474: 4d6a ldr r5, [pc, #424] ; (1620 ) - 1476: 4b6b ldr r3, [pc, #428] ; (1624 ) - 1478: 429d cmp r5, r3 - 147a: d21c bcs.n 14b6 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 147c: 1cdf adds r7, r3, #3 - 147e: 1d2e adds r6, r5, #4 - 1480: 1bba subs r2, r7, r6 - 1482: 0891 lsrs r1, r2, #2 - 1484: 1c4f adds r7, r1, #1 - 1486: 2401 movs r4, #1 - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - (*fp)(); - 1488: 6828 ldr r0, [r5, #0] - 148a: ea01 0904 and.w r9, r1, r4 - 148e: 4780 blx r0 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - 1490: 42bc cmp r4, r7 - 1492: d010 beq.n 14b6 - 1494: f1b9 0f00 cmp.w r9, #0 - 1498: d005 beq.n 14a6 - 149a: 2402 movs r4, #2 - (*fp)(); - 149c: 6833 ldr r3, [r6, #0] - 149e: 4798 blx r3 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - 14a0: 42bc cmp r4, r7 - 14a2: 4635 mov r5, r6 - 14a4: d007 beq.n 14b6 - (*fp)(); - 14a6: 686e ldr r6, [r5, #4] - 14a8: 47b0 blx r6 - 14aa: 3402 adds r4, #2 - 14ac: 68aa ldr r2, [r5, #8] - 14ae: 4790 blx r2 - 14b0: 3508 adds r5, #8 - - /* Constructors. */ - for (fp = &__preinit_array_start; fp < &__preinit_array_end; fp++) { - (*fp)(); - } - for (fp = &__init_array_start; fp < &__init_array_end; fp++) { - 14b2: 42bc cmp r4, r7 - 14b4: d1f7 bne.n 14a6 - // (for example when creating a final executable which you will - // not debug) by setting the define 'DONT_RESET_ON_RESTART'. - // - #ifndef DONT_RESET_ON_RESTART - // Disable interrupts - __asm volatile ("cpsid i"); - 14b6: b672 cpsid i - // LPC_RGU->RESET_CTRL1 @ 0x40053104 - // Note that we do not use the CMSIS register access mechanism, - // as there is no guarantee that the project has been configured - // to use CMSIS. - // Write to LPC_RGU->RESET_CTRL0 - *(RESET_CONTROL+0) = 0x10DF1000; - 14b8: f44f 5944 mov.w r9, #12544 ; 0x3100 - // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST| - // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST - // Write to LPC_RGU->RESET_CTRL1 - *(RESET_CONTROL+1) = 0x01DFF7FF; - 14bc: f243 1c04 movw ip, #12548 ; 0x3104 - // Clear all pending interrupts in the NVIC - volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280; - unsigned int irqpendloop; - for(irqpendloop = 0; irqpendloop < 8; irqpendloop++) - { - *(NVIC_ICPR+irqpendloop)= 0xFFFFFFFF; - 14c0: f24e 2e80 movw lr, #57984 ; 0xe280 - 14c4: f24e 2784 movw r7, #57988 ; 0xe284 - 14c8: f24e 2688 movw r6, #57992 ; 0xe288 - 14cc: f24e 258c movw r5, #57996 ; 0xe28c - 14d0: f24e 2490 movw r4, #58000 ; 0xe290 - 14d4: f24e 2094 movw r0, #58004 ; 0xe294 - 14d8: f24e 2198 movw r1, #58008 ; 0xe298 - 14dc: f24e 229c movw r2, #58012 ; 0xe29c - // LPC_RGU->RESET_CTRL1 @ 0x40053104 - // Note that we do not use the CMSIS register access mechanism, - // as there is no guarantee that the project has been configured - // to use CMSIS. - // Write to LPC_RGU->RESET_CTRL0 - *(RESET_CONTROL+0) = 0x10DF1000; - 14e0: f2c4 0905 movt r9, #16389 ; 0x4005 - // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST| - // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST - // Write to LPC_RGU->RESET_CTRL1 - *(RESET_CONTROL+1) = 0x01DFF7FF; - 14e4: f2c4 0c05 movt ip, #16389 ; 0x4005 - // Clear all pending interrupts in the NVIC - volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280; - unsigned int irqpendloop; - for(irqpendloop = 0; irqpendloop < 8; irqpendloop++) - { - *(NVIC_ICPR+irqpendloop)= 0xFFFFFFFF; - 14e8: f2ce 0e00 movt lr, #57344 ; 0xe000 - 14ec: f2ce 0700 movt r7, #57344 ; 0xe000 - 14f0: f2ce 0600 movt r6, #57344 ; 0xe000 - 14f4: f2ce 0500 movt r5, #57344 ; 0xe000 - 14f8: f2ce 0400 movt r4, #57344 ; 0xe000 - 14fc: f2ce 0000 movt r0, #57344 ; 0xe000 - 1500: f2ce 0100 movt r1, #57344 ; 0xe000 - 1504: f2ce 0200 movt r2, #57344 ; 0xe000 - // LPC_RGU->RESET_CTRL1 @ 0x40053104 - // Note that we do not use the CMSIS register access mechanism, - // as there is no guarantee that the project has been configured - // to use CMSIS. - // Write to LPC_RGU->RESET_CTRL0 - *(RESET_CONTROL+0) = 0x10DF1000; - 1508: f44f 5a80 mov.w sl, #4096 ; 0x1000 - // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST| - // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST - // Write to LPC_RGU->RESET_CTRL1 - *(RESET_CONTROL+1) = 0x01DFF7FF; - 150c: f24f 78ff movw r8, #63487 ; 0xf7ff - // Clear all pending interrupts in the NVIC - volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280; - unsigned int irqpendloop; - for(irqpendloop = 0; irqpendloop < 8; irqpendloop++) - { - *(NVIC_ICPR+irqpendloop)= 0xFFFFFFFF; - 1510: f04f 33ff mov.w r3, #4294967295 - // LPC_RGU->RESET_CTRL1 @ 0x40053104 - // Note that we do not use the CMSIS register access mechanism, - // as there is no guarantee that the project has been configured - // to use CMSIS. - // Write to LPC_RGU->RESET_CTRL0 - *(RESET_CONTROL+0) = 0x10DF1000; - 1514: f2c1 0adf movt sl, #4319 ; 0x10df - // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST| - // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST - // Write to LPC_RGU->RESET_CTRL1 - *(RESET_CONTROL+1) = 0x01DFF7FF; - 1518: f2c0 18df movt r8, #479 ; 0x1df - // LPC_RGU->RESET_CTRL1 @ 0x40053104 - // Note that we do not use the CMSIS register access mechanism, - // as there is no guarantee that the project has been configured - // to use CMSIS. - // Write to LPC_RGU->RESET_CTRL0 - *(RESET_CONTROL+0) = 0x10DF1000; - 151c: f8c9 a000 str.w sl, [r9] - // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST| - // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST - // Write to LPC_RGU->RESET_CTRL1 - *(RESET_CONTROL+1) = 0x01DFF7FF; - 1520: f8cc 8000 str.w r8, [ip] - // Clear all pending interrupts in the NVIC - volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280; - unsigned int irqpendloop; - for(irqpendloop = 0; irqpendloop < 8; irqpendloop++) - { - *(NVIC_ICPR+irqpendloop)= 0xFFFFFFFF; - 1524: f8ce 3000 str.w r3, [lr] - 1528: 603b str r3, [r7, #0] - 152a: 6033 str r3, [r6, #0] - 152c: 602b str r3, [r5, #0] - 152e: 6023 str r3, [r4, #0] - 1530: 6003 str r3, [r0, #0] - 1532: 600b str r3, [r1, #0] - 1534: 6013 str r3, [r2, #0] - } - // Reenable interrupts - __asm volatile ("cpsie i"); - 1536: b662 cpsie i - // equivalent to CMSIS '__enable_irq()' function - #endif // ifndef DONT_RESET_ON_RESTART - // ************************************************************* - - /* Copy the code from ROM to Real RAM (if enabled) */ - if ((&_etext_ram-&_text_ram) > 0) { - 1538: 4b3b ldr r3, [pc, #236] ; (1628 ) - 153a: 4e3c ldr r6, [pc, #240] ; (162c ) - 153c: 1b9d subs r5, r3, r6 - 153e: 2d03 cmp r5, #3 - 1540: dd33 ble.n 15aa - src = &_etext_rom-(&_etext_ram-&_text_ram); - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - 1542: f44f 5044 mov.w r0, #12544 ; 0x3100 - #endif // ifndef DONT_RESET_ON_RESTART - // ************************************************************* - - /* Copy the code from ROM to Real RAM (if enabled) */ - if ((&_etext_ram-&_text_ram) > 0) { - src = &_etext_rom-(&_etext_ram-&_text_ram); - 1546: 4a3a ldr r2, [pc, #232] ; (1630 ) - 1548: f025 0103 bic.w r1, r5, #3 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - 154c: f2c4 0004 movt r0, #16388 ; 0x4004 - #endif // ifndef DONT_RESET_ON_RESTART - // ************************************************************* - - /* Copy the code from ROM to Real RAM (if enabled) */ - if ((&_etext_ram-&_text_ram) > 0) { - src = &_etext_rom-(&_etext_ram-&_text_ram); - 1550: 1a52 subs r2, r2, r1 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 1552: 429e cmp r6, r3 - if ((&_etext_ram-&_text_ram) > 0) { - src = &_etext_rom-(&_etext_ram-&_text_ram); - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - 1554: 6002 str r2, [r0, #0] - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 1556: d223 bcs.n 15a0 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 1558: 1cdc adds r4, r3, #3 - 155a: 1d30 adds r0, r6, #4 - *dest++ = *src++; - 155c: 4613 mov r3, r2 - 155e: 1a25 subs r5, r4, r0 - 1560: f025 0503 bic.w r5, r5, #3 - 1564: f853 4b04 ldr.w r4, [r3], #4 - 1568: 4629 mov r1, r5 - 156a: 3504 adds r5, #4 - 156c: 1955 adds r5, r2, r5 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 156e: 42ab cmp r3, r5 - *dest++ = *src++; - 1570: 6034 str r4, [r6, #0] - 1572: f3c1 0280 ubfx r2, r1, #2, #1 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 1576: d013 beq.n 15a0 - 1578: b132 cbz r2, 1588 - *dest++ = *src++; - 157a: f853 1b04 ldr.w r1, [r3], #4 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 157e: 42ab cmp r3, r5 - *dest++ = *src++; - 1580: 6001 str r1, [r0, #0] - 1582: f106 0008 add.w r0, r6, #8 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 1586: d00b beq.n 15a0 - *dest++ = *src++; - 1588: 4619 mov r1, r3 - 158a: 4602 mov r2, r0 - 158c: f851 4b04 ldr.w r4, [r1], #4 - 1590: f842 4b04 str.w r4, [r2], #4 - 1594: 685c ldr r4, [r3, #4] - 1596: 1d0b adds r3, r1, #4 - 1598: 6044 str r4, [r0, #4] - 159a: 1d10 adds r0, r2, #4 - /* Change Shadow memory to ROM (for Debug Purpose in case Boot - * has not set correctly the M4MEMMAP because of debug) - */ - CREG_M4MEMMAP = (unsigned long)src; - - for (dest = &_text_ram; dest < &_etext_ram; ) { - 159c: 42ab cmp r3, r5 - 159e: d1f3 bne.n 1588 - *dest++ = *src++; - } - - /* Change Shadow memory to Real RAM */ - CREG_M4MEMMAP = (unsigned long)&_text_ram; - 15a0: f44f 5344 mov.w r3, #12544 ; 0x3100 - 15a4: f2c4 0304 movt r3, #16388 ; 0x4004 - 15a8: 601e str r6, [r3, #0] - - /* Continue Execution in RAM */ - } - - /* Enable access to Floating-Point coprocessor. */ - SCB_CPACR |= SCB_CPACR_FULL * (SCB_CPACR_CP10 | SCB_CPACR_CP11); - 15aa: f64e 5588 movw r5, #60808 ; 0xed88 - 15ae: f2ce 0500 movt r5, #57344 ; 0xe000 - 15b2: 6828 ldr r0, [r5, #0] - 15b4: f440 0170 orr.w r1, r0, #15728640 ; 0xf00000 - 15b8: 6029 str r1, [r5, #0] - - /* might be provided by platform specific vector.c */ - pre_main(); - - /* Call the application's entry point. */ - main(); - 15ba: f7fe fedd bl 378
- - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - 15be: 4d1d ldr r5, [pc, #116] ; (1634 ) - 15c0: 4a1d ldr r2, [pc, #116] ; (1638 ) - 15c2: 4295 cmp r5, r2 - 15c4: d21d bcs.n 1602 - .irq = { - IRQ_HANDLERS - } -}; - -void WEAK __attribute__ ((naked)) reset_handler(void) - 15c6: 1cd7 adds r7, r2, #3 - 15c8: 1d2e adds r6, r5, #4 - 15ca: 1bbc subs r4, r7, r6 - 15cc: 08a3 lsrs r3, r4, #2 - 15ce: 1c5f adds r7, r3, #1 - 15d0: 2401 movs r4, #1 - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - (*fp)(); - 15d2: 6828 ldr r0, [r5, #0] - 15d4: ea03 0804 and.w r8, r3, r4 - 15d8: 4780 blx r0 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - 15da: 42bc cmp r4, r7 - 15dc: d011 beq.n 1602 - 15de: f1b8 0f00 cmp.w r8, #0 - 15e2: d005 beq.n 15f0 - 15e4: 2402 movs r4, #2 - (*fp)(); - 15e6: 6831 ldr r1, [r6, #0] - 15e8: 4788 blx r1 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - 15ea: 42bc cmp r4, r7 - 15ec: 4635 mov r5, r6 - 15ee: d008 beq.n 1602 - (*fp)(); - 15f0: 686a ldr r2, [r5, #4] - 15f2: 4790 blx r2 - 15f4: 3402 adds r4, #2 - 15f6: 68ab ldr r3, [r5, #8] - 15f8: 1d2e adds r6, r5, #4 - 15fa: 4798 blx r3 - 15fc: 3508 adds r5, #8 - - /* Call the application's entry point. */ - main(); - - /* Destructors. */ - for (fp = &__fini_array_start; fp < &__fini_array_end; fp++) { - 15fe: 42bc cmp r4, r7 - 1600: d1f6 bne.n 15f0 -void WEAK __attribute__ ((naked)) reset_handler(void) -{ - volatile unsigned *src, *dest; - funcp_t *fp; - - for (src = &_data_loadaddr, dest = &_data; - 1602: 460b mov r3, r1 - 1604: e6fb b.n 13fe - 1606: bf00 nop - 1608: 10080000 .word 0x10080000 - 160c: 1008001c .word 0x1008001c - 1610: 000050c0 .word 0x000050c0 - 1614: 10080088 .word 0x10080088 - 1618: 000050b8 .word 0x000050b8 - 161c: 000050b8 .word 0x000050b8 - 1620: 000050b8 .word 0x000050b8 - 1624: 000050b8 .word 0x000050b8 - 1628: 100050c0 .word 0x100050c0 - 162c: 10000000 .word 0x10000000 - 1630: 800050c0 .word 0x800050c0 - 1634: 000050b8 .word 0x000050b8 - 1638: 000050b8 .word 0x000050b8 - -0000163c : - * @param[in] irqn Unsigned int8. Interrupt number @ref nvic_stm32f1_userint - */ - -void nvic_enable_irq(uint8_t irqn) -{ - NVIC_ISER(irqn / 32) = (1 << (irqn % 32)); - 163c: 0943 lsrs r3, r0, #5 - 163e: 0099 lsls r1, r3, #2 - 1640: f101 4260 add.w r2, r1, #3758096384 ; 0xe0000000 - 1644: f502 4361 add.w r3, r2, #57600 ; 0xe100 - 1648: f000 001f and.w r0, r0, #31 - 164c: 2101 movs r1, #1 - 164e: fa01 f200 lsl.w r2, r1, r0 - 1652: 601a str r2, [r3, #0] - 1654: 4770 bx lr - 1656: bf00 nop - -00001658 : -void nvic_set_priority(uint8_t irqn, uint8_t priority) -{ - /* code from lpc43xx/nvic.c -- this is quite a hack and alludes to the - * negative interrupt numbers assigned to the system interrupts. better - * handling would mean signed integers. */ - if (irqn >= NVIC_IRQ_COUNT) { - 1658: 2834 cmp r0, #52 ; 0x34 - 165a: d805 bhi.n 1668 - /* Cortex-M system interrupts */ - SCS_SHPR((irqn & 0xF) - 4) = priority; - } else { - /* Device specific interrupts */ - NVIC_IPR(irqn) = priority; - 165c: f100 4060 add.w r0, r0, #3758096384 ; 0xe0000000 - 1660: f500 4264 add.w r2, r0, #58368 ; 0xe400 - 1664: 7011 strb r1, [r2, #0] - 1666: 4770 bx lr - /* code from lpc43xx/nvic.c -- this is quite a hack and alludes to the - * negative interrupt numbers assigned to the system interrupts. better - * handling would mean signed integers. */ - if (irqn >= NVIC_IRQ_COUNT) { - /* Cortex-M system interrupts */ - SCS_SHPR((irqn & 0xF) - 4) = priority; - 1668: f64e 5314 movw r3, #60692 ; 0xed14 - 166c: f000 000f and.w r0, r0, #15 - 1670: f2ce 0300 movt r3, #57344 ; 0xe000 - 1674: 54c1 strb r1, [r0, r3] - 1676: 4770 bx lr - -00001678 <__aeabi_ldivmod>: - 1678: b973 cbnz r3, 1698 <__aeabi_ldivmod+0x20> - 167a: b96a cbnz r2, 1698 <__aeabi_ldivmod+0x20> - 167c: 2900 cmp r1, #0 - 167e: bf08 it eq - 1680: 2800 cmpeq r0, #0 - 1682: bfbc itt lt - 1684: 2000 movlt r0, #0 - 1686: f04f 4100 movlt.w r1, #2147483648 ; 0x80000000 - 168a: bfc4 itt gt - 168c: f06f 4100 mvngt.w r1, #2147483648 ; 0x80000000 - 1690: f04f 30ff movgt.w r0, #4294967295 - 1694: f000 b838 b.w 1708 <__aeabi_idiv0> - 1698: b082 sub sp, #8 - 169a: 46ec mov ip, sp - 169c: e92d 5000 stmdb sp!, {ip, lr} - 16a0: f000 f806 bl 16b0 <__gnu_ldivmod_helper> - 16a4: f8dd e004 ldr.w lr, [sp, #4] - 16a8: b002 add sp, #8 - 16aa: bc0c pop {r2, r3} - 16ac: 4770 bx lr - 16ae: bf00 nop - -000016b0 <__gnu_ldivmod_helper>: - 16b0: b5f8 push {r3, r4, r5, r6, r7, lr} - 16b2: 4616 mov r6, r2 - 16b4: 4604 mov r4, r0 - 16b6: 460d mov r5, r1 - 16b8: 461f mov r7, r3 - 16ba: f000 f827 bl 170c <__divdi3> - 16be: fb06 f301 mul.w r3, r6, r1 - 16c2: fb00 3707 mla r7, r0, r7, r3 - 16c6: fba6 2300 umull r2, r3, r6, r0 - 16ca: 18fb adds r3, r7, r3 - 16cc: 1aa2 subs r2, r4, r2 - 16ce: eb65 0303 sbc.w r3, r5, r3 - 16d2: 9c06 ldr r4, [sp, #24] - 16d4: e9c4 2300 strd r2, r3, [r4] - 16d8: bdf8 pop {r3, r4, r5, r6, r7, pc} - 16da: bf00 nop - -000016dc <__gnu_uldivmod_helper>: - 16dc: b5f8 push {r3, r4, r5, r6, r7, lr} - 16de: 4616 mov r6, r2 - 16e0: 4604 mov r4, r0 - 16e2: 460d mov r5, r1 - 16e4: 461f mov r7, r3 - 16e6: f000 f96f bl 19c8 <__udivdi3> - 16ea: fb00 f707 mul.w r7, r0, r7 - 16ee: fba0 2306 umull r2, r3, r0, r6 - 16f2: fb06 7701 mla r7, r6, r1, r7 - 16f6: 18fb adds r3, r7, r3 - 16f8: 1aa2 subs r2, r4, r2 - 16fa: eb65 0303 sbc.w r3, r5, r3 - 16fe: 9c06 ldr r4, [sp, #24] - 1700: e9c4 2300 strd r2, r3, [r4] - 1704: bdf8 pop {r3, r4, r5, r6, r7, pc} - 1706: bf00 nop - -00001708 <__aeabi_idiv0>: - 1708: 4770 bx lr - 170a: bf00 nop - -0000170c <__divdi3>: - 170c: 2900 cmp r1, #0 - 170e: e92d 0ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp} - 1712: 461d mov r5, r3 - 1714: f2c0 809d blt.w 1852 <__divdi3+0x146> - 1718: 2400 movs r4, #0 - 171a: 2d00 cmp r5, #0 - 171c: f2c0 8094 blt.w 1848 <__divdi3+0x13c> - 1720: 4680 mov r8, r0 - 1722: 460f mov r7, r1 - 1724: 4694 mov ip, r2 - 1726: 461e mov r6, r3 - 1728: bbe3 cbnz r3, 17a4 <__divdi3+0x98> - 172a: 428a cmp r2, r1 - 172c: d955 bls.n 17da <__divdi3+0xce> - 172e: fab2 f782 clz r7, r2 - 1732: b147 cbz r7, 1746 <__divdi3+0x3a> - 1734: f1c7 0520 rsb r5, r7, #32 - 1738: fa20 f605 lsr.w r6, r0, r5 - 173c: fa01 f107 lsl.w r1, r1, r7 - 1740: 40ba lsls r2, r7 - 1742: 4331 orrs r1, r6 - 1744: 40b8 lsls r0, r7 - 1746: 0c17 lsrs r7, r2, #16 - 1748: fbb1 f6f7 udiv r6, r1, r7 - 174c: 0c03 lsrs r3, r0, #16 - 174e: fa1f fc82 uxth.w ip, r2 - 1752: fb07 1116 mls r1, r7, r6, r1 - 1756: fb0c f506 mul.w r5, ip, r6 - 175a: ea43 4301 orr.w r3, r3, r1, lsl #16 - 175e: 429d cmp r5, r3 - 1760: d908 bls.n 1774 <__divdi3+0x68> - 1762: 1e71 subs r1, r6, #1 - 1764: 189b adds r3, r3, r2 - 1766: f080 8113 bcs.w 1990 <__divdi3+0x284> - 176a: 429d cmp r5, r3 - 176c: f240 8110 bls.w 1990 <__divdi3+0x284> - 1770: 3e02 subs r6, #2 - 1772: 189b adds r3, r3, r2 - 1774: 1b59 subs r1, r3, r5 - 1776: fbb1 f5f7 udiv r5, r1, r7 - 177a: fb07 1315 mls r3, r7, r5, r1 - 177e: b280 uxth r0, r0 - 1780: fb0c fc05 mul.w ip, ip, r5 - 1784: ea40 4103 orr.w r1, r0, r3, lsl #16 - 1788: 458c cmp ip, r1 - 178a: d907 bls.n 179c <__divdi3+0x90> - 178c: 1e6b subs r3, r5, #1 - 178e: 188a adds r2, r1, r2 - 1790: f080 8100 bcs.w 1994 <__divdi3+0x288> - 1794: 4594 cmp ip, r2 - 1796: f240 80fd bls.w 1994 <__divdi3+0x288> - 179a: 3d02 subs r5, #2 - 179c: ea45 4106 orr.w r1, r5, r6, lsl #16 - 17a0: 2500 movs r5, #0 - 17a2: e003 b.n 17ac <__divdi3+0xa0> - 17a4: 428b cmp r3, r1 - 17a6: d90c bls.n 17c2 <__divdi3+0xb6> - 17a8: 2500 movs r5, #0 - 17aa: 4629 mov r1, r5 - 17ac: 460a mov r2, r1 - 17ae: 462b mov r3, r5 - 17b0: b114 cbz r4, 17b8 <__divdi3+0xac> - 17b2: 4252 negs r2, r2 - 17b4: eb63 0343 sbc.w r3, r3, r3, lsl #1 - 17b8: 4610 mov r0, r2 - 17ba: 4619 mov r1, r3 - 17bc: e8bd 0ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp} - 17c0: 4770 bx lr - 17c2: fab3 f583 clz r5, r3 - 17c6: 2d00 cmp r5, #0 - 17c8: f040 8087 bne.w 18da <__divdi3+0x1ce> - 17cc: 428b cmp r3, r1 - 17ce: d301 bcc.n 17d4 <__divdi3+0xc8> - 17d0: 4282 cmp r2, r0 - 17d2: d8ea bhi.n 17aa <__divdi3+0x9e> - 17d4: 2500 movs r5, #0 - 17d6: 2101 movs r1, #1 - 17d8: e7e8 b.n 17ac <__divdi3+0xa0> - 17da: b912 cbnz r2, 17e2 <__divdi3+0xd6> - 17dc: 2601 movs r6, #1 - 17de: fbb6 f2f2 udiv r2, r6, r2 - 17e2: fab2 f682 clz r6, r2 - 17e6: 2e00 cmp r6, #0 - 17e8: d139 bne.n 185e <__divdi3+0x152> - 17ea: 1a8e subs r6, r1, r2 - 17ec: 0c13 lsrs r3, r2, #16 - 17ee: fa1f fc82 uxth.w ip, r2 - 17f2: 2501 movs r5, #1 - 17f4: fbb6 f7f3 udiv r7, r6, r3 - 17f8: fb03 6117 mls r1, r3, r7, r6 - 17fc: ea4f 4910 mov.w r9, r0, lsr #16 - 1800: fb0c f807 mul.w r8, ip, r7 - 1804: ea49 4601 orr.w r6, r9, r1, lsl #16 - 1808: 45b0 cmp r8, r6 - 180a: d906 bls.n 181a <__divdi3+0x10e> - 180c: 1e79 subs r1, r7, #1 - 180e: 18b6 adds r6, r6, r2 - 1810: d202 bcs.n 1818 <__divdi3+0x10c> - 1812: 45b0 cmp r8, r6 - 1814: f200 80d3 bhi.w 19be <__divdi3+0x2b2> - 1818: 460f mov r7, r1 - 181a: ebc8 0606 rsb r6, r8, r6 - 181e: fbb6 f1f3 udiv r1, r6, r3 - 1822: fb03 6311 mls r3, r3, r1, r6 - 1826: b280 uxth r0, r0 - 1828: fb0c fc01 mul.w ip, ip, r1 - 182c: ea40 4303 orr.w r3, r0, r3, lsl #16 - 1830: 459c cmp ip, r3 - 1832: d906 bls.n 1842 <__divdi3+0x136> - 1834: 1e4e subs r6, r1, #1 - 1836: 189a adds r2, r3, r2 - 1838: d202 bcs.n 1840 <__divdi3+0x134> - 183a: 4594 cmp ip, r2 - 183c: f200 80c2 bhi.w 19c4 <__divdi3+0x2b8> - 1840: 4631 mov r1, r6 - 1842: ea41 4107 orr.w r1, r1, r7, lsl #16 - 1846: e7b1 b.n 17ac <__divdi3+0xa0> - 1848: 43e4 mvns r4, r4 - 184a: 4252 negs r2, r2 - 184c: eb63 0343 sbc.w r3, r3, r3, lsl #1 - 1850: e766 b.n 1720 <__divdi3+0x14> - 1852: 4240 negs r0, r0 - 1854: eb61 0141 sbc.w r1, r1, r1, lsl #1 - 1858: f04f 34ff mov.w r4, #4294967295 - 185c: e75d b.n 171a <__divdi3+0xe> - 185e: 40b2 lsls r2, r6 - 1860: f1c6 0920 rsb r9, r6, #32 - 1864: fa21 f709 lsr.w r7, r1, r9 - 1868: fa20 f509 lsr.w r5, r0, r9 - 186c: 0c13 lsrs r3, r2, #16 - 186e: fa01 f106 lsl.w r1, r1, r6 - 1872: fbb7 f8f3 udiv r8, r7, r3 - 1876: ea45 0901 orr.w r9, r5, r1 - 187a: fa1f fc82 uxth.w ip, r2 - 187e: fb03 7718 mls r7, r3, r8, r7 - 1882: ea4f 4119 mov.w r1, r9, lsr #16 - 1886: fb0c f508 mul.w r5, ip, r8 - 188a: ea41 4707 orr.w r7, r1, r7, lsl #16 - 188e: 40b0 lsls r0, r6 - 1890: 42bd cmp r5, r7 - 1892: d90a bls.n 18aa <__divdi3+0x19e> - 1894: 18bf adds r7, r7, r2 - 1896: f108 36ff add.w r6, r8, #4294967295 - 189a: f080 808e bcs.w 19ba <__divdi3+0x2ae> - 189e: 42bd cmp r5, r7 - 18a0: f240 808b bls.w 19ba <__divdi3+0x2ae> - 18a4: f1a8 0802 sub.w r8, r8, #2 - 18a8: 18bf adds r7, r7, r2 - 18aa: 1b79 subs r1, r7, r5 - 18ac: fbb1 f5f3 udiv r5, r1, r3 - 18b0: fb03 1715 mls r7, r3, r5, r1 - 18b4: fa1f f989 uxth.w r9, r9 - 18b8: fb0c f605 mul.w r6, ip, r5 - 18bc: ea49 4107 orr.w r1, r9, r7, lsl #16 - 18c0: 428e cmp r6, r1 - 18c2: d906 bls.n 18d2 <__divdi3+0x1c6> - 18c4: 1e6f subs r7, r5, #1 - 18c6: 1889 adds r1, r1, r2 - 18c8: d271 bcs.n 19ae <__divdi3+0x2a2> - 18ca: 428e cmp r6, r1 - 18cc: d96f bls.n 19ae <__divdi3+0x2a2> - 18ce: 3d02 subs r5, #2 - 18d0: 1889 adds r1, r1, r2 - 18d2: 1b8e subs r6, r1, r6 - 18d4: ea45 4508 orr.w r5, r5, r8, lsl #16 - 18d8: e78c b.n 17f4 <__divdi3+0xe8> - 18da: f1c5 0120 rsb r1, r5, #32 - 18de: fa22 f301 lsr.w r3, r2, r1 - 18e2: fa06 f605 lsl.w r6, r6, r5 - 18e6: 431e orrs r6, r3 - 18e8: fa27 f201 lsr.w r2, r7, r1 - 18ec: ea4f 4916 mov.w r9, r6, lsr #16 - 18f0: fa07 f705 lsl.w r7, r7, r5 - 18f4: fa20 f101 lsr.w r1, r0, r1 - 18f8: fbb2 f8f9 udiv r8, r2, r9 - 18fc: 430f orrs r7, r1 - 18fe: 0c3b lsrs r3, r7, #16 - 1900: fa1f fa86 uxth.w sl, r6 - 1904: fb09 2218 mls r2, r9, r8, r2 - 1908: fb0a fb08 mul.w fp, sl, r8 - 190c: ea43 4202 orr.w r2, r3, r2, lsl #16 - 1910: 4593 cmp fp, r2 - 1912: fa0c fc05 lsl.w ip, ip, r5 - 1916: d908 bls.n 192a <__divdi3+0x21e> - 1918: 1992 adds r2, r2, r6 - 191a: f108 31ff add.w r1, r8, #4294967295 - 191e: d24a bcs.n 19b6 <__divdi3+0x2aa> - 1920: 4593 cmp fp, r2 - 1922: d948 bls.n 19b6 <__divdi3+0x2aa> - 1924: f1a8 0802 sub.w r8, r8, #2 - 1928: 1992 adds r2, r2, r6 - 192a: ebcb 0302 rsb r3, fp, r2 - 192e: fbb3 f1f9 udiv r1, r3, r9 - 1932: fb09 3211 mls r2, r9, r1, r3 - 1936: b2bf uxth r7, r7 - 1938: fb0a fa01 mul.w sl, sl, r1 - 193c: ea47 4302 orr.w r3, r7, r2, lsl #16 - 1940: 459a cmp sl, r3 - 1942: d906 bls.n 1952 <__divdi3+0x246> - 1944: 1e4a subs r2, r1, #1 - 1946: 199b adds r3, r3, r6 - 1948: d233 bcs.n 19b2 <__divdi3+0x2a6> - 194a: 459a cmp sl, r3 - 194c: d931 bls.n 19b2 <__divdi3+0x2a6> - 194e: 3902 subs r1, #2 - 1950: 199b adds r3, r3, r6 - 1952: ea41 4108 orr.w r1, r1, r8, lsl #16 - 1956: 0c0f lsrs r7, r1, #16 - 1958: fa1f f88c uxth.w r8, ip - 195c: fb08 f607 mul.w r6, r8, r7 - 1960: b28a uxth r2, r1 - 1962: ea4f 4c1c mov.w ip, ip, lsr #16 - 1966: fb08 f802 mul.w r8, r8, r2 - 196a: fb0c 6202 mla r2, ip, r2, r6 - 196e: eb02 4218 add.w r2, r2, r8, lsr #16 - 1972: fb0c fc07 mul.w ip, ip, r7 - 1976: 4296 cmp r6, r2 - 1978: bf88 it hi - 197a: f50c 3c80 addhi.w ip, ip, #65536 ; 0x10000 - 197e: ebca 0303 rsb r3, sl, r3 - 1982: eb0c 4c12 add.w ip, ip, r2, lsr #16 - 1986: 4563 cmp r3, ip - 1988: d30e bcc.n 19a8 <__divdi3+0x29c> - 198a: d005 beq.n 1998 <__divdi3+0x28c> - 198c: 2500 movs r5, #0 - 198e: e70d b.n 17ac <__divdi3+0xa0> - 1990: 460e mov r6, r1 - 1992: e6ef b.n 1774 <__divdi3+0x68> - 1994: 461d mov r5, r3 - 1996: e701 b.n 179c <__divdi3+0x90> - 1998: fa1f f888 uxth.w r8, r8 - 199c: fa00 f005 lsl.w r0, r0, r5 - 19a0: eb08 4502 add.w r5, r8, r2, lsl #16 - 19a4: 42a8 cmp r0, r5 - 19a6: d2f1 bcs.n 198c <__divdi3+0x280> - 19a8: 3901 subs r1, #1 - 19aa: 2500 movs r5, #0 - 19ac: e6fe b.n 17ac <__divdi3+0xa0> - 19ae: 463d mov r5, r7 - 19b0: e78f b.n 18d2 <__divdi3+0x1c6> - 19b2: 4611 mov r1, r2 - 19b4: e7cd b.n 1952 <__divdi3+0x246> - 19b6: 4688 mov r8, r1 - 19b8: e7b7 b.n 192a <__divdi3+0x21e> - 19ba: 46b0 mov r8, r6 - 19bc: e775 b.n 18aa <__divdi3+0x19e> - 19be: 3f02 subs r7, #2 - 19c0: 18b6 adds r6, r6, r2 - 19c2: e72a b.n 181a <__divdi3+0x10e> - 19c4: 3902 subs r1, #2 - 19c6: e73c b.n 1842 <__divdi3+0x136> - -000019c8 <__udivdi3>: - 19c8: e92d 07f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl} - 19cc: 4614 mov r4, r2 - 19ce: 4605 mov r5, r0 - 19d0: 460e mov r6, r1 - 19d2: 2b00 cmp r3, #0 - 19d4: d13d bne.n 1a52 <__udivdi3+0x8a> - 19d6: 428a cmp r2, r1 - 19d8: d949 bls.n 1a6e <__udivdi3+0xa6> - 19da: fab2 f782 clz r7, r2 - 19de: b147 cbz r7, 19f2 <__udivdi3+0x2a> - 19e0: f1c7 0120 rsb r1, r7, #32 - 19e4: fa20 f201 lsr.w r2, r0, r1 - 19e8: fa06 f607 lsl.w r6, r6, r7 - 19ec: 40bc lsls r4, r7 - 19ee: 4316 orrs r6, r2 - 19f0: 40bd lsls r5, r7 - 19f2: 0c22 lsrs r2, r4, #16 - 19f4: fbb6 f0f2 udiv r0, r6, r2 - 19f8: 0c2f lsrs r7, r5, #16 - 19fa: b2a1 uxth r1, r4 - 19fc: fb02 6610 mls r6, r2, r0, r6 - 1a00: fb01 f300 mul.w r3, r1, r0 - 1a04: ea47 4606 orr.w r6, r7, r6, lsl #16 - 1a08: 42b3 cmp r3, r6 - 1a0a: d908 bls.n 1a1e <__udivdi3+0x56> - 1a0c: 1e47 subs r7, r0, #1 - 1a0e: 1936 adds r6, r6, r4 - 1a10: f080 80f8 bcs.w 1c04 <__udivdi3+0x23c> - 1a14: 42b3 cmp r3, r6 - 1a16: f240 80f5 bls.w 1c04 <__udivdi3+0x23c> - 1a1a: 3802 subs r0, #2 - 1a1c: 1936 adds r6, r6, r4 - 1a1e: 1af6 subs r6, r6, r3 - 1a20: fbb6 f3f2 udiv r3, r6, r2 - 1a24: fb02 6213 mls r2, r2, r3, r6 - 1a28: b2ad uxth r5, r5 - 1a2a: fb01 f103 mul.w r1, r1, r3 - 1a2e: ea45 4202 orr.w r2, r5, r2, lsl #16 - 1a32: 4291 cmp r1, r2 - 1a34: d907 bls.n 1a46 <__udivdi3+0x7e> - 1a36: 1e5e subs r6, r3, #1 - 1a38: 1912 adds r2, r2, r4 - 1a3a: f080 80e5 bcs.w 1c08 <__udivdi3+0x240> - 1a3e: 4291 cmp r1, r2 - 1a40: f240 80e2 bls.w 1c08 <__udivdi3+0x240> - 1a44: 3b02 subs r3, #2 - 1a46: ea43 4000 orr.w r0, r3, r0, lsl #16 - 1a4a: 2100 movs r1, #0 - 1a4c: e8bd 07f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl} - 1a50: 4770 bx lr - 1a52: 428b cmp r3, r1 - 1a54: d843 bhi.n 1ade <__udivdi3+0x116> - 1a56: fab3 f483 clz r4, r3 - 1a5a: 2c00 cmp r4, #0 - 1a5c: d142 bne.n 1ae4 <__udivdi3+0x11c> - 1a5e: 428b cmp r3, r1 - 1a60: d302 bcc.n 1a68 <__udivdi3+0xa0> - 1a62: 4282 cmp r2, r0 - 1a64: f200 80df bhi.w 1c26 <__udivdi3+0x25e> - 1a68: 2100 movs r1, #0 - 1a6a: 2001 movs r0, #1 - 1a6c: e7ee b.n 1a4c <__udivdi3+0x84> - 1a6e: b912 cbnz r2, 1a76 <__udivdi3+0xae> - 1a70: 2701 movs r7, #1 - 1a72: fbb7 f4f2 udiv r4, r7, r2 - 1a76: fab4 f284 clz r2, r4 - 1a7a: 2a00 cmp r2, #0 - 1a7c: f040 8088 bne.w 1b90 <__udivdi3+0x1c8> - 1a80: 1b0a subs r2, r1, r4 - 1a82: 0c23 lsrs r3, r4, #16 - 1a84: b2a7 uxth r7, r4 - 1a86: 2101 movs r1, #1 - 1a88: fbb2 f6f3 udiv r6, r2, r3 - 1a8c: fb03 2216 mls r2, r3, r6, r2 - 1a90: ea4f 4c15 mov.w ip, r5, lsr #16 - 1a94: fb07 f006 mul.w r0, r7, r6 - 1a98: ea4c 4202 orr.w r2, ip, r2, lsl #16 - 1a9c: 4290 cmp r0, r2 - 1a9e: d907 bls.n 1ab0 <__udivdi3+0xe8> - 1aa0: 1912 adds r2, r2, r4 - 1aa2: f106 3cff add.w ip, r6, #4294967295 - 1aa6: d202 bcs.n 1aae <__udivdi3+0xe6> - 1aa8: 4290 cmp r0, r2 - 1aaa: f200 80ce bhi.w 1c4a <__udivdi3+0x282> - 1aae: 4666 mov r6, ip - 1ab0: 1a12 subs r2, r2, r0 - 1ab2: fbb2 f0f3 udiv r0, r2, r3 - 1ab6: fb03 2310 mls r3, r3, r0, r2 - 1aba: b2ad uxth r5, r5 - 1abc: fb07 f700 mul.w r7, r7, r0 - 1ac0: ea45 4303 orr.w r3, r5, r3, lsl #16 - 1ac4: 429f cmp r7, r3 - 1ac6: d907 bls.n 1ad8 <__udivdi3+0x110> - 1ac8: 1e42 subs r2, r0, #1 - 1aca: 191b adds r3, r3, r4 - 1acc: f080 809e bcs.w 1c0c <__udivdi3+0x244> - 1ad0: 429f cmp r7, r3 - 1ad2: f240 809b bls.w 1c0c <__udivdi3+0x244> - 1ad6: 3802 subs r0, #2 - 1ad8: ea40 4006 orr.w r0, r0, r6, lsl #16 - 1adc: e7b6 b.n 1a4c <__udivdi3+0x84> - 1ade: 2100 movs r1, #0 - 1ae0: 4608 mov r0, r1 - 1ae2: e7b3 b.n 1a4c <__udivdi3+0x84> - 1ae4: f1c4 0620 rsb r6, r4, #32 - 1ae8: fa22 f506 lsr.w r5, r2, r6 - 1aec: fa03 f304 lsl.w r3, r3, r4 - 1af0: 432b orrs r3, r5 - 1af2: ea4f 4c13 mov.w ip, r3, lsr #16 - 1af6: fa21 f506 lsr.w r5, r1, r6 - 1afa: fa01 f104 lsl.w r1, r1, r4 - 1afe: fa20 f606 lsr.w r6, r0, r6 - 1b02: fbb5 f7fc udiv r7, r5, ip - 1b06: ea46 0a01 orr.w sl, r6, r1 - 1b0a: fa1f f883 uxth.w r8, r3 - 1b0e: fb0c 5517 mls r5, ip, r7, r5 - 1b12: ea4f 411a mov.w r1, sl, lsr #16 - 1b16: fb08 f907 mul.w r9, r8, r7 - 1b1a: ea41 4505 orr.w r5, r1, r5, lsl #16 - 1b1e: 45a9 cmp r9, r5 - 1b20: fa02 f204 lsl.w r2, r2, r4 - 1b24: d903 bls.n 1b2e <__udivdi3+0x166> - 1b26: 1e7e subs r6, r7, #1 - 1b28: 18ed adds r5, r5, r3 - 1b2a: d37f bcc.n 1c2c <__udivdi3+0x264> - 1b2c: 4637 mov r7, r6 - 1b2e: ebc9 0105 rsb r1, r9, r5 - 1b32: fbb1 f6fc udiv r6, r1, ip - 1b36: fb0c 1516 mls r5, ip, r6, r1 - 1b3a: fa1f fa8a uxth.w sl, sl - 1b3e: fb08 f806 mul.w r8, r8, r6 - 1b42: ea4a 4105 orr.w r1, sl, r5, lsl #16 - 1b46: 4588 cmp r8, r1 - 1b48: d903 bls.n 1b52 <__udivdi3+0x18a> - 1b4a: 1e75 subs r5, r6, #1 - 1b4c: 18c9 adds r1, r1, r3 - 1b4e: d373 bcc.n 1c38 <__udivdi3+0x270> - 1b50: 462e mov r6, r5 - 1b52: ea46 4607 orr.w r6, r6, r7, lsl #16 - 1b56: 0c37 lsrs r7, r6, #16 - 1b58: fa1f fc82 uxth.w ip, r2 - 1b5c: fb0c f507 mul.w r5, ip, r7 - 1b60: 0c12 lsrs r2, r2, #16 - 1b62: b2b3 uxth r3, r6 - 1b64: fb0c fc03 mul.w ip, ip, r3 - 1b68: fb02 5303 mla r3, r2, r3, r5 - 1b6c: eb03 431c add.w r3, r3, ip, lsr #16 - 1b70: fb02 f207 mul.w r2, r2, r7 - 1b74: 429d cmp r5, r3 - 1b76: bf88 it hi - 1b78: f502 3280 addhi.w r2, r2, #65536 ; 0x10000 - 1b7c: ebc8 0101 rsb r1, r8, r1 - 1b80: eb02 4213 add.w r2, r2, r3, lsr #16 - 1b84: 4291 cmp r1, r2 - 1b86: d34b bcc.n 1c20 <__udivdi3+0x258> - 1b88: d042 beq.n 1c10 <__udivdi3+0x248> - 1b8a: 4630 mov r0, r6 - 1b8c: 2100 movs r1, #0 - 1b8e: e75d b.n 1a4c <__udivdi3+0x84> - 1b90: 4094 lsls r4, r2 - 1b92: f1c2 0520 rsb r5, r2, #32 - 1b96: fa21 f605 lsr.w r6, r1, r5 - 1b9a: 0c23 lsrs r3, r4, #16 - 1b9c: fa20 f705 lsr.w r7, r0, r5 - 1ba0: fa01 f102 lsl.w r1, r1, r2 - 1ba4: fbb6 fcf3 udiv ip, r6, r3 - 1ba8: 4339 orrs r1, r7 - 1baa: 0c0d lsrs r5, r1, #16 - 1bac: b2a7 uxth r7, r4 - 1bae: fb03 661c mls r6, r3, ip, r6 - 1bb2: ea45 4606 orr.w r6, r5, r6, lsl #16 - 1bb6: fb07 f80c mul.w r8, r7, ip - 1bba: 45b0 cmp r8, r6 - 1bbc: fa00 f502 lsl.w r5, r0, r2 - 1bc0: d908 bls.n 1bd4 <__udivdi3+0x20c> - 1bc2: 1936 adds r6, r6, r4 - 1bc4: f10c 30ff add.w r0, ip, #4294967295 - 1bc8: d23d bcs.n 1c46 <__udivdi3+0x27e> - 1bca: 45b0 cmp r8, r6 - 1bcc: d93b bls.n 1c46 <__udivdi3+0x27e> - 1bce: f1ac 0c02 sub.w ip, ip, #2 - 1bd2: 1936 adds r6, r6, r4 - 1bd4: ebc8 0206 rsb r2, r8, r6 - 1bd8: fbb2 f0f3 udiv r0, r2, r3 - 1bdc: fb03 2610 mls r6, r3, r0, r2 - 1be0: b28a uxth r2, r1 - 1be2: ea42 4206 orr.w r2, r2, r6, lsl #16 - 1be6: fb07 f100 mul.w r1, r7, r0 - 1bea: 4291 cmp r1, r2 - 1bec: d906 bls.n 1bfc <__udivdi3+0x234> - 1bee: 1e46 subs r6, r0, #1 - 1bf0: 1912 adds r2, r2, r4 - 1bf2: d226 bcs.n 1c42 <__udivdi3+0x27a> - 1bf4: 4291 cmp r1, r2 - 1bf6: d924 bls.n 1c42 <__udivdi3+0x27a> - 1bf8: 3802 subs r0, #2 - 1bfa: 1912 adds r2, r2, r4 - 1bfc: 1a52 subs r2, r2, r1 - 1bfe: ea40 410c orr.w r1, r0, ip, lsl #16 - 1c02: e741 b.n 1a88 <__udivdi3+0xc0> - 1c04: 4638 mov r0, r7 - 1c06: e70a b.n 1a1e <__udivdi3+0x56> - 1c08: 4633 mov r3, r6 - 1c0a: e71c b.n 1a46 <__udivdi3+0x7e> - 1c0c: 4610 mov r0, r2 - 1c0e: e763 b.n 1ad8 <__udivdi3+0x110> - 1c10: fa1f fc8c uxth.w ip, ip - 1c14: fa00 f004 lsl.w r0, r0, r4 - 1c18: eb0c 4303 add.w r3, ip, r3, lsl #16 - 1c1c: 4298 cmp r0, r3 - 1c1e: d2b4 bcs.n 1b8a <__udivdi3+0x1c2> - 1c20: 1e70 subs r0, r6, #1 - 1c22: 2100 movs r1, #0 - 1c24: e712 b.n 1a4c <__udivdi3+0x84> - 1c26: 4621 mov r1, r4 - 1c28: 4620 mov r0, r4 - 1c2a: e70f b.n 1a4c <__udivdi3+0x84> - 1c2c: 45a9 cmp r9, r5 - 1c2e: f67f af7d bls.w 1b2c <__udivdi3+0x164> - 1c32: 3f02 subs r7, #2 - 1c34: 18ed adds r5, r5, r3 - 1c36: e77a b.n 1b2e <__udivdi3+0x166> - 1c38: 4588 cmp r8, r1 - 1c3a: d989 bls.n 1b50 <__udivdi3+0x188> - 1c3c: 3e02 subs r6, #2 - 1c3e: 18c9 adds r1, r1, r3 - 1c40: e787 b.n 1b52 <__udivdi3+0x18a> - 1c42: 4630 mov r0, r6 - 1c44: e7da b.n 1bfc <__udivdi3+0x234> - 1c46: 4684 mov ip, r0 - 1c48: e7c4 b.n 1bd4 <__udivdi3+0x20c> - 1c4a: 3e02 subs r6, #2 - 1c4c: 1912 adds r2, r2, r4 - 1c4e: e72f b.n 1ab0 <__udivdi3+0xe8> - -00001c50 : - 1c50: 20000fe0 .word 0x20000fe0 - 1c54: 2000e555 .word 0x2000e555 - 1c58: 2000e551 .word 0x2000e551 - 1c5c: 2000ccd5 .word 0x2000ccd5 - ... - 1c7c: 2000e551 .word 0x2000e551 - ... - 1c88: 2000e551 .word 0x2000e551 - 1c8c: 2000e551 .word 0x2000e551 - 1c90: 2000e54d .word 0x2000e54d - 1c94: 2000c1d9 .word 0x2000c1d9 - 1c98: 2000e54d .word 0x2000e54d - 1c9c: 00000000 .word 0x00000000 - 1ca0: 2000e54d .word 0x2000e54d - 1ca4: 2000e54d .word 0x2000e54d - 1ca8: 2000e54d .word 0x2000e54d - 1cac: 2000e54d .word 0x2000e54d - 1cb0: 2000db25 .word 0x2000db25 - 1cb4: 2000e54d .word 0x2000e54d - 1cb8: 2000e54d .word 0x2000e54d - 1cbc: 2000e54d .word 0x2000e54d - 1cc0: 2000e54d .word 0x2000e54d - 1cc4: 2000e54d .word 0x2000e54d - 1cc8: 2000e54d .word 0x2000e54d - 1ccc: 2000e54d .word 0x2000e54d - 1cd0: 2000e54d .word 0x2000e54d - 1cd4: 2000e54d .word 0x2000e54d - 1cd8: 2000e54d .word 0x2000e54d - 1cdc: 2000e54d .word 0x2000e54d - 1ce0: 2000e54d .word 0x2000e54d - 1ce4: 2000e54d .word 0x2000e54d - 1ce8: 2000e54d .word 0x2000e54d - 1cec: 2000e54d .word 0x2000e54d - 1cf0: 2000e54d .word 0x2000e54d - 1cf4: 2000e54d .word 0x2000e54d - 1cf8: 2000e54d .word 0x2000e54d - 1cfc: 2000e54d .word 0x2000e54d - 1d00: 2000e54d .word 0x2000e54d - 1d04: 2000e54d .word 0x2000e54d - 1d08: 2000e54d .word 0x2000e54d - 1d0c: 2000e54d .word 0x2000e54d - 1d10: 6903b508 .word 0x6903b508 - 1d14: 28006858 .word 0x28006858 - 1d18: f000d001 .word 0xf000d001 - 1d1c: f000f915 .word 0xf000f915 - 1d20: bd08f8f9 .word 0xbd08f8f9 - 1d24: 22014b05 .word 0x22014b05 - 1d28: 70486819 .word 0x70486819 - 1d2c: f3bf700a .word 0xf3bf700a - 1d30: bf408f4f .word 0xbf408f4f - 1d34: 28006808 .word 0x28006808 - 1d38: 4770d1fc .word 0x4770d1fc - 1d3c: 2000ec6c .word 0x2000ec6c - 1d40: 22014b05 .word 0x22014b05 - 1d44: 70486819 .word 0x70486819 - 1d48: f3bf700a .word 0xf3bf700a - 1d4c: bf408f4f .word 0xbf408f4f - 1d50: 28006808 .word 0x28006808 - 1d54: 4770d1fc .word 0x4770d1fc - 1d58: 2000ec70 .word 0x2000ec70 - 1d5c: 4b20b538 .word 0x4b20b538 - 1d60: 68181c05 .word 0x68181c05 - 1d64: 70452201 .word 0x70452201 - 1d68: f3bf7002 .word 0xf3bf7002 - 1d6c: bf408f4f .word 0xbf408f4f - 1d70: 29006801 .word 0x29006801 - 1d74: 4c1bd1fc .word 0x4c1bd1fc - 1d78: 8b186823 .word 0x8b186823 - 1d7c: f84ef002 .word 0xf84ef002 - 1d80: 8b406820 .word 0x8b406820 - 1d84: f864f002 .word 0xf864f002 - 1d88: 2a00b26a .word 0x2a00b26a - 1d8c: 207fda12 .word 0x207fda12 - 1d90: 40056821 .word 0x40056821 - 1d94: 43552218 .word 0x43552218 - 1d98: 31041c08 .word 0x31041c08 - 1d9c: 30486fcb .word 0x30486fcb - 1da0: 69091959 .word 0x69091959 - 1da4: f820f001 .word 0xf820f001 - 1da8: 1c206824 .word 0x1c206824 - 1dac: 30483404 .word 0x30483404 - 1db0: e00d6fe3 .word 0xe00d6fe3 - 1db4: 68212318 .word 0x68212318 - 1db8: 6f8a435d .word 0x6f8a435d - 1dbc: 19511c08 .word 0x19511c08 - 1dc0: 69093048 .word 0x69093048 - 1dc4: f810f001 .word 0xf810f001 - 1dc8: 1c206824 .word 0x1c206824 - 1dcc: 30486fa3 .word 0x30486fa3 - 1dd0: 7d29195d .word 0x7d29195d - 1dd4: f828f001 .word 0xf828f001 - 1dd8: 20014a03 .word 0x20014a03 - 1ddc: bd386010 .word 0xbd386010 - 1de0: 2000ec78 .word 0x2000ec78 - 1de4: 2000ef28 .word 0x2000ef28 - 1de8: 2000f000 .word 0x2000f000 - 1dec: 1c04b510 .word 0x1c04b510 - 1df0: f840f001 .word 0xf840f001 - 1df4: 22024b0a .word 0x22024b0a - 1df8: 70446818 .word 0x70446818 - 1dfc: f3bf7002 .word 0xf3bf7002 - 1e00: bf408f4f .word 0xbf408f4f - 1e04: 29006801 .word 0x29006801 - 1e08: 4c06d1fc .word 0x4c06d1fc - 1e0c: 8b186823 .word 0x8b186823 - 1e10: f804f002 .word 0xf804f002 - 1e14: 8b806820 .word 0x8b806820 - 1e18: f81af002 .word 0xf81af002 - 1e1c: 46c0bd10 .word 0x46c0bd10 - 1e20: 2000ec78 .word 0x2000ec78 - 1e24: 2000ef28 .word 0x2000ef28 - 1e28: 22004b01 .word 0x22004b01 - 1e2c: 4770601a .word 0x4770601a - 1e30: 40043130 .word 0x40043130 - 1e34: b08cb570 .word 0xb08cb570 - 1e38: fc72f000 .word 0xfc72f000 - 1e3c: ac014b27 .word 0xac014b27 - 1e40: 30486818 .word 0x30486818 - 1e44: f84af001 .word 0xf84af001 - 1e48: f0014825 .word 0xf0014825 - 1e4c: f001feb5 .word 0xf001feb5 - 1e50: 4d24faf5 .word 0x4d24faf5 - 1e54: 1c292000 .word 0x1c292000 - 1e58: fbeef001 .word 0xfbeef001 - 1e5c: f0014822 .word 0xf0014822 - 1e60: 4822fd5f .word 0x4822fd5f - 1e64: fd5cf001 .word 0xfd5cf001 - 1e68: f0014821 .word 0xf0014821 - 1e6c: 4821fd59 .word 0x4821fd59 - 1e70: fd56f001 .word 0xfd56f001 - 1e74: f0014820 .word 0xf0014820 - 1e78: 4820fc35 .word 0x4820fc35 - 1e7c: fc32f001 .word 0xfc32f001 - 1e80: 7020203a .word 0x7020203a - 1e84: f0011c20 .word 0xf0011c20 - 1e88: 8b21fa4f .word 0x8b21fa4f - 1e8c: d1032900 .word 0xd1032900 - 1e90: 6aa16a60 .word 0x6aa16a60 - 1e94: fcc4f000 .word 0xfcc4f000 - 1e98: 21ff2008 .word 0x21ff2008 - 1e9c: fa42f002 .word 0xfa42f002 - 1ea0: 1c012001 .word 0x1c012001 - 1ea4: fa3ef002 .word 0xfa3ef002 - 1ea8: f0022001 .word 0xf0022001 - 1eac: 1c28fa2f .word 0x1c28fa2f - 1eb0: fc06f001 .word 0xfc06f001 - 1eb4: 4b134a12 .word 0x4b134a12 - 1eb8: 68164d13 .word 0x68164d13 - 1ebc: 68296818 .word 0x68296818 - 1ec0: 6834bf20 .word 0x6834bf20 - 1ec4: 680b6802 .word 0x680b6802 - 1ec8: d0f9429c .word 0xd0f9429c - 1ecc: 48104e0f .word 0x48104e0f - 1ed0: f00119a1 .word 0xf00119a1 - 1ed4: 682afdb1 .word 0x682afdb1 - 1ed8: e7eb6014 .word 0xe7eb6014 - 1edc: 2000ef28 .word 0x2000ef28 - 1ee0: 2000c0c1 .word 0x2000c0c1 - 1ee4: 2000ee1c .word 0x2000ee1c - 1ee8: 2000ee48 .word 0x2000ee48 - 1eec: 2000ee68 .word 0x2000ee68 - 1ef0: 2000ee58 .word 0x2000ee58 - 1ef4: 2000eef0 .word 0x2000eef0 - 1ef8: 2000ee78 .word 0x2000ee78 - 1efc: 2000eec8 .word 0x2000eec8 - 1f00: 2000ec74 .word 0x2000ec74 - 1f04: 2000ec7c .word 0x2000ec7c - 1f08: 2000ec80 .word 0x2000ec80 - 1f0c: 20004000 .word 0x20004000 - 1f10: 2000ef00 .word 0x2000ef00 - 1f14: 1c04b538 .word 0x1c04b538 - 1f18: fbf6f000 .word 0xfbf6f000 - 1f1c: 2c014d07 .word 0x2c014d07 - 1f20: 4807d106 .word 0x4807d106 - 1f24: fbdef001 .word 0xfbdef001 - 1f28: f7ff7828 .word 0xf7ff7828 - 1f2c: e002ff17 .word 0xe002ff17 - 1f30: f7ff7828 .word 0xf7ff7828 - 1f34: 4b03ff5b .word 0x4b03ff5b - 1f38: bd38701c .word 0xbd38701c - 1f3c: 2000f500 .word 0x2000f500 - 1f40: 2000ef00 .word 0x2000ef00 - 1f44: 2000f004 .word 0x2000f004 - 1f48: 78184b01 .word 0x78184b01 - 1f4c: 46c04770 .word 0x46c04770 - 1f50: 2000f004 .word 0x2000f004 - 1f54: 7843b508 .word 0x7843b508 - 1f58: d8062b1b .word 0xd8062b1b - 1f5c: 009b4a05 .word 0x009b4a05 - 1f60: 2b00589b .word 0x2b00589b - 1f64: 4798d004 .word 0x4798d004 - 1f68: 4248e003 .word 0x4248e003 - 1f6c: e0004148 .word 0xe0004148 - 1f70: bd082001 .word 0xbd082001 - 1f74: 2000f390 .word 0x2000f390 - 1f78: 2900b508 .word 0x2900b508 - 1f7c: f000d101 .word 0xf000d101 - 1f80: 2000fcb7 .word 0x2000fcb7 - 1f84: b570bd08 .word 0xb570bd08 - 1f88: 20001c05 .word 0x20001c05 - 1f8c: 42841e0c .word 0x42841e0c - 1f90: 886ed10d .word 0x886ed10d - 1f94: 1eb22001 .word 0x1eb22001 - 1f98: d8082a0b .word 0xd8082a0b - 1f9c: ffeaf000 .word 0xffeaf000 - 1fa0: f0010430 .word 0xf0010430 - 1fa4: 69a8f8c7 .word 0x69a8f8c7 - 1fa8: fd53f001 .word 0xfd53f001 - 1fac: bd701c20 .word 0xbd701c20 - 1fb0: 2300b538 .word 0x2300b538 - 1fb4: d1194299 .word 0xd1194299 - 1fb8: 23018881 .word 0x23018881 - 1fbc: d81529ff .word 0xd81529ff - 1fc0: 429c8844 .word 0x429c8844 - 1fc4: 4d0ad812 .word 0x4d0ad812 - 1fc8: 1952094a .word 0x1952094a - 1fcc: 4029251f .word 0x4029251f - 1fd0: 408b0092 .word 0x408b0092 - 1fd4: 2c016811 .word 0x2c016811 - 1fd8: 430bd101 .word 0x430bd101 - 1fdc: 4399e001 .word 0x4399e001 - 1fe0: 60131c0b .word 0x60131c0b - 1fe4: f0016980 .word 0xf0016980 - 1fe8: 2300fd34 .word 0x2300fd34 - 1fec: bd381c18 .word 0xbd381c18 - 1ff0: 1003d800 .word 0x1003d800 - 1ff4: 1c05b538 .word 0x1c05b538 - 1ff8: d1071e0c .word 0xd1071e0c - 1ffc: ffbaf000 .word 0xffbaf000 - 2000: f0011c20 .word 0xf0011c20 - 2004: 69a8f897 .word 0x69a8f897 - 2008: fd23f001 .word 0xfd23f001 - 200c: bd382000 .word 0xbd382000 - 2010: 1c04b5f8 .word 0x1c04b5f8 - 2014: d12a2900 .word 0xd12a2900 - 2018: 88814b16 .word 0x88814b16 - 201c: 1c026818 .word 0x1c026818 - 2020: 88153276 .word 0x88153276 - 2024: 428d1c2e .word 0x428d1c2e - 2028: 1c0ed900 .word 0x1c0ed900 - 202c: 4912b2b2 .word 0x4912b2b2 - 2030: d8022a40 .word 0xd8022a40 - 2034: d0032a00 .word 0xd0032a00 - 2038: 2240e000 .word 0x2240e000 - 203c: e0032300 .word 0xe0032300 - 2040: 69a0600d .word 0x69a0600d - 2044: e00d2204 .word 0xe00d2204 - 2048: da094293 .word 0xda094293 - 204c: 435e2618 .word 0x435e2618 - 2050: 009d6f87 .word 0x009d6f87 - 2054: 693719be .word 0x693719be - 2058: 007e3301 .word 0x007e3301 - 205c: e7f3514e .word 0xe7f3514e - 2060: 009269a0 .word 0x009269a0 - 2064: fce8f001 .word 0xfce8f001 - 2068: f00169e0 .word 0xf00169e0 - 206c: 2000fcf2 .word 0x2000fcf2 - 2070: 46c0bdf8 .word 0x46c0bdf8 - 2074: 2000ef28 .word 0x2000ef28 - 2078: 2000f400 .word 0x2000f400 - 207c: b5382200 .word 0xb5382200 - 2080: 1e0d1c04 .word 0x1e0d1c04 - 2084: d11a4295 .word 0xd11a4295 - 2088: 22018883 .word 0x22018883 - 208c: d8162bff .word 0xd8162bff - 2090: 0959480c .word 0x0959480c - 2094: 00881809 .word 0x00881809 - 2098: 201f6801 .word 0x201f6801 - 209c: 1c104003 .word 0x1c104003 - 20a0: 1c034098 .word 0x1c034098 - 20a4: 1e59400b .word 0x1e59400b - 20a8: 1c21418b .word 0x1c21418b - 20ac: 31087223 .word 0x31087223 - 20b0: f00169a0 .word 0xf00169a0 - 20b4: 69e0fcc1 .word 0x69e0fcc1 - 20b8: fccbf001 .word 0xfccbf001 - 20bc: 1c101c2a .word 0x1c101c2a - 20c0: 46c0bd38 .word 0x46c0bd38 - 20c4: 1003d800 .word 0x1003d800 - 20c8: 2500b570 .word 0x2500b570 - 20cc: 1e0e1c04 .word 0x1e0e1c04 - 20d0: d11742ae .word 0xd11742ae - 20d4: 2b048883 .word 0x2b048883 - 20d8: 88c2d108 .word 0x88c2d108 - 20dc: 6980490a .word 0x6980490a - 20e0: fcaaf001 .word 0xfcaaf001 - 20e4: f00169e0 .word 0xf00169e0 - 20e8: e00bfcb4 .word 0xe00bfcb4 - 20ec: 2b052501 .word 0x2b052501 - 20f0: 88c2d108 .word 0x88c2d108 - 20f4: 69804905 .word 0x69804905 - 20f8: fc9ef001 .word 0xfc9ef001 - 20fc: f00169e0 .word 0xf00169e0 - 2100: 1c35fca8 .word 0x1c35fca8 - 2104: bd701c28 .word 0xbd701c28 - 2108: 2000ecaf .word 0x2000ecaf - 210c: 2000ed82 .word 0x2000ed82 - 2110: 1c04b510 .word 0x1c04b510 - 2114: d1092900 .word 0xd1092900 - 2118: 1c017201 .word 0x1c017201 - 211c: 69803108 .word 0x69803108 - 2120: f0012201 .word 0xf0012201 - 2124: 69e0fc89 .word 0x69e0fc89 - 2128: fc93f001 .word 0xfc93f001 - 212c: bd102000 .word 0xbd102000 - 2130: 1c04b510 .word 0x1c04b510 - 2134: d10a2900 .word 0xd10a2900 - 2138: 2b018883 .word 0x2b018883 - 213c: f000d102 .word 0xf000d102 - 2140: e001fbdd .word 0xe001fbdd - 2144: fbe4f000 .word 0xfbe4f000 - 2148: f00169a0 .word 0xf00169a0 - 214c: 2000fc82 .word 0x2000fc82 - 2150: 0000bd10 .word 0x0000bd10 - 2154: 1c04b510 .word 0x1c04b510 - 2158: d10f2900 .word 0xd10f2900 - 215c: 79214b08 .word 0x79214b08 - 2160: 30486818 .word 0x30486818 - 2164: fde2f000 .word 0xfde2f000 - 2168: 72201c21 .word 0x72201c21 - 216c: 69a03108 .word 0x69a03108 - 2170: f0012201 .word 0xf0012201 - 2174: 69e0fc61 .word 0x69e0fc61 - 2178: fc6bf001 .word 0xfc6bf001 - 217c: bd102000 .word 0xbd102000 - 2180: 2000ef28 .word 0x2000ef28 - 2184: 1c04b510 .word 0x1c04b510 - 2188: d10f2900 .word 0xd10f2900 - 218c: 79214b08 .word 0x79214b08 - 2190: 30486818 .word 0x30486818 - 2194: fdc1f000 .word 0xfdc1f000 - 2198: 72201c21 .word 0x72201c21 - 219c: 69a03108 .word 0x69a03108 - 21a0: f0012201 .word 0xf0012201 - 21a4: 69e0fc49 .word 0x69e0fc49 - 21a8: fc53f001 .word 0xfc53f001 - 21ac: bd102000 .word 0xbd102000 - 21b0: 2000ef28 .word 0x2000ef28 - 21b4: 1c04b510 .word 0x1c04b510 - 21b8: d10f2900 .word 0xd10f2900 - 21bc: 79214b08 .word 0x79214b08 - 21c0: 30486818 .word 0x30486818 - 21c4: fda2f000 .word 0xfda2f000 - 21c8: 72201c21 .word 0x72201c21 - 21cc: 69a03108 .word 0x69a03108 - 21d0: f0012201 .word 0xf0012201 - 21d4: 69e0fc31 .word 0x69e0fc31 - 21d8: fc3bf001 .word 0xfc3bf001 - 21dc: bd102000 .word 0xbd102000 - 21e0: 2000ef28 .word 0x2000ef28 - 21e4: 1c04b510 .word 0x1c04b510 - 21e8: d10f2900 .word 0xd10f2900 - 21ec: 79214b08 .word 0x79214b08 - 21f0: 30486818 .word 0x30486818 - 21f4: fd83f000 .word 0xfd83f000 - 21f8: 72201c21 .word 0x72201c21 - 21fc: 69a03108 .word 0x69a03108 - 2200: f0012201 .word 0xf0012201 - 2204: 69e0fc19 .word 0x69e0fc19 - 2208: fc23f001 .word 0xfc23f001 - 220c: bd102000 .word 0xbd102000 - 2210: 2000ef28 .word 0x2000ef28 - 2214: 1c04b510 .word 0x1c04b510 - 2218: d10f2900 .word 0xd10f2900 - 221c: 79214b08 .word 0x79214b08 - 2220: 30486818 .word 0x30486818 - 2224: fd64f000 .word 0xfd64f000 - 2228: 72201c21 .word 0x72201c21 - 222c: 69a03108 .word 0x69a03108 - 2230: f0012201 .word 0xf0012201 - 2234: 69e0fc01 .word 0x69e0fc01 - 2238: fc0bf001 .word 0xfc0bf001 - 223c: bd102000 .word 0xbd102000 - 2240: 2000ef28 .word 0x2000ef28 - 2244: 1c04b510 .word 0x1c04b510 - 2248: d1052900 .word 0xd1052900 - 224c: 22044909 .word 0x22044909 - 2250: f00169c0 .word 0xf00169c0 - 2254: e00bfbf1 .word 0xe00bfbf1 - 2258: d1092901 .word 0xd1092901 - 225c: 49054b06 .word 0x49054b06 - 2260: 68096818 .word 0x68096818 - 2264: f0003048 .word 0xf0003048 - 2268: 69a0fcef .word 0x69a0fcef - 226c: fbf1f001 .word 0xfbf1f001 - 2270: bd102000 .word 0xbd102000 - 2274: 2000f388 .word 0x2000f388 - 2278: 2000ef28 .word 0x2000ef28 - 227c: 1c04b570 .word 0x1c04b570 - 2280: 42812000 .word 0x42812000 - 2284: 88a3d155 .word 0x88a3d155 - 2288: 2b3f4a2a .word 0x2b3f4a2a - 228c: 6810d806 .word 0x6810d806 - 2290: 88013076 .word 0x88013076 - 2294: 42992001 .word 0x42992001 - 2298: e04adc2a .word 0xe04adc2a - 229c: 681220fa .word 0x681220fa - 22a0: 43580080 .word 0x43580080 - 22a4: 33761c13 .word 0x33761c13 - 22a8: 4299881b .word 0x4299881b - 22ac: 2518da0c .word 0x2518da0c - 22b0: 6f96434d .word 0x6f96434d - 22b4: 692e1975 .word 0x692e1975 - 22b8: 428500b5 .word 0x428500b5 - 22bc: 4a1ed102 .word 0x4a1ed102 - 22c0: e01a7011 .word 0xe01a7011 - 22c4: e7f03101 .word 0xe7f03101 - 22c8: 317e1c11 .word 0x317e1c11 - 22cc: 23008809 .word 0x23008809 - 22d0: 3301e000 .word 0x3301e000 - 22d4: da0e428b .word 0xda0e428b - 22d8: 6fee1d15 .word 0x6fee1d15 - 22dc: 435d2518 .word 0x435d2518 - 22e0: 69351976 .word 0x69351976 - 22e4: 428600ae .word 0x428600ae - 22e8: 2080d1f3 .word 0x2080d1f3 - 22ec: 430b4241 .word 0x430b4241 - 22f0: 70334e11 .word 0x70334e11 - 22f4: 2001e001 .word 0x2001e001 - 22f8: f7ffe01b .word 0xf7ffe01b - 22fc: 4d0efe25 .word 0x4d0efe25 - 2300: 2e011e06 .word 0x2e011e06 - 2304: 7828d102 .word 0x7828d102 - 2308: fd70f7ff .word 0xfd70f7ff - 230c: f7ff7828 .word 0xf7ff7828 - 2310: 2e01fd09 .word 0x2e01fd09 - 2314: 7828d102 .word 0x7828d102 - 2318: fd20f7ff .word 0xfd20f7ff - 231c: 1c212201 .word 0x1c212201 - 2320: 31087222 .word 0x31087222 - 2324: f00169a0 .word 0xf00169a0 - 2328: 69e0fb87 .word 0x69e0fb87 - 232c: fb91f001 .word 0xfb91f001 - 2330: bd702000 .word 0xbd702000 - 2334: 2000ef28 .word 0x2000ef28 - 2338: 2000f500 .word 0x2000f500 - 233c: 1c04b570 .word 0x1c04b570 - 2340: 42812000 .word 0x42812000 - 2344: 88a3d121 .word 0x88a3d121 - 2348: 42832001 .word 0x42832001 - 234c: b2ded81d .word 0xb2ded81d - 2350: fdfaf7ff .word 0xfdfaf7ff - 2354: 2d011e05 .word 0x2d011e05 - 2358: 480cd103 .word 0x480cd103 - 235c: f7ff7800 .word 0xf7ff7800 - 2360: 1c30fd45 .word 0x1c30fd45 - 2364: fcecf7ff .word 0xfcecf7ff - 2368: d1032d01 .word 0xd1032d01 - 236c: 78084907 .word 0x78084907 - 2370: fcf4f7ff .word 0xfcf4f7ff - 2374: 1c212201 .word 0x1c212201 - 2378: 31087222 .word 0x31087222 - 237c: f00169a0 .word 0xf00169a0 - 2380: 69e0fb5b .word 0x69e0fb5b - 2384: fb65f001 .word 0xfb65f001 - 2388: bd702000 .word 0xbd702000 - 238c: 2000f500 .word 0x2000f500 - 2390: 2500b570 .word 0x2500b570 - 2394: 1c06b092 .word 0x1c06b092 - 2398: d12642a9 .word 0xd12642a9 - 239c: 2336ac07 .word 0x2336ac07 - 23a0: 70231c20 .word 0x70231c20 - 23a4: ffc0f000 .word 0xffc0f000 - 23a8: 42a88b20 .word 0x42a88b20 - 23ac: 2501d001 .word 0x2501d001 - 23b0: 69e1e01b .word 0x69e1e01b - 23b4: 233a6a22 .word 0x233a6a22 - 23b8: 91011c20 .word 0x91011c20 - 23bc: 70239202 .word 0x70239202 - 23c0: ffb2f000 .word 0xffb2f000 - 23c4: 28008b20 .word 0x28008b20 - 23c8: 69e1d1f1 .word 0x69e1d1f1 - 23cc: 6a636a22 .word 0x6a636a22 - 23d0: 91036aa4 .word 0x91036aa4 - 23d4: 69b09204 .word 0x69b09204 - 23d8: 2218a901 .word 0x2218a901 - 23dc: 94069305 .word 0x94069305 - 23e0: fb2af001 .word 0xfb2af001 - 23e4: f00169f0 .word 0xf00169f0 - 23e8: 1c28fb34 .word 0x1c28fb34 - 23ec: bd70b012 .word 0xbd70b012 - 23f0: 1c05b538 .word 0x1c05b538 - 23f4: d1222900 .word 0xd1222900 - 23f8: 22004c12 .word 0x22004c12 - 23fc: 2080190b .word 0x2080190b - 2400: 701a3101 .word 0x701a3101 - 2404: 42990043 .word 0x42990043 - 2408: 490fd1f6 .word 0x490fd1f6 - 240c: 68091c20 .word 0x68091c20 - 2410: f0023108 .word 0xf0023108 - 2414: 1c20f8b5 .word 0x1c20f8b5 - 2418: f8baf002 .word 0xf8baf002 - 241c: 1900490b .word 0x1900490b - 2420: f8aef002 .word 0xf8aef002 - 2424: f0021c20 .word 0xf0021c20 - 2428: 1d02f8b3 .word 0x1d02f8b3 - 242c: 43822003 .word 0x43822003 - 2430: 69a81c21 .word 0x69a81c21 - 2434: fb00f001 .word 0xfb00f001 - 2438: f00169e8 .word 0xf00169e8 - 243c: 2000fb0a .word 0x2000fb0a - 2440: 46c0bd38 .word 0x46c0bd38 - 2444: 2000f400 .word 0x2000f400 - 2448: 2000ef28 .word 0x2000ef28 - 244c: 2000e950 .word 0x2000e950 - 2450: 1c05b5f8 .word 0x1c05b5f8 - 2454: d1312900 .word 0xd1312900 - 2458: 884788c4 .word 0x884788c4 - 245c: 26808882 .word 0x26808882 - 2460: 40862001 .word 0x40862001 - 2464: d83642b4 .word 0xd83642b4 - 2468: 43100438 .word 0x43100438 - 246c: 19072380 .word 0x19072380 - 2470: 035a4e19 .word 0x035a4e19 - 2474: d9174297 .word 0xd9174297 - 2478: d90d2c03 .word 0xd90d2c03 - 247c: 1c272303 .word 0x1c272303 - 2480: d109401f .word 0xd109401f - 2484: d1084003 .word 0xd1084003 - 2488: 009a08a1 .word 0x009a08a1 - 248c: 33015817 .word 0x33015817 - 2490: 428b50b7 .word 0x428b50b7 - 2494: e00bd3f9 .word 0xe00bd3f9 - 2498: 1c39e000 .word 0x1c39e000 - 249c: d20742a1 .word 0xd20742a1 - 24a0: 54725c0a .word 0x54725c0a - 24a4: e7f93101 .word 0xe7f93101 - 24a8: 1c321c21 .word 0x1c321c21 - 24ac: fef2f000 .word 0xfef2f000 - 24b0: 1c3169a8 .word 0x1c3169a8 - 24b4: f0011c22 .word 0xf0011c22 - 24b8: e00bfabf .word 0xe00bfabf - 24bc: 29012000 .word 0x29012000 - 24c0: 88ead109 .word 0x88ead109 - 24c4: 1c082380 .word 0x1c082380 - 24c8: 428a0059 .word 0x428a0059 - 24cc: 69e8d803 .word 0x69e8d803 - 24d0: fabff001 .word 0xfabff001 - 24d4: bdf82000 .word 0xbdf82000 - 24d8: 2000f400 .word 0x2000f400 - 24dc: 1c04b570 .word 0x1c04b570 - 24e0: d1171e0d .word 0xd1171e0d - 24e4: 230188e2 .word 0x230188e2 - 24e8: 88402680 .word 0x88402680 - 24ec: 409e88a1 .word 0x409e88a1 - 24f0: d82a42b2 .word 0xd82a42b2 - 24f4: 20800405 .word 0x20800405 - 24f8: 0341430d .word 0x0341430d - 24fc: d824428d .word 0xd824428d - 2500: 428e18ae .word 0x428e18ae - 2504: 4912d821 .word 0x4912d821 - 2508: f00169e0 .word 0xf00169e0 - 250c: f000fa95 .word 0xf000fa95 - 2510: e019fd31 .word 0xe019fd31 - 2514: 29012300 .word 0x29012300 - 2518: 88e1d117 .word 0x88e1d117 - 251c: 1c2b2680 .word 0x1c2b2680 - 2520: 88a28840 .word 0x88a28840 - 2524: 42a90075 .word 0x42a90075 - 2528: 0400d80f .word 0x0400d80f - 252c: 22804310 .word 0x22804310 - 2530: 42b00356 .word 0x42b00356 - 2534: 1845d809 .word 0x1845d809 - 2538: d80642b5 .word 0xd80642b5 - 253c: f0004a04 .word 0xf0004a04 - 2540: 69a0fe69 .word 0x69a0fe69 - 2544: fa85f001 .word 0xfa85f001 - 2548: 1c182300 .word 0x1c182300 - 254c: 46c0bd70 .word 0x46c0bd70 - 2550: 2000f400 .word 0x2000f400 - 2554: 2500b570 .word 0x2500b570 - 2558: 1e0e1c04 .word 0x1e0e1c04 - 255c: d11442ae .word 0xd11442ae - 2560: 25018881 .word 0x25018881 - 2564: d81029ff .word 0xd81029ff - 2568: b2c94b09 .word 0xb2c94b09 - 256c: 30486818 .word 0x30486818 - 2570: faf4f000 .word 0xfaf4f000 - 2574: 1c2a1c21 .word 0x1c2a1c21 - 2578: 31087220 .word 0x31087220 - 257c: f00169a0 .word 0xf00169a0 - 2580: 69e0fa5b .word 0x69e0fa5b - 2584: fa65f001 .word 0xfa65f001 - 2588: 1c281c35 .word 0x1c281c35 - 258c: 46c0bd70 .word 0x46c0bd70 - 2590: 2000ef28 .word 0x2000ef28 - 2594: 1c04b538 .word 0x1c04b538 - 2598: 1e0d2000 .word 0x1e0d2000 - 259c: d1114285 .word 0xd1114285 - 25a0: 200188a1 .word 0x200188a1 - 25a4: d80d29ff .word 0xd80d29ff - 25a8: 2aff8862 .word 0x2aff8862 - 25ac: 4b06d80a .word 0x4b06d80a - 25b0: 6818b2c9 .word 0x6818b2c9 - 25b4: 3048b2d2 .word 0x3048b2d2 - 25b8: fa8ef000 .word 0xfa8ef000 - 25bc: f00169a0 .word 0xf00169a0 - 25c0: 1c28fa48 .word 0x1c28fa48 - 25c4: 46c0bd38 .word 0x46c0bd38 - 25c8: 2000ef28 .word 0x2000ef28 - 25cc: 2500b570 .word 0x2500b570 - 25d0: 1e0e1c04 .word 0x1e0e1c04 - 25d4: d11142ae .word 0xd11142ae - 25d8: 25018880 .word 0x25018880 - 25dc: d80d28ff .word 0xd80d28ff - 25e0: f000b2c0 .word 0xf000b2c0 - 25e4: 1c21f9c0 .word 0x1c21f9c0 - 25e8: 72201c2a .word 0x72201c2a - 25ec: 69a03108 .word 0x69a03108 - 25f0: fa22f001 .word 0xfa22f001 - 25f4: f00169e0 .word 0xf00169e0 - 25f8: 1c35fa2c .word 0x1c35fa2c - 25fc: bd701c28 .word 0xbd701c28 - 2600: 1c04b538 .word 0x1c04b538 - 2604: 1e0d2000 .word 0x1e0d2000 - 2608: d10e4285 .word 0xd10e4285 - 260c: 200188a3 .word 0x200188a3 - 2610: d80a2bff .word 0xd80a2bff - 2614: 29ff8861 .word 0x29ff8861 - 2618: b2d8d807 .word 0xb2d8d807 - 261c: f000b2c9 .word 0xf000b2c9 - 2620: 69a0f991 .word 0x69a0f991 - 2624: fa15f001 .word 0xfa15f001 - 2628: bd381c28 .word 0xbd381c28 - 262c: 2300b538 .word 0x2300b538 - 2630: 1e0c1c05 .word 0x1e0c1c05 - 2634: d10a429c .word 0xd10a429c - 2638: 23018840 .word 0x23018840 - 263c: d8064298 .word 0xd8064298 - 2640: f7ffb2c0 .word 0xf7ffb2c0 - 2644: 69a8fc67 .word 0x69a8fc67 - 2648: fa03f001 .word 0xfa03f001 - 264c: 1c181c23 .word 0x1c181c23 - 2650: 0000bd38 .word 0x0000bd38 - 2654: 2300b538 .word 0x2300b538 - 2658: d11b4299 .word 0xd11b4299 - 265c: 23018882 .word 0x23018882 - 2660: d8172aff .word 0xd8172aff - 2664: 429c8844 .word 0x429c8844 - 2668: 4d0bd814 .word 0x4d0bd814 - 266c: 19490951 .word 0x19490951 - 2670: 402a251f .word 0x402a251f - 2674: 40930089 .word 0x40930089 - 2678: d1032c01 .word 0xd1032c01 - 267c: 00aa2580 .word 0x00aa2580 - 2680: e0021889 .word 0xe0021889 - 2684: 009422a0 .word 0x009422a0 - 2688: 600b1909 .word 0x600b1909 - 268c: f0016980 .word 0xf0016980 - 2690: 2300f9e0 .word 0x2300f9e0 - 2694: bd381c18 .word 0xbd381c18 - 2698: 1003d800 .word 0x1003d800 - 269c: 1c04b510 .word 0x1c04b510 - 26a0: 42812000 .word 0x42812000 - 26a4: 88a2d122 .word 0x88a2d122 - 26a8: 2aff2001 .word 0x2aff2001 - 26ac: 4910d81e .word 0x4910d81e - 26b0: 185b0953 .word 0x185b0953 - 26b4: 400a211f .word 0x400a211f - 26b8: 4090009b .word 0x4090009b - 26bc: 4210681a .word 0x4210681a - 26c0: 2180d003 .word 0x2180d003 - 26c4: 189b008a .word 0x189b008a - 26c8: 3301e001 .word 0x3301e001 - 26cc: 681b33ff .word 0x681b33ff - 26d0: 40181c21 .word 0x40181c21 - 26d4: 41981e43 .word 0x41981e43 - 26d8: 31087220 .word 0x31087220 - 26dc: 69a02201 .word 0x69a02201 - 26e0: f9aaf001 .word 0xf9aaf001 - 26e4: f00169e0 .word 0xf00169e0 - 26e8: 2000f9b4 .word 0x2000f9b4 - 26ec: 46c0bd10 .word 0x46c0bd10 - 26f0: 1003d800 .word 0x1003d800 - 26f4: 009a2380 .word 0x009a2380 - 26f8: 60011880 .word 0x60011880 - 26fc: 23a04770 .word 0x23a04770 - 2700: 1880009a .word 0x1880009a - 2704: 47706001 .word 0x47706001 - 2708: 4803b508 .word 0x4803b508 - 270c: fecef000 .word 0xfecef000 - 2710: f0004802 .word 0xf0004802 - 2714: bd08fecb .word 0xbd08fecb - 2718: 2000ef00 .word 0x2000ef00 - 271c: 2000eea0 .word 0x2000eea0 - 2720: 49204b1f .word 0x49204b1f - 2724: 22004820 .word 0x22004820 - 2728: 6008701a .word 0x6008701a - 272c: 4a204b1f .word 0x4a204b1f - 2730: 49214820 .word 0x49214820 - 2734: 6058601a .word 0x6058601a - 2738: 4a206099 .word 0x4a206099 - 273c: 49214820 .word 0x49214820 - 2740: 611860da .word 0x611860da - 2744: 4a206159 .word 0x4a206159 - 2748: 49214820 .word 0x49214820 - 274c: 61d8619a .word 0x61d8619a - 2750: 4a206219 .word 0x4a206219 - 2754: 49214820 .word 0x49214820 - 2758: 6298625a .word 0x6298625a - 275c: 4a2062d9 .word 0x4a2062d9 - 2760: 49214820 .word 0x49214820 - 2764: 6358631a .word 0x6358631a - 2768: 4a206399 .word 0x4a206399 - 276c: 49214820 .word 0x49214820 - 2770: 4a2163da .word 0x4a2163da - 2774: 64596418 .word 0x64596418 - 2778: 49214820 .word 0x49214820 - 277c: 4a21649a .word 0x4a21649a - 2780: 651964d8 .word 0x651964d8 - 2784: 49214820 .word 0x49214820 - 2788: 4a21655a .word 0x4a21655a - 278c: 65d96598 .word 0x65d96598 - 2790: 4820661a .word 0x4820661a - 2794: 4a214920 .word 0x4a214920 - 2798: 66996658 .word 0x66996658 - 279c: 477066da .word 0x477066da - 27a0: 2000f500 .word 0x2000f500 - 27a4: 2000f388 .word 0x2000f388 - 27a8: 05f5e100 .word 0x05f5e100 - 27ac: 2000f390 .word 0x2000f390 - 27b0: 2000c329 .word 0x2000c329 - 27b4: 2000c9dd .word 0x2000c9dd - 27b8: 2000c9b1 .word 0x2000c9b1 - 27bc: 2000c97d .word 0x2000c97d - 27c0: 2000c945 .word 0x2000c945 - 27c4: 2000c905 .word 0x2000c905 - 27c8: 2000c3a5 .word 0x2000c3a5 - 27cc: 2000c88d .word 0x2000c88d - 27d0: 2000c801 .word 0x2000c801 - 27d4: 2000c4c1 .word 0x2000c4c1 - 27d8: 2000c7a1 .word 0x2000c7a1 - 27dc: 2000c741 .word 0x2000c741 - 27e0: 2000c62d .word 0x2000c62d - 27e4: 2000c5f5 .word 0x2000c5f5 - 27e8: 2000c5c5 .word 0x2000c5c5 - 27ec: 2000c595 .word 0x2000c595 - 27f0: 2000c565 .word 0x2000c565 - 27f4: 2000c535 .word 0x2000c535 - 27f8: 2000c505 .word 0x2000c505 - 27fc: 2000c479 .word 0x2000c479 - 2800: 2000c4e1 .word 0x2000c4e1 - 2804: 2000ca05 .word 0x2000ca05 - 2808: 2000ca4d .word 0x2000ca4d - 280c: 2000c361 .word 0x2000c361 - 2810: 2000c42d .word 0x2000c42d - 2814: 2000c3c1 .word 0x2000c3c1 - 2818: 2000c6ed .word 0x2000c6ed - 281c: 2000c337 .word 0x2000c337 - 2820: 4b2db5f0 .word 0x4b2db5f0 - 2824: 092c0e05 .word 0x092c0e05 - 2828: 240f5d1e .word 0x240f5d1e - 282c: 4a2b4025 .word 0x4a2b4025 - 2830: 25ff5d5f .word 0x25ff5d5f - 2834: 76177596 .word 0x76177596 - 2838: 1c07042e .word 0x1c07042e - 283c: 0c3d4037 .word 0x0c3d4037 - 2840: 5ddf092f .word 0x5ddf092f - 2844: 5d5d4025 .word 0x5d5d4025 - 2848: 27ff7697 .word 0x27ff7697 - 284c: 023d7715 .word 0x023d7715 - 2850: 0a2f4005 .word 0x0a2f4005 - 2854: 5d5d093d .word 0x5d5d093d - 2858: 46bc4027 .word 0x46bc4027 - 285c: 46657795 .word 0x46657795 - 2860: 1c575d5d .word 0x1c575d5d - 2864: b2c777fd .word 0xb2c777fd - 2868: 5d5d093d .word 0x5d5d093d - 286c: 5c184020 .word 0x5c184020 - 2870: 77fd1cd7 .word 0x77fd1cd7 - 2874: 77f81d57 .word 0x77f81d57 - 2878: 09050e08 .word 0x09050e08 - 287c: 1dd75d5d .word 0x1dd75d5d - 2880: 5c184020 .word 0x5c184020 - 2884: 400e77fd .word 0x400e77fd - 2888: 0c351c17 .word 0x0c351c17 - 288c: 70383728 .word 0x70383728 - 2890: 5dd8092f .word 0x5dd8092f - 2894: 362a1c16 .word 0x362a1c16 - 2898: 40257030 .word 0x40257030 - 289c: 5d5d26ff .word 0x5d5d26ff - 28a0: 02301c17 .word 0x02301c17 - 28a4: 372c4008 .word 0x372c4008 - 28a8: 0a07703d .word 0x0a07703d - 28ac: 5d98093e .word 0x5d98093e - 28b0: 40271c15 .word 0x40271c15 - 28b4: 352e5ddf .word 0x352e5ddf - 28b8: 70281c16 .word 0x70281c16 - 28bc: b2cd3630 .word 0xb2cd3630 - 28c0: 400c7037 .word 0x400c7037 - 28c4: 5d9f092e .word 0x5d9f092e - 28c8: 5d191c10 .word 0x5d191c10 - 28cc: 32343032 .word 0x32343032 - 28d0: 70117007 .word 0x70117007 - 28d4: 46c0bdf0 .word 0x46c0bdf0 - 28d8: 2000e9a0 .word 0x2000e9a0 - 28dc: 2000ecd7 .word 0x2000ecd7 - 28e0: 42832300 .word 0x42832300 - 28e4: 46c0d002 .word 0x46c0d002 - 28e8: e7fa3301 .word 0xe7fa3301 - 28ec: 00004770 .word 0x00004770 - 28f0: 22014b01 .word 0x22014b01 - 28f4: e7fe601a .word 0xe7fe601a - 28f8: 40053100 .word 0x40053100 - 28fc: 2180b508 .word 0x2180b508 - 2900: 01894802 .word 0x01894802 - 2904: fef6f7ff .word 0xfef6f7ff - 2908: 46c0bd08 .word 0x46c0bd08 - 290c: 400f6004 .word 0x400f6004 - 2910: 2180b508 .word 0x2180b508 - 2914: 01894802 .word 0x01894802 - 2918: fef1f7ff .word 0xfef1f7ff - 291c: 46c0bd08 .word 0x46c0bd08 - 2920: 400f6004 .word 0x400f6004 - 2924: 46752404 .word 0x46752404 - 2928: d002422c .word 0xd002422c - 292c: 8009f3ef .word 0x8009f3ef - 2930: f3efe002 .word 0xf3efe002 - 2934: e7ff8008 .word 0xe7ff8008 - 2938: 60184b01 .word 0x60184b01 - 293c: e7febe00 .word 0xe7febe00 - 2940: 2000f740 .word 0x2000f740 - 2944: 1c0cb538 .word 0x1c0cb538 - 2948: f0011c05 .word 0xf0011c05 - 294c: 20c0fa9d .word 0x20c0fa9d - 2950: fadaf001 .word 0xfadaf001 - 2954: f0011c28 .word 0xf0011c28 - 2958: 1c20fad7 .word 0x1c20fad7 - 295c: fad4f001 .word 0xfad4f001 - 2960: fb72f001 .word 0xfb72f001 - 2964: b510bd38 .word 0xb510bd38 - 2968: f0011c04 .word 0xf0011c04 - 296c: 20c0fa8d .word 0x20c0fa8d - 2970: facaf001 .word 0xfacaf001 - 2974: f0011c20 .word 0xf0011c20 - 2978: f001fac7 .word 0xf001fac7 - 297c: 20c1fa85 .word 0x20c1fa85 - 2980: fac2f001 .word 0xfac2f001 - 2984: fb0cf001 .word 0xfb0cf001 - 2988: f0011c04 .word 0xf0011c04 - 298c: 1c20fb5d .word 0x1c20fb5d - 2990: 0000bd10 .word 0x0000bd10 - 2994: 4b0cb538 .word 0x4b0cb538 - 2998: 68181c05 .word 0x68181c05 - 299c: 06021c0c .word 0x06021c0c - 29a0: 490ad510 .word 0x490ad510 - 29a4: 2a00780a .word 0x2a00780a - 29a8: f001d10c .word 0xf001d10c - 29ac: 2034fa8d .word 0x2034fa8d - 29b0: fad0f001 .word 0xfad0f001 - 29b4: f0011c28 .word 0xf0011c28 - 29b8: 1c20facd .word 0x1c20facd - 29bc: facaf001 .word 0xfacaf001 - 29c0: fb54f001 .word 0xfb54f001 - 29c4: 46c0bd38 .word 0x46c0bd38 - 29c8: 400f6204 .word 0x400f6204 - 29cc: 2000ef2c .word 0x2000ef2c - 29d0: 28312100 .word 0x28312100 - 29d4: 4a04d906 .word 0x4a04d906 - 29d8: 21143832 .word 0x21143832 - 29dc: d8014290 .word 0xd8014290 - 29e0: 5c194b02 .word 0x5c194b02 - 29e4: 47701c08 .word 0x47701c08 - 29e8: 00000257 .word 0x00000257 - 29ec: 2000e9c4 .word 0x2000e9c4 - 29f0: 4b0eb538 .word 0x4b0eb538 - 29f4: 68181c05 .word 0x68181c05 - 29f8: d5160602 .word 0xd5160602 - 29fc: 780c490c .word 0x780c490c - 2a00: d1122c00 .word 0xd1122c00 - 2a04: fa60f001 .word 0xfa60f001 - 2a08: f0012034 .word 0xf0012034 - 2a0c: 2005faa3 .word 0x2005faa3 - 2a10: faa0f001 .word 0xfaa0f001 - 2a14: 34015d28 .word 0x34015d28 - 2a18: fa9cf001 .word 0xfa9cf001 - 2a1c: d1f92c1b .word 0xd1f92c1b - 2a20: f0012000 .word 0xf0012000 - 2a24: f001fa97 .word 0xf001fa97 - 2a28: bd38fb21 .word 0xbd38fb21 - 2a2c: 400f6204 .word 0x400f6204 - 2a30: 2000ef2c .word 0x2000ef2c - 2a34: 4b25b5f8 .word 0x4b25b5f8 - 2a38: 681a1c16 .word 0x681a1c16 - 2a3c: 1c0d2480 .word 0x1c0d2480 - 2a40: d00c4014 .word 0xd00c4014 - 2a44: 24004922 .word 0x24004922 - 2a48: 2f00780f .word 0x2f00780f - 2a4c: e00cd107 .word 0xe00cd107 - 2a50: 2f1d1f67 .word 0x2f1d1f67 - 2a54: 1902d806 .word 0x1902d806 - 2a58: 552b79d3 .word 0x552b79d3 - 2a5c: 42b43401 .word 0x42b43401 - 2a60: e032dbf6 .word 0xe032dbf6 - 2a64: 424b2101 .word 0x424b2101 - 2a68: f001e7f7 .word 0xf001e7f7 - 2a6c: 2035fa2d .word 0x2035fa2d - 2a70: fa70f001 .word 0xfa70f001 - 2a74: 2e014c17 .word 0x2e014c17 - 2a78: 1c38d80e .word 0x1c38d80e - 2a7c: fab6f001 .word 0xfab6f001 - 2a80: 4006260f .word 0x4006260f - 2a84: 5da20907 .word 0x5da20907 - 2a88: 5c24b2f8 .word 0x5c24b2f8 - 2a8c: 43210111 .word 0x43210111 - 2a90: f0017029 .word 0xf0017029 - 2a94: e018faeb .word 0xe018faeb - 2a98: 1e731c2f .word 0x1e731c2f - 2a9c: 42981b78 .word 0x42981b78 - 2aa0: 2001da0d .word 0x2001da0d - 2aa4: faa2f001 .word 0xfaa2f001 - 2aa8: 4003230f .word 0x4003230f - 2aac: 09005ce2 .word 0x09005ce2 - 2ab0: 0111b2c3 .word 0x0111b2c3 - 2ab4: 43115ce2 .word 0x43115ce2 - 2ab8: 37017039 .word 0x37017039 - 2abc: 2000e7ed .word 0x2000e7ed - 2ac0: f00119ad .word 0xf00119ad - 2ac4: 3d01fa93 .word 0x3d01fa93 - 2ac8: bdf8e7da .word 0xbdf8e7da - 2acc: 400f6204 .word 0x400f6204 - 2ad0: 2000ef2c .word 0x2000ef2c - 2ad4: 2000ec5b .word 0x2000ec5b - 2ad8: b5704b0e .word 0xb5704b0e - 2adc: 68181c06 .word 0x68181c06 - 2ae0: 1c141c0d .word 0x1c141c0d - 2ae4: d5030602 .word 0xd5030602 - 2ae8: 780a490b .word 0x780a490b - 2aec: d0022a00 .word 0xd0022a00 - 2af0: 71f41976 .word 0x71f41976 - 2af4: f001bd70 .word 0xf001bd70 - 2af8: 2034f9e7 .word 0x2034f9e7 - 2afc: fa2af001 .word 0xfa2af001 - 2b00: f0011c28 .word 0xf0011c28 - 2b04: 1c20fa27 .word 0x1c20fa27 - 2b08: fa24f001 .word 0xfa24f001 - 2b0c: faaef001 .word 0xfaaef001 - 2b10: 46c0e7ee .word 0x46c0e7ee - 2b14: 400f6204 .word 0x400f6204 - 2b18: 2000ef2c .word 0x2000ef2c - 2b1c: 1f4bb508 .word 0x1f4bb508 - 2b20: d8022b1d .word 0xd8022b1d - 2b24: 7b1b18c3 .word 0x7b1b18c3 - 2b28: 2301e001 .word 0x2301e001 - 2b2c: 4293425b .word 0x4293425b - 2b30: f7ffd001 .word 0xf7ffd001 - 2b34: 2000ffd1 .word 0x2000ffd1 - 2b38: b510bd08 .word 0xb510bd08 - 2b3c: 2c1d1f4c .word 0x2c1d1f4c - 2b40: 1904d808 .word 0x1904d808 - 2b44: 439c7b24 .word 0x439c7b24 - 2b48: 1c224013 .word 0x1c224013 - 2b4c: f7ff431a .word 0xf7ff431a - 2b50: e001ffe5 .word 0xe001ffe5 - 2b54: 42402001 .word 0x42402001 - 2b58: 0000bd10 .word 0x0000bd10 - 2b5c: 4d04b538 .word 0x4d04b538 - 2b60: 1c0c1c4a .word 0x1c0c1c4a - 2b64: 1c29b2d2 .word 0x1c29b2d2 - 2b68: ff64f7ff .word 0xff64f7ff - 2b6c: bd385d28 .word 0xbd385d28 - 2b70: 2000f744 .word 0x2000f744 - 2b74: 6805b5f7 .word 0x6805b5f7 - 2b78: 1c0e1c04 .word 0x1c0e1c04 - 2b7c: 1c5f2300 .word 0x1c5f2300 - 2b80: 4a2f1c31 .word 0x4a2f1c31 - 2b84: 188840b9 .word 0x188840b9 - 2b88: 4288492e .word 0x4288492e - 2b8c: 1e3bd903 .word 0x1e3bd903 - 2b90: d1f42b05 .word 0xd1f42b05 - 2b94: 1c1fe000 .word 0x1c1fe000 - 2b98: b2d2017a .word 0xb2d2017a - 2b9c: 21101c20 .word 0x21101c20 - 2ba0: f7ff23e0 .word 0xf7ff23e0 - 2ba4: 2800ffca .word 0x2800ffca - 2ba8: 3701db48 .word 0x3701db48 - 2bac: 08680c69 .word 0x08680c69 - 2bb0: 900140be .word 0x900140be - 2bb4: 18709100 .word 0x18709100 - 2bb8: f0011c29 .word 0xf0011c29 - 2bbc: 1c03fbcd .word 0x1c03fbcd - 2bc0: b2da3b0d .word 0xb2da3b0d - 2bc4: 08901c07 .word 0x08901c07 - 2bc8: 1a530081 .word 0x1a530081 - 2bcc: 1880019a .word 0x1880019a - 2bd0: 2114b2c2 .word 0x2114b2c2 - 2bd4: f7ff1c20 .word 0xf7ff1c20 - 2bd8: 2800ffa1 .word 0x2800ffa1 - 2bdc: b2ffdb2e .word 0xb2ffdb2e - 2be0: 1b76437d .word 0x1b76437d - 2be4: 2208d104 .word 0x2208d104 - 2be8: 21121c20 .word 0x21121c20 - 2bec: e0231c13 .word 0xe0231c13 - 2bf0: 27009d00 .word 0x27009d00 - 2bf4: 1c3b1976 .word 0x1c3b1976 - 2bf8: 40da9a01 .word 0x40da9a01 - 2bfc: d3064296 .word 0xd3064296 - 2c00: 02082180 .word 0x02082180 - 2c04: 43074118 .word 0x43074118 - 2c08: 1ab6b2bf .word 0x1ab6b2bf - 2c0c: 3301d002 .word 0x3301d002 - 2c10: d1f12b10 .word 0xd1f12b10 - 2c14: 1c20b2fa .word 0x1c20b2fa - 2c18: f7ff2115 .word 0xf7ff2115 - 2c1c: 2800ff7f .word 0x2800ff7f - 2c20: 0a3adb0c .word 0x0a3adb0c - 2c24: 21161c20 .word 0x21161c20 - 2c28: ff78f7ff .word 0xff78f7ff - 2c2c: db052800 .word 0xdb052800 - 2c30: 21121c20 .word 0x21121c20 - 2c34: 23082200 .word 0x23082200 - 2c38: ff7ff7ff .word 0xff7ff7ff - 2c3c: 46c0bdfe .word 0x46c0bdfe - 2c40: 967ff180 .word 0x967ff180 - 2c44: 7ef53880 .word 0x7ef53880 - 2c48: 4b26b5f8 .word 0x4b26b5f8 - 2c4c: 1c044a24 .word 0x1c044a24 - 2c50: 68871c0d .word 0x68871c0d - 2c54: 21001c08 .word 0x21001c08 - 2c58: fbcef001 .word 0xfbcef001 - 2c5c: f7ff1c08 .word 0xf7ff1c08 - 2c60: 2603feb7 .word 0x2603feb7 - 2c64: 49204370 .word 0x49204370 - 2c68: 180e2308 .word 0x180e2308 - 2c6c: 1c207832 .word 0x1c207832 - 2c70: f7ff2117 .word 0xf7ff2117 - 2c74: 2800ff62 .word 0x2800ff62 - 2c78: 7872db2e .word 0x7872db2e - 2c7c: 211a1c20 .word 0x211a1c20 - 2c80: f7ff23c3 .word 0xf7ff23c3 - 2c84: 2800ff5a .word 0x2800ff5a - 2c88: 78b2db26 .word 0x78b2db26 - 2c8c: 211b1c20 .word 0x211b1c20 - 2c90: ff44f7ff .word 0xff44f7ff - 2c94: db1f2800 .word 0xdb1f2800 - 2c98: 21101c20 .word 0x21101c20 - 2c9c: 230b2208 .word 0x230b2208 - 2ca0: ff4bf7ff .word 0xff4bf7ff - 2ca4: db172800 .word 0xdb172800 - 2ca8: 21081c20 .word 0x21081c20 - 2cac: 233f2200 .word 0x233f2200 - 2cb0: ff43f7ff .word 0xff43f7ff - 2cb4: db0f2800 .word 0xdb0f2800 - 2cb8: 21091c20 .word 0x21091c20 - 2cbc: 233f2200 .word 0x233f2200 - 2cc0: ff3bf7ff .word 0xff3bf7ff - 2cc4: db072800 .word 0xdb072800 - 2cc8: 1c2019e9 .word 0x1c2019e9 - 2ccc: ff52f7ff .word 0xff52f7ff - 2cd0: db012800 .word 0xdb012800 - 2cd4: 20006065 .word 0x20006065 - 2cd8: 46c0bdf8 .word 0x46c0bdf8 - 2cdc: 46c046c0 .word 0x46c046c0 - 2ce0: 000010c7 .word 0x000010c7 - 2ce4: 00000000 .word 0x00000000 - 2ce8: 2000ec1c .word 0x2000ec1c - 2cec: 46c046c0 .word 0x46c046c0 - 2cf0: 1c0ab508 .word 0x1c0ab508 - 2cf4: 2105230f .word 0x2105230f - 2cf8: ff1ff7ff .word 0xff1ff7ff - 2cfc: b508bd08 .word 0xb508bd08 - 2d00: 230f1c0a .word 0x230f1c0a - 2d04: f7ff2107 .word 0xf7ff2107 - 2d08: bd08ff18 .word 0xbd08ff18 - 2d0c: 1c0ab508 .word 0x1c0ab508 - 2d10: 210c230f .word 0x210c230f - 2d14: ff11f7ff .word 0xff11f7ff - 2d18: b508bd08 .word 0xb508bd08 - 2d1c: 414a424a .word 0x414a424a - 2d20: 21050112 .word 0x21050112 - 2d24: f7ff2310 .word 0xf7ff2310 - 2d28: bd08ff08 .word 0xbd08ff08 - 2d2c: 1e0ab508 .word 0x1e0ab508 - 2d30: 2210d000 .word 0x2210d000 - 2d34: 23102107 .word 0x23102107 - 2d38: fefff7ff .word 0xfefff7ff - 2d3c: 0000bd08 .word 0x0000bd08 - 2d40: 1c04b537 .word 0x1c04b537 - 2d44: 1c202505 .word 0x1c202505 - 2d48: 2208210b .word 0x2208210b - 2d4c: f7ff2360 .word 0xf7ff2360 - 2d50: 2800fef4 .word 0x2800fef4 - 2d54: 2204db43 .word 0x2204db43 - 2d58: 210f1c20 .word 0x210f1c20 - 2d5c: f7ff1c13 .word 0xf7ff1c13 - 2d60: 2800feec .word 0x2800feec - 2d64: 1c20db3b .word 0x1c20db3b - 2d68: 22002110 .word 0x22002110 - 2d6c: f7ff2303 .word 0xf7ff2303 - 2d70: 2800fee4 .word 0x2800fee4 - 2d74: 1c20db33 .word 0x1c20db33 - 2d78: f7ff4919 .word 0xf7ff4919 - 2d7c: 2800fefb .word 0x2800fefb - 2d80: 2210db2d .word 0x2210db2d - 2d84: 210b1c20 .word 0x210b1c20 - 2d88: f7ff1c13 .word 0xf7ff1c13 - 2d8c: 2800fed6 .word 0x2800fed6 - 2d90: 4814db25 .word 0x4814db25 - 2d94: fda4f7ff .word 0xfda4f7ff - 2d98: 210b1c20 .word 0x210b1c20 - 2d9c: 23102200 .word 0x23102200 - 2da0: fecbf7ff .word 0xfecbf7ff - 2da4: db1a2800 .word 0xdb1a2800 - 2da8: 210f1c20 .word 0x210f1c20 - 2dac: 23042200 .word 0x23042200 - 2db0: fec3f7ff .word 0xfec3f7ff - 2db4: db122800 .word 0xdb122800 - 2db8: 22051c20 .word 0x22051c20 - 2dbc: f7ff4669 .word 0xf7ff4669 - 2dc0: 466bfe39 .word 0x466bfe39 - 2dc4: 200f791a .word 0x200f791a - 2dc8: d0014010 .word 0xd0014010 - 2dcc: d105280f .word 0xd105280f - 2dd0: 2d003d01 .word 0x2d003d01 - 2dd4: 2101d1b7 .word 0x2101d1b7 - 2dd8: e0004248 .word 0xe0004248 - 2ddc: bd3e2000 .word 0xbd3e2000 - 2de0: 053ec600 .word 0x053ec600 - 2de4: 00002710 .word 0x00002710 - 2de8: 4b0eb538 .word 0x4b0eb538 - 2dec: 22001c04 .word 0x22001c04 - 2df0: 300c6081 .word 0x300c6081 - 2df4: f7ff701a .word 0xf7ff701a - 2df8: 6861fdfb .word 0x6861fdfb - 2dfc: f7ff1c20 .word 0xf7ff1c20 - 2e00: 1c20ff23 .word 0x1c20ff23 - 2e04: f7ff6865 .word 0xf7ff6865 - 2e08: 6065ff9b .word 0x6065ff9b - 2e0c: da032800 .word 0xda032800 - 2e10: f7ff1c20 .word 0xf7ff1c20 - 2e14: 6065ff95 .word 0x6065ff95 - 2e18: 1c201c29 .word 0x1c201c29 - 2e1c: ff14f7ff .word 0xff14f7ff - 2e20: 46c0bd38 .word 0x46c0bd38 - 2e24: 2000ef2c .word 0x2000ef2c - 2e28: 4f11b5f0 .word 0x4f11b5f0 - 2e2c: ae01b087 .word 0xae01b087 - 2e30: 1c0d1c04 .word 0x1c0d1c04 - 2e34: 1c391c30 .word 0x1c391c30 - 2e38: f0012204 .word 0xf0012204 - 2e3c: 1d39faff .word 0x1d39faff - 2e40: 2210a802 .word 0x2210a802 - 2e44: fafaf001 .word 0xfafaf001 - 2e48: 092b200f .word 0x092b200f - 2e4c: 4005a902 .word 0x4005a902 - 2e50: 5d4a5cf6 .word 0x5d4a5cf6 - 2e54: 430625b0 .word 0x430625b0 - 2e58: 1c20432a .word 0x1c20432a - 2e5c: f7ff210a .word 0xf7ff210a - 2e60: 1c20fe5d .word 0x1c20fe5d - 2e64: 1c32210b .word 0x1c32210b - 2e68: fe58f7ff .word 0xfe58f7ff - 2e6c: bdf0b007 .word 0xbdf0b007 - 2e70: 2000e9b0 .word 0x2000e9b0 - 2e74: 2005b508 .word 0x2005b508 - 2e78: f7ff21a0 .word 0xf7ff21a0 - 2e7c: 2006fd8b .word 0x2006fd8b - 2e80: f7ff21d0 .word 0xf7ff21d0 - 2e84: 2007fd87 .word 0x2007fd87 - 2e88: f7ff2100 .word 0xf7ff2100 - 2e8c: 2008fd83 .word 0x2008fd83 - 2e90: f7ff2140 .word 0xf7ff2140 - 2e94: 2009fd7f .word 0x2009fd7f - 2e98: f7ff21c0 .word 0xf7ff21c0 - 2e9c: 200afd7b .word 0x200afd7b - 2ea0: f7ff2170 .word 0xf7ff2170 - 2ea4: 200cfd77 .word 0x200cfd77 - 2ea8: f7ff21a0 .word 0xf7ff21a0 - 2eac: 200ffd73 .word 0x200ffd73 - 2eb0: f7ff212a .word 0xf7ff212a - 2eb4: 2011fd6f .word 0x2011fd6f - 2eb8: f7ff2103 .word 0xf7ff2103 - 2ebc: 2017fd6b .word 0x2017fd6b - 2ec0: f7ff21f4 .word 0xf7ff21f4 - 2ec4: 2019fd67 .word 0x2019fd67 - 2ec8: f7ff210c .word 0xf7ff210c - 2ecc: 4b02fd63 .word 0x4b02fd63 - 2ed0: 20002201 .word 0x20002201 - 2ed4: bd08701a .word 0xbd08701a - 2ed8: 2000ef2c .word 0x2000ef2c - 2edc: 4b04b508 .word 0x4b04b508 - 2ee0: 300c2200 .word 0x300c2200 - 2ee4: f7ff701a .word 0xf7ff701a - 2ee8: f7fffd83 .word 0xf7fffd83 - 2eec: bd08ffc3 .word 0xbd08ffc3 - 2ef0: 2000ef2c .word 0x2000ef2c - 2ef4: 4d0bb570 .word 0x4d0bb570 - 2ef8: 01242480 .word 0x01242480 - 2efc: 1c211c28 .word 0x1c211c28 - 2f00: fbfdf7ff .word 0xfbfdf7ff - 2f04: 20002105 .word 0x20002105 - 2f08: f922f001 .word 0xf922f001 - 2f0c: 200021ff .word 0x200021ff - 2f10: f91ef001 .word 0xf91ef001 - 2f14: 1c061c21 .word 0x1c061c21 - 2f18: f7ff1c28 .word 0xf7ff1c28 - 2f1c: b2f0fbeb .word 0xb2f0fbeb - 2f20: 46c0bd70 .word 0x46c0bd70 - 2f24: 400f6014 .word 0x400f6014 - 2f28: 4d11b570 .word 0x4d11b570 - 2f2c: 01242480 .word 0x01242480 - 2f30: 1c211c28 .word 0x1c211c28 - 2f34: fbe3f7ff .word 0xfbe3f7ff - 2f38: 200021ab .word 0x200021ab - 2f3c: f908f001 .word 0xf908f001 - 2f40: 200021ff .word 0x200021ff - 2f44: f904f001 .word 0xf904f001 - 2f48: 200021ff .word 0x200021ff - 2f4c: f900f001 .word 0xf900f001 - 2f50: 200021ff .word 0x200021ff - 2f54: f8fcf001 .word 0xf8fcf001 - 2f58: 200021ff .word 0x200021ff - 2f5c: f8f8f001 .word 0xf8f8f001 - 2f60: 1c061c21 .word 0x1c061c21 - 2f64: f7ff1c28 .word 0xf7ff1c28 - 2f68: b2f0fbc5 .word 0xb2f0fbc5 - 2f6c: 46c0bd70 .word 0x46c0bd70 - 2f70: 400f6014 .word 0x400f6014 - 2f74: 2280b5f0 .word 0x2280b5f0 - 2f78: 03904b31 .word 0x03904b31 - 2f7c: 6018b087 .word 0x6018b087 - 2f80: 483021f2 .word 0x483021f2 - 2f84: ff48f000 .word 0xff48f000 - 2f88: 21f0482f .word 0x21f0482f - 2f8c: ff44f000 .word 0xff44f000 - 2f90: 21f0482e .word 0x21f0482e - 2f94: ff40f000 .word 0xff40f000 - 2f98: 21f0482d .word 0x21f0482d - 2f9c: ff3cf000 .word 0xff3cf000 - 2fa0: 21f4482c .word 0x21f4482c - 2fa4: ff38f000 .word 0xff38f000 - 2fa8: 21f4482b .word 0x21f4482b - 2fac: ff34f000 .word 0xff34f000 - 2fb0: 21f54827 .word 0x21f54827 - 2fb4: ff30f000 .word 0xff30f000 - 2fb8: 21f54826 .word 0x21f54826 - 2fbc: ff2cf000 .word 0xff2cf000 - 2fc0: 21f24820 .word 0x21f24820 - 2fc4: ff28f000 .word 0xff28f000 - 2fc8: 21f0481f .word 0x21f0481f - 2fcc: ff24f000 .word 0xff24f000 - 2fd0: 481e4d22 .word 0x481e4d22 - 2fd4: 27c021f0 .word 0x27c021f0 - 2fd8: ff1ef000 .word 0xff1ef000 - 2fdc: 481e4c20 .word 0x481e4c20 - 2fe0: 023f21f4 .word 0x023f21f4 - 2fe4: f0002680 .word 0xf0002680 - 2fe8: 0136ff17 .word 0x0136ff17 - 2fec: 1c391c28 .word 0x1c391c28 - 2ff0: fb80f7ff .word 0xfb80f7ff - 2ff4: 1c201c31 .word 0x1c201c31 - 2ff8: fb7cf7ff .word 0xfb7cf7ff - 2ffc: 20026829 .word 0x20026829 - 3000: 602f430f .word 0x602f430f - 3004: 25006822 .word 0x25006822 - 3008: 60264316 .word 0x60264316 - 300c: 90001c2b .word 0x90001c2b - 3010: 95029001 .word 0x95029001 - 3014: 95049503 .word 0x95049503 - 3018: 21071c28 .word 0x21071c28 - 301c: f0011c2a .word 0xf0011c2a - 3020: 4b10f837 .word 0x4b10f837 - 3024: 1c1f701d .word 0x1c1f701d - 3028: 2c13783c .word 0x2c13783c - 302c: 2c15d005 .word 0x2c15d005 - 3030: f7ffd003 .word 0xf7ffd003 - 3034: 7038ff79 .word 0x7038ff79 - 3038: b007e7f6 .word 0xb007e7f6 - 303c: 46c0bdf0 .word 0x46c0bdf0 - 3040: 40053104 .word 0x40053104 - 3044: 4008618c .word 0x4008618c - 3048: 40086190 .word 0x40086190 - 304c: 40086194 .word 0x40086194 - 3050: 40086198 .word 0x40086198 - 3054: 4008619c .word 0x4008619c - 3058: 400861a0 .word 0x400861a0 - 305c: 400f6004 .word 0x400f6004 - 3060: 400f6014 .word 0x400f6014 - 3064: 2000f764 .word 0x2000f764 - 3068: b5382180 .word 0xb5382180 - 306c: 1c050109 .word 0x1c050109 - 3070: f7ff4820 .word 0xf7ff4820 - 3074: 4b20fb44 .word 0x4b20fb44 - 3078: 28137818 .word 0x28137818 - 307c: 2000d119 .word 0x2000d119 - 3080: f001214b .word 0xf001214b - 3084: 2404f865 .word 0x2404f865 - 3088: 21ff2000 .word 0x21ff2000 - 308c: f0013c01 .word 0xf0013c01 - 3090: 2c00f85f .word 0x2c00f85f - 3094: 2000d1f8 .word 0x2000d1f8 - 3098: f00121ff .word 0xf00121ff - 309c: 5528f859 .word 0x5528f859 - 30a0: 2c083401 .word 0x2c083401 - 30a4: 2280d1f7 .word 0x2280d1f7 - 30a8: 01114812 .word 0x01114812 - 30ac: fb22f7ff .word 0xfb22f7ff - 30b0: 2815bd38 .word 0x2815bd38 - 30b4: 214bd1f7 .word 0x214bd1f7 - 30b8: f0012000 .word 0xf0012000 - 30bc: 2000f849 .word 0x2000f849 - 30c0: f0011c01 .word 0xf0011c01 - 30c4: 2101f845 .word 0x2101f845 - 30c8: f0012000 .word 0xf0012000 - 30cc: 2102f841 .word 0x2102f841 - 30d0: f0012000 .word 0xf0012000 - 30d4: 2000f83d .word 0x2000f83d - 30d8: f00121ff .word 0xf00121ff - 30dc: 2400f839 .word 0x2400f839 - 30e0: 21ff2000 .word 0x21ff2000 - 30e4: f834f001 .word 0xf834f001 - 30e8: 34015528 .word 0x34015528 - 30ec: d1f72c08 .word 0xd1f72c08 - 30f0: 46c0e7d9 .word 0x46c0e7d9 - 30f4: 400f6014 .word 0x400f6014 - 30f8: 2000f764 .word 0x2000f764 - 30fc: f7ffb508 .word 0xf7ffb508 - 3100: 07c3fef9 .word 0x07c3fef9 - 3104: bd08d4fb .word 0xbd08d4fb - 3108: 4d09b538 .word 0x4d09b538 - 310c: 01242480 .word 0x01242480 - 3110: fff4f7ff .word 0xfff4f7ff - 3114: 1c211c28 .word 0x1c211c28 - 3118: faf1f7ff .word 0xfaf1f7ff - 311c: 20002106 .word 0x20002106 - 3120: f816f001 .word 0xf816f001 - 3124: 1c211c28 .word 0x1c211c28 - 3128: fae4f7ff .word 0xfae4f7ff - 312c: 46c0bd38 .word 0x46c0bd38 - 3130: 400f6014 .word 0x400f6014 - 3134: 4d17b538 .word 0x4d17b538 - 3138: 1c042300 .word 0x1c042300 - 313c: 7828702b .word 0x7828702b - 3140: d0052813 .word 0xd0052813 - 3144: d0032815 .word 0xd0032815 - 3148: feeef7ff .word 0xfeeef7ff - 314c: e7f67028 .word 0xe7f67028 - 3150: ffdaf7ff .word 0xffdaf7ff - 3154: ffd2f7ff .word 0xffd2f7ff - 3158: 480f2180 .word 0x480f2180 - 315c: f7ff0109 .word 0xf7ff0109 - 3160: 21d8face .word 0x21d8face - 3164: f0002000 .word 0xf0002000 - 3168: 0222fff3 .word 0x0222fff3 - 316c: 04250e11 .word 0x04250e11 - 3170: f0002000 .word 0xf0002000 - 3174: 0e29ffed .word 0x0e29ffed - 3178: f0002000 .word 0xf0002000 - 317c: b2e1ffe9 .word 0xb2e1ffe9 - 3180: 24802000 .word 0x24802000 - 3184: ffe4f000 .word 0xffe4f000 - 3188: 01214803 .word 0x01214803 - 318c: fab2f7ff .word 0xfab2f7ff - 3190: 46c0bd38 .word 0x46c0bd38 - 3194: 2000f764 .word 0x2000f764 - 3198: 400f6014 .word 0x400f6014 - 319c: b2c7b5f8 .word 0xb2c7b5f8 - 31a0: 23801c16 .word 0x23801c16 - 31a4: 1c0419ca .word 0x1c0419ca - 31a8: 00581c0d .word 0x00581c0d - 31ac: d82e4282 .word 0xd82e4282 - 31b0: 034a2180 .word 0x034a2180 - 31b4: 429c1b53 .word 0x429c1b53 - 31b8: f7ffd829 .word 0xf7ffd829 - 31bc: f7ffffa5 .word 0xf7ffffa5 - 31c0: 2180ff9d .word 0x2180ff9d - 31c4: 01094812 .word 0x01094812 - 31c8: fa99f7ff .word 0xfa99f7ff - 31cc: 20002102 .word 0x20002102 - 31d0: ffbef000 .word 0xffbef000 - 31d4: 0e010220 .word 0x0e010220 - 31d8: 20000424 .word 0x20000424 - 31dc: ffb8f000 .word 0xffb8f000 - 31e0: 20000e21 .word 0x20000e21 - 31e4: ffb4f000 .word 0xffb4f000 - 31e8: 2000b2b9 .word 0x2000b2b9 - 31ec: ffb0f000 .word 0xffb0f000 - 31f0: 1ba71c34 .word 0x1ba71c34 - 31f4: da0542af .word 0xda0542af - 31f8: 20007821 .word 0x20007821 - 31fc: ffa8f000 .word 0xffa8f000 - 3200: e7f63401 .word 0xe7f63401 - 3204: 48022580 .word 0x48022580 - 3208: f7ff0129 .word 0xf7ff0129 - 320c: bdf8fa73 .word 0xbdf8fa73 - 3210: 400f6014 .word 0x400f6014 - 3214: 1c04b5f8 .word 0x1c04b5f8 - 3218: 1c171c0d .word 0x1c171c0d - 321c: fe84f7ff .word 0xfe84f7ff - 3220: d0012813 .word 0xd0012813 - 3224: d1f92815 .word 0xd1f92815 - 3228: 03582380 .word 0x03582380 - 322c: d82f4285 .word 0xd82f4285 - 3230: d82d4284 .word 0xd82d4284 - 3234: 4282192a .word 0x4282192a - 3238: 2680d82a .word 0x2680d82a - 323c: b2e10073 .word 0xb2e10073 - 3240: b2861a58 .word 0xb2861a58 - 3244: d20242b5 .word 0xd20242b5 - 3248: 2e00b2ae .word 0x2e00b2ae - 324c: 1c20d007 .word 0x1c20d007 - 3250: 1c311c3a .word 0x1c311c3a - 3254: ffa2f7ff .word 0xffa2f7ff - 3258: 19bf19a4 .word 0x19bf19a4 - 325c: 1c261bad .word 0x1c261bad - 3260: 19611b3a .word 0x19611b3a - 3264: 1b8b1992 .word 0x1b8b1992 - 3268: d9072bff .word 0xd9072bff - 326c: 1c302180 .word 0x1c302180 - 3270: 36010049 .word 0x36010049 - 3274: ff92f7ff .word 0xff92f7ff - 3278: e7f136ff .word 0xe7f136ff - 327c: 02060a28 .word 0x02060a28 - 3280: 1930b2ed .word 0x1930b2ed - 3284: 2d0019ba .word 0x2d0019ba - 3288: b2a9d002 .word 0xb2a9d002 - 328c: ff86f7ff .word 0xff86f7ff - 3290: 0000bdf8 .word 0x0000bdf8 - 3294: 2380b5f8 .word 0x2380b5f8 - 3298: 1c0e1c05 .word 0x1c0e1c05 - 329c: 03581c14 .word 0x03581c14 - 32a0: d8314281 .word 0xd8314281 - 32a4: d82f4285 .word 0xd82f4285 - 32a8: 4282194a .word 0x4282194a - 32ac: f7ffd82c .word 0xf7ffd82c - 32b0: 2180ff25 .word 0x2180ff25 - 32b4: 01094815 .word 0x01094815 - 32b8: fa21f7ff .word 0xfa21f7ff - 32bc: 2000210b .word 0x2000210b - 32c0: ff46f000 .word 0xff46f000 - 32c4: 20000c29 .word 0x20000c29 - 32c8: ff42f000 .word 0xff42f000 - 32cc: 0a2927ff .word 0x0a2927ff - 32d0: 20004039 .word 0x20004039 - 32d4: ff3cf000 .word 0xff3cf000 - 32d8: 40391c29 .word 0x40391c29 - 32dc: f0002000 .word 0xf0002000 - 32e0: 2000ff37 .word 0x2000ff37 - 32e4: f0001c39 .word 0xf0001c39 - 32e8: 19a5ff33 .word 0x19a5ff33 - 32ec: d00642ac .word 0xd00642ac - 32f0: 21ff2000 .word 0x21ff2000 - 32f4: ff2cf000 .word 0xff2cf000 - 32f8: 34017020 .word 0x34017020 - 32fc: 2480e7f6 .word 0x2480e7f6 - 3300: 01214802 .word 0x01214802 - 3304: f9f6f7ff .word 0xf9f6f7ff - 3308: 46c0bdf8 .word 0x46c0bdf8 - 330c: 400f6014 .word 0x400f6014 - 3310: 49044b03 .word 0x49044b03 - 3314: 18406818 .word 0x18406818 - 3318: 41981e43 .word 0x41981e43 - 331c: 46c04770 .word 0x46c04770 - 3320: 10400100 .word 0x10400100 - 3324: edcba988 .word 0xedcba988 - 3328: 1c04b538 .word 0x1c04b538 - 332c: fff0f7ff .word 0xfff0f7ff - 3330: d0061e05 .word 0xd0061e05 - 3334: 1c214d10 .word 0x1c214d10 - 3338: 682a3118 .word 0x682a3118 - 333c: 47901c20 .word 0x47901c20 - 3340: f7ffe018 .word 0xf7ffe018 - 3344: 7823fe17 .word 0x7823fe17 - 3348: d0082b36 .word 0xd0082b36 - 334c: d10e2b3a .word 0xd10e2b3a - 3350: 61e51c20 .word 0x61e51c20 - 3354: 30246225 .word 0x30246225 - 3358: fe86f7ff .word 0xfe86f7ff - 335c: 4a07e005 .word 0x4a07e005 - 3360: 68134807 .word 0x68134807 - 3364: 680161e3 .word 0x680161e3 - 3368: 83256221 .word 0x83256221 - 336c: 2080e002 .word 0x2080e002 - 3370: 83210041 .word 0x83210041 - 3374: bd388b20 .word 0xbd388b20 - 3378: 10400100 .word 0x10400100 - 337c: 40043200 .word 0x40043200 - 3380: 40045000 .word 0x40045000 - 3384: 49084b07 .word 0x49084b07 - 3388: 60184a08 .word 0x60184a08 - 338c: 60084b08 .word 0x60084b08 - 3390: 68196010 .word 0x68196010 - 3394: 60194001 .word 0x60194001 - 3398: 681a4b06 .word 0x681a4b06 - 339c: 60184010 .word 0x60184010 - 33a0: 46c04770 .word 0x46c04770 - 33a4: 40006178 .word 0x40006178 - 33a8: 4000617c .word 0x4000617c - 33ac: 40006144 .word 0x40006144 - 33b0: 400061ac .word 0x400061ac - 33b4: 400061bc .word 0x400061bc - 33b8: 68194b04 .word 0x68194b04 - 33bc: d1fb4201 .word 0xd1fb4201 - 33c0: 60184b03 .word 0x60184b03 - 33c4: 4202681a .word 0x4202681a - 33c8: 4770d1fc .word 0x4770d1fc - 33cc: 400061b0 .word 0x400061b0 - 33d0: 400061b4 .word 0x400061b4 - 33d4: 4b0d4a0c .word 0x4b0d4a0c - 33d8: 480d6811 .word 0x480d6811 - 33dc: 60114019 .word 0x60114019 - 33e0: 401a6802 .word 0x401a6802 - 33e4: 480b6002 .word 0x480b6002 - 33e8: 68014a0b .word 0x68014a0b - 33ec: 60014019 .word 0x60014019 - 33f0: 40186810 .word 0x40186810 - 33f4: 4a096010 .word 0x4a096010 - 33f8: 68114809 .word 0x68114809 - 33fc: 60114019 .word 0x60114019 - 3400: 40136802 .word 0x40136802 - 3404: 47706003 .word 0x47706003 - 3408: 400061c0 .word 0x400061c0 - 340c: ff7fff7f .word 0xff7fff7f - 3410: 400061c4 .word 0x400061c4 - 3414: 400061c8 .word 0x400061c8 - 3418: 400061cc .word 0x400061cc - 341c: 400061d0 .word 0x400061d0 - 3420: 400061d4 .word 0x400061d4 - 3424: 0603220f .word 0x0603220f - 3428: 0fd94010 .word 0x0fd94010 - 342c: 180b0040 .word 0x180b0040 - 3430: 01994a01 .word 0x01994a01 - 3434: 47701888 .word 0x47701888 - 3438: 2000f800 .word 0x2000f800 - 343c: 23804a05 .word 0x23804a05 - 3440: 21000298 .word 0x21000298 - 3444: 60116010 .word 0x60116010 - 3448: 68134a03 .word 0x68134a03 - 344c: d0fb4203 .word 0xd0fb4203 - 3450: 46c04770 .word 0x46c04770 - 3454: 40053100 .word 0x40053100 - 3458: 40053150 .word 0x40053150 - 345c: 6904b538 .word 0x6904b538 - 3460: 1c201c0d .word 0x1c201c0d - 3464: ffdef7ff .word 0xffdef7ff - 3468: 22c068c3 .word 0x22c068c3 - 346c: 60854393 .word 0x60854393 - 3470: 200f60c3 .word 0x200f60c3 - 3474: 21014020 .word 0x21014020 - 3478: 4d034081 .word 0x4d034081 - 347c: 06201c0b .word 0x06201c0b - 3480: 040bd500 .word 0x040bd500 - 3484: bd38602b .word 0xbd38602b - 3488: 400061b0 .word 0x400061b0 - 348c: b5386902 .word 0xb5386902 - 3490: 250f1c04 .word 0x250f1c04 - 3494: f0004015 .word 0xf0004015 - 3498: 6923fa6d .word 0x6923fa6d - 349c: 40a82001 .word 0x40a82001 - 34a0: d500061a .word 0xd500061a - 34a4: f7ff0400 .word 0xf7ff0400 - 34a8: bd38ff87 .word 0xbd38ff87 - 34ac: b5106903 .word 0xb5106903 - 34b0: 1c04210f .word 0x1c04210f - 34b4: 40194810 .word 0x40194810 - 34b8: 18092280 .word 0x18092280 - 34bc: d0054213 .word 0xd0054213 - 34c0: 68080089 .word 0x68080089 - 34c4: 40034b0d .word 0x40034b0d - 34c8: e003600b .word 0xe003600b - 34cc: 6818008b .word 0x6818008b - 34d0: 60184390 .word 0x60184390 - 34d4: f0001c20 .word 0xf0001c20 - 34d8: 6921fa4d .word 0x6921fa4d - 34dc: 400a220f .word 0x400a220f - 34e0: 40902001 .word 0x40902001 - 34e4: d5000609 .word 0xd5000609 - 34e8: f7ff0400 .word 0xf7ff0400 - 34ec: 1c20ff4b .word 0x1c20ff4b - 34f0: ffccf7ff .word 0xffccf7ff - 34f4: 46c0bd10 .word 0x46c0bd10 - 34f8: 10001870 .word 0x10001870 - 34fc: ff7fffff .word 0xff7fffff - 3500: 6904b510 .word 0x6904b510 - 3504: 4023230f .word 0x4023230f - 3508: 22014907 .word 0x22014907 - 350c: d5030620 .word 0xd5030620 - 3510: 6808409a .word 0x6808409a - 3514: e0020414 .word 0xe0020414 - 3518: 6808409a .word 0x6808409a - 351c: 40201c14 .word 0x40201c14 - 3520: 41981e43 .word 0x41981e43 - 3524: 46c0bd10 .word 0x46c0bd10 - 3528: 400061b8 .word 0x400061b8 - 352c: 6903b5f8 .word 0x6903b5f8 - 3530: 1c16600a .word 0x1c16600a - 3534: 1c05220f .word 0x1c05220f - 3538: 4813401a .word 0x4813401a - 353c: 061c2101 .word 0x061c2101 - 3540: 4091d503 .word 0x4091d503 - 3544: 040f6804 .word 0x040f6804 - 3548: 4091e002 .word 0x4091e002 - 354c: 1c0f6804 .word 0x1c0f6804 - 3550: 1e62403c .word 0x1e62403c - 3554: 2c004194 .word 0x2c004194 - 3558: 4c0cd115 .word 0x4c0cd115 - 355c: 68222080 .word 0x68222080 - 3560: 433a01c7 .word 0x433a01c7 - 3564: 1c286022 .word 0x1c286022 - 3568: ffcaf7ff .word 0xffcaf7ff - 356c: 42396821 .word 0x42396821 - 3570: 6822d0f3 .word 0x6822d0f3 - 3574: 40134b06 .word 0x40134b06 - 3578: 28006023 .word 0x28006023 - 357c: 1c28d103 .word 0x1c28d103 - 3580: f7ff1c31 .word 0xf7ff1c31 - 3584: bdf8ff6b .word 0xbdf8ff6b - 3588: 400061b0 .word 0x400061b0 - 358c: 40006140 .word 0x40006140 - 3590: ffffbfff .word 0xffffbfff - 3594: 1c05b538 .word 0x1c05b538 - 3598: 1c281c0c .word 0x1c281c0c - 359c: ffb0f7ff .word 0xffb0f7ff - 35a0: d1fa2800 .word 0xd1fa2800 - 35a4: 1c282301 .word 0x1c282301 - 35a8: 1c216023 .word 0x1c216023 - 35ac: ff56f7ff .word 0xff56f7ff - 35b0: 0000bd38 .word 0x0000bd38 - 35b4: 230f6902 .word 0x230f6902 - 35b8: 40134804 .word 0x40134804 - 35bc: 008b1819 .word 0x008b1819 - 35c0: 4803681a .word 0x4803681a - 35c4: 601a4302 .word 0x601a4302 - 35c8: 46c04770 .word 0x46c04770 - 35cc: 10001870 .word 0x10001870 - 35d0: 00010001 .word 0x00010001 - 35d4: 1c024b08 .word 0x1c024b08 - 35d8: 20016819 .word 0x20016819 - 35dc: d10a428a .word 0xd10a428a - 35e0: 23c04806 .word 0x23c04806 - 35e4: 05196802 .word 0x05196802 - 35e8: 401120f8 .word 0x401120f8 - 35ec: 18880602 .word 0x18880602 - 35f0: 41584243 .word 0x41584243 - 35f4: 47703001 .word 0x47703001 - 35f8: 2000f340 .word 0x2000f340 - 35fc: 40006184 .word 0x40006184 - 3600: 681a4b03 .word 0x681a4b03 - 3604: d1024290 .word 0xd1024290 - 3608: 06494802 .word 0x06494802 - 360c: 47706001 .word 0x47706001 - 3610: 2000f340 .word 0x2000f340 - 3614: 40006154 .word 0x40006154 - 3618: 681a4b05 .word 0x681a4b05 - 361c: d1054290 .word 0xd1054290 - 3620: 21800648 .word 0x21800648 - 3624: 4b03044a .word 0x4b03044a - 3628: 601a4302 .word 0x601a4302 - 362c: 46c04770 .word 0x46c04770 - 3630: 2000f340 .word 0x2000f340 - 3634: 40006154 .word 0x40006154 - 3638: 2800b508 .word 0x2800b508 - 363c: 4816d12b .word 0x4816d12b - 3640: 68024b16 .word 0x68024b16 - 3644: 21206019 .word 0x21206019 - 3648: 6002438a .word 0x6002438a - 364c: fec2f7ff .word 0xfec2f7ff - 3650: 42582301 .word 0x42582301 - 3654: fe96f7ff .word 0xfe96f7ff - 3658: 42402001 .word 0x42402001 - 365c: feacf7ff .word 0xfeacf7ff - 3660: 21014b0f .word 0x21014b0f - 3664: 2002681a .word 0x2002681a - 3668: 601a438a .word 0x601a438a - 366c: 68186018 .word 0x68186018 - 3670: 4a0b2102 .word 0x4a0b2102 - 3674: d1fa4208 .word 0xd1fa4208 - 3678: 20094b0a .word 0x20094b0a - 367c: 490a6019 .word 0x490a6019 - 3680: 60084b0a .word 0x60084b0a - 3684: 490a6810 .word 0x490a6810 - 3688: 60134003 .word 0x60134003 - 368c: 4a0a4809 .word 0x4a0a4809 - 3690: 600a4b0a .word 0x600a4b0a - 3694: bd086018 .word 0xbd086018 - 3698: 40043004 .word 0x40043004 - 369c: 2000f340 .word 0x2000f340 - 36a0: 40006140 .word 0x40006140 - 36a4: 400061a8 .word 0x400061a8 - 36a8: 400061a4 .word 0x400061a4 - 36ac: ff00ffff .word 0xff00ffff - 36b0: 40006158 .word 0x40006158 - 36b4: 00000147 .word 0x00000147 - 36b8: 2000f800 .word 0x2000f800 - 36bc: 40006148 .word 0x40006148 - 36c0: 4b06b508 .word 0x4b06b508 - 36c4: 42886819 .word 0x42886819 - 36c8: 2008d102 .word 0x2008d102 - 36cc: fe1ef000 .word 0xfe1ef000 - 36d0: 23014803 .word 0x23014803 - 36d4: 431a6802 .word 0x431a6802 - 36d8: bd086002 .word 0xbd086002 - 36dc: 2000f340 .word 0x2000f340 - 36e0: 40006140 .word 0x40006140 - 36e4: 1c04b5f8 .word 0x1c04b5f8 - 36e8: fed0f7ff .word 0xfed0f7ff - 36ec: 68186963 .word 0x68186963 - 36f0: 1c2079c7 .word 0x1c2079c7 - 36f4: fa41f000 .word 0xfa41f000 - 36f8: d0061e05 .word 0xd0061e05 - 36fc: fa52f000 .word 0xfa52f000 - 3700: 1c281c07 .word 0x1c281c07 - 3704: fa54f000 .word 0xfa54f000 - 3708: 69261c05 .word 0x69261c05 - 370c: f7ff1c30 .word 0xf7ff1c30 - 3710: 426bfe89 .word 0x426bfe89 - 3714: 2280416b .word 0x2280416b - 3718: 03df0439 .word 0x03df0439 - 371c: 43190593 .word 0x43190593 - 3720: 60014339 .word 0x60014339 - 3724: 21002701 .word 0x21002701 - 3728: 604160c1 .word 0x604160c1 - 372c: 60876101 .word 0x60876101 - 3730: 61816141 .word 0x61816141 - 3734: 620161c1 .word 0x620161c1 - 3738: 240f6244 .word 0x240f6244 - 373c: 4034480b .word 0x4034480b - 3740: 00931822 .word 0x00931822 - 3744: 4c0a6819 .word 0x4c0a6819 - 3748: 04ad00af .word 0x04ad00af - 374c: 400c433d .word 0x400c433d - 3750: 601d4325 .word 0x601d4325 - 3754: d5030632 .word 0xd5030632 - 3758: 681822c0 .word 0x681822c0 - 375c: e0010416 .word 0xe0010416 - 3760: 20c0681e .word 0x20c0681e - 3764: 601e4306 .word 0x601e4306 - 3768: 46c0bdf8 .word 0x46c0bdf8 - 376c: 10001870 .word 0x10001870 - 3770: fff3fff3 .word 0xfff3fff3 - 3774: 4b5db5f0 .word 0x4b5db5f0 - 3778: 68194a5d .word 0x68194a5d - 377c: b0856810 .word 0xb0856810 - 3780: 91004001 .word 0x91004001 - 3784: d1006019 .word 0xd1006019 - 3788: 07cbe0ad .word 0x07cbe0ad - 378c: 9800d418 .word 0x9800d418 - 3790: d4000642 .word 0xd4000642 - 3794: 4e57e0a7 .word 0x4e57e0a7 - 3798: 68372401 .word 0x68372401 - 379c: f7ff2501 .word 0xf7ff2501 - 37a0: 4260fe19 .word 0x4260fe19 - 37a4: fdeef7ff .word 0xfdeef7ff - 37a8: f7ff4268 .word 0xf7ff4268 - 37ac: 1c38fe05 .word 0x1c38fe05 - 37b0: f7ff2100 .word 0xf7ff2100 - 37b4: 1c38ff25 .word 0x1c38ff25 - 37b8: f0002100 .word 0xf0002100 - 37bc: e092fa03 .word 0xe092fa03 - 37c0: 26004f4d .word 0x26004f4d - 37c4: 9303683b .word 0x9303683b - 37c8: d15d42b3 .word 0xd15d42b3 - 37cc: 24004e4b .word 0x24004e4b - 37d0: 42a76837 .word 0x42a76837 - 37d4: e7dad170 .word 0xe7dad170 - 37d8: f7ff1c30 .word 0xf7ff1c30 - 37dc: 6a44fe23 .word 0x6a44fe23 - 37e0: d0582c00 .word 0xd0582c00 - 37e4: 28006a20 .word 0x28006a20 - 37e8: 6923d055 .word 0x6923d055 - 37ec: 93011c18 .word 0x93011c18 - 37f0: fe18f7ff .word 0xfe18f7ff - 37f4: 31281c01 .word 0x31281c01 - 37f8: 1c05780a .word 0x1c05780a - 37fc: 35297022 .word 0x35297022 - 3800: 1c01782b .word 0x1c01782b - 3804: 312a7063 .word 0x312a7063 - 3808: 1c05780a .word 0x1c05780a - 380c: 352b70a2 .word 0x352b70a2 - 3810: 1c01782b .word 0x1c01782b - 3814: 312c70e3 .word 0x312c70e3 - 3818: 1c05780a .word 0x1c05780a - 381c: 352d7122 .word 0x352d7122 - 3820: 1c01782b .word 0x1c01782b - 3824: 312e7163 .word 0x312e7163 - 3828: 302f780a .word 0x302f780a - 382c: 780071a2 .word 0x780071a2 - 3830: 71e069a5 .word 0x71e069a5 - 3834: f7ff9801 .word 0xf7ff9801 - 3838: 1c03fdf5 .word 0x1c03fdf5 - 383c: 78193328 .word 0x78193328 - 3840: 70291c02 .word 0x70291c02 - 3844: 78133229 .word 0x78133229 - 3848: 706b1c01 .word 0x706b1c01 - 384c: 780a312a .word 0x780a312a - 3850: 70aa1c03 .word 0x70aa1c03 - 3854: 7819332b .word 0x7819332b - 3858: 70e91c02 .word 0x70e91c02 - 385c: 7813322c .word 0x7813322c - 3860: 712b1c01 .word 0x712b1c01 - 3864: 780a312d .word 0x780a312d - 3868: 716a1c03 .word 0x716a1c03 - 386c: 7819332e .word 0x7819332e - 3870: 71a9302f .word 0x71a9302f - 3874: 71e87800 .word 0x71e87800 - 3878: 6a229d02 .word 0x6a229d02 - 387c: 1c20603d .word 0x1c20603d - 3880: 36014790 .word 0x36014790 - 3884: d0a12e06 .word 0xd0a12e06 - 3888: 9a032101 .word 0x9a032101 - 388c: 910240b1 .word 0x910240b1 - 3890: d0f6420a .word 0xd0f6420a - 3894: 9d02e7a0 .word 0x9d02e7a0 - 3898: e7f2603d .word 0xe7f2603d - 389c: 1c206035 .word 0x1c206035 - 38a0: fdc0f7ff .word 0xfdc0f7ff - 38a4: 28006a40 .word 0x28006a40 - 38a8: 0429d10b .word 0x0429d10b - 38ac: d10d420f .word 0xd10d420f - 38b0: 2c063401 .word 0x2c063401 - 38b4: e76ad100 .word 0xe76ad100 - 38b8: 40a52501 .word 0x40a52501 - 38bc: d0f4422f .word 0xd0f4422f - 38c0: 6a43e7ec .word 0x6a43e7ec - 38c4: d0f02b00 .word 0xd0f02b00 - 38c8: e7ee4798 .word 0xe7ee4798 - 38cc: 60311c20 .word 0x60311c20 - 38d0: f7ff3080 .word 0xf7ff3080 - 38d4: 6a40fda7 .word 0x6a40fda7 - 38d8: d0e92800 .word 0xd0e92800 - 38dc: 2a006a42 .word 0x2a006a42 - 38e0: 4790d0e6 .word 0x4790d0e6 - 38e4: b005e7e4 .word 0xb005e7e4 - 38e8: 46c0bdf0 .word 0x46c0bdf0 - 38ec: 40006144 .word 0x40006144 - 38f0: 40006148 .word 0x40006148 - 38f4: 2000f340 .word 0x2000f340 - 38f8: 400061ac .word 0x400061ac - 38fc: 400061bc .word 0x400061bc - 3900: 210f6903 .word 0x210f6903 - 3904: 400b061a .word 0x400b061a - 3908: 005b0fd0 .word 0x005b0fd0 - 390c: 4903181a .word 0x4903181a - 3910: 58400090 .word 0x58400090 - 3914: d1002800 .word 0xd1002800 - 3918: 4770e7fe .word 0x4770e7fe - 391c: 2000f344 .word 0x2000f344 - 3920: b5706803 .word 0xb5706803 - 3924: 220f691c .word 0x220f691c - 3928: 40140621 .word 0x40140621 - 392c: 00660fcd .word 0x00660fcd - 3930: 4b0e19ac .word 0x4b0e19ac - 3934: 58ca00a1 .word 0x58ca00a1 - 3938: d0002a00 .word 0xd0002a00 - 393c: 50c8e7fe .word 0x50c8e7fe - 3940: 68446881 .word 0x68446881 - 3944: 1e651c0b .word 0x1e651c0b - 3948: d20642aa .word 0xd20642aa - 394c: 1c1e3380 .word 0x1c1e3380 - 3950: 60333e80 .word 0x60333e80 - 3954: 32016670 .word 0x32016670 - 3958: 4d05e7f6 .word 0x4d05e7f6 - 395c: 19622300 .word 0x19622300 - 3960: 198c01d6 .word 0x198c01d6 - 3964: 66606023 .word 0x66606023 - 3968: 46c0bd70 .word 0x46c0bd70 - 396c: 2000f344 .word 0x2000f344 - 3970: 01ffffff .word 0x01ffffff - 3974: f7ffb508 .word 0xf7ffb508 - 3978: b672ffc3 .word 0xb672ffc3 - 397c: 2b0068c3 .word 0x2b0068c3 - 3980: 68c3d007 .word 0x68c3d007 - 3984: 6e5a6819 .word 0x6e5a6819 - 3988: 689160c1 .word 0x689160c1 - 398c: 60936019 .word 0x60936019 - 3990: b662e7f4 .word 0xb662e7f4 - 3994: 0000bd08 .word 0x0000bd08 - 3998: 1c0cb538 .word 0x1c0cb538 - 399c: f7ff1c15 .word 0xf7ff1c15 - 39a0: 6883ffaf .word 0x6883ffaf - 39a4: d0422b00 .word 0xd0422b00 - 39a8: 6883b672 .word 0x6883b672 - 39ac: 68192200 .word 0x68192200 - 39b0: 601a6081 .word 0x601a6081 - 39b4: 2101b662 .word 0x2101b662 - 39b8: 491e6419 .word 0x491e6419 - 39bc: 430a042a .word 0x430a042a - 39c0: 2280645a .word 0x2280645a - 39c4: 18620151 .word 0x18620151 - 39c8: 030a0b11 .word 0x030a0b11 - 39cc: 649c2180 .word 0x649c2180 - 39d0: 018a64da .word 0x018a64da - 39d4: 0b0a18a1 .word 0x0b0a18a1 - 39d8: 22c00311 .word 0x22c00311 - 39dc: 01916519 .word 0x01916519 - 39e0: 0b111862 .word 0x0b111862 - 39e4: 2180030a .word 0x2180030a - 39e8: 01ca655a .word 0x01ca655a - 39ec: 0b2118a4 .word 0x0b2118a4 - 39f0: 659a030a .word 0x659a030a - 39f4: b672661d .word 0xb672661d - 39f8: 68ec6e5d .word 0x68ec6e5d - 39fc: d00d2c00 .word 0xd00d2c00 - 3a00: 680a68e9 .word 0x680a68e9 - 3a04: d0012a00 .word 0xd0012a00 - 3a08: e7fa1c11 .word 0xe7fa1c11 - 3a0c: 600b1c1a .word 0x600b1c1a - 3a10: 31406800 .word 0x31406800 - 3a14: f7ff3240 .word 0xf7ff3240 - 3a18: e005fd89 .word 0xe005fd89 - 3a1c: 60eb1c19 .word 0x60eb1c19 - 3a20: 31406800 .word 0x31406800 - 3a24: fdb6f7ff .word 0xfdb6f7ff - 3a28: 2000b662 .word 0x2000b662 - 3a2c: 2001e001 .word 0x2001e001 - 3a30: bd384240 .word 0xbd384240 - 3a34: 00008080 .word 0x00008080 - 3a38: 1c06b570 .word 0x1c06b570 - 3a3c: 1c141c0d .word 0x1c141c0d - 3a40: 1c291c30 .word 0x1c291c30 - 3a44: f7ff1c22 .word 0xf7ff1c22 - 3a48: 3001ffa7 .word 0x3001ffa7 - 3a4c: 2000d0f8 .word 0x2000d0f8 - 3a50: b508bd70 .word 0xb508bd70 - 3a54: 1c0a2100 .word 0x1c0a2100 - 3a58: ffeef7ff .word 0xffeef7ff - 3a5c: b510bd08 .word 0xb510bd08 - 3a60: ff4ef7ff .word 0xff4ef7ff - 3a64: d1002800 .word 0xd1002800 - 3a68: 68c3e7fe .word 0x68c3e7fe - 3a6c: d0102b00 .word 0xd0102b00 - 3a70: 21686c5a .word 0x21686c5a - 3a74: d000420a .word 0xd000420a - 3a78: 0611e7fe .word 0x0611e7fe - 3a7c: 681ad409 .word 0x681ad409 - 3a80: 60c26e59 .word 0x60c26e59 - 3a84: 688cb672 .word 0x688cb672 - 3a88: 608b601c .word 0x608b601c - 3a8c: 1c13b662 .word 0x1c13b662 - 3a90: bd10e7ec .word 0xbd10e7ec - 3a94: 7802b510 .word 0x7802b510 - 3a98: 1c042360 .word 0x1c042360 - 3a9c: 2b404013 .word 0x2b404013 - 3aa0: d806d00f .word 0xd806d00f - 3aa4: d0092b00 .word 0xd0092b00 - 3aa8: d1122b20 .word 0xd1122b20 - 3aac: 6842480b .word 0x6842480b - 3ab0: 2b60e009 .word 0x2b60e009 - 3ab4: 4b09d10d .word 0x4b09d10d - 3ab8: e00468da .word 0xe00468da - 3abc: 68124a07 .word 0x68124a07 - 3ac0: 4806e001 .word 0x4806e001 - 3ac4: 2a006882 .word 0x2a006882 - 3ac8: 1c20d003 .word 0x1c20d003 - 3acc: 28004790 .word 0x28004790 - 3ad0: 1c20d002 .word 0x1c20d002 - 3ad4: fd6ef7ff .word 0xfd6ef7ff - 3ad8: 46c0bd10 .word 0x46c0bd10 - 3adc: 2000e97c .word 0x2000e97c - 3ae0: 2100b508 .word 0x2100b508 - 3ae4: ffd6f7ff .word 0xffd6f7ff - 3ae8: b510bd08 .word 0xb510bd08 - 3aec: 1c047803 .word 0x1c047803 - 3af0: 210209da .word 0x210209da - 3af4: d1002a00 .word 0xd1002a00 - 3af8: f7ff2101 .word 0xf7ff2101 - 3afc: 1c20ffcb .word 0x1c20ffcb - 3b00: ffadf7ff .word 0xffadf7ff - 3b04: b510bd10 .word 0xb510bd10 - 3b08: 1c047803 .word 0x1c047803 - 3b0c: 210109da .word 0x210109da - 3b10: d1002a00 .word 0xd1002a00 - 3b14: f7ff2102 .word 0xf7ff2102 - 3b18: 1c20ffbd .word 0x1c20ffbd - 3b1c: ff9ff7ff .word 0xff9ff7ff - 3b20: b510bd10 .word 0xb510bd10 - 3b24: 88c31c04 .word 0x88c31c04 - 3b28: 780a7848 .word 0x780a7848 - 3b2c: d0012802 .word 0xd0012802 - 3b30: d1032807 .word 0xd1032807 - 3b34: 788878ca .word 0x788878ca - 3b38: 43020212 .word 0x43020212 - 3b3c: 429a69a0 .word 0x429a69a0 - 3b40: 1c1ad900 .word 0x1c1ad900 - 3b44: ff78f7ff .word 0xff78f7ff - 3b48: f7ff69e0 .word 0xf7ff69e0 - 3b4c: 2000ff82 .word 0x2000ff82 - 3b50: 6943bd10 .word 0x6943bd10 - 3b54: 68ddb570 .word 0x68ddb570 - 3b58: cd082400 .word 0xcd082400 - 3b5c: d00a2b00 .word 0xd00a2b00 - 3b60: 428e7a1e .word 0x428e7a1e - 3b64: 4294d1f9 .word 0x4294d1f9 - 3b68: 6819d103 .word 0x6819d103 - 3b6c: ffd9f7ff .word 0xffd9f7ff - 3b70: 3401e002 .word 0x3401e002 - 3b74: 2001e7f1 .word 0x2001e7f1 - 3b78: 6943bd70 .word 0x6943bd70 - 3b7c: 691bb510 .word 0x691bb510 - 3b80: 2b001c02 .word 0x2b001c02 - 3b84: 6818d00c .word 0x6818d00c - 3b88: 2b007803 .word 0x2b007803 - 3b8c: 7841d008 .word 0x7841d008 - 3b90: d1032905 .word 0xd1032905 - 3b94: 69147881 .word 0x69147881 - 3b98: d00242a1 .word 0xd00242a1 - 3b9c: e7f318c0 .word 0xe7f318c0 - 3ba0: bd101c18 .word 0xbd101c18 - 3ba4: 79037942 .word 0x79037942 - 3ba8: 1c080211 .word 0x1c080211 - 3bac: 47704318 .word 0x47704318 - 3bb0: 230378c0 .word 0x230378c0 - 3bb4: 47704018 .word 0x47704018 - 3bb8: 60184b01 .word 0x60184b01 - 3bbc: 46c04770 .word 0x46c04770 - 3bc0: 2000f374 .word 0x2000f374 - 3bc4: 1c04b570 .word 0x1c04b570 - 3bc8: d00e1e0d .word 0xd00e1e0d - 3bcc: 2e0068c6 .word 0x2e0068c6 - 3bd0: f7ffd018 .word 0xf7ffd018 - 3bd4: ce08fcff .word 0xce08fcff - 3bd8: d0132b00 .word 0xd0132b00 - 3bdc: 42827a1a .word 0x42827a1a - 3be0: 6859d1f9 .word 0x6859d1f9 - 3be4: d1f642a9 .word 0xd1f642a9 - 3be8: 1c0be000 .word 0x1c0be000 - 3bec: 42836920 .word 0x42836920 - 3bf0: 6123d000 .word 0x6123d000 - 3bf4: 681d4b04 .word 0x681d4b04 - 3bf8: d0012d00 .word 0xd0012d00 - 3bfc: 47a81c20 .word 0x47a81c20 - 3c00: e0002001 .word 0xe0002001 - 3c04: bd702000 .word 0xbd702000 - 3c08: 2000f374 .word 0x2000f374 - 3c0c: 1c04b5f8 .word 0x1c04b5f8 - 3c10: 1c0e7840 .word 0x1c0e7840 - 3c14: d900280b .word 0xd900280b - 3c18: f000e0ea .word 0xf000e0ea - 3c1c: 2a06fb93 .word 0x2a06fb93 - 3c20: afe93ee9 .word 0xafe93ee9 - 3c24: bacce970 .word 0xbacce970 - 3c28: 25006353 .word 0x25006353 - 3c2c: d00042a9 .word 0xd00042a9 - 3c30: 7822e0df .word 0x7822e0df - 3c34: 400a211f .word 0x400a211f - 3c38: d0162a01 .word 0xd0162a01 - 3c3c: d01142aa .word 0xd01142aa - 3c40: d0002a02 .word 0xd0002a02 - 3c44: 88a7e0d5 .word 0x88a7e0d5 - 3c48: 230f486b .word 0x230f486b - 3c4c: 181e403b .word 0x181e403b - 3c50: 680f00b1 .word 0x680f00b1 - 3c54: 496a4b69 .word 0x496a4b69 - 3c58: 1e58403b .word 0x1e58403b - 3c5c: 800b4183 .word 0x800b4183 - 3c60: e03b69a0 .word 0xe03b69a0 - 3c64: 496769a0 .word 0x496769a0 - 3c68: 69a0e001 .word 0x69a0e001 - 3c6c: 22024966 .word 0x22024966 - 3c70: 2500e034 .word 0x2500e034 - 3c74: d00042a9 .word 0xd00042a9 - 3c78: 7822e0bb .word 0x7822e0bb - 3c7c: 4011211f .word 0x4011211f - 3c80: d0002902 .word 0xd0002902 - 3c84: 88a7e0b5 .word 0x88a7e0b5 - 3c88: 230f485b .word 0x230f485b - 3c8c: 181e403b .word 0x181e403b - 3c90: 683a00b7 .word 0x683a00b7 - 3c94: 4010485d .word 0x4010485d - 3c98: 2500e012 .word 0x2500e012 - 3c9c: d00042a9 .word 0xd00042a9 - 3ca0: 7827e0a7 .word 0x7827e0a7 - 3ca4: 4038201f .word 0x4038201f - 3ca8: d0002802 .word 0xd0002802 - 3cac: 88a6e0a1 .word 0x88a6e0a1 - 3cb0: 4951220f .word 0x4951220f - 3cb4: 18534032 .word 0x18534032 - 3cb8: 6838009f .word 0x6838009f - 3cbc: 43304e4f .word 0x43304e4f - 3cc0: e0186038 .word 0xe0186038 - 3cc4: 42a92500 .word 0x42a92500 - 3cc8: e092d000 .word 0xe092d000 - 3ccc: 201f7822 .word 0x201f7822 - 3cd0: 2a014002 .word 0x2a014002 - 3cd4: e08cd000 .word 0xe08cd000 - 3cd8: 494d69a0 .word 0x494d69a0 - 3cdc: feacf7ff .word 0xfeacf7ff - 3ce0: e00969e0 .word 0xe00969e0 - 3ce4: 42a92500 .word 0x42a92500 - 3ce8: e082d000 .word 0xe082d000 - 3cec: 231f7822 .word 0x231f7822 - 3cf0: 2b014013 .word 0x2b014013 - 3cf4: 69a0d17d .word 0x69a0d17d - 3cf8: feabf7ff .word 0xfeabf7ff - 3cfc: 2900e079 .word 0x2900e079 - 3d00: 78e0d15b .word 0x78e0d15b - 3d04: 28063801 .word 0x28063801 - 3d08: f000d872 .word 0xf000d872 - 3d0c: 0704fb1b .word 0x0704fb1b - 3d10: 10717121 .word 0x10717121 - 3d14: 69610013 .word 0x69610013 - 3d18: e0236809 .word 0xe0236809 - 3d1c: f7ff6960 .word 0xf7ff6960 - 3d20: 78a2fc59 .word 0x78a2fc59 - 3d24: 1c201c01 .word 0x1c201c01 - 3d28: d10a2902 .word 0xd10a2902 - 3d2c: 6963e00d .word 0x6963e00d - 3d30: e0176899 .word 0xe0176899 - 3d34: f7ff6960 .word 0xf7ff6960 - 3d38: 78a2fc4d .word 0x78a2fc4d - 3d3c: d1022802 .word 0xd1022802 - 3d40: 21011c20 .word 0x21011c20 - 3d44: 1c20e001 .word 0x1c20e001 - 3d48: f7ff2102 .word 0xf7ff2102 - 3d4c: e00cff02 .word 0xe00cff02 - 3d50: 28ee78a0 .word 0x28ee78a0 - 3d54: 1c20d102 .word 0x1c20d102 - 3d58: e004492e .word 0xe004492e - 3d5c: 26006967 .word 0x26006967 - 3d60: e007687d .word 0xe007687d - 3d64: f7ff1c20 .word 0xf7ff1c20 - 3d68: 1c05fedc .word 0x1c05fedc - 3d6c: 4286e041 .word 0x4286e041 - 3d70: 3601d0f8 .word 0x3601d0f8 - 3d74: 2900cd02 .word 0x2900cd02 - 3d78: e039d1f9 .word 0xe039d1f9 - 3d7c: d11c2900 .word 0xd11c2900 - 3d80: 696078a1 .word 0x696078a1 - 3d84: fc48f7ff .word 0xfc48f7ff - 3d88: f7ff69a0 .word 0xf7ff69a0 - 3d8c: 1c35fe62 .word 0x1c35fe62 - 3d90: 2900e02f .word 0x2900e02f - 3d94: 78a7d111 .word 0x78a7d111 - 3d98: 1c396960 .word 0x1c396960 - 3d9c: ff12f7ff .word 0xff12f7ff - 3da0: 28002501 .word 0x28002501 - 3da4: 2f00d025 .word 0x2f00d025 - 3da8: 6960d103 .word 0x6960d103 - 3dac: f7ff1c31 .word 0xf7ff1c31 - 3db0: 69a0fc27 .word 0x69a0fc27 - 3db4: 2900e018 .word 0x2900e018 - 3db8: 2202d004 .word 0x2202d004 - 3dbc: 419b42b2 .word 0x419b42b2 - 3dc0: e016425d .word 0xe016425d - 3dc4: 250188e1 .word 0x250188e1 - 3dc8: d11242a9 .word 0xd11242a9 - 3dcc: 72266965 .word 0x72266965 - 3dd0: 2e00692e .word 0x2e00692e - 3dd4: 6872d001 .word 0x6872d001 - 3dd8: 1c217222 .word 0x1c217222 - 3ddc: 69a03108 .word 0x69a03108 - 3de0: f7ff2201 .word 0xf7ff2201 - 3de4: 69e0fe29 .word 0x69e0fe29 - 3de8: fe33f7ff .word 0xfe33f7ff - 3dec: e0002500 .word 0xe0002500 - 3df0: 1c282501 .word 0x1c282501 - 3df4: 46c0bdf8 .word 0x46c0bdf8 - 3df8: 10001870 .word 0x10001870 - 3dfc: 00010001 .word 0x00010001 - 3e00: 2000fb00 .word 0x2000fb00 - 3e04: 2000f37a .word 0x2000f37a - 3e08: 2000f378 .word 0x2000f378 - 3e0c: fffefffe .word 0xfffefffe - 3e10: 2000f37c .word 0x2000f37c - 3e14: 2000ed41 .word 0x2000ed41 - 3e18: 47706001 .word 0x47706001 - 3e1c: 4b074a06 .word 0x4b074a06 - 3e20: 601a4907 .word 0x601a4907 - 3e24: 60084a07 .word 0x60084a07 - 3e28: 60104b07 .word 0x60104b07 - 3e2c: 206c4a07 .word 0x206c4a07 - 3e30: 60182140 .word 0x60182140 - 3e34: 47706011 .word 0x47706011 - 3e38: 00000808 .word 0x00000808 - 3e3c: 40086c84 .word 0x40086c84 - 3e40: 400a1010 .word 0x400a1010 - 3e44: 400a1014 .word 0x400a1014 - 3e48: 400a1018 .word 0x400a1018 - 3e4c: 400a1000 .word 0x400a1000 - 3e50: 49084a07 .word 0x49084a07 - 3e54: 601323c1 .word 0x601323c1 - 3e58: 4b07600b .word 0x4b07600b - 3e5c: 60184a07 .word 0x60184a07 - 3e60: 4b084907 .word 0x4b084907 - 3e64: 206c6010 .word 0x206c6010 - 3e68: 60082240 .word 0x60082240 - 3e6c: 4770601a .word 0x4770601a - 3e70: 4008610c .word 0x4008610c - 3e74: 40086110 .word 0x40086110 - 3e78: 400e0010 .word 0x400e0010 - 3e7c: 400e0014 .word 0x400e0014 - 3e80: 400e0018 .word 0x400e0018 - 3e84: 400e0000 .word 0x400e0000 - 3e88: 490d4a0c .word 0x490d4a0c - 3e8c: 20202308 .word 0x20202308 - 3e90: 60086013 .word 0x60086013 - 3e94: 4213680a .word 0x4213680a - 3e98: 4b0ad10b .word 0x4b0ad10b - 3e9c: e0052208 .word 0xe0052208 - 3ea0: 42026808 .word 0x42026808 - 3ea4: 3b02d105 .word 0x3b02d105 - 3ea8: d0022b00 .word 0xd0022b00 - 3eac: 42026808 .word 0x42026808 - 3eb0: 4b02d0f6 .word 0x4b02d0f6 - 3eb4: 60192120 .word 0x60192120 - 3eb8: 46c04770 .word 0x46c04770 - 3ebc: 400a1018 .word 0x400a1018 - 3ec0: 400a1000 .word 0x400a1000 - 3ec4: 00002710 .word 0x00002710 - 3ec8: 490d4a0c .word 0x490d4a0c - 3ecc: 20202308 .word 0x20202308 - 3ed0: 60086013 .word 0x60086013 - 3ed4: 4213680a .word 0x4213680a - 3ed8: 4b0ad10b .word 0x4b0ad10b - 3edc: e0052208 .word 0xe0052208 - 3ee0: 42026808 .word 0x42026808 - 3ee4: 3b02d105 .word 0x3b02d105 - 3ee8: d0022b00 .word 0xd0022b00 - 3eec: 42026808 .word 0x42026808 - 3ef0: 4b02d0f6 .word 0x4b02d0f6 - 3ef4: 60192120 .word 0x60192120 - 3ef8: 46c04770 .word 0x46c04770 - 3efc: 400e0018 .word 0x400e0018 - 3f00: 400e0000 .word 0x400e0000 - 3f04: 00002710 .word 0x00002710 - 3f08: 21204b0e .word 0x21204b0e - 3f0c: 4211681a .word 0x4211681a - 3f10: 4b0dd001 .word 0x4b0dd001 - 3f14: 4a0d6019 .word 0x4a0d6019 - 3f18: 6010490b .word 0x6010490b - 3f1c: 60082008 .word 0x60082008 - 3f20: 680b4908 .word 0x680b4908 - 3f24: d10b4218 .word 0xd10b4218 - 3f28: 22084b09 .word 0x22084b09 - 3f2c: 6808e005 .word 0x6808e005 - 3f30: d1054202 .word 0xd1054202 - 3f34: 2b003b02 .word 0x2b003b02 - 3f38: 6808d002 .word 0x6808d002 - 3f3c: d0f64202 .word 0xd0f64202 - 3f40: 46c04770 .word 0x46c04770 - 3f44: 400a1000 .word 0x400a1000 - 3f48: 400a1018 .word 0x400a1018 - 3f4c: 400a1008 .word 0x400a1008 - 3f50: 00002710 .word 0x00002710 - 3f54: 21204b0e .word 0x21204b0e - 3f58: 4211681a .word 0x4211681a - 3f5c: 4b0dd001 .word 0x4b0dd001 - 3f60: 4a0d6019 .word 0x4a0d6019 - 3f64: 6010490b .word 0x6010490b - 3f68: 60082008 .word 0x60082008 - 3f6c: 680b4908 .word 0x680b4908 - 3f70: d10b4218 .word 0xd10b4218 - 3f74: 22084b09 .word 0x22084b09 - 3f78: 6808e005 .word 0x6808e005 - 3f7c: d1054202 .word 0xd1054202 - 3f80: 2b003b02 .word 0x2b003b02 - 3f84: 6808d002 .word 0x6808d002 - 3f88: d0f64202 .word 0xd0f64202 - 3f8c: 46c04770 .word 0x46c04770 - 3f90: 400e0000 .word 0x400e0000 - 3f94: 400e0018 .word 0x400e0018 - 3f98: 400e0008 .word 0x400e0008 - 3f9c: 00002710 .word 0x00002710 - 3fa0: 20204b0e .word 0x20204b0e - 3fa4: 4210681a .word 0x4210681a - 3fa8: 490dd001 .word 0x490dd001 - 3fac: 4a0c6008 .word 0x4a0c6008 - 3fb0: 490a2308 .word 0x490a2308 - 3fb4: 68086013 .word 0x68086013 - 3fb8: d10b4203 .word 0xd10b4203 - 3fbc: 22084b09 .word 0x22084b09 - 3fc0: 6808e005 .word 0x6808e005 - 3fc4: d1054202 .word 0xd1054202 - 3fc8: 2b003b02 .word 0x2b003b02 - 3fcc: 6808d002 .word 0x6808d002 - 3fd0: d0f64202 .word 0xd0f64202 - 3fd4: 680b4904 .word 0x680b4904 - 3fd8: 4770b2d8 .word 0x4770b2d8 - 3fdc: 400a1000 .word 0x400a1000 - 3fe0: 400a1018 .word 0x400a1018 - 3fe4: 00002710 .word 0x00002710 - 3fe8: 400a1008 .word 0x400a1008 - 3fec: 21204b12 .word 0x21204b12 - 3ff0: 4211681a .word 0x4211681a - 3ff4: 4b11d001 .word 0x4b11d001 - 3ff8: 22046019 .word 0x22046019 - 3ffc: d0182800 .word 0xd0182800 - 4000: 600a490d .word 0x600a490d - 4004: 23084a0d .word 0x23084a0d - 4008: 6013490b .word 0x6013490b - 400c: 42036808 .word 0x42036808 - 4010: 4b0bd10b .word 0x4b0bd10b - 4014: e0052208 .word 0xe0052208 - 4018: 42026808 .word 0x42026808 - 401c: 3b02d105 .word 0x3b02d105 - 4020: d0022b00 .word 0xd0022b00 - 4024: 42026808 .word 0x42026808 - 4028: 4906d0f6 .word 0x4906d0f6 - 402c: b2d8680b .word 0xb2d8680b - 4030: 48024770 .word 0x48024770 - 4034: e7e56002 .word 0xe7e56002 - 4038: 400e0000 .word 0x400e0000 - 403c: 400e0018 .word 0x400e0018 - 4040: 00002710 .word 0x00002710 - 4044: 400e0008 .word 0x400e0008 - 4048: 20204b06 .word 0x20204b06 - 404c: 4210681a .word 0x4210681a - 4050: 4905d001 .word 0x4905d001 - 4054: 4b036008 .word 0x4b036008 - 4058: 22104903 .word 0x22104903 - 405c: 601a2008 .word 0x601a2008 - 4060: 47706008 .word 0x47706008 - 4064: 400a1000 .word 0x400a1000 - 4068: 400a1018 .word 0x400a1018 - 406c: 20204b06 .word 0x20204b06 - 4070: 4210681a .word 0x4210681a - 4074: 4905d001 .word 0x4905d001 - 4078: 4b036008 .word 0x4b036008 - 407c: 22104903 .word 0x22104903 - 4080: 601a2008 .word 0x601a2008 - 4084: 47706008 .word 0x47706008 - 4088: 400e0000 .word 0x400e0000 - 408c: 400e0018 .word 0x400e0018 - 4090: 465fb5f0 .word 0x465fb5f0 - 4094: 4656464d .word 0x4656464d - 4098: b4f04644 .word 0xb4f04644 - 409c: 469cb083 .word 0x469cb083 - 40a0: 781cab0c .word 0x781cab0c - 40a4: 782ead0d .word 0x782ead0d - 40a8: 46a3af0e .word 0x46a3af0e - 40ac: 46b1ac10 .word 0x46b1ac10 - 40b0: 7827783e .word 0x7827783e - 40b4: 781dab0f .word 0x781dab0f - 40b8: 4b1a9701 .word 0x4b1a9701 - 40bc: d0242800 .word 0xd0242800 - 40c0: 4f1a4819 .word 0x4f1a4819 - 40c4: 683c6003 .word 0x683c6003 - 40c8: 43232301 .word 0x43232301 - 40cc: 603b4c18 .word 0x603b4c18 - 40d0: 4f194818 .word 0x4f194818 - 40d4: 230046a0 .word 0x230046a0 - 40d8: 46446003 .word 0x46446003 - 40dc: 6023464b .word 0x6023464b - 40e0: 465b4311 .word 0x465b4311 - 40e4: 021c4662 .word 0x021c4662 - 40e8: 43214311 .word 0x43214311 - 40ec: 21026039 .word 0x21026039 - 40f0: 9e014331 .word 0x9e014331 - 40f4: 43314329 .word 0x43314329 - 40f8: 6005b2cd .word 0x6005b2cd - 40fc: bc3cb003 .word 0xbc3cb003 - 4100: 46994690 .word 0x46994690 - 4104: 46ab46a2 .word 0x46ab46a2 - 4108: 4f0cbdf0 .word 0x4f0cbdf0 - 410c: 603b480c .word 0x603b480c - 4110: 27016803 .word 0x27016803 - 4114: 6007431f .word 0x6007431f - 4118: 4f0b480a .word 0x4f0b480a - 411c: 480b4680 .word 0x480b4680 - 4120: 46c0e7d9 .word 0x46c0e7d9 - 4124: 09000800 .word 0x09000800 - 4128: 40050098 .word 0x40050098 - 412c: 40051628 .word 0x40051628 - 4130: 400c5010 .word 0x400c5010 - 4134: 400c5004 .word 0x400c5004 - 4138: 400c5000 .word 0x400c5000 - 413c: 40050094 .word 0x40050094 - 4140: 40051518 .word 0x40051518 - 4144: 40083010 .word 0x40083010 - 4148: 40083000 .word 0x40083000 - 414c: 40083004 .word 0x40083004 - 4150: 2800b530 .word 0x2800b530 - 4154: 4d0dd116 .word 0x4d0dd116 - 4158: 24024b0d .word 0x24024b0d - 415c: 4214681a .word 0x4214681a - 4160: 6029d0fc .word 0x6029d0fc - 4164: d10b2800 .word 0xd10b2800 - 4168: 21104809 .word 0x21104809 - 416c: 42216804 .word 0x42216804 - 4170: 2004d1fc .word 0x2004d1fc - 4174: 4210681a .word 0x4210681a - 4178: 682dd0fc .word 0x682dd0fc - 417c: bd30b2a8 .word 0xbd30b2a8 - 4180: e7f24804 .word 0xe7f24804 - 4184: 4b034d04 .word 0x4b034d04 - 4188: 46c0e7e7 .word 0x46c0e7e7 - 418c: 40083008 .word 0x40083008 - 4190: 4008300c .word 0x4008300c - 4194: 400c500c .word 0x400c500c - 4198: 400c5008 .word 0x400c5008 - 419c: 46c0e7fe .word 0x46c0e7fe - 41a0: 46c04770 .word 0x46c04770 - 41a4: 4b504a4f .word 0x4b504a4f - 41a8: d21f429a .word 0xd21f429a - 41ac: 1d141cdf .word 0x1d141cdf - 41b0: 08811b38 .word 0x08811b38 - 41b4: 008f3101 .word 0x008f3101 - 41b8: 1f384b4c .word 0x1f384b4c - 41bc: 18fe0741 .word 0x18fe0741 - 41c0: cb020fc8 .word 0xcb020fc8 - 41c4: 42b36011 .word 0x42b36011 - 41c8: 2800d00f .word 0x2800d00f - 41cc: cb01d003 .word 0xcb01d003 - 41d0: 42b3c401 .word 0x42b3c401 - 41d4: 1c18d009 .word 0x1c18d009 - 41d8: 1c21c820 .word 0x1c21c820 - 41dc: 685bc120 .word 0x685bc120 - 41e0: 1d036063 .word 0x1d036063 - 41e4: 42b31d0c .word 0x42b31d0c - 41e8: 19d2d1f5 .word 0x19d2d1f5 - 41ec: 42824840 .word 0x42824840 - 41f0: 1cc4d216 .word 0x1cc4d216 - 41f4: 1ae51d13 .word 0x1ae51d13 - 41f8: 310108a9 .word 0x310108a9 - 41fc: 18100088 .word 0x18100088 - 4200: 21001ac4 .word 0x21001ac4 - 4204: d5080765 .word 0xd5080765 - 4208: 1c1a6011 .word 0x1c1a6011 - 420c: 60113304 .word 0x60113304 - 4210: d0054283 .word 0xd0054283 - 4214: 60191d1a .word 0x60191d1a - 4218: 60111d13 .word 0x60111d13 - 421c: d1f94283 .word 0xd1f94283 - 4220: 49354834 .word 0x49354834 - 4224: d21b4288 .word 0xd21b4288 - 4228: 1d063103 .word 0x1d063103 - 422c: 08bd1b8f .word 0x08bd1b8f - 4230: 1c6f2401 .word 0x1c6f2401 - 4234: 6802402c .word 0x6802402c - 4238: 47902501 .word 0x47902501 - 423c: d00f42bd .word 0xd00f42bd - 4240: d0042c00 .word 0xd0042c00 - 4244: 2502ce08 .word 0x2502ce08 - 4248: 42bd4798 .word 0x42bd4798 - 424c: 1c34d008 .word 0x1c34d008 - 4250: 4780cc01 .word 0x4780cc01 - 4254: 68763502 .word 0x68763502 - 4258: 1d2647b0 .word 0x1d2647b0 - 425c: d1f642bd .word 0xd1f642bd - 4260: 49274b26 .word 0x49274b26 - 4264: d21b428b .word 0xd21b428b - 4268: 1d1e3103 .word 0x1d1e3103 - 426c: 08bd1b8f .word 0x08bd1b8f - 4270: 1c6f2401 .word 0x1c6f2401 - 4274: 681a402c .word 0x681a402c - 4278: 47902501 .word 0x47902501 - 427c: d00f42bd .word 0xd00f42bd - 4280: d0042c00 .word 0xd0042c00 - 4284: 2502ce01 .word 0x2502ce01 - 4288: 42bd4780 .word 0x42bd4780 - 428c: 1c34d008 .word 0x1c34d008 - 4290: 4798cc08 .word 0x4798cc08 - 4294: 68763502 .word 0x68763502 - 4298: 1d2647b0 .word 0x1d2647b0 - 429c: d1f642bd .word 0xd1f642bd - 42a0: fdc8f7fd .word 0xfdc8f7fd - 42a4: 49184817 .word 0x49184817 - 42a8: d21b4288 .word 0xd21b4288 - 42ac: 1d063103 .word 0x1d063103 - 42b0: 08bd1b8f .word 0x08bd1b8f - 42b4: 1c6f2401 .word 0x1c6f2401 - 42b8: 6802402c .word 0x6802402c - 42bc: 47902501 .word 0x47902501 - 42c0: d00f42bd .word 0xd00f42bd - 42c4: d0042c00 .word 0xd0042c00 - 42c8: 2502ce08 .word 0x2502ce08 - 42cc: 42bd4798 .word 0x42bd4798 - 42d0: 1c34d008 .word 0x1c34d008 - 42d4: 4780cc01 .word 0x4780cc01 - 42d8: 68763502 .word 0x68763502 - 42dc: 1d2647b0 .word 0x1d2647b0 - 42e0: d1f642bd .word 0xd1f642bd - 42e4: 2000ef30 .word 0x2000ef30 - 42e8: 2000ef30 .word 0x2000ef30 - 42ec: 2000ec6c .word 0x2000ec6c - 42f0: 2000fb04 .word 0x2000fb04 - 42f4: 2000ec6c .word 0x2000ec6c - 42f8: 2000ec6c .word 0x2000ec6c - 42fc: 2000ec6c .word 0x2000ec6c - 4300: 2000ec6c .word 0x2000ec6c - 4304: 2000ec6c .word 0x2000ec6c - 4308: 2000ec6c .word 0x2000ec6c - 430c: 4a040943 .word 0x4a040943 - 4310: 188b0099 .word 0x188b0099 - 4314: 4008211f .word 0x4008211f - 4318: 40822201 .word 0x40822201 - 431c: 4770601a .word 0x4770601a - 4320: e000e100 .word 0xe000e100 - 4324: d803281f .word 0xd803281f - 4328: 18c04b04 .word 0x18c04b04 - 432c: 47707001 .word 0x47707001 - 4330: 4b03220f .word 0x4b03220f - 4334: 18c04010 .word 0x18c04010 - 4338: e7f87001 .word 0xe7f87001 - 433c: e000e400 .word 0xe000e400 - 4340: e000ed14 .word 0xe000ed14 - 4344: 4671b402 .word 0x4671b402 - 4348: 00490849 .word 0x00490849 - 434c: 00495c09 .word 0x00495c09 - 4350: bc02448e .word 0xbc02448e - 4354: 46c04770 .word 0x46c04770 - 4358: d0342900 .word 0xd0342900 - 435c: 22002301 .word 0x22002301 - 4360: 4288b410 .word 0x4288b410 - 4364: 2401d32c .word 0x2401d32c - 4368: 42a10724 .word 0x42a10724 - 436c: 4281d204 .word 0x4281d204 - 4370: 0109d202 .word 0x0109d202 - 4374: e7f8011b .word 0xe7f8011b - 4378: 42a100e4 .word 0x42a100e4 - 437c: 4281d204 .word 0x4281d204 - 4380: 0049d202 .word 0x0049d202 - 4384: e7f8005b .word 0xe7f8005b - 4388: d3014288 .word 0xd3014288 - 438c: 431a1a40 .word 0x431a1a40 - 4390: 42a0084c .word 0x42a0084c - 4394: 1b00d302 .word 0x1b00d302 - 4398: 4322085c .word 0x4322085c - 439c: 42a0088c .word 0x42a0088c - 43a0: 1b00d302 .word 0x1b00d302 - 43a4: 4322089c .word 0x4322089c - 43a8: 42a008cc .word 0x42a008cc - 43ac: 1b00d302 .word 0x1b00d302 - 43b0: 432208dc .word 0x432208dc - 43b4: d0032800 .word 0xd0032800 - 43b8: d001091b .word 0xd001091b - 43bc: e7e30909 .word 0xe7e30909 - 43c0: bc101c10 .word 0xbc101c10 - 43c4: 28004770 .word 0x28004770 - 43c8: 2000d001 .word 0x2000d001 - 43cc: b40743c0 .word 0xb40743c0 - 43d0: a1024802 .word 0xa1024802 - 43d4: 90021840 .word 0x90021840 - 43d8: 46c0bd03 .word 0x46c0bd03 - 43dc: 00000019 .word 0x00000019 - 43e0: d0f02900 .word 0xd0f02900 - 43e4: f7ffb503 .word 0xf7ffb503 - 43e8: bc0effb9 .word 0xbc0effb9 - 43ec: 1a894342 .word 0x1a894342 - 43f0: 46c04718 .word 0x46c04718 - 43f4: 46c04770 .word 0x46c04770 - 43f8: 0403469c .word 0x0403469c - 43fc: 0c1bb5f0 .word 0x0c1bb5f0 - 4400: 0c3f0417 .word 0x0c3f0417 - 4404: 1c1e0c15 .word 0x1c1e0c15 - 4408: 0c001c04 .word 0x0c001c04 - 440c: 436b437e .word 0x436b437e - 4410: 43454347 .word 0x43454347 - 4414: 0c3018fb .word 0x0c3018fb - 4418: 42871818 .word 0x42871818 - 441c: 2780d902 .word 0x2780d902 - 4420: 18ed027b .word 0x18ed027b - 4424: 19ed0c07 .word 0x19ed0c07 - 4428: 437c4667 .word 0x437c4667 - 442c: 0436434a .word 0x0436434a - 4430: 18a10c33 .word 0x18a10c33 - 4434: 19490400 .word 0x19490400 - 4438: bdf018c0 .word 0xbdf018c0 - 443c: 464fb5f0 .word 0x464fb5f0 - 4440: b4c04646 .word 0xb4c04646 - 4444: d9722a0f .word 0xd9722a0f - 4448: 43031c0b .word 0x43031c0b - 444c: d000079c .word 0xd000079c - 4450: 1c17e090 .word 0x1c17e090 - 4454: 093c3f10 .word 0x093c3f10 - 4458: 01273401 .word 0x01273401 - 445c: 1c3b680c .word 0x1c3b680c - 4460: 3b106004 .word 0x3b106004 - 4464: 684b06de .word 0x684b06de - 4468: 604319cd .word 0x604319cd - 446c: 0ff6688c .word 0x0ff6688c - 4470: 68cb6084 .word 0x68cb6084 - 4474: 60c31c04 .word 0x60c31c04 - 4478: 33101c0b .word 0x33101c0b - 447c: 429d3410 .word 0x429d3410 - 4480: 2e00d027 .word 0x2e00d027 - 4484: 6819d00b .word 0x6819d00b - 4488: 685e6021 .word 0x685e6021 - 448c: 68996066 .word 0x68996066 - 4490: 68de60a1 .word 0x68de60a1 - 4494: 60e63310 .word 0x60e63310 - 4498: 429d3410 .word 0x429d3410 - 449c: 6819d019 .word 0x6819d019 - 44a0: 685e6021 .word 0x685e6021 - 44a4: 68996066 .word 0x68996066 - 44a8: 68de60a1 .word 0x68de60a1 - 44ac: 60e61c19 .word 0x60e61c19 - 44b0: 1c26691b .word 0x1c26691b - 44b4: 694c6123 .word 0x694c6123 - 44b8: 698b6174 .word 0x698b6174 - 44bc: 69cc61b3 .word 0x69cc61b3 - 44c0: 61f43110 .word 0x61f43110 - 44c4: 36101c0b .word 0x36101c0b - 44c8: 33101c34 .word 0x33101c34 - 44cc: 429d3410 .word 0x429d3410 - 44d0: 183fd1e5 .word 0x183fd1e5 - 44d4: 46b8210f .word 0x46b8210f - 44d8: 29034011 .word 0x29034011 - 44dc: 3904d94d .word 0x3904d94d - 44e0: 00b3088e .word 0x00b3088e - 44e4: 18ec3304 .word 0x18ec3304 - 44e8: 3b0446a4 .word 0x3b0446a4 - 44ec: 075f1c2c .word 0x075f1c2c - 44f0: 4641cc08 .word 0x4641cc08 - 44f4: c10846b1 .word 0xc10846b1 - 44f8: 45640ffe .word 0x45640ffe - 44fc: 2e00d00f .word 0x2e00d00f - 4500: cc80d003 .word 0xcc80d003 - 4504: 4564c180 .word 0x4564c180 - 4508: 1c27d009 .word 0x1c27d009 - 450c: 1c0ecf08 .word 0x1c0ecf08 - 4510: 6864c608 .word 0x6864c608 - 4514: 1d3c604c .word 0x1d3c604c - 4518: 45641d31 .word 0x45641d31 - 451c: 4649d1f5 .word 0x4649d1f5 - 4520: 008e3101 .word 0x008e3101 - 4524: 19ad2703 .word 0x19ad2703 - 4528: 4446403a .word 0x4446403a - 452c: 1c0de001 .word 0x1c0de001 - 4530: 2a001c06 .word 0x2a001c06 - 4534: 782fd01a .word 0x782fd01a - 4538: 43f318b2 .word 0x43f318b2 - 453c: 240118d1 .word 0x240118d1 - 4540: 36017037 .word 0x36017037 - 4544: 3501400c .word 0x3501400c - 4548: d00f4296 .word 0xd00f4296 - 454c: d0052c00 .word 0xd0052c00 - 4550: 3501782b .word 0x3501782b - 4554: 36017033 .word 0x36017033 - 4558: d0074296 .word 0xd0074296 - 455c: 70317829 .word 0x70317829 - 4560: 3502786c .word 0x3502786c - 4564: 36027074 .word 0x36027074 - 4568: d1f74296 .word 0xd1f74296 - 456c: 4690bc0c .word 0x4690bc0c - 4570: bdf04699 .word 0xbdf04699 - 4574: 1c0d1c06 .word 0x1c0d1c06 - 4578: 1c3ee7dd .word 0x1c3ee7dd - 457c: e7d81c0a .word 0xe7d81c0a - 4580: 780a1c03 .word 0x780a1c03 - 4584: 701a3101 .word 0x701a3101 - 4588: 2a003301 .word 0x2a003301 - 458c: 4770d1f9 .word 0x4770d1f9 - 4590: 5cc22300 .word 0x5cc22300 - 4594: 2a003301 .word 0x2a003301 - 4598: 1e58d1fb .word 0x1e58d1fb - 459c: 46c04770 .word 0x46c04770 - 45a0: 2e317620 .word 0x2e317620 - 45a4: 2d302e30 .word 0x2d302e30 - 45a8: 30316372 .word 0x30316372 - 45ac: 672d342d .word 0x672d342d - 45b0: 37356138 .word 0x37356138 - 45b4: 2d366435 .word 0x2d366435 - 45b8: 74726964 .word 0x74726964 - 45bc: 30322079 .word 0x30322079 - 45c0: 302d3032 .word 0x302d3032 - 45c4: 37302d35 .word 0x37302d35 - 45c8: 00000000 .word 0x00000000 - 45cc: 2000dfbd .word 0x2000dfbd - 45d0: 00000000 .word 0x00000000 - 45d4: 2000c305 .word 0x2000c305 - 45d8: 00000000 .word 0x00000000 - 45dc: 2000ed1f .word 0x2000ed1f - 45e0: 2000ed23 .word 0x2000ed23 - 45e4: 2000ed74 .word 0x2000ed74 - 45e8: 2000ecd7 .word 0x2000ecd7 - 45ec: 00000000 .word 0x00000000 - 45f0: 33323130 .word 0x33323130 - 45f4: 37363534 .word 0x37363534 - 45f8: 42413938 .word 0x42413938 - 45fc: 46454443 .word 0x46454443 - 4600: 006080e0 .word 0x006080e0 - 4604: 0c0d0e0f .word 0x0c0d0e0f - 4608: 08090a0b .word 0x08090a0b - 460c: 04050607 .word 0x04050607 - 4610: 00010203 .word 0x00010203 - 4614: 01010101 .word 0x01010101 - 4618: 02020201 .word 0x02020201 - 461c: 03030202 .word 0x03030202 - 4620: 04030303 .word 0x04030303 - 4624: 04040404 .word 0x04040404 - 4628: 05050505 .word 0x05050505 - 462c: 06060605 .word 0x06060605 - 4630: 07070606 .word 0x07070606 - 4634: 07070707 .word 0x07070707 - 4638: 07070707 .word 0x07070707 - 463c: 08080808 .word 0x08080808 - 4640: 08080808 .word 0x08080808 - 4644: 09090808 .word 0x09090808 - 4648: 09090909 .word 0x09090909 - 464c: 09090909 .word 0x09090909 - 4650: 0a0a0a0a .word 0x0a0a0a0a - 4654: 0a0a0a0a .word 0x0a0a0a0a - 4658: 0b0b0a0a .word 0x0b0b0a0a - 465c: 0b0b0b0b .word 0x0b0b0b0b - 4660: 0b0b0b0b .word 0x0b0b0b0b - 4664: 0b0b0b0b .word 0x0b0b0b0b - 4668: 0b0b0b0b .word 0x0b0b0b0b - 466c: 0c0c0b0b .word 0x0c0c0b0b - 4670: 0c0c0c0c .word 0x0c0c0c0c - 4674: 0c0c0c0c .word 0x0c0c0c0c - 4678: 0c0c0c0c .word 0x0c0c0c0c - 467c: 0c0c0c0c .word 0x0c0c0c0c - 4680: 0c0c0c0c .word 0x0c0c0c0c - 4684: 0c0c0c0c .word 0x0c0c0c0c - 4688: 0c0c0c0c .word 0x0c0c0c0c - 468c: 0c0c0c0c .word 0x0c0c0c0c - 4690: 0c0c0c0c .word 0x0c0c0c0c - 4694: 0d0d0c0c .word 0x0d0d0c0c - 4698: 0d0d0d0d .word 0x0d0d0d0d - 469c: 0d0d0d0d .word 0x0d0d0d0d - 46a0: 0d0d0d0d .word 0x0d0d0d0d - 46a4: 0d0d0d0d .word 0x0d0d0d0d - 46a8: 0d0d0d0d .word 0x0d0d0d0d - 46ac: 0d0d0d0d .word 0x0d0d0d0d - 46b0: 0d0d0d0d .word 0x0d0d0d0d - 46b4: 0d0d0d0d .word 0x0d0d0d0d - 46b8: 0d0d0d0d .word 0x0d0d0d0d - 46bc: 0e0e0d0d .word 0x0e0e0d0d - 46c0: 0e0e0e0e .word 0x0e0e0e0e - 46c4: 0e0e0e0e .word 0x0e0e0e0e - 46c8: 0e0e0e0e .word 0x0e0e0e0e - 46cc: 0e0e0e0e .word 0x0e0e0e0e - 46d0: 0e0e0e0e .word 0x0e0e0e0e - 46d4: 0e0e0e0e .word 0x0e0e0e0e - 46d8: 0e0e0e0e .word 0x0e0e0e0e - 46dc: 0f0f0f0f .word 0x0f0f0f0f - 46e0: 0f0f0f0f .word 0x0f0f0f0f - 46e4: 0f0f0f0f .word 0x0f0f0f0f - 46e8: 0f0f0f0f .word 0x0f0f0f0f - 46ec: 0f0f0f0f .word 0x0f0f0f0f - 46f0: 0f0f0f0f .word 0x0f0f0f0f - 46f4: 0f0f0f0f .word 0x0f0f0f0f - 46f8: 10100f0f .word 0x10100f0f - 46fc: 10101010 .word 0x10101010 - 4700: 10101010 .word 0x10101010 - 4704: 10101010 .word 0x10101010 - 4708: 10101010 .word 0x10101010 - 470c: 10101010 .word 0x10101010 - 4710: 10101010 .word 0x10101010 - 4714: 10101010 .word 0x10101010 - 4718: 11111111 .word 0x11111111 - 471c: 11111111 .word 0x11111111 - 4720: 11111111 .word 0x11111111 - 4724: 11111111 .word 0x11111111 - 4728: 11111111 .word 0x11111111 - 472c: 11111111 .word 0x11111111 - 4730: 11111111 .word 0x11111111 - 4734: 11111111 .word 0x11111111 - 4738: 11111111 .word 0x11111111 - 473c: 11111111 .word 0x11111111 - 4740: 11111111 .word 0x11111111 - 4744: 11111111 .word 0x11111111 - 4748: 11111111 .word 0x11111111 - 474c: 11111111 .word 0x11111111 - 4750: 11111111 .word 0x11111111 - 4754: 11111111 .word 0x11111111 - 4758: 11111111 .word 0x11111111 - 475c: 11111111 .word 0x11111111 - 4760: 11111111 .word 0x11111111 - 4764: 11111111 .word 0x11111111 - 4768: 11111111 .word 0x11111111 - 476c: 11111111 .word 0x11111111 - 4770: 11111111 .word 0x11111111 - 4774: 11111111 .word 0x11111111 - 4778: 11111111 .word 0x11111111 - 477c: 11111111 .word 0x11111111 - 4780: 11111111 .word 0x11111111 - 4784: 11111111 .word 0x11111111 - 4788: 11111111 .word 0x11111111 - 478c: 11111111 .word 0x11111111 - 4790: 11111111 .word 0x11111111 - 4794: 11111111 .word 0x11111111 - 4798: 11111111 .word 0x11111111 - 479c: 11111111 .word 0x11111111 - 47a0: 11111111 .word 0x11111111 - 47a4: 12121212 .word 0x12121212 - 47a8: 12121212 .word 0x12121212 - 47ac: 12121212 .word 0x12121212 - 47b0: 12121212 .word 0x12121212 - 47b4: 12121212 .word 0x12121212 - 47b8: 12121212 .word 0x12121212 - 47bc: 12121212 .word 0x12121212 - 47c0: 12121212 .word 0x12121212 - 47c4: 12121212 .word 0x12121212 - 47c8: 12121212 .word 0x12121212 - 47cc: 12121212 .word 0x12121212 - 47d0: 12121212 .word 0x12121212 - 47d4: 12121212 .word 0x12121212 - 47d8: 12121212 .word 0x12121212 - 47dc: 12121212 .word 0x12121212 - 47e0: 12121212 .word 0x12121212 - 47e4: 12121212 .word 0x12121212 - 47e8: 12121212 .word 0x12121212 - 47ec: 12121212 .word 0x12121212 - 47f0: 12121212 .word 0x12121212 - 47f4: 12121212 .word 0x12121212 - 47f8: 12121212 .word 0x12121212 - 47fc: 12121212 .word 0x12121212 - 4800: 12121212 .word 0x12121212 - 4804: 12121212 .word 0x12121212 - 4808: 12121212 .word 0x12121212 - 480c: 12121212 .word 0x12121212 - 4810: 12121212 .word 0x12121212 - 4814: 12121212 .word 0x12121212 - 4818: 12121212 .word 0x12121212 - 481c: 12121212 .word 0x12121212 - 4820: 12121212 .word 0x12121212 - 4824: 12121212 .word 0x12121212 - 4828: 12121212 .word 0x12121212 - 482c: 13131212 .word 0x13131212 - 4830: 13131313 .word 0x13131313 - 4834: 13131313 .word 0x13131313 - 4838: 13131313 .word 0x13131313 - 483c: 13131313 .word 0x13131313 - 4840: 13131313 .word 0x13131313 - 4844: 13131313 .word 0x13131313 - 4848: 13131313 .word 0x13131313 - 484c: 13131313 .word 0x13131313 - 4850: 13131313 .word 0x13131313 - 4854: 13131313 .word 0x13131313 - 4858: 13131313 .word 0x13131313 - 485c: 13131313 .word 0x13131313 - 4860: 13131313 .word 0x13131313 - 4864: 13131313 .word 0x13131313 - 4868: 13131313 .word 0x13131313 - 486c: 08df0208 .word 0x08df0208 - 4870: 0208be02 .word 0x0208be02 - 4874: 7b02088b .word 0x7b02088b - 4878: 08690208 .word 0x08690208 - 487c: 02005802 .word 0x02005802 - 4880: 44020044 .word 0x44020044 - 4884: 00340200 .word 0x00340200 - 4888: 02003402 .word 0x02003402 - 488c: 24020024 .word 0x24020024 - 4890: 00140200 .word 0x00140200 - 4894: 02001302 .word 0x02001302 - 4898: 11020013 .word 0x11020013 - 489c: 00000200 .word 0x00000200 - 48a0: 41000041 .word 0x41000041 - 48a4: 00400000 .word 0x00400000 - 48a8: 00004000 .word 0x00004000 - 48ac: 020c0408 .word 0x020c0408 - 48b0: 010e060a .word 0x010e060a - 48b4: 030d0509 .word 0x030d0509 - 48b8: 000f070b .word 0x000f070b - 48bc: 20003004 .word 0x20003004 - 48c0: 20003008 .word 0x20003008 - 48c4: 20001c00 .word 0x20001c00 - 48c8: 20003000 .word 0x20003000 - 48cc: 20001c04 .word 0x20001c04 - 48d0: 20001c08 .word 0x20001c08 - 48d4: 0200060a .word 0x0200060a - 48d8: 40000000 .word 0x40000000 - 48dc: 02090001 .word 0x02090001 - 48e0: 01010020 .word 0x01010020 - 48e4: 09fa8000 .word 0x09fa8000 - 48e8: 02000004 .word 0x02000004 - 48ec: 00ffffff .word 0x00ffffff - 48f0: 02810507 .word 0x02810507 - 48f4: 07000040 .word 0x07000040 - 48f8: 40020205 .word 0x40020205 - 48fc: 28000000 .word 0x28000000 - 4900: 00000000 .word 0x00000000 - 4904: 01000401 .word 0x01000401 - 4908: 00000000 .word 0x00000000 - 490c: 01000000 .word 0x01000000 - 4910: 4e495701 .word 0x4e495701 - 4914: 00425355 .word 0x00425355 - 4918: 4e495700 .word 0x4e495700 - 491c: 00425355 .word 0x00425355 - 4920: 00000000 .word 0x00000000 - 4924: 36000000 .word 0x36000000 - 4928: 49004103 .word 0x49004103 - 492c: 53005200 .word 0x53005200 - 4930: 59005000 .word 0x59005000 - 4934: 53002000 .word 0x53002000 - 4938: 3a004e00 .word 0x3a004e00 - 493c: 20002000 .word 0x20002000 - 4940: 20002000 .word 0x20002000 - 4944: 20002000 .word 0x20002000 - 4948: 20002000 .word 0x20002000 - 494c: 20002000 .word 0x20002000 - 4950: 20002000 .word 0x20002000 - 4954: 20002000 .word 0x20002000 - 4958: 20002000 .word 0x20002000 - 495c: 00011200 .word 0x00011200 - 4960: 00000002 .word 0x00000002 - 4964: a11d5040 .word 0xa11d5040 - 4968: 01010060 .word 0x01010060 - 496c: 04010302 .word 0x04010302 - 4970: 1e040903 .word 0x1e040903 - 4974: 77007703 .word 0x77007703 - 4978: 2e007700 .word 0x2e007700 - 497c: 69006100 .word 0x69006100 - 4980: 73007200 .word 0x73007200 - 4984: 79007000 .word 0x79007000 - 4988: 63002e00 .word 0x63002e00 - 498c: 6d006f00 .word 0x6d006f00 - 4990: 4d031200 .word 0x4d031200 - 4994: 46005300 .word 0x46005300 - 4998: 31005400 .word 0x31005400 - 499c: 30003000 .word 0x30003000 - 49a0: 09001300 .word 0x09001300 - 49a4: 01002002 .word 0x01002002 - 49a8: fa800001 .word 0xfa800001 - 49ac: 00000409 .word 0x00000409 - 49b0: ffffff02 .word 0xffffff02 - 49b4: 81050700 .word 0x81050700 - 49b8: 00020002 .word 0x00020002 - 49bc: 02020507 .word 0x02020507 - 49c0: 00000200 .word 0x00000200 - 49c4: 0041030e .word 0x0041030e - 49c8: 00520049 .word 0x00520049 - 49cc: 00500053 .word 0x00500053 - 49d0: 008e0059 .word 0x008e0059 - 49d4: 01000000 .word 0x01000000 - 49d8: 00010005 .word 0x00010005 - 49dc: 00000084 .word 0x00000084 - 49e0: 00000001 .word 0x00000001 - 49e4: 00440028 .word 0x00440028 - 49e8: 00760065 .word 0x00760065 - 49ec: 00630069 .word 0x00630069 - 49f0: 00490065 .word 0x00490065 - 49f4: 0074006e .word 0x0074006e - 49f8: 00720065 .word 0x00720065 - 49fc: 00610066 .word 0x00610066 - 4a00: 00650063 .word 0x00650063 - 4a04: 00550047 .word 0x00550047 - 4a08: 00440049 .word 0x00440049 - 4a0c: 004e0000 .word 0x004e0000 - 4a10: 007b0000 .word 0x007b0000 - 4a14: 00410034 .word 0x00410034 - 4a18: 00340046 .word 0x00340046 - 4a1c: 00380031 .word 0x00380031 - 4a20: 00350036 .word 0x00350036 - 4a24: 0042002d .word 0x0042002d - 4a28: 00310043 .word 0x00310043 - 4a2c: 002d0045 .word 0x002d0045 - 4a30: 00340037 .word 0x00340037 - 4a34: 00410035 .word 0x00410035 - 4a38: 0039002d .word 0x0039002d - 4a3c: 00320038 .word 0x00320038 - 4a40: 002d0036 .word 0x002d0036 - 4a44: 00370039 .word 0x00370039 - 4a48: 00410043 .word 0x00410043 - 4a4c: 00380041 .word 0x00380041 - 4a50: 00450045 .word 0x00450045 - 4a54: 00340030 .word 0x00340030 - 4a58: 00460037 .word 0x00460037 - 4a5c: 0000007d .word 0x0000007d - 4a60: 2000ed53 .word 0x2000ed53 - 4a64: 00000001 .word 0x00000001 - 4a68: 00000002 .word 0x00000002 - 4a6c: 2000ed0d .word 0x2000ed0d - 4a70: 2000e98c .word 0x2000e98c - 4a74: 2000ec84 .word 0x2000ec84 - 4a78: 2000ee3c .word 0x2000ee3c - 4a7c: 00000000 .word 0x00000000 - 4a80: 2000ec8e .word 0x2000ec8e - 4a84: 00000001 .word 0x00000001 - 4a88: 00000001 .word 0x00000001 - 4a8c: 2000ee10 .word 0x2000ee10 - 4a90: 2000ee30 .word 0x2000ee30 - 4a94: 00000000 .word 0x00000000 - 4a98: 2000ee78 .word 0x2000ee78 - 4a9c: 00000004 .word 0x00000004 - 4aa0: 2000f540 .word 0x2000f540 - 4aa4: 00000000 .word 0x00000000 - 4aa8: 2000eea0 .word 0x2000eea0 - 4aac: 00000001 .word 0x00000001 - 4ab0: 2000f2c0 .word 0x2000f2c0 - 4ab4: 00000000 .word 0x00000000 - 4ab8: 2000eec8 .word 0x2000eec8 - 4abc: 00000004 .word 0x00000004 - 4ac0: 2000f0c0 .word 0x2000f0c0 - ... - 4adc: 2000ee1c .word 0x2000ee1c - 4ae0: 2000eec8 .word 0x2000eec8 - 4ae4: 2000ee78 .word 0x2000ee78 - 4ae8: 2000de91 .word 0x2000de91 - 4aec: 2000de9b .word 0x2000de9b - ... - 4b00: 00000002 .word 0x00000002 - 4b04: 2000ee1c .word 0x2000ee1c - 4b08: 00000000 .word 0x00000000 - 4b0c: 2000eea0 .word 0x2000eea0 - 4b10: 00000000 .word 0x00000000 - 4b14: 2000de0f .word 0x2000de0f - ... - 4b28: 00000080 .word 0x00000080 - 4b2c: 2000ee1c .word 0x2000ee1c - 4b30: 2000eec8 .word 0x2000eec8 - 4b34: 2000ee78 .word 0x2000ee78 - 4b38: 00000000 .word 0x00000000 - 4b3c: 2000deb7 .word 0x2000deb7 - 4b40: 2000ef00 .word 0x2000ef00 - 4b44: 00000001 .word 0x00000001 - 4b48: 2000f040 .word 0x2000f040 - ... - 4b60: 00000081 .word 0x00000081 - 4b64: 2000ee1c .word 0x2000ee1c - 4b68: 2000ef00 .word 0x2000ef00 - ... - 4b74: 2000de0f .word 0x2000de0f - 4b78: 20001000 .word 0x20001000 - 4b7c: 00000001 .word 0x00000001 - -00004b80 : - 4b80: 00002f30 .word 0x00002f30 - ... - -00004b90 : - 4b90: 40086000 00000010 40086004 00000010 .`.@.....`.@.... - 4ba0: 40086080 00000010 40086084 00000010 .`.@.....`.@.... - 4bb0: 40086088 00000010 4008608c 00000010 .`.@.....`.@.... - 4bc0: 40086090 00000010 40086094 00000010 .`.@.....`.@.... - 4bd0: 40086098 00000010 4008609c 00000010 .`.@.....`.@.... - 4be0: 400860a0 00000010 400860a4 00000010 .`.@.....`.@.... - 4bf0: 400860a8 00000010 400860ac 00000010 .`.@.....`.@.... - 4c00: 400860b0 00000010 400860b4 00000010 .`.@.....`.@.... - 4c10: 400860b8 00000000 400860bc 00000010 .`.@.....`.@.... - 4c20: 400860c0 00000010 400860c4 00000000 .`.@.....`.@.... - 4c30: 400860c8 00000010 400860cc 00000012 .`.@.....`.@.... - 4c40: 400860d0 00000010 40086100 00000014 .`.@.....a.@.... - 4c50: 40086104 00000014 40086108 00000014 .a.@.....a.@.... - 4c60: 4008610c 00000014 40086110 00000014 .a.@.....a.@.... - 4c70: 40086114 00000014 40086118 00000014 .a.@.....a.@.... - 4c80: 4008611c 00000010 40086120 00000014 .a.@.... a.@.... - 4c90: 40086124 00000010 40086128 00000010 $a.@....(a.@.... - 4ca0: 4008612c 00000010 40086130 00000010 ,a.@....0a.@.... - 4cb0: 40086134 00000000 40086180 00000010 4a.@.....a.@.... - 4cc0: 40086184 00000014 40086188 00000014 .a.@.....a.@.... - 4cd0: 40086200 00000010 40086204 00000010 .b.@.....b.@.... - 4ce0: 40086208 00000010 4008620c 00000010 .b.@.....b.@.... - 4cf0: 40086210 00000010 40086214 00000010 .b.@.....b.@.... - 4d00: 40086218 00000010 4008621c 00000012 .b.@.....b.@.... - 4d10: 40086220 00000014 40086224 00000014 b.@....$b.@.... - 4d20: 40086228 00000014 40086280 00000010 (b.@.....b.@.... - 4d30: 40086284 00000010 40086288 00000010 .b.@.....b.@.... - 4d40: 4008628c 00000010 40086290 00000010 .b.@.....b.@.... - 4d50: 40086294 00000010 40086298 00000010 .b.@.....b.@.... - 4d60: 4008629c 00000010 40086300 00000010 .b.@.....c.@.... - 4d70: 40086304 00000010 40086308 00000010 .c.@.....c.@.... - 4d80: 4008630c 00000010 40086310 00000010 .c.@.....c.@.... - 4d90: 40086314 00000010 40086318 00000010 .c.@.....c.@.... - 4da0: 4008631c 00000010 40086320 00000010 .c.@.... c.@.... - 4db0: 40086324 00000010 40086328 00000010 $c.@....(c.@.... - 4dc0: 4008632c 00000010 40086330 00000010 ,c.@....0c.@.... - 4dd0: 40086380 00000010 40086384 00000010 .c.@.....c.@.... - 4de0: 40086388 00000010 4008638c 00000010 .c.@.....c.@.... - 4df0: 40086390 00000010 40086394 00000010 .c.@.....c.@.... - 4e00: 40086398 00000010 4008639c 00000010 .c.@.....c.@.... - 4e10: 40086400 00000010 40086404 00000010 .d.@.....d.@.... - 4e20: 40086408 00000010 4008640c 00000010 .d.@.....d.@.... - 4e30: 40086410 00000010 40086414 00000010 .d.@.....d.@.... - 4e40: 40086418 00000010 4008641c 00000010 .d.@.....d.@.... - 4e50: 40086420 00000010 40086500 00000010 d.@.....e.@.... - 4e60: 40086504 00000010 40086508 00000010 .e.@.....e.@.... - 4e70: 4008650c 00000010 40086510 00000010 .e.@.....e.@.... - 4e80: 40086580 00000010 40086584 00000010 .e.@.....e.@.... - 4e90: 40086588 00000010 4008658c 00000010 .e.@.....e.@.... - 4ea0: 40086590 00000010 40086594 00000010 .e.@.....e.@.... - 4eb0: 40086598 00000010 40086600 00000010 .e.@.....f.@.... - 4ec0: 40086604 00000014 40086608 00000014 .f.@.....f.@.... - 4ed0: 4008660c 00000014 40086610 00000010 .f.@.....f.@.... - 4ee0: 40086614 00000010 40086618 00000010 .f.@.....f.@.... - 4ef0: 4008661c 00000010 40086620 00000010 .f.@.... f.@.... - 4f00: 40086624 00000010 40086628 00000010 $f.@....(f.@.... - 4f10: 4008662c 00000010 40086630 00000010 ,f.@....0f.@.... - 4f20: 40086634 00000010 40086638 00000010 4f.@....8f.@.... - 4f30: 40086680 00000010 40086684 00000010 .f.@.....f.@.... - 4f40: 40086688 00000010 4008668c 00000010 .f.@.....f.@.... - 4f50: 40086690 00000010 40086694 00000010 .f.@.....f.@.... - 4f60: 40086698 00000010 4008669c 00000010 .f.@.....f.@.... - 4f70: 400866a0 00000010 400866a4 00000010 .f.@.....f.@.... - 4f80: 400866a8 00000010 400866ac 00000010 .f.@.....f.@.... - 4f90: 400866b0 00000010 400866b4 00000010 .f.@.....f.@.... - 4fa0: 400866b8 00000010 400866bc 00000010 .f.@.....f.@.... - 4fb0: 400866c0 00000010 40086700 00000010 .f.@.....g.@.... - 4fc0: 40086704 00000010 40086708 00000014 .g.@.....g.@.... - 4fd0: 4008670c 00000010 40086710 00000010 .g.@.....g.@.... - 4fe0: 40086714 00000010 40086718 00000010 .g.@.....g.@.... - 4ff0: 4008671c 00000010 40086720 00000010 .g.@.... g.@.... - 5000: 40086724 00000010 40086728 00000010 $g.@....(g.@.... - 5010: 4008672c 00000010 40086730 00000010 ,g.@....0g.@.... - 5020: 40086734 00000010 40086738 00000010 4g.@....8g.@.... - 5030: 4008673c 00000010 40086780 00000011 - -/** @defgroup CM3_nvic_defines_LPC43xx (M0) User interrupts for LPC 43xx series M0APP core (rev_1_7_UM10503) - @ingroup CM3_nvic_defines - - @{*/ - -#define NVIC_RTC_IRQ 0 -#define NVIC_M4CORE_IRQ 1 -#define NVIC_DMA_IRQ 2 -#define NVIC_FLASHEEPROMAT_IRQ 4 -#define NVIC_ETHERNET_IRQ 5 -#define NVIC_SDIO_IRQ 6 -#define NVIC_LCD_IRQ 7 -#define NVIC_USB0_IRQ 8 -#define NVIC_USB1_IRQ 9 -#define NVIC_SCT_IRQ 10 -#define NVIC_RITIMER_OR_WWDT_IRQ 11 -#define NVIC_TIMER0_IRQ 12 -#define NVIC_GINT1_IRQ 13 -#define NVIC_PIN_INT4_IRQ 14 -#define NVIC_TIMER3_IRQ 15 -#define NVIC_MCPWM_IRQ 16 -#define NVIC_ADC0_IRQ 17 -#define NVIC_I2C0_OR_IRC1_IRQ 18 -#define NVIC_SGPIO_IRQ 19 -#define NVIC_SPI_OR_DAC_IRQ 20 -#define NVIC_ADC1_IRQ 21 -#define NVIC_SSP0_OR_SSP1_IRQ 22 -#define NVIC_EVENTROUTER_IRQ 23 -#define NVIC_USART0_IRQ 24 -#define NVIC_UART1_IRQ 25 -#define NVIC_USART2_OR_C_CAN1_IRQ 26 -#define NVIC_USART3_IRQ 27 -#define NVIC_I2S0_OR_I2S1_IRQ 28 -#define NVIC_C_CAN0_IRQ 29 -#define NVIC_SPIFI_OR_ADCHS_IRQ 30 -#define NVIC_M0SUB_IRQ 31 - -#define NVIC_IRQ_COUNT 32 - -/**@}*/ - -/** @defgroup CM3_nvic_isrprototypes_LPC43xx (M0) User interrupt service routines (ISR) prototypes for LPC 43xx series M0APP core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrprototypes - - @{*/ - -BEGIN_DECLS - -void WEAK rtc_isr(void); -void WEAK m4core_isr(void); -void WEAK dma_isr(void); -void WEAK flasheepromat_isr(void); -void WEAK ethernet_isr(void); -void WEAK sdio_isr(void); -void WEAK lcd_isr(void); -void WEAK usb0_isr(void); -void WEAK usb1_isr(void); -void WEAK sct_isr(void); -void WEAK ritimer_or_wwdt_isr(void); -void WEAK timer0_isr(void); -void WEAK gint1_isr(void); -void WEAK pin_int4_isr(void); -void WEAK timer3_isr(void); -void WEAK mcpwm_isr(void); -void WEAK adc0_isr(void); -void WEAK i2c0_or_irc1_isr(void); -void WEAK sgpio_isr(void); -void WEAK spi_or_dac_isr(void); -void WEAK adc1_isr(void); -void WEAK ssp0_or_ssp1_isr(void); -void WEAK eventrouter_isr(void); -void WEAK usart0_isr(void); -void WEAK uart1_isr(void); -void WEAK usart2_or_c_can1_isr(void); -void WEAK usart3_isr(void); -void WEAK i2s0_or_i2s1_isr(void); -void WEAK c_can0_isr(void); -void WEAK spifi_or_adchs_isr(void); -void WEAK m0sub_isr(void); - -END_DECLS - -/**@}*/ - -#endif /* LIBOPENCM3_LPC43xx_M0_NVIC_H */ diff --git a/libopencm3/include/libopencm3/lpc43xx/m0s/nvic.h b/libopencm3/include/libopencm3/lpc43xx/m0s/nvic.h deleted file mode 100644 index ea6b219..0000000 --- a/libopencm3/include/libopencm3/lpc43xx/m0s/nvic.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This file is part of the libopencm3 project. - * - * It was generated by the irq2nvic_h script. - */ - -#ifndef LIBOPENCM3_LPC43xx_M0S_NVIC_H -#define LIBOPENCM3_LPC43xx_M0S_NVIC_H - -#include - -/** @defgroup CM3_nvic_defines_LPC43xx (M0SUB) User interrupts for LPC 43xx series M0SUB core (rev_1_7_UM10503) - @ingroup CM3_nvic_defines - - @{*/ - -#define NVIC_DAC_IRQ 0 -#define NVIC_M4CORE_IRQ 1 -#define NVIC_DMA_IRQ 2 -#define NVIC_SGPIO_INPUT_IRQ 4 -#define NVIC_SGPIO_MATCH_IRQ 5 -#define NVIC_SGPIO_SHIFT_IRQ 6 -#define NVIC_SGPIO_POS_IRQ 7 -#define NVIC_USB0_IRQ 8 -#define NVIC_USB1_IRQ 9 -#define NVIC_SCT_IRQ 10 -#define NVIC_RITIMER_IRQ 11 -#define NVIC_GINT1_IRQ 12 -#define NVIC_TIMER1_IRQ 13 -#define NVIC_TIMER2_IRQ 14 -#define NVIC_PIN_INT5_IRQ 15 -#define NVIC_MCPWM_IRQ 16 -#define NVIC_ADC0_IRQ 17 -#define NVIC_I2C0_IRQ 18 -#define NVIC_I2C1_IRQ 19 -#define NVIC_SPI_IRQ 20 -#define NVIC_ADC1_IRQ 21 -#define NVIC_SSP0_OR_SSP1_IRQ 22 -#define NVIC_EVENTROUTER_IRQ 23 -#define NVIC_USART0_IRQ 24 -#define NVIC_UART1_IRQ 25 -#define NVIC_USART2_OR_C_CAN1_IRQ 26 -#define NVIC_USART3_IRQ 27 -#define NVIC_I2S0_OR_I2S1_OR_QEI_IRQ 28 -#define NVIC_C_CAN0_IRQ 29 -#define NVIC_SPIFI_OR_ADCHS_IRQ 30 -#define NVIC_M0APP_IRQ 31 - -#define NVIC_IRQ_COUNT 32 - -/**@}*/ - -/** @defgroup CM3_nvic_isrprototypes_LPC43xx (M0SUB) User interrupt service routines (ISR) prototypes for LPC 43xx series M0SUB core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrprototypes - - @{*/ - -BEGIN_DECLS - -void WEAK dac_isr(void); -void WEAK m4core_isr(void); -void WEAK dma_isr(void); -void WEAK sgpio_input_isr(void); -void WEAK sgpio_match_isr(void); -void WEAK sgpio_shift_isr(void); -void WEAK sgpio_pos_isr(void); -void WEAK usb0_isr(void); -void WEAK usb1_isr(void); -void WEAK sct_isr(void); -void WEAK ritimer_isr(void); -void WEAK gint1_isr(void); -void WEAK timer1_isr(void); -void WEAK timer2_isr(void); -void WEAK pin_int5_isr(void); -void WEAK mcpwm_isr(void); -void WEAK adc0_isr(void); -void WEAK i2c0_isr(void); -void WEAK i2c1_isr(void); -void WEAK spi_isr(void); -void WEAK adc1_isr(void); -void WEAK ssp0_or_ssp1_isr(void); -void WEAK eventrouter_isr(void); -void WEAK usart0_isr(void); -void WEAK uart1_isr(void); -void WEAK usart2_or_c_can1_isr(void); -void WEAK usart3_isr(void); -void WEAK i2s0_or_i2s1_or_qei_isr(void); -void WEAK c_can0_isr(void); -void WEAK spifi_or_adchs_isr(void); -void WEAK m0app_isr(void); - -END_DECLS - -/**@}*/ - -#endif /* LIBOPENCM3_LPC43xx_M0S_NVIC_H */ diff --git a/libopencm3/include/libopencm3/lpc43xx/m4/nvic.h b/libopencm3/include/libopencm3/lpc43xx/m4/nvic.h deleted file mode 100644 index 7b5b3b7..0000000 --- a/libopencm3/include/libopencm3/lpc43xx/m4/nvic.h +++ /dev/null @@ -1,133 +0,0 @@ -/* This file is part of the libopencm3 project. - * - * It was generated by the irq2nvic_h script. - */ - -#ifndef LIBOPENCM3_LPC43xx_M4_NVIC_H -#define LIBOPENCM3_LPC43xx_M4_NVIC_H - -#include - -/** @defgroup CM3_nvic_defines_LPC43xx (M4) User interrupts for LPC 43xx series M4 core (rev_1_7_UM10503) - @ingroup CM3_nvic_defines - - @{*/ - -#define NVIC_DAC_IRQ 0 -#define NVIC_M0CORE_IRQ 1 -#define NVIC_DMA_IRQ 2 -#define NVIC_FLASHEEPROM_IRQ 4 -#define NVIC_ETHERNET_IRQ 5 -#define NVIC_SDIO_IRQ 6 -#define NVIC_LCD_IRQ 7 -#define NVIC_USB0_IRQ 8 -#define NVIC_USB1_IRQ 9 -#define NVIC_SCT_IRQ 10 -#define NVIC_RITIMER_IRQ 11 -#define NVIC_TIMER0_IRQ 12 -#define NVIC_TIMER1_IRQ 13 -#define NVIC_TIMER2_IRQ 14 -#define NVIC_TIMER3_IRQ 15 -#define NVIC_MCPWM_IRQ 16 -#define NVIC_ADC0_IRQ 17 -#define NVIC_I2C0_IRQ 18 -#define NVIC_I2C1_IRQ 19 -#define NVIC_SPI_IRQ 20 -#define NVIC_ADC1_IRQ 21 -#define NVIC_SSP0_IRQ 22 -#define NVIC_SSP1_IRQ 23 -#define NVIC_USART0_IRQ 24 -#define NVIC_UART1_IRQ 25 -#define NVIC_USART2_IRQ 26 -#define NVIC_USART3_IRQ 27 -#define NVIC_I2S0_IRQ 28 -#define NVIC_I2S1_IRQ 29 -#define NVIC_SPIFI_IRQ 30 -#define NVIC_SGPIO_IRQ 31 -#define NVIC_PIN_INT0_IRQ 32 -#define NVIC_PIN_INT1_IRQ 33 -#define NVIC_PIN_INT2_IRQ 34 -#define NVIC_PIN_INT3_IRQ 35 -#define NVIC_PIN_INT4_IRQ 36 -#define NVIC_PIN_INT5_IRQ 37 -#define NVIC_PIN_INT6_IRQ 38 -#define NVIC_PIN_INT7_IRQ 39 -#define NVIC_GINT0_IRQ 40 -#define NVIC_GINT1_IRQ 41 -#define NVIC_EVENTROUTER_IRQ 42 -#define NVIC_C_CAN1_IRQ 43 -#define NVIC_ADCHS_IRQ 45 -#define NVIC_ATIMER_IRQ 46 -#define NVIC_RTC_IRQ 47 -#define NVIC_WWDT_IRQ 49 -#define NVIC_M0SUB_IRQ 50 -#define NVIC_C_CAN0_IRQ 51 -#define NVIC_QEI_IRQ 52 - -#define NVIC_IRQ_COUNT 53 - -/**@}*/ - -/** @defgroup CM3_nvic_isrprototypes_LPC43xx (M4) User interrupt service routines (ISR) prototypes for LPC 43xx series M4 core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrprototypes - - @{*/ - -BEGIN_DECLS - -void WEAK dac_isr(void); -void WEAK m0core_isr(void); -void WEAK dma_isr(void); -void WEAK flasheeprom_isr(void); -void WEAK ethernet_isr(void); -void WEAK sdio_isr(void); -void WEAK lcd_isr(void); -void WEAK usb0_isr(void); -void WEAK usb1_isr(void); -void WEAK sct_isr(void); -void WEAK ritimer_isr(void); -void WEAK timer0_isr(void); -void WEAK timer1_isr(void); -void WEAK timer2_isr(void); -void WEAK timer3_isr(void); -void WEAK mcpwm_isr(void); -void WEAK adc0_isr(void); -void WEAK i2c0_isr(void); -void WEAK i2c1_isr(void); -void WEAK spi_isr(void); -void WEAK adc1_isr(void); -void WEAK ssp0_isr(void); -void WEAK ssp1_isr(void); -void WEAK usart0_isr(void); -void WEAK uart1_isr(void); -void WEAK usart2_isr(void); -void WEAK usart3_isr(void); -void WEAK i2s0_isr(void); -void WEAK i2s1_isr(void); -void WEAK spifi_isr(void); -void WEAK sgpio_isr(void); -void WEAK pin_int0_isr(void); -void WEAK pin_int1_isr(void); -void WEAK pin_int2_isr(void); -void WEAK pin_int3_isr(void); -void WEAK pin_int4_isr(void); -void WEAK pin_int5_isr(void); -void WEAK pin_int6_isr(void); -void WEAK pin_int7_isr(void); -void WEAK gint0_isr(void); -void WEAK gint1_isr(void); -void WEAK eventrouter_isr(void); -void WEAK c_can1_isr(void); -void WEAK adchs_isr(void); -void WEAK atimer_isr(void); -void WEAK rtc_isr(void); -void WEAK wwdt_isr(void); -void WEAK m0sub_isr(void); -void WEAK c_can0_isr(void); -void WEAK qei_isr(void); - -END_DECLS - -/**@}*/ - -#endif /* LIBOPENCM3_LPC43xx_M4_NVIC_H */ diff --git a/libopencm3/lib/lpc43xx/m0/vector_nvic.c b/libopencm3/lib/lpc43xx/m0/vector_nvic.c deleted file mode 100644 index 56aed39..0000000 --- a/libopencm3/lib/lpc43xx/m0/vector_nvic.c +++ /dev/null @@ -1,85 +0,0 @@ -/* This file is part of the libopencm3 project. - * - * It was generated by the irq2nvic_h script. - * - * This part needs to get included in the compilation unit where - * blocking_handler gets defined due to the way #pragma works. - */ - - -/** @defgroup CM3_nvic_isrpragmas_LPC43xx (M0) User interrupt service routines (ISR) defaults for LPC 43xx series M0APP core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrpragmas - - @{*/ - -#pragma weak rtc_isr = blocking_handler -#pragma weak m4core_isr = blocking_handler -#pragma weak dma_isr = blocking_handler -#pragma weak flasheepromat_isr = blocking_handler -#pragma weak ethernet_isr = blocking_handler -#pragma weak sdio_isr = blocking_handler -#pragma weak lcd_isr = blocking_handler -#pragma weak usb0_isr = blocking_handler -#pragma weak usb1_isr = blocking_handler -#pragma weak sct_isr = blocking_handler -#pragma weak ritimer_or_wwdt_isr = blocking_handler -#pragma weak timer0_isr = blocking_handler -#pragma weak gint1_isr = blocking_handler -#pragma weak pin_int4_isr = blocking_handler -#pragma weak timer3_isr = blocking_handler -#pragma weak mcpwm_isr = blocking_handler -#pragma weak adc0_isr = blocking_handler -#pragma weak i2c0_or_irc1_isr = blocking_handler -#pragma weak sgpio_isr = blocking_handler -#pragma weak spi_or_dac_isr = blocking_handler -#pragma weak adc1_isr = blocking_handler -#pragma weak ssp0_or_ssp1_isr = blocking_handler -#pragma weak eventrouter_isr = blocking_handler -#pragma weak usart0_isr = blocking_handler -#pragma weak uart1_isr = blocking_handler -#pragma weak usart2_or_c_can1_isr = blocking_handler -#pragma weak usart3_isr = blocking_handler -#pragma weak i2s0_or_i2s1_isr = blocking_handler -#pragma weak c_can0_isr = blocking_handler -#pragma weak spifi_or_adchs_isr = blocking_handler -#pragma weak m0sub_isr = blocking_handler - -/**@}*/ - -/* Initialization template for the interrupt vector table. This definition is - * used by the startup code generator (vector.c) to set the initial values for - * the interrupt handling routines to the chip family specific _isr weak - * symbols. */ - -#define IRQ_HANDLERS \ - [NVIC_RTC_IRQ] = rtc_isr, \ - [NVIC_M4CORE_IRQ] = m4core_isr, \ - [NVIC_DMA_IRQ] = dma_isr, \ - [NVIC_FLASHEEPROMAT_IRQ] = flasheepromat_isr, \ - [NVIC_ETHERNET_IRQ] = ethernet_isr, \ - [NVIC_SDIO_IRQ] = sdio_isr, \ - [NVIC_LCD_IRQ] = lcd_isr, \ - [NVIC_USB0_IRQ] = usb0_isr, \ - [NVIC_USB1_IRQ] = usb1_isr, \ - [NVIC_SCT_IRQ] = sct_isr, \ - [NVIC_RITIMER_OR_WWDT_IRQ] = ritimer_or_wwdt_isr, \ - [NVIC_TIMER0_IRQ] = timer0_isr, \ - [NVIC_GINT1_IRQ] = gint1_isr, \ - [NVIC_PIN_INT4_IRQ] = pin_int4_isr, \ - [NVIC_TIMER3_IRQ] = timer3_isr, \ - [NVIC_MCPWM_IRQ] = mcpwm_isr, \ - [NVIC_ADC0_IRQ] = adc0_isr, \ - [NVIC_I2C0_OR_IRC1_IRQ] = i2c0_or_irc1_isr, \ - [NVIC_SGPIO_IRQ] = sgpio_isr, \ - [NVIC_SPI_OR_DAC_IRQ] = spi_or_dac_isr, \ - [NVIC_ADC1_IRQ] = adc1_isr, \ - [NVIC_SSP0_OR_SSP1_IRQ] = ssp0_or_ssp1_isr, \ - [NVIC_EVENTROUTER_IRQ] = eventrouter_isr, \ - [NVIC_USART0_IRQ] = usart0_isr, \ - [NVIC_UART1_IRQ] = uart1_isr, \ - [NVIC_USART2_OR_C_CAN1_IRQ] = usart2_or_c_can1_isr, \ - [NVIC_USART3_IRQ] = usart3_isr, \ - [NVIC_I2S0_OR_I2S1_IRQ] = i2s0_or_i2s1_isr, \ - [NVIC_C_CAN0_IRQ] = c_can0_isr, \ - [NVIC_SPIFI_OR_ADCHS_IRQ] = spifi_or_adchs_isr, \ - [NVIC_M0SUB_IRQ] = m0sub_isr diff --git a/libopencm3/lib/lpc43xx/m0s/vector_nvic.c b/libopencm3/lib/lpc43xx/m0s/vector_nvic.c deleted file mode 100644 index 8168240..0000000 --- a/libopencm3/lib/lpc43xx/m0s/vector_nvic.c +++ /dev/null @@ -1,85 +0,0 @@ -/* This file is part of the libopencm3 project. - * - * It was generated by the irq2nvic_h script. - * - * This part needs to get included in the compilation unit where - * blocking_handler gets defined due to the way #pragma works. - */ - - -/** @defgroup CM3_nvic_isrpragmas_LPC43xx (M0SUB) User interrupt service routines (ISR) defaults for LPC 43xx series M0SUB core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrpragmas - - @{*/ - -#pragma weak dac_isr = blocking_handler -#pragma weak m4core_isr = blocking_handler -#pragma weak dma_isr = blocking_handler -#pragma weak sgpio_input_isr = blocking_handler -#pragma weak sgpio_match_isr = blocking_handler -#pragma weak sgpio_shift_isr = blocking_handler -#pragma weak sgpio_pos_isr = blocking_handler -#pragma weak usb0_isr = blocking_handler -#pragma weak usb1_isr = blocking_handler -#pragma weak sct_isr = blocking_handler -#pragma weak ritimer_isr = blocking_handler -#pragma weak gint1_isr = blocking_handler -#pragma weak timer1_isr = blocking_handler -#pragma weak timer2_isr = blocking_handler -#pragma weak pin_int5_isr = blocking_handler -#pragma weak mcpwm_isr = blocking_handler -#pragma weak adc0_isr = blocking_handler -#pragma weak i2c0_isr = blocking_handler -#pragma weak i2c1_isr = blocking_handler -#pragma weak spi_isr = blocking_handler -#pragma weak adc1_isr = blocking_handler -#pragma weak ssp0_or_ssp1_isr = blocking_handler -#pragma weak eventrouter_isr = blocking_handler -#pragma weak usart0_isr = blocking_handler -#pragma weak uart1_isr = blocking_handler -#pragma weak usart2_or_c_can1_isr = blocking_handler -#pragma weak usart3_isr = blocking_handler -#pragma weak i2s0_or_i2s1_or_qei_isr = blocking_handler -#pragma weak c_can0_isr = blocking_handler -#pragma weak spifi_or_adchs_isr = blocking_handler -#pragma weak m0app_isr = blocking_handler - -/**@}*/ - -/* Initialization template for the interrupt vector table. This definition is - * used by the startup code generator (vector.c) to set the initial values for - * the interrupt handling routines to the chip family specific _isr weak - * symbols. */ - -#define IRQ_HANDLERS \ - [NVIC_DAC_IRQ] = dac_isr, \ - [NVIC_M4CORE_IRQ] = m4core_isr, \ - [NVIC_DMA_IRQ] = dma_isr, \ - [NVIC_SGPIO_INPUT_IRQ] = sgpio_input_isr, \ - [NVIC_SGPIO_MATCH_IRQ] = sgpio_match_isr, \ - [NVIC_SGPIO_SHIFT_IRQ] = sgpio_shift_isr, \ - [NVIC_SGPIO_POS_IRQ] = sgpio_pos_isr, \ - [NVIC_USB0_IRQ] = usb0_isr, \ - [NVIC_USB1_IRQ] = usb1_isr, \ - [NVIC_SCT_IRQ] = sct_isr, \ - [NVIC_RITIMER_IRQ] = ritimer_isr, \ - [NVIC_GINT1_IRQ] = gint1_isr, \ - [NVIC_TIMER1_IRQ] = timer1_isr, \ - [NVIC_TIMER2_IRQ] = timer2_isr, \ - [NVIC_PIN_INT5_IRQ] = pin_int5_isr, \ - [NVIC_MCPWM_IRQ] = mcpwm_isr, \ - [NVIC_ADC0_IRQ] = adc0_isr, \ - [NVIC_I2C0_IRQ] = i2c0_isr, \ - [NVIC_I2C1_IRQ] = i2c1_isr, \ - [NVIC_SPI_IRQ] = spi_isr, \ - [NVIC_ADC1_IRQ] = adc1_isr, \ - [NVIC_SSP0_OR_SSP1_IRQ] = ssp0_or_ssp1_isr, \ - [NVIC_EVENTROUTER_IRQ] = eventrouter_isr, \ - [NVIC_USART0_IRQ] = usart0_isr, \ - [NVIC_UART1_IRQ] = uart1_isr, \ - [NVIC_USART2_OR_C_CAN1_IRQ] = usart2_or_c_can1_isr, \ - [NVIC_USART3_IRQ] = usart3_isr, \ - [NVIC_I2S0_OR_I2S1_OR_QEI_IRQ] = i2s0_or_i2s1_or_qei_isr, \ - [NVIC_C_CAN0_IRQ] = c_can0_isr, \ - [NVIC_SPIFI_OR_ADCHS_IRQ] = spifi_or_adchs_isr, \ - [NVIC_M0APP_IRQ] = m0app_isr diff --git a/libopencm3/lib/lpc43xx/m4/vector_nvic.c b/libopencm3/lib/lpc43xx/m4/vector_nvic.c deleted file mode 100644 index fb0de13..0000000 --- a/libopencm3/lib/lpc43xx/m4/vector_nvic.c +++ /dev/null @@ -1,123 +0,0 @@ -/* This file is part of the libopencm3 project. - * - * It was generated by the irq2nvic_h script. - * - * This part needs to get included in the compilation unit where - * blocking_handler gets defined due to the way #pragma works. - */ - - -/** @defgroup CM3_nvic_isrpragmas_LPC43xx (M4) User interrupt service routines (ISR) defaults for LPC 43xx series M4 core (rev_1_7_UM10503) - @ingroup CM3_nvic_isrpragmas - - @{*/ - -#pragma weak dac_isr = blocking_handler -#pragma weak m0core_isr = blocking_handler -#pragma weak dma_isr = blocking_handler -#pragma weak flasheeprom_isr = blocking_handler -#pragma weak ethernet_isr = blocking_handler -#pragma weak sdio_isr = blocking_handler -#pragma weak lcd_isr = blocking_handler -#pragma weak usb0_isr = blocking_handler -#pragma weak usb1_isr = blocking_handler -#pragma weak sct_isr = blocking_handler -#pragma weak ritimer_isr = blocking_handler -#pragma weak timer0_isr = blocking_handler -#pragma weak timer1_isr = blocking_handler -#pragma weak timer2_isr = blocking_handler -#pragma weak timer3_isr = blocking_handler -#pragma weak mcpwm_isr = blocking_handler -#pragma weak adc0_isr = blocking_handler -#pragma weak i2c0_isr = blocking_handler -#pragma weak i2c1_isr = blocking_handler -#pragma weak spi_isr = blocking_handler -#pragma weak adc1_isr = blocking_handler -#pragma weak ssp0_isr = blocking_handler -#pragma weak ssp1_isr = blocking_handler -#pragma weak usart0_isr = blocking_handler -#pragma weak uart1_isr = blocking_handler -#pragma weak usart2_isr = blocking_handler -#pragma weak usart3_isr = blocking_handler -#pragma weak i2s0_isr = blocking_handler -#pragma weak i2s1_isr = blocking_handler -#pragma weak spifi_isr = blocking_handler -#pragma weak sgpio_isr = blocking_handler -#pragma weak pin_int0_isr = blocking_handler -#pragma weak pin_int1_isr = blocking_handler -#pragma weak pin_int2_isr = blocking_handler -#pragma weak pin_int3_isr = blocking_handler -#pragma weak pin_int4_isr = blocking_handler -#pragma weak pin_int5_isr = blocking_handler -#pragma weak pin_int6_isr = blocking_handler -#pragma weak pin_int7_isr = blocking_handler -#pragma weak gint0_isr = blocking_handler -#pragma weak gint1_isr = blocking_handler -#pragma weak eventrouter_isr = blocking_handler -#pragma weak c_can1_isr = blocking_handler -#pragma weak adchs_isr = blocking_handler -#pragma weak atimer_isr = blocking_handler -#pragma weak rtc_isr = blocking_handler -#pragma weak wwdt_isr = blocking_handler -#pragma weak m0sub_isr = blocking_handler -#pragma weak c_can0_isr = blocking_handler -#pragma weak qei_isr = blocking_handler - -/**@}*/ - -/* Initialization template for the interrupt vector table. This definition is - * used by the startup code generator (vector.c) to set the initial values for - * the interrupt handling routines to the chip family specific _isr weak - * symbols. */ - -#define IRQ_HANDLERS \ - [NVIC_DAC_IRQ] = dac_isr, \ - [NVIC_M0CORE_IRQ] = m0core_isr, \ - [NVIC_DMA_IRQ] = dma_isr, \ - [NVIC_FLASHEEPROM_IRQ] = flasheeprom_isr, \ - [NVIC_ETHERNET_IRQ] = ethernet_isr, \ - [NVIC_SDIO_IRQ] = sdio_isr, \ - [NVIC_LCD_IRQ] = lcd_isr, \ - [NVIC_USB0_IRQ] = usb0_isr, \ - [NVIC_USB1_IRQ] = usb1_isr, \ - [NVIC_SCT_IRQ] = sct_isr, \ - [NVIC_RITIMER_IRQ] = ritimer_isr, \ - [NVIC_TIMER0_IRQ] = timer0_isr, \ - [NVIC_TIMER1_IRQ] = timer1_isr, \ - [NVIC_TIMER2_IRQ] = timer2_isr, \ - [NVIC_TIMER3_IRQ] = timer3_isr, \ - [NVIC_MCPWM_IRQ] = mcpwm_isr, \ - [NVIC_ADC0_IRQ] = adc0_isr, \ - [NVIC_I2C0_IRQ] = i2c0_isr, \ - [NVIC_I2C1_IRQ] = i2c1_isr, \ - [NVIC_SPI_IRQ] = spi_isr, \ - [NVIC_ADC1_IRQ] = adc1_isr, \ - [NVIC_SSP0_IRQ] = ssp0_isr, \ - [NVIC_SSP1_IRQ] = ssp1_isr, \ - [NVIC_USART0_IRQ] = usart0_isr, \ - [NVIC_UART1_IRQ] = uart1_isr, \ - [NVIC_USART2_IRQ] = usart2_isr, \ - [NVIC_USART3_IRQ] = usart3_isr, \ - [NVIC_I2S0_IRQ] = i2s0_isr, \ - [NVIC_I2S1_IRQ] = i2s1_isr, \ - [NVIC_SPIFI_IRQ] = spifi_isr, \ - [NVIC_SGPIO_IRQ] = sgpio_isr, \ - [NVIC_PIN_INT0_IRQ] = pin_int0_isr, \ - [NVIC_PIN_INT1_IRQ] = pin_int1_isr, \ - [NVIC_PIN_INT2_IRQ] = pin_int2_isr, \ - [NVIC_PIN_INT3_IRQ] = pin_int3_isr, \ - [NVIC_PIN_INT4_IRQ] = pin_int4_isr, \ - [NVIC_PIN_INT5_IRQ] = pin_int5_isr, \ - [NVIC_PIN_INT6_IRQ] = pin_int6_isr, \ - [NVIC_PIN_INT7_IRQ] = pin_int7_isr, \ - [NVIC_GINT0_IRQ] = gint0_isr, \ - [NVIC_GINT1_IRQ] = gint1_isr, \ - [NVIC_EVENTROUTER_IRQ] = eventrouter_isr, \ - [NVIC_C_CAN1_IRQ] = c_can1_isr, \ - [NVIC_ADCHS_IRQ] = adchs_isr, \ - [NVIC_ATIMER_IRQ] = atimer_isr, \ - [NVIC_RTC_IRQ] = rtc_isr, \ - [NVIC_WWDT_IRQ] = wwdt_isr, \ - [NVIC_M0SUB_IRQ] = m0sub_isr, \ - [NVIC_C_CAN0_IRQ] = c_can0_isr, \ - [NVIC_QEI_IRQ] = qei_isr