diff --git a/boards/flywoo/gn-f405/bootloader/flywoo_gnf405_bl_15d91db.hex b/boards/flywoo/gn-f405/bootloader/flywoo_gnf405_bl_15d91db.hex new file mode 100644 index 00000000000..f13fed0d9a5 --- /dev/null +++ b/boards/flywoo/gn-f405/bootloader/flywoo_gnf405_bl_15d91db.hex @@ -0,0 +1,616 @@ +:020000040800F2 +:1000000000000220811B00087F1B00087D1B0008E8 +:100010007D1B00087D1B00087D1B00080000000000 +:100020000000000000000000000000007F1B00082E +:100030007F1B0008000000007F1B0008B9020008B9 +:100040007D1B00087D1B00087D1B00087D1B000830 +:100050007D1B00087D1B00087D1B00087D1B000820 +:100060007D1B00087D1B00087D1B00087D1B000810 +:100070007D1B00087D1B00087D1B00087D1B000800 +:100080007D1B00087D1B00087D1B00087D1B0008F0 +:100090007D1B00087D1B00087D1B00087D1B0008E0 +:1000A0007D1B00087D1B00087D1B00087D1B0008D0 +:1000B0007D1B00087D1B00087D1B00087D1B0008C0 +:1000C0007D1B00087D1B00087D1B00087D1B0008B0 +:1000D0007D1B00087D1B00087D1B00087D1B0008A0 +:1000E0007D1B00087D1B00087D1B00087D1B000890 +:1000F0007D1B00087D1B00087D1B00087D1B000880 +:100100007D1B00087D1B00087D1B00087D1B00086F +:100110007D1B00087D1B00087D1B00087D1B00085F +:100120007D1B00087D1B00087D1B00087D1B00084F +:100130007D1B00087D1B00087D1B00087D1B00083F +:100140007D1B00087D1B00087D1B00082908000896 +:100150007D1B00087D1B00087D1B00087D1B00081F +:100160007D1B00087D1B00087D1B00087D1B00080F +:100170007D1B00087D1B00087D1B00087D1B0008FF +:100180007D1B00087D1B00087D1B00087D1B0008EF +:100190007D1B00087D1B00087D1B00087D1B0008DF +:1001A0007D1B00087D1B00087D1B0008022901D172 +:1001B00000F042BB7047000010B5084C237813F0E4 +:1001C000FD0F02D04FF0FF3010BDC307FAD500F08D +:1001D000B5FB0028F6DB02236370F5E7580000202A +:1001E00010B5064C606000F0CBFBFFF7E5FF002880 +:1001F00002DA6368002BF6D110BD00BFE8070020CB +:1002000008B5FFF7EDFFA0F120035842584108BDA3 +:10021000034B1B78022B01D100F09ABB704700BF43 +:1002200058000020054B596810B54A1C9C68D2B292 +:1002300094421EBFC9185A60087310BD58000020B0 +:10024000064AD2E901138B421FBFD1180133DBB23A +:10025000087B14BF93604FF0FF30704758000020B8 +:1002600038B5124C236801331ED0114D2A68A242C2 +:100270001AD3104B9B6803F1006303F500439A42C5 +:1002800012D200F0D7FB00F0A9FB00F037FB00F022 +:10029000ADFB00F077FB204600F0D0FB23682A6816 +:1002A00083F308881047FEE738BD00BF00800008D0 +:1002B000048000080C0000200D4A10B500231446ED +:1002C00052F8231021B152F82310013942F82310BB +:1002D0000133042BF4D1074B93F80C3133B9A368E5 +:1002E00023B9022000F080FC3223A36010BD00BFC0 +:1002F000E807002058000020024BD860DA68002A86 +:10030000FCD17047E80700202DE9F04FBF4DDFF822 +:100310000483DFF81093D8F808408BB00026074616 +:100320002E70029600F046FB0FB1C9F8007085F8F8 +:100330000C61C9F808604FF0FF36012000F046FC60 +:1003400027B1D9F80030002B00F0F8810020FFF72A +:1003500047FF0390039B002BF2DB012000F028FCF9 +:10036000039B213B102BE8D801A252F823F000BFD9 +:10037000B5030008E5030008510400083B0300082A +:100380003B0300083B030008C90400083B030008C6 +:100390006F0500082D06000877060008CB06000848 +:1003A0003B030008EB0600083B03000819070008A0 +:1003B000C90300080220FFF723FF002800F0D881BE +:1003C000029B43F0010302932B780BB96B782B70DF +:1003D00041F21203022105A8ADF814300027FFF7FF +:1003E00017FFAAE74FF47A70FFF7FAFEB0F1000AA0 +:1003F000C0F2BE810220FFF703FF002800F0B881A1 +:100400000AF1FF30042800F2B381DFE800F0030BAB +:100410000E1114007E480421FFF7FAFE029B43F000 +:100420000203D0E77B480421F6E77B480421F3E789 +:100430007A480421F0E71C27384600F015FB043702 +:100440000590042105A8FFF7E3FE2C2FF4D1E5E782 +:100450000220FFF7D5FE002800F08A81029B03F0FE +:100460000303032B40F084810123022085F80C3123 +:1004700000F09EFB00F0E0FA4FF0000A504600F05A +:10048000E3FA044690B9022085F80C0100F09EFBC7 +:10049000D8F80830A3420FD8029B002443F004038D +:1004A000029385F80C41C9F808408DE7504600F0EA +:1004B000E5FA0AF1010AE1E7204600F0D5FA013039 +:1004C00040F04D810434E3E73220FFF789FEB0F1BC +:1004D000000BC0F24D811BF0030240F04981D8F8B7 +:1004E00008000BEB0401814200F24281BBF5807FE2 +:1004F00000F23E81DFF830A151465A4516D1C8209E +:10050000FFF77EFE002800F033812CB94FF0FF3258 +:10051000D5F81061C5F810212BF0030303EB040B91 +:100520005C4515D1029B43F008034CE74FF47A7009 +:10053000CDE90021FFF754FE039003980028C0F294 +:1005400017810199009A039801F8010B0132D4E751 +:10055000DAF80010204600F081FA204600F084FA14 +:100560005AF8042B904240F0FA800434D8E7022075 +:10057000FFF746FE002800F0FB800027BA4631E076 +:10058000002F3DD1711C3BD00596D5F81422C2B97D +:1005900023481346082103F0010C5B08BCF1000F4F +:1005A00007D083F06D4383F4380383F4034383F06F +:1005B00020030139EFD10132B2F5807F40F8043BCE +:1005C000E7D105A9002211F8013B83EA0A03DBB257 +:1005D00005EB83030132D3F81032042A83EA1A2A86 +:1005E000F1D10437D8F80830BB42C9D8042105A896 +:1005F000CDF814A0FFF70CFE029B43F01003E2E6D7 +:10060000384600F031FA0590BFE700BF58000020DF +:10061000DC2300080C000020100000201400002043 +:1006200068020020E80700206801002005AB4FF0B9 +:10063000000B9A4664200093FFF7D2FD0028C0F219 +:100640009780009B0BF1010BBBF1040F03F8010B2A +:10065000F0D1059B00930220FFF7D2FD002800F0A7 +:100660008780009B184600F031FA594605905046A5 +:10067000FFF7CEFDA8E605AB4FF0000B9A466420CD +:100680000093FFF7ADFD002872DB009B0BF1010B1F +:10069000BBF1040F03F8010BF1D1059B009302207D +:1006A000FFF7AEFD002863D0009B9A0760D1082BAE +:1006B0005ED8184600F076FA594605905046FFF786 +:1006C000A7FD029B43F040037DE60220FFF798FD63 +:1006D00000284DD000F00AFA0421059005A8FFF784 +:1006E00097FD029B43F080036DE60220FFF788FD33 +:1006F00000283DD005A9142000F0FEF9042107468A +:10070000049004A8FFF784FD394605A8FFF780FD93 +:10071000029B43F4807356E64FF47A70FFF770FD46 +:1007200030B3731C0DD141F2120305A80221ADF8BC +:100730001430FFF76DFD6420FFF7DEFD0BB0BDE860 +:10074000F08F029B03F01B031B2B11D131460020BD +:1007500000F084F9002000F087F98642E3D041F2EE +:100760001213022105A8ADF81430FFF751FDE4E59E +:1007700041F21233022105A8ADF81430FFF748FD0D +:1007800000230293D9E500BF4978212909D0222905 +:1007900009D0202909D11888062894BF00200120FB +:1007A0007047034B1360012070470020704700BF63 +:1007B000F423000837B5104B00930446002540236E +:1007C0000222012100F00CFD204600954023022268 +:1007D000822100F005FD204600951023032283218D +:1007E00000F0FEFC054B7F222121204603B0BDE82E +:1007F000304001F099B800BF0108000889070008DF +:1008000030B591B040236A46012100F011FD00246B +:100810000546AC4201D311B030BD1DF80400FFF70E +:1008200001FD0134F5E70000024B186808B100F043 +:10083000CDBC7047680600201FB52648264C012114 +:1008400000F070FC2548802100F06CFC4FF4C05390 +:1008500023480022022100F087FB21484FF4C052B8 +:100860000A2100F0BCFB1F4A1F48136843F4001321 +:1008700013601E4B1B68B3F5005F01BF4FF0A04231 +:10088000136843F0C00313608023194A0293231DA9 +:100890000193032302F10D010093164B00F06EFC4F +:1008A0001549206000F0FEFE104B1B68B3F5005F99 +:1008B0000AD10C4A136843F404131360D2F8CC37FE +:1008C00023F00203C2F8CC37432004B0BDE8104047 +:1008D00001F0D4B9303802406806002034380240B4 +:1008E0000000024038000050B82500083C000050CD +:1008F000FB23000800000020B507000810B50C4CD1 +:10090000432001F0C9F9206820B1012100F062FC08 +:10091000002323600022074811464FF4C05300F023 +:1009200023FBBDE810400448802100F0FFBB00BF5E +:10093000680600200000024034380240034B1B6868 +:100940000BB1FFF77DBC4FF0FF3070476806002009 +:1009500070B50A4E326805460C4662B970BD402C2F +:10096000234628BF40232A4630689BB2822100F0EC +:1009700057FC241A0544002CF1D1EFE7680600204B +:1009800007207047002208B511463023064800F0C2 +:10099000EBFA06484FF0805100F0C8FB044B4FF4CF +:1009A00080121A6008BD00BF0004024040380240B7 +:1009B0003038024008B5042001F034F9064BDB68FA +:1009C0004FF47A70584301F025F901F037F9BDE88A +:1009D000084001F043B900BF0C00002008B501F049 +:1009E00035F9BDE8084001F041B9000010B5042018 +:1009F00000F0ACF9042000F0A1F90A4B00241C60BF +:100A0000032000F0CFF9204600F0CCF900F0F6F911 +:100A1000054B064A1A60032000F09CFB044B1C6047 +:100A200010BD00BF083802400438024010300024D6 +:100A30000C38024000F01ABB00F006BB014B1860F6 +:100A4000704700BF08ED00E00A289DBF024B03EB92 +:100A5000C000406800207047D024000800F100600A +:100A600000F5004000F01EBB830703BF00F10060EB +:100A700000F500400068002070470000431E092B6D +:100A800070B502460AD8104C01230025934206D1C6 +:100A900004EBC20300215E68B14206D370BD04EBD3 +:100AA000C301013349680D44F0E76818FFF7DCFF24 +:100AB000013001D10431EFE714F832000221BDE822 +:100AC000704000F007BB00BFD024000810F0030303 +:100AD00009D1B0F5007F04D800F10050A0F508401E +:100AE0000368184670470023FBE70000014B1868B5 +:100AF000704700BF002004E0284B1A68284B2DE9FE +:100B0000F041C2F30B0C5F691D7E0446120C0020FD +:100B10004FF00C0E10330EFB00F636F80380E04564 +:100B200029D133445F681D7A42F201039A4226D0EC +:100B3000B2F5805F25D041F201039A4223D041F201 +:100B400003039A4221D041F207039A4208BF31259C +:100B5000621E0A447C1E0B4693421CD214F8016F9D +:100B6000581CA6B92C2482421C7001D9981C5D70B7 +:100B7000401ABDE8F08101300428CCD1D4E73325F8 +:100B8000E6E74125E4E75A25E2E75925E0E700F8E2 +:100B9000016C0346E0E71846EAE700BF002004E0E6 +:100BA0000C000020014BC058704700BF107AFF1F97 +:100BB000012802D0022804D070472021024800F00A +:100BC000C7B91021FAE700BF00040240012802D093 +:100BD000022804D070472021024800F0B7B9102144 +:100BE000FAE700BF00040240012802D0022804D026 +:100BF00070472021024800F0AEB91021FAE700BF8B +:100C0000000402402C4A2D4838B5136843F47003A1 +:100C100013602B4B6FF07F0200245A7202210F22C7 +:100C20009A721C72DC7200F07DFA2648302322464C +:100C3000012100F099F9302322462248214600F094 +:100C4000B3F92048302100F083F94FF080511E485D +:100C500000F068FA1D4800F023F91D4B1D481A6882 +:100C600042F480721A601C4A116841F4004111601C +:100C70000568196821F48071196018498D4217D1EF +:100C8000196841F480711960116841F400411160E4 +:100C900004601A6822F480721A6002210020FFF7B3 +:100CA00085FA2046FFF730FB0024FFF7D9FAF8E772 +:100CB00041F28834F1E700BF88ED00E030380240AF +:100CC0000C00002000040240403802408825000843 +:100CD00000700040502800407038024007B007B054 +:100CE000062822D8DFE800F004171C090E131500AF +:100CF0000F4B1868C0F3406070470D4B1868C0F385 +:100D0000404070470A4B1868C0F340007047094BD9 +:100D1000F9E7094BF7E7064B1868C0F340707047D6 +:100D2000034B1868C0F3C06070470020704700BFD5 +:100D300000380240703802407438024008B502465C +:100D40001046FFF7CDFF0028FAD008BD06280AD8C4 +:100D5000DFE800F004181D0A0F1416000E4A13688D +:100D600043F08073136070470B4A136843F4803379 +:100D7000F8E7094A136843F00103F3E7074AF9E784 +:100D8000074AF7E7044A136843F08053EAE7024A48 +:100D9000136843F08063E5E7003802407038024092 +:100DA0007438024006280AD8DFE800F004181D0A4B +:100DB0000F1416000E4A136823F0807313607047F7 +:100DC0000B4A136823F48033F8E7094A136823F0C9 +:100DD0000103F3E7074AF9E7074AF7E7044A13680C +:100DE00023F08053EAE7024A136823F08063E5E7C3 +:100DF000003802407038024074380240024A1368DA +:100E000023F400231360704700380240034A13683C +:100E100023F0030318431060704700BF08380240F6 +:100E2000034A136823F4604343EA4030106070477C +:100E300008380240034A136823F4E05343EA802051 +:100E40001060704708380240034A136823F0F0032B +:100E500043EA0010106070470838024010B5029C49 +:100E6000022C38BF022424071B0603F0706304F031 +:100E7000E04452081C4300F03F0047F6C073013ABB +:100E800003EA8111044312040C4302F44032034B81 +:100E9000144344F480041C6010BD00BF04380240B9 +:100EA00013B504460420FFF751FF0420FFF746FF67 +:100EB0000020FFF7ABFF0320FFF748FF0320FFF7F9 +:100EC0003DFFE07B002835D100F0F4FE207BFFF7EA +:100ED000BBFF607BFFF7AEFFA07BFFF7A1FFA3790D +:100EE00061882279207800936379FFF7B7FF124A6F +:100EF000136843F0807313600020FFF71FFFA068A2 +:100F000000F098F80220FFF781FF0C4A1368C3F342 +:100F10008103022BFAD10A4B22691A60094B6269DC +:100F20001A60A269084B04201A6002B0BDE81040A4 +:100F3000FFF738BF0120C7E70038024008380240F9 +:100F40004C000020500000205400002081617047B8 +:100F5000090481617047436901EA030221EA030140 +:100F600041EA0241816170472DE9F0410568C4689A +:100F700000264FF0030E43FA06F7FF070DD5770062 +:100F80000EFA07FC01FA07F825EA0C0524EA0C041E +:100F900002FA07F748EA05053C430136102EEAD16C +:100FA0000560C460BDE8F081012941680CBF1943A8 +:100FB0009943F0B5416081680024032643FA04F5A3 +:100FC000ED0707D5650006FA05F721EA070102FAE1 +:100FD00005F529430134102CF0D18160F0BDF0B546 +:100FE000076A466A00234FF00F0C42FA03F4E50744 +:100FF00007D59D000CFA05F427EA040701FA05F568 +:101000002F430133082BF0D14FF00F0C42FA03F4B9 +:10101000E40708D59C00203C0CFA04F526EA0506F6 +:1010200001FA04F426430133102BEFD10762466224 +:10103000F0BD0000034A136823F007031843106053 +:10104000704700BF003C0240054A136843F000436C +:101050001360044B044A1A6002F188321A60704728 +:10106000103C0240043C024023016745024A1368D9 +:1010700043F0004313607047103C0240024A13687B +:10108000DB03FCD4704700BF0C3C0240044B1968E2 +:1010900021F4407119601A6842EA00201860704714 +:1010A000103C024070B50A4C0E460546FFF7E6FFBD +:1010B0000220FFF7EBFF236843F0010323602E605B +:1010C000FFF7DCFF236823F00103236070BD00BF3E +:1010D000103C024037B5124C01910546FFF7CEFF98 +:1010E0000198FFF7D3FF236823F0F80323602368F8 +:1010F000ED00EDB21D432560236843F00203236039 +:10110000236843F480332360FFF7B8FF236823F09C +:1011100002032360236823F0F803236003B030BD8B +:10112000103C02400368194301607047036823EADA +:10113000010101607047430903F1804303F50E3359 +:1011400000F01F001968012202FA00F0084318603D +:1011500070470000032802D0052806D07047054AD2 +:10116000136823F4802313607047034A136823F045 +:101170000403F8E700380240703802402DE9F041DE +:101180001E4603680546884617469847069BC36077 +:10119000079B0361BDF820308382094B0367094B2D +:1011A000C366094B83660023C0E90087C0E9323378 +:1011B000C0E93433C0F8DC508660BDE8F08100BF80 +:1011C00055190008C5190008471A0008D0F8DC3086 +:1011D0005B6A1847D0F8DC309B6A03B11847704748 +:1011E00010B4D0F8DC40A468A4465DF8044B604716 +:1011F00013B503680021C1820446DB7900910A46D9 +:10120000FFF7EEFFD4F8DC3000215B6820469847FA +:10121000E3691BB102B0BDE81040184702B010BD31 +:1012200010B4D0F8DC40E469A4465DF8044B604794 +:1012300010B4D0F8DC40246AA4465DF8044B604743 +:10124000D0F8DC301B691847D0F8DC309B691847B0 +:10125000D0F8DC305B69184710B50B7873B94C884F +:101260007F2C0CD8D0F8DC30847593F830201AB17C +:1012700049885B68C9B29847012300E000231846FB +:1012800010BDF8B50D464988044679B103680D26AE +:10129000587C0023984201D80020F8BD626806FB04 +:1012A000032252798A4203D00133F3E74FF0FF3330 +:1012B0000133DBB2E3754BB9D4F8DC302046DB6890 +:1012C0009847D4F8C830ABB90120E6E70D226FF09B +:1012D0000C0112FB031263681344002210461979B3 +:1012E0009142E9D9D3F809101601715801B108707B +:1012F0000132F4E70023A3642365A365236604F1A8 +:10130000C80604F1D80756F8043B13B16988204693 +:101310009847B742F7D1D7E719881268012984BFE7 +:1013200001211980C37D2BB141680D2000FB0313FF +:1013300013F8083C13700120704770B5C67D4068F3 +:101340006FF00C050D2414FB065420448D8804799D +:10135000A5420CD201241C808B88D0F809001B0107 +:101360001B5803B11B7812680120137070BD002058 +:10137000FCE71988022984BF022119801168002323 +:101380000B70126801205370704710B514461A880C +:10139000022A84BF02221A808988C9B2FFF754FF4B +:1013A0002368003818BF01201870236800225A7083 +:1013B000012010BD08B589880122C9B2FFF740FF9E +:1013C000012008BD08B589880022C9B2FFF738FF9F +:1013D000012008BD70B5C27D0D241D466FF00C03C1 +:1013E00014FB023344688A881C442379934219D938 +:1013F000D4F809404B88160104EB021212799A4284 +:1014000010D9A25952B11370D0F8D83013B14A880C +:101410008988984700232B80012070BD002BF3D0D2 +:101420001046FAE70020F8E72DE9F04F4D881F46F7 +:101430002B0A022B89B0144611D0032B00F0ED804B +:10144000012B40F0218102682260127839888A429B +:1014500028BF0A463A80012009B0BDE8F08FEDB2FE +:1014600005EB45080369D0F80490136005EB880884 +:101470003C8819F808500293A54209EB080328BFDD +:1014800025461946029803932A4600F099FE029BCE +:1014900019F80880641B5E19A4B200230193039B12 +:1014A0001A79BDF804309A4204D8029BA3F802804E +:1014B0003D80D0E7019B019A1B010593039BD3F864 +:1014C000093003EB0213D3F808A0BAF1000F14D0CF +:1014D0009AF80090A14528BFA14630464A46514699 +:1014E00000F06EFE9AF80030A4EB09044D449844D5 +:1014F0004E44A4B2ADB21FFA88F800230493039BB4 +:10150000059AD3F809301344BDF810201979914297 +:1015100002D8019B0133C1E7049AD3F80CA015212E +:1015200001FB02F90AEB09031AF809B00093A3457D +:1015300028BFA346194630465A4600F041FE1AF825 +:1015400009309844009BD3F80D10A4EB0B045D44C4 +:101550005E44A4B2ADB21FFA88F8B1B1D3F811A0BD +:10156000A245A8BFA2461FFA8AF930464A4600F0B3 +:1015700027FE009BD3F81130A4EB09044D44984496 +:101580004E44A4B2ADB21FFA88F84FF00009009B98 +:101590001A791FFA89F39A4202D8049B0133ADE706 +:1015A000009BC9EB091BD3F80930079313F80B20F4 +:1015B00003EB0B0AA24228BF224651463046069250 +:1015C00000F0FEFD079B069A13F80B30DAF80710BF +:1015D000A41A154498441644A4B2ADB21FFA88F870 +:1015E000C1B1DAF80B20A242A8BF22461FFA82FB43 +:1015F0005A463046CDF818B000F0E2FDDAF80B306C +:10160000069AA4EB0B045D4498441644A4B2ADB210 +:101610001FFA88F809F10109B9E715F0FF05066915 +:101620000DD10923B3700423F37033703B88042B6E +:1016300028BF04233B800323737026600BE7836875 +:10164000013D0BB3C268AA421EDD898840F20942FF +:10165000914219D153F82550284600F051FE01302F +:101660004000C0B230703B88984228BF184638808E +:1016700000233A885208013A9A42DCDD06EB430225 +:10168000E95C51800133F4E70020E5E6198802297E +:1016900084BF02211980116800230B701268012099 +:1016A0005370704710B5002300F1C80454F8042BA0 +:1016B0002AB10133042BF9D14FF0FF3010BD323382 +:1016C00040F823101046F9E710B44C78092C13D8D1 +:1016D000DFE804F00E12121212100C120A05084C68 +:1016E000A4465DF8044B6047064CF9E7064CF7E763 +:1016F000064CF5E7064CF3E700205DF8044B704715 +:101700008312000819130008291400087313000835 +:101710005912000810B44C780A2C07D00B2C07D0B3 +:1017200044B9064CA4465DF8044B6047044CF9E705 +:10173000044CF7E700205DF8044B70478D16000855 +:101740003B130008D513000810B44C78012C04D0CA +:10175000032C08D01CB9094C09E04C885CB100206E +:101760005DF8044B70474C88002CF8D1044CA4461B +:101770005DF8044B6047034CF9E700BF8B1300088A +:10178000B5130008C513000810B40C7814F0600FEE +:1017900012D104F01F04012C06D0022C08D05CB931 +:1017A0005DF8044BFFF790BF5DF8044BFFF7B2BF45 +:1017B0005DF8044BFFF7C8BF00205DF8044B70478D +:1017C00010B5012204460021FFF73AFD002384F8FA +:1017D0002C3010BD70B50368828FC48EDB79816BAD +:1017E000A41A9C42A8BF1C46A6B20A443346002154 +:1017F0000546FFF71DFD864205D02846FFF7E0FFAE +:101800004FF0FF3070BDAB8F1E44AE87A0B2F9E73A +:1018100010B50368826BD979838F994204460FD241 +:101820000B460021FFF7FCFC022384F82C302368D0 +:10183000A26BD979A38F0A445B1AA263A38710BD58 +:101840000021FFF7EDFC94F84430002B14BF022375 +:10185000032384F82C30002384F84430A387A36347 +:10186000EDE72DE9F04100F1380286B00446054667 +:1018700000F1200800F13C0300F14007AE6C2EB9E6 +:10188000204606B0BDE8F041FFF77EBF087895F826 +:101890004DE095F84CC000EA0E00844503D00835B1 +:1018A0004545EBD1ECE700972046CDE904230391B1 +:1018B000B0470128DDE90312059BF0D806B0BDE86A +:1018C000F08138B5036983638B79CA7943EA0223CF +:1018D000838704460D46FFF7C4FF00B3EB88ABB126 +:1018E000A28F21689342C9790ED932B1B2FBF1F3CC +:1018F00001FB1322B2FA82F2520984F844202046F6 +:10190000BDE83840FFF784BF0022F6E71A461946C3 +:101910002046FFF785FC042384F82C3038BD204690 +:10192000BDE83840FFF74CBF70B5002500F1480610 +:1019300056F835402CB10135042DF9D14FF0FF3068 +:1019400070BD00EBC50080F84C1080F84D2083641A +:101950002046F5E770B5002500F130060446056421 +:1019600001222946FFF774FC082332462946204607 +:10197000FFF75EFC082804D02046BDE87040FFF762 +:101980001FBFE28E2AB931462046BDE87040FFF7FE +:1019900098BF94F93030002BF5DBA38A9342EBD348 +:1019A0002369A3632368A587DB79934234BF0523AA +:1019B000062384F82C302A4629462046BDE870408C +:1019C000FFF746BC10B590F82C30062B044612D019 +:1019D000072B27D0052B21D1FFF7FCFE002809DBC0 +:1019E000A28FE38E9B1A2268D279934202DC0623EF +:1019F00084F82C3010BDFFF7EDFE0028FADB04F16F +:101A000030012046FFF72DFF38B100231A46194652 +:101A10002046FFF705FC0423EAE72046BDE8104016 +:101A2000FFF7CEBE00231A461946FFF701FC00233C +:101A300084F82C30236C1BB104F130012046984708 +:101A400000232364D6E710B590F82C30032B04460E +:101A500007D0042B0ED0022B23D1BDE81040FFF796 +:101A6000D7BE072380F82C300022BDE81040114675 +:101A7000FFF7EEBB036C13B100F13001984794F807 +:101A8000303053B994F83130052B06D1618ED4F83B +:101A9000DC30C9B25B6820469847002384F82C30BC +:101AA00010BDBDE81040FFF78BBE000008B540F246 +:101AB0008760FFF740FB254A136843F0400313603B +:101AC000234B19461A68002AFCDA1A6842F0010210 +:101AD0001A600B68DB07FCD41E4B1F481B68B3F56C +:101AE000005F1E4B1A682CBF42F4041242F410220D +:101AF0001A601B4A136823F002031360A2F5FF6209 +:101B0000136843F0804343F470531360154B022273 +:101B10001A60154A136843F003031360134B002245 +:101B20001A60134A80231360A0F8E03052F81C3C7E +:101B300043F0010342F81C3C0E4B0F4A1A600F227F +:101B4000C3F804280122C3F8F82708BD0C00005090 +:101B5000100000503C000050EC06002038000050FF +:101B6000040800501400005000080050000E0050FF +:101B7000240000501800005010280480FEE7704731 +:101B8000194B1A4A1A498B421AD31A4A0021934216 +:101B90001BD3194A194C1368194D43F40073136091 +:101BA000536F43F470035367AC4211D3154C164D79 +:101BB000AC4211D3FFF726F8144C154DAC420FD3AD +:101BC00052F8040B43F8040BDDE743F8041BDEE78F +:101BD00054F8043B9847E7E754F8043B9847E7E795 +:101BE00054F8043B9847E9E700000020EC25000882 +:101BF00058000020F807002014ED00E0EC25000854 +:101C0000EC250008EC250008EC250008EC25000870 +:101C1000EC250008024B20F07F401860704700BFA1 +:101C200014E000E0044A136800F0040023F0040309 +:101C300003431360704700BF10E000E0024A1368DE +:101C400043F002031360704710E000E0024A13689B +:101C500023F002031360704710E000E0024A1368AB +:101C600043F001031360704710E000E0024A13687C +:101C700023F001031360704710E000E0054B4209B8 +:101C800003EB820300F01F00012202FA00F018604B +:101C9000704700BF00E100E0054B420903EB8203FF +:101CA00000F01F00012202FA00F01860704700BF28 +:101CB00080E100E028B9064A136843F480431360CA +:101CC00070470128FCD1024A136803F48043F6E709 +:101CD00000700040D0F8DC30DA6AD2F8003823F423 +:101CE000FE6343EA0111C2F8001870472DE9F0477E +:101CF000D0F8DCE0089FDEF82C5011F07F0603F0EE +:101D00007F043ED13F2B31D9C5F80069DEF82C2085 +:101D1000C2F81049DEF82C10D1F8002942F0084230 +:101D2000C1F80029DEF82C2044F0005444F40024CB +:101D3000C0F8E840C2F8104BDEF82C10D1F8002BA8 +:101D400042F00842C1F8002BBEF83220DEF82C1019 +:101D50009B0842EA03428A62B0F8E02013449BB237 +:101D6000A0F8E030A0F8E230BDE8F0871F2B03D9DF +:101D70000122C5F80029C9E70F2B8CBF02220322DC +:101D8000F7E709064FEA461C4FEA824226D5B0F82B +:101D9000E090990806F1400849EA014A45F828A070 +:101DA0004944A0F8E010DEF82C1001F5116142EA78 +:101DB000865241F80C400CF51061DEF82C401343BC +:101DC0000D5943F0184343F400432B430B51002FAC +:101DD000CAD00C2303FB06008766C5E706F13A016B +:101DE00005F5316544F4002440F8214045F80C40E5 +:101DF0000CF53061DEF82C4013430D5943F01443C9 +:101E000043F400432B430B51002FADD00C2303FBB5 +:101E10000600C766A8E7B0F8E230D0F8DC2010B5BD +:101E2000A0F8E0304FF43263D16A58580028BEBFA2 +:101E3000585840F080405850A3F50070D16A44587B +:101E4000002CB8BF445803F12003BCBF44F08044C9 +:101E50004450B3F5386FE7D1D36A4FF486621A6104 +:101E600010BD10B5D0F8DC40E06AF1B9D0F8003907 +:101E70005AB143F40013C0F800395831E26A4901FD +:101E80008B5843F400138B501AE023F40013C0F86E +:101E900000395831E26A49018B5823F400138B5002 +:101EA000E26A8B5843F08053EDE70B0613D501F03F +:101EB0007F0348335B0122B11A5842F400121A50D2 +:101EC00010BD1A5822F400121A50E16A5A5842F012 +:101ED00080525A50F4E7002ACFD1DAE70A06D0F848 +:101EE000DC3046BF01F07F0148315831DB6A4901DF +:101EF000C858C0F3405070470B060CD443185831F3 +:101F000083F8E420D0F8DC304901DB6A22B1CA58FA +:101F100042F00062CA507047CA5842F08062F9E746 +:101F2000F0B5D0F8DC60F06A01F07F04610100F5E3 +:101F3000116045582D0316D443F40027475001F58E +:101F40001061F76AC85940F004400134C8511D4679 +:101F50002403002D01DC1846F0BDF16A52F8040B91 +:101F60006050043DF5E70023F5E737B5B0F8F850C9 +:101F70009D4228BF1D46014614462B46032B1FDCFD +:101F8000A8086FF0030303FB005302EB8000A3B12A +:101F9000D1F8DC20B1F8F840D26A032C02F5805267 +:101FA00088BF043C126801928CBFA4B20024A1F83F +:101FB000F8401A4601A900F003F9284603B030BDE5 +:101FC000D1F8DC00C06A00F58050043B006844F89A +:101FD000040BB1F8F8000438A1F8F800CEE7D0F807 +:101FE000DC30DA6A2DE9F047556915F400560446ED +:101FF00009D05B8E4FF400515161BDE8F047A0F865 +:10200000E030FFF7F5B800F168084FF00C094FF029 +:10201000010AD4F8DC30DB6A770103F60813DB59D8 +:10202000DA070ED509FB06F358F8033013B1F1B205 +:1020300020469847D4F8DC30DB6A03F6081343F8EF +:1020400007A00136042EE4D1EB0648D5D4F8DC0015 +:10205000C36A1A6A02F4F016B6F5C02F02F00F0137 +:1020600002D0B6F5002F18D101F13A054A0103F567 +:10207000316354F825509D502144C56A91F8E4100D +:1020800002F5306300295A5914BF4FF008414FF050 +:1020900004410A435A51BDE8F087B6F5802F73D04A +:1020A000B6F5402FF7D14E0103F51167BF593F0335 +:1020B00040D4022001EB410303441A33C2F30A1255 +:1020C00054F82330A4F8F8200BB120469847B4F810 +:1020D000F8100023994259DC0023A4F8F8302A05AF +:1020E00008D5236A03B19847D4F8DC30DB6A4FF493 +:1020F00000625A61002D08DA636A03B19847D4F888 +:10210000DC30DB6A4FF000425A612B0707D5A36A27 +:1021100003B19847D4F8DC30DB6A08225A61D4F85E +:10212000DC30A26ADB6A002A38D09A6942F00802E1 +:102130009A61B0E706F5106C53F80C7047F0006731 +:1021400043F80C70C76A07F608133344D3F800E06D +:102150001EF0400FFAD05CF807309B0DD7F810E066 +:10216000BEF1000FFADA9B0103F4707343F0200311 +:102170003B61C36A03F5116300279F51C36A1033A3 +:1021800018688006FCD494E7012093E7D4F8DC209B +:10219000D26A02F58052043312689BE79A6922F0F2 +:1021A0000802C5E7D0F8DC30DB6AD3F8042821B197 +:1021B00042F00202C3F80428704722F00202F9E755 +:1021C000844641EA000313F003036DD1403A41D342 +:1021D00051F8043B40F8043B51F8043B40F8043B01 +:1021E00051F8043B40F8043B51F8043B40F8043BF1 +:1021F00051F8043B40F8043B51F8043B40F8043BE1 +:1022000051F8043B40F8043B51F8043B40F8043BD0 +:1022100051F8043B40F8043B51F8043B40F8043BC0 +:1022200051F8043B40F8043B51F8043B40F8043BB0 +:1022300051F8043B40F8043B51F8043B40F8043BA0 +:1022400051F8043B40F8043B51F8043B40F8043B90 +:10225000403ABDD2303211D351F8043B40F8043B30 +:1022600051F8043B40F8043B51F8043B40F8043B70 +:1022700051F8043B40F8043B103AEDD20C3205D340 +:1022800051F8043B40F8043B043AF9D2043208D038 +:10229000D2071CBF11F8013B00F8013B01D30B88AA +:1022A00003806046704700BF082A13D38B078DD088 +:1022B00010F003038AD0C3F10403D21ADB071CBF5A +:1022C00011F8013B00F8013B80D331F8023B20F8C4 +:1022D000023B7BE7043AD9D3013A11F8013B00F8FD +:1022E000013BF9D20B7803704B7843708B78837085 +:1022F0006046704700000000000000000000000081 +:1023000090F800F06DE9024520F007016FF0000C35 +:1023100010F0070491F820F040F049804FF00004DD +:102320006FF00700D1E9002391F840F000F10800B8 +:1023300082FA4CF2A4FA8CF283FA4CF3A2FA8CF3F0 +:102340004BBBD1E9022382FA4CF200F10800A4FA57 +:102350008CF283FA4CF3A2FA8CF3E3B9D1E90423AB +:1023600082FA4CF200F10800A4FA8CF283FA4CF3E2 +:10237000A2FA8CF37BB9D1E9062301F1200182FA9C +:102380004CF200F10800A4FA8CF283FA4CF3A2FAA2 +:102390008CF3002BC6D0002A04BF04301A4612BAB0 +:1023A000B2FA82F2FDE8024500EBD2007047D1E9B3 +:1023B000002304F00305C4F100004FEAC50514F042 +:1023C000040F91F840F00CFA05F562EA05021CBF13 +:1023D00063EA050362464FF00004A9E70500000028 +:1023E000466C79776F6F0050583420474E46343032 +:1023F0003500300000C201000000080902000002A0 +:10240000010080FA1C2400081201000202000040B2 +:10241000AC261600010101020301000000000000CB +:10242000010000000000000051240008000000002E +:1024300001000000000000003C2400080904010025 +:10244000020A0000007924000800000000000000DB +:10245000000904000001020201009724000866241C +:1024600000081300000005240010010524010001EC +:1024700004240200052406000107050102400001B2 +:10248000000000000000000007058202400001007B +:1024900000000000000000070583031000FF00009B +:1024A00000000000000053544D3332463F3F3F00D0 +:1024B00053544D3332463430780053544D33324602 +:1024C0003432780053544D33324634343658580041 +:1024D0000100000000400000020000000040000079 +:1024E00003000000004000000400000000000100A4 +:1024F00005000000000002000600000000000200CD +:1025000007000000000002000800000000000200B8 +:1025100009000000000002000A00000000000200A4 +:102520000B0000000000020010000000004000004E +:1025300011000000004000001200000000400000F8 +:102540001300000000400000140000000000010023 +:10255000150000000000020016000000000002004C +:102560001700000000000200180000000000020038 +:1025700019000000000002001A0000000000020024 +:102580001B000000000002000800500102070000CC +:1025900005060000000504000000000080DE800247 +:1025A00000BD0105012033000010410001105A0058 +:1025B0000310590007103100AD1A0008D51C00089F +:1025C000ED1C0008171E0008631E0008F91E000815 +:1025D000DD1E0008211F00086B1F0008DF1F000818 +:0C25E000A5210008000000500100800050 +:1025EC00E0230008E7230008F22300082A0000007B +:1025FC000000000000000000A80000000000000027 +:10260C00A62400083F00000013040000B0240008BA +:10261C003F00000019040000BA2400083F0000002D +:10262C0021040000C42400083F0000000024F40032 +:08263C000024F4000024F40066 +:0400000508000000EF +:00000001FF diff --git a/boards/flywoo/gn-f405/default.px4board b/boards/flywoo/gn-f405/default.px4board new file mode 100644 index 00000000000..76fdbc1dc83 --- /dev/null +++ b/boards/flywoo/gn-f405/default.px4board @@ -0,0 +1,46 @@ +CONFIG_BOARD_TOOLCHAIN="arm-none-eabi" +CONFIG_BOARD_ARCHITECTURE="cortex-m4" +CONFIG_BOARD_CONSTRAINED_FLASH=y +CONFIG_BOARD_NO_HELP=y +CONFIG_BOARD_CONSTRAINED_MEMORY=y +CONFIG_BOARD_SERIAL_URT6="/dev/ttyS2" +CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS1" +CONFIG_DRIVERS_ADC_BOARD_ADC=y +CONFIG_DRIVERS_BAROMETER_BMP280=y +CONFIG_DRIVERS_DSHOT=y +CONFIG_DRIVERS_GPS=y +CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602=n +CONFIG_DRIVERS_IMU_INVENSENSE_MPU6000=y +CONFIG_DRIVERS_MAGNETOMETER_QMC5883=y +CONFIG_DRIVERS_OSD=y +CONFIG_DRIVERS_PWM_OUT=y +CONFIG_DRIVERS_RC_INPUT=y +CONFIG_DRIVERS_TELEMETRY_FRSKY_TELEMETRY=n +CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q=n +CONFIG_MODULES_EKF2=y +CONFIG_MODULES_BATTERY_STATUS=y +CONFIG_MODULES_COMMANDER=y +CONFIG_MODULES_CONTROL_ALLOCATOR=y +CONFIG_MODULES_DATAMAN=y +CONFIG_MODULES_FLIGHT_MODE_MANAGER=y +CONFIG_MODULES_LAND_DETECTOR=y +CONFIG_MODULES_LOAD_MON=y +CONFIG_MODULES_MANUAL_CONTROL=y +CONFIG_MODULES_MAVLINK=y +CONFIG_MODULES_MC_ATT_CONTROL=y +CONFIG_MODULES_MC_POS_CONTROL=y +CONFIG_MODULES_MC_RATE_CONTROL=y +CONFIG_MODULES_NAVIGATOR=y +CONFIG_MODULES_RC_UPDATE=y +CONFIG_MODULES_SENSORS=y +CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y +CONFIG_SYSTEMCMDS_TOP=y +CONFIG_SYSTEMCMDS_DMESG=y +CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y +CONFIG_SYSTEMCMDS_UORB=y +CONFIG_SYSTEMCMDS_MIXER=y +CONFIG_SYSTEMCMDS_PARAM=y +CONFIG_SYSTEMCMDS_I2CDETECT=y +CONFIG_SYSTEMCMDS_PWM=y +CONFIG_SYSTEMCMDS_REBOOT=y +CONFIG_SYSTEMCMDS_VER=y \ No newline at end of file diff --git a/boards/flywoo/gn-f405/firmware.prototype b/boards/flywoo/gn-f405/firmware.prototype new file mode 100644 index 00000000000..277de413514 --- /dev/null +++ b/boards/flywoo/gn-f405/firmware.prototype @@ -0,0 +1,13 @@ +{ + "board_id": 42, + "magic": "FLYWOOGNF405", + "description": "Firmware for the FLYWOO GNF405 board", + "image": "", + "build_time": 0, + "summary": "flywoo/GNF405", + "version": "0.1", + "image_size": 0, + "image_maxsize": 1032192, + "git_identity": "", + "board_revision": 0 +} diff --git a/boards/flywoo/gn-f405/init/rc.board_defaults b/boards/flywoo/gn-f405/init/rc.board_defaults new file mode 100644 index 00000000000..d5ae67dc8d3 --- /dev/null +++ b/boards/flywoo/gn-f405/init/rc.board_defaults @@ -0,0 +1,35 @@ +#!/bin/sh +# +# Flywoo GNF405 board specific defaults +#------------------------------------------------------------------------------ + +# default airframe quadrotor +param set-default SYS_AUTOSTART 4001 + +# system_power unavailable +param set-default CBRK_SUPPLY_CHK 894281 + +# Disable safety switch by default +param set-default CBRK_IO_SAFETY 22027 + +# EKF2 can be enabled when baro is avaialble and EKF2_MAG_TYPE is set to 5 +param set-default SYS_MC_EST_GROUP 2 +param set-default EKF2_MAG_TYPE 5 +param set-default SENS_BOARD_ROT 6 + +param set-default ATT_ACC_COMP 0 +param set-default ATT_W_ACC 0.4000 +param set-default ATT_W_GYRO_BIAS 0.0000 + +param set-default SYS_HAS_MAG 0 + +# GPS is on Uart6 +param set-default GPS_1_CONFIG 6 + +# Telemetry (onboard) is on Uart4 +param set-default MAV_0_CONFIG 102 +param set-default MAV_0_MODE 2 + +# Set serial rates +param set-default SER_TEL2_BAUD 500000 +param set-default SER_URT6_BAUD 9600 diff --git a/boards/flywoo/gn-f405/init/rc.board_extras b/boards/flywoo/gn-f405/init/rc.board_extras new file mode 100644 index 00000000000..159a0008e9d --- /dev/null +++ b/boards/flywoo/gn-f405/init/rc.board_extras @@ -0,0 +1,11 @@ +#!/bin/sh +# +# Flywoo GNF405 specific board extras init +#------------------------------------------------------------------------------ + +if ! param compare OSD_ATXXXX_CFG 0 +then + atxxxx start -s +fi + + diff --git a/boards/flywoo/gn-f405/init/rc.board_sensors b/boards/flywoo/gn-f405/init/rc.board_sensors new file mode 100644 index 00000000000..989dd2e6041 --- /dev/null +++ b/boards/flywoo/gn-f405/init/rc.board_sensors @@ -0,0 +1,11 @@ +#!/bin/sh +# +# Flywoo GNF405 specific board sensors init +#------------------------------------------------------------------------------ + +board_adc start + +mpu6000 -R 6 -s start + +# Start Baro +bmp280 -X start diff --git a/boards/flywoo/gn-f405/nuttx-config/include/board.h b/boards/flywoo/gn-f405/nuttx-config/include/board.h new file mode 100644 index 00000000000..2f9eb5aad44 --- /dev/null +++ b/boards/flywoo/gn-f405/nuttx-config/include/board.h @@ -0,0 +1,327 @@ +/************************************************************************************ + * nuttx-configs/flywoo_gn-f405/include/board.h + * include/arch/board/board.h + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Copyright (c) 2018 PX4 Development Team. All rights reserved. + * Author: Nathan Tsoi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ************************************************************************************/ + +#ifndef __CONFIG_GNF405S_INCLUDE_BOARD_H +#define __CONFIG_GNF405S_INCLUDE_BOARD_H + +/************************************************************************************ + * Included Files + ************************************************************************************/ +#include "board_dma_map.h" + +#include + +#ifndef __ASSEMBLY__ +# include +#endif + +#include "stm32_rcc.h" +#include "stm32_sdio.h" +#include "stm32.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/* Clocking *************************************************************************/ +/* The gnf405s board features a single 8MHz crystal. Space is provided + * for a 32kHz RTC backup crystal, but it is not stuffed. + * + * This is the canonical configuration: + * System Clock source : PLL (HSE) + * SYSCLK(Hz) : 168000000 Determined by PLL configuration + * HCLK(Hz) : 168000000 (STM32_RCC_CFGR_HPRE) + * AHB Prescaler : 1 (STM32_RCC_CFGR_HPRE) + * APB1 Prescaler : 4 (STM32_RCC_CFGR_PPRE1) + * APB2 Prescaler : 2 (STM32_RCC_CFGR_PPRE2) + * HSE Frequency(Hz) : 8000000 (STM32_BOARD_XTAL) + * PLLM : 8 (STM32_PLLCFG_PLLM) + * PLLN : 336 (STM32_PLLCFG_PLLN) + * PLLP : 2 (STM32_PLLCFG_PLLP) + * PLLQ : 7 (STM32_PLLCFG_PLLQ) + * Main regulator output voltage : Scale1 mode Needed for high speed SYSCLK + * Flash Latency(WS) : 5 + * Prefetch Buffer : OFF + * Instruction cache : ON + * Data cache : ON + * Require 48MHz for USB OTG FS, : Enabled + * SDIO and RNG clock + */ + +/* HSI - 16 MHz RC factory-trimmed + * LSI - 32 KHz RC + * HSE - On-board crystal frequency is 8MHz + * LSE - 32.768 kHz + */ + +#define STM32_BOARD_XTAL 8000000ul + +#define STM32_HSI_FREQUENCY 16000000ul +#define STM32_LSI_FREQUENCY 32000 +#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL +#define STM32_LSE_FREQUENCY 32768 + +/* Main PLL Configuration. + * + * PLL source is HSE + * PLL_VCO = (STM32_HSE_FREQUENCY / PLLM) * PLLN + * = (8,000,000 / 8) * 336 + * = 336,000,000 + * SYSCLK = PLL_VCO / PLLP + * = 336,000,000 / 2 = 168,000,000 + * USB OTG FS, SDIO and RNG Clock + * = PLL_VCO / PLLQ + * = 48,000,000 + */ + +#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(8) +#define STM32_PLLCFG_PLLN RCC_PLLCFG_PLLN(336) +#define STM32_PLLCFG_PLLP RCC_PLLCFG_PLLP_2 +#define STM32_PLLCFG_PLLQ RCC_PLLCFG_PLLQ(7) + +#define STM32_SYSCLK_FREQUENCY 168000000ul + +/* AHB clock (HCLK) is SYSCLK (168MHz) */ + +#define STM32_RCC_CFGR_HPRE RCC_CFGR_HPRE_SYSCLK /* HCLK = SYSCLK / 1 */ +#define STM32_HCLK_FREQUENCY STM32_SYSCLK_FREQUENCY +#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */ + +/* APB1 clock (PCLK1) is HCLK/4 (42MHz) */ + +#define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLKd4 /* PCLK1 = HCLK / 4 */ +#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/4) + +/* Timers driven from APB1 will be twice PCLK1 */ + +#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY) + +/* APB2 clock (PCLK2) is HCLK/2 (84MHz) */ + +#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */ +#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* Timers driven from APB2 will be twice PCLK2 */ + +#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM9_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM10_CLKIN (2*STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM11_CLKIN (2*STM32_PCLK2_FREQUENCY) + +/* Timer Frequencies, if APBx is set to 1, frequency is same to APBx + * otherwise frequency is 2xAPBx. + * Note: TIM1,8-11 are on APB2, others on APB1 + */ + +#define BOARD_TIM1_FREQUENCY STM32_APB2_TIM1_CLKIN +#define BOARD_TIM2_FREQUENCY STM32_APB1_TIM2_CLKIN +#define BOARD_TIM3_FREQUENCY STM32_APB1_TIM3_CLKIN +#define BOARD_TIM4_FREQUENCY STM32_APB1_TIM4_CLKIN +#define BOARD_TIM5_FREQUENCY STM32_APB1_TIM5_CLKIN +#define BOARD_TIM6_FREQUENCY STM32_APB1_TIM6_CLKIN +#define BOARD_TIM7_FREQUENCY STM32_APB1_TIM7_CLKIN +#define BOARD_TIM8_FREQUENCY STM32_APB2_TIM8_CLKIN +#define BOARD_TIM9_FREQUENCY STM32_APB2_TIM9_CLKIN +#define BOARD_TIM10_FREQUENCY STM32_APB2_TIM10_CLKIN +#define BOARD_TIM11_FREQUENCY STM32_APB2_TIM11_CLKIN +#define BOARD_TIM12_FREQUENCY STM32_APB1_TIM12_CLKIN +#define BOARD_TIM13_FREQUENCY STM32_APB1_TIM13_CLKIN +#define BOARD_TIM14_FREQUENCY STM32_APB1_TIM14_CLKIN + +/* SDIO dividers. Note that slower clocking is required when DMA is disabled + * in order to avoid RX overrun/TX underrun errors due to delayed responses + * to service FIFOs in interrupt driven mode. These values have not been + * tuned!!! + * + * SDIOCLK=48MHz, SDIO_CK=SDIOCLK/(118+2)=400 KHz + */ + +#define SDIO_INIT_CLKDIV (118 << SDIO_CLKCR_CLKDIV_SHIFT) + +/* DMA ON: SDIOCLK=48MHz, SDIO_CK=SDIOCLK/(1+2)=16 MHz + * DMA OFF: SDIOCLK=48MHz, SDIO_CK=SDIOCLK/(2+2)=12 MHz + */ + +#ifdef CONFIG_STM32_SDIO_DMA +# define SDIO_MMCXFR_CLKDIV (1 << SDIO_CLKCR_CLKDIV_SHIFT) +#else +# define SDIO_MMCXFR_CLKDIV (2 << SDIO_CLKCR_CLKDIV_SHIFT) +#endif + +/* DMA ON: SDIOCLK=48MHz, SDIO_CK=SDIOCLK/(1+2)=16 MHz + * DMA OFF: SDIOCLK=48MHz, SDIO_CK=SDIOCLK/(2+2)=12 MHz + */ + +#ifdef CONFIG_STM32_SDIO_DMA +# define SDIO_SDXFR_CLKDIV (1 << SDIO_CLKCR_CLKDIV_SHIFT) +#else +# define SDIO_SDXFR_CLKDIV (2 << SDIO_CLKCR_CLKDIV_SHIFT) +#endif + +/* LED definitions ******************************************************************/ +/* If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any + * way. The following definitions are used to access individual LEDs. + */ + +/* LED index values for use with stm32_setled() */ + +#define BOARD_LED1 0 +//#define BOARD_LED2 1 +#define BOARD_NLEDS 1 + +#define BOARD_LED_BLUE BOARD_LED1 +//#define BOARD_LED_RED BOARD_LED2 + +/* LED bits for use with stm32_setleds() */ + +#define BOARD_LED1_BIT (1 << BOARD_LED1) +#define BOARD_LED2_BIT (1 << BOARD_LED2) + +/* If CONFIG_ARCH_LEDs is defined, then NuttX will control the 2 LEDs on board the + * gnf405s. The following definitions describe how NuttX controls the LEDs: + */ + +#define LED_STARTED 0 /* LED1 */ +#define LED_HEAPALLOCATE 1 /* LED2 */ +#define LED_IRQSENABLED 2 /* LED1 */ +#define LED_STACKCREATED 3 /* LED1 + LED2 */ +#define LED_INIRQ 4 /* LED1 */ +#define LED_SIGNAL 5 /* LED2 */ +#define LED_ASSERTION 6 /* LED1 + LED2 */ +#define LED_PANIC 7 /* LED1 + LED2 */ + +/* Alternate function pin selections ************************************************/ + +/* UART1: + * + * PA10 (RX) and PA9 (TX) are broken out on J5 + */ + +#define GPIO_USART1_RX GPIO_USART1_RX_1 +#define GPIO_USART1_TX GPIO_USART1_TX_2 + +/* USART3: + * + * PC10 (TX) and PC11 (RX) are broken out on J4 + * + * However, this port is shared with SPI3 which contains the BMP280 and MAX7456 + * + * The Silkscreen pin labeled SCL is TX + * MISO is RX + */ +//#define GPIO_USART3_RX GPIO_USART3_RX_2 +//#define GPIO_USART3_TX GPIO_USART3_TX_2 + +/* UART4: + * + * PA0 (TX) -- Labeled RSSI on the silkscreen is only broken out on a test pad + * on the pro version. It's on a 2.54mm header on other versions + * PA1 (RX) -- Motor 5 out + */ +#define GPIO_UART4_RX GPIO_UART4_RX_1 +#define GPIO_UART4_TX GPIO_UART4_TX_1 + +/* UART6: + * + * PC6 (TX) and PC7 (RX) are broken out on J10 + */ + +#define GPIO_USART6_RX GPIO_USART6_RX_1 +#define GPIO_USART6_TX GPIO_USART6_TX_1 + +/* SPI1: + * MPU6000 + * CS: PA4 -- configured in board_config.h + * CLK: PA5 + * MISO: PA6 + * MOSI: PA7 + */ + +#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1 +#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 +#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 + +/* SPI2: + * SD Card + * CS: PB12 -- configured in board_config.h + * CLK: PB13 + * MISO: PB14 + * MOSI: PB15 + */ + +#define GPIO_SPI2_SCK GPIO_SPI2_SCK_3 +#define GPIO_SPI2_MISO GPIO_SPI2_MISO_3 +#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_3 + +/* SPI3: + * BMP280 + * CS: PB3 -- configured in board_config.h + * CLK: PC10 + * MISO: PC11 + * MOSI: PC12 + */ + +#define GPIO_SPI3_SCK GPIO_SPI3_SCK_2 +#define GPIO_SPI3_MISO GPIO_SPI3_MISO_2 +#define GPIO_SPI3_MOSI GPIO_SPI3_MOSI_2 + +/* + * I2C (external) + * + * SCL: PB10 + * SDA: PB11 + * + * TODO: + * The optional _GPIO configurations allow the I2C driver to manually + * reset the bus to clear stuck slaves. They match the pin configuration, + * but are normally-high GPIOs. + */ +#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2 +#define GPIO_I2C1_SDA GPIO_I2C1_SDA_2 + +#endif /* __CONFIG_GNF405S_INCLUDE_BOARD_H */ diff --git a/boards/flywoo/gn-f405/nuttx-config/include/board_dma_map.h b/boards/flywoo/gn-f405/nuttx-config/include/board_dma_map.h new file mode 100644 index 00000000000..d54cbdfecb4 --- /dev/null +++ b/boards/flywoo/gn-f405/nuttx-config/include/board_dma_map.h @@ -0,0 +1,94 @@ +/**************************************************************************** + * + * Copyright (c) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#pragma once + +/* +| DMA1 | Stream 0 | Stream 1 | Stream 2 | Stream 3 | Stream 4 | Stream 5 | Stream 6 | Stream 7 | +|------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------| +| Channel 0 | SPI3_RX_1 | - | SPI3_RX_2 | SPI2_RX | SPI2_TX | SPI3_TX_1 | - | SPI3_TX_2 | +| Channel 1 | I2C1_RX | - | TIM7_UP_1 | - | TIM7_UP_2 | I2C1_RX_1 | I2C1_TX | I2C1_TX_1 | +| Channel 2 | TIM4_CH1 | - | I2C4_RX | TIM4_CH2 | - | I2C4_RX | TIM4_UP | TIM4_CH3 | +| Channel 3 | - | TIM2_UP_1 | I2C3_RX_1 | I2C2_EXT_RX | I2C3_TX | TIM2_CH1 | TIM2_CH2 | TIM2_UP_2 | +| | | TIM2_CH3 | | | | | TIM2_CH4_1 | TIM2_CH4_2 | +| Channel 4 | UART5_RX | USART3_RX | UART4_RX | USART3_TX_1 | UART4_TX | USART2_RX | USART2_TX | UART5_TX | +| Channel 5 | UART8_TX | UART7_TX | TIM3_CH4 | UART7_RX | TIM3_CH1 | TIM3_CH2 | UART8_RX | TIM3_CH3 | +| | | | TIM3_UP | | TIM3_TRIG | | | | +| Channel 6 | TIM5_CH3 | TIM5_CH4_1 | TIM5_CH1 | TIM5_CH4_2 | TIM5_CH2 | - | TIM5_UP_2 | - | +| | TIM5_UP_1 | TIM5_TRIG_1 | | TIM5_TRIG_2 | | | | | +| Channel 7 | - | TIM6_UP | I2C2_RX | I2C2_RX_1 | USART3_TX_2 | DAC1 | DAC2 | I2C2_TX | +| | | | | | | | | | +| Usage | | TIM2_UP_1 | TIM3_UP | SPI2_RX | SPI2_TX | | | | + + +| DMA2 | Stream 0 | Stream 1 | Stream 2 | Stream 3 | Stream 4 | Stream 5 | Stream 6 | Stream 7 | +|------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------|------------------| +| Channel 0 | ADC1_1 | SAI1_A | TIM8_CH1_1 | SAI1_A_1 | ADC1_2 | SAI1_B_1 | TIM1_CH1_1 | - | +| | | | TIM8_CH2_1 | | | | TIM1_CH2_1 | | +| | | | TIM8_CH3_1 | | | | TIM1_CH3_1 | | +| Channel 1 | - | DCMI_1 | ADC2_1 | ADC2_2 | SAI1_B | SPI6_TX | SPI6_RX | DCMI_2 | +| Channel 2 | ADC3_1 | ADC3_2 | - | SPI5_RX_1 | SPI5_TX_1 | CRYP_OUT | CRYP_IN | HASH_IN | +| Channel 3 | SPI1_RX_1 | - | SPI1_RX_2 | SPI1_TX_1 | - | SPI1_TX_2 | - | QUADSPI | +| Channel 4 | SPI4_RX_1 | SPI4_TX_1 | USART1_RX_1 | SDIO | - | USART1_RX_2 | SDIO | USART1_TX | +| Channel 5 | - | USART6_RX_1 | USART6_RX_2 | SPI4_RX_2 | SPI4_TX_2 | - | USART6_TX_1 | USART6_TX_2 | +| Channel 6 | TIM1_TRIG_1 | TIM1_CH1_2 | TIM1_CH2_2 | TIM1_CH1 | TIM1_CH4 | TIM1_UP | TIM1_CH3_2 | - | +| | | | | | TIM1_TRIG_2 | | | | +| | | | | | TIM1_COM | | | | +| Channel 7 | - | TIM8_UP | TIM8_CH1_2 | TIM8_CH2_2 | TIM8_CH3_2 | SPI5_RX_2 | SPI5_TX_2 | TIM8_CH4 | +| | | | | | | | | TIM8_TRIG | +| | | | | | | | | TIM8_COM | +| | | | | | | | | | +| Usage | SPI1_RX_1 | USART6_RX_1 | USART1_RX_1 | SPI1_TX_1 | | | SDIO | | + */ + +// DMA1 Channel/Stream Selections +//--------------------------------------------//---------------------------//---------------- +// AVAILABLE // DMA2, Stream 0 +// DMAMAP_TIM2_UP // DMA1, Stream 1, Channel 3 (DSHOT) +// DMAMAP_TIM3_UP // DMA1, Stream 2, Channel 5 (DSHOT) +#define DMACHAN_SPI2_RX DMAMAP_SPI2_RX // DMA1, Stream 3, Channel 0 (SPI2 RX) +#define DMACHAN_SPI2_TX DMAMAP_SPI2_TX // DMA1, Stream 4, Channel 0 (SPI2 TX) +// AVAILABLE // DMA2, Stream 5 +// AVAILABLE // DMA2, Stream 6 +// AVAILABLE // DMA2, Stream 7 + +// DMA2 Channel/Stream Selections +//--------------------------------------------//---------------------------//---------------- +#define DMACHAN_SPI1_RX DMAMAP_SPI1_RX_1 // DMA2, Stream 0, Channel 3 (SPI1 RX) +#define DMAMAP_USART6_RX DMAMAP_USART6_RX_1 // DMA2, Stream 1, Channel 4 +#define DMAMAP_USART1_RX DMAMAP_USART1_RX_1 // DMA2, Stream 2, Channel 4 +#define DMACHAN_SPI1_TX DMAMAP_SPI1_TX_1 // DMA2, Stream 3, Channel 3 (SPI1 TX) +// AVAILABLE // DMA2, Stream 4 +// AVAILABLE // DMA2, Stream 5 +#define DMAMAP_SDIO DMAMAP_SDIO_2 // DMA2, Stream 6, Channel 4 +// AVAILABLE // DMA2, Stream 7 diff --git a/boards/flywoo/gn-f405/nuttx-config/nsh/defconfig b/boards/flywoo/gn-f405/nuttx-config/nsh/defconfig new file mode 100644 index 00000000000..ba1124e78e5 --- /dev/null +++ b/boards/flywoo/gn-f405/nuttx-config/nsh/defconfig @@ -0,0 +1,187 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DEV_CONSOLE is not set +# CONFIG_MMCSD_HAVE_CARDDETECT is not set +# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set +# CONFIG_MMCSD_MMCSUPPORT is not set +# CONFIG_SPI_CALLBACK is not set +# CONFIG_STM32_CCMEXCLUDE is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD_CUSTOM=y +CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/flywoo/gn-f405/nuttx-config" +CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y +CONFIG_ARCH_BOARD_CUSTOM_NAME="px4" +CONFIG_ARCH_CHIP="stm32" +CONFIG_ARCH_CHIP_STM32=y +CONFIG_ARCH_CHIP_STM32F405RG=y +CONFIG_ARCH_INTERRUPTSTACK=512 +CONFIG_ARMV7M_MEMCPY=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BOARD_CRASHDUMP=y +CONFIG_BOARD_CUSTOM_LEDS=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_RESET_ON_ASSERT=2 +CONFIG_BUILTIN=y +CONFIG_C99_BOOL8=y +CONFIG_CDCACM=y +CONFIG_CDCACM_IFLOWCONTROL=y +CONFIG_CDCACM_PRODUCTID=0x0001 +CONFIG_CDCACM_PRODUCTSTR="PX4 GNF405" +CONFIG_CDCACM_RXBUFSIZE=600 +CONFIG_CDCACM_TXBUFSIZE=2000 +CONFIG_CDCACM_VENDORID=0x26ac +CONFIG_CDCACM_VENDORSTR="Flywoo" +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_FIFO_SIZE=0 +CONFIG_DEV_PIPE_SIZE=70 +CONFIG_DISABLE_MQUEUE=y +CONFIG_DISABLE_POSIX_TIMERS=y +CONFIG_FAT_DMAMEMORY=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FAT_LFN_ALIAS_HASH=y +CONFIG_FDCLONE_STDIO=y +CONFIG_FS_BINFS=y +CONFIG_FS_CROMFS=y +CONFIG_FS_FAT=y +CONFIG_FS_FATTIME=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_ROMFS=y +CONFIG_GRAN=y +CONFIG_GRAN_INTR=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_I2C=y +CONFIG_I2C_RESET=y +CONFIG_IDLETHREAD_STACKSIZE=750 +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_MMCSD=y +CONFIG_MM_REGIONS=2 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CROMFSETC=y +CONFIG_NSH_DISABLE_BASENAME=y +CONFIG_NSH_DISABLE_DD=y +CONFIG_NSH_DISABLE_DIRNAME=y +CONFIG_NSH_DISABLE_HEXDUMP=y +CONFIG_NSH_DISABLE_IFCONFIG=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_LOSETUP=y +CONFIG_NSH_DISABLE_MKFIFO=y +CONFIG_NSH_DISABLE_MKRD=y +CONFIG_NSH_DISABLE_PUT=y +CONFIG_NSH_DISABLE_REBOOT=y +CONFIG_NSH_DISABLE_TELNETD=y +CONFIG_NSH_DISABLE_UNAME=y +CONFIG_NSH_DISABLE_WGET=y +CONFIG_NSH_DISABLE_XD=y +CONFIG_NSH_FATDEVNO=0 +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=128 +CONFIG_NSH_MAXARGUMENTS=15 +CONFIG_NSH_MMCSDSPIPORTNO=2 +CONFIG_NSH_NESTDEPTH=8 +CONFIG_NSH_READLINE=y +CONFIG_NSH_ROMFSETC=y +CONFIG_NSH_ROMFSSECTSIZE=128 +CONFIG_NSH_STRERROR=y +CONFIG_NSH_VARS=y +CONFIG_PIPES=y +CONFIG_PREALLOC_TIMERS=50 +CONFIG_PRIORITY_INHERITANCE=y +CONFIG_PTHREAD_STACK_MIN=512 +CONFIG_RAM_SIZE=196608 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_RTC_DATETIME=y +CONFIG_SCHED_ATEXIT=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=249 +CONFIG_SCHED_HPWORKSTACKSIZE=1280 +CONFIG_SCHED_INSTRUMENTATION=y +CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_LPWORKPRIORITY=50 +CONFIG_SCHED_LPWORKSTACKSIZE=1632 +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SEM_PREALLOCHOLDERS=32 +CONFIG_SERIAL_TERMIOS=y +CONFIG_SIG_DEFAULT=y +CONFIG_SIG_SIGALRM_ACTION=y +CONFIG_SIG_SIGUSR1_ACTION=y +CONFIG_SIG_SIGUSR2_ACTION=y +CONFIG_SIG_SIGWORK=4 +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=30 +CONFIG_START_MONTH=11 +CONFIG_STDIO_BUFFER_SIZE=32 +CONFIG_STM32_ADC1=y +CONFIG_STM32_BBSRAM=y +CONFIG_STM32_BBSRAM_FILES=5 +CONFIG_STM32_BKPSRAM=y +CONFIG_STM32_CCMDATARAM=y +CONFIG_STM32_DISABLE_IDLE_SLEEP_DURING_DEBUG=y +CONFIG_STM32_DMA1=y +CONFIG_STM32_DMA2=y +CONFIG_STM32_FLASH_PREFETCH=y +CONFIG_STM32_FLOWCONTROL_BROKEN=y +CONFIG_STM32_I2C1=y +CONFIG_STM32_I2CTIMEOMS=10 +CONFIG_STM32_I2CTIMEOTICKS=10 +CONFIG_STM32_JTAG_SW_ENABLE=y +CONFIG_STM32_OTGFS=y +CONFIG_STM32_PWR=y +CONFIG_STM32_RTC=y +CONFIG_STM32_RTC_HSECLOCK=y +CONFIG_STM32_RTC_MAGIC_REG=1 +CONFIG_STM32_SAVE_CRASHDUMP=y +CONFIG_STM32_SDIO=y +CONFIG_STM32_SDIO_CARD=y +CONFIG_STM32_SERIALBRK_BSDCOMPAT=y +CONFIG_STM32_SERIAL_DISABLE_REORDERING=y +CONFIG_STM32_SPI1=y +CONFIG_STM32_SPI1_DMA=y +CONFIG_STM32_SPI1_DMA_BUFFER=1024 +CONFIG_STM32_SPI2=y +CONFIG_STM32_SPI2_DMA=y +CONFIG_STM32_SPI3=y +CONFIG_STM32_SPI_DMA=y +CONFIG_STM32_SPI_DMATHRESHOLD=8 +CONFIG_STM32_TIM1=y +CONFIG_STM32_TIM5=y +CONFIG_STM32_UART4=y +CONFIG_STM32_USART1=y +CONFIG_STM32_USART6=y +CONFIG_STM32_USART_BREAKS=y +CONFIG_STM32_USART_SINGLEWIRE=y +CONFIG_STM32_WWDG=y +CONFIG_SYSTEM_CDCACM=y +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=24 +CONFIG_UART4_BAUD=57600 +CONFIG_UART4_RXBUFSIZE=300 +CONFIG_UART4_TXBUFSIZE=300 +CONFIG_USART1_RXBUFSIZE=300 +CONFIG_USART1_RXDMA=y +CONFIG_USART1_TXBUFSIZE=300 +CONFIG_USART6_BAUD=57600 +CONFIG_USART6_RXBUFSIZE=300 +CONFIG_USART6_RXDMA=y +CONFIG_USART6_TXBUFSIZE=300 +CONFIG_USBDEV=y +CONFIG_USBDEV_BUSPOWERED=y +CONFIG_USBDEV_MAXPOWER=500 +CONFIG_USEC_PER_TICK=1000 +CONFIG_USERMAIN_STACKSIZE=2944 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/flywoo/gn-f405/nuttx-config/scripts/script.ld b/boards/flywoo/gn-f405/nuttx-config/scripts/script.ld new file mode 100644 index 00000000000..dbeae7b96af --- /dev/null +++ b/boards/flywoo/gn-f405/nuttx-config/scripts/script.ld @@ -0,0 +1,138 @@ +/**************************************************************************** + * configs/flywoo-gn_f405/scripts/ld.script + * + * Copyright (C) 2011 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* The STM32F405RG has 1024Kb of FLASH beginning at address 0x0800:0000 and + * 192Kb of SRAM. SRAM is split up into three blocks: + * + * 1) 112Kb of SRAM beginning at address 0x2000:0000 + * 2) 16Kb of SRAM beginning at address 0x2001:c000 + * 3) 64Kb of CCM SRAM beginning at address 0x1000:0000 + * + * When booting from FLASH, FLASH memory is aliased to address 0x0000:0000 + * where the code expects to begin execution by jumping to the entry point in + * the 0x0800:0000 address range. + * + * The first 16 KiB of flash is reserved for the bootloader. + * Paramater storage will use the next 16KiB Sector. + */ + +MEMORY +{ + flash (rx) : ORIGIN = 0x08008000, LENGTH = 992K + sram (rwx) : ORIGIN = 0x20000000, LENGTH = 128K + ccsram (rwx) : ORIGIN = 0x10000000, LENGTH = 64K +} + +OUTPUT_ARCH(arm) + +ENTRY(__start) /* treat __start as the anchor for dead code stripping */ +EXTERN(_vectors) /* force the vectors to be included in the output */ + +/* + * Ensure that abort() is present in the final object. The exception handling + * code pulled in by libgcc.a requires it (and that code cannot be easily avoided). + */ +EXTERN(abort) + +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + + } > flash + + /* + * Init functions (static constructors and the like) + */ + .init_section : { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > flash + + + .ARM.extab : { + *(.ARM.extab*) + } > flash + + __exidx_start = ABSOLUTE(.); + .ARM.exidx : { + *(.ARM.exidx*) + } > flash + __exidx_end = ABSOLUTE(.); + + _eronly = ABSOLUTE(.); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + _edata = ABSOLUTE(.); + } > sram AT > flash + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/flywoo/gn-f405/rtps.px4board b/boards/flywoo/gn-f405/rtps.px4board new file mode 100644 index 00000000000..81e62c7825b --- /dev/null +++ b/boards/flywoo/gn-f405/rtps.px4board @@ -0,0 +1 @@ +CONFIG_MODULES_MICRORTPS_BRIDGE=y diff --git a/boards/flywoo/gn-f405/src/CMakeLists.txt b/boards/flywoo/gn-f405/src/CMakeLists.txt new file mode 100644 index 00000000000..4212b7e6d27 --- /dev/null +++ b/boards/flywoo/gn-f405/src/CMakeLists.txt @@ -0,0 +1,50 @@ +############################################################################ +# +# Copyright (c) 2018 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(drivers_board + i2c.cpp + init.c + led.c + spi.cpp + timer_config.cpp + usb.c +) + +target_link_libraries(drivers_board + PRIVATE + arch_spi + drivers__led # drv_led_start + nuttx_arch # sdio + nuttx_drivers # sdio + px4_layer +) diff --git a/boards/flywoo/gn-f405/src/board_config.h b/boards/flywoo/gn-f405/src/board_config.h new file mode 100644 index 00000000000..98daae76077 --- /dev/null +++ b/boards/flywoo/gn-f405/src/board_config.h @@ -0,0 +1,206 @@ +/**************************************************************************** + * + * Copyright (c) 2018, 2014 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file board_config.h + * + * gnf405s internal definitions + */ + +#pragma once + +/**************************************************************************************************** + * Included Files + ****************************************************************************************************/ + +#include +#include +#include + +/**************************************************************************************************** + * Definitions + ****************************************************************************************************/ +/* Configuration ************************************************************************************/ + +/* gnf405s GPIOs ***********************************************************************************/ +/* LEDs */ +// power - green +// LED1 - PB5 - blue +#define GPIO_LED1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN5) +#define GPIO_LED_BLUE GPIO_LED1 + +#define BOARD_OVERLOAD_LED LED_BLUE + +#define FLASH_BASED_PARAMS + +/* + * ADC channels + * + * These are the channel numbers of the ADCs of the microcontroller that can be used by the Px4 Firmware in the adc driver + */ +#define ADC1_CH(n) (n) + +#define PX4_ADC_GPIO \ + /* PC0 */ GPIO_ADC1_IN10, \ + /* PC2 */ GPIO_ADC1_IN12, \ + /* PC3 */ GPIO_ADC1_IN13 + +#define ADC_BATTERY_VOLTAGE_CHANNEL ADC1_CH(13) +#define ADC_BATTERY_CURRENT_CHANNEL ADC1_CH(12) +// #define ADC_BATTERY_VOLTAGE_CHANNEL 12 +// #define ADC_BATTERY_CURRENT_CHANNEL 11 +#define ADC_RC_RSSI_CHANNEL ADC1_CH(10) + +#define ADC_CHANNELS \ + ((1 << ADC_BATTERY_VOLTAGE_CHANNEL) | \ + (1 << ADC_BATTERY_CURRENT_CHANNEL) | \ + (1 << ADC_RC_RSSI_CHANNEL)) + +/* User GPIOs + * + * GPIO0-5 are the PWM servo outputs. + * GPIO_TIM3_CH3OUT GPIO_TIM3_CH3OUT_1 //PB0 S1_OUT D1_ST7 + * GPIO_TIM3_CH4OUT GPIO_TIM3_CH4OUT_1 //PB1 S2_OUT D1_ST2 + * GPIO_TIM2_CH4OUT GPIO_TIM2_CH4OUT_1 //PA3 S3_OUT D1_ST6 + * GPIO_TIM2_CH3OUT GPIO_TIM2_CH3OUT_1 //PA2 S4_OUT D1_ST1 + * GPIO_TIM5_CH2OUT GPIO_TIM5_CH2OUT_1 //PA1 S5_OUT + * GPIO_TIM1_CH1OUT GPIO_TIM1_CH1OUT_1 //PA8 S6_OUT + */ + +#define _MK_GPIO_INPUT(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_INPUT|GPIO_PULLUP)) + +#define GPIO_GPIO0_INPUT _MK_GPIO_INPUT(GPIO_TIM3_CH3IN) +#define GPIO_GPIO1_INPUT _MK_GPIO_INPUT(GPIO_TIM3_CH4IN) +#define GPIO_GPIO2_INPUT _MK_GPIO_INPUT(GPIO_TIM2_CH4IN) +#define GPIO_GPIO3_INPUT _MK_GPIO_INPUT(GPIO_TIM2_CH3IN) +//#define GPIO_GPIO4_INPUT _MK_GPIO_INPUT(GPIO_TIM5_CH2IN) +//#define GPIO_GPIO5_INPUT _MK_GPIO_INPUT(GPIO_TIM1_CH1IN) + +#define _MK_GPIO_OUTPUT(def) (((def) & (GPIO_PORT_MASK | GPIO_PIN_MASK)) | (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR)) + +#define GPIO_GPIO0_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM3_CH3OUT) +#define GPIO_GPIO1_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM3_CH4OUT) +#define GPIO_GPIO2_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM2_CH4OUT) +#define GPIO_GPIO3_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM2_CH3OUT) +//#define GPIO_GPIO4_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM5_CH2OUT) +//#define GPIO_GPIO5_OUTPUT _MK_GPIO_OUTPUT(GPIO_TIM1_CH1OUT) + +/* USB OTG FS + * + * PA9 OTG_FS_VBUS VBUS sensing + */ +#define GPIO_OTGFS_VBUS (GPIO_INPUT|GPIO_FLOAT|GPIO_SPEED_100MHz|GPIO_OPENDRAIN|GPIO_PORTC|GPIO_PIN5) + +/* PWM + * + * Alternatively CH3/CH4 could be assigned to UART6_TX/RX + */ +#define DIRECT_PWM_OUTPUT_CHANNELS 4 + +/* High-resolution timer */ +#define HRT_TIMER 4 // T4C1 +#define HRT_TIMER_CHANNEL 1 // use capture/compare channel 1 + +#define HRT_PPM_CHANNEL 3 // capture/compare channel 3 +#define GPIO_PPM_IN (GPIO_ALT|GPIO_AF2|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN8) + +#define RC_SERIAL_PORT "/dev/ttyS0" +#define BOARD_SUPPORTS_RC_SERIAL_PORT_OUTPUT + +/* + * One RC_IN + * + * GPIO PPM_IN on PB8 T4CH3 + * SPEKTRUM_RX (it's TX or RX in Bind) on PA10 UART1 + * The FMU can drive GPIO PPM_IN as an output + */ +// TODO? +//#define GPIO_PPM_IN_AS_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN6) +//#define SPEKTRUM_RX_AS_GPIO_OUTPUT() px4_arch_configgpio(GPIO_PPM_IN_AS_OUT) +//#define SPEKTRUM_RX_AS_UART() px4_arch_configgpio(GPIO_USART1_RX) +//#define SPEKTRUM_OUT(_one_true) px4_arch_gpiowrite(GPIO_PPM_IN_AS_OUT, (_one_true)) + + +/* This board provides a DMA pool and APIs */ +#define BOARD_DMA_ALLOC_POOL_SIZE 5120 + +#define BOARD_HAS_ON_RESET 1 + +#define BOARD_ENABLE_CONSOLE_BUFFER +#define BOARD_CONSOLE_BUFFER_SIZE (1024*3) + + +__BEGIN_DECLS + +/**************************************************************************************************** + * Public Types + ****************************************************************************************************/ + +/**************************************************************************************************** + * Public data + ****************************************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************************************** + * Public Functions + ****************************************************************************************************/ + +/**************************************************************************************************** + * Name: stm32_spiinitialize + * + * Description: + * Called to configure SPI chip select GPIO pins for the PX4FMU board. + * + ****************************************************************************************************/ + +extern void stm32_spiinitialize(void); + + +/**************************************************************************************************** + * Name: stm32_usbinitialize + * + * Description: + * Called to configure USB IO. + * + ****************************************************************************************************/ + +extern void stm32_usbinitialize(void); + +extern void board_peripheral_reset(int ms); + +#include + +#endif /* __ASSEMBLY__ */ + +__END_DECLS diff --git a/boards/flywoo/gn-f405/src/i2c.cpp b/boards/flywoo/gn-f405/src/i2c.cpp new file mode 100644 index 00000000000..e9f26f9a9ee --- /dev/null +++ b/boards/flywoo/gn-f405/src/i2c.cpp @@ -0,0 +1,38 @@ +/**************************************************************************** + * + * Copyright (C) 2020 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = { + initI2CBusExternal(1), +}; diff --git a/boards/flywoo/gn-f405/src/init.c b/boards/flywoo/gn-f405/src/init.c new file mode 100644 index 00000000000..0fabb895335 --- /dev/null +++ b/boards/flywoo/gn-f405/src/init.c @@ -0,0 +1,338 @@ +/**************************************************************************** + * + * Copyright (c) 2012-2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file init.c + * + * gnf405s-specific early startup code. This file implements the + * board_app_initialize() function that is called early by nsh during startup. + * + * Code here is run before the rcS script is invoked; it should start required + * subsystems and perform board-specific initialization. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include "board_config.h" +#include + +#include + +#include +#include + +#include + +#include +#include +#include + +# if defined(FLASH_BASED_PARAMS) +# include +#endif + +/**************************************************************************** + * Pre-Processor Definitions + ****************************************************************************/ + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +__END_DECLS + +/**************************************************************************** + * Protected Functions + ****************************************************************************/ +/**************************************************************************** + * Public Functions + ****************************************************************************/ +/************************************************************************************ + * Name: board_peripheral_reset + * + * Description: + * + ************************************************************************************/ +__EXPORT void board_peripheral_reset(int ms) +{ + UNUSED(ms); +} + +/************************************************************************************ + * Name: board_on_reset + * + * Description: + * Optionally provided function called on entry to board_system_reset + * It should perform any house keeping prior to the rest. + * + * status - 1 if resetting to boot loader + * 0 if just resetting + * + ************************************************************************************/ +__EXPORT void board_on_reset(int status) +{ + /* configure the GPIO pins to outputs and keep them low */ + for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) { + px4_arch_configgpio(io_timer_channel_get_gpio_output(i)); + } + + /* On resets invoked from system (not boot) insure we establish a low + * output state (discharge the pins) on PWM pins before they become inputs. + */ + + if (status >= 0) { + up_mdelay(400); + } +} + +/************************************************************************************ + * Name: stm32_boardinitialize + * + * Description: + * All STM32 architectures must provide the following entry point. This entry point + * is called early in the initialization -- after all memory has been configured + * and mapped but before any devices have been initialized. + * + ************************************************************************************/ + +__EXPORT void +stm32_boardinitialize(void) +{ + /* Reset all PWM to Low outputs */ + + board_on_reset(-1); + + /* configure LEDs */ + board_autoled_initialize(); + + + /* configure ADC pins */ + stm32_configgpio(GPIO_ADC1_IN13); /* BATT_VOLTAGE_SENS */ + stm32_configgpio(GPIO_ADC1_IN12); /* BATT_CURRENT_SENS */ + //stm32_configgpio(GPIO_ADC1_IN0); /* RSSI analog in (TX of UART4 instead) */ + + // TODO: power peripherals + ///* configure power supply control/sense pins */ + //stm32_configgpio(GPIO_PERIPH_3V3_EN); + //stm32_configgpio(GPIO_VDD_BRICK_VALID); + //stm32_configgpio(GPIO_VDD_USB_VALID); + + // TODO: 3v3 Sensor? + ///* Start with Sensor voltage off We will enable it + // * in board_app_initialize + // */ + //stm32_configgpio(GPIO_VDD_3V3_SENSORS_EN); + + // TODO: SBUS inversion? SPEK power? + //stm32_configgpio(GPIO_SBUS_INV); + //stm32_configgpio(GPIO_SPEKTRUM_PWR_EN); + + // TODO: $$$ Unused? + //stm32_configgpio(GPIO_8266_GPIO0); + //stm32_configgpio(GPIO_8266_PD); + //stm32_configgpio(GPIO_8266_RST); + + /* Safety - led don in led driver */ + + // TODO: unused? + //stm32_configgpio(GPIO_BTN_SAFETY); + + // TODO: RSSI + //stm32_configgpio(GPIO_RSSI_IN); + + stm32_configgpio(GPIO_PPM_IN); + + /* configure SPI all interfaces GPIO */ + + stm32_spiinitialize(); + +} + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initalization logic and the the + * matching application logic. The value cold be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +static struct spi_dev_s *spi1; +static struct spi_dev_s *spi2; +static struct spi_dev_s *spi3; + +__EXPORT int board_app_initialize(uintptr_t arg) +{ + px4_platform_init(); + + /* configure the DMA allocator */ + + if (board_dma_alloc_init() < 0) { + syslog(LOG_ERR, "DMA alloc FAILED\n"); + } + +#if defined(SERIAL_HAVE_RXDMA) + // set up the serial DMA polling at 1ms intervals for received bytes that have not triggered a DMA event. + static struct hrt_call serial_dma_call; + hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL); +#endif + + /* initial LED state */ + drv_led_start(); + led_off(LED_BLUE); + + if (board_hardfault_init(2, true) != 0) { + led_on(LED_BLUE); + } + + + /* Configure SPI-based devices */ + + // SPI1: MPU6000 + spi1 = stm32_spibus_initialize(1); + + if (!spi1) { + syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 1\n"); + led_on(LED_BLUE); + } + + /* Default SPI1 to 1MHz and de-assert the known chip selects. */ + SPI_SETFREQUENCY(spi1, 10000000); + SPI_SETBITS(spi1, 8); + SPI_SETMODE(spi1, SPIDEV_MODE3); + up_udelay(20); + + // SPI2: SDCard + /* Get the SPI port for the microSD slot */ + spi2 = stm32_spibus_initialize(CONFIG_NSH_MMCSDSPIPORTNO); + + if (!spi2) { + syslog(LOG_ERR, "[boot] FAILED to initialize SPI port %d\n", CONFIG_NSH_MMCSDSPIPORTNO); + led_on(LED_BLUE); + } + + /* Now bind the SPI interface to the MMCSD driver */ + int result = mmcsd_spislotinitialize(CONFIG_NSH_MMCSDMINOR, CONFIG_NSH_MMCSDSLOTNO, spi2); + + if (result != OK) { + led_on(LED_BLUE); + syslog(LOG_ERR, "[boot] FAILED to bind SPI port 2 to the MMCSD driver\n"); + } + + up_udelay(20); + + + // SPI3: OSD / Baro + spi3 = stm32_spibus_initialize(3); + + if (!spi3) { + syslog(LOG_ERR, "[boot] FAILED to initialize SPI port 3\n"); + led_on(LED_BLUE); + } + + /* Copied from fmu-v4 + * Default SPI3 to 12MHz and de-assert the known chip selects. + * MS5611 has max SPI clock speed of 20MHz + */ + + // BMP280 max SPI speed is 10 MHz + SPI_SETFREQUENCY(spi3, 10 * 1000 * 1000); + SPI_SETBITS(spi3, 8); + SPI_SETMODE(spi3, SPIDEV_MODE3); + up_udelay(20); + +#if defined(FLASH_BASED_PARAMS) + static sector_descriptor_t params_sector_map[] = { + {1, 16 * 1024, 0x08004000}, + {0, 0, 0}, + }; + + /* Initialize the flashfs layer to use heap allocated memory */ + result = parameter_flashfs_init(params_sector_map, NULL, 0); + + if (result != OK) { + syslog(LOG_ERR, "[boot] FAILED to init params in FLASH %d\n", result); + led_on(LED_AMBER); + } + +#endif + + /* Configure the HW based on the manifest */ + + px4_platform_configure(); + + return OK; +} diff --git a/boards/flywoo/gn-f405/src/led.c b/boards/flywoo/gn-f405/src/led.c new file mode 100644 index 00000000000..3fde90dccaa --- /dev/null +++ b/boards/flywoo/gn-f405/src/led.c @@ -0,0 +1,120 @@ +/**************************************************************************** + * + * Copyright (c) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file led.c + * + * gnf405s LED backend. + */ + +#include + +#include + +#include "stm32.h" +#include "board_config.h" + +#include + +/* + * Ideally we'd be able to get these from arm_internal.h, + * but since we want to be able to disable the NuttX use + * of leds for system indication at will and there is no + * separate switch, we need to build independent of the + * CONFIG_ARCH_LEDS configuration switch. + */ +__BEGIN_DECLS +extern void led_init(void); +extern void led_on(int led); +extern void led_off(int led); +extern void led_toggle(int led); +__END_DECLS + +static uint32_t g_ledmap[] = { + GPIO_LED_BLUE, +}; + +__EXPORT void led_init(void) +{ + /* Configure LED GPIOs for output */ + for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) { + stm32_configgpio(g_ledmap[l]); + } +} + +static void phy_set_led(int led, bool state) +{ + /* Pull Down to switch on */ + if (led == 0) { + stm32_gpiowrite(g_ledmap[led], !state); + } +} + +__EXPORT void led_on(int led) +{ + phy_set_led(led, true); +} + +__EXPORT void led_off(int led) +{ + phy_set_led(led, false); +} + +__EXPORT void led_toggle(int led) +{ + if (led == 0) { + phy_set_led(led, !stm32_gpioread(g_ledmap[led])); + } +} + +__EXPORT void board_autoled_initialize(void) +{ + /* Configure LED1 GPIO for output */ + stm32_configgpio(GPIO_LED1); +} + +__EXPORT void board_autoled_on(int led) +{ + if (led == 1) { + /* Pull down to switch on */ + stm32_gpiowrite(GPIO_LED1, false); + } +} + +__EXPORT void board_autoled_off(int led) +{ + if (led == 1) { + /* Pull up to switch off */ + stm32_gpiowrite(GPIO_LED1, true); + } +} diff --git a/boards/flywoo/gn-f405/src/spi.cpp b/boards/flywoo/gn-f405/src/spi.cpp new file mode 100644 index 00000000000..3530e26aece --- /dev/null +++ b/boards/flywoo/gn-f405/src/spi.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** + * + * Copyright (C) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include +#include +#include + +constexpr px4_spi_bus_t px4_spi_buses[SPI_BUS_MAX_BUS_ITEMS] = { + // initSPIBus(SPI::Bus::SPI1, { + // initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortA, GPIO::Pin4}), + // initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortA, GPIO::Pin4}), + // }), + initSPIBus(SPI::Bus::SPI1, { + initSPIDevice(DRV_IMU_DEVTYPE_MPU6000, SPI::CS{GPIO::PortB, GPIO::Pin12}), + initSPIDevice(DRV_IMU_DEVTYPE_ICM20602, SPI::CS{GPIO::PortA, GPIO::Pin4}), + }), + initSPIBus(SPI::Bus::SPI2, { + initSPIDevice(SPIDEV_MMCSD(0), SPI::CS{GPIO::PortB, GPIO::Pin15}) + }), + // initSPIBus(SPI::Bus::SPI2, { + // initSPIDevice(SPIDEV_MMCSD(0), SPI::CS{GPIO::PortB, GPIO::Pin12}) + // }), + initSPIBus(SPI::Bus::SPI3, { + initSPIDevice(DRV_BARO_DEVTYPE_BMP280, SPI::CS{GPIO::PortB, GPIO::Pin3}), + initSPIDevice(DRV_OSD_DEVTYPE_ATXXXX, SPI::CS{GPIO::PortA, GPIO::Pin15}), + }), +}; + +static constexpr bool unused = validateSPIConfig(px4_spi_buses); diff --git a/boards/flywoo/gn-f405/src/timer_config.cpp b/boards/flywoo/gn-f405/src/timer_config.cpp new file mode 100644 index 00000000000..c38c5b161ab --- /dev/null +++ b/boards/flywoo/gn-f405/src/timer_config.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** + * + * Copyright (C) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include + +constexpr io_timers_t io_timers[MAX_IO_TIMERS] = { + initIOTimer(Timer::Timer2, DMA{DMA::Index1, DMA::Stream1, DMA::Channel3}), + initIOTimer(Timer::Timer3, DMA{DMA::Index1, DMA::Stream2, DMA::Channel5}), +}; + +constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = { + initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel3}, {GPIO::PortB, GPIO::Pin0}), + initIOTimerChannel(io_timers, {Timer::Timer3, Timer::Channel4}, {GPIO::PortB, GPIO::Pin1}), + initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel4}, {GPIO::PortA, GPIO::Pin3}), + initIOTimerChannel(io_timers, {Timer::Timer2, Timer::Channel3}, {GPIO::PortA, GPIO::Pin2}), +}; + +constexpr io_timers_channel_mapping_t io_timers_channel_mapping = + initIOTimerChannelMapping(io_timers, timer_io_channels); diff --git a/boards/flywoo/gn-f405/src/usb.c b/boards/flywoo/gn-f405/src/usb.c new file mode 100644 index 00000000000..d656429a751 --- /dev/null +++ b/boards/flywoo/gn-f405/src/usb.c @@ -0,0 +1,107 @@ +/**************************************************************************** + * + * Copyright (C) 2018 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/** + * @file usb.c + * + * Board-specific USB functions. + */ + +/************************************************************************************ + * Included Files + ************************************************************************************/ + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include "board_config.h" + +/************************************************************************************ + * Definitions + ************************************************************************************/ + +/************************************************************************************ + * Private Functions + ************************************************************************************/ + +/************************************************************************************ + * Public Functions + ************************************************************************************/ + +/************************************************************************************ + * Name: stm32_usbinitialize + * + * Description: + * Called to setup USB-related GPIO pins for the gnf405s board. + * + ************************************************************************************/ + +__EXPORT void stm32_usbinitialize(void) +{ + /* The OTG FS has an internal soft pull-up */ + + /* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */ + +#ifdef CONFIG_STM32_OTGFS + stm32_configgpio(GPIO_OTGFS_VBUS); + /* XXX We only support device mode + stm32_configgpio(GPIO_OTGFS_PWRON); + stm32_configgpio(GPIO_OTGFS_OVER); + */ +#endif +} + +/************************************************************************************ + * Name: stm32_usbsuspend + * + * Description: + * Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is + * used. This function is called whenever the USB enters or leaves suspend mode. + * This is an opportunity for the board logic to shutdown clocks, power, etc. + * while the USB is suspended. + * + ************************************************************************************/ + +__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume) +{ + uinfo("resume: %d\n", resume); +}