20131104-184551

This commit is contained in:
2013-11-04 17:45:46 +00:00
parent 001e0be085
commit 95817ec8b2
106 changed files with 12070 additions and 3939 deletions
+20
View File
@@ -0,0 +1,20 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Atmel Studio Solution File, Format Version 11.00
Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "Mainboard", "Mainboard\Mainboard.cproj", "{839C4697-AB18-4132-8E80-F57DDB26ADEB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
Release|AVR = Release|AVR
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{839C4697-AB18-4132-8E80-F57DDB26ADEB}.Debug|AVR.ActiveCfg = Debug|AVR
{839C4697-AB18-4132-8E80-F57DDB26ADEB}.Debug|AVR.Build.0 = Debug|AVR
{839C4697-AB18-4132-8E80-F57DDB26ADEB}.Release|AVR.ActiveCfg = Release|AVR
{839C4697-AB18-4132-8E80-F57DDB26ADEB}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Binary file not shown.
+43
View File
@@ -0,0 +1,43 @@
Mainboard.d Mainboard.o: .././Mainboard.c \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h:
+1
View File
@@ -0,0 +1 @@
:00000001FF
Binary file not shown.
+226
View File
@@ -0,0 +1,226 @@
:100000000C9469000C9486000C9486000C94860075
:100010000C9486000C9486000C9486000C94860048
:100020000C9486000C9486000C9486000C948F022D
:100030000C94B7020C9486000C9486000C948600F5
:100040000C9486000C9486000C9486000C94860018
:100050000C9486000C9486000C9486000C94860008
:100060000C9486000C9486000C9486000C948600F8
:100070000C94860012010002FF000010ADDEEEBEFF
:1000800000010102030104030904140342006C008F
:10009000750062006200460069007300680000009D
:1000A00020034800610063006B00650072002D00B2
:1000B0004A0065006F007000610072006400790002
:1000C00000000E03300030003000300030003100FE
:1000D000000011241FBECFEFD4E0DEBFCDBF11E082
:1000E000A0E0B1E0E4ECFDE002C005900D92AE337B
:1000F000B107D9F721E0AEE3B1E001C01D92A4340D
:10010000B207E1F70E949E000C94E0060C940000F8
:100110008EBD0DB407FC10C090E485B1892785B968
:100120002FEF31EE84E0215030408040E1F700C0F5
:1001300000000DB407FEF1CF8EB5089586ED84B9A9
:1001400080E185B91DBC83E58CBD8FE39CE90197F7
:10015000F1F700C000002C9880EC0E9488008FE925
:100160009FE00197F1F700C000002C9A2C9880ECDA
:100170000E9488008FE99FE00197F1F700C000001E
:100180002C9A2F9AFFCFCF93C82F8A3019F48DE085
:100190000E94C300E8ECF0E0908195FFFDCFC09392
:1001A000CE0080E090E0CF910895CF93DF93CDB75C
:1001B000DEB760970FB6F894DEBF0FBECDBF2CE060
:1001C000E5E1F1E0DE01119601900D922A95E1F74B
:1001D0001D861E861F86188AFC012081233C51F44F
:1001E0008181813049F460E1CE0101960E943D0297
:1001F00081E003C080E001C080E060960FB6F89413
:10020000DEBF0FBECDBFDF91CF910895CF93DF93B7
:10021000CDB7DEB7A0970FB6F894DEBF0FBECDBF47
:100220008130A1F440E2BE016F5F7F4F0E9418024F
:10023000882361F018A2CE0101960E94BB0640E21D
:10024000BE016F5F7F4F82E80E946002A0960FB6EA
:10025000F894DEBF0FBECDBFDF91CF9108952F92EE
:100260003F924F925F927F928F929F92AF92CF92E6
:10027000DF92EF92FF920F931F93CF93DF93282F7C
:1002800090E06CE070E00E947105FC01EB5DFE4FB8
:10029000822F90E06CE070E00E947105895D9E4FB6
:1002A00041E00F2EF9EECF2ED12CF02D0F2EFBEECC
:1002B000EF2EF12CF02DAA24A3940CEE10E06DEE9D
:1002C00070E00F2EF0EF4F2E512CF02D68949924F2
:1002D00092F8812C6894772474F8DF0120812F3FF5
:1002E00059F1E6014883E701A8822081E8012883CB
:1002F0001C019C0121503109E9012881203841F07D
:10030000203441F0203241F0203141F4372D07C034
:1003100030E405C030E303C030E201C0382DE10114
:100320002881232BEB0128832C9120FF03C0D201CD
:100330001C9202C0E20198824F5F339603964530CB
:1003400061F6EAEEF0E08EE180831082DF91CF91DA
:100350001F910F91FF90EF90DF90CF90AF909F9003
:100360008F907F905F904F903F902F900895E8EE90
:10037000F0E080818570E9F30895AF92BF92CF924B
:10038000DF92EF92FF920F931F93CF93DF93D82EBC
:10039000D62FC72FE42FF0E02E173F0710F4C22E00
:1003A00001C0C42E0E94B7010D2F1C2F6894AA24EF
:1003B000A4F80F2EF8EEEF2EF12CF02D0F2EFEEFFD
:1003C000BF2EF02DC1EFD0E02C2D80E18C1508F46C
:1003D0002A2D2223D9F0F801922FDD2011F08081FF
:1003E00001C084918883915031969111F6CF622F8C
:1003F000615070E06F5F7F4F060F171FC21AF70141
:10040000B082C11007C0203129F007C0F701B082C7
:10041000CC2019F00E94B701D7CFDF91CF911F9167
:100420000F91FF90EF90DF90CF90BF90AF90089525
:100430008093E9009091F200941708F4492F442327
:10044000D1F0362FE62FF72FA1EFB0E09C919193DA
:100450009E2F931B9417D0F39091F20091110BC033
:1004600021E030E002C0220F331F8A95E2F7EAEE66
:10047000F0E020831082842F08956623E9F0109223
:10048000E900E8EEF0E0208120FFFDCF2091F200AE
:10049000211114C0282FE82FF92FA1EFB0E081918E
:1004A0008C938E2F821B8617D0F3E8EEF0E08081CC
:1004B0008E7F808381E0089580E0089580E0089534
:1004C000CF93DF93442329F18093E900E8EEF0E035
:1004D000808180FFFDCF8091F20081111CC0962F9A
:1004E000E62FF72FA8EEB0E0C1EFD0E08C9185FFAA
:1004F00002C08081888331968E2F891B8417B0F3C8
:10050000E8EEF0E080818E7F80838FE7808381E05A
:1005100003C080E001C080E0DF91CF9108951F9279
:100520000F920FB60F9211248F93EF93FF93E1EE8A
:10053000F0E08081108283FF12C01092E90081E018
:100540008093EB001092EC0082E18093ED0088E054
:100550008093F00010923E018FEF80930E01FF9187
:10056000EF918F910F900FBE0F901F9018951F92D3
:100570000F920FB60F9211243F924F925F926F929B
:100580007F928F929F92AF92BF92CF92DF92EF9223
:10059000FF920F931F932F933F934F935F936F930C
:1005A0007F938F939F93AF93BF93EF93FF93CF93DB
:1005B000DF93CDB7DEB72A97DEBFCDBF8091F400C1
:1005C00080FF58C21092E9008091E80083FF1FC2AB
:1005D000E1EFF0E08081898380818A83208130E0AF
:1005E0003C832B834081942F80E0822B932B9C8330
:1005F0008B83208130E03E832D834081942F80E0E7
:10060000822B932B9E838D83208130E038872F832C
:100610004081942F80E0822B932B98878F8382EFE9
:100620008093E8008A81863009F030C18B819C81FB
:10063000811523E0920709F4FDC048F4811551E0CB
:10064000950789F08115924009F01CC126C08230BF
:10065000B3E09B0709F402C108F4F6C0833093406D
:1006600009F010C105C1E4E7F0E044912F8138851D
:10067000BF0180E00E94BD010CC29A2F50815F3FF4
:1006800009F49B2F490F815033968111F6CF2F5FCC
:100690003F4F2230310539F410C020E030E040E017
:1006A00014E0A1E0B0E0C9016CE070E00E947105C7
:1006B000FC01EB5DFE4F812FE0CF842F880F880F68
:1006C000880F841B0F2EFBE1EF2EF02DE80E8E2DF0
:1006D00090E00E948305082F192F89E0D8018C93A0
:1006E00082E011968C9311971296EC9212971396C2
:1006F0001C92139714968C93149781E015968C9303
:10070000159716961C92169780EC17968C93179750
:100710008AEF18968C93F80139961A86198644E068
:10072000A12C88248394F82C9A2C0F2EF9E07F2E8C
:10073000F02DBB24BA940F2EF7E0CF2EF02D0F2E04
:10074000F5E0DF2EF02D6894662461F80F2EF3E0BB
:100750005F2EF02D56C07F2DDC012C912F3F09F428
:10076000792D670F515003965111F5CF7082418357
:10077000428213826483B5821682B78210863996CC
:100780006623C1F1832F932D6CE070E00E94710508
:100790009C012A5D3E4F482CC901B9016150710985
:1007A000DB015C915F3F01F1C082D182652F6795CB
:1007B0006627679564296283513441F0503441F0D3
:1007C000513841F0503841F4562D07C05F2D05C017
:1007D0005F2D03C0562D01C0552D5383DC018C9134
:1007E000848315821682379643942D5F3F4FB5E080
:1007F0004B12D2CFA985BA851196BA87A9871297CD
:1008000071F04984342D3A84842D932D6CE070E08E
:100810000E9471058B5D9E4F542F6A2D9CCF2F81B6
:1008200038854E2DB80181E00E94BD01C8010E94AB
:100830001E062FC1E6E8F0E044912F813885BF0104
:1008400080E00E94BD0125C1EAE8F0E044912F81DB
:100850003885BF0180E00E94BD011BC1E0EAF0E0E5
:1008600044912F813885BF0180E00E94BD0111C1F4
:10087000E2ECF0E044912F813885BF0180E00E94D6
:10088000BD0107C181E28093EB0003C1853071F4A3
:100890008EEF8093E800E8EEF0E0808180FFFDCFEE
:1008A0008B819C8180688093E300F3C08930C1F420
:1008B0009981911160C08B819C81019769F481E0DD
:1008C00080933E018EEF8093E80010920E0180919C
:1008D0000E010E942F01DDC081E28093EB00D9C0A0
:1008E000883089F49981903809F057C0E8EEF0E03B
:1008F000808180FFFDCF80913E018093F1008EEFDB
:100900008093E800C6C081111CC0E8EEF0E0808151
:1009100080FFFDCF8981823859F48D81E9EEF0E0C6
:1009200080838091EB0085FB882780F9108201C0CD
:1009300080E0E1EFF0E0808310828EEF8093E800AA
:10094000A8C08B30C1F48981803211F0811155C06B
:100950008D819E818230910550F480930E018EEF3F
:100960008093E80080910E010E942F0192C081E2E5
:100970008093EB008EC08A3081F489818038E9F55C
:10098000E8EEF0E0808180FFFDCF80910E01809342
:10099000F1008EEF8093E8007CC0813011F083304D
:1009A00061F58981823049F58B819C81892B29F5FC
:1009B0008D819E818F779927382F31503430E8F41C
:1009C0003EEF3093E8008093E9002A81233021F440
:1009D00081E28093EB005DC099E19093EB0021E010
:1009E00030E0F90102C0EE0FFF1F8A95E2F7CF0158
:1009F000EAEEF0E0808310824CC0CE0101960E94A6
:100A0000D500811146C081E28093EB0042C081E2B3
:100A10008093EB002FC0F22E408150E0022E02C0E6
:100A2000559547950A94E2F740FF1BC0DB012C93D4
:100A3000D6018C9182FF13C08091F200882341F08F
:100A40006091F20070E0822F0E940601F092E900AE
:100A5000E8EEF0E089EF80838FE780831AC0D80149
:100A60009C932F5F3F4F25303105A9F681E280939B
:100A7000EB000FC021E030E0E4EFF0E069EE70E061
:100A80000F2EF8EECF2ED12CF02D0BEE10E091E2D0
:100A9000C2CF2A960FB6F894DEBF0FBECDBFDF914E
:100AA000CF91FF91EF91BF91AF919F918F917F91E6
:100AB0006F915F914F913F912F911F910F91FF90F7
:100AC000EF90DF90CF90BF90AF909F908F907F90EE
:100AD0006F905F904F903F900F900FBE0F901F90C0
:100AE00018955527002480FF02C0060E571F660F79
:100AF000771F6115710521F096958795009799F7F5
:100B0000952F802D08950F931F93CF93DF938230FD
:100B1000910510F482E090E0E0914201F0914301F0
:100B200020E030E0C0E0D0E023C040815181481790
:100B30005907A8F04817590761F4828193812097DB
:100B400019F09B838A832EC09093430180934201C6
:100B500029C02115310529F04217530710F0A901CA
:100B600002C0BE01DF0102811381EF019A01F80189
:100B70003097D9F62115310509F1281B390B24309E
:100B8000310590F412968D919C9113976115710522
:100B900021F0FB019383828304C0909343018093EF
:100BA0004201FD01329644C0FD01E20FF31F819323
:100BB0009193225031092D933C933AC020914001EA
:100BC00030914101232B41F4209111013091120108
:100BD000309341012093400120910F013091100189
:100BE0002115310541F42DB73EB7409113015091C5
:100BF0001401241B350BE0914001F0914101E217F3
:100C0000F307A0F42E1B3F0B2817390778F0AC012F
:100C10004E5F5F4F2417350748F04E0F5F1F50930C
:100C20004101409340018193919302C0E0E0F0E0E4
:100C3000CF01DF91CF911F910F910895EF92FF9215
:100C40000F931F93CF93DF93009709F48FC0DC01BC
:100C5000129713961C921E921297E0904201F09008
:100C60004301E114F10489F42D913C911197280F6F
:100C7000391F80914001909141018217930789F5B6
:100C8000B0934101A093400171C0E70120E030E042
:100C900001C0EA01CA17DB0738F44A815B819E0173
:100CA00041155105B1F722C0BC0162507109FB0129
:100CB000D383C28300811181AC01400F511F4C17B7
:100CC0005D0761F448815981400F511F4E5F5F4FAE
:100CD000518340834A815B815383428321153105CF
:100CE00029F4B0934301A093420140C0F901B383BA
:100CF000A283E90169917991C60FD71FAC17BD078F
:100D000079F4DC015E914E91460F571F4E5F5F4FA5
:100D10005183408312968D919C9113979383828384
:100D2000A0E0B0E002C0D7017C01F701828193818D
:100D30000097C9F7C701029620813181820F931F66
:100D400020914001309141012817390779F410971B
:100D500029F4109243011092420104C013961C9290
:100D60001E921297F0924101E0924001CDB7DEB79A
:100D7000E6E00C94D106DC016C9161566A3108F012
:100D8000605E6F5B6D93C1F708952A883988488843
:100D90005F846E847D848C849B84AA84B984C88497
:100DA000DF80EE80FD800C811B81AA81B981CE0F8E
:100DB000D11D0FB6F894DEBF0FBECDBFED01089573
:040DC000F894FFCFD5
:100DC4000000000200000000C30000000000FF005B
:100DD400004401200056657273696F6E20312E3015
:100DE4000000000000802002812002FF2002FF207A
:0E0DF40002C12002FF2002FF2002FF200200A9
:00000001FF
File diff suppressed because it is too large Load Diff
+753
View File
@@ -0,0 +1,753 @@
Archive member included because of file (symbol)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
usb_user.o (__mulhi3)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o (exit)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
rs232.o (__do_copy_data)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
usb_user.o (__do_clear_bss)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
usb_user.o (malloc)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
usb.o (strupr)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
rs232.o (fprintf)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
rs232.o (__iob)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) (vfprintf)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) (strnlen_P)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) (strnlen)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) (fputc)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) (__ultoa_invert)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) (__mulqi3)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) (__prologue_saves__)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) (__epilogue_restores__)
Allocating common symbols
Common symbol size file
__brkval 0x2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
__flp 0x2 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
__iob 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
Discarded input sections
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
.text 0x00000000 0x0 led.o
.bss 0x00000000 0x0 led.o
.text.led 0x00000000 0x14 led.o
.text.init_led
0x00000000 0x8 led.o
.text.fade 0x00000000 0xbe led.o
.text.led_rainbow
0x00000000 0x74 led.o
.text 0x00000000 0x0 Mainboard.o
.bss 0x00000000 0x0 Mainboard.o
.text 0x00000000 0x0 rs232.o
.bss 0x00000000 0x0 rs232.o
.text.init_rs232
0x00000000 0x24 rs232.o
.text.rs232_send
0x00000000 0x1a rs232.o
.text 0x00000000 0x0 usb.o
.bss 0x00000000 0x0 usb.o
.text.init_usb
0x00000000 0x6 usb.o
.text.usb_send
0x00000000 0x20 usb.o
.text.usb_getstatus
0x00000000 0x6 usb.o
.text.usb_ready
0x00000000 0x6 usb.o
.text 0x00000000 0x0 usb_user.o
.text.usb_init
0x00000000 0x2e usb_user.o
.text.usb_status
0x00000000 0x1c usb_user.o
.text.usb_configuration
0x00000000 0x6 usb_user.o
.text.usb_interface
0x00000000 0x6 usb_user.o
.text.usb_is_ready
0x00000000 0x8 usb_user.o
.text.usb_freebuffer
0x00000000 0x1e usb_user.o
.text.usb_rxavail
0x00000000 0xa usb_user.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.text.avr-libc
0x00000000 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
COMMON 0x00000000 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.text.avr-libc
0x00000000 0x3bc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
.text.avr-libc
0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
.text.avr-libc
0x00000000 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.text.avr-libc
0x00000000 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
.text.avr-libc
0x00000000 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc.mul
0x00000000 0x12 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc.prologue
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc.prologue
0x00000000 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.text.libgcc.mul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.text.libgcc.div
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.text.libgcc.builtins
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
.text.libgcc.fmul
0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
Memory Configuration
Name Origin Length Attributes
text 0x00000000 0x00010000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
user_signatures 0x00850000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
LOAD led.o
LOAD Mainboard.o
LOAD rs232.o
LOAD usb.o
LOAD usb_user.o
START GROUP
LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libm.a
END GROUP
LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a
LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a
LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x00000000 0xdc4
*(.vectors)
.vectors 0x00000000 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
0x00000000 __vector_default
0x00000000 __vectors
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
.progmem.data 0x00000074 0x5e usb_user.o
0x000000d2 . = ALIGN (0x2)
0x000000d2 __trampolines_start = .
*(.trampolines)
.trampolines 0x000000d2 0x0 linker stubs
*(.trampolines*)
0x000000d2 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x000000d2 __ctors_start = .
*(.ctors)
0x000000d2 __ctors_end = .
0x000000d2 __dtors_start = .
*(.dtors)
0x000000d2 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x000000d2 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
0x000000d2 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x000000d2 0xc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x000000de 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
0x000000de __do_copy_data
.init4 0x000000f4 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
0x000000f4 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x00000104 0x8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
*(.init9)
*(.text)
.text 0x0000010c 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
0x0000010c __vector_22
0x0000010c __vector_28
0x0000010c __vector_1
0x0000010c __vector_24
0x0000010c __bad_interrupt
0x0000010c __vector_6
0x0000010c __vector_3
0x0000010c __vector_23
0x0000010c __vector_25
0x0000010c __vector_13
0x0000010c __vector_17
0x0000010c __vector_19
0x0000010c __vector_7
0x0000010c __vector_27
0x0000010c __vector_5
0x0000010c __vector_4
0x0000010c __vector_9
0x0000010c __vector_2
0x0000010c __vector_21
0x0000010c __vector_15
0x0000010c __vector_8
0x0000010c __vector_26
0x0000010c __vector_14
0x0000010c __vector_10
0x0000010c __vector_16
0x0000010c __vector_18
0x0000010c __vector_20
0x00000110 . = ALIGN (0x2)
*(.text.*)
.text.spi_putc
0x00000110 0x2c Mainboard.o
0x00000110 spi_putc
.text.main 0x0000013c 0x4a Mainboard.o
0x0000013c main
.text.uart_putchar
0x00000186 0x24 rs232.o
0x00000186 uart_putchar
.text.usb_controlrequest
0x000001aa 0x62 usb.o
0x000001aa usb_controlrequest
.text.usb_ep 0x0000020c 0x52 usb.o
0x0000020c usb_ep
.text.usb_endpoints
0x0000025e 0x110 usb_user.o
0x0000025e usb_endpoints
.text.usb_wait_in
0x0000036e 0xc usb_user.o
0x0000036e usb_wait_in
.text.usb_desc_out
0x0000037a 0xb6 usb_user.o
0x0000037a usb_desc_out
.text.usb_rxdata
0x00000430 0x4a usb_user.o
0x00000430 usb_rxdata
.text.usb_txdata_control
0x0000047a 0x46 usb_user.o
0x0000047a usb_txdata_control
.text.usb_txdata
0x000004c0 0x5e usb_user.o
0x000004c0 usb_txdata
.text.__vector_11
0x0000051e 0x50 usb_user.o
0x0000051e __vector_11
.text.__vector_12
0x0000056e 0x574 usb_user.o
0x0000056e __vector_12
.text.libgcc.mul
0x00000ae2 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
0x00000ae2 __mulhi3
.text.avr-libc
0x00000b06 0x270 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
0x00000b06 malloc
0x00000c3c free
.text.avr-libc
0x00000d76 0x14 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
0x00000d76 strupr
.text.libgcc.prologue
0x00000d8a 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
0x00000d8a __epilogue_restores__
0x00000dc0 . = ALIGN (0x2)
*(.fini9)
.fini9 0x00000dc0 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
0x00000dc0 _exit
0x00000dc0 exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x00000dc0 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
*(.fini0)
0x00000dc4 _etext = .
.data 0x00800100 0x3e load address 0x00000dc4
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
.data 0x00800100 0x0 led.o
.data 0x00800100 0x0 Mainboard.o
.data 0x00800100 0xe rs232.o
.data 0x0080010e 0x0 usb.o
.data 0x0080010e 0x1 usb_user.o
.data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o)
.data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o)
.data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o)
.data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o)
.data 0x0080010f 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
0x0080010f __malloc_heap_end
0x00800111 __malloc_heap_start
0x00800113 __malloc_margin
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o)
.data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o)
*(.data*)
*(.rodata)
.rodata 0x00800115 0x10 usb.o
.rodata 0x00800125 0x18 usb_user.o
*(.rodata*)
*(.gnu.linkonce.d*)
0x0080013e . = ALIGN (0x2)
*fill* 0x0080013d 0x1
0x0080013e _edata = .
0x0080013e PROVIDE (__data_end, .)
.bss 0x0080013e 0x6
0x0080013e PROVIDE (__bss_start, .)
*(.bss)
.bss 0x0080013e 0x2 usb_user.o
*(.bss*)
*(COMMON)
COMMON 0x00800140 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
0x00800140 __brkval
0x00800142 __flp
0x00800144 PROVIDE (__bss_end, .)
0x00000dc4 __data_load_start = LOADADDR (.data)
0x00000e02 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800144 0x0
0x00800144 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800144 PROVIDE (__noinit_end, .)
0x00800144 _end = .
0x00800144 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.user_signatures
*(.user_signatures*)
.stab 0x00000000 0xd2c
*(.stab)
.stab 0x00000000 0x6cc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
.stab 0x000006cc 0x90 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o)
0x9c (size before relaxing)
.stab 0x0000075c 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o)
0xa8 (size before relaxing)
.stab 0x000007f8 0x9c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o)
0xa8 (size before relaxing)
.stab 0x00000894 0x498 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o)
0x4a4 (size before relaxing)
.stabstr 0x00000000 0x209
*(.stabstr)
.stabstr 0x00000000 0x209 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x00000000 0x2f
*(.comment)
.comment 0x00000000 0x2f led.o
0x30 (size before relaxing)
.comment 0x00000000 0x30 Mainboard.o
.comment 0x00000000 0x30 rs232.o
.comment 0x00000000 0x30 usb.o
.comment 0x00000000 0x30 usb_user.o
.comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.comment 0x00000000 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x208
*(.debug_aranges)
.debug_aranges
0x00000000 0x38 led.o
.debug_aranges
0x00000038 0x28 Mainboard.o
.debug_aranges
0x00000060 0x30 rs232.o
.debug_aranges
0x00000090 0x48 usb.o
.debug_aranges
0x000000d8 0x90 usb_user.o
.debug_aranges
0x00000168 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_aranges
0x00000190 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_aranges
0x000001b0 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.debug_aranges
0x000001c8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_aranges
0x000001e8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x00000000 0x226a
*(.debug_info)
.debug_info 0x00000000 0x294 led.o
.debug_info 0x00000294 0x237 Mainboard.o
.debug_info 0x000004cb 0x232 rs232.o
.debug_info 0x000006fd 0x481 usb.o
.debug_info 0x00000b7e 0xaa8 usb_user.o
.debug_info 0x00001626 0x23d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_info 0x00001863 0x1fc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_info 0x00001a5f 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.debug_info 0x00001bad 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_info 0x000020f6 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0xe59
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x112 led.o
.debug_abbrev 0x00000112 0x14b Mainboard.o
.debug_abbrev 0x0000025d 0x181 rs232.o
.debug_abbrev 0x000003de 0x1fb usb.o
.debug_abbrev 0x000005d9 0x2c6 usb_user.o
.debug_abbrev 0x0000089f 0xf9 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_abbrev 0x00000998 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_abbrev 0x00000ad1 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.debug_abbrev 0x00000b92 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_abbrev 0x00000d68 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_line 0x00000000 0x11b9
*(.debug_line)
.debug_line 0x00000000 0x150 led.o
.debug_line 0x00000150 0x1ba Mainboard.o
.debug_line 0x0000030a 0x107 rs232.o
.debug_line 0x00000411 0x164 usb.o
.debug_line 0x00000575 0x499 usb_user.o
.debug_line 0x00000a0e 0x1c8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_line 0x00000bd6 0x14a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_line 0x00000d20 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
.debug_line 0x00000de1 0x2fe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_line 0x000010df 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_frame 0x00000000 0x540
*(.debug_frame)
.debug_frame 0x00000000 0xb0 led.o
.debug_frame 0x000000b0 0x34 Mainboard.o
.debug_frame 0x000000e4 0x5c rs232.o
.debug_frame 0x00000140 0x94 usb.o
.debug_frame 0x000001d4 0x254 usb_user.o
.debug_frame 0x00000428 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_frame 0x00000490 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_frame 0x000004bc 0x4c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_frame 0x00000508 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_str 0x00000000 0x7d4
*(.debug_str)
.debug_str 0x00000000 0xb5 led.o
0xe9 (size before relaxing)
.debug_str 0x000000b5 0x7b Mainboard.o
0x13a (size before relaxing)
.debug_str 0x00000130 0x5b rs232.o
0x136 (size before relaxing)
.debug_str 0x0000018b 0x1a2 usb.o
0x280 (size before relaxing)
.debug_str 0x0000032d 0x218 usb_user.o
0x450 (size before relaxing)
.debug_str 0x00000545 0xcd c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
0x167 (size before relaxing)
.debug_str 0x00000612 0x79 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
0x12e (size before relaxing)
.debug_str 0x0000068b 0x4b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o)
0xf8 (size before relaxing)
.debug_str 0x000006d6 0xb1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
0x198 (size before relaxing)
.debug_str 0x00000787 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
0xf8 (size before relaxing)
.debug_loc 0x00000000 0x19f5
*(.debug_loc)
.debug_loc 0x00000000 0x2a5 led.o
.debug_loc 0x000002a5 0x67 Mainboard.o
.debug_loc 0x0000030c 0xee rs232.o
.debug_loc 0x000003fa 0x1a9 usb.o
.debug_loc 0x000005a3 0x92b usb_user.o
.debug_loc 0x00000ece 0x4f8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_loc 0x000013c6 0x21 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_loc 0x000013e7 0x51b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_loc 0x00001902 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_macinfo
*(.debug_macinfo)
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges 0x00000000 0x1a8
*(.debug_ranges)
.debug_ranges 0x00000000 0x70 led.o
.debug_ranges 0x00000070 0x18 Mainboard.o
.debug_ranges 0x00000088 0x20 rs232.o
.debug_ranges 0x000000a8 0x38 usb.o
.debug_ranges 0x000000e0 0x80 usb_user.o
.debug_ranges 0x00000160 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o)
.debug_ranges 0x00000178 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o)
.debug_ranges 0x00000188 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o)
.debug_ranges 0x00000198 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o)
.debug_macro
*(.debug_macro)
OUTPUT(Mainboard.elf elf32-avr)
LOAD linker stubs
+227
View File
@@ -0,0 +1,227 @@
S01100004D61696E626F6172642E7372656386
S11300000C9469000C9486000C9486000C94860071
S11300100C9486000C9486000C9486000C94860044
S11300200C9486000C9486000C9486000C948F0229
S11300300C94B7020C9486000C9486000C948600F1
S11300400C9486000C9486000C9486000C94860014
S11300500C9486000C9486000C9486000C94860004
S11300600C9486000C9486000C9486000C948600F4
S11300700C94860012010002FF000010ADDEEEBEFB
S113008000010102030104030904140342006C008B
S11300907500620062004600690073006800000099
S11300A020034800610063006B00650072002D00AE
S11300B04A0065006F0070006100720064007900FE
S11300C000000E03300030003000300030003100FA
S11300D0000011241FBECFEFD4E0DEBFCDBF11E07E
S11300E0A0E0B1E0E4ECFDE002C005900D92AE3377
S11300F0B107D9F721E0AEE3B1E001C01D92A43409
S1130100B207E1F70E949E000C94E0060C940000F4
S11301108EBD0DB407FC10C090E485B1892785B964
S11301202FEF31EE84E0215030408040E1F700C0F1
S113013000000DB407FEF1CF8EB5089586ED84B9A5
S113014080E185B91DBC83E58CBD8FE39CE90197F3
S1130150F1F700C000002C9880EC0E9488008FE921
S11301609FE00197F1F700C000002C9A2C9880ECD6
S11301700E9488008FE99FE00197F1F700C000001A
S11301802C9A2F9AFFCFCF93C82F8A3019F48DE081
S11301900E94C300E8ECF0E0908195FFFDCFC0938E
S11301A0CE0080E090E0CF910895CF93DF93CDB758
S11301B0DEB760970FB6F894DEBF0FBECDBF2CE05C
S11301C0E5E1F1E0DE01119601900D922A95E1F747
S11301D01D861E861F86188AFC012081233C51F44B
S11301E08181813049F460E1CE0101960E943D0293
S11301F081E003C080E001C080E060960FB6F8940F
S1130200DEBF0FBECDBFDF91CF910895CF93DF93B3
S1130210CDB7DEB7A0970FB6F894DEBF0FBECDBF43
S11302208130A1F440E2BE016F5F7F4F0E9418024B
S1130230882361F018A2CE0101960E94BB0640E219
S1130240BE016F5F7F4F82E80E946002A0960FB6E6
S1130250F894DEBF0FBECDBFDF91CF9108952F92EA
S11302603F924F925F927F928F929F92AF92CF92E2
S1130270DF92EF92FF920F931F93CF93DF93282F78
S113028090E06CE070E00E947105FC01EB5DFE4FB4
S1130290822F90E06CE070E00E947105895D9E4FB2
S11302A041E00F2EF9EECF2ED12CF02D0F2EFBEEC8
S11302B0EF2EF12CF02DAA24A3940CEE10E06DEE99
S11302C070E00F2EF0EF4F2E512CF02D68949924EE
S11302D092F8812C6894772474F8DF0120812F3FF1
S11302E059F1E6014883E701A8822081E8012883C7
S11302F01C019C0121503109E9012881203841F079
S1130300203441F0203241F0203141F4372D07C030
S113031030E405C030E303C030E201C0382DE10110
S11303202881232BEB0128832C9120FF03C0D201C9
S11303301C9202C0E20198824F5F339603964530C7
S113034061F6EAEEF0E08EE180831082DF91CF91D6
S11303501F910F91FF90EF90DF90CF90AF909F90FF
S11303608F907F905F904F903F902F900895E8EE8C
S1130370F0E080818570E9F30895AF92BF92CF9247
S1130380DF92EF92FF920F931F93CF93DF93D82EB8
S1130390D62FC72FE42FF0E02E173F0710F4C22EFC
S11303A001C0C42E0E94B7010D2F1C2F6894AA24EB
S11303B0A4F80F2EF8EEEF2EF12CF02D0F2EFEEFF9
S11303C0BF2EF02DC1EFD0E02C2D80E18C1508F468
S11303D02A2D2223D9F0F801922FDD2011F08081FB
S11303E001C084918883915031969111F6CF622F88
S11303F0615070E06F5F7F4F060F171FC21AF7013D
S1130400B082C11007C0203129F007C0F701B082C3
S1130410CC2019F00E94B701D7CFDF91CF911F9163
S11304200F91FF90EF90DF90CF90BF90AF90089521
S11304308093E9009091F200941708F4492F442323
S1130440D1F0362FE62FF72FA1EFB0E09C919193D6
S11304509E2F931B9417D0F39091F20091110BC02F
S113046021E030E002C0220F331F8A95E2F7EAEE62
S1130470F0E020831082842F08956623E9F010921F
S1130480E900E8EEF0E0208120FFFDCF2091F200AA
S1130490211114C0282FE82FF92FA1EFB0E081918A
S11304A08C938E2F821B8617D0F3E8EEF0E08081C8
S11304B08E7F808381E0089580E0089580E0089530
S11304C0CF93DF93442329F18093E900E8EEF0E031
S11304D0808180FFFDCF8091F20081111CC0962F96
S11304E0E62FF72FA8EEB0E0C1EFD0E08C9185FFA6
S11304F002C08081888331968E2F891B8417B0F3C4
S1130500E8EEF0E080818E7F80838FE7808381E056
S113051003C080E001C080E0DF91CF9108951F9275
S11305200F920FB60F9211248F93EF93FF93E1EE86
S1130530F0E08081108283FF12C01092E90081E014
S11305408093EB001092EC0082E18093ED0088E050
S11305508093F00010923E018FEF80930E01FF9183
S1130560EF918F910F900FBE0F901F9018951F92CF
S11305700F920FB60F9211243F924F925F926F9297
S11305807F928F929F92AF92BF92CF92DF92EF921F
S1130590FF920F931F932F933F934F935F936F9308
S11305A07F938F939F93AF93BF93EF93FF93CF93D7
S11305B0DF93CDB7DEB72A97DEBFCDBF8091F400BD
S11305C080FF58C21092E9008091E80083FF1FC2A7
S11305D0E1EFF0E08081898380818A83208130E0AB
S11305E03C832B834081942F80E0822B932B9C832C
S11305F08B83208130E03E832D834081942F80E0E3
S1130600822B932B9E838D83208130E038872F8328
S11306104081942F80E0822B932B98878F8382EFE5
S11306208093E8008A81863009F030C18B819C81F7
S1130630811523E0920709F4FDC048F4811551E0C7
S1130640950789F08115924009F01CC126C08230BB
S1130650B3E09B0709F402C108F4F6C08330934069
S113066009F010C105C1E4E7F0E044912F81388519
S1130670BF0180E00E94BD010CC29A2F50815F3FF0
S113068009F49B2F490F815033968111F6CF2F5FC8
S11306903F4F2230310539F410C020E030E040E013
S11306A014E0A1E0B0E0C9016CE070E00E947105C3
S11306B0FC01EB5DFE4F812FE0CF842F880F880F64
S11306C0880F841B0F2EFBE1EF2EF02DE80E8E2DEC
S11306D090E00E948305082F192F89E0D8018C939C
S11306E082E011968C9311971296EC9212971396BE
S11306F01C92139714968C93149781E015968C93FF
S1130700159716961C92169780EC17968C9317974C
S11307108AEF18968C93F80139961A86198644E064
S1130720A12C88248394F82C9A2C0F2EF9E07F2E88
S1130730F02DBB24BA940F2EF7E0CF2EF02D0F2E00
S1130740F5E0DF2EF02D6894662461F80F2EF3E0B7
S11307505F2EF02D56C07F2DDC012C912F3F09F424
S1130760792D670F515003965111F5CF7082418353
S1130770428213826483B5821682B78210863996C8
S11307806623C1F1832F932D6CE070E00E94710504
S11307909C012A5D3E4F482CC901B9016150710981
S11307A0DB015C915F3F01F1C082D182652F6795C7
S11307B06627679564296283513441F0503441F0CF
S11307C0513841F0503841F4562D07C05F2D05C013
S11307D05F2D03C0562D01C0552D5383DC018C9130
S11307E0848315821682379643942D5F3F4FB5E07C
S11307F04B12D2CFA985BA851196BA87A9871297C9
S113080071F04984342D3A84842D932D6CE070E08A
S11308100E9471058B5D9E4F542F6A2D9CCF2F81B2
S113082038854E2DB80181E00E94BD01C8010E94A7
S11308301E062FC1E6E8F0E044912F813885BF0100
S113084080E00E94BD0125C1EAE8F0E044912F81D7
S11308503885BF0180E00E94BD011BC1E0EAF0E0E1
S113086044912F813885BF0180E00E94BD0111C1F0
S1130870E2ECF0E044912F813885BF0180E00E94D2
S1130880BD0107C181E28093EB0003C1853071F49F
S11308908EEF8093E800E8EEF0E0808180FFFDCFEA
S11308A08B819C8180688093E300F3C08930C1F41C
S11308B09981911160C08B819C81019769F481E0D9
S11308C080933E018EEF8093E80010920E01809198
S11308D00E010E942F01DDC081E28093EB00D9C09C
S11308E0883089F49981903809F057C0E8EEF0E037
S11308F0808180FFFDCF80913E018093F1008EEFD7
S11309008093E800C6C081111CC0E8EEF0E080814D
S113091080FFFDCF8981823859F48D81E9EEF0E0C2
S113092080838091EB0085FB882780F9108201C0C9
S113093080E0E1EFF0E0808310828EEF8093E800A6
S1130940A8C08B30C1F48981803211F0811155C067
S11309508D819E818230910550F480930E018EEF3B
S11309608093E80080910E010E942F0192C081E2E1
S11309708093EB008EC08A3081F489818038E9F558
S1130980E8EEF0E0808180FFFDCF80910E0180933E
S1130990F1008EEF8093E8007CC0813011F0833049
S11309A061F58981823049F58B819C81892B29F5F8
S11309B08D819E818F779927382F31503430E8F418
S11309C03EEF3093E8008093E9002A81233021F43C
S11309D081E28093EB005DC099E19093EB0021E00C
S11309E030E0F90102C0EE0FFF1F8A95E2F7CF0154
S11309F0EAEEF0E0808310824CC0CE0101960E94A2
S1130A00D500811146C081E28093EB0042C081E2AF
S1130A108093EB002FC0F22E408150E0022E02C0E2
S1130A20559547950A94E2F740FF1BC0DB012C93D0
S1130A30D6018C9182FF13C08091F200882341F08B
S1130A406091F20070E0822F0E940601F092E900AA
S1130A50E8EEF0E089EF80838FE780831AC0D80145
S1130A609C932F5F3F4F25303105A9F681E2809397
S1130A70EB000FC021E030E0E4EFF0E069EE70E05D
S1130A800F2EF8EECF2ED12CF02D0BEE10E091E2CC
S1130A90C2CF2A960FB6F894DEBF0FBECDBFDF914A
S1130AA0CF91FF91EF91BF91AF919F918F917F91E2
S1130AB06F915F914F913F912F911F910F91FF90F3
S1130AC0EF90DF90CF90BF90AF909F908F907F90EA
S1130AD06F905F904F903F900F900FBE0F901F90BC
S1130AE018955527002480FF02C0060E571F660F75
S1130AF0771F6115710521F096958795009799F7F1
S1130B00952F802D08950F931F93CF93DF938230F9
S1130B10910510F482E090E0E0914201F0914301EC
S1130B2020E030E0C0E0D0E023C04081518148178C
S1130B305907A8F04817590761F4828193812097D7
S1130B4019F09B838A832EC09093430180934201C2
S1130B5029C02115310529F04217530710F0A901C6
S1130B6002C0BE01DF0102811381EF019A01F80185
S1130B703097D9F62115310509F1281B390B24309A
S1130B80310590F412968D919C911397611571051E
S1130B9021F0FB019383828304C0909343018093EB
S1130BA04201FD01329644C0FD01E20FF31F81931F
S1130BB09193225031092D933C933AC020914001E6
S1130BC030914101232B41F4209111013091120104
S1130BD0309341012093400120910F013091100185
S1130BE02115310541F42DB73EB7409113015091C1
S1130BF01401241B350BE0914001F0914101E217EF
S1130C00F307A0F42E1B3F0B2817390778F0AC012B
S1130C104E5F5F4F2417350748F04E0F5F1F509308
S1130C204101409340018193919302C0E0E0F0E0E0
S1130C30CF01DF91CF911F910F910895EF92FF9211
S1130C400F931F93CF93DF93009709F48FC0DC01B8
S1130C50129713961C921E921297E0904201F09004
S1130C604301E114F10489F42D913C911197280F6B
S1130C70391F80914001909141018217930789F5B2
S1130C80B0934101A093400171C0E70120E030E03E
S1130C9001C0EA01CA17DB0738F44A815B819E016F
S1130CA041155105B1F722C0BC0162507109FB0125
S1130CB0D383C28300811181AC01400F511F4C17B3
S1130CC05D0761F448815981400F511F4E5F5F4FAA
S1130CD0518340834A815B815383428321153105CB
S1130CE029F4B0934301A093420140C0F901B383B6
S1130CF0A283E90169917991C60FD71FAC17BD078B
S1130D0079F4DC015E914E91460F571F4E5F5F4FA1
S1130D105183408312968D919C9113979383828380
S1130D20A0E0B0E002C0D7017C01F7018281938189
S1130D300097C9F7C701029620813181820F931F62
S1130D4020914001309141012817390779F4109717
S1130D5029F4109243011092420104C013961C928C
S1130D601E921297F0924101E0924001CDB7DEB796
S1130D70E6E00C94D106DC016C9161566A3108F00E
S1130D80605E6F5B6D93C1F708952A88398848883F
S1130D905F846E847D848C849B84AA84B984C88493
S1130DA0DF80EE80FD800C811B81AA81B981CE0F8A
S1130DB0D11D0FB6F894DEBF0FBECDBFED0108956F
S1070DC0F894FFCFD1
S1130DC40000000200000000C30000000000FF0057
S1130DD4004401200056657273696F6E20312E3011
S1130DE40000000000802002812002FF2002FF2076
S1110DF402C12002FF2002FF2002FF200200A5
S9030000FC
+154
View File
@@ -0,0 +1,154 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../led.c \
../Mainboard.c \
../rs232.c \
../usb.c \
../usb_user.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
led.o \
Mainboard.o \
rs232.o \
usb.o \
usb_user.o
OBJS_AS_ARGS += \
led.o \
Mainboard.o \
rs232.o \
usb.o \
usb_user.o
C_DEPS += \
led.d \
Mainboard.d \
rs232.d \
usb.d \
usb_user.d
C_DEPS_AS_ARGS += \
led.d \
Mainboard.d \
rs232.d \
usb.d \
usb_user.d
OUTPUT_FILE_PATH +=Mainboard.elf
OUTPUT_FILE_PATH_AS_ARGS +=Mainboard.elf
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
# AVR32/GNU C Compiler
./%.o: .././%.c
@echo Building file: $<
@echo Invoking: AVR/GNU C Compiler :
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega32u2 -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o"$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP)
@echo Building target: $@
@echo Invoking: AVR/GNU Linker :
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="Mainboard.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega32u2
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature "Mainboard.elf" "Mainboard.hex"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Mainboard.elf" "Mainboard.eep" || exit 0
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "Mainboard.elf" > "Mainboard.lss"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature "Mainboard.elf" "Mainboard.srec"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.2.876\avr8-gnu-toolchain\bin\avr-size.exe" "Mainboard.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS)$(C_DEPS_AS_ARGS) $(EXECUTABLES)
rm -rf "Mainboard.elf" "Mainboard.a" "Mainboard.hex" "Mainboard.lss" "Mainboard.eep" "Mainboard.map" "Mainboard.srec"
+37
View File
@@ -0,0 +1,37 @@
led.d led.o: .././led.c \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \
.././led.h
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h:
.././led.h:
+14
View File
@@ -0,0 +1,14 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
led.c
Mainboard.c
rs232.c
usb.c
usb_user.c
+66
View File
@@ -0,0 +1,66 @@
rs232.d rs232.o: .././rs232.c .././config.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \
.././rs232.h
.././config.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h:
.././rs232.h:
+74
View File
@@ -0,0 +1,74 @@
usb.d usb.o: .././usb.c .././config.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h \
.././usb_user_config.h .././usb_user.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h \
.././usb.h
.././config.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdio.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdarg.h:
.././usb_user_config.h:
.././usb_user.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h:
.././usb.h:
+70
View File
@@ -0,0 +1,70 @@
usb_user.d usb_user.o: .././usb_user.c \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h \
.././usb_user_config.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h \
.././config.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h \
.././usb_user.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdbool.h:
.././usb_user_config.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/include/stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/stdint.h:
.././config.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/util/delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/iom32u2.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/string.h:
.././usb_user.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.2.876\avr8-gnu-toolchain\bin\../lib/gcc/avr/4.7.2/../../../../avr/include/avr/pgmspace.h:
+126
View File
@@ -0,0 +1,126 @@
/*
* Mainboard.c
*
* Created: 06.10.2013 19:12:35
* Author: netz
*/
#define F_CPU 16000000
//#define F_CPU 8000000
//#define F_CPU 2000000
#include <avr/io.h>
#include <util/delay.h>
//#include "config.h"
//#include <avr/io.h>
//#include "led.h"
//#include "rs232.h"
//#include "usb.h"
/*void wait_for_usb() {
while(true) {
if(usb_getstatus() == USB_STATUS_DISCONNECTED) {
led(YELLOW);
if(!(PINC & (1<<PINC7))) {
return;
}
}
if(usb_getstatus() == USB_STATUS_ENUMERATED) {
led(CYAN);
}
if(usb_getstatus() == USB_STATUS_CONFIGURED) {
led(GREEN);
return;
}
}
}
void init()
{
led(YELLOW);
sei();
init_led();
init_rs232();
//init_usb();
DDRC &= ~(1<<PINC7);
PORTC |= (1<<PINC7);
//wait_for_usb();
}
void send(char * text) {
uint8_t l = strlen(text);
if(l >= 29) {
text[29] = 13;
text[30] = 10;
text[31] = 0;
} else {
text[l] = 13;
text[l+1] = 10;
text[l+2] = 0;
}
led(MAGENTA);
rs232_send(text);
if(usb_getstatus() == USB_STATUS_CONFIGURED && usb_ready()) {
usb_send(text);
}
led(GREEN);
}
void resi(char * text) {
_delay_ms(10);
send("Nachricht bekommen!");
//send(text);
led(RED);
_delay_ms(2000);
}*/
uint8_t spi_putc( uint8_t data ) {
SPDR = data;
while(!(SPSR & (1<<SPIF))) {
PORTB ^= (1<<PINB6);
_delay_ms(100);
}
return SPDR;
}
int main(void)
{
DDRB = (1<<PINB1) | (1<<PINB2) | (0<<PINB3) | (1<<PINB4) | (1<<PINB7) | (1<<PINB6);
PORTB = 0 | (1<<PINB4);
SPSR = 0;//(1<<SPI2X);
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0);
_delay_ms(10);
PORTB &= ~(1<<PINB4);
spi_putc( 0xC0 );
_delay_ms(1);
PORTB |= (1<<PINB4);
PORTB &= ~(1<<PINB4);
spi_putc( 0xC0 );
_delay_ms(1);
PORTB |= (1<<PINB4);
PORTB |= (1<<PINB7);
/*init();
led(GREEN);
char text[32];
uint16_t i=0;
while(1)
{
snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++);
send(text);
_delay_ms(100);
led_rainbow(5);
}*/
while(1) {
}
}
+156
View File
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>6.1</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.C</ToolchainName>
<ProjectGuid>{839c4697-ab18-4132-8e80-f57ddb26adeb}</ProjectGuid>
<avrdevice>ATmega32U2</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>C</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>Mainboard</AssemblyName>
<Name>Mainboard</Name>
<RootNamespace>Mainboard</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<OverrideVtorValue>exception_table</OverrideVtorValue>
<eraseonlaunchrule>0</eraseonlaunchrule>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress>0x20000000</RamSnippetAddress>
<CacheFlash>true</CacheFlash>
<UncachedRange />
<BootSegment>0</BootSegment>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.7.2" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
<avrtoolinterface>ISP</avrtoolinterface>
<avrtool>com.atmel.avrdbg.tool.ispmk2</avrtool>
<com_atmel_avrdbg_tool_ispmk2>
<ToolType xmlns="">com.atmel.avrdbg.tool.ispmk2</ToolType>
<ToolName xmlns="">AVRISP mkII</ToolName>
<ToolNumber xmlns="">0000000000000</ToolNumber>
<Channel xmlns="">
<host>127.0.0.1</host>
<port>63239</port>
<ssl>False</ssl>
</Channel>
<ToolOptions xmlns="">
<InterfaceName>ISP</InterfaceName>
<InterfaceProperties>
<JtagDbgClock>249000</JtagDbgClock>
<JtagProgClock>1000000</JtagProgClock>
<IspClock>150000</IspClock>
<JtagInChain>false</JtagInChain>
<JtagEnableExtResetOnStartSession>false</JtagEnableExtResetOnStartSession>
<JtagDevicesBefore>0</JtagDevicesBefore>
<JtagDevicesAfter>0</JtagDevicesAfter>
<JtagInstrBitsBefore>0</JtagInstrBitsBefore>
<JtagInstrBitsAfter>0</JtagInstrBitsAfter>
</InterfaceProperties>
</ToolOptions>
</com_atmel_avrdbg_tool_ispmk2>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGcc>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcc.linker.libraries.Libraries>
<avrgcc.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcc.assembler.debugging.DebugLevel>
</AvrGcc>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="config.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="led.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="led.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Mainboard.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="rs232.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="rs232.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="usb.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="usb.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="usb_user.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="usb_user.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="usb_user_config.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>
+184
View File
@@ -0,0 +1,184 @@
:100000000C9486000C94A3000C94A3000C94A30001
:100010000C94A3000C94A3000C94A3000C94A300D4
:100020000C94A3000C94A3000C94DC010C94FD012F
:100030000C94A3000C94A3000C94A3000C94A300B4
:100040000C94A3000C94A3000C94A3000C94A300A4
:100050000C94A3000C94A3000C94A3000C94A30094
:100060000C94A3000C94A3000C94A3000C94A30084
:100070000C94A3000C94A3000C94A3000C94A30074
:100080000C94A3000C94A3000C94A3000C94A30064
:100090000C94A3000C94A3000C94A3000C94A30054
:1000A0000C94A3000C94A3000C94A3001201000272
:1000B000FF00001001000100000101020301040320
:1000C0000904240352006500750073006300680092
:1000D000200045006C0065006B00740072006F002A
:1000E0006E0069006B00000022035500730065007C
:1000F000720020004400650076006900630065001E
:100100002000440065006D006F00000011241FBE38
:10011000CFEFDAE0DEBFCDBF11E0A0E0B1E0E0E478
:10012000FBE002C005900D92A832B107D9F711E0AB
:10013000A8E2B1E001C01D92AD32B107E1F70E9423
:10014000DC030C949E050C94000081E08093D700A2
:1001500080EA8093D80082E189BD09B400FEFDCF1A
:1001600080E98093D8001092E0001092280188E086
:100170008093E2000895E0E0F1E091E051E044E096
:1001800020812F3F09F19093E9005093EB002093D9
:10019000EC008181803811F480E40BC0803411F4CC
:1001A00080E307C0803229F0803111F080E001C087
:1001B00080E13281382B3093ED0020FF03C0109294
:1001C000F00002C04093F0009F5F33969730C1F675
:1001D0008EE78093EA001092EA0008958091D9009A
:1001E00080FD02C080E008958091E30087FD02C099
:1001F00081E0089580912801882311F083E008951B
:1002000082E008958091280108958091E80085702A
:10021000E1F30895E42FF0E02E173F0708F4422F92
:10022000262F372F7EEF9091E8009570E1F3942F01
:10023000413108F090E1F901592F09C0882311F0EC
:10024000608101C064916093F10051503196552353
:10025000A9F7290F311D491B7093E800442319F7B2
:10026000903109F308958093E90021E030E002C065
:10027000220F331F8A95E2F7EAEEF0E02083108226
:1002800008958093E9009091F3008091F200392F56
:1002900020E0280F311DC90108958093E900909155
:1002A000F300E091F200392F20E0D901AE0FB11D2B
:1002B000FD01242F352FE217F30708F49F012115C4
:1002C000310519F140E050E09091F100FB01E40F9D
:1002D000F51F90834F5F5F4F42175307A8F360915C
:1002E000F3009091F200562F40E0490F511D411547
:1002F000510559F441E050E002C0440F551F8A9562
:10030000E2F74093EA001092EA00C90108956623DB
:1003100009F11092E9002091E80020FFFCCF5091F4
:10032000F3004091F200352F20E0240F311D2115FC
:10033000310581F4FC0180E004C091919093F100BB
:100340008F5F8617D0F38091E8008E7F8093E8005E
:1003500081E0089580E008954115510559F1809399
:10036000E9008091E80080FFFCCF3091F3002091FC
:10037000F200932F80E0820F911D0097D9F480E066
:1003800090E00BC02091E80025FF06C0FB01E80FBC
:10039000F91F20812093F10001968417950790F3AF
:1003A0008091E8008E7F8093E8008FE78093E800DB
:1003B00081E0089580E008951F920F920FB60F928A
:1003C00011248F938091E1001092E10083FF0FC010
:1003D0001092E90081E08093EB001092EC0082E142
:1003E0008093ED0088E08093F000109228018F91B7
:1003F0000F900FBE0F901F9018951F920F920FB67F
:100400000F921124DF92EF92FF920F931F932F937D
:100410003F934F935F936F937F938F939F93AF938C
:10042000BF93EF93FF93DF93CF93CDB7DEB72997B9
:10043000DEBFCDBF8091F40080FF66C11092E9005D
:100440008091E80083FF5DC15091F1005983409194
:10045000F1004A838091F1009091F100392F20E062
:1004600090E0822B932B9C838B836091F1007091A1
:10047000F100372F20E070E0622B732B7E836D83B9
:100480002091F1003091F100F32FE0E030E02E2BCD
:100490003F2B38872F83E2EFE093E800463009F0E6
:1004A000BAC043E08030940709F4A3C063E0813010
:1004B000960750F471E08030970789F0A2E0803011
:1004C0009A0709F05BC110C0B3E081309B0709F4C3
:1004D00098C0E3E082309E0709F050C197C06CEAF3
:1004E00070E0FB01449189C030E0E32E31E0F32E4F
:1004F000F701DD2480E090819F3F09F081E0D80E74
:10050000339621E0E231F207A9F747E0D49E402D6F
:1005100011244E5E842F90E049870E9440048C0194
:1005200089E0D8018C9392E011969C9311974985AC
:1005300012964C93129713961C92139791E014966F
:100540009C93149715969C93159716961C92169744
:1005500090E817969C93179799E118969C93189793
:10056000F801399619968C93199784E08183128249
:100570001382D4828FEF8583168287831086DD20D5
:1005800071F1F801729691E057E035E0D7018C9156
:100590008F3FF1F050833183282F2795222727950D
:1005A000292B2283813441F0803431F0813831F0BD
:1005B000803821F083E003C081E001C082E08383C2
:1005C000D70111968C9111978483158216823796E4
:1005D0009F5F63E070E0E60EF71E9730B9F62F815B
:1005E000388581E0B8010E940A01C8010E94E20436
:1005F000C8C06EEB70E0FB01449180E00E940A01EC
:10060000C0C062EC70E0FB014491F7CF68EE70E08F
:10061000FB014491F2CF453059F42EEF2093E800CE
:100620002091E80020FFFCCF80688093E300A9C000
:10063000493081F4552309F05CC08130910509F0FF
:100640009DC081E0809328018EEF8093E8000E9496
:10065000BB0097C0483061F4503809F04AC080911F
:10066000E80080FFFCCF809128018093F1001BC03F
:100670004423D9F48091E80080FFFCCF523811F078
:1006800080E00DC06093E9008091EB0090E025E0F0
:10069000969587952A95E1F781701092E9008093ED
:1006A000F1001092F1008EEF61C0413011F0433043
:1006B00001F55230F1F40097E1F46F77862F815005
:1006C0008630B8F48EEF8093E8006093E900433001
:1006D00009F454C089E18093EB0081E090E002C00E
:1006E000880F991F6A95E2F78093EA001092EA005A
:1006F00048C0CE0101960E940D04882309F041C034
:100700003DC081E28093EB0080E090E041E2082F61
:100710000F5F2091F400019630E0082E02C035955D
:1007200027950A94E2F720FF26C00093E900209164
:10073000E80022FF1EC03091F3002091F200932FB9
:1007400080E0820F911D009769F09091F3008091F5
:10075000F200792F60E0680F711D802F0E94E00386
:100760000093E90089EF8093E8008FE78093E80029
:1007700008C04093EB008630910549F681E28093F2
:10078000EB002996DEBFCDBFCF91DF91FF91EF91B6
:10079000BF91AF919F918F917F916F915F914F9199
:1007A0003F912F911F910F91FF90EF90DF900F904D
:1007B0000FBE0F901F9018950E94A5007894FFCF50
:1007C0000F931F93DF93CF93CDB7DEB7A0970FB6EC
:1007D000F894DEBF0FBECDBF8130A1F48E010F5F54
:1007E0001F4FB80140E250E00E944D01882351F0B4
:1007F00018A2C8010E94790582E8B80140E250E0E1
:100800000E94AC01A0960FB6F894DEBF0FBECDBF1C
:10081000CF91DF911F910F910895DF93CF93CDB7C3
:10082000DEB760970FB6F894DEBF0FBECDBFAC0148
:100830009E012F5F3F4FA2E1B1E09CE00D90F901D6
:1008400001929F019150D1F71D861E861F86188A3E
:10085000FA018081833C51F48181813039F4CE01E9
:10086000019660E10E94870181E001C080E060960E
:100870000FB6F894DEBF0FBECDBFCF91DF910895C4
:10088000EF92FF920F931F93CF93DF9382309105E6
:1008900010F482E090E0C0912B01D0912C0120E077
:1008A00030E040E050E029C068817981681779071D
:1008B000D8F06817790779F48A819B812115310571
:1008C00021F0F9019383828304C090932C018093DB
:1008D0002B01DE012AC04115510519F06417750777
:1008E00018F4FE01AB01D9019E017A816B81E72EDC
:1008F000E7017E01062FF62EE7012097A9F64115A4
:100900005105F9F0481B590B4430510580F48281A0
:100910009381109729F013969C938E93129704C09D
:1009200090932C0180932B01DF01129645C0DF01CB
:10093000A40FB51F8D939D93425050405183408327
:100940003BC02091290130912A012115310541F444
:10095000209124013091250130932A01209329010F
:1009600020912601309127012115310541F42DB741
:100970003EB74091220150912301241B350BA091D9
:100980002901B0912A01A217B307A0F42A1B3B0B3F
:100990002817390778F0AC014E5F5F4F24173507F1
:1009A00048F04A0F5B1F50932A01409329018D9311
:1009B0009D9302C0A0E0B0E0CD01CDB7DEB7E6E088
:1009C0000C948F05CF93DF93009709F48FC0FC013F
:1009D00032971382128260912B0170912C01611564
:1009E000710581F420813181280F391F80912901FF
:1009F00090912A018217930761F5F0932A01E09301
:100A0000290174C0EB0180E090E0CE17DF0740F4CD
:100A10002A813B81CE012115310501F1E901F5CF94
:100A2000D383C283DF014D915D919D01240F351F5A
:100A3000C217D30761F428813981240F351F2E5F37
:100A40003F4F318320832A813B8133832283009768
:100A500029F4F0932C01E0932B0148C0DC0113969C
:100A6000FC93EE931297EC0149915991C40FD51F55
:100A7000EC17FD0779F420813181240F351F2E5F9B
:100A80003F4F11963C932E932281338113963C93D2
:100A90002E931297E0E0F0E0DB0112968D919C918D
:100AA0001397009721F0E62FF72FBC01F5CF9B019C
:100AB0002E5F3F4FDB018D919C911197820F931F09
:100AC0004091290150912A014817590779F430972C
:100AD00029F410922C0110922B0102C01382128271
:100AE0002250304030932A0120932901DF91CF9189
:100AF0000895DC016C9161566A3108F0605E6F5BAD
:100B00006D93C1F708952A88398848885F846E8478
:100B10007D848C849B84AA84B984C884DF80EE8021
:100B2000FD800C811B81AA81B981CE0FD11D0FB62A
:100B3000F894DEBF0FBECDBFED010895F894FFCF4E
:100B4000802002812002FF2002FF2002FF2002FFFE
:100B5000200256657273696F6E20312E30000000DE
:080B6000000020002D0100003F
:00000001FF
+22
View File
@@ -0,0 +1,22 @@
/*
* config.h
*
* Created: 06.10.2013 17:05:43
* Author: netz
*/
#ifndef CONFIG_H_
#define CONFIG_H_
#define F_CPU 16000000
#define BAUD_RATE 9600
#include <util/delay.h>
#include <stdbool.h>
#include <avr/interrupt.h>
#include <string.h>
#endif /* CONFIG_H_ */
+49
View File
@@ -0,0 +1,49 @@
/*
* led.c
*
* Created: 06.10.2013 16:32:15
* Author: netz
*/
#include <avr/io.h>
#include "led.h"
void led(int mask) {
int rgb = 0;
rgb |= (mask & (1<<0)) ? (1<<0) : (0<<0);
rgb |= (mask & (1<<1)) ? (1<<1) : (0<<1);
rgb |= (mask & (1<<2)) ? (1<<2) : (0<<2);
PORTB &= ~((1<<PINB5) | (1<<PINB6) | (1<<PINB7));
PORTB |= (rgb<<PINB5);
}
void init_led()
{
DDRB |= (1<<PINB7) | (1<<PINB6) | (1<<PINB5);
}
void fade(int from, int to, int dur) {
for (int i=0;i<0xFF;i++) {
for(int k=0;k<dur;k++) {
for (int j=i;j<0xFF;j++) {
led(from);
}
for (int j=0;j<i;j++) {
led(to);
}
}
}
}
void led_rainbow(uint8_t t) {
fade(WHITE, RED, 10);
while(1) {
fade(RED, YELLOW, t);
fade(YELLOW, GREEN, t);
fade(GREEN, CYAN, t);
fade(CYAN, BLUE, t);
fade(BLUE, MAGENTA, t);
fade(MAGENTA, RED, t);
}
}
+28
View File
@@ -0,0 +1,28 @@
/*
* led.h
*
* Created: 06.10.2013 16:30:58
* Author: netz
*/
#ifndef LED_H_
#define LED_H_
#define BLACK 0
#define RED 4
#define GREEN 2
#define YELLOW 6
#define BLUE 1
#define MAGENTA 5
#define CYAN 3
#define WHITE 7
void init_led();
void led(int mask);
void fade(int from, int to, int dur);
void led_rainbow(uint8_t t);
#endif /* LED_H_ */
+38
View File
@@ -0,0 +1,38 @@
/*
* rs232.c
*
* Created: 06.10.2013 16:34:27
* Author: netz
*/
#include "config.h"
#include <stdio.h>
#include <avr/io.h>
#include "rs232.h"
int uart_putchar(char c, FILE *stream);
static FILE rs232 = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
int uart_putchar(char c, FILE *stream)
{
if (c == '\n') {
uart_putchar('\r', stream); //Warten solange bis Zeichen gesendet wurde
}
loop_until_bit_is_set(UCSR1A, UDRE1); //Ausgabe des Zeichens
UDR1 = c;
return (0);
}
void init_rs232()
{
UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1
UCSR1B |= /*(1<<RXEN1) | (1<<RXCIE1) | */ (1<<TXEN1); //Enable TXEN im Register UCR TX-Data Enable
UBRR1L = (F_CPU / (BAUD_RATE * 16L) - 1); //Teiler wird gesetzt
stdout = &rs232; //öffnet einen Kanal für printf (STDOUT)
}
void rs232_send(char * text) {
fprintf(&rs232, text);
}
+16
View File
@@ -0,0 +1,16 @@
/*
* rs232.h
*
* Created: 06.10.2013 16:34:17
* Author: netz
*/
#include <stdio.h>
#ifndef RS232_H_
#define RS232_H_
void init_rs232();
void rs232_send(char * text);
#endif /* RS232_H_ */
+81
View File
@@ -0,0 +1,81 @@
/*
* usb.c
*
* Created: 06.10.2013 21:42:35
* Author: netz
*/
#include "config.h"
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include "usb_user_config.h" // USB configuration
#include "usb_user.h" // USB functions
#include "usb.h"
#ifdef USERDEFCONTROLS // see usbconfig.h
//-----------------------------------------------------------------------------
// Handle user defined control requests
// "ucr" contains the data of the control request
// function has to return "true", if request is handled (otherwise "false")
bool usb_controlrequest(struct usb_control_request *ucr) {
#define USER_REQUESTTYPE 0xC3 // a user defined request type (means, no standard request)
#define USER_REQUESTVERSION 0x01 // a self defined request: get version info
bool Result;
const char VersionInfo[ENDPOINT0_SIZE] = {"Version 1.0"};
Result=false;
if (ucr->bmRequestType == USER_REQUESTTYPE) {
// handle the requests (only one defined in this example)
switch (ucr->bRequest) {
case USER_REQUESTVERSION: // request for version info)
usb_txdata_control((uint8_t *)VersionInfo,sizeof(VersionInfo));
Result=true;
break;
}
}
return Result; // true means, request is handled
}
#endif
//-----------------------------------------------------------------------------
// handle of endpoint interrupt for incoming data
// "datasize" contains the number of bytes in the USB FIFO buffer
void usb_ep(uint8_t endpoint, uint16_t datasize) {
#define RXENDPOINT 0x01 // endpoint, used for data transfer host->device (defined in "usb_user_config.h")
#define TXENDPOINT 0x82 // endpoint, used for data transfer device->host
#define BUFSIZE 32 // USB FIFO buffer size (see usb_user_config.h at "endpoints")
char buf[BUFSIZE]; // buffer for received data from host and data to transmit to host
uint8_t n;
if (endpoint == RXENDPOINT) { // data from host by our defined data receive endpoint
n=usb_rxdata(endpoint, (uint8_t *)buf, sizeof(buf)); // read data into buffer
if (n) { // data read into local buffer
buf[BUFSIZE-1]=0; // for security: terminate string
//resi(buf);
strupr(buf); // upper case string
// response to host with converted string
usb_txdata(TXENDPOINT, (uint8_t *)buf, sizeof(buf)); // transfer data to host*/
}
}
}
void init_usb() {
usb_init();
}
void usb_send(char* text) {
#define RXENDPOINT 0x01
#define TXENDPOINT 0x82
#define ITENDPOINT 0x83
usb_txdata(TXENDPOINT, (uint8_t *)text, strlen(text));
}
uint8_t usb_getstatus() {
return usb_status();
}
uint8_t usb_ready() {
return usb_is_ready();
}
+21
View File
@@ -0,0 +1,21 @@
/*
* usb.h
*
* Created: 06.10.2013 21:42:01
* Author: netz
*/
#ifndef USB_H_
#define USB_H_
#include "usb_user.h"
void init_usb();
void usb_send(char * text);
uint8_t usb_getstatus();
uint8_t usb_ready();
void resi(char * text);
#endif /* USB_H_ */
+687
View File
@@ -0,0 +1,687 @@
/*****************************************************************************
USB-Template: User defined USB device
V1.1.1
(c) 2010-2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Supported devices:
- AT90USB82, AT90USB162
- ATMEGA8U2, ATMEGA16U2, ATMEGA32U2
- ATMEGA8U4, ATMEGA16U4, ATMEGA32U4
- AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
Supported modules:
- U2DIL-AT90USB162
- U2DIL-ATMEGA32U2
- U4DIL-ATMEGA32U4
- U6DIL-AT90USB1286
USB Function Implementation
Created: 2010-01-07
Changed: 2011-08-02
*****************************************************************************/
// Usually no changes are necessary in this file!
#include <stdlib.h>
#include <stdbool.h>
#include "usb_user_config.h"
#include "usb_user.h"
//-----------------------------------------------------------------------------
// Internal Variables
//-----------------------------------------------------------------------------
// USB State
static volatile uint8_t usb_stat = USB_STATUS_DISCONNECTED;
// USB configuration, selected by host (0=none)
// In this version only 0 or 1 is possible (support of only one configuration)
static volatile uint8_t usb_conf = 0;
// USB interface, selected by host
// In this version the value 0 and optional more cfgs are possible (see usbconfig.h)
#if (NUMINTERFACES>1)
static volatile uint8_t usb_if = 0xFF; // 0xFF: no interface selected
#endif
//-----------------------------------------------------------------------------
// Descriptors
//-----------------------------------------------------------------------------
// configuration descriptor
typedef struct {
uint8_t bLength;
uint8_t bDescriptorType;
uint16_t wTotalLength;
uint8_t bNumInterfaces;
uint8_t bConfigurationValue;
uint8_t iConfiguration;
uint8_t bmAttributes;
uint8_t bMaxPower;
} cfg_desc;
// interface descriptor
typedef struct {
uint8_t bLength;
uint8_t bDescriptorType;
uint8_t bInterfaceNumber;
uint8_t bAlternateSetting;
uint8_t bNumEndpoints;
uint8_t bInterfaceClass;
uint8_t bInterfaceSubClass;
uint8_t bInterfaceProtocol;
uint8_t iInterface;
} if_desc;
// endpoint descriptor
typedef struct {
uint8_t bLength;
uint8_t bDescriptorType;
uint8_t bEndpointAddress;
uint8_t bmAttributes;
uint16_t wMaxPacketSize;
uint8_t bInterval;
} ep_desc;
//-----------------------------------------------------------------------------
// USB Initializing
//-----------------------------------------------------------------------------
#if defined (__AVR_AT90USB1286__) || (__AVR_AT90USB1287__)
#define AT128X
#endif
void usb_init(void)
{
#ifdef MEGA4
UHWCON = _BV(UVREGE); // enable PAD regulator
#endif
#ifdef MEGA6
UHWCON = _BV(UIMOD)|_BV(UVREGE); // set device mode, enable PAD regulator
#endif
USBCON = _BV(USBE) | _BV(FRZCLK); // enable USB
#if (F_CPU==16000000)
// 16MHz
#ifdef MEGA2
PLLCSR = _BV(PLLE) | _BV(PLLP0); // config PLL, 16 MHz xtal
#endif
#ifdef MEGA4
PLLCSR = _BV(PINDIV) | _BV(PLLE); // config PLL, 16 MHz xtal
#endif
#ifdef MEGA6
#ifdef AT128X
PLLCSR = _BV(PLLP2) | _BV(PLLP0) | _BV(PLLE); // config PLL, 16 MHz xtal (AT90USB128x)
#else
PLLCSR = _BV(PLLP2) | _BV(PLLP1) | _BV(PLLE); // config PLL, 16 MHz xtal (AT90USB64x and ATMEGA32U6)
#endif
#endif
#else
// 8MHz
#ifdef MEGA6
PLLCSR = _BV(PLLP1) | _BV(PLLP0) |_BV(PLLE); // config PLL, 8 MHz xtal
#else
PLLCSR = _BV(PLLE); // config PLL, 8 MHz xtal
#endif
#endif
while (!(PLLCSR & _BV(PLOCK))) ; // wait for PLL lock
#ifdef MEGA4_6
USBCON = _BV(USBE)|_BV(OTGPADE); // start USB clock
#else
USBCON = _BV(USBE); // start USB clock
#endif
UDCON = 0; // enable attach resistor
usb_conf = 0;
#if (NUMINTERFACES>1)
usb_if = 0xFF;
#endif
#ifdef MEGA2
// port for VBUS detection
VBUSDIR &= ~_BV(VBUSPIN); // port as input
#endif
UDIEN = _BV(EORSTE); // enable "end of reset" interrupt
}
//-----------------------------------------------------------------------------
// Initializing Endpoints
//-----------------------------------------------------------------------------
#if (NUMINTERFACES>1)
void usb_endpoints(uint8_t ifnumber) // with interface number
#else
void usb_endpoints(void)
#endif
{
#if (NUMINTERFACES>1)
#define EPC EP_CONFIG[ifnumber][i]
#define IN_TRANSFER EP_CONFIG[ifnumber][i].ep_type & 0x01
#else
#define EPC EP_CONFIG[i]
#define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01
#endif
uint8_t i;
for (i=0; i<MAX_ENDPOINT; i++) {
if (EPC.ep_type!=EP_TYPE_DISABLED) {
UENUM = i+1; // select endpoint
UECONX = _BV(EPEN); // enable endpoint
UECFG0X = EPC.ep_type; // transfer type and direction
UECFG1X = EP_SIZE(EPC.ep_size)|
(EPC.ep_buffer); // bufer size and bank
if (IN_TRANSFER) UEIENX = 0; // no interrupts handling for IN endpoints
else UEIENX = _BV(RXOUTE); // interrupt handling for incoming data (OUT endpoint)
}
}
#ifdef MEGA4_6
UERST = 0x7E; // endpoint FIFO reset for endpoint 1, 2, 3, 4, 5 and 6
#else
UERST = 0x1E; // endpoint FIFO reset for endpoint 1, 2, 3 and 4
#endif
UERST = 0;
}
//-----------------------------------------------------------------------------
// USB State
//-----------------------------------------------------------------------------
uint8_t usb_status(void)
{
uint8_t r;
r = USB_STATUS_DISCONNECTED;
#ifdef MEGA4_6
if (USBSTA & _BV(VBUS)) {
r = USB_STATUS_CONNECTED;
if (UDADDR & _BV(ADDEN)) {
r = USB_STATUS_ENUMERATED;
if (usb_conf) r = USB_STATUS_CONFIGURED;
}
}
#endif
#ifdef MEGA2
#ifdef VBUSDETECT
if (VBUSPORT & _BV(VBUSPIN)) {
r = USB_STATUS_CONNECTED;
#endif
if (UDADDR & _BV(ADDEN)) {
r = USB_STATUS_ENUMERATED;
if (usb_conf) r = USB_STATUS_CONFIGURED;
}
#ifdef VBUSDETECT
}
#endif
#endif
return r;
}
//-----------------------------------------------------------------------------
// USB Configuration
//-----------------------------------------------------------------------------
uint8_t usb_configuration(void)
{
return usb_conf;
}
//-----------------------------------------------------------------------------
// USB Interface
//-----------------------------------------------------------------------------
#if (NUMINTERFACES>1)
uint8_t usb_interface(void)
{
return usb_if;
}
#endif
//-----------------------------------------------------------------------------
// Internal used USB routines and macros
//-----------------------------------------------------------------------------
#define USB_SEND_IN UEINTX = ~(1<<TXINI)
#define STALL UECONX = _BV(STALLRQ) | _BV(EPEN)
static inline void usb_wait_in_ready(void)
{
while (!(UEINTX & _BV(TXINI)));
}
uint8_t usb_is_ready() {
return (UEINTX & _BV(TXINI));
}
void usb_wait_in(void)
// wait for host, until it's ready to receive IN package
{
uint8_t i;
do {
i = UEINTX;
} while (!(i & (_BV(TXINI)|_BV(RXOUTI))));
}
void usb_desc_out(bool isRAM, const uint8_t *pgmaddr, uint8_t size, uint16_t maxsize)
// return descriptor over endpoint 0 to host from flash memory or RAM
{
uint8_t i=0, len, n;
const uint8_t *addr;
addr=pgmaddr;
len=size;
if (len>maxsize) len=maxsize;
do {
usb_wait_in();
if (i & _BV(RXOUTI)) return; // cancel
// send IN package
n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE;
for (i = n; i; i--)
UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++);
len -= n;
USB_SEND_IN;
} while (len || n == ENDPOINT0_SIZE);
}
//-----------------------------------------------------------------------------
// Free FIFO Buffer
//-----------------------------------------------------------------------------
void usb_freebuffer(uint8_t endpoint)
{
UENUM = endpoint; // select endpoint
UERST = _BV(endpoint); // endpoint FIFO reset
UERST = 0;
}
//-----------------------------------------------------------------------------
// Data Check (Host to Device)
//-----------------------------------------------------------------------------
#ifdef MEGA4_6
uint16_t usb_rxavail(uint8_t endpoint)
#else
uint8_t usb_rxavail(uint8_t endpoint)
#endif
{
UENUM = endpoint; // select endpoint
#ifdef MEGA4_6
return ((uint16_t)(UEBCHX)<<8)+UEBCLX;
#else
return UEBCLX;
#endif
}
//-----------------------------------------------------------------------------
// Data Receive (Host to Device)
//-----------------------------------------------------------------------------
#ifdef MEGA4_6
uint16_t usb_rxdata(uint8_t endpoint, uint8_t *buffer, uint16_t maxdatasize)
#else
uint8_t usb_rxdata(uint8_t endpoint, uint8_t *buffer, uint8_t maxdatasize)
#endif
{
#ifdef MEGA4_6
uint16_t r, i;
#else
uint8_t r, i;
#endif
UENUM = endpoint; // select endpoint
#ifdef MEGA4_6
r = ((uint16_t)(UEBCHX)<<8)+UEBCLX;
#else
r = UEBCLX;
#endif
if (r>maxdatasize) r = maxdatasize;
if (r) { // data available in input endpoint
for (i=0; i<r; i++) buffer[i]=UEDATX;
#ifdef MEGA4_6
if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty
#else
if (UEBCLX==0) { // buffer is empty
#endif
UERST = _BV(endpoint); // endpoint FIFO reset
UERST = 0;
}
}
return r;
}
//-----------------------------------------------------------------------------
// Data Return (Device to Host), Control Transfers
//-----------------------------------------------------------------------------
bool usb_txdata_control(uint8_t *buffer, uint8_t datasize)
{
uint8_t i;
if (datasize) {
UENUM = 0;
usb_wait_in_ready();
#ifdef MEGA4_6
if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty
#else
if (UEBCLX==0) { // buffer is empty
#endif
for (i=0; i<datasize; i++) UEDATX = buffer[i];
UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1)
return true;
}
}
return false;
}
//-----------------------------------------------------------------------------
// Data Return (Device to Host)
//-----------------------------------------------------------------------------
// This routine has to be used for all transfer types, except control transfers
#ifdef MEGA4_6
bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint16_t datasize)
#else
bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint8_t datasize)
#endif
{
#ifdef MEGA4_6
uint16_t i;
#else
uint8_t i;
#endif
if (datasize) {
UENUM = endpoint;
usb_wait_in_ready();
#ifdef MEGA4_6
if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty
#else
if (UEBCLX==0) { // buffer is empty
#endif
for (i=0; i<datasize; i++)
if (UEINTX & _BV(RWAL)) UEDATX = buffer[i];
UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1)
UEINTX=0x7F; // (uint8_t)~_BV(FIFOCON);
return true;
}
}
return false;
}
//-----------------------------------------------------------------------------
// USB Device Interrupt
//-----------------------------------------------------------------------------
// Hardware interrupts of the USB controller
ISR(USB_GEN_vect)
{
uint8_t intbits;
intbits = UDINT; // save flags
UDINT = 0; // reset flags
if (intbits & _BV(EORSTI)) { // End Of Reset Interrupt Flag
// initialize endpoint 0 for control transfers
UENUM = 0;
UECONX = _BV(EPEN);
UECFG0X = EP_TYPE_CONTROL;
UECFG1X = EP_SIZE(ENDPOINT0_SIZE) | EP_SINGLE_BUFFER;
UEIENX = _BV(RXSTPE); // enable interrupt for incoming data
usb_conf = 0;
#if (NUMINTERFACES>1)
usb_if = 0xFF;
#endif
}
}
//-----------------------------------------------------------------------------
// Endpoint Interrupts
//-----------------------------------------------------------------------------
// Interrupts, triggered by incoming data in an endpoint, are handled here.
ISR(USB_COM_vect)
{
#if (NUMINTERFACES>1)
#define EPCO EP_CONFIG[j][i]
#else
#define EPCO EP_CONFIG[i]
#endif
uint8_t intbits;
uint8_t i, j, n, s;
cfg_desc *cfg;
if_desc *ifp;
ep_desc *epp;
#if (USESN==2) // serial number in RAM
struct usb_string_descriptor_ram buf;
#endif
struct usb_control_request ucr;
if (UEINT & 0x01) {
// handle interrupts of endpoint 0 (control transfers)
UENUM = 0;
intbits = UEINTX; // save interrupt flags of the endpoint
if (intbits & _BV(RXSTPI)) { // control transfer, setup
ucr.bmRequestType = UEDATX;
ucr.bRequest = UEDATX;
ucr.wValue = UEDATX;
ucr.wValue |= (UEDATX << 8);
ucr.wIndex = UEDATX;
ucr.wIndex |= (UEDATX << 8);
ucr.wLength = UEDATX;
ucr.wLength |= (UEDATX << 8);
UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI));
if (ucr.bRequest == GET_DESCRIPTOR) {
switch (ucr.wValue) {
case 0x0100: // device descriptor
usb_desc_out(false,&device_descriptor[0],pgm_read_byte(&device_descriptor[0]),ucr.wLength);
break;
case 0x0200: // configuration descriptor
// get number of activated endpoints
n=0;
#if (NUMINTERFACES>1)
for (j=0; j<NUMINTERFACES; j++)
for (i=0; i<MAX_ENDPOINT; i++) n+=(EP_CONFIG[j][i].ep_type!=EP_TYPE_DISABLED);
#else
for (i=0; i<MAX_ENDPOINT; i++) n+=(EP_CONFIG[i].ep_type!=EP_TYPE_DISABLED);
#endif
s = sizeof(cfg_desc)+NUMINTERFACES*sizeof(if_desc)+n*sizeof(ep_desc);
cfg = malloc(s); // allocate memory
// initialize configuration descriptor
cfg->bLength = sizeof(cfg_desc);
cfg->bDescriptorType = 2;
cfg->wTotalLength = s;
cfg->bNumInterfaces = NUMINTERFACES;
cfg->bConfigurationValue = 1;
cfg->iConfiguration = 0;
cfg->bmAttributes = POWERING;
cfg->bMaxPower = MAXPOWER>>1;
// initialize interface descriptor
ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc));
#if (NUMINTERFACES>1)
for (j=0; j<NUMINTERFACES; j++) {
n = 0;
for (i=0; i<MAX_ENDPOINT; i++) n+=(EP_CONFIG[j][i].ep_type!=EP_TYPE_DISABLED); // number of endpoints for one interface
#else
j = 0;
#endif
ifp->bLength = sizeof(if_desc);
ifp->bDescriptorType = 4;
ifp->bInterfaceNumber = j;
ifp->bAlternateSetting = 0;
ifp->bNumEndpoints = n;
ifp->bInterfaceClass = 0xFF;
ifp->bInterfaceSubClass = 0x00;
ifp->bInterfaceProtocol = 0xFF;
ifp->iInterface = 0;
epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc));
if (n) { // endpoints
for (i=0; i<MAX_ENDPOINT; i++) {
if (EPCO.ep_type!=EP_TYPE_DISABLED) {
epp->bLength = sizeof(ep_desc);
epp->bDescriptorType = 5;
epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7);
epp->bmAttributes = EP_TRANSFER(EPCO.ep_type);
epp->wMaxPacketSize = EPCO.ep_size;
epp->bInterval = 0;
epp = (ep_desc *)((uint16_t)(epp)+sizeof(ep_desc));
}
}
}
#if (NUMINTERFACES>1)
ifp = (if_desc *)epp;
}
#endif
// finally
usb_desc_out(true,(uint8_t *)cfg,s,ucr.wLength);
free(cfg);
break;
case 0x0300: // String 0
usb_desc_out(false,(uint8_t *)&string0.bLength,pgm_read_byte(&string0.bLength),ucr.wLength);
break;
case 0x0301: // String 1
usb_desc_out(false,(uint8_t *)&string1.bLength,pgm_read_byte(&string1.bLength),ucr.wLength);
break;
case 0x0302: // String 2
usb_desc_out(false,(uint8_t *)&string2.bLength,pgm_read_byte(&string2.bLength),ucr.wLength);
break;
#if (USESN>0)
case 0x0303: // String 3, serial number
#if (USESN==1) // Seriennummer im Flash
usb_desc_out(false,(uint8_t *)&string3.bLength,pgm_read_byte(&string3.bLength),ucr.wLength);
#endif
#if (USESN==2) // serial number in the RAM
buf.bDescriptorType=3; // has to be 3 always
i = 0;
while (RAMSN[i]) {
buf.wString[i] = RAMSN[i];
i++;
}
buf.bLength=2*i+2; // total length of the data set
usb_desc_out(true,(uint8_t *)&buf,buf.bLength,ucr.wLength);
#endif
break;
#endif
default:
STALL; // stall
}
return;
}
if (ucr.bRequest == SET_ADDRESS) {
USB_SEND_IN;
usb_wait_in_ready();
UDADDR = ucr.wValue | _BV(ADDEN);
return;
}
if (ucr.bRequest == SET_CONFIGURATION && ucr.bmRequestType == 0) { // another configuration will be chosen
if (ucr.wValue==1) { // configuration 1 will be chosen
usb_conf = ucr.wValue;
USB_SEND_IN;
#if (NUMINTERFACES==1)
usb_endpoints(); // initialize endpoints
#else
usb_if = 0; // select interface 0
usb_endpoints(usb_if); // initialize endpoints
#endif
} else { // other configurations are not supported in this version
STALL; // stall
}
return;
}
if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) {
usb_wait_in_ready();
UEDATX = usb_conf;
USB_SEND_IN;
return;
}
if (ucr.bRequest == GET_STATUS) {
usb_wait_in_ready();
i = 0;
#ifdef SUPPORT_ENDPOINT_HALT
if (ucr.bmRequestType == 0x82) {
UENUM = ucr.wIndex;
if (UECONX & _BV(STALLRQ)) i = 1;
UENUM = 0;
}
#endif
UEDATX = i;
UEDATX = 0;
USB_SEND_IN;
return;
}
#if (NUMINTERFACES>1)
if (ucr.bRequest == SET_INTERFACE && (ucr.bmRequestType == 0x20 || ucr.bmRequestType == 0)) { // another interface will be chosen
if (ucr.wIndex<NUMINTERFACES) { // defined interface will be chosen
usb_if = ucr.wIndex;
USB_SEND_IN;
usb_endpoints(usb_if); // initialize endpoints
} else { // other configurations are not supported in this version
STALL; // stall
}
return;
}
if (ucr.bRequest == GET_INTERFACE && ucr.bmRequestType == 0x80) {
usb_wait_in_ready();
UEDATX = usb_if;
USB_SEND_IN;
return;
}
#endif
#ifdef SUPPORT_ENDPOINT_HALT
if ((ucr.bRequest == CLEAR_FEATURE || ucr.bRequest == SET_FEATURE)
&& ucr.bmRequestType == 0x02 && ucr.wValue == 0) {
i = ucr.wIndex & 0x7F;
if (i >= 1 && i <= MAX_ENDPOINT) {
USB_SEND_IN;
UENUM = i;
if (ucr.bRequest == SET_FEATURE) {
UECONX = _BV(STALLRQ)|_BV(EPEN);
} else {
UECONX = _BV(STALLRQC)|_BV(RSTDT)|_BV(EPEN);
UERST = _BV(i);
UERST = 0;
}
return;
}
}
#endif
#ifdef USERDEFCONTROLS
// handle user defined control requests
if (!usb_controlrequest(&ucr))
UECONX = _BV(STALLRQ) | _BV(EPEN); // stall
return;
#endif
}
UECONX = _BV(STALLRQ) | _BV(EPEN); // stall
}
// handle interrupts for further endpoints
for (i=1; i<=MAX_ENDPOINT; i++) {
if (UEINT & _BV(i)) {
UENUM=i; // select endpoint
intbits = UEINTX; // save interrupt bits of the endpoint
if (intbits & _BV(RXOUTI)) { // interrupt occured by incoming data
#ifdef MEGA4_6
if (((uint16_t)(UEBCHX)<<8)+UEBCLX) { // data available in input endpoint
usb_ep(i,((uint16_t)(UEBCHX)<<8)+UEBCLX);
#else
if (UEBCLX) { // data available in input endpoint
usb_ep(i,UEBCLX);
#endif
UENUM=i; // reselect endpoint (if changed by handling routine)
}
UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags
UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI!
return;
}
STALL; // stall
}
}
STALL; // stall
}
+254
View File
@@ -0,0 +1,254 @@
/*****************************************************************************
USB-Template: User defined USB device
V1.1.0
(c) 2010-2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Supported devices:
- AT90USB82, AT90USB162
- ATMEGA8U2, ATMEGA16U2, ATMEGA32U2
- ATMEGA8U4, ATMEGA16U4, ATMEGA32U4
- AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
Supported modules:
- U2DIL-AT90USB162
- U2DIL-ATMEGA32U2
- U4DIL-ATMEGA32U4
- U6DIL-AT90USB1286
USB Header File
Created: 2010-01-07
Changed: 2011-03-12
*****************************************************************************/
// Usually no changes are necessary in this file!
#ifndef usb_h__
#define usb_h__
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include "usb_user_config.h"
//-----------------------------------------------------------------------------
// USB Strings
//-----------------------------------------------------------------------------
struct usb_string_descriptor {
uint8_t bLength;
uint8_t bDescriptorType;
int16_t wString[];
};
static const struct usb_string_descriptor PROGMEM string0 = {
4,
3,
{0x0409}
};
static const struct usb_string_descriptor PROGMEM string1 = {
sizeof(STR_MANUFACTURER),
3,
STR_MANUFACTURER
};
static const struct usb_string_descriptor PROGMEM string2 = {
sizeof(STR_PRODUCT),
3,
STR_PRODUCT
};
#if (USESN==1)
static const struct usb_string_descriptor PROGMEM string3 = {
sizeof(STR_SERIAL_NUMBER),
3,
STR_SERIAL_NUMBER
};
#endif
#if (USESN==2)
// Your USB serial numebr in RAM. Must be set into RAMSN before calling usb_init!
// Descriptor size, descriptor ID and conversion into widechars wil be done automatically.
#define RAMSNLEN 16 // maximum length of the serial number
struct usb_string_descriptor_ram {
uint8_t bLength;
uint8_t bDescriptorType;
int16_t wString[RAMSNLEN];
};
char RAMSN[RAMSNLEN]; // save the S/N as string here (e.g. read from EEPROM)
#endif
//-----------------------------------------------------------------------------
// Endpoints
//-----------------------------------------------------------------------------
// buffer sizes of an endpoint
// Hint: For 64 byte and more only two endpoints must be activated!
#define EP_SIZE(s) ((s) == 512 ? 0x60 : \
((s) == 256 ? 0x50 : \
((s) == 128 ? 0x40 : \
((s) == 64 ? 0x30 : \
((s) == 32 ? 0x20 : \
((s) == 16 ? 0x10 : \
0x00))))))
// endpoint attributes
#define EP_TRANSFER(t) ((t) == EP_TYPE_ISOCHRONOUS_IN ? 1 : \
((t) == EP_TYPE_ISOCHRONOUS_OUT ? 1 : \
((t) == EP_TYPE_BULK_IN ? 2 : \
((t) == EP_TYPE_BULK_OUT ? 2 : \
3))))
//-----------------------------------------------------------------------------
// Device Descriptor
//-----------------------------------------------------------------------------
#define LSB(n) (n & 255)
#define MSB(n) ((n >> 8) & 255)
static const uint8_t PROGMEM device_descriptor[] = {
18, // bLength
1, // bDescriptorType
0x00, 0x02, // bcdUSB
USBDEVICECLASS, // bDeviceClass
0, // bDeviceSubClass
0, // bDeviceProtocol
ENDPOINT0_SIZE, // bMaxPacketSize0
LSB(VENDOR_ID), MSB(VENDOR_ID), // idVendor
LSB(PRODUCT_ID), MSB(PRODUCT_ID), // idProduct
0x00, 0x01, // bcdDevice
1, // iManufacturer
2, // iProduct
3, // iSerialNumber
1 // bNumConfigurations
};
//-----------------------------------------------------------------------------
// Standard Commands for Control Transfers
//-----------------------------------------------------------------------------
#define GET_STATUS 0
#define CLEAR_FEATURE 1
#define SET_FEATURE 3
#define SET_ADDRESS 5
#define GET_DESCRIPTOR 6
#define GET_CONFIGURATION 8
#define SET_CONFIGURATION 9
#define GET_INTERFACE 10
#define SET_INTERFACE 11
//=============================================================================
// USB Functions
//=============================================================================
//-----------------------------------------------------------------------------
// USB Initializing
//-----------------------------------------------------------------------------
// Has to be called one time before any USB actions.
// Interrupts has to be enabled (call of sei macro)
void usb_init(void);
//-----------------------------------------------------------------------------
// USB State
//-----------------------------------------------------------------------------
// Request of the USB state.
// State is determined with function call.
// Hint: For AT90USB82/162 and ATMEGAxxU2 without VBUSDETECT option, state will
// not change, if USB connector will be unplugged!
// Possible return values:
#define USB_STATUS_DISCONNECTED 0 // not connected (for self powered devices)
#define USB_STATUS_CONNECTED 1 // connected (for AT90USB82/162 and ATMEGAxxU2 only with option VBUSDETECT)
#define USB_STATUS_ENUMERATED 2 // USB address assigned (USB connection established)
#define USB_STATUS_CONFIGURED 3 // a valid configuration were selected (USB device usable)
uint8_t usb_status(void);
//-----------------------------------------------------------------------------
// USB Configuration
//-----------------------------------------------------------------------------
// Returns the configuration number, set by the host
// If the value is 0, no configuration were selected by the host. No endpoint
// (except ep0 for control transfers) can be used in this case.
uint8_t usb_configuration(void);
//-----------------------------------------------------------------------------
// USB Interface
//-----------------------------------------------------------------------------
// Returns the number of the interface, selected by the host.
uint8_t usb_interface(void);
//-----------------------------------------------------------------------------
// Data Check (Host to Device)
//-----------------------------------------------------------------------------
// This function returns the number of data bytes, contained in the FIFO
// input buffer, for the specified endpoint.
#ifdef MEGA4_6
uint16_t usb_rxavail(uint8_t endpoint);
#else
uint8_t usb_rxavail(uint8_t endpoint);
#endif
//-----------------------------------------------------------------------------
// Data Receive (Host to Device)
//-----------------------------------------------------------------------------
// "endpoint" has to specify an "OUT" endpoint (1..4 or 1..6)!
// Data will be stored into "buffer".
// Returns number of bytes, transfered into buffer
#ifdef MEGA4_6
uint16_t usb_rxdata(uint8_t endpoint, uint8_t *buffer, uint16_t maxdatasize);
#else
uint8_t usb_rxdata(uint8_t endpoint, uint8_t *buffer, uint8_t maxdatasize);
#endif
//-----------------------------------------------------------------------------
// Data Return (Device to Host), Control Transfer
//-----------------------------------------------------------------------------
// Data return for control transfers (endpoint 0)
// "datasize" not greater than size of FIFO buffer (no check!)
// Result is always "true", if no connection to host.
// When a connection is established, result is "false", if data block,
// stored before, is not read from the FIFO buffer.
bool usb_txdata_control(uint8_t *buffer, uint8_t datasize);
//-----------------------------------------------------------------------------
// Data Return (Device to Host)
//-----------------------------------------------------------------------------
// "endpoint" must specify a valid endpoint number (1..4 or 1..6)!
// "datasize" not greater than size of FIFO buffer (no check!)
// Result is always "true", if no connection to host.
// When a connection is established, result is "false", if data block,
// stored before, is not read from the FIFO buffer.
#ifdef MEGA4_6
bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint16_t datasize);
#else
bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint8_t datasize);
#endif
//-----------------------------------------------------------------------------
// Free FIFO Buffer
//-----------------------------------------------------------------------------
// Free the FIFO buffer for one endpoint
// Data contained in the buffer will be lost.
// Endpoint usable for new data transfer.
// It is not necessary, to call this routine after read of buffer data with
// read routine. Routine can be used to clear buffer before writing new data.
void usb_freebuffer(uint8_t endpoint);
uint8_t usb_is_ready();
#endif
+244
View File
@@ -0,0 +1,244 @@
/*****************************************************************************
USB-Template: User defined USB device
V1.1.0
(c) 2010-2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Supported devices:
- AT90USB82, AT90USB162
- ATMEGA8U2, ATMEGA16U2, ATMEGA32U2
- ATMEGA8U4, ATMEGA16U4, ATMEGA32U4
- AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
Supported modules:
- U2DIL-AT90USB162
- U2DIL-ATMEGA32U2
- U4DIL-ATMEGA32U4
- U6DIL-AT90USB1286
USB Configuration
Created: 2010-01-07
Changed: 2011-03-12
*****************************************************************************/
// in this file you will make changes for your purposes
#ifndef usbconfig_h__
#define usbconfig_h__
#if defined (__AVR_AT90USB82__) || (__AVR_AT90USB162__) || (__AVR_ATmega8U2__) || (__AVR_ATmega32U2__)
#define MEGA2 // AT90USB82/162, ATMEGAxxU2
#endif
#if defined (__AVR_ATmega16U4__) || (__AVR_ATmega32U4__)
#define MEGA4 // ATMEGAxxU4
#define MEGA4_6
#endif
#if defined (__AVR_AT90USB646__) || (__AVR_AT90USB647__) || (__AVR_AT90USB1286__) || (__AVR_AT90USB1287__)
#define MEGA6 // AT90USB646, -647, -1286, -1287
#define MEGA4_6
#endif
#include <stdint.h>
#include <stdbool.h>
#include "config.h"
#if (F_CPU==8000000)
#define FREQ_OK
#endif
#if (F_CPU==16000000)
#define FREQ_OK
#endif
#ifndef FREQ_OK
#error "Invalid clock frequency (only 8 or 16MHz)!"
#endif
//-----------------------------------------------------------------------------
// General USB commitments
//-----------------------------------------------------------------------------
// Vendor Name
// will be a part of the descriptor and can be requested by the host
#define STR_MANUFACTURER L"BlubbFish"
// Product Name
// will be a part of the descriptor and can be requested by the host
#define STR_PRODUCT L"Hacker-Jeopardy"
// USB Serial Number (optional)
// will be a part of the descriptor and can be requested by the host
#define USESN 1 // Options: 0= no S/N; 1= S/N inside the flash memory; 2= S/N inside RAM
#if (USESN==1)
#define STR_SERIAL_NUMBER L"000001" // your serial number, stored in flash memory
#endif
// Vendor ID
// set your vendor ID here
#define VENDOR_ID 0xDEAD // !!! THIS ID IS NOT FOR OFFICIAL USE, FOR YOUR PERSONAL TESTING PURPOSES ONLY !!!
// Product ID
// set your product ID here
#define PRODUCT_ID 0xBEEE // !!! THIS ID IS NOT FOR OFFICIAL USE, FOR YOUR PERSONAL TESTING PURPOSES ONLY !!!
// USB device class
// possible settings:
#define USBDEVICECLASS_USER 0xFF // user defined class
// set the class for your purposes
#define USBDEVICECLASS USBDEVICECLASS_USER
// power supply
#define SELFPOWERED 0x40
#define BUSPOWERED 0x80
#define POWERING SELFPOWERED | BUSPOWERED // Alternatives: SELFPOWERED or SELFPOWERED | BUSPOWERED
// current consumption
// in mA (milliamperes), uses only even values between 2 and 500
#define MAXPOWER 500
#ifdef MEGA2
// The controllers AT90USB82/162 and ATMEGAxxU2 are not able, to detect a
// plugged USB connector (presence of VBUS voltage). As alternative an input
// port, which is connected with the 5V line of the USB connector, can be
// used. A pull down resistor at the input port is recommended.
// Uncomment the following line, if a port pin is used for this purpose.
//#define VBUSDETECT
#define VBUSDIR DDRC // Data Direction Register of the used port
#define VBUSPORT PINC // used port
#define VBUSPIN PC4 // used pin (PC4 as example)
#endif
//-----------------------------------------------------------------------------
// Data Set for a USB Control Request
//-----------------------------------------------------------------------------
// Nothing to change here!
struct usb_control_request {
uint8_t bmRequestType;
uint8_t bRequest;
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength;
};
//-----------------------------------------------------------------------------
// Endpoints
//-----------------------------------------------------------------------------
// maximum number of endpoints (don't change!)
#ifdef MEGA4_6
#define MAX_ENDPOINT 6
#else
#define MAX_ENDPOINT 4
#endif
// Constants for endpoint configuration (don't change!)
#define EP_TYPE_DISABLED 0xFF // endpoint not used
#define EP_TYPE_CONTROL 0x00
#define EP_TYPE_BULK_IN 0x81
#define EP_TYPE_BULK_OUT 0x80
#define EP_TYPE_INTERRUPT_IN 0xC1
#define EP_TYPE_INTERRUPT_OUT 0xC0
#define EP_TYPE_ISOCHRONOUS_IN 0x41
#define EP_TYPE_ISOCHRONOUS_OUT 0x40
#define EP_SINGLE_BUFFER 0x02
#define EP_DOUBLE_BUFFER 0x06
// Endpoint 0
// (for Control Transfers, must be defined always)
#define ENDPOINT0_SIZE 16 // control endpoint
// uncomment the following line to handle user defined control request
// of endpoint 0 in the main program
#define USERDEFCONTROLS // we will use self defined control transfers in this example
#ifdef USERDEFCONTROLS
// function prototype to handle user defined control requests.
// Function has to return "true", if request is handled.
// If result is "false", a "stall" will be returned to host.
bool usb_controlrequest(struct usb_control_request *ucr);
#endif
typedef struct {
uint8_t ep_type; // transfer
uint8_t ep_size; // buffer size
uint8_t ep_buffer; // buffer configuration
} ep_config;
// configuration of the endpoints
// EP_TYPE constant, buffer size (8, 16, 32 or 64 byte), single or double buffer
// Hint: Use only two endpoints, if buffer size is 64 byte!
// Additional hints, if more than one USB interfaces are defined:
// - after configuration change (only configuration 1 is possible),
// interface 0 will be selected
// - to chose another interface, the control request command SET_INTERFACE
// with the request type 0x20 has to be executed
#define NUMINTERFACES 2 // number of supported interfaces (1...3) (Endpoint configurations)
#if (NUMINTERFACES>1)
static const ep_config EP_CONFIG[NUMINTERFACES][MAX_ENDPOINT] = {{
#else
static const ep_config EP_CONFIG[MAX_ENDPOINT] = {
#endif
// modify the following lines for your purposes
{EP_TYPE_BULK_OUT, 32, EP_SINGLE_BUFFER}, // one OUT and one IN endpoint with bulk transfer in this example
{EP_TYPE_BULK_IN, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#ifdef MEGA4_6 // the following endpoints are only available on ATMEGAxxU4 and AT90USB64x/128x controllers
,
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#endif
#if (NUMINTERFACES>1)
},{
// modify the following lines for your purposes
{EP_TYPE_INTERRUPT_IN, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#ifdef MEGA4_6 // the following endpoints are only available on ATMEGAxxU4 and AT90USB64x/128x controllers
,
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#endif
}
// more interfaces...
#if (NUMINTERFACES==3)
,{
// modify the following lines for your purposes
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#ifdef MEGA4_6 // the following endpoints are only available on ATMEGAxxU4 and AT90USB64x/128x controllers
,
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER},
{EP_TYPE_DISABLED, 32, EP_SINGLE_BUFFER}
#endif
}
#endif
#endif
};
//-----------------------------------------------------------------------------
// Endpoint Interrupt
//-----------------------------------------------------------------------------
// Function prototype to handle endpoint interrupts for incoming data
// The routine will be a part of the main program
void usb_ep(uint8_t endpoint, uint16_t datasize);
//-----------------------------------------------------------------------------
// Functional Purposes
//-----------------------------------------------------------------------------
// "Endpoint Halt" option
// Comment the following to save code memory. But USB conformity is lost.
#define SUPPORT_ENDPOINT_HALT
#endif
+167
View File
@@ -0,0 +1,167 @@
/*****************************************************************************
USB-Example: User defined USB device
V1.0.0
(c) 2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Main Form
Borland C++Builder 6
Created: 2011-05-30
Changed: 2011-05-30
*****************************************************************************/
/*
This example uses the "LibUSB-Win32" library and driver collection, to communicate
with the USB device.
The example shows, how to use control transfers for the own usage.
It defines two additional endpoints for bulk transfer (write and read) of data.
*/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UnitMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
usb_dev_handle * TFormMain::open_dev(void)
// open USB device with defined VID and PID
{
struct usb_bus *bus;
struct usb_device *dev;
for (bus = usb_get_busses(); bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
if ((dev->descriptor.idVendor==MY_VID)&&(dev->descriptor.idProduct==MY_PID)) {
return usb_open(dev);
}
}
}
return NULL;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
// USB initializations
dev=0;
usb_init(); // initialize the library
usb_find_busses(); // find all busses
usb_find_devices(); // find all connected devices
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCloseQuery(TObject *Sender, bool &CanClose)
{
ButtonCloseClick(Sender);
CanClose=true;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormDestroy(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonOpenClick(TObject *Sender)
// open USB device
{
dev=open_dev();
if (dev) {
usb_set_configuration(dev, 1); // select 1st USB configuration
StatusBar1->SimpleText="USB device opened";
} else
StatusBar1->SimpleText="opening failed";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonVersionClick(TObject *Sender)
// user defined control transfer
{
#define CONTROLBUFSIZE 16 // USB buffer size for control transfers
#define USER_REQUESTTYPE 0xC3 // a user defined request type with response (means, no standard request)
#define USER_REQUESTVERSION 0x01 // a self defined request: get version info
int r;
char buf[CONTROLBUFSIZE];
AnsiString s;
if (dev) {
r=usb_control_msg(dev,USER_REQUESTTYPE,USER_REQUESTVERSION,0,1,(char *)(&buf),sizeof(buf),100);
if (r>0) {
s.SetLength(strlen(buf));
strcpy(s.c_str(),buf);
LabelVersion->Caption=s;
StatusBar1->SimpleText="version info received";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonTransferClick(TObject *Sender)
// transfer data to device and receive response
// (bulk transfer via user defined endpoints)
{
#define BUFSIZE 32 // USB buffer size (= max. data size for one data block)
#define EP_TODEVICE 0x01 // endpoint for data to device (OUT)
#define EP_FROMDEVICE 0x82 // endpoint for data from device (IN)
char buf[BUFSIZE];
int r;
AnsiString s;
if (dev) {
strcpy(buf,LabeledEdit1->Text.c_str());
usb_claim_interface(dev, 0); // select interface 0
r=usb_bulk_write(dev,EP_TODEVICE,buf,sizeof(buf),100); // output data
if (r>0) { // data was transmitted successfully, now wait for response
Sleep(100);
r=usb_bulk_read(dev,EP_FROMDEVICE,(char *)&buf,sizeof(buf),100);
if (r>0) { // data received from device
s.SetLength(strlen(buf));
strcpy(s.c_str(),buf);
LabelData->Caption=s;
StatusBar1->SimpleText="data sent and received";
} else { // error
LabelData->Caption="(no response)";
StatusBar1->SimpleText="no response from device";
}
}
usb_release_interface(dev, 0); // close pipe
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonCloseClick(TObject *Sender)
// close USB device
{
if (dev) {
usb_close(dev);
dev=NULL;
StatusBar1->SimpleText="USB device closed";
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ButtonExitClick(TObject *Sender)
// exit program
{
Close();
}
//---------------------------------------------------------------------------
+121
View File
@@ -0,0 +1,121 @@
object FormMain: TFormMain
Left = 1154
Top = 299
BorderStyle = bsSingle
Caption = 'UxDIL - User Device Demo'
ClientHeight = 276
ClientWidth = 329
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnDestroy = FormDestroy
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 152
Width = 256
Height = 13
Caption = 'Received (converted) string from device (bulk transfer)'
end
object LabelData: TLabel
Left = 8
Top = 168
Width = 45
Height = 16
Caption = '(none)'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHotLight
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object LabelVersion: TLabel
Left = 216
Top = 48
Width = 9
Height = 16
Caption = '?'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHotLight
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object StatusBar1: TStatusBar
Left = 0
Top = 257
Width = 329
Height = 19
Panels = <>
SimplePanel = True
SimpleText = '(c) 2011 Reusch Elektronik'
end
object ButtonOpen: TButton
Left = 8
Top = 8
Width = 193
Height = 25
Caption = '&Open Device'
TabOrder = 1
OnClick = ButtonOpenClick
end
object ButtonVersion: TButton
Left = 8
Top = 40
Width = 193
Height = 25
Caption = 'Firmware &Version (control transfer)'
TabOrder = 2
OnClick = ButtonVersionClick
end
object LabeledEdit1: TLabeledEdit
Left = 8
Top = 88
Width = 289
Height = 21
EditLabel.Width = 77
EditLabel.Height = 13
EditLabel.Caption = 'String for device'
LabelPosition = lpAbove
LabelSpacing = 3
MaxLength = 31
TabOrder = 3
end
object ButtonClose: TButton
Left = 8
Top = 192
Width = 193
Height = 25
Caption = '&Close Device'
TabOrder = 4
OnClick = ButtonCloseClick
end
object ButtonExit: TButton
Left = 8
Top = 224
Width = 193
Height = 25
Caption = 'E&xit'
TabOrder = 5
OnClick = ButtonExitClick
end
object ButtonTransfer: TButton
Left = 8
Top = 120
Width = 193
Height = 25
Caption = 'Convert &String (bulk transfer)'
TabOrder = 6
OnClick = ButtonTransferClick
end
end
+64
View File
@@ -0,0 +1,64 @@
/*****************************************************************************
USB-Example: User defined USB device
V1.0.0
(c) 2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Main Form
Borland C++Builder 6
Created: 2011-05-30
Changed: 2011-05-30
*****************************************************************************/
//---------------------------------------------------------------------------
#ifndef UnitMainH
#define UnitMainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include "usb.h"
#define MY_VID 0x0001 // Vendor ID of the device
#define MY_PID 0x0001 // Product ID of the device
//---------------------------------------------------------------------------
class TFormMain : public TForm
{
__published: // Von der IDE verwaltete Komponenten
TStatusBar *StatusBar1;
TButton *ButtonOpen;
TButton *ButtonVersion;
TLabeledEdit *LabeledEdit1;
TLabel *Label1;
TLabel *LabelData;
TButton *ButtonClose;
TLabel *LabelVersion;
TButton *ButtonExit;
TButton *ButtonTransfer;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall ButtonOpenClick(TObject *Sender);
void __fastcall ButtonVersionClick(TObject *Sender);
void __fastcall ButtonCloseClick(TObject *Sender);
void __fastcall ButtonExitClick(TObject *Sender);
void __fastcall ButtonTransferClick(TObject *Sender);
private: // Anwender-Deklarationen
struct usb_dev_handle *dev;
usb_dev_handle *open_dev(void);
public: // Anwender-Deklarationen
__fastcall TFormMain(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFormMain *FormMain;
//---------------------------------------------------------------------------
#endif
+138
View File
@@ -0,0 +1,138 @@
<?xml version='1.0' encoding='utf-8' ?>
<!-- C++Builder XML Project -->
<PROJECT>
<MACROS>
<VERSION value="BCB.06.00"/>
<PROJECT value="UserDevice.exe"/>
<OBJFILES value="UserDevice.obj UnitMain.obj"/>
<RESFILES value="UserDevice.res"/>
<IDLFILES value=""/>
<IDLGENFILES value=""/>
<DEFFILE value=""/>
<RESDEPEN value="$(RESFILES) UnitMain.dfm"/>
<LIBFILES value="libusb.lib"/>
<LIBRARIES value="rtl.lib vcl.lib"/>
<SPARELIBS value="vcl.lib rtl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi dbrtl.bpi adortl.bpi vcldb.bpi vclx.bpi bdertl.bpi
vcldbx.bpi ibxpress.bpi dsnap.bpi cds.bpi bdecds.bpi qrpt.bpi teeui.bpi
teedb.bpi tee.bpi dss.bpi teeqr.bpi visualclx.bpi visualdbclx.bpi
dsnapcrba.bpi dsnapcon.bpi bcbsmp.bpi vclie.bpi xmlrtl.bpi inet.bpi
inetdbbde.bpi inetdbxpress.bpi inetdb.bpi nmfast.bpi webdsnap.bpi
bcbie.bpi websnap.bpi soaprtl.bpi dclocx.bpi dbexpress.bpi dbxcds.bpi
indy.bpi bcb2kaxserver.bpi toolbox2.bpi"/>
<PATHCPP value=".;"/>
<PATHPAS value=".;"/>
<PATHRC value=".;"/>
<PATHASM value=".;"/>
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
<RELEASELIBPATH value="$(BCB)\lib\release"/>
<LINKER value="ilink32"/>
<USERDEFINES value="_DEBUG"/>
<SYSDEFINES value="NO_STRICT"/>
<MAINSOURCE value="UserDevice.cpp"/>
<INCLUDEPATH value="..\..;UxDIL_Examples\UserDevice;$(BCB)\include;$(BCB)\include\vcl"/>
<LIBPATH value="..\..;UxDIL_Examples\UserDevice;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib"/>
<WARNINGS value="-w-par"/>
<OTHERFILES value=""/>
</MACROS>
<OPTIONS>
<IDLCFLAGS value="-I..\.. -IUxDIL_Examples\UserDevice -I$(BCB)\include -I$(BCB)\include\vcl
-src_suffix cpp -D_DEBUG -boa"/>
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -X- -r- -a8 -6 -b- -k -y -v -vi-
-c -tW -tWM"/>
<PFLAGS value="-$YD -$W -$O- -$A8 -v -JPHNE -M"/>
<RFLAGS value=""/>
<AFLAGS value="/mx /w2 /zd"/>
<LFLAGS value="-D&quot;&quot; -aa -Tpe -x -Gn -v"/>
<OTHERFILES value=""/>
</OPTIONS>
<LINKER>
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
<OTHERFILES value=""/>
</LINKER>
<FILELIST>
<FILE FILENAME="UserDevice.res" FORMNAME="" UNITNAME="UserDevice.res" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="UserDevice.cpp" FORMNAME="" UNITNAME="UserDevice" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="UnitMain.cpp" FORMNAME="FormMain" UNITNAME="UnitMain" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
<FILE FILENAME="libusb.lib" FORMNAME="" UNITNAME="libusb.lib" CONTAINERID="LibTool" DESIGNCLASS="" LOCALCOMMAND=""/>
</FILELIST>
<BUILDTOOLS>
</BUILDTOOLS>
<IDEOPTIONS>
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1031
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlIncludePath]
Count=1
Item0=..\..;UxDIL_Examples\UserDevice;$(BCB)\include;$(BCB)\include\vcl
[HistoryLists\hlLibraryPath]
Count=1
Item0=..\..;UxDIL_Examples\UserDevice;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib
[HistoryLists\hlDebugSourcePath]
Count=1
Item0=$(BCB)\source\vcl
[HistoryLists\hlConditionals]
Count=1
Item0=_DEBUG
[Debugging]
DebugSourceDirs=$(BCB)\source\vcl
[Parameters]
RunParams=
Launcher=
UseLauncher=0
DebugCWD=
HostApplication=
RemoteHost=
RemotePath=
RemoteLauncher=
RemoteCWD=
RemoteDebug=0
[Compiler]
ShowInfoMsgs=0
LinkDebugVcl=0
LinkCGLIB=0
[CORBA]
AddServerUnit=1
AddClientUnit=1
PrecompiledHeaders=1
[Language]
ActiveLang=
ProjectLang=
RootDir=
</IDEOPTIONS>
</PROJECT>
+51
View File
@@ -0,0 +1,51 @@
/*****************************************************************************
USB-Example: User defined USB device
V1.0.0
(c) 2011 Reusch Elektronik, Dipl.-Ing. (FH) Rainer Reusch
Homepage: http://products.reworld.eu/index.htm
Main program
Borland C++Builder 6
Created: 2011-05-30
Changed: 2011-05-30
*****************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("UnitMain.cpp", FormMain);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->Title = "User Device Demo";
Application->CreateForm(__classid(TFormMain), &FormMain);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
This file will contain the digital signature of the files to be installed
on the system.
This file will be provided by Microsoft upon certification of your drivers.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
libusb-win32-bin v1.2.4.0 (04/08/2011) - [Package Information]
ALL ARCHITECTURES:
x86\libusb0_x86.dll: x86 32-bit library. Must be renamed to libusb0.dll
On 64 bit, Installs to Windows\syswow64\libusb0.dll.
On 32 bit, Installs to Windows\system32\libusb0.dll.
x86\inf-wizard.exe: inf-wizard application with embedded libusb-win32
v1.2.4.0 binaries.
X86 ONLY ARCHITECTURES:
x86\libusb0.sys: x86 32-bit driver.
Installs to Windows\system32\drivers\libusb0.sys
AMD64-INTEL64 ONLY ARCHITECTURES:
amd64\libusb0.sys: x64 64-bit driver.
Installs to Windows\system32\drivers\libusb0.sys
amd64\libusb0.dll: x64 64-bit library.
Installs to Windows\system32\libusb0.dll
IA64 ONLY ARCHITECTURES:
ia64\libusb0.sys: IA64 64-bit driver.
Installs to Windows\system32\drivers\libusb0.sys
ia64\libusb0.dll: IA64 64-bit library.
Installs to Windows\system32\libusb0.dll
@@ -0,0 +1,851 @@
Copyright (c) 2002-2004 Stephan Meyer, <ste_meyer@web.de>
Copyright (c) 2000-2004 Johannes Erdfelt, <johannes@erdfelt.com>
Copyright (c) 2000-2004 Thomas Sailer, <sailer@ife.ee.ethz.ch>
Copyright (c) 2010 Travis Robinson, <libusbdotnet@gmail.com>
This software is distributed under the following licenses:
Driver: GNU General Public License (GPL)
Library, Test Files, Installer: GNU Lesser General Public License (LGPL)
***********************************************************************
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 3 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, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+394
View File
@@ -0,0 +1,394 @@
#ifndef __USB_H__
#define __USB_H__
#include <stdlib.h>
#include <windows.h>
/*
* 'interface' is defined somewhere in the Windows header files. This macro
* is deleted here to avoid conflicts and compile errors.
*/
#ifdef interface
#undef interface
#endif
/*
* PATH_MAX from limits.h can't be used on Windows if the dll and
* import libraries are build/used by different compilers
*/
#define LIBUSB_PATH_MAX 512
/*
* USB spec information
*
* This is all stuff grabbed from various USB specs and is pretty much
* not subject to change
*/
/*
* Device and/or Interface Class codes
*/
#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */
#define USB_CLASS_AUDIO 1
#define USB_CLASS_COMM 2
#define USB_CLASS_HID 3
#define USB_CLASS_PRINTER 7
#define USB_CLASS_MASS_STORAGE 8
#define USB_CLASS_HUB 9
#define USB_CLASS_DATA 10
#define USB_CLASS_VENDOR_SPEC 0xff
/*
* Descriptor types
*/
#define USB_DT_DEVICE 0x01
#define USB_DT_CONFIG 0x02
#define USB_DT_STRING 0x03
#define USB_DT_INTERFACE 0x04
#define USB_DT_ENDPOINT 0x05
#define USB_DT_HID 0x21
#define USB_DT_REPORT 0x22
#define USB_DT_PHYSICAL 0x23
#define USB_DT_HUB 0x29
/*
* Descriptor sizes per descriptor type
*/
#define USB_DT_DEVICE_SIZE 18
#define USB_DT_CONFIG_SIZE 9
#define USB_DT_INTERFACE_SIZE 9
#define USB_DT_ENDPOINT_SIZE 7
#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */
#define USB_DT_HUB_NONVAR_SIZE 7
/* ensure byte-packed structures */
#include <pshpack1.h>
/* All standard descriptors have these 2 fields in common */
struct usb_descriptor_header {
unsigned char bLength;
unsigned char bDescriptorType;
};
/* String descriptor */
struct usb_string_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned short wData[1];
};
/* HID descriptor */
struct usb_hid_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned short bcdHID;
unsigned char bCountryCode;
unsigned char bNumDescriptors;
};
/* Endpoint descriptor */
#define USB_MAXENDPOINTS 32
struct usb_endpoint_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned char bEndpointAddress;
unsigned char bmAttributes;
unsigned short wMaxPacketSize;
unsigned char bInterval;
unsigned char bRefresh;
unsigned char bSynchAddress;
unsigned char *extra; /* Extra descriptors */
int extralen;
};
#define USB_ENDPOINT_ADDRESS_MASK 0x0f /* in bEndpointAddress */
#define USB_ENDPOINT_DIR_MASK 0x80
#define USB_ENDPOINT_TYPE_MASK 0x03 /* in bmAttributes */
#define USB_ENDPOINT_TYPE_CONTROL 0
#define USB_ENDPOINT_TYPE_ISOCHRONOUS 1
#define USB_ENDPOINT_TYPE_BULK 2
#define USB_ENDPOINT_TYPE_INTERRUPT 3
/* Interface descriptor */
#define USB_MAXINTERFACES 32
struct usb_interface_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned char bInterfaceNumber;
unsigned char bAlternateSetting;
unsigned char bNumEndpoints;
unsigned char bInterfaceClass;
unsigned char bInterfaceSubClass;
unsigned char bInterfaceProtocol;
unsigned char iInterface;
struct usb_endpoint_descriptor *endpoint;
unsigned char *extra; /* Extra descriptors */
int extralen;
};
#define USB_MAXALTSETTING 128 /* Hard limit */
struct usb_interface {
struct usb_interface_descriptor *altsetting;
int num_altsetting;
};
/* Configuration descriptor information.. */
#define USB_MAXCONFIG 8
struct usb_config_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned short wTotalLength;
unsigned char bNumInterfaces;
unsigned char bConfigurationValue;
unsigned char iConfiguration;
unsigned char bmAttributes;
unsigned char MaxPower;
struct usb_interface *interface;
unsigned char *extra; /* Extra descriptors */
int extralen;
};
/* Device descriptor */
struct usb_device_descriptor {
unsigned char bLength;
unsigned char bDescriptorType;
unsigned short bcdUSB;
unsigned char bDeviceClass;
unsigned char bDeviceSubClass;
unsigned char bDeviceProtocol;
unsigned char bMaxPacketSize0;
unsigned short idVendor;
unsigned short idProduct;
unsigned short bcdDevice;
unsigned char iManufacturer;
unsigned char iProduct;
unsigned char iSerialNumber;
unsigned char bNumConfigurations;
};
struct usb_ctrl_setup {
unsigned char bRequestType;
unsigned char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
};
/*
* Standard requests
*/
#define USB_REQ_GET_STATUS 0x00
#define USB_REQ_CLEAR_FEATURE 0x01
/* 0x02 is reserved */
#define USB_REQ_SET_FEATURE 0x03
/* 0x04 is reserved */
#define USB_REQ_SET_ADDRESS 0x05
#define USB_REQ_GET_DESCRIPTOR 0x06
#define USB_REQ_SET_DESCRIPTOR 0x07
#define USB_REQ_GET_CONFIGURATION 0x08
#define USB_REQ_SET_CONFIGURATION 0x09
#define USB_REQ_GET_INTERFACE 0x0A
#define USB_REQ_SET_INTERFACE 0x0B
#define USB_REQ_SYNCH_FRAME 0x0C
#define USB_TYPE_STANDARD (0x00 << 5)
#define USB_TYPE_CLASS (0x01 << 5)
#define USB_TYPE_VENDOR (0x02 << 5)
#define USB_TYPE_RESERVED (0x03 << 5)
#define USB_RECIP_DEVICE 0x00
#define USB_RECIP_INTERFACE 0x01
#define USB_RECIP_ENDPOINT 0x02
#define USB_RECIP_OTHER 0x03
/*
* Various libusb API related stuff
*/
#define USB_ENDPOINT_IN 0x80
#define USB_ENDPOINT_OUT 0x00
/* Error codes */
#define USB_ERROR_BEGIN 500000
/*
* This is supposed to look weird. This file is generated from autoconf
* and I didn't want to make this too complicated.
*/
#define USB_LE16_TO_CPU(x)
/* Data types */
/* struct usb_device; */
/* struct usb_bus; */
struct usb_device {
struct usb_device *next, *prev;
char filename[LIBUSB_PATH_MAX];
struct usb_bus *bus;
struct usb_device_descriptor descriptor;
struct usb_config_descriptor *config;
void *dev; /* Darwin support */
unsigned char devnum;
unsigned char num_children;
struct usb_device **children;
};
struct usb_bus {
struct usb_bus *next, *prev;
char dirname[LIBUSB_PATH_MAX];
struct usb_device *devices;
unsigned long location;
struct usb_device *root_dev;
};
/* Version information, Windows specific */
struct usb_version {
struct {
int major;
int minor;
int micro;
int nano;
} dll;
struct {
int major;
int minor;
int micro;
int nano;
} driver;
};
struct usb_dev_handle;
typedef struct usb_dev_handle usb_dev_handle;
/* Variables */
#ifndef __USB_C__
#define usb_busses usb_get_busses()
#endif
#include <poppack.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Function prototypes */
/* usb.c */
usb_dev_handle *usb_open(struct usb_device *dev);
int usb_close(usb_dev_handle *dev);
int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf,
size_t buflen);
int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf,
size_t buflen);
/* descriptors.c */
int usb_get_descriptor_by_endpoint(usb_dev_handle *udev, int ep,
unsigned char type, unsigned char index,
void *buf, int size);
int usb_get_descriptor(usb_dev_handle *udev, unsigned char type,
unsigned char index, void *buf, int size);
/* <arch>.c */
int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_interrupt_write(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_interrupt_read(usb_dev_handle *dev, int ep, char *bytes, int size,
int timeout);
int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,
int value, int index, char *bytes, int size,
int timeout);
int usb_set_configuration(usb_dev_handle *dev, int configuration);
int usb_claim_interface(usb_dev_handle *dev, int interface);
int usb_release_interface(usb_dev_handle *dev, int interface);
int usb_set_altinterface(usb_dev_handle *dev, int alternate);
int usb_resetep(usb_dev_handle *dev, unsigned int ep);
int usb_clear_halt(usb_dev_handle *dev, unsigned int ep);
int usb_reset(usb_dev_handle *dev);
char *usb_strerror(void);
void usb_init(void);
void usb_set_debug(int level);
int usb_find_busses(void);
int usb_find_devices(void);
struct usb_device *usb_device(usb_dev_handle *dev);
struct usb_bus *usb_get_busses(void);
/* Windows specific functions */
#define LIBUSB_HAS_INSTALL_SERVICE_NP 1
int usb_install_service_np(void);
void CALLBACK usb_install_service_np_rundll(HWND wnd, HINSTANCE instance,
LPSTR cmd_line, int cmd_show);
#define LIBUSB_HAS_UNINSTALL_SERVICE_NP 1
int usb_uninstall_service_np(void);
void CALLBACK usb_uninstall_service_np_rundll(HWND wnd, HINSTANCE instance,
LPSTR cmd_line, int cmd_show);
#define LIBUSB_HAS_INSTALL_DRIVER_NP 1
int usb_install_driver_np(const char *inf_file);
void CALLBACK usb_install_driver_np_rundll(HWND wnd, HINSTANCE instance,
LPSTR cmd_line, int cmd_show);
#define LIBUSB_HAS_TOUCH_INF_FILE_NP 1
int usb_touch_inf_file_np(const char *inf_file);
void CALLBACK usb_touch_inf_file_np_rundll(HWND wnd, HINSTANCE instance,
LPSTR cmd_line, int cmd_show);
#define LIBUSB_HAS_INSTALL_NEEDS_RESTART_NP 1
int usb_install_needs_restart_np(void);
const struct usb_version *usb_get_version(void);
int usb_isochronous_setup_async(usb_dev_handle *dev, void **context,
unsigned char ep, int pktsize);
int usb_bulk_setup_async(usb_dev_handle *dev, void **context,
unsigned char ep);
int usb_interrupt_setup_async(usb_dev_handle *dev, void **context,
unsigned char ep);
int usb_submit_async(void *context, char *bytes, int size);
int usb_reap_async(void *context, int timeout);
int usb_reap_async_nocancel(void *context, int timeout);
int usb_cancel_async(void *context);
int usb_free_async(void **context);
#ifdef __cplusplus
}
#endif
#endif /* __USB_H__ */