Skip to content
Snippets Groups Projects
Commit 6002c36a authored by schneider's avatar schneider
Browse files

add openocd sdk files

parent 6fccfa09
No related branches found
No related tags found
No related merge requests found
Showing
with 1572 additions and 0 deletions
:040000000200713257
:01000B0032C2
:0100130032BA
:01001B0032B2
:0100230032AA
:01002B0032A2
:01003300329A
:01003B003292
:01004300328A
:01004B003282
:01005300327A
:01005B003272
:01006300326A
:03006B000201107F
:0300CA0002006EC3
:03006E000201018B
:1000CD00907F937404F0907F9C7495F0907F96745C
:1000DD0090F0907F94E4F0907F9D747FF0907F97E7
:1000ED00E4F0907F957440F0907F9E7442F0907F85
:1000FD0098E4F0221200CD1204ADD2AF1208E090B8
:10010D00000022C021C0E0C0F0C082C083C007C083
:10011D0006C005C004C003C002C001C000C0D07538
:10012D00D000AF9174EF5FF59112040C907FAB741A
:10013D0001F0907FB4E04402F0D0D0D000D001D0D7
:10014D0002D003D004D005D006D007D083D082D002
:10015D00F0D0E0D02132323232323232323232C04D
:10016D00E0C082C083C007C0D075D000D201AF916E
:10017D0074EF5FF591907FA97404F0D0D0D007D0C3
:10018D0083D082D0E032C0E0C082C083C007C0D02F
:10019D0075D000D200AF9174EF5FF591907FAA7486
:1001AD0004F0D0D0D007D083D082D0E032323232BA
:1001BD0032323232323232AF82747F5FFE24F850E7
:1001CD0003020278EE240A83F582EE240C83F58374
:1001DD00E473EFF306192C3F52650101020202028E
:1001ED000202907FB422EF30E7067DB67E7F800459
:1001FD007DC67E7F8D828E8322EF30E7067DB87EB1
:10020D007F80047DC87E7F8D828E8322EF30E7064E
:10021D007DBA7E7F80047DCA7E7F8D828E8322EFA4
:10022D0030E7067DBC7E7F80047DCC7E7F8D828E07
:10023D008322EF30E7067DBE7E7F80047DCE7E7FFC
:10024D008D828E8322EF30E7067DC07E7F80047D18
:10025D00D07E7F8D828E8322EF30E7067EC27F7F38
:10026D0080047ED27F7F8E828F832290000022AF0A
:10027D008274105FFE74075F4206907FD7EEF074B4
:10028D00204EF022907FE8E0C322907FE8E0FF60EF
:10029D0005BF0246800A907FB4E0FF4401F0803A2A
:1002AD00907FEAE0FEA3E0FF4E7027907FECE0FE2A
:1002BD00A3E08E821201C4AE82AF83EE4F7002C3F3
:1002CD00228E828F83E0FD5305FE8E828F83EDF0AB
:1002DD008008907FB4E0FF4401F0D322907FE8E0E6
:1002ED00FF6005BF02468010907FEAE0FEA3E0FFAD
:1002FD00BE0239BF0036D322907FEAE0FEA3E0FFB5
:10030D004E7027907FECE0FEA3E08E821201C4AE0A
:10031D0082AF83EE4F7002C3228E828F83E0FD4346
:10032D0005018E828F83EDF08002C322D322907F50
:10033D00EAE0A3E0FF907FEAE0FDA3E07E00BF01CD
:10034D0002800DBF02028021BF030280340203EC44
:10035D007ED37F138F06907FD4EEF07ED37F137FF5
:10036D0000907FD5EEF00203EE7EE57F138F0690B1
:10037D007FD4EEF07EE57F137F00907FD5EEF08089
:10038D0060907FECE0FEA3E0FF4E70187E057F14B9
:10039D008F06907FD4EEF07E057F147F00907FD581
:1003AD00EEF0803D907FECE0FEA3E0FFBE092EBF96
:1003BD00042BED1475F002A42459F582741435F054
:1003CD00F583E493FEA3E493FF8E048F058D0490D3
:1003DD007FD4ECF07F00907FD5EEF08004C322C374
:1003ED0022D32275828212027C75820212027C90C7
:1003FD007FB87402F0907FC8E4F0907FC9F022902E
:10040D007FE9E0FF24F3500122EFF5F0240B83F593
:10041D0082E5F0241183F583E473414F5D655D72D0
:10042D007B73889899A9AC0404040404040404049F
:10043D0004040404120291500122907FB4E044019F
:10044D00F022120297500122907FB4E04401F02275
:10045D00907FB4E04401F0221202E94042907FB453
:10046D00E04401F02222907FB4E04401F022120317
:10047D003B402C907FB4E04401F0229013EAE493CA
:10048D00907F00F0907FB57401F022229013F0E47C
:10049D0093907F00F0907FB57401F0221203F0224B
:1004AD00907FDE7404F0907FDF7404F0907FE0E4C1
:1004BD00F0907FE1F0907FA17401F0907FAFE04468
:1004CD0001F0907FAEE04401F0907FAD7404F090A8
:1004DD007FAC7404F0D2E8907FD6740AF09000C817
:0A04ED0012137C907FD67406F022F3
:1013D30012011001FFFFFF4051C21027000101025B
:1013E3000301090220000101048032090400000204
:1013F300FFFFFF00070582024000000705020240CD
:1014030000000403090414034F00700065006E001C
:1014130055004C0049004E004B0014034F00700070
:1014230065006E0055004C0049004E004B000E0352
:101433003000300030003000300031001A034A0021
:101443005400410047002000410064006100700027
:0E14530074006500720009141D1431143F145A
:1004F700E5080424C0F582E4347DF583E0FF30E1AC
:1005070008907F96E0FE54EFF08F06EE30E00890FB
:100517007F96E0FE547FF0EF30E308907F96E0FE91
:100527004410F0EF30E208907F96E0FF4480F0221D
:100537007F00E50824C0F582E4347DF583E0FE24DE
:10054700D550030208A6EE240A83F582EE242F83F2
:10055700F583E473B18AD7B0FAD3A6A6A6A6A6A652
:10056700A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A624
:10057700A6A6A6A621FA512A639CD5053493A205FF
:1005870006050605060808080808080808080808F0
:1005970008080808080808080808080808080806D6
:1005A700060607070707080808087E05E508042464
:1005B700C0F582E4347DF583E0FFE50804F5828524
:1005C7000927C007C00612091DD006D0070208A8D0
:1005D700E5080424C0F582E4347DF583E02405FEB4
:1005E700E50804F582C007C006120BDED006D00767
:1005F7000208A8E5080424C0F582E4347DF583E009
:10060700FF2405FEE50804F58285093CC007C006FE
:10061700120E79D006D0070208A87E02E508042446
:10062700C0F582E4347DF583E0FD7402250824C01B
:10063700F582E4347DF583E0F50A8D82C007C006B4
:1006470012124AD006D0070208A87E02E508042441
:10065700C0F582E4347DF583E0FC7D007402250853
:1006670024C0F582E4347DF583E0FAE44204EA42EB
:10067700058C828D83C007C0061211DDD006D00716
:100687000208A87E05E5080424C0F582E4347DF558
:1006970083E0FFE50804F58285092DC007C006122F
:1006A7000A67D006D0070208A8E5080424C0F58227
:1006B700E4347DF583E02405FEE50804F582C007F0
:1006C700C006120D14D006D0070208A8E5080424B6
:1006D700C0F582E4347DF583E0FF2405FEE50804D8
:1006E700F582850943C007C006121013D006D0074C
:1006F7000208A87E02E5080424C0F582E4347DF5EB
:1007070083E0FB7402250824C0F582E4347DF58379
:10071700E0F50A8B82C007C006121281D006D00707
:100727000208A87E02E5080424C0F582E4347DF5BA
:1007370083E0FC7D007402250824C0F582E4347D43
:10074700F583E0FAE44204EA42058C828D83C00710
:10075700C006121207D006D0070208A87E02E508D5
:100767000424C0F582E4347DF583E0FC7D00740247
:10077700250824C0F582E4347DF583E0FAE44204D9
:10078700EA42058C828D83C007C006121349D00642
:10079700D0070208A87E02E5080424C0F582E434E5
:1007A7007DF583E0FC7D007402250824C0F582E412
:1007B700347DF583E0FAE44204EA42058C828D83B6
:1007C700C007C00612137CD006D0070208A87E0017
:1007D7007F02C007C0061212CEAC82AD83D006D00E
:1007E7000785098275837E8D03EBF0E509042400F4
:1007F700F582E4347EF5837D00ECF00208A87E02E2
:10080700E5080424C0F582E4347DF583E0FD740235
:10081700250824C0F582E4347DF583E0F50A8D824E
:10082700C007C006121311D006D00780747E05E5F5
:10083700080424C0F582E4347DF583E0FD740225C5
:100847000824C0F582E4347DF583E0F50A740325B6
:100857000824C0F582E4347DF583E0F50B740425A4
:100867000824C0F582E4347DF583E0F50C74052592
:100877000824C0F582E4347DF583E0F50D8D82C050
:1008870007C006121329D006D00780157E01C007BE
:10089700C0061204F7D006D00780067E0180027ECC
:1008A70000EF2509F509AD087F008E037C00EB2DCD
:1008B700FDEC3FFF0DBD00010F907FC9E0FC7B0001
:1008C700C3ED9CEF64808BF063F08095F04002D31A
:1008D70022EE042508F508C32275080075090010E3
:1008E700000280FB907F96E0FF547FF0C202200257
:1008F70007120537920280F6907F96E0FF4480F05A
:10090700E509600B907FB9E509F010010280FB90C3
:100917007FC9E4F080C3E582FF24C0F582E4347D1B
:10092700F583E0F528EF0424C0F582E4347DF583F0
:10093700E0F52974022FFC24C0F582E4347DF583A9
:10094700E0C4540FFB53030FEC24C0F582E4347D5D
:10095700F583E0FC740F5CF52A74032F24C0F5823D
:10096700E4347DF583E0FA74042F24C0F582E4347F
:100977007DF583E0F52BEB60078A0A8B8212124A1A
:10098700907F97E0FB5303F874044BFA7900A8288B
:100997007C0018B8FF011C89067F00C3EE98EF643E
:1009A700808CF063F08095F050347F007E00907F5C
:1009B70097EBF0EFC313FF907F97EAF0907F99E0F2
:1009C700FC30E5034307800EBE080040E1E5272918
:1009D7002400F582E4347EF583EFF00980B0892C9A
:1009E7007F00AC2A7A00C3EA95295040A8297900EC
:1009F70018B8FF01198A057E00EDB50011EEB501A3
:100A07000DEC600A4303021CE52BC313F52B907F03
:100A170097EBF0EFC313FF907F9774044BF0907F31
:100A270099E0FE30E5034307800A80BAAD297E00CE
:100A37007408C39DFDE49EFE8DF005F0EF8002C3B0
:100A470013D5F0FBFFE527252C2400F582E4347E3F
:100A5700F583EFF0EC6008852B0A8C8202124A229C
:100A6700E582FF24C0F582E4347DF583E0F52EEFBF
:100A77000424C0F582E4347DF583E0F52F74022F5A
:100A8700FC24C0F582E4347DF583E0C4540FFB53A6
:100A9700030FEC24C0F582E4347DF583E0FC740F8A
:100AA7005CF53074032F24C0F582E4347DF583E0D0
:100AB700FA74042F24C0F582E4347DF583E0F53120
:100AC700EB60078A0A8B82121281907F97E0FB53B3
:100AD70003F874044BFA753200A82E7C0018B8FF8F
:100AE700011CA9327E00C3E998EE64808CF063F0A4
:100AF7008095F0504C7E007C00907F97EBF079005A
:100B0700C3E9952250030980F7EEC313FE907F9740
:100B1700EAF07900C3E9952250030980F7907F999D
:100B2700E0F930E5034306800CBC080040CBE52D17
:100B370025322400F582E4347EF583EEF005328019
:100B4700987E00AA307900C3E9952F5056A82F7CCC
:100B57000018B8FF011C89057F00EDB50011EFB53E
:100B6700040DEA600A4303021AE531C313F5319015
:100B77007F97EBF07F00C3EF952250030F80F7EECE
:100B8700C313FE907F9774044BF07F00C3EF952249
:100B970050030F80F7907F99E0FF30E5034306800D
:100BA7000980A4AD2F7F007408C39DFDE49FFF8DCE
:100BB700F005F0EE8002C313D5F0FBFEE52D2532DC
:100BC7002400F582E4347EF583EEF0EA600885318F
:100BD7000A8A8202128122E582FF24C0F582E43468
:100BE7007DF583E0F533EF0424C0F582E4347DF529
:100BF70083E0F53474022FFC24C0F582E4347DF5DC
:100C070083E0C4540FFB53030FEC24C0F582E43494
:100C17007DF583E0FC740F5CF53574032F24C0F574
:100C270082E4347DF583E0FA74042F24C0F582E46E
:100C3700347DF583E0F536EB600B8A0A8B82C007BB
:100C470012124AD007907F97E0FB5303F97A00A866
:100C5700337C0018B8FF011C8A017E00C3E998EEB7
:100C670064808CF063F08095F05039EF2A240524D6
:100C7700C0F582E4347DF583E0FE7C00EE30E005CC
:100C870043030180068B0174FE59FB907F97EBF0BD
:100C9700EEC313FE907F9774044BF00CBC08004022
:100CA700DB0A80ABEF2A240524C0F582E4347DF506
:100CB70083E0FEAF357C00C3EC95345044EE30E062
:100CC7000543030180068B0274FE5AFBA9347A00A0
:100CD70019B9FF011A8C007D00E8B50111EDB502C5
:100CE7000DEF600A4303021FE536C313F536907F05
:100CF70097EBF0EEC313FE907F9774044BF00C80D4
:100D0700B6EF600885360A8F8202124A22E582F51D
:100D17003724C0F582E4347DF583E0F538E5370400
:100D270024C0F582E4347DF583E0F5397402253774
:100D3700FC24C0F582E4347DF583E0C4540FFB53F3
:100D4700030FEC24C0F582E4347DF583E0FC740FD7
:100D57005CF53A7403253724C0F582E4347DF583C6
:100D6700E0FA7404253724C0F582E4347DF583E086
:100D7700F53BEB60078A0A8B82121281907F97E01E
:100D8700FB5303F97A00A8387C0018B8FF011C8AC6
:100D9700067F00C3EE98EF64808CF063F08095F0D7
:100DA7005050E5372A240524C0F582E4347DF583C5
:100DB700E0FF7E00EF30E00543030180068B0474FB
:100DC700FE5CFB907F97EBF07C00C3EC9523500310
:100DD7000C80F7EFC313FF907F9774044BF07C00F0
:100DE700C3EC952350030C80F70EBE080040C50ADC
:100DF7008094E5372A240524C0F582E4347DF58301
:100E0700E0FFAE3A7C00C3EC9539505AEF30E0056D
:100E170043030180068B0274FE5AFBA8397A001837
:100E2700B8FF011A8C017D00E9B50011EDB5020D7F
:100E3700EE600A4303021EE53BC313F53B907F9721
:100E4700EBF07D00C3ED952350030D80F7EFC3133F
:100E5700FF907F9774044BF07D00C3ED95235003FB
:100E67000D80F70C80A0EE6008853B0A8E82021287
:100E77008122E582FF24C0F582E4347DF583E0F525
:100E87003DEF0424C0F582E4347DF583E0F53E743C
:100E9700022FFC24C0F582E4347DF583E0C4540FAF
:100EA700FB53030FEC24C0F582E4347DF583E0FCAB
:100EB700740F5CF53F74032F24C0F582E4347DF58D
:100EC70083E0FA74042F24C0F582E4347DF583E0CF
:100ED700F540EB600B8A0A8B82C00712124AD007D3
:100EE700907F97E0FB5303F97A00A83D7C0018B880
:100EF700FF011C8A017E00C3E998EE64808CF063D1
:100F0700F08095F0505CEF2A240524C0F582E43484
:100F17007DF583E0F5417C007900E54130E005434C
:100F2700030180068B0074FE58FB907F97EBF0E57A
:100F370041C313F541907F9774044BF0ECC313FC46
:100F4700907F99E0F830E50343048009B908004031
:100F5700C9E53C2A2400F582E4347EF583ECF00AE7
:100F670080888A01EF2A240524C0F582E4347DF5C0
:100F770083E0F5417C00AF3F754200C3E542953EF3
:100F87005057E54130E00543030180068B0074FEAE
:100F970058FBA83E7D0018B8FF011DAA427E00EA53
:100FA700B50011EEB5050DEF600A4303021FE540DA
:100FB700C313F540907F97EBF0E541C313F54190DC
:100FC7007F9774044BF0ECC313FC907F99E0FE30DD
:100FD700E503430480054280A2AD3E7E007408C34A
:100FE7009DFDE49EFE8DF005F0EC8002C313D5F065
:100FF700FBFCE53C292400F582E4347EF583ECF024
:10100700EF600885400A8F8202124A22E582F54482
:1010170024C0F582E4347DF583E0F545E5440424F6
:10102700C0F582E4347DF583E0F54674022544FC7F
:1010370024C0F582E4347DF583E0C4540FFB5303E9
:101047000FEC24C0F582E4347DF583E0FC740F5C7B
:10105700F5477403254424C0F582E4347DF583E025
:10106700FA7404254424C0F582E4347DF583E0F561
:1010770048EB60078A0A8B82121281907F97E0FB08
:101087005303F97A00A8457C0018B8FF011C8A06AB
:101097007F00C3EE98EF64808CF063F08095F0508A
:1010A70074E5442A240524C0F582E4347DF583E001
:1010B700F5497E007C00E54930E0054303018006E1
:1010C7008B0074FE58FB907F97EBF07800C3E89590
:1010D7002450030880F7E549C313F549907F9774B7
:1010E700044BF07800C3E8952450030880F7EEC35B
:1010F70013FE907F99E0F830E5034306800CBC08A7
:101107000040B3E5432A2400F582E4347EF583EEFC
:10111700F00A02108C8A04E5442A240524C0F582CB
:10112700E4347DF583E0F5497E00AA47754A00C39C
:10113700E54A9546506DE54930E0054303018006D1
:101147008B0174FE59FBA9467D0019B9FF011DA843
:101157004A7F00E8B50111EFB5050DEA600A4303C0
:10116700021AE548C313F548907F97EBF07F00C359
:10117700EF952450030F80F7E549C313F549907F96
:101187009774044BF07F00C3EF952450030F80F74B
:10119700EEC313FE907F99E0FF30E5034306800519
:1011A7004A808CAD467F007408C39DFDE49FFF8D88
:1011B700F005F0EE8002C313D5F0FBFEE5432C24C7
:1011C70000F582E4347EF583EEF0EA600885480A8C
:1011D7008A8202128122AE82AF83907F97E0FD530D
:1011E70005FB74044DFC7A007B00C3EA9EEB9F501D
:1011F7000E907F97EDF0ECF00ABA00EE0B80EB2231
:10120700AE82AF83907F97E0FD5305FB74044DFCDE
:101217007A007B00C3EA9EEB9F5027907F97EDF003
:101227007900C3E9952550030980F7907F97ECF083
:101237007900C3E9952550030980F70ABA00D50B51
:1012470080D222AF82907F97E0FE5306FB7D00C3DA
:10125700ED9F5025E50A30E00543060280068E041F
:1012670074FD5CFE907F97EEF0E50AC313F50A90D4
:101277007F9774044EF00D80D622AF82907F97E05F
:10128700FE5306FB7D00C3ED9F503BE50A30E005AA
:1012970043060280068E0474FD5CFE907F97EEF095
:1012A7007C00C3EC952650030C80F7E50AC313F5C1
:1012B7000A907F9774044EF07C00C3EC9526500388
:1012C7000C80F70D80C0227F00907F99E0FE30E50B
:1012D700027F01907F99E0FE30E603430702907F8B
:1012E7009AE0FE30E703430704907F9BE0FE30E57A
:1012F70003430708907F9AE0FE53067F8F05E4FFBC
:10130700FCEE4FF582EC4DF58322E582547FF4FF26
:10131700907F97E05FF0747F550AFF907F97E04FCB
:10132700F022858222850A23850B24850C25850DCD
:10133700262200227E567F021EBEFF011FEE4F703F
:10134700F722750A05750B001213A6AE82AF837CD0
:10135700007D00C3EC9EED9F501AC007C006C00574
:10136700C004121339D004D005D006D0070CBC0036
:10137700E20D80DF22AE82AF837C007D00C3EC9E4E
:10138700ED9F501AC007C006C005C00412133BD01A
:0F13970004D005D006D0070CBC00E20D80DF2289
:03004300021B009D
:101B0000020110000201630002016400020165008D
:101B1000020166000201670002016800020169001B
:101B200002016A0002016B0002016C0002019300D5
:101B30000201BA000201BB000201BC000201BD00AB
:101B40000201BE000201BF000201C0000201C1008B
:081B50000201C2000201C30002
:1013A6007A10E4FBFCE58225E0F582E58333F583DC
:1013B600EB33FBEC33FCEB950AF5F0EC950B4006B2
:0913C600FCABF0438201DADD22E8
:0600A000E478FFF6D8FD34
:10007E007900E94400601B7A009014617800759253
:10008E0020E493F2A308B800020592D9F4DAF275CF
:02009E0092FFCF
:1000A6007800E84400600A7900759220E4F309D8E4
:1000B600FC7800E84400600C7900902000E4F0A38E
:0400C600D8FCD9FA8F
:0D00710075814A1213CFE582600302006E14
:0413CF007582002201
:00000001FF
# Copy this file to /etc/udev/rules.d/
ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
# Please keep this list sorted by VID:PID
# opendous and estick
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204f", MODE="664", GROUP="plugdev"
# Original FT232/FT245 VID:PID
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="664", GROUP="plugdev"
# Original FT2232 VID:PID
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="664", GROUP="plugdev"
# Original FT4232 VID:PID
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="664", GROUP="plugdev"
# Original FT232H VID:PID
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="664", GROUP="plugdev"
# DISTORTEC JTAG-lock-pick Tiny 2
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8220", MODE="664", GROUP="plugdev"
# TUMPA, TUMPA Lite
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a99", MODE="664", GROUP="plugdev"
# XDS100v2
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", MODE="664", GROUP="plugdev"
# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca0", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca1", MODE="664", GROUP="plugdev"
# TI/Luminary Stellaris Evaluation Board FTDI (several)
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcd9", MODE="664", GROUP="plugdev"
# TI/Luminary Stellaris In-Circuit Debug Interface FTDI (ICDI) Board
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcda", MODE="664", GROUP="plugdev"
# egnite Turtelizer 2
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bdc8", MODE="664", GROUP="plugdev"
# Section5 ICEbear
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c140", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c141", MODE="664", GROUP="plugdev"
# Amontec JTAGkey and JTAGkey-tiny
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="664", GROUP="plugdev"
# TI ICDI
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="c32a", MODE="664", GROUP="plugdev"
# STLink v1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE="664", GROUP="plugdev"
# STLink v2
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="664", GROUP="plugdev"
# STLink v2-1
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="664", GROUP="plugdev"
# Hilscher NXHX Boards
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0028", MODE="664", GROUP="plugdev"
# Hitex STR9-comStick
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002c", MODE="664", GROUP="plugdev"
# Hitex STM32-PerformanceStick
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002d", MODE="664", GROUP="plugdev"
# Amontec JTAGkey-HiSpeed
ATTRS{idVendor}=="0fbb", ATTRS{idProduct}=="1000", MODE="664", GROUP="plugdev"
# IAR J-Link USB
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0102", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0103", MODE="664", GROUP="plugdev"
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0104", MODE="664", GROUP="plugdev"
# J-Link-OB (onboard)
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE="664", GROUP="plugdev"
# Raisonance RLink
ATTRS{idVendor}=="138e", ATTRS{idProduct}=="9000", MODE="664", GROUP="plugdev"
# Debug Board for Neo1973
ATTRS{idVendor}=="1457", ATTRS{idProduct}=="5118", MODE="664", GROUP="plugdev"
# Olimex ARM-USB-OCD
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev"
# Olimex ARM-USB-OCD-TINY
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0004", MODE="664", GROUP="plugdev"
# Olimex ARM-JTAG-EW
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="001e", MODE="664", GROUP="plugdev"
# Olimex ARM-USB-OCD-TINY-H
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"
# Olimex ARM-USB-OCD-H
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002b", MODE="664", GROUP="plugdev"
# USBprog with OpenOCD firmware
ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c63", MODE="664", GROUP="plugdev"
# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="664", GROUP="plugdev"
# Marvell Sheevaplug
ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="664", GROUP="plugdev"
# CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"
LABEL="openocd_rules_end"
This code is an example of using the openocd debug message system.
Before the message output is seen in the debug window, the functionality
will need enabling:
From the gdb prompt:
monitor target_request debugmsgs enable
monitor trace point 1
From the Telnet prompt:
target_request debugmsgs enable
trace point 1
To see how many times the trace point was hit:
(monitor) trace point 1
Spen
spen@spen-soft.co.uk
/***************************************************************************
* Copyright (C) 2008 by Dominic Rath *
* Dominic.Rath@gmx.de *
* Copyright (C) 2008 by Spencer Oliver *
* spen@spen-soft.co.uk *
* Copyright (C) 2008 by Frederik Kriewtz *
* frederik@kriewitz.eu *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#include "dcc_stdio.h"
#define TARGET_REQ_TRACEMSG 0x00
#define TARGET_REQ_DEBUGMSG_ASCII 0x01
#define TARGET_REQ_DEBUGMSG_HEXMSG(size) (0x01 | ((size & 0xff) << 8))
#define TARGET_REQ_DEBUGCHAR 0x02
#if defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_6SM__)
/* we use the System Control Block DCRDR reg to simulate a arm7_9 dcc channel
* DCRDR[7:0] is used by target for status
* DCRDR[15:8] is used by target for write buffer
* DCRDR[23:16] is used for by host for status
* DCRDR[31:24] is used for by host for write buffer */
#define NVIC_DBG_DATA_R (*((volatile unsigned short *)0xE000EDF8))
#define BUSY 1
void dbg_write(unsigned long dcc_data)
{
int len = 4;
while (len--)
{
/* wait for data ready */
while (NVIC_DBG_DATA_R & BUSY);
/* write our data and set write flag - tell host there is data*/
NVIC_DBG_DATA_R = (unsigned short)(((dcc_data & 0xff) << 8) | BUSY);
dcc_data >>= 8;
}
}
#elif defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5T__)
void dbg_write(unsigned long dcc_data)
{
unsigned long dcc_status;
do {
asm volatile("mrc p14, 0, %0, c0, c0" : "=r" (dcc_status));
} while (dcc_status & 0x2);
asm volatile("mcr p14, 0, %0, c1, c0" : : "r" (dcc_data));
}
#else
#error unsupported target
#endif
void dbg_trace_point(unsigned long number)
{
dbg_write(TARGET_REQ_TRACEMSG | (number << 8));
}
void dbg_write_u32(const unsigned long *val, long len)
{
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(4) | ((len & 0xffff) << 16));
while (len > 0)
{
dbg_write(*val);
val++;
len--;
}
}
void dbg_write_u16(const unsigned short *val, long len)
{
unsigned long dcc_data;
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(2) | ((len & 0xffff) << 16));
while (len > 0)
{
dcc_data = val[0]
| ((len > 1) ? val[1] << 16: 0x0000);
dbg_write(dcc_data);
val += 2;
len -= 2;
}
}
void dbg_write_u8(const unsigned char *val, long len)
{
unsigned long dcc_data;
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(1) | ((len & 0xffff) << 16));
while (len > 0)
{
dcc_data = val[0]
| ((len > 1) ? val[1] << 8 : 0x00)
| ((len > 2) ? val[2] << 16 : 0x00)
| ((len > 3) ? val[3] << 24 : 0x00);
dbg_write(dcc_data);
val += 4;
len -= 4;
}
}
void dbg_write_str(const char *msg)
{
long len;
unsigned long dcc_data;
for (len = 0; msg[len] && (len < 65536); len++);
dbg_write(TARGET_REQ_DEBUGMSG_ASCII | ((len & 0xffff) << 16));
while (len > 0)
{
dcc_data = msg[0]
| ((len > 1) ? msg[1] << 8 : 0x00)
| ((len > 2) ? msg[2] << 16 : 0x00)
| ((len > 3) ? msg[3] << 24 : 0x00);
dbg_write(dcc_data);
msg += 4;
len -= 4;
}
}
void dbg_write_char(char msg)
{
dbg_write(TARGET_REQ_DEBUGCHAR | ((msg & 0xff) << 16));
}
/***************************************************************************
* Copyright (C) 2008 by Dominic Rath *
* Dominic.Rath@gmx.de *
* Copyright (C) 2008 by Spencer Oliver *
* spen@spen-soft.co.uk *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#ifndef DCC_STDIO_H
#define DCC_STDIO_H
void dbg_trace_point(unsigned long number);
void dbg_write_u32(const unsigned long *val, long len);
void dbg_write_u16(const unsigned short *val, long len);
void dbg_write_u8(const unsigned char *val, long len);
void dbg_write_str(const char *msg);
void dbg_write_char(char msg);
#endif /* DCC_STDIO_H */
/***************************************************************************
* Copyright (C) 2008 by Spencer Oliver *
* spen@spen-soft.co.uk *
* Copyright (C) 2008 by Frederik Kriewtz *
* frederik@kriewitz.eu *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
#include "dcc_stdio.h"
/* enable openocd debugmsg at the gdb prompt:
* monitor target_request debugmsgs enable
*
* create a trace point:
* monitor trace point 1
*
* to show how often the trace point was hit:
* monitor trace point
*/
int main(void)
{
dbg_write_str("hello world");
dbg_write_char('t');
dbg_write_char('e');
dbg_write_char('s');
dbg_write_char('t');
dbg_write_char('\n');
unsigned long test_u32 = 0x01234567;
dbg_write_u32(&test_u32, 1);
static const unsigned short test_u16[] = {0x0123, 0x4567, 0x89AB, 0xCDEF, 0x0123, 0x4567, 0x89AB, 0xCDEF};
dbg_write_u16(test_u16, 8);
static const unsigned char test_u8[] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0XDD, 0xEE, 0xFF};
dbg_write_u8(test_u8, 16);
while(1)
{
dbg_trace_point(0);
}
}
#----------------------------------------
# Purpose - Create some $BIT variables
# Create $K and $M variables
# and some bit field extraction variables.
# Creat helper variables ...
# BIT0.. BIT31
for { set x 0 } { $x < 32 } { set x [expr $x + 1]} {
set vn [format "BIT%d" $x]
global $vn
set $vn [expr (1 << $x)]
}
# Create K bytes values
# __1K ... to __2048K
for { set x 1 } { $x < 2048 } { set x [expr $x * 2]} {
set vn [format "__%dK" $x]
global $vn
set $vn [expr (1024 * $x)]
}
# Create M bytes values
# __1M ... to __2048K
for { set x 1 } { $x < 2048 } { set x [expr $x * 2]} {
set vn [format "__%dM" $x]
global $vn
set $vn [expr (1024 * 1024 * $x)]
}
proc create_mask { MSB LSB } {
return [expr (((1 << ($MSB - $LSB + 1))-1) << $LSB)]
}
# Cut Bits $MSB to $LSB out of this value.
# Example: % format "0x%08x" [extract_bitfield 0x12345678 27 16]
# Result: 0x02340000
proc extract_bitfield { VALUE MSB LSB } {
return [expr [create_mask $MSB $LSB] & $VALUE]
}
# Cut bits $MSB to $LSB out of this value
# and shift (normalize) them down to bit 0.
#
# Example: % format "0x%08x" [normalize_bitfield 0x12345678 27 16]
# Result: 0x00000234
#
proc normalize_bitfield { VALUE MSB LSB } {
return [expr [extract_bitfield $VALUE $MSB $LSB ] >> $LSB]
}
proc show_normalize_bitfield { VALUE MSB LSB } {
set m [create_mask $MSB $LSB]
set mr [expr $VALUE & $m]
set sr [expr $mr >> $LSB]
echo [format "((0x%08x & 0x%08x) -> 0x%08x) >> %2d => (0x%x) %5d " $VALUE $m $mr $LSB $sr $sr]
return $sr
}
# board config file for AcTux3/XBA IXP42x board
# Date: 2010-12-16
# Author: Michael Schwingen <michael@schwingen.org>
reset_config trst_and_srst separate
adapter_nsrst_delay 100
jtag_ntrst_delay 100
source [find target/ixp42x.cfg]
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 0x10000 -work-area-backup 0
$_TARGETNAME configure -event reset-init { init_actux3 }
proc init_actux3 { } {
##########################################################################
# setup expansion bus CS
##########################################################################
mww 0xc4000000 0xbd113842 ;#CS0 : Flash, write enabled @0x50000000
mww 0xc4000004 0x94d10013 ;#CS1
mww 0xc4000008 0x95960003 ;#CS2
mww 0xc400000c 0x00000000 ;#CS3
mww 0xc4000010 0x80900003 ;#CS4
mww 0xc4000014 0x9d520003 ;#CS5
mww 0xc4000018 0x81860001 ;#CS6
mww 0xc400001c 0x80900003 ;#CS7
ixp42x_init_sdram $::IXP42x_SDRAM_16MB_4Mx16_1BANK 2100 3
#mww 0xc4000020 0xffffee ;# CFG0: remove expansion bus boot flash mirror at 0x00000000
ixp42x_set_bigendian
flash probe 0
}
proc flash_boot { {FILE "/tftpboot/actux3/u-boot.bin"} } {
echo "writing bootloader: $FILE"
flash write_image erase $FILE 0x50000000 bin
}
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x50000000 0x400000 2 2 $_TARGETNAME
init
reset init
# setup to debug u-boot in flash
proc uboot_debug {} {
gdb_breakpoint_override hard
xscale vector_catch 0xFF
xscale vector_table low 1 0xe59ff018
xscale vector_table low 2 0xe59ff018
xscale vector_table low 3 0xe59ff018
xscale vector_table low 4 0xe59ff018
xscale vector_table low 5 0xe59ff018
xscale vector_table low 6 0xe59ff018
xscale vector_table low 7 0xe59ff018
xscale vector_table high 1 0xe59ff018
xscale vector_table high 2 0xe59ff018
xscale vector_table high 3 0xe59ff018
xscale vector_table high 4 0xe59ff018
xscale vector_table high 5 0xe59ff018
xscale vector_table high 6 0xe59ff018
xscale vector_table high 7 0xe59ff018
}
source [find target/alphascale_asm9260t.cfg]
reset_config trst_and_srst
$_TARGETNAME configure -event reset-init {
echo "Configure clock"
# Enable SRAM clk
mww 0x80040024 0x4
# Enable IRQ clk
mww 0x80040034 0x100
# Enable DMA0,1 clk
mww 0x80040024 0x600
# Make sysre syspll is enabled
mww 0x80040238 0x750
#CPU = PLLCLK/2
mww 0x8004017C 0x2
#SYSAHBCLK = CPUCLK/2
mww 0x80040180 0x2
# Set PLL freq to 480MHz
mww 0x80040100 480
# normally we shoul waiting here until we get 0x1 (0x80040104)&0x1)==0x0)
sleep 100
# select PLL as main source
mww 0x80040120 0x1
# disable and enble main clk to update changes?
mww 0x80040124 0x0
mww 0x80040124 0x1
echo "Configure memory"
#enable EMI CLK
mww 0x80040024 0x40
# configure memory controller for internal SRAM
mww 0x80700000 0x1188
# change default emi clk delay
mww 0x8004034C 0xA0503
# make sure chip_select_register2_low has correct value (why?)
mww 0x8070001c 0x20000000
# set type to sdram and size to 32MB
mww 0x8070005c 0xa
# configure internal SDRAM timing
mww 0x80700004 0x024996d9
# configure Static Memory timing
mww 0x80700094 0x00542b4f
echo "Configure uart4"
# enable pinctrl clk
mww 0x80040024 0x2000000
# mux GPIO3_0 and GPIO3_1 to UART4
mww 0x80044060 0x2
mww 0x80044064 0x2
# configure UART4CLKDIV
mww 0x800401a8 0x1
# enable uart4 clk
mww 0x80040024 0x8000
# clear softrst and clkgate on uart4
mww 0x80010008 0xC0000000
# set bandrate 115200 12M
mww 0x80010030 0x00062070
# enable Rx&Tx
mww 0x80010024 0x301
# clear hw control
mww 0x80010028 0xc000
}
$_TARGETNAME configure -work-area-phys 0x21ffe000 -work-area-virt 0xc1ffe000 -work-area-size 0x1000
$_TARGETNAME arm7_9 fast_memory_access enable
$_TARGETNAME arm7_9 dcc_downloads enable
#
# Cyclone V SocKit board
# http://www.altera.com/b/arrow-sockit.html
#
# Software support page:
# http://www.rocketboards.org/
# openocd does not currently support the on-board USB Blaster II.
# Install the JTAG header and use a USB Blaster instead.
interface usb_blaster
source [find target/altera_fpgasoc.cfg]
# If the USB Blaster II were supported, these settings would be needed
#usb_blaster_vid_pid 0x6810 0x09fb
#usb_blaster_device_desc "USB-Blaster II"
adapter_khz 100
# DANGER!!!! early work in progress for this PCB/target.
#
# The most basic operations work well enough that it is
# useful to have this in the repository for cooperation
# alpha testing purposes.
#
# TI AM3517
#
# http://focus.ti.com/docs/prod/folders/print/am3517.html
# http://processors.wiki.ti.com/index.php/Debug_Access_Port_(DAP)
# http://processors.wiki.ti.com/index.php?title=How_to_Find_the_Silicon_Revision_of_your_OMAP35x
set CHIPTYPE "am35x"
source [find target/amdm37x.cfg]
# The TI-14 JTAG connector does not have srst. CPU reset is handled in
# hardware.
reset_config trst_only
# "amdm37x_dbginit am35x.cpu" needs to be run after init.
# This board is from ARM and has an samsung s3c45101x01 chip
source [find target/samsung_s3c4510.cfg]
#
# FIXME:
# Add (A) sdram configuration
# Add (B) flash cfi programing configuration
#
#
# http://wikidevi.com/wiki/ASUS_RT-N16
#
set partition_list {
CFE { Bootloader 0xbc000000 0x00040000 }
firmware { "Kernel+rootfs" 0xbc040000 0x01fa0000 }
nvram { "Config space" 0xbdfe0000 0x00020000 }
}
source [find target/bcm4718.cfg]
# External 32MB NOR Flash (Macronix MX29GL256EHTI2I-90Q)
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0xbc000000 0x02000000 1 1 $_TARGETNAME x16_as_x8
#
# http://wikidevi.com/wiki/Asus_RT-N66U
#
echo "ATTENTION: you need to solder a 4.7-10k pullup resistor to pin 21 of flash IC"
echo "to enable JTAG, see http://wl500g.info/album.php?albumid=28&attachmentid=8991 ,"
echo "there is an unpopulated footprint near U8.\n"
set partition_list {
CFE { Bootloader 0xbc000000 0x00040000 }
firmware { "Kernel+rootfs" 0xbc040000 0x01fa0000 }
nvram { "Config space" 0xbdfe0000 0x00020000 }
}
source [find target/bcm4706.cfg]
# External 32MB NOR Flash (Spansion S29GL256P10TF101
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0xbc000000 0x02000000 2 2 $_TARGETNAME
# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4394
#
# use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst srst_pulls_trst
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME cap7
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
if { [info exists CPUTAPID] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x40700f0f
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME
$_TARGETNAME configure -event reset-start {
# start off real slow when we're running off internal RC oscillator
adapter_khz 32
}
proc peek32 {address} {
mem2array t 32 $address 1
return $t(0)
}
# Wait for an expression to be true with a timeout
proc wait_state {expression} {
for {set i 0} {$i < 1000} {set i [expr $i + 1]} {
if {[uplevel 1 $expression] == 0} {
return
}
}
return -code 1 "Timed out"
}
# Use a global variable here to be able to tinker interactively with
# post reset jtag frequency.
global post_reset_khz
# Danger!!!! Even 16MHz kinda works with this target, but
# it needs to be as low as 2000kHz to be stable.
set post_reset_khz 2000
$_TARGETNAME configure -event reset-init {
echo "Configuring master clock"
# disable watchdog
mww 0xfffffd44 0xff008000
# enable user reset
mww 0xfffffd08 0xa5000001
# Enable main oscillator
mww 0xFFFFFc20 0x00000f01
wait_state {expr {([peek32 0xFFFFFC68] & 0x1) == 0}}
# Set PLLA to 96MHz
mww 0xFFFFFc28 0x20072801
wait_state {expr {([peek32 0xFFFFFC68] & 0x2) == 0}}
# Select prescaler
mww 0xFFFFFC30 0x00000004
wait_state {expr {([peek32 0xFFFFFC68] & 0x8) == 0}}
# Select master clock to 48MHz
mww 0xFFFFFC30 0x00000006
wait_state {expr {([peek32 0xFFFFFC68] & 0x8) == 0}}
echo "Master clock ok."
# Now that we're up and running, crank up speed!
global post_reset_khz ; adapter_khz $post_reset_khz
echo "Configuring the SDRAM controller..."
# Configure EBI Chip select for SDRAM
mww 0xFFFFEF30 0x00000102
# Enable clock on EBI PIOs
mww 0xFFFFFC10 0x00000004
# Configure PIO for SDRAM
mww 0xFFFFF470 0xFFFF0000
mww 0xFFFFF474 0x00000000
mww 0xFFFFF404 0xFFFF0000
# Configure SDRAMC CR
mww 0xFFFFEA08 0xA63392F9
# NOP command
mww 0xFFFFEA00 0x1
mww 0x20000000 0
# Precharge All Banks command
mww 0xFFFFEA00 0x2
mww 0x20000000 0
# Set 1st CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000010 0x00000001
# Set 2nd CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000020 0x00000002
# Set 3rd CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000030 0x00000003
# Set 4th CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000040 0x00000004
# Set 5th CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000050 0x00000005
# Set 6th CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000060 0x00000006
# Set 7th CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000070 0x00000007
# Set 8th CBR
mww 0xFFFFEA00 0x00000004
mww 0x20000080 0x00000008
# Set LMR operation
mww 0xFFFFEA00 0x00000003
# Perform LMR burst=1, lat=2
mww 0x20000020 0xCAFEDEDE
# Set Refresh Timer
mww 0xFFFFEA04 0x00000203
# Set Normal mode
mww 0xFFFFEA00 0x00000000
mww 0x20000000 0x00000000
#remap internal memory at address 0x0
mww 0xffffef00 0x3
echo "SDRAM configuration ok."
}
$_TARGETNAME configure -work-area-phys 0x00200000 -work-area-size 0x4000 -work-area-backup 0
arm7_9 dcc_downloads enable
arm7_9 fast_memory_access enable
#set _FLASHNAME $_CHIPNAME.flash
#flash bank $_FLASHNAME at91sam7 0 0 0 0 $_TARGETNAME 0 0 0 0 0 0 0 18432
#Script for AT91EB40a
# FIXME use some standard target config, maybe create one from this
#
# source [find target/...cfg]
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME at91eb40a
}
if { [info exists ENDIAN] } {
set _ENDIAN $ENDIAN
} else {
set _ENDIAN little
}
if { [info exists CPUTAPID] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x1f0f0f0f
}
#Atmel ties SRST & TRST together, at which point it makes
#no sense to use TRST, but use TMS instead.
#
#The annoying thing with tying SRST & TRST together is that
#there is no way to halt the CPU *before and during* the
#SRST reset, which means that the CPU will run a number
#of cycles before it can be halted(as much as milliseconds).
reset_config srst_only srst_pulls_trst
#jtag scan chain
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
#target configuration
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME
# speed up memory downloads
arm7_9 fast_memory_access enable
arm7_9 dcc_downloads enable
#flash driver
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x01000000 0x200000 2 2 $_TARGETNAME
# required for usable performance. Used for lots of
# other things than flash programming.
$_TARGETNAME configure -work-area-phys 0x00030000 -work-area-size 0x10000 -work-area-backup 0
$_TARGETNAME configure -event reset-init {
echo "Running reset init script for AT91EB40A"
# Reset script for AT91EB40a
reg cpsr 0x000000D3
mww 0xFFE00020 0x1
mww 0xFFE00024 0x00000000
mww 0xFFE00000 0x01002539
mww 0xFFFFF124 0xFFFFFFFF
mww 0xffff0010 0x100
mww 0xffff0034 0x100
}
# This target is pretty snappy...
adapter_khz 16000
#
# This is for the "at91rm9200-DK" (not the EK) eval board.
#
# The two are probably very simular.... I have DK...
#
# It has atmel at91rm9200 chip.
source [find target/at91rm9200.cfg]
reset_config trst_and_srst
$_TARGETNAME configure -event gdb-attach { reset init }
$_TARGETNAME configure -event reset-init { at91rm9200_dk_init }
#flash bank <name> <driver> <base> <size> <chip_width> <bus_width> <target>
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x10000000 0x00200000 2 2 $_TARGETNAME
proc at91rm9200_dk_init { } {
# Try to run at 1khz... Yea, that slow!
# Chip is really running @ 32khz
adapter_khz 8
mww 0xfffffc64 0xffffffff
## disable all clocks but system clock
mww 0xfffffc04 0xfffffffe
## disable all clocks to pioa and piob
mww 0xfffffc14 0xffffffc3
## master clock = slow cpu = slow
## (means the CPU is running at 32khz!)
mww 0xfffffc30 0
## main osc enable
mww 0xfffffc20 0x0000ff01
## program pllA
mww 0xfffffc28 0x20263e04
## program pllB
mww 0xfffffc2c 0x10483e0e
## let pll settle... sleep 100msec
sleep 100
## switch to fast clock
mww 0xfffffc30 0x202
## Sleep some - (go read)
sleep 100
#========================================
# CPU now runs at 180mhz
# SYS runs at 60mhz.
adapter_khz 40000
#========================================
## set memc for all memories
mww 0xffffff60 0x02
## program smc controller
mww 0xffffff70 0x3284
## init sdram
mww 0xffffff98 0x7fffffd0
## all banks precharge
mww 0xffffff80 0x02
## touch sdram chip to make it work
mww 0x20000000 0
## sdram controller mode register
mww 0xffffff90 0x04
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
mww 0x20000000 0
## sdram controller mode register
## Refresh, etc....
mww 0xffffff90 0x03
mww 0x20000080 0
mww 0xffffff94 0x1f4
mww 0x20000080 0
mww 0xffffff90 0x10
mww 0x20000000 0
mww 0xffffff00 0x01
}
#
# Copyright 2010 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
#
# under GPLv2 Only
#
# This is for the "at91rm9200-ek" eval board.
#
#
# It has atmel at91rm9200 chip.
source [find target/at91rm9200.cfg]
reset_config trst_and_srst
$_TARGETNAME configure -event gdb-attach { reset init }
$_TARGETNAME configure -event reset-init { at91rm9200_ek_init }
## flash bank <name> <driver> <base> <size> <chip_width> <bus_width> <target>
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0x10000000 0x00800000 2 2 $_TARGETNAME
# The chip may run @ 32khz, so set a really low JTAG speed
adapter_khz 8
proc at91rm9200_ek_init { } {
# Try to run at 1khz... Yea, that slow!
# Chip is really running @ 32khz
adapter_khz 8
mww 0xfffffc64 0xffffffff
## disable all clocks but system clock
mww 0xfffffc04 0xfffffffe
## disable all clocks to pioa and piob
mww 0xfffffc14 0xffffffc3
## master clock = slow cpu = slow
## (means the CPU is running at 32khz!)
mww 0xfffffc30 0
## main osc enable
mww 0xfffffc20 0x0000ff01
## MC_PUP
mww 0xFFFFFF50 0x00000000
## MC_PUER: Memory controller protection unit disable
mww 0xFFFFFF54 0x00000000
## EBI_CFGR
mww 0xFFFFFF64 0x00000000
## SMC2_CSR[0]: 16bit, 2 TDF, 4 WS
mww 0xFFFFFF70 0x00003284
## Init Clocks
## CKGR_PLLAR
mww 0xFFFFFC28 0x2000BF05
## PLLAR: 179,712000 MHz for PCK
mww 0xFFFFFC28 0x20263E04
sleep 100
## PMC_MCKR
mww 0xFFFFFC30 0x00000100
sleep 100
## ;MCKR : PCK/3 = MCK Master Clock = 59,904000MHz from PLLA
mww 0xFFFFFC30 0x00000202
sleep 100
#========================================
# CPU now runs at 180mhz
# SYS runs at 60mhz.
adapter_khz 40000
#========================================
## Init SDRAM
## PIOC_ASR: Configure PIOC as peripheral (D16/D31)
mww 0xFFFFF870 0xFFFF0000
## PIOC_BSR:
mww 0xFFFFF874 0x00000000
## PIOC_PDR:
mww 0xFFFFF804 0xFFFF0000
## EBI_CSA : CS1=SDRAM
mww 0xFFFFFF60 0x00000002
## EBI_CFGR:
mww 0xFFFFFF64 0x00000000
## SDRC_CR :
mww 0xFFFFFF98 0x2188c155
## SDRC_MR : Precharge All
mww 0xFFFFFF90 0x00000002
## access SDRAM
mww 0x20000000 0x00000000
## SDRC_MR : Refresh
mww 0xFFFFFF90 0x00000004
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
## SDRC_MR : Load Mode Register
mww 0xFFFFFF90 0x00000003
## access SDRAM
mww 0x20000080 0x00000000
## SDRC_TR : Write refresh rate
mww 0xFFFFFF94 0x000002E0
## access SDRAM
mww 0x20000000 0x00000000
## SDRC_MR : Normal Mode
mww 0xFFFFFF90 0x00000000
## access SDRAM
mww 0x20000000 0x00000000
}
################################################################################
# Atmel AT91SAM9261-EK eval board
################################################################################
source [find mem_helper.tcl]
source [find target/at91sam9261.cfg]
uplevel #0 [list source [find chip/atmel/at91/hardware.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9261.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9261_matrix.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9_init.cfg]]
# By default S1 is open and this means that NTRST is not connected.
# The reset_config in target/at91sam9261.cfg is overridden here.
# (or S1 must be populated with a 0 Ohm resistor)
reset_config srst_only
scan_chain
$_TARGETNAME configure -event gdb-attach { reset init }
$_TARGETNAME configure -event reset-init { at91sam9261ek_reset_init }
$_TARGETNAME configure -event reset-start { at91sam9_reset_start }
proc at91sam9261ek_reset_init { } {
;# for ppla at 199 Mhz
set config(master_pll_div) 15
set config(master_pll_mul) 162
;# for ppla at 239 Mhz
;# set master_pll_div 1
;# set master_pll_mul 13
set val [expr $::AT91_WDT_WDV] ;# Counter Value
set val [expr ($val | $::AT91_WDT_WDDIS)] ;# Watchdog Disable
set val [expr ($val | $::AT91_WDT_WDD)] ;# Delta Value
set val [expr ($val | $::AT91_WDT_WDDBGHLT)] ;# Debug Halt
set val [expr ($val | $::AT91_WDT_WDIDLEHLT)] ;# Idle Halt
set config(wdt_mr_val) $val
;# EBI_CSA, no pull-ups for D[15:0], CS1 SDRAM, CS3 NAND Flash
set config(matrix_ebicsa_addr) $::AT91_MATRIX_EBICSA
set config(matrix_ebicsa_val) [expr ($::AT91_MATRIX_DBPUC | $::AT91_MATRIX_CS1A_SDRAMC)]
;# SDRAMC_CR - Configuration register
set val [expr $::AT91_SDRAMC_NC_9]
set val [expr ($val | $::AT91_SDRAMC_NR_13)]
set val [expr ($val | $::AT91_SDRAMC_NB_4)]
set val [expr ($val | $::AT91_SDRAMC_CAS_3)]
set val [expr ($val | $::AT91_SDRAMC_DBW_32)]
set val [expr ($val | (2 << 8))] ;# Write Recovery Delay
set val [expr ($val | (7 << 12))] ;# Row Cycle Delay
set val [expr ($val | (3 << 16))] ;# Row Precharge Delay
set val [expr ($val | (2 << 20))] ;# Row to Column Delay
set val [expr ($val | (5 << 24))] ;# Active to Precharge Delay
set val [expr ($val | (8 << 28))] ;# Exit Self Refresh to Active Delay
set config(sdram_cr_val) $val
set config(sdram_tr_val) 0x13c
set config(sdram_base) $::AT91_CHIPSELECT_1
at91sam9_reset_init $config
}
################################################################################
# Atmel AT91SAM9263-EK eval board
################################################################################
source [find mem_helper.tcl]
source [find target/at91sam9263.cfg]
uplevel #0 [list source [find chip/atmel/at91/hardware.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9263.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9263_matrix.cfg]]
uplevel #0 [list source [find chip/atmel/at91/at91sam9_init.cfg]]
# By default S1 is open and this means that NTRST is not connected.
# The reset_config in target/at91sam9263.cfg is overridden here.
# (or S1 must be populated with a 0 Ohm resistor)
reset_config srst_only
scan_chain
$_TARGETNAME configure -event gdb-attach { reset init }
$_TARGETNAME configure -event reset-init { at91sam9263ek_reset_init }
$_TARGETNAME configure -event reset-start { at91sam9_reset_start }
proc at91sam9263ek_reset_init { } {
set config(master_pll_div) 14
set config(master_pll_mul) 171
set val [expr $::AT91_WDT_WDV] ;# Counter Value
set val [expr ($val | $::AT91_WDT_WDDIS)] ;# Watchdog Disable
set val [expr ($val | $::AT91_WDT_WDD)] ;# Delta Value
set val [expr ($val | $::AT91_WDT_WDDBGHLT)] ;# Debug Halt
set val [expr ($val | $::AT91_WDT_WDIDLEHLT)] ;# Idle Halt
set config(wdt_mr_val) $val
set config(sdram_piod) 1
;# EBI_CSA, no pull-ups for D[15:0], CS1 SDRAM, CS3 NAND Flash
set config(matrix_ebicsa_addr) $::AT91_MATRIX_EBI0CSA
set val [expr $::AT91_MATRIX_EBI0_DBPUC]
set val [expr ($val | $::AT91_MATRIX_EBI0_VDDIOMSEL_3_3V)]
set val [expr ($val | $::AT91_MATRIX_EBI0_CS1A_SDRAMC)]
set config(matrix_ebicsa_val) $val
;# SDRAMC_CR - Configuration register
set val [expr $::AT91_SDRAMC_NC_9]
set val [expr ($val | $::AT91_SDRAMC_NR_13)]
set val [expr ($val | $::AT91_SDRAMC_NB_4)]
set val [expr ($val | $::AT91_SDRAMC_CAS_3)]
set val [expr ($val | $::AT91_SDRAMC_DBW_32)]
set val [expr ($val | (1 << 8))] ;# Write Recovery Delay
set val [expr ($val | (7 << 12))] ;# Row Cycle Delay
set val [expr ($val | (2 << 16))] ;# Row Precharge Delay
set val [expr ($val | (2 << 20))] ;# Row to Column Delay
set val [expr ($val | (5 << 24))] ;# Active to Precharge Delay
set val [expr ($val | (1 << 28))] ;# Exit Self Refresh to Active Delay
set config(sdram_cr_val) $val
set config(sdram_tr_val) 0x13c
set config(sdram_base) $::AT91_CHIPSELECT_1
at91sam9_reset_init $config
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment