boards: New target flywoo goku-gn-f405s-aio (#20131)

This commit is contained in:
Zhengtian
2022-09-16 06:11:49 +08:00
committed by GitHub
parent 3b9936edd2
commit 70194f52cd
19 changed files with 2446 additions and 0 deletions
@@ -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
+46
View File
@@ -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
+13
View File
@@ -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
}
@@ -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
@@ -0,0 +1,11 @@
#!/bin/sh
#
# Flywoo GNF405 specific board extras init
#------------------------------------------------------------------------------
if ! param compare OSD_ATXXXX_CFG 0
then
atxxxx start -s
fi
@@ -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
@@ -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 <gnutt@nuttx.org>
*
* Copyright (c) 2018 PX4 Development Team. All rights reserved.
* Author: Nathan Tsoi <nathan@vertile.com>
*
* 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 <nuttx/config.h>
#ifndef __ASSEMBLY__
# include <stdint.h>
#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 */
@@ -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
@@ -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"
@@ -0,0 +1,138 @@
/****************************************************************************
* configs/flywoo-gn_f405/scripts/ld.script
*
* Copyright (C) 2011 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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) }
}
+1
View File
@@ -0,0 +1 @@
CONFIG_MODULES_MICRORTPS_BRIDGE=y
+50
View File
@@ -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
)
+206
View File
@@ -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 <px4_platform_common/px4_config.h>
#include <nuttx/compiler.h>
#include <stdint.h>
/****************************************************************************************************
* 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 <px4_platform_common/board_common.h>
#endif /* __ASSEMBLY__ */
__END_DECLS
+38
View File
@@ -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 <px4_arch/i2c_hw_description.h>
constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = {
initI2CBusExternal(1),
};
+338
View File
@@ -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 <px4_platform_common/px4_config.h>
#include <px4_platform_common/tasks.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <debug.h>
#include <errno.h>
#include <syslog.h>
#include <nuttx/board.h>
#include <nuttx/spi/spi.h>
#include <nuttx/i2c/i2c_master.h>
#include <nuttx/mmcsd.h>
#include <nuttx/analog/adc.h>
#include <nuttx/mm/gran.h>
#include <stm32.h>
#include "board_config.h"
#include <stm32_uart.h>
#include <arch/board/board.h>
#include <drivers/drv_hrt.h>
#include <drivers/drv_board_led.h>
#include <systemlib/px4_macros.h>
#include <px4_arch/io_timer.h>
#include <px4_platform_common/init.h>
#include <px4_platform/board_dma_alloc.h>
# if defined(FLASH_BASED_PARAMS)
# include <parameters/flashparams/flashfs.h>
#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;
}
+120
View File
@@ -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 <px4_platform_common/px4_config.h>
#include <stdbool.h>
#include "stm32.h"
#include "board_config.h"
#include <nuttx/board.h>
/*
* 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);
}
}
+59
View File
@@ -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 <px4_arch/spi_hw_description.h>
#include <drivers/drv_sensor.h>
#include <nuttx/spi/spi.h>
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);
@@ -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 <px4_arch/io_timer_hw_description.h>
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);
+107
View File
@@ -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 <px4_platform_common/px4_config.h>
#include <sys/types.h>
#include <stdint.h>
#include <stdbool.h>
#include <debug.h>
#include <nuttx/usb/usbdev.h>
#include <nuttx/usb/usbdev_trace.h>
#include <arm_arch.h>
#include <stm32.h>
#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);
}