Added new incomplete AudioInputHost Host LowLevel demo.

Added missing Audio class control request definitions.

Added support for the Audio class GET STATUS request so that it is correctly ACKed when sent by the host.
pull/1469/head
Dean Camera 14 years ago
parent cc9b190919
commit ea922c98d1

@ -143,6 +143,15 @@ void EVENT_USB_Device_ControlRequest(void)
} }
break; break;
case AUDIO_REQ_GetStatus:
/* Get Status request can be directed at either the interface or endpoint, neither is currently used
* according to the latest USB Audio 1.0 standard, but must be ACKed with no data when requested */
if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
(USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
}
} }
} }

@ -169,6 +169,15 @@ void EVENT_USB_Device_ControlRequest(void)
} }
break; break;
case AUDIO_REQ_GetStatus:
/* Get Status request can be directed at either the interface or endpoint, neither is currently used
* according to the latest USB Audio 1.0 standard, but must be ACKed with no data when requested */
if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
(USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
}
} }
} }

@ -0,0 +1,274 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Main source file for the AudioInputHost demo. This file contains the main tasks of
* the demo and is responsible for the initial application hardware configuration.
*/
#include "AudioInputHost.h"
/** Main program entry point. This routine configures the hardware required by the application, then
* enters a loop to run the application tasks in sequence.
*/
int main(void)
{
SetupHardware();
puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
sei();
for (;;)
{
Audio_Task();
USB_USBTask();
}
}
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void)
{
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF);
wdt_disable();
/* Disable clock division */
clock_prescale_set(clock_div_1);
/* Hardware Initialization */
Serial_Init(9600, false);
LEDs_Init();
USB_Init();
/* Create a stdio stream for the serial port for stdin and stdout */
Serial_CreateStream(NULL);
}
/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
* starts the library USB task to begin the enumeration and USB management process.
*/
void EVENT_USB_Host_DeviceAttached(void)
{
puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
}
/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
* stops the library USB task management process.
*/
void EVENT_USB_Host_DeviceUnattached(void)
{
puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
}
/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
* enumerated by the host and is now ready to be used by the application.
*/
void EVENT_USB_Host_DeviceEnumerationComplete(void)
{
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
{
USB_Disable();
printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"
" -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
for(;;);
}
/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
* enumerating an attached USB device.
*/
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode)
{
printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
" -- Error Code %d\r\n"
" -- Sub Error Code %d\r\n"
" -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
}
void Audio_Task(void)
{
uint8_t ErrorCode;
switch (USB_HostState)
{
case HOST_STATE_Addressed:
puts_P(PSTR("Getting Config Data.\r\n"));
/* Get and process the configuration descriptor data */
if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)
{
if (ErrorCode == ControlError)
puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));
else
puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));
printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
/* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */
if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)
{
printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
{
printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT),
.bRequest = AUDIO_REQ_SetCurrent,
.wValue = 0x0100,
.wIndex = StreamingEndpointAddress,
.wLength = sizeof(USB_Audio_SampleFreq_t),
};
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
/* Select the control pipe for the request transfer */
Pipe_SelectPipe(PIPE_CONTROLPIPE);
/* Set the sample rate on the streaming interface endpoint */
if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
{
/* Indicate error status */
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
/* Wait until USB device disconnected */
USB_HostState = HOST_STATE_WaitForDeviceRemoval;
break;
}
/* Sample reload timer initialization */
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 8000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TCCR0B = (1 << CS01); // Fcpu/8 speed
/* Set speaker as output */
DDRC |= (1 << 6);
/* PWM speaker timer initialization */
TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
| (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed
puts_P(PSTR("Microphone Enumerated.\r\n"));
USB_HostState = HOST_STATE_Configured;
break;
case HOST_STATE_Configured:
break;
}
}
/** ISR to handle the reloading of the PWM timer with the next sample. */
ISR(TIMER0_COMPA_vect, ISR_BLOCK)
{
uint8_t PrevPipe = Pipe_GetCurrentPipe();
Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);
Pipe_Unfreeze();
/* Check if the current pipe can be read from (contains a packet) and the device is sending data */
if (Pipe_IsINReceived())
{
/* Retrieve the signed 16-bit audio sample, convert to 8-bit */
int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);
/* Check to see if the bank is now empty */
if (!(Pipe_IsReadWriteAllowed()))
{
/* Acknowledge the packet, clear the bank ready for the next packet */
Pipe_ClearIN();
}
/* Load the sample into the PWM timer channel */
OCR3A = (Sample_8Bit ^ (1 << 7));
uint8_t LEDMask = LEDS_NO_LEDS;
/* Turn on LEDs as the sample amplitude increases */
if (Sample_8Bit > 16)
LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
else if (Sample_8Bit > 8)
LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);
else if (Sample_8Bit > 4)
LEDMask = (LEDS_LED1 | LEDS_LED2);
else if (Sample_8Bit > 2)
LEDMask = (LEDS_LED1);
LEDs_SetAllLEDs(LEDMask);
}
Pipe_Freeze();
Pipe_SelectPipe(PrevPipe);
}

@ -0,0 +1,80 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Header file for AudioHost.c.
*/
#ifndef _AUDIO_HOST_H_
#define _AUDIO_HOST_H_
/* Includes: */
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/pgmspace.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include <LUFA/Version.h>
#include <LUFA/Drivers/Misc/TerminalCodes.h>
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Peripheral/Serial.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include "ConfigDescriptor.h"
/* Macros: */
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
#define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
/* Function Prototypes: */
void Audio_Task(void);
void SetupHardware(void);
void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
void EVENT_USB_Host_DeviceEnumerationComplete(void);
#endif

@ -0,0 +1,403 @@
:1000000051C100006DC100006BC1000069C100005A
:1000100067C1000065C1000063C1000061C100004C
:100020005FC100005DC10000D5C6000059C10000DD
:1000300057C1000055C1000053C1000051C100006C
:100040004FC100004DC100004BC1000049C100007C
:1000500047C100008BC2000043C1000041C1000045
:100060003FC100003DC100003BC1000039C100009C
:1000700037C1000035C1000033C1000031C10000AC
:100080002FC100002DC100002BC1000029C10000BC
:1000900027C1000025C100004D6963726F70686F51
:1000A0006E6520456E756D6572617465642E0D0A0E
:1000B000001B5B33316D436F756C64206E6F742071
:1000C00073657420616C7465726E61746976652005
:1000D00073747265616D696E6720696E74657266AE
:1000E0006163652073657474696E672E0D0A202D37
:1000F0002D204572726F7220436F64653A2025642B
:100100000D0A1B5B33376D001B5B33316D436F6E24
:1001100074726F6C204572726F7220285365742060
:10012000436F6E66696775726174696F6E292E0D13
:100130000A202D2D204572726F7220436F64653A3C
:100140002025640D0A1B5B33376D00202D2D2045C3
:1001500072726F7220436F64653A2025640D0A1B2A
:100160005B33376D001B5B33316D496E76616C69B3
:1001700064204465766963652E0D0A001B5B33318C
:100180006D436F6E74726F6C204572726F722028AF
:1001900047657420436F6E66696775726174696F35
:1001A0006E292E0D0A0047657474696E6720436FCF
:1001B0006E66696720446174612E0D0A001B5B3313
:1001C000316D44657620456E756D204572726F7293
:1001D0000D0A202D2D204572726F7220436F6465C9
:1001E0002025640D0A202D2D205375622045727242
:1001F0006F7220436F64652025640D0A202D2D2029
:10020000496E2053746174652025640D0A1B5B33AD
:10021000376D001B5B33316D486F7374204D6F6415
:1002200065204572726F720D0A202D2D2045727265
:100230006F7220436F64652025640D0A1B5B3337A2
:100240006D001B5B33326D44657669636520556EC6
:1002500061747461636865642E0D0A1B5B33376DCE
:10026000001B5B33326D44657669636520417474AD
:1002700061636865642E0D0A1B5B33376D001B5B81
:1002800033366D417564696F20486F73742044651F
:100290006D6F2072756E6E696E672E0D0A1B5B3373
:1002A000376D000011241FBECFEFD0E2DEBFCDBFFF
:1002B00011E0A0E0B1E0EAEFF8E100E00BBF02C01E
:1002C00007900D92AC31B107D9F711E0ACE1B1E084
:1002D00001C01D92A034B107E1F73ED10C947B0C14
:1002E0008FCE9BB19F70982B9BB9089584B7877F61
:1002F00084BF28E10FB6F89420936000109260004C
:100300000FBE90E080E80FB6F89480936100909360
:1003100061000FBE83E390E09093CD008093CC000A
:1003200086E08093CA001092C8002093C900539AB7
:100330005A9A8AB1806F8AB98BB18F708BB934D5D4
:10034000ECE2F1E0F0933B01E0933A01F0933D01E0
:10035000E0933C018EE0DF011D928A95E9F783E08E
:1003600080932F0185E699E09093350180933401C5
:100370008EE699E09093370180933601089581E6E7
:1003800092E0DED780EAADCF82E492E0D9D780E177
:10039000A8CF80E6A6CFDF93CF930F92CDB7DEB77D
:1003A00089839CD400D000D0EDB7FEB7319623E10D
:1003B00032E0ADB7BEB712963C932E931197898168
:1003C000828313829ED70F900F900F900F9080E939
:1003D00088DFFFCF90912B012DB73EB728503040DA
:1003E0000FB6F8943EBF0FBE2DBFEDB7FEB73196E6
:1003F0002DEB31E0ADB7BEB712963C932E9311971B
:100400008283138264831582968317827AD72DB7ED
:100410003EB7285F3F4F0FB6F8943EBF0FBE2DBFCB
:1004200080E95FCF1F93DF93CF9300D00F92CDB7BA
:10043000DEB780912B018B3009F087C086EA91E00E
:100440007FD730D1182F8823E9F0813019F48CE759
:1004500091E002C085E691E073D700D000D0EDB7FF
:10046000FEB731962BE431E0ADB7BEB712963C93A0
:100470002E9311971283138244D70F900F900F90F1
:100480000F904AC081E082D3882341F000D000D091
:10049000EDB7FEB7319628E031E00EC080911C0127
:1004A00060911D0189D3882379F000D000D0EDB789
:1004B000FEB7319621EB30E0ADB7BEB712963C9354
:1004C0002E9311978283D7CF20911E0182E28093D1
:1004D000230181E08093240180E091E09093260144
:1004E00080932501209327011092280183E090E05A
:1004F00090932A0180932901DE011196E0E0F1E05A
:1005000083E001900D928150E1F71092A700CE0197
:100510000196B7D5882329F080E9E3DE10922B01FC
:1005200014C082E080936E009CE797BD84BD85BDBA
:100530003E9A81EF8093900089E08093910088E952
:1005400090E0FED68CE080932B010F900F900F90DF
:10055000CF91DF911F910895C9DE8EE792E0F0D62A
:1005600080E1BFDE78945EDFA2D6FDCF1F920F92AE
:100570000FB60F920BB60F9211241F932F933F9338
:100580004F935F936F937F938F939F93AF93BF939B
:10059000EF93FF931091A700177081E08093A7005D
:1005A0008091A9008F7B8093A9008091A60080FF95
:1005B0002BC08091AF004091AF008091A60085FDD7
:1005C00005C08091A6008E778093A600842F99277E
:1005D00087FD909520E830E082279327909399003B
:1005E00080939800413144F4493044F4453044F458
:1005F000433044F480E007C080EF05C080EB03C0C7
:1006000080E301C080E16DDE8091A9008064809369
:10061000A9001093A700FF91EF91BF91AF919F9117
:100620008F917F916F915F914F913F912F911F918A
:100630000F900BBE0F900FBE0F901F901895FC01EE
:100640008181843049F48581813031F48681813023
:1006500019F48781882311F082E0089580E00895DD
:10066000FC018181843049F48581813031F48681B7
:10067000823019F48781882311F082E0089580E0A8
:100680000895FC018181853029F483818370813054
:1006900019F404C0843021F082E0089580E00895C8
:1006A00081E00895AF92BF92CF92DF92EF92FF92D6
:1006B0000F931F93DF93CF93CDB7DEB7C450D240D3
:1006C0000FB6F894DEBF0FBECDBFAE014B5F5F4FDC
:1006D0005A83498323E0E22EF12CEC0EFD1E81E0CB
:1006E000B70120E032E009D4853009F45CC08630DF
:1006F00061F0882361F400E010E0CC24DD24570190
:100700007E010894E11CF11C07C083E04FC081E02A
:100710004DC09C01032F182FC114D10441F0C50115
:10072000B70141E453E040D4882351F41CC0C50113
:10073000B7014FE153E038D48823B9F5C980DA8096
:10074000C501B70140E353E02FD4882349F0C50128
:10075000B7014FE153E028D4882339F5C980DA8006
:1007600009811A8135C0E981FA81828187FF30C011
:10077000902F812F309769F2D80112968C911297A1
:1007800080931C0113968C9180931D0122812093EC
:100790001E010481158181E061E040E194E0E92ED1
:1007A00022D280E003C082E001C084E0CC5FDD4F54
:1007B0000FB6F894DEBF0FBECDBFCF91DF911F9172
:1007C0000F91FF90EF90DF90CF90BF90AF90089582
:1007D000902F812F9ECF80919E0090E0817090702D
:1007E0002091A0002D7F2093A00020919E002260E8
:1007F00020939E0020919E0021FDFCCF20919E0021
:10080000216020939E002091A00030E02072307083
:100810004091A0004F7D4093A00040919F004F7DEC
:1008200040939F004AE050919F0055FF0BC04091BC
:100830009F004F7D40939F0040919F004D7F4093CC
:100840009F0008C0EFECF7E03197F1F700C000001F
:10085000415049F72115310529F02091A00020626F
:100860002093A000009729F480919E008E7F8093B2
:100870009E008091A00082608093A0000895409126
:100880009E0050E0417050702091A00030E0207236
:1008900030709091A0009F7D9093A00090919F0058
:1008A0009F7D90939F0090919E00916090939E00F9
:1008B00026C090919F0095FF06C090919F009F7D5C
:1008C00090939F00815090912B019230D9F090919C
:1008D000A60094FF09C01092F5008091A6008F7EBB
:1008E0008093A60082E00FC09091A60091FF07C000
:1008F0008091A6008D7F8093A60083E004C08823AA
:10090000C1F601C081E04115510529F490919E0086
:100910009E7F90939E002115310529F09091A000B3
:1009200090629093A0000895EF920F931F93DF932E
:10093000CF93CDB7DEB728970FB6F894DEBF0FBEC2
:10094000CDBF80912B01863009F499C0873070F4B7
:100950008330C9F1843020F4813009F00BC113C019
:100960008430C9F1853009F005C160C0883009F4D0
:10097000A0C0883008F48FC0893009F4B9C08A302B
:1009800009F0F8C0DEC0009120011091210101158D
:10099000110509F4EFC081E072DF682F882331F080
:1009A00080911F0180932B0181E0E0C00150104035
:1009B00010932101009320010115110509F0DAC0FF
:1009C00080911F01C3C088EE93E090932101809332
:1009D000200184E0BBC080912001909121019C0105
:1009E000215030403093210120932001009739F0AD
:1009F0008FEC97E00197F1F700C00000BBC077983B
:100A00008091D80080618093D8008091DD008B7F39
:100A10008093DD008091D70080618093D700809122
:100A2000DD0082608093DD0085E090C080919F00B2
:100A300080FFA0C080919F008E7F80939F00809157
:100A40009F008D7F80939F008091DF008D7F80933A
:100A5000DF008091DE0082608093DE0080919E0046
:100A6000816080939E0026D181E080932B0184E6F3
:100A700090E0909321018093200186E05FC0ABDE7F
:100A800081E080932B0188EC90E09093210180938A
:100A9000200187E053C080E060E040E020E000E417
:100AA00010E0EE24A0D08091AC0087FF5BC088E00E
:100AB0004DC0A3E2B1E0E3E1F1E088E001900D92E6
:100AC0008150E1F7CE010196DCD2682F882309F02E
:100AD0004CC0888580931B017EDE81E080932B01D2
:100AE00088EC90E0909321018093200189E026C05A
:100AF00000911B0180E060E040E020E010E0EE2487
:100B000072D08091AC0087FF2DC0A3E2B1E0EBE092
:100B1000F1E088E001900D928150E1F780E090E0F3
:100B2000B0D2682F882309F581E080932B0184E6F9
:100B300090E090932101809320018AE080931F012F
:100B400019C081E08093A10024DC8BE080932B010D
:100B500011C040DC8091DD0081608093DD0014DCF9
:100B6000D5D008C060E084E001C083E090912B0103
:100B7000923079F728960FB6F894DEBF0FBECDBF3E
:100B8000CF91DF911F910F91EF9008951092230163
:100B900099E09093240180932501109226011092F0
:100BA00028011092270110922A0110922901109217
:100BB000A70080E090E065C2E3E2F1E091E090936D
:100BC00023019BE09093240160932501138280937D
:100BD0002701158210922A01109229011092A70074
:100BE00080E090E04EC2EF920F931F935E2D6295CE
:100BF000660F660F607C642B2F70622B982F5260FB
:100C00004DC09093A7009817B1F428E030E040E081
:100C100003C04F5F220F331F2017310710F44530F8
:100C2000C1F7242F2295207F252BA62F40E070E0CE
:100C3000E1E2F0E00CC0A091AA002091AB00F0919D
:100C4000AD00E091A9007091A5004091AE003091F7
:100C5000A90030623093A90021FF1FC03091A90084
:100C60003E7F3093A9003091AB0032703093AB00DF
:100C70003091A90031603093A900A093AA0020937D
:100C8000AB00F093AD00E093A9007093A5004093F2
:100C9000AE002091AC0027FF08C09F5F973008F49A
:100CA000B0CF8093A70081E001C080E01F910F9139
:100CB000EF9008951092F80080E08093A7001092C2
:100CC000AE001092A6001092AB009091A9009E7FFA
:100CD0009093A9008F5F873081F708956ED075D00B
:100CE000E0EEF0E0808181608083E8EDF0E08081DB
:100CF0008F77808319BCA7EDB0E08C918E7F8C93A9
:100D000080818F7E808310922201089556D05DD01D
:100D10008091D800982F9F779093D8008068809317
:100D2000D8008091D8008F7D8093D8008091D70023
:100D30008F778093D7008CE089BD89B5826089BDAB
:100D400009B400FEFDCF82E080932B0180E4809304
:100D50001B018091D80080648093D8008091DD00D1
:100D600081608093DD008091DD0084608093DD00F0
:100D70008091D7008F7E8093D7006F9A779A809169
:100D8000DE0081608093DE008091DE0084608093CD
:100D9000DE008091E0008E7F8093E0008091D8009B
:100DA00080618093D8000895E7EDF0E08081816054
:100DB000808381E080932201A9CFE8EDF0E080817B
:100DC0008C7F80831092A00008951092DA00109218
:100DD0009F0008951F920F920FB60F920BB60F92BD
:100DE00011242F933F934F935F936F937F938F9330
:100DF0009F93AF93BF93EF93FF9380919F0085FFE5
:100E00000AC08091A00085FF06C080919F008F7D61
:100E100080939F000CD180919F0081FF15C080912D
:100E2000A00081FF11C080919F008D7F80939F0063
:100E300080919F008E7F80939F008091A0008D7F86
:100E40008093A000A1DA62DF8091DF0081FF15C0EE
:100E50008091DE0081FF11C08091DF008D7F809343
:100E6000DF0077988091DD0081608093DD0080E075
:100E700092DA8ADA82E080932B018091DF0080FF92
:100E800017C08091DE0080FF13C08091DF008E7F4D
:100E90008093DF008091DE008E7F8093DE006FDA2A
:100EA0008091A00082608093A00083E080932B015A
:100EB0008091DF0082FF0EC08091DE0082FF0AC0B9
:100EC0008091DF008B7F8093DF0082E060E082DA38
:100ED0005BDA1CDFFF91EF91BF91AF919F918F91F2
:100EE0007F916F915F914F913F912F910F900BBE2A
:100EF0000F900FBE0F901F901895CF92DF92EF9238
:100F0000FF920F931F93DF93CF93CDB7DEB729974F
:100F10000FB6F894DEBF0FBECDBF6B018A01790119
:100F200090E89093230196E09093240190E001973C
:100F300092609093260180932501109228011092CF
:100F4000270189E090E090932A0180932901109273
:100F5000A700CE01019695D08823B9F48B819C819E
:100F6000F60191838083E816F90670F090932A01C8
:100F700080932901C80185D0882339F4F801918133
:100F8000923019F086E001C085E029960FB6F894FA
:100F9000DEBF0FBECDBFCF91DF911F910F91FF90AC
:100FA000EF90DF90CF900895AF92BF92CF92DF92F3
:100FB000EF92FF920F931F93CF93DF938C01EB017E
:100FC0006A0123C0E881F9815F01208130E0C70117
:100FD0002E153F0508F4C901E80FF91FF983E883CE
:100FE000F80120813181281B390B318320838881CE
:100FF0009981F6010995823041F0813069F4A88227
:10100000B982F801F182E08207C0F801E080F18046
:10101000E114F104B9F682E0DF91CF911F910F91B5
:10102000FF90EF90DF90CF90BF90AF90089508951C
:101030001F93CF93DF93182FC8EED3E007C081E052
:101040001EDC8823D1F42097B9F02197112329F4CD
:101050008091A60083FFF3CF0DC0113029F4809159
:10106000A60080FFECCF06C0123049F78091A600A1
:1010700082FFE5CF80E001C084E0DF91CF911F9136
:101080000895EF92FF920F931F93CF93DF938C01FC
:10109000E0909E00FF2481E0E822FF24C091290116
:1010A000D0912A0180919E00816080939E0081E012
:1010B000E6DB882309F0E2C08091AA008F7C809350
:1010C000AA001092F5008091A6008F7E8093A60062
:1010D0008091A9008F7B8093A90080912301809348
:1010E000AF00809124018093AF0090912501809101
:1010F00026019093AF008093AF00909127018091DB
:1011000028019093AF008093AF00909129018091C6
:101110002A019093AF008093AF008091A60087775B
:101120008093A60080E084DF882309F0A7C0809127
:10113000A90080648093A90081E0A1DB882309F0E5
:101140009DC08091230187FF4FC08091AA008F7CB2
:1011500080618093AA000115110561F52DC0809171
:10116000A9008F7B8093A90081E062DF882309F0CA
:1011700085C08091F6009091F700009749F4C0E097
:10118000D0E006C08091AF00F80181938F012197D4
:101190008091F6009091F700009711F0209791F759
:1011A0008091A90080648093A9008091A6008E7729
:1011B0008093A600209799F68091AA008F7C806288
:1011C0008093AA008091A9008F7B8093A90082E080
:1011D0002FDF882309F052C08091A6008B7780937F
:1011E000A60082E025DF4AC00115110599F1809122
:1011F000AA008F7C80628093AA008091A9008F7BD7
:101200008093A9001CC082E013DF8823B9F5F801A0
:1012100006C081918F018093AF00219759F08F0113
:101220002091F6003091F70080911B0190E0281783
:10123000390778F38091A6008B778093A6002097DA
:1012400011F782E0F5DE8823C9F48091A90080645B
:101250008093A9008091AA008F7C80618093AA006E
:101260008091A9008F7B8093A90081E0E1DE882333
:1012700029F49091A6009E779093A6009091A900E2
:1012800090649093A900E114F10429F490919E00D8
:101290009E7F90939E0091E09093A8001092A800EA
:1012A000DF91CF911F910F91FF90EF9008951F93C1
:1012B000CF93DF93C7EAD0E018811770188234DB30
:1012C0001883DF91CF911F9108959091C80095FFE9
:1012D000FCCF8093CE0080E090E008958091C8001C
:1012E00087FF08C08091C80087FF07C02091CE000B
:1012F00030E005C02EEF3FEF02C02FEF3FEFC901F6
:101300000895DF93CF93CDB7DEB7FE013596619197
:10131000719180913C0190913D01DC0113962C91DB
:101320001397286013962C93AF0142D0E0913C01B3
:10133000F0913D012381277F2383CF91DF91089591
:10134000EF92FF920F931F93CF93DF938C01E09165
:101350003C01F0913D01838181FF20C0C0E0D0E0DD
:101360000CC0DB011896ED91FC9119970995009737
:1013700011F0CFEFDFEF0F5F1F4FF8018491609105
:101380003C0170913D01882361F7DB011896ED91D6
:10139000FC9119978AE00995009711F0CFEFDFEFE4
:1013A000CE01DF91CF911F910F91FF90EF900895A3
:1013B0002F923F924F925F926F927F928F929F9265
:1013C000AF92BF92CF92DF92EF92FF920F931F9353
:1013D000DF93CF93CDB7DEB72C970FB6F894DEBF6F
:1013E0000FBECDBF6C011B018A01FC011782168262
:1013F000838181FFC4C12E010894411C511CF60158
:101400009381F10193FD859193FF81911F018823C1
:1014100009F4B1C1853239F493FD859193FF81912F
:101420001F01853221F490E0B601DBD1E8CFEE2434
:10143000FF2420E02032B0F48B3269F08C3228F4A3
:10144000803251F0833271F40BC08D3239F0803329
:1014500049F421602CC02260246029C0286027C084
:10146000206125C027FD2CC0382F30533A3098F426
:1014700026FF08C08E2D880FE82EEE0CEE0CE80E2D
:10148000E30E15C08F2D880FF82EFF0CFF0CF80E01
:10149000F30E20620CC08E3221F426FD6CC1206454
:1014A00006C08C3611F4206802C0883649F4F10178
:1014B00093FD859193FF81911F01882309F0BACF95
:1014C000982F9554933018F09052933028F40C5F75
:1014D0001F4FFFE3F9830DC0833631F0833771F07E
:1014E000833509F05CC021C0F801808189830E5FDB
:1014F0001F4F420171E0A72EB12C15C062E0662E8D
:10150000712C600E711EF8018080918026FF03C04F
:101510006E2D70E002C06FEF7FEFC4012C8756D1B3
:101520005C0183012C852F7716C052E0652E712C4B
:10153000600E711EF8018080918026FF03C06E2D21
:1015400070E002C06FEF7FEFC4012C8734D15C01E3
:101550002C852068830123FD1EC007C080E290E037
:10156000B6012C873ED1FA942C858F2D90E0A816D9
:10157000B906A0F310C0F40127FD859127FF8191E2
:101580004F0190E0B6012C872CD12C85F110FA94F4
:101590000894A108B108A114B10469F7E9C0843620
:1015A00011F0893641F527FF08C0F801608171818B
:1015B000828193810C5F1F4F09C0F80160817181A6
:1015C000882777FD8095982F0E5F1F4F4FE6B42E2A
:1015D000B22297FF09C090958095709561957F4FD5
:1015E0008F4F9F4FF0E8BF2AA2012AE030E025D1BB
:1015F000782E741844C0853731F43FEEB32EB222F2
:101600002AE030E025C099EFB92EB2228F36C1F022
:10161000803720F4883509F0AEC00DC0803721F046
:10162000883709F0A8C002C020E1B22AB4FE0BC07E
:1016300084E0B82A08C0B4FE09C0E6E0BE2A06C0AD
:1016400028E030E005C020E130E002C020E132E0D7
:10165000B7FE08C0F80160817181828193810C5FBF
:101660001F4F07C0F8016081718180E090E00E5F3C
:101670001F4FA201E2D0782E7418FFE7BF22B6FEFA
:101680000BC02EEFB2227E1438F4B4FE07C0B2FCB9
:1016900005C08FEEB82202C0A72C01C0AE2C8B2D46
:1016A00090E0B4FE0DC0FE01E70DF11D2081203356
:1016B00019F4E9EEBE2209C0A394B2FE06C004C02C
:1016C00086789070009709F0A3948B2C9924B3FC32
:1016D00013C0B0FE0EC0AF1428F4E72CEF0CEA18CC
:1016E000AF2C07C0E72C05C080E290E0B60179D0AE
:1016F000A394AF14C8F304C0AF1410F4FA1801C0D7
:10170000FF2484FE0EC080E390E0B6016AD082FE22
:101710001DC081FE03C088E590E010C088E790E01E
:101720000DC0C40186789070009781F081FC02C0E2
:1017300080E201C08BE2B7FC8DE290E0B60151D0AF
:1017400005C080E390E0B6014CD0EA947E14C8F363
:101750007A94F201E70DF11D808190E0B60141D04D
:101760007720B1F705C080E290E0B6013AD0FA9454
:10177000FF20C9F744CEF6012681378102C02FEF42
:101780003FEFC9012C960FB6F894DEBF0FBECDBF58
:10179000CF91DF911F910F91FF90EF90DF90CF904D
:1017A000BF90AF909F908F907F906F905F904F9081
:1017B0003F902F900895FC010590615070400110FA
:1017C000D8F7809590958E0F9F1F0895FC0161506A
:1017D000704001900110D8F7809590958E0F9F1F53
:1017E00008950F931F93CF93DF938C01EB018B81AF
:1017F00081FF1BC082FF0DC02E813F818C819D81A6
:101800002817390764F4E881F9810193F983E883A3
:1018100006C0E885F985802F0995009731F48E81FF
:101820009F8101969F838E8302C00FEF1FEFC80137
:10183000DF91CF911F910F910895FA01AA272830C7
:1018400051F1203181F1E8946F936E7F6E5F7F4F8D
:101850008F4F9F4FAF4FB1E03ED0B4E03CD0670F09
:10186000781F891F9A1FA11D680F791F8A1F911D5C
:10187000A11D6A0F711D811D911DA11D20D009F4AC
:1018800068943F912AE0269F11243019305D3193EE
:10189000DEF6CF010895462F4770405D4193B3E0D7
:1018A0000FD0C9F7F6CF462F4F70405D4A3318F07E
:1018B000495D31FD4052419302D0A9F7EACFB4E02F
:1018C000A6959795879577956795BA95C9F70097E7
:1018D0006105710508959B01AC010A2E0694579588
:1018E000479537952795BA95C9F7620F731F841FDF
:0A18F000951FA01D0895F894FFCF86
:1018FA0080BB008006000100001200000501000004
:0C190A0000000080060001000008004002
:00000001FF

File diff suppressed because it is too large Load Diff

@ -0,0 +1,853 @@
1 .file "AudioInputHost.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .section .text.LEDs_SetAllLEDs,"ax",@progbits
18 LEDs_SetAllLEDs:
19 .LFB127:
20 .LSM0:
21 .LVL0:
22 /* prologue: function */
23 /* frame size = 0 */
24 /* stack size = 0 */
25 .L__stack_usage = 0
26 .LSM1:
27 0000 9BB1 in r25,43-32
28 0002 9F70 andi r25,lo8(15)
29 0004 982B or r25,r24
30 0006 9BB9 out 43-32,r25
31 /* epilogue start */
32 .LSM2:
33 0008 0895 ret
34 .LFE127:
36 .section .text.SetupHardware,"ax",@progbits
37 .global SetupHardware
39 SetupHardware:
40 .LFB132:
41 .LSM3:
42 /* prologue: function */
43 /* frame size = 0 */
44 /* stack size = 0 */
45 .L__stack_usage = 0
46 .LSM4:
47 0000 84B7 in r24,84-32
48 0002 877F andi r24,lo8(-9)
49 0004 84BF out 84-32,r24
50 .LSM5:
51 0006 28E1 ldi r18,lo8(24)
52 /* #APP */
53 ; 63 "AudioInputHost.c" 1
54 0008 0FB6 in __tmp_reg__, __SREG__
55 000a F894 cli
56 000c 2093 6000 sts 96, r18
57 0010 1092 6000 sts 96, __zero_reg__
58 0014 0FBE out __SREG__,__tmp_reg__
59
60 ; 0 "" 2
61 .LVL1:
62 /* #NOAPP */
63 .LBB39:
64 .LBB40:
65 .LSM6:
66 0016 90E0 ldi r25,lo8(0)
67 0018 80E8 ldi r24,lo8(-128)
68 /* #APP */
69 ; 1614 "c:\program files (x86)\atmel\avr studio 5.0\extensions\application\avr toolchain\bin\../l
70 001a 0FB6 in __tmp_reg__,__SREG__
71 001c F894 cli
72 001e 8093 6100 sts 97, r24
73 0022 9093 6100 sts 97, r25
74 0026 0FBE out __SREG__, __tmp_reg__
75 ; 0 "" 2
76 .LVL2:
77 /* #NOAPP */
78 .LBE40:
79 .LBE39:
80 .LBB41:
81 .LBB42:
82 .LSM7:
83 0028 83E3 ldi r24,lo8(51)
84 002a 90E0 ldi r25,hi8(51)
85 002c 9093 CD00 sts 204+1,r25
86 0030 8093 CC00 sts 204,r24
87 .LSM8:
88 0034 86E0 ldi r24,lo8(6)
89 0036 8093 CA00 sts 202,r24
90 .LSM9:
91 003a 1092 C800 sts 200,__zero_reg__
92 .LSM10:
93 003e 2093 C900 sts 201,r18
94 .LSM11:
95 0042 539A sbi 42-32,3
96 .LSM12:
97 0044 5A9A sbi 43-32,2
98 .LBE42:
99 .LBE41:
100 .LBB43:
101 .LBB44:
102 .LSM13:
103 0046 8AB1 in r24,42-32
104 0048 806F ori r24,lo8(-16)
105 004a 8AB9 out 42-32,r24
106 .LSM14:
107 004c 8BB1 in r24,43-32
108 004e 8F70 andi r24,lo8(15)
109 0050 8BB9 out 43-32,r24
110 .LBE44:
111 .LBE43:
112 .LSM15:
113 0052 0E94 0000 call USB_Init
114 .LVL3:
115 .LBB45:
116 .LBB46:
117 .LSM16:
118 0056 E0E0 ldi r30,lo8(USARTSerialStream)
119 0058 F0E0 ldi r31,hi8(USARTSerialStream)
120 005a F093 0000 sts __iob+1,r31
121 005e E093 0000 sts __iob,r30
122 .LSM17:
123 0062 F093 0000 sts __iob+2+1,r31
124 0066 E093 0000 sts __iob+2,r30
125 .LSM18:
126 006a 8EE0 ldi r24,lo8(14)
127 006c DF01 movw r26,r30
128 006e 1D92 st X+,__zero_reg__
129 0070 8A95 dec r24
130 0072 01F4 brne .-6
131 0074 83E0 ldi r24,lo8(3)
132 0076 8093 0000 sts USARTSerialStream+3,r24
133 007a 80E0 ldi r24,lo8(gs(Serial_putchar))
134 007c 90E0 ldi r25,hi8(gs(Serial_putchar))
135 007e 9093 0000 sts USARTSerialStream+8+1,r25
136 0082 8093 0000 sts USARTSerialStream+8,r24
137 0086 80E0 ldi r24,lo8(gs(Serial_getchar))
138 0088 90E0 ldi r25,hi8(gs(Serial_getchar))
139 008a 9093 0000 sts USARTSerialStream+10+1,r25
140 008e 8093 0000 sts USARTSerialStream+10,r24
141 /* epilogue start */
142 .LBE46:
143 .LBE45:
144 .LSM19:
145 0092 0895 ret
146 .LFE132:
148 .section .text.EVENT_USB_Host_DeviceAttached,"ax",@progbits
149 .global EVENT_USB_Host_DeviceAttached
151 EVENT_USB_Host_DeviceAttached:
152 .LFB133:
153 .LSM20:
154 /* prologue: function */
155 /* frame size = 0 */
156 /* stack size = 0 */
157 .L__stack_usage = 0
158 .LSM21:
159 0000 80E0 ldi r24,lo8(__c.3897)
160 0002 90E0 ldi r25,hi8(__c.3897)
161 0004 0E94 0000 call puts_P
162 .LSM22:
163 0008 80EA ldi r24,lo8(-96)
164 000a 0E94 0000 call LEDs_SetAllLEDs
165 /* epilogue start */
166 .LSM23:
167 000e 0895 ret
168 .LFE133:
170 .section .text.EVENT_USB_Host_DeviceUnattached,"ax",@progbits
171 .global EVENT_USB_Host_DeviceUnattached
173 EVENT_USB_Host_DeviceUnattached:
174 .LFB134:
175 .LSM24:
176 /* prologue: function */
177 /* frame size = 0 */
178 /* stack size = 0 */
179 .L__stack_usage = 0
180 .LSM25:
181 0000 80E0 ldi r24,lo8(__c.3902)
182 0002 90E0 ldi r25,hi8(__c.3902)
183 0004 0E94 0000 call puts_P
184 .LSM26:
185 0008 80E1 ldi r24,lo8(16)
186 000a 0E94 0000 call LEDs_SetAllLEDs
187 /* epilogue start */
188 .LSM27:
189 000e 0895 ret
190 .LFE134:
192 .section .text.EVENT_USB_Host_DeviceEnumerationComplete,"ax",@progbits
193 .global EVENT_USB_Host_DeviceEnumerationComplete
195 EVENT_USB_Host_DeviceEnumerationComplete:
196 .LFB135:
197 .LSM28:
198 /* prologue: function */
199 /* frame size = 0 */
200 /* stack size = 0 */
201 .L__stack_usage = 0
202 .LSM29:
203 0000 80E6 ldi r24,lo8(96)
204 0002 0E94 0000 call LEDs_SetAllLEDs
205 /* epilogue start */
206 .LSM30:
207 0006 0895 ret
208 .LFE135:
210 .section .text.EVENT_USB_Host_HostError,"ax",@progbits
211 .global EVENT_USB_Host_HostError
213 EVENT_USB_Host_HostError:
214 .LFB136:
215 .LSM31:
216 .LVL4:
217 0000 DF93 push r29
218 0002 CF93 push r28
219 0004 0F92 push __tmp_reg__
220 0006 CDB7 in r28,__SP_L__
221 0008 DEB7 in r29,__SP_H__
222 /* prologue: function */
223 /* frame size = 1 */
224 /* stack size = 3 */
225 .L__stack_usage = 3
226 .LSM32:
227 000a 8983 std Y+1,r24
228 000c 0E94 0000 call USB_Disable
229 .LVL5:
230 .LSM33:
231 0010 00D0 rcall .
232 0012 00D0 rcall .
233 0014 EDB7 in r30,__SP_L__
234 0016 FEB7 in r31,__SP_H__
235 0018 3196 adiw r30,1
236 001a 20E0 ldi r18,lo8(__c.3910)
237 001c 30E0 ldi r19,hi8(__c.3910)
238 001e ADB7 in r26,__SP_L__
239 0020 BEB7 in r27,__SP_H__
240 0022 1296 adiw r26,1+1
241 0024 3C93 st X,r19
242 0026 2E93 st -X,r18
243 0028 1197 sbiw r26,1
244 002a 8981 ldd r24,Y+1
245 002c 8283 std Z+2,r24
246 002e 1382 std Z+3,__zero_reg__
247 0030 0E94 0000 call printf_P
248 .LSM34:
249 0034 0F90 pop __tmp_reg__
250 0036 0F90 pop __tmp_reg__
251 0038 0F90 pop __tmp_reg__
252 003a 0F90 pop __tmp_reg__
253 003c 80E9 ldi r24,lo8(-112)
254 003e 0E94 0000 call LEDs_SetAllLEDs
255 .L7:
256 0042 00C0 rjmp .L7
257 .LFE136:
259 .section .text.EVENT_USB_Host_DeviceEnumerationFailed,"ax",@progbits
260 .global EVENT_USB_Host_DeviceEnumerationFailed
262 EVENT_USB_Host_DeviceEnumerationFailed:
263 .LFB137:
264 .LSM35:
265 .LVL6:
266 /* prologue: function */
267 /* frame size = 0 */
268 /* stack size = 0 */
269 .L__stack_usage = 0
270 .LSM36:
271 0000 9091 0000 lds r25,USB_HostState
272 0004 2DB7 in r18,__SP_L__
273 0006 3EB7 in r19,__SP_H__
274 0008 2850 subi r18,lo8(-(-8))
275 000a 3040 sbci r19,hi8(-(-8))
276 000c 0FB6 in __tmp_reg__,__SREG__
277 000e F894 cli
278 0010 3EBF out __SP_H__,r19
279 0012 0FBE out __SREG__,__tmp_reg__
280 0014 2DBF out __SP_L__,r18
281 0016 EDB7 in r30,__SP_L__
282 0018 FEB7 in r31,__SP_H__
283 001a 3196 adiw r30,1
284 001c 20E0 ldi r18,lo8(__c.3917)
285 001e 30E0 ldi r19,hi8(__c.3917)
286 0020 ADB7 in r26,__SP_L__
287 0022 BEB7 in r27,__SP_H__
288 0024 1296 adiw r26,1+1
289 0026 3C93 st X,r19
290 0028 2E93 st -X,r18
291 002a 1197 sbiw r26,1
292 002c 8283 std Z+2,r24
293 002e 1382 std Z+3,__zero_reg__
294 0030 6483 std Z+4,r22
295 0032 1582 std Z+5,__zero_reg__
296 0034 9683 std Z+6,r25
297 0036 1782 std Z+7,__zero_reg__
298 0038 0E94 0000 call printf_P
299 .LVL7:
300 .LSM37:
301 003c 2DB7 in r18,__SP_L__
302 003e 3EB7 in r19,__SP_H__
303 0040 285F subi r18,lo8(-(8))
304 0042 3F4F sbci r19,hi8(-(8))
305 0044 0FB6 in __tmp_reg__,__SREG__
306 0046 F894 cli
307 0048 3EBF out __SP_H__,r19
308 004a 0FBE out __SREG__,__tmp_reg__
309 004c 2DBF out __SP_L__,r18
310 004e 80E9 ldi r24,lo8(-112)
311 0050 0E94 0000 call LEDs_SetAllLEDs
312 /* epilogue start */
313 .LSM38:
314 0054 0895 ret
315 .LFE137:
317 .section .text.Audio_Task,"ax",@progbits
318 .global Audio_Task
320 Audio_Task:
321 .LFB138:
322 .LSM39:
323 0000 1F93 push r17
324 0002 DF93 push r29
325 0004 CF93 push r28
326 0006 00D0 rcall .
327 0008 0F92 push __tmp_reg__
328 000a CDB7 in r28,__SP_L__
329 000c DEB7 in r29,__SP_H__
330 /* prologue: function */
331 /* frame size = 3 */
332 /* stack size = 6 */
333 .L__stack_usage = 6
334 .LSM40:
335 000e 8091 0000 lds r24,USB_HostState
336 0012 8B30 cpi r24,lo8(11)
337 0014 01F0 breq .+2
338 0016 00C0 rjmp .L9
339 .LBB47:
340 .LSM41:
341 0018 80E0 ldi r24,lo8(__c.3924)
342 001a 90E0 ldi r25,hi8(__c.3924)
343 001c 0E94 0000 call puts_P
344 .LSM42:
345 0020 0E94 0000 call ProcessConfigurationDescriptor
346 0024 182F mov r17,r24
347 .LVL8:
348 0026 8823 tst r24
349 0028 01F0 breq .L12
350 .LSM43:
351 002a 8130 cpi r24,lo8(1)
352 002c 01F4 brne .L13
353 .LSM44:
354 002e 80E0 ldi r24,lo8(__c.3926)
355 0030 90E0 ldi r25,hi8(__c.3926)
356 .LVL9:
357 0032 00C0 rjmp .L20
358 .L13:
359 .LSM45:
360 0034 80E0 ldi r24,lo8(__c.3928)
361 0036 90E0 ldi r25,hi8(__c.3928)
362 .L20:
363 0038 0E94 0000 call puts_P
364 .LSM46:
365 003c 00D0 rcall .
366 003e 00D0 rcall .
367 0040 EDB7 in r30,__SP_L__
368 0042 FEB7 in r31,__SP_H__
369 0044 3196 adiw r30,1
370 0046 20E0 ldi r18,lo8(__c.3930)
371 0048 30E0 ldi r19,hi8(__c.3930)
372 004a ADB7 in r26,__SP_L__
373 004c BEB7 in r27,__SP_H__
374 004e 1296 adiw r26,1+1
375 0050 3C93 st X,r19
376 0052 2E93 st -X,r18
377 0054 1197 sbiw r26,1
378 0056 1283 std Z+2,r17
379 .LVL10:
380 .L22:
381 0058 1382 std Z+3,__zero_reg__
382 005a 0E94 0000 call printf_P
383 .LSM47:
384 005e 0F90 pop __tmp_reg__
385 0060 0F90 pop __tmp_reg__
386 0062 0F90 pop __tmp_reg__
387 0064 0F90 pop __tmp_reg__
388 0066 00C0 rjmp .L21
389 .LVL11:
390 .L12:
391 .LSM48:
392 0068 81E0 ldi r24,lo8(1)
393 006a 0E94 0000 call USB_Host_SetDeviceConfiguration
394 .LVL12:
395 006e 8823 tst r24
396 0070 01F0 breq .L15
397 .LSM49:
398 0072 00D0 rcall .
399 0074 00D0 rcall .
400 0076 EDB7 in r30,__SP_L__
401 0078 FEB7 in r31,__SP_H__
402 007a 3196 adiw r30,1
403 007c 20E0 ldi r18,lo8(__c.3933)
404 007e 30E0 ldi r19,hi8(__c.3933)
405 0080 00C0 rjmp .L23
406 .L15:
407 .LSM50:
408 0082 8091 0000 lds r24,StreamingInterfaceIndex
409 .LVL13:
410 0086 6091 0000 lds r22,StreamingInterfaceAltSetting
411 008a 0E94 0000 call USB_Host_SetInterfaceAltSetting
412 .LVL14:
413 008e 8823 tst r24
414 0090 01F0 breq .L16
415 .LSM51:
416 0092 00D0 rcall .
417 0094 00D0 rcall .
418 0096 EDB7 in r30,__SP_L__
419 0098 FEB7 in r31,__SP_H__
420 009a 3196 adiw r30,1
421 009c 20E0 ldi r18,lo8(__c.3935)
422 009e 30E0 ldi r19,hi8(__c.3935)
423 .L23:
424 00a0 ADB7 in r26,__SP_L__
425 00a2 BEB7 in r27,__SP_H__
426 00a4 1296 adiw r26,1+1
427 00a6 3C93 st X,r19
428 00a8 2E93 st -X,r18
429 00aa 1197 sbiw r26,1
430 00ac 8283 std Z+2,r24
431 00ae 00C0 rjmp .L22
432 .L16:
433 .LSM52:
434 00b0 2091 0000 lds r18,StreamingEndpointAddress
435 00b4 82E2 ldi r24,lo8(34)
436 .LVL15:
437 00b6 8093 0000 sts USB_ControlRequest,r24
438 00ba 81E0 ldi r24,lo8(1)
439 00bc 8093 0000 sts USB_ControlRequest+1,r24
440 00c0 80E0 ldi r24,lo8(256)
441 00c2 91E0 ldi r25,hi8(256)
442 00c4 9093 0000 sts USB_ControlRequest+2+1,r25
443 00c8 8093 0000 sts USB_ControlRequest+2,r24
444 00cc 2093 0000 sts USB_ControlRequest+4,r18
445 00d0 1092 0000 sts USB_ControlRequest+5,__zero_reg__
446 00d4 83E0 ldi r24,lo8(3)
447 00d6 90E0 ldi r25,hi8(3)
448 00d8 9093 0000 sts USB_ControlRequest+6+1,r25
449 00dc 8093 0000 sts USB_ControlRequest+6,r24
450 .LSM53:
451 00e0 DE01 movw r26,r28
452 00e2 1196 adiw r26,1
453 00e4 E0E0 ldi r30,lo8(C.5.5024)
454 00e6 F0E0 ldi r31,hi8(C.5.5024)
455 00e8 83E0 ldi r24,lo8(3)
456 .L17:
457 00ea 0190 ld r0,Z+
458 00ec 0D92 st X+,r0
459 00ee 8150 subi r24,lo8(-(-1))
460 00f0 01F4 brne .L17
461 .LVL16:
462 .LBB48:
463 .LBB49:
464 .LSM54:
465 00f2 1092 A700 sts 167,__zero_reg__
466 .LBE49:
467 .LBE48:
468 .LSM55:
469 00f6 CE01 movw r24,r28
470 00f8 0196 adiw r24,1
471 00fa 0E94 0000 call USB_Host_SendControlRequest
472 .LVL17:
473 00fe 8823 tst r24
474 0100 01F0 breq .L18
475 .LVL18:
476 .L21:
477 .LSM56:
478 0102 80E9 ldi r24,lo8(-112)
479 0104 0E94 0000 call LEDs_SetAllLEDs
480 .LSM57:
481 0108 1092 0000 sts USB_HostState,__zero_reg__
482 .LSM58:
483 010c 00C0 rjmp .L9
484 .LVL19:
485 .L18:
486 .LSM59:
487 010e 82E0 ldi r24,lo8(2)
488 .LVL20:
489 0110 8093 6E00 sts 110,r24
490 .LSM60:
491 0114 9CE7 ldi r25,lo8(124)
492 0116 97BD out 71-32,r25
493 .LSM61:
494 0118 84BD out 68-32,r24
495 .LSM62:
496 011a 85BD out 69-32,r24
497 .LSM63:
498 011c 3E9A sbi 39-32,6
499 .LSM64:
500 011e 81EF ldi r24,lo8(-15)
501 0120 8093 9000 sts 144,r24
502 .LSM65:
503 0124 89E0 ldi r24,lo8(9)
504 0126 8093 9100 sts 145,r24
505 .LSM66:
506 012a 80E0 ldi r24,lo8(__c.3939)
507 012c 90E0 ldi r25,hi8(__c.3939)
508 012e 0E94 0000 call puts_P
509 .LSM67:
510 0132 8CE0 ldi r24,lo8(12)
511 0134 8093 0000 sts USB_HostState,r24
512 .LVL21:
513 .L9:
514 /* epilogue start */
515 .LBE47:
516 .LSM68:
517 0138 0F90 pop __tmp_reg__
518 013a 0F90 pop __tmp_reg__
519 013c 0F90 pop __tmp_reg__
520 013e CF91 pop r28
521 0140 DF91 pop r29
522 0142 1F91 pop r17
523 0144 0895 ret
524 .LFE138:
526 .section .text.main,"ax",@progbits
527 .global main
529 main:
530 .LFB131:
531 .LSM69:
532 /* prologue: function */
533 /* frame size = 0 */
534 /* stack size = 0 */
535 .L__stack_usage = 0
536 .LSM70:
537 0000 0E94 0000 call SetupHardware
538 .LSM71:
539 0004 80E0 ldi r24,lo8(__c.3888)
540 0006 90E0 ldi r25,hi8(__c.3888)
541 0008 0E94 0000 call puts_P
542 .LSM72:
543 000c 80E1 ldi r24,lo8(16)
544 000e 0E94 0000 call LEDs_SetAllLEDs
545 .LSM73:
546 /* #APP */
547 ; 49 "AudioInputHost.c" 1
548 0012 7894 sei
549 ; 0 "" 2
550 /* #NOAPP */
551 .L25:
552 .LSM74:
553 0014 0E94 0000 call Audio_Task
554 .LSM75:
555 0018 0E94 0000 call USB_USBTask
556 001c 00C0 rjmp .L25
557 .LFE131:
559 .section .text.__vector_21,"ax",@progbits
560 .global __vector_21
562 __vector_21:
563 .LFB139:
564 .LSM76:
565 0000 1F92 push __zero_reg__
566 0002 0F92 push r0
567 0004 0FB6 in r0,__SREG__
568 0006 0F92 push r0
569 0008 0BB6 in r0,91-32
570 000a 0F92 push r0
571 000c 1124 clr __zero_reg__
572 000e 1F93 push r17
573 0010 2F93 push r18
574 0012 3F93 push r19
575 0014 4F93 push r20
576 0016 5F93 push r21
577 0018 6F93 push r22
578 001a 7F93 push r23
579 001c 8F93 push r24
580 001e 9F93 push r25
581 0020 AF93 push r26
582 0022 BF93 push r27
583 0024 EF93 push r30
584 0026 FF93 push r31
585 /* prologue: Signal */
586 /* frame size = 0 */
587 /* stack size = 17 */
588 .L__stack_usage = 17
589 .LBB50:
590 .LBB51:
591 .LSM77:
592 0028 1091 A700 lds r17,167
593 002c 1770 andi r17,lo8(7)
594 .LVL22:
595 .LBE51:
596 .LBE50:
597 .LBB52:
598 .LBB53:
599 .LSM78:
600 002e 81E0 ldi r24,lo8(1)
601 0030 8093 A700 sts 167,r24
602 .LBE53:
603 .LBE52:
604 .LBB54:
605 .LBB55:
606 .LSM79:
607 0034 8091 A900 lds r24,169
608 0038 8F7B andi r24,lo8(-65)
609 003a 8093 A900 sts 169,r24
610 .LBE55:
611 .LBE54:
612 .LBB56:
613 .LBB57:
614 .LSM80:
615 003e 8091 A600 lds r24,166
616 .LBE57:
617 .LBE56:
618 .LSM81:
619 0042 80FF sbrs r24,0
620 0044 00C0 rjmp .L27
621 .LBB58:
622 .LBB59:
623 .LBB60:
624 .LSM82:
625 0046 8091 AF00 lds r24,175
626 .LSM83:
627 004a 4091 AF00 lds r20,175
628 .LVL23:
629 .LBE60:
630 .LBE59:
631 .LBB61:
632 .LBB62:
633 .LSM84:
634 004e 8091 A600 lds r24,166
635 .LBE62:
636 .LBE61:
637 .LSM85:
638 0052 85FD sbrc r24,5
639 0054 00C0 rjmp .L28
640 .LBB63:
641 .LBB64:
642 .LSM86:
643 0056 8091 A600 lds r24,166
644 005a 8E77 andi r24,lo8(126)
645 005c 8093 A600 sts 166,r24
646 .L28:
647 .LBE64:
648 .LBE63:
649 .LSM87:
650 0060 842F mov r24,r20
651 0062 9927 clr r25
652 0064 87FD sbrc r24,7
653 0066 9095 com r25
654 0068 20E8 ldi r18,lo8(128)
655 006a 30E0 ldi r19,hi8(128)
656 006c 8227 eor r24,r18
657 006e 9327 eor r25,r19
658 0070 9093 9900 sts 152+1,r25
659 0074 8093 9800 sts 152,r24
660 .LVL24:
661 .LSM88:
662 0078 4131 cpi r20,lo8(17)
663 007a 04F4 brge .L30
664 .LSM89:
665 007c 4930 cpi r20,lo8(9)
666 007e 04F4 brge .L31
667 .LSM90:
668 0080 4530 cpi r20,lo8(5)
669 0082 04F4 brge .L32
670 .LSM91:
671 0084 4330 cpi r20,lo8(3)
672 0086 04F4 brge .L33
673 .LSM92:
674 0088 80E0 ldi r24,lo8(0)
675 008a 00C0 rjmp .L29
676 .L30:
677 .LSM93:
678 008c 80EF ldi r24,lo8(-16)
679 008e 00C0 rjmp .L29
680 .L31:
681 .LSM94:
682 0090 80EB ldi r24,lo8(-80)
683 0092 00C0 rjmp .L29
684 .L32:
685 .LSM95:
686 0094 80E3 ldi r24,lo8(48)
687 0096 00C0 rjmp .L29
688 .L33:
689 .LSM96:
690 0098 80E1 ldi r24,lo8(16)
691 .L29:
692 .LVL25:
693 .LSM97:
694 009a 0E94 0000 call LEDs_SetAllLEDs
695 .LVL26:
696 .L27:
697 .LBE58:
698 .LBB65:
699 .LBB66:
700 .LSM98:
701 009e 8091 A900 lds r24,169
702 00a2 8064 ori r24,lo8(64)
703 00a4 8093 A900 sts 169,r24
704 .LVL27:
705 .LBE66:
706 .LBE65:
707 .LBB67:
708 .LBB68:
709 .LSM99:
710 00a8 1093 A700 sts 167,r17
711 /* epilogue start */
712 .LBE68:
713 .LBE67:
714 .LSM100:
715 00ac FF91 pop r31
716 00ae EF91 pop r30
717 00b0 BF91 pop r27
718 00b2 AF91 pop r26
719 00b4 9F91 pop r25
720 00b6 8F91 pop r24
721 00b8 7F91 pop r23
722 00ba 6F91 pop r22
723 00bc 5F91 pop r21
724 00be 4F91 pop r20
725 00c0 3F91 pop r19
726 00c2 2F91 pop r18
727 00c4 1F91 pop r17
728 .LVL28:
729 00c6 0F90 pop r0
730 00c8 0BBE out 91-32,r0
731 00ca 0F90 pop r0
732 00cc 0FBE out __SREG__,r0
733 00ce 0F90 pop r0
734 00d0 1F90 pop __zero_reg__
735 00d2 1895 reti
736 .LFE139:
738 .section .progmem.data,"a",@progbits
741 __c.3939:
742 0000 4D69 6372 .string "Microphone Enumerated.\r\n"
742 6F70 686F
742 6E65 2045
742 6E75 6D65
742 7261 7465
745 __c.3935:
746 0019 1B5B 3331 .ascii "\033[31mCould not set alt"
746 6D43 6F75
746 6C64 206E
746 6F74 2073
746 6574 2061
747 002f 6572 6E61 .string "ernative streaming interface setting.\r\n -- Error Code: %d\r\n\033[37m"
747 7469 7665
747 2073 7472
747 6561 6D69
747 6E67 2069
750 __c.3933:
751 0070 1B5B .ascii "\033["
752 0072 3331 6D43 .string "31mControl Error (Set Configuration).\r\n -- Error Code: %d\r\n\033[37m"
752 6F6E 7472
752 6F6C 2045
752 7272 6F72
752 2028 5365
755 __c.3930:
756 00b3 202D 2D20 .string " -- Error Code: %d\r\n\033[37m"
756 4572 726F
756 7220 436F
756 6465 3A20
756 2564 0D0A
759 __c.3928:
760 00cd 1B5B 3331 .string "\033[31mInvalid Device.\r\n"
760 6D49 6E76
760 616C 6964
760 2044 6576
760 6963 652E
763 __c.3926:
764 00e4 1B5B 3331 .string "\033[31mControl Error (Get Configuration).\r\n"
764 6D43 6F6E
764 7472 6F6C
764 2045 7272
764 6F72 2028
767 __c.3924:
768 010e 4765 7474 .string "Getting Config Data.\r\n"
768 696E 6720
768 436F 6E66
768 6967 2044
768 6174 612E
769 .data
772 C.5.5024:
773 0000 80 .byte -128
774 0001 BB .byte -69
775 0002 00 .byte 0
776 .section .progmem.data
779 __c.3917:
780 0125 1B5B 3331 .ascii "\033[31mDev Enum Error\r\n"
780 6D44 6576
780 2045 6E75
780 6D20 4572
780 726F 720D
781 013a 202D 2D20 .string " -- Error Code %d\r\n -- Sub Error Code %d\r\n -- In State %d\r\n\033[37m"
781 4572 726F
781 7220 436F
781 6465 2025
781 640D 0A20
784 __c.3910:
785 017b 1B5B 3331 .string "\033[31mHost Mode Error\r\n -- Error Code %d\r\n\033[37m"
785 6D48 6F73
785 7420 4D6F
785 6465 2045
785 7272 6F72
788 __c.3902:
789 01aa 1B5B 3332 .string "\033[32mDevice Unattached.\r\n\033[37m"
789 6D44 6576
789 6963 6520
789 556E 6174
789 7461 6368
792 __c.3897:
793 01c9 1B5B 3332 .string "\033[32mDevice Attached.\r\n\033[37m"
793 6D44 6576
793 6963 6520
793 4174 7461
793 6368 6564
796 __c.3888:
797 01e6 1B5B 3336 .string "\033[36mAudio Host Demo running.\r\n\033[37m"
797 6D41 7564
797 696F 2048
797 6F73 7420
797 4465 6D6F
894 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 AudioInputHost.c
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:2 *ABS*:0000003f __SREG__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:3 *ABS*:0000003e __SP_H__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:4 *ABS*:0000003d __SP_L__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:5 *ABS*:00000034 __CCP__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:18 .text.LEDs_SetAllLEDs:00000000 LEDs_SetAllLEDs
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:39 .text.SetupHardware:00000000 SetupHardware
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:151 .text.EVENT_USB_Host_DeviceAttached:00000000 EVENT_USB_Host_DeviceAttached
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:792 .progmem.data:000001c9 __c.3897
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:173 .text.EVENT_USB_Host_DeviceUnattached:00000000 EVENT_USB_Host_DeviceUnattached
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:788 .progmem.data:000001aa __c.3902
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:195 .text.EVENT_USB_Host_DeviceEnumerationComplete:00000000 EVENT_USB_Host_DeviceEnumerationComplete
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:213 .text.EVENT_USB_Host_HostError:00000000 EVENT_USB_Host_HostError
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:784 .progmem.data:0000017b __c.3910
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:262 .text.EVENT_USB_Host_DeviceEnumerationFailed:00000000 EVENT_USB_Host_DeviceEnumerationFailed
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:779 .progmem.data:00000125 __c.3917
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:320 .text.Audio_Task:00000000 Audio_Task
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:767 .progmem.data:0000010e __c.3924
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:763 .progmem.data:000000e4 __c.3926
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:759 .progmem.data:000000cd __c.3928
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:755 .progmem.data:000000b3 __c.3930
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:750 .progmem.data:00000070 __c.3933
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:745 .progmem.data:00000019 __c.3935
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:772 .data:00000000 C.5.5024
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:741 .progmem.data:00000000 __c.3939
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:529 .text.main:00000000 main
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:796 .progmem.data:000001e6 __c.3888
C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:562 .text.__vector_21:00000000 __vector_21
UNDEFINED SYMBOLS
USB_Init
USARTSerialStream
__iob
Serial_putchar
Serial_getchar
puts_P
USB_Disable
printf_P
USB_HostState
ProcessConfigurationDescriptor
USB_Host_SetDeviceConfiguration
StreamingInterfaceIndex
StreamingInterfaceAltSetting
USB_Host_SetInterfaceAltSetting
StreamingEndpointAddress
USB_ControlRequest
USB_Host_SendControlRequest
USB_USBTask
__do_copy_data

@ -0,0 +1,1169 @@
Archive member included because of file (symbol)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o (exit)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
AudioInputHost.o (__do_copy_data)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
ConfigDescriptor.o (__do_clear_bss)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
AudioInputHost.o (__iob)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
AudioInputHost.o (printf_P)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
AudioInputHost.o (puts_P)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o) (vfprintf)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eerd_byte_usb1287)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eeupd_byte_usb1287)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen_P)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (fputc)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (__ultoa_invert)
Allocating common symbols
Common symbol size file
USB_IsInitialized 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o
USARTSerialStream 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
USB_ControlRequest 0x8 ../../../../LUFA/Drivers/USB/Core/USBTask.o
USB_HostState 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o
__iob 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
Discarded input sections
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
.text 0x00000000 0x0 AudioInputHost.o
.bss 0x00000000 0x0 AudioInputHost.o
.text 0x00000000 0x0 ConfigDescriptor.o
.data 0x00000000 0x0 ConfigDescriptor.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.text.USB_Host_GetDeviceDescriptor
0x00000000 0x1c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.text.USB_Host_GetDeviceStringDescriptor
0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.text.USB_Host_ClearPipeStall
0x00000000 0x32 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.text.Pipe_IsEndpointBound
0x00000000 0x5c ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.text.Pipe_WaitUntilReady
0x00000000 0x5e ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Discard_Stream
0x00000000 0x9a ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Null_Stream
0x00000000 0x9e ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_Stream_LE
0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_Stream_BE
0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Read_Stream_LE
0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Read_Stream_BE
0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_PStream_LE
0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_PStream_BE
0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_EStream_LE
0x00000000 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Write_EStream_BE
0x00000000 0xbc ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Read_EStream_LE
0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text.Pipe_Read_EStream_BE
0x00000000 0xbe ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.text.USB_GetNextDescriptorOfType
0x00000000 0x4c ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.text.USB_GetNextDescriptorOfTypeBefore
0x00000000 0x56 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.text.USB_GetNextDescriptorOfTypeAfter
0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.text.USB_ProcessHIDReport
0x00000000 0x766 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.text.USB_GetHIDReportItemInfo
0x00000000 0xb6 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.text.USB_SetHIDReportItemInfo
0x00000000 0xc2 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.text.USB_GetHIDReportSize
0x00000000 0x58 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.text 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.data 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.bss 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.text.Serial_getchar_Blocking
0x00000000 0x20 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.text.Serial_SendString_P
0x00000000 0x1a ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.text.Serial_SendString
0x00000000 0x1c ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.text.Serial_SendData
0x00000000 0x1e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
.text.avr-libc
0x00000000 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
.text.avr-libc
0x00000000 0x24 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.text 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
.data 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
.bss 0x00000000 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
Memory Configuration
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800100 0x0000ff00 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
LOAD AudioInputHost.o
LOAD ConfigDescriptor.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
LOAD ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
LOAD ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
LOAD ../../../../LUFA/Drivers/USB/Core/Events.o
LOAD ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
LOAD ../../../../LUFA/Drivers/USB/Core/USBTask.o
LOAD ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
LOAD ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libm.a
LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a
LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a
LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\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 0x18fa
*(.vectors)
.vectors 0x00000000 0x98 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
0x00000000 __vector_default
0x00000000 __vectors
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
.progmem.data 0x00000098 0x20b AudioInputHost.o
0x000002a4 . = ALIGN (0x2)
*fill* 0x000002a3 0x1 00
0x000002a4 __trampolines_start = .
*(.trampolines)
.trampolines 0x000002a4 0x0 linker stubs
*(.trampolines*)
0x000002a4 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x000002a4 __ctors_start = .
*(.ctors)
0x000002a4 __ctors_end = .
0x000002a4 __dtors_start = .
*(.dtors)
0x000002a4 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x000002a4 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
0x000002a4 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x000002a4 0xc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x000002b0 0x1a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
0x000002b0 __do_copy_data
.init4 0x000002ca 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
0x000002ca __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x000002da 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
*(.init9)
*(.text)
.text 0x000002e0 0x2 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
0x000002e0 __vector_22
0x000002e0 __vector_28
0x000002e0 __vector_1
0x000002e0 __vector_32
0x000002e0 __vector_34
0x000002e0 __vector_24
0x000002e0 __vector_12
0x000002e0 __bad_interrupt
0x000002e0 __vector_6
0x000002e0 __vector_31
0x000002e0 __vector_35
0x000002e0 __vector_3
0x000002e0 __vector_23
0x000002e0 __vector_30
0x000002e0 __vector_25
0x000002e0 __vector_11
0x000002e0 __vector_13
0x000002e0 __vector_17
0x000002e0 __vector_19
0x000002e0 __vector_7
0x000002e0 __vector_27
0x000002e0 __vector_5
0x000002e0 __vector_33
0x000002e0 __vector_37
0x000002e0 __vector_4
0x000002e0 __vector_9
0x000002e0 __vector_2
0x000002e0 __vector_15
0x000002e0 __vector_36
0x000002e0 __vector_29
0x000002e0 __vector_8
0x000002e0 __vector_26
0x000002e0 __vector_14
0x000002e0 __vector_16
0x000002e0 __vector_18
0x000002e0 __vector_20
0x000002e2 . = ALIGN (0x2)
*(.text.*)
.text.LEDs_SetAllLEDs
0x000002e2 0xa AudioInputHost.o
.text.SetupHardware
0x000002ec 0x92 AudioInputHost.o
0x000002ec SetupHardware
.text.EVENT_USB_Host_DeviceAttached
0x0000037e 0xa AudioInputHost.o
0x0000037e EVENT_USB_Host_DeviceAttached
.text.EVENT_USB_Host_DeviceUnattached
0x00000388 0xa AudioInputHost.o
0x00000388 EVENT_USB_Host_DeviceUnattached
.text.EVENT_USB_Host_DeviceEnumerationComplete
0x00000392 0x4 AudioInputHost.o
0x00000392 EVENT_USB_Host_DeviceEnumerationComplete
.text.EVENT_USB_Host_HostError
0x00000396 0x3e AudioInputHost.o
0x00000396 EVENT_USB_Host_HostError
.text.EVENT_USB_Host_DeviceEnumerationFailed
0x000003d4 0x50 AudioInputHost.o
0x000003d4 EVENT_USB_Host_DeviceEnumerationFailed
.text.Audio_Task
0x00000424 0x134 AudioInputHost.o
0x00000424 Audio_Task
.text.main 0x00000558 0x14 AudioInputHost.o
0x00000558 main
.text.__vector_21
0x0000056c 0xd2 AudioInputHost.o
0x0000056c __vector_21
.text.DComp_NextAudioControlInterface
0x0000063e 0x22 ConfigDescriptor.o
0x0000063e DComp_NextAudioControlInterface
.text.DComp_NextAudioStreamInterface
0x00000660 0x22 ConfigDescriptor.o
0x00000660 DComp_NextAudioStreamInterface
.text.DComp_NextAudioInterfaceDataEndpoint
0x00000682 0x22 ConfigDescriptor.o
0x00000682 DComp_NextAudioInterfaceDataEndpoint
.text.ProcessConfigurationDescriptor
0x000006a4 0x132 ConfigDescriptor.o
0x000006a4 ProcessConfigurationDescriptor
.text.USB_Host_ResetDevice
0x000007d6 0xa8 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.text.USB_Host_WaitMS
0x0000087e 0xaa ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
0x0000087e USB_Host_WaitMS
.text.USB_Host_ProcessNextHostState
0x00000928 0x264 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
0x00000928 USB_Host_ProcessNextHostState
.text.USB_Host_SetDeviceConfiguration
0x00000b8c 0x2c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
0x00000b8c USB_Host_SetDeviceConfiguration
.text.USB_Host_SetInterfaceAltSetting
0x00000bb8 0x2e ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
0x00000bb8 USB_Host_SetInterfaceAltSetting
.text.Pipe_ConfigurePipe
0x00000be6 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
0x00000be6 Pipe_ConfigurePipe
.text.Pipe_ClearPipes
0x00000cb4 0x28 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
0x00000cb4 Pipe_ClearPipes
.text.USB_Disable
0x00000cdc 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
0x00000cdc USB_Disable
.text.USB_ResetInterface
0x00000d0c 0x9c ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
0x00000d0c USB_ResetInterface
.text.USB_Init
0x00000da8 0x12 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
0x00000da8 USB_Init
.text.USB_INT_DisableAllInterrupts
0x00000dba 0x10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
0x00000dba USB_INT_DisableAllInterrupts
.text.USB_INT_ClearAllInterrupts
0x00000dca 0xa ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
0x00000dca USB_INT_ClearAllInterrupts
.text.__vector_10
0x00000dd4 0x126 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
0x00000dd4 __vector_10
.text.USB_Host_GetDeviceConfigDescriptor
0x00000efa 0xae ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
0x00000efa USB_Host_GetDeviceConfigDescriptor
.text.USB_GetNextDescriptorComp
0x00000fa8 0x86 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
0x00000fa8 USB_GetNextDescriptorComp
.text.USB_Event_Stub
0x0000102e 0x2 ../../../../LUFA/Drivers/USB/Core/Events.o
0x0000102e EVENT_USB_Host_StartOfFrame
0x0000102e USB_Event_Stub
.text.USB_Host_WaitForIOS
0x00001030 0x52 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.text.USB_Host_SendControlRequest
0x00001082 0x22c ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
0x00001082 USB_Host_SendControlRequest
.text.USB_USBTask
0x000012ae 0x1c ../../../../LUFA/Drivers/USB/Core/USBTask.o
0x000012ae USB_USBTask
.text.Serial_putchar
0x000012ca 0x12 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
0x000012ca Serial_putchar
.text.Serial_getchar
0x000012dc 0x26 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
0x000012dc Serial_getchar
.text.avr-libc
0x00001302 0x3e c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
0x00001302 printf_P
.text.avr-libc
0x00001340 0x70 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
0x00001340 puts_P
.text.avr-libc
0x000013b0 0x406 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
0x000013b0 vfprintf
.text.avr-libc
0x000017b6 0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
0x000017b6 strnlen_P
.text.avr-libc
0x000017cc 0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
0x000017cc strnlen
.text.avr-libc
0x000017e2 0x58 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
0x000017e2 fputc
.text.avr-libc
0x0000183a 0xbc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
0x0000183a __ultoa_invert
0x000018f6 . = ALIGN (0x2)
*(.fini9)
.fini9 0x000018f6 0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
0x000018f6 _exit
0x000018f6 exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x000018f6 0x4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
*(.fini0)
0x000018fa _etext = .
.data 0x00800100 0x1c load address 0x000018fa
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x3 AudioInputHost.o
.data 0x00800103 0x18 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.data 0x0080011b 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
0x0080011b USB_ControlPipeSize
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x0080011c . = ALIGN (0x2)
0x0080011c _edata = .
0x0080011c PROVIDE (__data_end, .)
.bss 0x0080011c 0x24
0x0080011c PROVIDE (__bss_start, .)
*(.bss)
.bss 0x0080011c 0x3 ConfigDescriptor.o
0x0080011c StreamingInterfaceIndex
0x0080011d StreamingInterfaceAltSetting
0x0080011e StreamingEndpointAddress
.bss 0x0080011f 0x3 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
*(.bss*)
*(COMMON)
COMMON 0x00800122 0xa ../../../../LUFA/Drivers/USB/Core/USBTask.o
0x00800122 USB_IsInitialized
0x00800123 USB_ControlRequest
0x0080012b USB_HostState
COMMON 0x0080012c 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
0x0080012c USARTSerialStream
COMMON 0x0080013a 0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
0x0080013a __iob
0x00800140 PROVIDE (__bss_end, .)
0x000018fa __data_load_start = LOADADDR (.data)
0x00001916 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800140 0x0
0x00800140 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800140 PROVIDE (__noinit_end, .)
0x00800140 _end = .
0x00800140 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.stab 0x00000000 0xe28
*(.stab)
.stab 0x00000000 0x6cc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
.stab 0x000006cc 0x90 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
0x9c (size before relaxing)
.stab 0x0000075c 0x114 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
0x120 (size before relaxing)
.stab 0x00000870 0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
0xa8 (size before relaxing)
.stab 0x0000090c 0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
0xa8 (size before relaxing)
.stab 0x000009a8 0x480 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
0x48c (size before relaxing)
.stabstr 0x00000000 0x26b
*(.stabstr)
.stabstr 0x00000000 0x26b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment
*(.comment)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x3b0
*(.debug_aranges)
.debug_aranges
0x00000000 0x68 AudioInputHost.o
.debug_aranges
0x00000068 0x38 ConfigDescriptor.o
.debug_aranges
0x000000a0 0x58 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_aranges
0x000000f8 0x38 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_aranges
0x00000130 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_aranges
0x00000160 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_aranges
0x00000190 0x78 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_aranges
0x00000208 0x40 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_aranges
0x00000248 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_aranges
0x00000268 0x28 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_aranges
0x00000290 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_aranges
0x000002b0 0x38 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_aranges
0x000002e8 0x48 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_aranges
0x00000330 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_aranges
0x00000350 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_aranges
0x00000370 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_aranges
0x00000390 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_pubnames
0x00000000 0x89a
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x107 AudioInputHost.o
.debug_pubnames
0x00000107 0xff ConfigDescriptor.o
.debug_pubnames
0x00000206 0xf4 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_pubnames
0x000002fa 0x86 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_pubnames
0x00000380 0x46 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_pubnames
0x000003c6 0x62 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_pubnames
0x00000428 0x13b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_pubnames
0x00000563 0xc2 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_pubnames
0x00000625 0x25 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_pubnames
0x0000064a 0x32 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_pubnames
0x0000067c 0x61 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_pubnames
0x000006dd 0x7e ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_pubnames
0x0000075b 0xac ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_pubnames
0x00000807 0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.debug_pubnames
0x00000823 0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_pubnames
0x00000842 0x1d c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_pubnames
0x0000085f 0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_pubnames
0x0000087e 0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_info 0x00000000 0x56c7
*(.debug_info)
.debug_info 0x00000000 0x81f AudioInputHost.o
.debug_info 0x0000081f 0x5dd ConfigDescriptor.o
.debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.debug_info 0x00000dfc 0xc19 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_info 0x00001a15 0x5b1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_info 0x00001fc6 0x409 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_info 0x000023cf 0x495 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_info 0x00002864 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.debug_info 0x00002864 0xac6 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_info 0x0000332a 0x642 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_info 0x0000396c 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.debug_info 0x0000396c 0x85 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_info 0x000039f1 0x62a ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_info 0x0000401b 0x1e8 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_info 0x00004203 0x6f9 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_info 0x000048fc 0x413 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_info 0x00004d0f 0x14f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.debug_info 0x00004e5e 0x1c6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_info 0x00005024 0x1ec c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_info 0x00005210 0x350 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_info 0x00005560 0x167 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0x1b65
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x334 AudioInputHost.o
.debug_abbrev 0x00000334 0x185 ConfigDescriptor.o
.debug_abbrev 0x000004b9 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.debug_abbrev 0x000004ba 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.debug_abbrev 0x000004bb 0x2f6 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_abbrev 0x000007b1 0x1d9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_abbrev 0x0000098a 0x14d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_abbrev 0x00000ad7 0x12a ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_abbrev 0x00000c01 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.debug_abbrev 0x00000c02 0x164 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_abbrev 0x00000d66 0x1ca ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_abbrev 0x00000f30 0x1 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.debug_abbrev 0x00000f31 0x41 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_abbrev 0x00000f72 0x1ea ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_abbrev 0x0000115c 0x11a ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_abbrev 0x00001276 0x1ec ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_abbrev 0x00001462 0x1d1 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_abbrev 0x00001633 0xc5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.debug_abbrev 0x000016f8 0x11c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_abbrev 0x00001814 0x119 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_abbrev 0x0000192d 0x15f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_abbrev 0x00001a8c 0xd9 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_line 0x00000000 0x53bf
*(.debug_line)
.debug_line 0x00000000 0x725 AudioInputHost.o
.debug_line 0x00000725 0x3df ConfigDescriptor.o
.debug_line 0x00000b04 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
.debug_line 0x00000b28 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
.debug_line 0x00000b4c 0xa69 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_line 0x000015b5 0x5f9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_line 0x00001bae 0x3f1 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_line 0x00001f9f 0x464 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_line 0x00002403 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
.debug_line 0x00002427 0xcf7 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_line 0x0000311e 0x3e3 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_line 0x00003501 0x24 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
.debug_line 0x00003525 0x86 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_line 0x000035ab 0x5f5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_line 0x00003ba0 0x1e4 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_line 0x00003d84 0x7b0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_line 0x00004534 0x326 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_line 0x0000485a 0xe5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.debug_line 0x0000493f 0x1a4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_line 0x00004ae3 0x142 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_line 0x00004c25 0x659 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_line 0x0000527e 0x141 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_frame 0x00000000 0x540
*(.debug_frame)
.debug_frame 0x00000000 0xb0 AudioInputHost.o
.debug_frame 0x000000b0 0x50 ConfigDescriptor.o
.debug_frame 0x00000100 0x90 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_frame 0x00000190 0x50 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_frame 0x000001e0 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_frame 0x00000220 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_frame 0x00000260 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_frame 0x00000330 0x60 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_frame 0x00000390 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_frame 0x000003b0 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_frame 0x000003e0 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_frame 0x00000400 0x50 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_frame 0x00000450 0x70 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_frame 0x000004c0 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_frame 0x000004e0 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_frame 0x00000500 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_frame 0x00000520 0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_str 0x00000000 0x26bf
*(.debug_str)
.debug_str 0x00000000 0x830 AudioInputHost.o
0x8aa (size before relaxing)
.debug_str 0x00000830 0x53e ConfigDescriptor.o
0x7d0 (size before relaxing)
.debug_str 0x00000d6e 0x6cc ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
0xbc8 (size before relaxing)
.debug_str 0x0000143a 0x269 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
0x5b7 (size before relaxing)
.debug_str 0x000016a3 0x16d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
0x516 (size before relaxing)
.debug_str 0x00001810 0xaf ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
0x4f5 (size before relaxing)
.debug_str 0x000018bf 0x260 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
0x3a4 (size before relaxing)
.debug_str 0x00001b1f 0x234 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
0x81e (size before relaxing)
.debug_str 0x00001d53 0x3a ../../../../LUFA/Drivers/USB/Core/Events.o
0x11f (size before relaxing)
.debug_str 0x00001d8d 0x15b ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
0x519 (size before relaxing)
.debug_str 0x00001ee8 0x45 ../../../../LUFA/Drivers/USB/Core/USBTask.o
0x1ee (size before relaxing)
.debug_str 0x00001f2d 0x487 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
0x60d (size before relaxing)
.debug_str 0x000023b4 0xfd ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
0x26d (size before relaxing)
.debug_str 0x000024b1 0x4b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
0xef (size before relaxing)
.debug_str 0x000024fc 0x7a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
0x126 (size before relaxing)
.debug_str 0x00002576 0x55 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
0x120 (size before relaxing)
.debug_str 0x000025cb 0xa1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
0x174 (size before relaxing)
.debug_str 0x0000266c 0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
0xf8 (size before relaxing)
.debug_loc 0x00000000 0x3422
*(.debug_loc)
.debug_loc 0x00000000 0xff AudioInputHost.o
.debug_loc 0x000000ff 0x280 ConfigDescriptor.o
.debug_loc 0x0000037f 0x3de ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_loc 0x0000075d 0x400 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_loc 0x00000b5d 0x13 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_loc 0x00000b70 0x118 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_loc 0x00000c88 0xfe0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_loc 0x00001c68 0x365 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_loc 0x00001fcd 0x2c5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_loc 0x00002292 0x1f ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_loc 0x000022b1 0x832 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_loc 0x00002ae3 0x15e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_loc 0x00002c41 0xe0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_loc 0x00002d21 0x6b1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_loc 0x000033d2 0x50 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_macinfo
*(.debug_macinfo)
OUTPUT(AudioInputHost.elf elf32-avr)
LOAD linker stubs
.debug_pubtypes
0x00000000 0xa86
.debug_pubtypes
0x00000000 0x117 AudioInputHost.o
.debug_pubtypes
0x00000117 0x179 ConfigDescriptor.o
.debug_pubtypes
0x00000290 0x146 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_pubtypes
0x000003d6 0x66 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_pubtypes
0x0000043c 0x59 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_pubtypes
0x00000495 0x88 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_pubtypes
0x0000051d 0x4b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_pubtypes
0x00000568 0x17e ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_pubtypes
0x000006e6 0x12 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_pubtypes
0x000006f8 0xa0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_pubtypes
0x00000798 0x44 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_pubtypes
0x000007dc 0x145 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_pubtypes
0x00000921 0x42 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_pubtypes
0x00000963 0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
.debug_pubtypes
0x0000098c 0x48 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_pubtypes
0x000009d4 0x36 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_pubtypes
0x00000a0a 0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_pubtypes
0x00000a5d 0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
.debug_ranges 0x00000000 0x490
.debug_ranges 0x00000000 0x58 AudioInputHost.o
.debug_ranges 0x00000058 0x58 ConfigDescriptor.o
.debug_ranges 0x000000b0 0x60 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
.debug_ranges 0x00000110 0xb0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
.debug_ranges 0x000001c0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
.debug_ranges 0x000001e0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
.debug_ranges 0x00000200 0x68 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
.debug_ranges 0x00000268 0x30 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
.debug_ranges 0x00000298 0x10 ../../../../LUFA/Drivers/USB/Core/Events.o
.debug_ranges 0x000002a8 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
.debug_ranges 0x000002d8 0x10 ../../../../LUFA/Drivers/USB/Core/USBTask.o
.debug_ranges 0x000002e8 0x100 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
.debug_ranges 0x000003e8 0x50 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
.debug_ranges 0x00000438 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
.debug_ranges 0x00000448 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
.debug_ranges 0x00000458 0x28 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
.debug_ranges 0x00000480 0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
Cross Reference Table
Symbol File
Audio_Task AudioInputHost.o
CALLBACK_HIDParser_FilterHIDReportItem ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
DComp_NextAudioControlInterface ConfigDescriptor.o
DComp_NextAudioInterfaceDataEndpoint ConfigDescriptor.o
DComp_NextAudioStreamInterface ConfigDescriptor.o
EVENT_USB_Host_DeviceAttached AudioInputHost.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
EVENT_USB_Host_DeviceEnumerationComplete AudioInputHost.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
EVENT_USB_Host_DeviceEnumerationFailed AudioInputHost.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
EVENT_USB_Host_DeviceUnattached AudioInputHost.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
EVENT_USB_Host_HostError AudioInputHost.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
EVENT_USB_Host_StartOfFrame ../../../../LUFA/Drivers/USB/Core/Events.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
Pipe_ClearPipes ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
Pipe_ConfigurePipe ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
ConfigDescriptor.o
Pipe_Discard_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_IsEndpointBound ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
Pipe_Null_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Read_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Read_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Read_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Read_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_WaitUntilReady ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_PStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_PStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
Pipe_Write_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
ProcessConfigurationDescriptor ConfigDescriptor.o
AudioInputHost.o
Serial_SendData ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
Serial_SendString ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
Serial_SendString_P ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
Serial_getchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
AudioInputHost.o
Serial_getchar_Blocking ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
Serial_putchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
AudioInputHost.o
SetupHardware AudioInputHost.o
StreamingEndpointAddress ConfigDescriptor.o
AudioInputHost.o
StreamingInterfaceAltSetting ConfigDescriptor.o
AudioInputHost.o
StreamingInterfaceIndex ConfigDescriptor.o
AudioInputHost.o
USARTSerialStream ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
AudioInputHost.o
USB_ControlPipeSize ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
USB_ControlRequest ../../../../LUFA/Drivers/USB/Core/USBTask.o
../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
USB_Disable ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
AudioInputHost.o
USB_Event_Stub ../../../../LUFA/Drivers/USB/Core/Events.o
USB_GetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
USB_GetHIDReportSize ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
USB_GetNextDescriptorComp ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
ConfigDescriptor.o
USB_GetNextDescriptorOfType ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
USB_GetNextDescriptorOfTypeAfter ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
USB_GetNextDescriptorOfTypeBefore ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
USB_HostState ../../../../LUFA/Drivers/USB/Core/USBTask.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
USB_Host_ClearPipeStall ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
USB_Host_GetDeviceConfigDescriptor ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
ConfigDescriptor.o
USB_Host_GetDeviceDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
USB_Host_GetDeviceStringDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
USB_Host_ProcessNextHostState ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
../../../../LUFA/Drivers/USB/Core/USBTask.o
USB_Host_SendControlRequest ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
USB_Host_SetDeviceConfiguration ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
USB_Host_SetInterfaceAltSetting ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
USB_Host_WaitMS ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
USB_INT_ClearAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
USB_INT_DisableAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
USB_Init ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
AudioInputHost.o
USB_IsInitialized ../../../../LUFA/Drivers/USB/Core/USBTask.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
USB_ProcessHIDReport ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
USB_ResetInterface ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
USB_SetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
USB_USBTask ../../../../LUFA/Drivers/USB/Core/USBTask.o
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
AudioInputHost.o
__bad_interrupt c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__bss_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
__bss_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
__data_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
__data_load_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
__data_start c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
__do_clear_bss c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
../../../../LUFA/Drivers/USB/Core/USBTask.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
ConfigDescriptor.o
__do_copy_data c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)
../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
AudioInputHost.o
__eerd_byte_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
__eeupd_byte_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
__eeupd_r18_usb1287 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)
__heap_end c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__init c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__iob c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)
AudioInputHost.o
__stack c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__ultoa_invert c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
__vector_1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_11 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_12 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_13 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_14 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_15 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_17 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_18 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_19 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_2 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_21 AudioInputHost.o
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_22 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_23 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_24 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_25 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_26 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_27 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_28 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_3 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_30 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_31 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_32 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_33 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_34 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_35 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_36 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_37 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_7 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_8 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_9 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vector_default c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
__vectors c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
_exit c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
exit c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
fputc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
main AudioInputHost.o
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o
printf_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)
AudioInputHost.o
puts_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)
AudioInputHost.o
strnlen c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
strnlen_P c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
vfprintf c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)
c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)

@ -0,0 +1,267 @@
U CALLBACK_HIDParser_FilterHIDReportItem
00000000 W __heap_end
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 W __vector_default
00000000 T __vectors
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
00000034 a __CCP__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
00000098 t __c.3939
000000b1 t __c.3935
00000108 t __c.3933
0000014b t __c.3930
00000165 t __c.3928
0000017c t __c.3926
000001a6 t __c.3924
000001bd t __c.3917
00000213 t __c.3910
00000242 t __c.3902
00000261 t __c.3897
0000027e t __c.3888
000002a4 T __ctors_end
000002a4 T __ctors_start
000002a4 T __dtors_end
000002a4 T __dtors_start
000002a4 W __init
000002a4 T __trampolines_end
000002a4 T __trampolines_start
000002b0 T __do_copy_data
000002ca T __do_clear_bss
000002d2 t .do_clear_bss_loop
000002d4 t .do_clear_bss_start
000002e0 T __bad_interrupt
000002e0 W __vector_1
000002e0 W __vector_11
000002e0 W __vector_12
000002e0 W __vector_13
000002e0 W __vector_14
000002e0 W __vector_15
000002e0 W __vector_16
000002e0 W __vector_17
000002e0 W __vector_18
000002e0 W __vector_19
000002e0 W __vector_2
000002e0 W __vector_20
000002e0 W __vector_22
000002e0 W __vector_23
000002e0 W __vector_24
000002e0 W __vector_25
000002e0 W __vector_26
000002e0 W __vector_27
000002e0 W __vector_28
000002e0 W __vector_29
000002e0 W __vector_3
000002e0 W __vector_30
000002e0 W __vector_31
000002e0 W __vector_32
000002e0 W __vector_33
000002e0 W __vector_34
000002e0 W __vector_35
000002e0 W __vector_36
000002e0 W __vector_37
000002e0 W __vector_4
000002e0 W __vector_5
000002e0 W __vector_6
000002e0 W __vector_7
000002e0 W __vector_8
000002e0 W __vector_9
000002e2 t LEDs_SetAllLEDs
000002ec T SetupHardware
0000037e T EVENT_USB_Host_DeviceAttached
00000388 T EVENT_USB_Host_DeviceUnattached
00000392 T EVENT_USB_Host_DeviceEnumerationComplete
00000396 T EVENT_USB_Host_HostError
000003d4 T EVENT_USB_Host_DeviceEnumerationFailed
00000424 T Audio_Task
00000558 T main
0000056c T __vector_21
0000063e T DComp_NextAudioControlInterface
00000660 T DComp_NextAudioStreamInterface
00000682 T DComp_NextAudioInterfaceDataEndpoint
000006a4 T ProcessConfigurationDescriptor
000007d6 t USB_Host_ResetDevice
0000087e T USB_Host_WaitMS
00000928 T USB_Host_ProcessNextHostState
00000b8c T USB_Host_SetDeviceConfiguration
00000bb8 T USB_Host_SetInterfaceAltSetting
00000be6 T Pipe_ConfigurePipe
00000cb4 T Pipe_ClearPipes
00000cdc T USB_Disable
00000d0c T USB_ResetInterface
00000da8 T USB_Init
00000dba T USB_INT_DisableAllInterrupts
00000dca T USB_INT_ClearAllInterrupts
00000dd4 T __vector_10
00000efa T USB_Host_GetDeviceConfigDescriptor
00000fa8 T USB_GetNextDescriptorComp
0000102e W EVENT_USB_Host_StartOfFrame
0000102e T USB_Event_Stub
00001030 t USB_Host_WaitForIOS
00001082 T USB_Host_SendControlRequest
000012ae T USB_USBTask
000012ca T Serial_putchar
000012dc T Serial_getchar
00001302 T printf_P
00001340 T puts_P
000013b0 T vfprintf
000017b6 T strnlen_P
000017cc T strnlen
000017e2 T fputc
0000183a T __ultoa_invert
000018f6 T _exit
000018f6 W exit
000018f8 t __stop_program
000018fa A __data_load_start
000018fa T _etext
00001916 A __data_load_end
000020ff W __stack
00800100 d C.5.5024
00800100 D __data_start
00800103 d C.0.3420
0080010b d C.10.3637
00800113 d C.7.3627
0080011b D USB_ControlPipeSize
0080011c B StreamingInterfaceIndex
0080011c B __bss_start
0080011c D __data_end
0080011c D _edata
0080011d B StreamingInterfaceAltSetting
0080011e B StreamingEndpointAddress
0080011f b PostWaitState.2492
00800120 b WaitMSRemaining.2491
00800122 B USB_IsInitialized
00800123 B USB_ControlRequest
0080012b B USB_HostState
0080012c B USARTSerialStream
0080013a B __iob
00800140 B __bss_end
00800140 N _end
00810000 N __eeprom_end

@ -0,0 +1,183 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations
* needed to communication with an attached USB device. Descriptors are special computer-readable structures
* which the host requests upon device enumeration, to determine the device's capabilities and functions.
*/
#include "ConfigDescriptor.h"
uint8_t StreamingInterfaceIndex = 0;
uint8_t StreamingInterfaceAltSetting = 0;
uint8_t StreamingEndpointAddress = 0;
uint8_t ProcessConfigurationDescriptor(void)
{
uint8_t ConfigDescriptorData[512];
void* CurrConfigLocation = ConfigDescriptorData;
uint16_t CurrConfigBytesRem;
USB_Descriptor_Interface_t* AudioControlInterface = NULL;
USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;
USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
/* Retrieve the entire configuration descriptor into the allocated buffer */
switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
{
case HOST_GETCONFIG_Successful:
break;
case HOST_GETCONFIG_InvalidData:
return InvalidConfigDataReturned;
case HOST_GETCONFIG_BuffOverflow:
return DescriptorTooLarge;
default:
return ControlError;
}
while (!(DataINEndpoint))
{
if (!(AudioControlInterface) ||
USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
{
if (!(AudioControlInterface))
{
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)
{
/* Descriptor not found, error out */
return NoCompatibleInterfaceFound;
}
/* Save the interface in case we need to refer back to it later */
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
}
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)
{
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)
{
/* Descriptor not found, error out */
return NoCompatibleInterfaceFound;
}
/* Save the interface in case we need to refer back to it later */
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
}
/* Save the interface in case we need to refer back to it later */
AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
/* Skip the remainder of the loop as we have not found an endpoint yet */
continue;
}
/* Retrieve the endpoint address from the endpoint descriptor */
USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
/* If the endpoint is a IN type endpoint */
if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
DataINEndpoint = EndpointData;
}
StreamingInterfaceIndex = AudioStreamingInterface->InterfaceNumber;
StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;
StreamingEndpointAddress = DataINEndpoint->EndpointAddress;
/* Configure the HID data IN pipe */
Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,
DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);
/* Valid data found, return success */
return SuccessfulConfigRead;
}
uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)
{
USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
if (Header->Type == DTYPE_Interface)
{
USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
(Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&
(Interface->Protocol == AUDIO_CSCP_ControlProtocol))
{
return DESCRIPTOR_SEARCH_Found;
}
}
return DESCRIPTOR_SEARCH_NotFound;
}
uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)
{
USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
if (Header->Type == DTYPE_Interface)
{
USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
(Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&
(Interface->Protocol == AUDIO_CSCP_StreamingProtocol))
{
return DESCRIPTOR_SEARCH_Found;
}
}
return DESCRIPTOR_SEARCH_NotFound;
}
uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
{
USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
if (Header->Type == DTYPE_Endpoint)
{
USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)
return DESCRIPTOR_SEARCH_Found;
}
else if (Header->Type == DTYPE_Interface)
{
return DESCRIPTOR_SEARCH_Fail;
}
return DESCRIPTOR_SEARCH_NotFound;
}

@ -0,0 +1,72 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
without fee, provided that the above copyright notice appear in
all copies and that both that the copyright notice and this
permission notice and warranty disclaimer appear in supporting
documentation, and that the name of the author not be used in
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
The author disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Header file for ConfigDescriptor.c.
*/
#ifndef _CONFIGDESCRIPTOR_H_
#define _CONFIGDESCRIPTOR_H_
/* Includes: */
#include <LUFA/Drivers/USB/USB.h>
#include "AudioInputHost.h"
/* Macros: */
/** Pipe number for the Audio data IN pipe. */
#define AUDIO_DATA_IN_PIPE 1
/* Enums: */
/** Enum for the possible return codes of the \ref ProcessConfigurationDescriptor() function. */
enum KeyboardHost_GetConfigDescriptorDataCodes_t
{
SuccessfulConfigRead = 0, /**< Configuration Descriptor was processed successfully */
ControlError = 1, /**< A control request to the device failed to complete successfully */
DescriptorTooLarge = 2, /**< The device's Configuration Descriptor is too large to process */
InvalidConfigDataReturned = 3, /**< The device returned an invalid Configuration Descriptor */
NoCompatibleInterfaceFound = 4, /**< A compatible interface with the required endpoints was not found */
};
/* External Variables: */
extern uint8_t StreamingInterfaceIndex;
extern uint8_t StreamingInterfaceAltSetting;
extern uint8_t StreamingEndpointAddress;
/* Function Prototypes: */
uint8_t ProcessConfigurationDescriptor(void);
uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor);
uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor);
uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor);
#endif

@ -0,0 +1,400 @@
1 .file "ConfigDescriptor.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
15 .Ltext0:
16 .section .text.DComp_NextAudioControlInterface,"ax",@progbits
17 .global DComp_NextAudioControlInterface
19 DComp_NextAudioControlInterface:
20 .LFB132:
21 .LSM0:
22 .LVL0:
23 /* prologue: function */
24 /* frame size = 0 */
25 /* stack size = 0 */
26 .L__stack_usage = 0
27 0000 FC01 movw r30,r24
28 .LVL1:
29 .LSM1:
30 0002 8181 ldd r24,Z+1
31 .LVL2:
32 0004 8430 cpi r24,lo8(4)
33 0006 01F4 brne .L5
34 .LVL3:
35 .LBB2:
36 .LSM2:
37 0008 8581 ldd r24,Z+5
38 000a 8130 cpi r24,lo8(1)
39 000c 01F4 brne .L5
40 .LSM3:
41 000e 8681 ldd r24,Z+6
42 0010 8130 cpi r24,lo8(1)
43 0012 01F4 brne .L5
44 .LSM4:
45 0014 8781 ldd r24,Z+7
46 0016 8823 tst r24
47 0018 01F0 breq .L6
48 .LVL4:
49 .L5:
50 .LSM5:
51 001a 82E0 ldi r24,lo8(2)
52 001c 0895 ret
53 .LVL5:
54 .L6:
55 .LSM6:
56 001e 80E0 ldi r24,lo8(0)
57 .LBE2:
58 .LSM7:
59 0020 0895 ret
60 .LFE132:
62 .section .text.DComp_NextAudioStreamInterface,"ax",@progbits
63 .global DComp_NextAudioStreamInterface
65 DComp_NextAudioStreamInterface:
66 .LFB133:
67 .LSM8:
68 .LVL6:
69 /* prologue: function */
70 /* frame size = 0 */
71 /* stack size = 0 */
72 .L__stack_usage = 0
73 0000 FC01 movw r30,r24
74 .LVL7:
75 .LSM9:
76 0002 8181 ldd r24,Z+1
77 .LVL8:
78 0004 8430 cpi r24,lo8(4)
79 0006 01F4 brne .L11
80 .LVL9:
81 .LBB3:
82 .LSM10:
83 0008 8581 ldd r24,Z+5
84 000a 8130 cpi r24,lo8(1)
85 000c 01F4 brne .L11
86 .LSM11:
87 000e 8681 ldd r24,Z+6
88 0010 8230 cpi r24,lo8(2)
89 0012 01F4 brne .L11
90 .LSM12:
91 0014 8781 ldd r24,Z+7
92 0016 8823 tst r24
93 0018 01F0 breq .L12
94 .LVL10:
95 .L11:
96 .LSM13:
97 001a 82E0 ldi r24,lo8(2)
98 001c 0895 ret
99 .LVL11:
100 .L12:
101 .LSM14:
102 001e 80E0 ldi r24,lo8(0)
103 .LBE3:
104 .LSM15:
105 0020 0895 ret
106 .LFE133:
108 .section .text.DComp_NextAudioInterfaceDataEndpoint,"ax",@progbits
109 .global DComp_NextAudioInterfaceDataEndpoint
111 DComp_NextAudioInterfaceDataEndpoint:
112 .LFB134:
113 .LSM16:
114 .LVL12:
115 /* prologue: function */
116 /* frame size = 0 */
117 /* stack size = 0 */
118 .L__stack_usage = 0
119 0000 FC01 movw r30,r24
120 .LVL13:
121 .LSM17:
122 0002 8181 ldd r24,Z+1
123 .LVL14:
124 0004 8530 cpi r24,lo8(5)
125 0006 01F4 brne .L14
126 .LVL15:
127 .LBB4:
128 .LSM18:
129 0008 8381 ldd r24,Z+3
130 000a 8370 andi r24,lo8(3)
131 000c 8130 cpi r24,lo8(1)
132 000e 01F4 brne .L18
133 0010 00C0 rjmp .L16
134 .LVL16:
135 .L14:
136 .LBE4:
137 .LSM19:
138 0012 8430 cpi r24,lo8(4)
139 0014 01F0 breq .L17
140 .L18:
141 .LSM20:
142 0016 82E0 ldi r24,lo8(2)
143 0018 0895 ret
144 .LVL17:
145 .L16:
146 .LBB5:
147 .LSM21:
148 001a 80E0 ldi r24,lo8(0)
149 001c 0895 ret
150 .LVL18:
151 .L17:
152 .LBE5:
153 .LSM22:
154 001e 81E0 ldi r24,lo8(1)
155 .LSM23:
156 0020 0895 ret
157 .LFE134:
159 .section .text.ProcessConfigurationDescriptor,"ax",@progbits
160 .global ProcessConfigurationDescriptor
162 ProcessConfigurationDescriptor:
163 .LFB131:
164 .LSM24:
165 0000 AF92 push r10
166 0002 BF92 push r11
167 0004 CF92 push r12
168 0006 DF92 push r13
169 0008 EF92 push r14
170 000a FF92 push r15
171 000c 0F93 push r16
172 000e 1F93 push r17
173 0010 DF93 push r29
174 0012 CF93 push r28
175 0014 CDB7 in r28,__SP_L__
176 0016 DEB7 in r29,__SP_H__
177 0018 C450 subi r28,lo8(-(-516))
178 001a D240 sbci r29,hi8(-(-516))
179 001c 0FB6 in __tmp_reg__,__SREG__
180 001e F894 cli
181 0020 DEBF out __SP_H__,r29
182 0022 0FBE out __SREG__,__tmp_reg__
183 0024 CDBF out __SP_L__,r28
184 /* prologue: function */
185 /* frame size = 516 */
186 /* stack size = 526 */
187 .L__stack_usage = 526
188 .LSM25:
189 0026 AE01 movw r20,r28
190 0028 4B5F subi r20,lo8(-(5))
191 002a 5F4F sbci r21,hi8(-(5))
192 002c 5A83 std Y+2,r21
193 002e 4983 std Y+1,r20
194 .LVL19:
195 .LSM26:
196 0030 23E0 ldi r18,lo8(3)
197 0032 E22E mov r14,r18
198 0034 F12C mov r15,__zero_reg__
199 0036 EC0E add r14,r28
200 0038 FD1E adc r15,r29
201 003a 81E0 ldi r24,lo8(1)
202 003c B701 movw r22,r14
203 003e 20E0 ldi r18,lo8(512)
204 0040 32E0 ldi r19,hi8(512)
205 0042 0E94 0000 call USB_Host_GetDeviceConfigDescriptor
206 0046 8530 cpi r24,lo8(5)
207 0048 01F4 brne .+2
208 004a 00C0 rjmp .L31
209 004c 8630 cpi r24,lo8(6)
210 004e 01F0 breq .L23
211 0050 8823 tst r24
212 0052 01F4 brne .L34
213 0054 00E0 ldi r16,lo8(0)
214 0056 10E0 ldi r17,hi8(0)
215 0058 CC24 clr r12
216 005a DD24 clr r13
217 005c 5701 movw r10,r14
218 005e 7E01 movw r14,r28
219 0060 0894 sec
220 0062 E11C adc r14,__zero_reg__
221 0064 F11C adc r15,__zero_reg__
222 0066 00C0 rjmp .L24
223 .L23:
224 .LSM27:
225 0068 83E0 ldi r24,lo8(3)
226 006a 00C0 rjmp .L22
227 .L34:
228 .LSM28:
229 006c 81E0 ldi r24,lo8(1)
230 006e 00C0 rjmp .L22
231 .LVL20:
232 .L30:
233 .LSM29:
234 0070 9C01 movw r18,r24
235 0072 032F mov r16,r19
236 0074 182F mov r17,r24
237 .LVL21:
238 .L24:
239 .LBB6:
240 .LSM30:
241 0076 C114 cp r12,__zero_reg__
242 0078 D104 cpc r13,__zero_reg__
243 007a 01F0 breq .L25
244 .LSM31:
245 007c C501 movw r24,r10
246 007e B701 movw r22,r14
247 0080 40E0 ldi r20,lo8(gs(DComp_NextAudioInterfaceDataEndpoint))
248 0082 50E0 ldi r21,hi8(gs(DComp_NextAudioInterfaceDataEndpoint))
249 0084 0E94 0000 call USB_GetNextDescriptorComp
250 .LSM32:
251 0088 8823 tst r24
252 008a 01F4 brne .L26
253 008c 00C0 rjmp .L36
254 .L25:
255 .LSM33:
256 008e C501 movw r24,r10
257 0090 B701 movw r22,r14
258 0092 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface))
259 0094 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface))
260 0096 0E94 0000 call USB_GetNextDescriptorComp
261 009a 8823 tst r24
262 009c 01F4 brne .L33
263 .LSM34:
264 009e C980 ldd r12,Y+1
265 00a0 DA80 ldd r13,Y+2
266 .LVL22:
267 .L26:
268 .LSM35:
269 00a2 C501 movw r24,r10
270 00a4 B701 movw r22,r14
271 00a6 40E0 ldi r20,lo8(gs(DComp_NextAudioStreamInterface))
272 00a8 50E0 ldi r21,hi8(gs(DComp_NextAudioStreamInterface))
273 00aa 0E94 0000 call USB_GetNextDescriptorComp
274 00ae 8823 tst r24
275 00b0 01F0 breq .L28
276 .LSM36:
277 00b2 C501 movw r24,r10
278 00b4 B701 movw r22,r14
279 00b6 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface))
280 00b8 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface))
281 00ba 0E94 0000 call USB_GetNextDescriptorComp
282 00be 8823 tst r24
283 00c0 01F4 brne .L33
284 .LSM37:
285 00c2 C980 ldd r12,Y+1
286 00c4 DA80 ldd r13,Y+2
287 .LVL23:
288 .L28:
289 .LSM38:
290 00c6 0981 ldd r16,Y+1
291 00c8 1A81 ldd r17,Y+2
292 .LVL24:
293 .LSM39:
294 00ca 00C0 rjmp .L29
295 .LVL25:
296 .L36:
297 .LSM40:
298 00cc E981 ldd r30,Y+1
299 00ce FA81 ldd r31,Y+2
300 .LVL26:
301 .LSM41:
302 00d0 8281 ldd r24,Z+2
303 00d2 87FF sbrs r24,7
304 00d4 00C0 rjmp .L29
305 .LSM42:
306 00d6 902F mov r25,r16
307 00d8 812F mov r24,r17
308 .LVL27:
309 .LBE6:
310 .LSM43:
311 00da 3097 sbiw r30,0
312 00dc 01F0 breq .L30
313 .LSM44:
314 00de D801 movw r26,r16
315 00e0 1296 adiw r26,2
316 00e2 8C91 ld r24,X
317 00e4 1297 sbiw r26,2
318 00e6 8093 0000 sts StreamingInterfaceIndex,r24
319 .LSM45:
320 00ea 1396 adiw r26,3
321 00ec 8C91 ld r24,X
322 00ee 8093 0000 sts StreamingInterfaceAltSetting,r24
323 .LSM46:
324 00f2 2281 ldd r18,Z+2
325 00f4 2093 0000 sts StreamingEndpointAddress,r18
326 .LSM47:
327 00f8 0481 ldd r16,Z+4
328 00fa 1581 ldd r17,Z+5
329 .LVL28:
330 00fc 81E0 ldi r24,lo8(1)
331 00fe 61E0 ldi r22,lo8(1)
332 0100 40E1 ldi r20,lo8(16)
333 0102 94E0 ldi r25,lo8(4)
334 0104 E92E mov r14,r25
335 .LVL29:
336 0106 0E94 0000 call Pipe_ConfigurePipe
337 .LVL30:
338 .LSM48:
339 010a 80E0 ldi r24,lo8(0)
340 010c 00C0 rjmp .L22
341 .LVL31:
342 .L31:
343 .LSM49:
344 010e 82E0 ldi r24,lo8(2)
345 0110 00C0 rjmp .L22
346 .LVL32:
347 .L33:
348 .LBB7:
349 .LSM50:
350 0112 84E0 ldi r24,lo8(4)
351 .L22:
352 /* epilogue start */
353 .LBE7:
354 .LSM51:
355 0114 CC5F subi r28,lo8(-(516))
356 0116 DD4F sbci r29,hi8(-(516))
357 0118 0FB6 in __tmp_reg__,__SREG__
358 011a F894 cli
359 011c DEBF out __SP_H__,r29
360 011e 0FBE out __SREG__,__tmp_reg__
361 0120 CDBF out __SP_L__,r28
362 0122 CF91 pop r28
363 0124 DF91 pop r29
364 0126 1F91 pop r17
365 0128 0F91 pop r16
366 012a FF90 pop r15
367 012c EF90 pop r14
368 012e DF90 pop r13
369 0130 CF90 pop r12
370 0132 BF90 pop r11
371 0134 AF90 pop r10
372 0136 0895 ret
373 .L29:
374 .LVL33:
375 .LSM52:
376 0138 902F mov r25,r16
377 013a 812F mov r24,r17
378 013c 00C0 rjmp .L30
379 .LFE131:
381 .global StreamingInterfaceIndex
382 .global StreamingInterfaceIndex
383 .section .bss
386 StreamingInterfaceIndex:
387 0000 00 .skip 1,0
388 .global StreamingInterfaceAltSetting
389 .global StreamingInterfaceAltSetting
392 StreamingInterfaceAltSetting:
393 0001 00 .skip 1,0
394 .global StreamingEndpointAddress
395 .global StreamingEndpointAddress
398 StreamingEndpointAddress:
399 0002 00 .skip 1,0
448 .Letext0:
DEFINED SYMBOLS
*ABS*:00000000 ConfigDescriptor.c
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:2 *ABS*:0000003f __SREG__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:3 *ABS*:0000003e __SP_H__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:4 *ABS*:0000003d __SP_L__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:5 *ABS*:00000034 __CCP__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:6 *ABS*:00000000 __tmp_reg__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:7 *ABS*:00000001 __zero_reg__
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:19 .text.DComp_NextAudioControlInterface:00000000 DComp_NextAudioControlInterface
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:65 .text.DComp_NextAudioStreamInterface:00000000 DComp_NextAudioStreamInterface
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:111 .text.DComp_NextAudioInterfaceDataEndpoint:00000000 DComp_NextAudioInterfaceDataEndpoint
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:162 .text.ProcessConfigurationDescriptor:00000000 ProcessConfigurationDescriptor
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:386 .bss:00000000 StreamingInterfaceIndex
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:392 .bss:00000001 StreamingInterfaceAltSetting
C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:398 .bss:00000002 StreamingEndpointAddress
UNDEFINED SYMBOLS
USB_Host_GetDeviceConfigDescriptor
USB_GetNextDescriptorComp
Pipe_ConfigurePipe
__do_clear_bss

@ -0,0 +1,714 @@
# Hey Emacs, this is a -*- makefile -*-
#----------------------------------------------------------------------------
# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
# >> Modified for use with the LUFA project. <<
#
# Released to the Public Domain
#
# Additional material for this makefile was written by:
# Peter Fleury
# Tim Henigan
# Colin O'Flynn
# Reiner Patommel
# Markus Pfaff
# Sander Pool
# Frederik Rouleau
# Carlos Lamas
# Dean Camera
# Opendous Inc.
# Denver Gingerich
#
#----------------------------------------------------------------------------
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF.
#
# make extcoff = Convert ELF to AVR Extended COFF.
#
# make program = Download the hex file to the device, using avrdude.
# Please customize the avrdude settings below first!
#
# make dfu = Download the hex file to the device, using dfu-programmer (must
# have dfu-programmer installed).
#
# make flip = Download the hex file to the device, using Atmel FLIP (must
# have Atmel FLIP installed).
#
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
# (must have dfu-programmer installed).
#
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
# (must have Atmel FLIP installed).
#
# make doxygen = Generate DoxyGen documentation for the project (must have
# DoxyGen installed)
#
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
#
# make filename.i = Create a preprocessed source file for use in submitting
# bug reports to the GCC project.
#
# To rebuild project do "make clean" then "make all".
#----------------------------------------------------------------------------
# MCU name
MCU = at90usb1287
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Target board (see library "Board Types" documentation, NONE for projects not requiring
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
# "Board" inside the application directory.
BOARD = USBKEY
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
# This will be an integer division of F_USB below, as it is sourced by
# F_USB after it has run through any CPU prescalers. Note that this value
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 8000000
# Input clock frequency.
# This will define a symbol, F_USB, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
# at the end, this will be done automatically to create a 32-bit value in your
# source code.
#
# If no clock division is performed on the input clock inside the AVR (via the
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Target file name (without extension).
TARGET = AudioInputHost
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
OBJDIR = .
# Path to the LUFA library
LUFA_PATH = ../../../..
# LUFA library compile-time options and predefined tokens
LUFA_OPTS = -D USB_HOST_ONLY
LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
# Create the LUFA source path variables by including the LUFA root makefile
include $(LUFA_PATH)/LUFA/makefile
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c \
ConfigDescriptor.c \
$(LUFA_SRC_USB) \
$(LUFA_SRC_SERIAL)
# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
# Debugging format.
# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
# AVR Studio 4.10 requires dwarf-2.
# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
DEBUG = dwarf-2
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.
EXTRAINCDIRS = $(LUFA_PATH)/
# Compiler flag to set the C Standard level.
# c89 = "ANSI" C
# gnu89 = c89 plus GCC extensions
# c99 = ISO C99 standard (not yet fully implemented)
# gnu99 = c99 plus GCC extensions
CSTANDARD = -std=c99
# Place -D or -U options here for C sources
CDEFS = -DF_CPU=$(F_CPU)UL
CDEFS += -DF_USB=$(F_USB)UL
CDEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH)
CDEFS += $(LUFA_OPTS)
# Place -D or -U options here for ASM sources
ADEFS = -DF_CPU=$(F_CPU)
ADEFS += -DF_USB=$(F_USB)UL
ADEFS += -DBOARD=BOARD_$(BOARD)
ADEFS += $(LUFA_OPTS)
# Place -D or -U options here for C++ sources
CPPDEFS = -DF_CPU=$(F_CPU)UL
CPPDEFS += -DF_USB=$(F_USB)UL
CPPDEFS += -DBOARD=BOARD_$(BOARD)
CPPDEFS += $(LUFA_OPTS)
#CPPDEFS += -D__STDC_LIMIT_MACROS
#CPPDEFS += -D__STDC_CONSTANT_MACROS
#---------------- Compiler Options C ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
CFLAGS = -g$(DEBUG)
CFLAGS += $(CDEFS)
CFLAGS += -O$(OPT)
CFLAGS += -funsigned-char
CFLAGS += -funsigned-bitfields
CFLAGS += -ffunction-sections
CFLAGS += -fno-inline-small-functions
CFLAGS += -fpack-struct
CFLAGS += -fshort-enums
CFLAGS += -fno-strict-aliasing
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
#CFLAGS += -mshort-calls
#CFLAGS += -fno-unit-at-a-time
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
CFLAGS += $(CSTANDARD)
#---------------- Compiler Options C++ ----------------
# -g*: generate debugging information
# -O*: optimization level
# -f...: tuning, see GCC manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns...: create assembler listing
CPPFLAGS = -g$(DEBUG)
CPPFLAGS += $(CPPDEFS)
CPPFLAGS += -O$(OPT)
CPPFLAGS += -funsigned-char
CPPFLAGS += -funsigned-bitfields
CPPFLAGS += -fpack-struct
CPPFLAGS += -fshort-enums
CPPFLAGS += -fno-exceptions
CPPFLAGS += -Wall
CPPFLAGS += -Wundef
#CPPFLAGS += -mshort-calls
#CPPFLAGS += -fno-unit-at-a-time
#CPPFLAGS += -Wstrict-prototypes
#CPPFLAGS += -Wunreachable-code
#CPPFLAGS += -Wsign-compare
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CPPFLAGS += $(CSTANDARD)
#---------------- Assembler Options ----------------
# -Wa,...: tell GCC to pass this to the assembler.
# -adhlns: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
# dump that will be displayed for a given single line of source input.
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
# Minimalistic scanf version
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)
MATH_LIB = -lm
# List any extra directories to look for libraries here.
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.
EXTRALIBDIRS =
#---------------- External Memory Options ----------------
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# only used for heap (malloc()).
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
EXTMEMOPTS =
#---------------- Linker Options ----------------
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += -Wl,--relax
LDFLAGS += -Wl,--gc-sections
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
#LDFLAGS += -T linker_script.x
#---------------- Programming Options (avrdude) ----------------
# Programming hardware
# Type: avrdude -c ?
# to get a full listing.
#
AVRDUDE_PROGRAMMER = jtagmkII
# com1 = serial port. Use lpt1 to connect to parallel port.
AVRDUDE_PORT = usb
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE_COUNTER = -y
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
#---------------- Debugging Options ----------------
# For simulavr only - target MCU frequency.
DEBUG_MFREQ = $(F_CPU)
# Set the DEBUG_UI to either gdb or insight.
# DEBUG_UI = gdb
DEBUG_UI = insight
# Set the debugging back-end to either avarice, simulavr.
DEBUG_BACKEND = avarice
#DEBUG_BACKEND = simulavr
# GDB Init Filename.
GDBINIT_FILE = __avr_gdbinit
# When using avarice settings for the JTAG
JTAG_DEV = /dev/com1
# Debugging port used to communicate between GDB / avarice / simulavr.
DEBUG_PORT = 4242
# Debugging host used to communicate between GDB / avarice / simulavr, normally
# just set to localhost unless doing some sort of crazy debugging when
# avarice is running on a different computer.
DEBUG_HOST = localhost
#============================================================================
# Define programs and commands.
SHELL = sh
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
AR = avr-ar rcs
NM = avr-nm
AVRDUDE = avrdude
REMOVE = rm -f
REMOVEDIR = rm -rf
COPY = cp
WINSHELL = cmd
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for Flash:
MSG_EEPROM = Creating load file for EEPROM:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling C:
MSG_COMPILING_CPP = Compiling C++:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
MSG_CREATING_LIBRARY = Creating library:
# Define all object files.
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
# Define all listing files.
LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
# Compiler flags to generate dependency files.
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all: begin gccversion sizebefore build sizeafter end
# Change the build target to build a HEX file or a library.
build: elf hex eep lss sym
#build: lib
elf: $(TARGET).elf
hex: $(TARGET).hex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
LIBNAME=lib$(TARGET).a
lib: $(LIBNAME)
# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@echo
@echo $(MSG_BEGIN)
end:
@echo $(MSG_END)
@echo
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
sizebefore:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
2>/dev/null; echo; fi
sizeafter:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
2>/dev/null; echo; fi
# Display compiler version information.
gccversion :
@$(CC) --version
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
flip: $(TARGET).hex
batchisp -hardware usb -device $(MCU) -operation erase f
batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program
batchisp -hardware usb -device $(MCU) -operation start reset 0
dfu: $(TARGET).hex
dfu-programmer $(MCU) erase
dfu-programmer $(MCU) flash $(TARGET).hex
dfu-programmer $(MCU) reset
flip-ee: $(TARGET).hex $(TARGET).eep
$(COPY) $(TARGET).eep $(TARGET)eep.hex
batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase
batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
batchisp -hardware usb -device $(MCU) -operation start reset 0
$(REMOVE) $(TARGET)eep.hex
dfu-ee: $(TARGET).hex $(TARGET).eep
dfu-programmer $(MCU) eeprom-flash $(TARGET).eep
dfu-programmer $(MCU) reset
# Generate avr-gdb config/init file which does the following:
# define the reset signal, load the target file, connect to target, and set
# a breakpoint at main().
gdb-config:
@$(REMOVE) $(GDBINIT_FILE)
@echo define reset >> $(GDBINIT_FILE)
@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
@echo end >> $(GDBINIT_FILE)
@echo file $(TARGET).elf >> $(GDBINIT_FILE)
@echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
ifeq ($(DEBUG_BACKEND),simulavr)
@echo load >> $(GDBINIT_FILE)
endif
@echo break main >> $(GDBINIT_FILE)
debug: gdb-config $(TARGET).elf
ifeq ($(DEBUG_BACKEND), avarice)
@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
@$(WINSHELL) /c pause
else
@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
$(DEBUG_MFREQ) --port $(DEBUG_PORT)
endif
@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
COFFCONVERT = $(OBJCOPY) --debugging
COFFCONVERT += --change-section-address .data-0x800000
COFFCONVERT += --change-section-address .bss-0x800000
COFFCONVERT += --change-section-address .noinit-0x800000
COFFCONVERT += --change-section-address .eeprom-0x810000
coff: $(TARGET).elf
@echo
@echo $(MSG_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
extcoff: $(TARGET).elf
@echo
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
# Create extended listing file from ELF output file.
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S -z $< > $@
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
$(NM) -n $< > $@
# Create library from object files.
.SECONDARY : $(TARGET).a
.PRECIOUS : $(OBJ)
%.a: $(OBJ)
@echo
@echo $(MSG_CREATING_LIBRARY) $@
$(AR) $@ $(OBJ)
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
# Compile: create object files from C source files.
$(OBJDIR)/%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
# Compile: create object files from C++ source files.
$(OBJDIR)/%.o : %.cpp
@echo
@echo $(MSG_COMPILING_CPP) $<
$(CC) -c $(ALL_CPPFLAGS) $< -o $@
# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@
# Compile: create assembler files from C++ source files.
%.s : %.cpp
$(CC) -S $(ALL_CPPFLAGS) $< -o $@
# Assemble: create object files from assembler source files.
$(OBJDIR)/%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# Create preprocessed source for use in sending a bug report.
%.i : %.c
$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
# Target: clean project.
clean: begin clean_list end
clean_list :
@echo
@echo $(MSG_CLEANING)
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).eep
$(REMOVE) $(TARGET).cof
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lss
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
$(REMOVE) $(SRC:.c=.i)
$(REMOVEDIR) .dep
doxygen:
@echo Generating Project Documentation...
@doxygen Doxygen.conf
@echo Documentation Generation Complete.
clean_doxygen:
rm -rf Documentation
# Create object files directory
$(shell mkdir $(OBJDIR) 2>/dev/null)
# Include the dependency files.
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion \
build elf hex eep lss sym coff extcoff doxygen clean \
clean_list clean_doxygen program dfu flip flip-ee dfu-ee \
debug gdb-config

File diff suppressed because one or more lines are too long

@ -204,7 +204,7 @@
* *
* \param[in] freq Required audio sampling frequency in HZ * \param[in] freq Required audio sampling frequency in HZ
*/ */
#define AUDIO_SAMPLE_FREQ(freq) {.Byte1 = (freq & 0x0000FF), .Byte2 = ((freq >> 8) & 0xFF), .Byte3 = ((freq >> 16) & 0xFF)} #define AUDIO_SAMPLE_FREQ(freq) {.Byte1 = ((uint32_t)freq & 0x0000FF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}
/** Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint /** Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint
* accepts only filled endpoint packets of audio samples. * accepts only filled endpoint packets of audio samples.
@ -269,6 +269,22 @@
AUDIO_DSUBTYPE_CSEndpoint_General = 0x01, /**< Audio class specific endpoint general descriptor. */ AUDIO_DSUBTYPE_CSEndpoint_General = 0x01, /**< Audio class specific endpoint general descriptor. */
}; };
/** Enum for the Audio class specific control requests that can be issued by the USB bus host. */
enum Audio_ClassRequests_t
{
AUDIO_REQ_SetCurrent = 0x01, /**< Audio class-specific request to set the current value of a parameter within the device. */
AUDIO_REQ_SetMinimum = 0x02, /**< Audio class-specific request to set the minimum value of a parameter within the device. */
AUDIO_REQ_SetMaximum = 0x03, /**< Audio class-specific request to set the maximum value of a parameter within the device. */
AUDIO_REQ_SetResolution = 0x04, /**< Audio class-specific request to set the resolution value of a parameter within the device. */
AUDIO_REQ_SetMemory = 0x05, /**< Audio class-specific request to set the memory value of a parameter within the device. */
AUDIO_REQ_GetCurrent = 0x81, /**< Audio class-specific request to get the current value of a parameter within the device. */
AUDIO_REQ_GetMinimum = 0x82, /**< Audio class-specific request to get the minimum value of a parameter within the device. */
AUDIO_REQ_GetMaximum = 0x83, /**< Audio class-specific request to get the maximum value of a parameter within the device. */
AUDIO_REQ_GetResolution = 0x84, /**< Audio class-specific request to get the resolution value of a parameter within the device. */
AUDIO_REQ_GetMemory = 0x85, /**< Audio class-specific request to get the memory value of a parameter within the device. */
AUDIO_REQ_GetStatus = 0xFF, /**< Audio class-specific request to get the device status. */
};
/* Type Defines: */ /* Type Defines: */
/** \brief Audio class-specific Input Terminal Descriptor (LUFA naming conventions). /** \brief Audio class-specific Input Terminal Descriptor (LUFA naming conventions).
* *

@ -57,6 +57,13 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
} }
break; break;
case AUDIO_REQ_GetStatus:
if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
(USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
{
Endpoint_ClearSETUP();
Endpoint_ClearStatusStage();
}
} }
} }

@ -12,14 +12,16 @@
* - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration * - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration
* tokens as an alternative to tokens defined in the project makefile * tokens as an alternative to tokens defined in the project makefile
* - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting * - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting
* - Added Audio class control request definitions
* - Library Applications: * - Library Applications:
* - Added RNDIS device mode to the Webserver project
* - Added new MediaControl project * - Added new MediaControl project
* - Added new incomplete AndroidAccessoryHost Host LowLevel demo * - Added new incomplete AndroidAccessoryHost Host LowLevel demo
* - Added RNDIS device mode to the Webserver project * - Added new incomplete AudioInputHost Host LowLevel demo
* *
* <b>Changed:</b> * <b>Changed:</b>
* - Core: * - Core:
* - <i>None</i> * - Added support for the Audio class GET STATUS request so that it is correctly ACKed when sent by the host
* - Library Applications: * - Library Applications:
* - <i>None</i> * - <i>None</i>
* *

@ -29,11 +29,10 @@
* - Demos/Projects * - Demos/Projects
* -# Device/Host USB bridge * -# Device/Host USB bridge
* -# Alternative (USB-IF endorsed) USB-CDC Ethernet Class * -# Alternative (USB-IF endorsed) USB-CDC Ethernet Class
* -# Finish Test and Measurement Class demo * -# Finish incomplete demos and projects
* -# Finish BluetoothHost demo * -# Add class driver support for Audio Host class
* -# Finish SideShow demo * -# Add class driver support for Test and Measurement class
* -# Finish StandaloneProgrammer project * -# Fix up Audio class support - add support for mixers, etc., add support for GET/SET commands
* -# Arduino Uno compatible USB-MIDI, USB-HID
* - Ports * - Ports
* -# Atmel ARM7 series microcontrollers * -# Atmel ARM7 series microcontrollers
* -# Other (commercial) C compilers * -# Other (commercial) C compilers

@ -45,14 +45,14 @@ int main(void)
V2Protocol_Init(); V2Protocol_Init();
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
sei(); GlobalInterruptEnable();
for (;;) for (;;)
{ {
#if (BOARD == BOARD_USBTINYMKII) #if (BOARD == BOARD_USBTINYMKII)
/* On the USBTINY-MKII target, there is a secondary LED which indicates the current selected power /* On the USBTINY-MKII board target, there is a secondary LED which indicates the current selected
mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */ power mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
LEDs_ChangeLEDs(LEDMASK_VBUSPOWER, (PIND & (1 << 0)) ? 0 : LEDMASK_VBUSPOWER); LEDs_ChangeLEDs(LEDS_LED3, (PIND & (1 << 0)) ? 0 : LEDS_LED3);
#endif #endif
AVRISP_Task(); AVRISP_Task();
@ -63,12 +63,34 @@ int main(void)
/** Configures the board hardware and chip peripherals for the demo's functionality. */ /** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void) void SetupHardware(void)
{ {
/* Disable watchdog if enabled by bootloader/fuses */ #if (ARCH == ARCH_AVR8)
MCUSR &= ~(1 << WDRF); /* Disable watchdog if enabled by bootloader/fuses */
wdt_disable(); MCUSR &= ~(1 << WDRF);
wdt_disable();
/* Disable clock division */
clock_prescale_set(clock_div_1); /* Disable clock division */
clock_prescale_set(clock_div_1);
#elif (ARCH == ARCH_UC3)
/* Select slow startup, external high frequency crystal attached to OSC0 */
AVR32_PM.OSCCTRL0.mode = 7;
AVR32_PM.OSCCTRL0.startup = 6;
AVR32_PM.MCCTRL.osc0en = true;
while (!(AVR32_PM.POSCSR.osc0rdy));
/* Switch CPU core to use OSC0 as the system clock */
AVR32_PM.MCCTRL.mcsel = 1;
/* Start PLL1 to feed into the USB generic clock module */
AVR32_PM.PLL[1].pllmul = (F_USB / F_CPU) ? (((F_USB / F_CPU) - 1) / 2) : 0;
AVR32_PM.PLL[1].plldiv = 0;
AVR32_PM.PLL[1].pllosc = 0;
AVR32_PM.PLL[1].pllen = true;
while (!(AVR32_PM.POSCSR.lock1));
/* Configure interrupt management peripheral */
// INTC_Init();
INTC_RegisterGroupHandler(AVR32_USBB_IRQ, AVR32_INTC_INT0, USB_GEN_vect);
#endif
/* Hardware Initialization */ /* Hardware Initialization */
LEDs_Init(); LEDs_Init();

@ -37,11 +37,7 @@
#define _AVRISP_H_ #define _AVRISP_H_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/power.h>
#include <LUFA/Version.h> #include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h> #include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
@ -50,6 +46,17 @@
#include <LUFA/Drivers/Peripheral/ADC.h> #include <LUFA/Drivers/Peripheral/ADC.h>
#endif #endif
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/power.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#include <LUFA/Platform/UC3/INTC_UC3.h> // TODO: FIXME
#endif
#include "Descriptors.h" #include "Descriptors.h"
#include "Lib/V2Protocol.h" #include "Lib/V2Protocol.h"
@ -69,9 +76,6 @@
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */ /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2) #define LEDMASK_BUSY (LEDS_LED1 | LEDS_LED2)
/** LED mask for the library LED driver, to indicate that the target is being powered by VBUS. */
#define LEDMASK_VBUSPOWER LEDS_LED3
/* Function Prototypes: */ /* Function Prototypes: */
void SetupHardware(void); void SetupHardware(void);
void AVRISP_Task(void); void AVRISP_Task(void);

@ -53,8 +53,8 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = CPU_TO_LE16(0x03EB),
.ProductID = 0x2104, .ProductID = CPU_TO_LE16(0x2104),
.ReleaseNumber = VERSION_BCD(02.00), .ReleaseNumber = VERSION_BCD(02.00),
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
@ -75,7 +75,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), .TotalConfigurationSize = CPU_TO_LE16(sizeof(USB_Descriptor_Configuration_t)),
.TotalInterfaces = 1, .TotalInterfaces = 1,
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
@ -108,7 +108,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_IN_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_IN_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = AVRISP_DATA_EPSIZE, .EndpointSize = CPU_TO_LE16(AVRISP_DATA_EPSIZE),
.PollingIntervalMS = 0x0A .PollingIntervalMS = 0x0A
}, },
@ -118,7 +118,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_OUT_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_OUT_EPNUM),
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
.EndpointSize = AVRISP_DATA_EPSIZE, .EndpointSize = CPU_TO_LE16(AVRISP_DATA_EPSIZE),
.PollingIntervalMS = 0x0A .PollingIntervalMS = 0x0A
}, },
}; };
@ -142,7 +142,17 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = L"Dean Camera" .UnicodeString = {CPU_TO_LE16('D'),
CPU_TO_LE16('e'),
CPU_TO_LE16('a'),
CPU_TO_LE16('n'),
CPU_TO_LE16(' '),
CPU_TO_LE16('C'),
CPU_TO_LE16('a'),
CPU_TO_LE16('m'),
CPU_TO_LE16('e'),
CPU_TO_LE16('r'),
CPU_TO_LE16('a')}
}; };
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form, /** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
@ -153,7 +163,28 @@ const USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},
.UnicodeString = L"LUFA AVRISP MkII Clone" .UnicodeString = {CPU_TO_LE16('L'),
CPU_TO_LE16('U'),
CPU_TO_LE16('F'),
CPU_TO_LE16('A'),
CPU_TO_LE16(' '),
CPU_TO_LE16('A'),
CPU_TO_LE16('V'),
CPU_TO_LE16('R'),
CPU_TO_LE16('I'),
CPU_TO_LE16('S'),
CPU_TO_LE16('P'),
CPU_TO_LE16(' '),
CPU_TO_LE16('M'),
CPU_TO_LE16('k'),
CPU_TO_LE16('I'),
CPU_TO_LE16('I'),
CPU_TO_LE16(' '),
CPU_TO_LE16('C'),
CPU_TO_LE16('l'),
CPU_TO_LE16('o'),
CPU_TO_LE16('n'),
CPU_TO_LE16('e')}
}; };
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a /** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
@ -163,7 +194,19 @@ const USB_Descriptor_String_t PROGMEM SerialString =
{ {
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
.UnicodeString = L"0000A00128255" .UnicodeString = {CPU_TO_LE16('0'),
CPU_TO_LE16('0'),
CPU_TO_LE16('0'),
CPU_TO_LE16('0'),
CPU_TO_LE16('A'),
CPU_TO_LE16('0'),
CPU_TO_LE16('0'),
CPU_TO_LE16('1'),
CPU_TO_LE16('2'),
CPU_TO_LE16('8'),
CPU_TO_LE16('2'),
CPU_TO_LE16('5'),
CPU_TO_LE16('5')}
}; };
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"

@ -37,11 +37,18 @@
#define _DESCRIPTORS_H_ #define _DESCRIPTORS_H_
/* Includes: */ /* Includes: */
#include <avr/pgmspace.h> #include <LUFA/Common/Common.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include <avr/pgmspace.h>
#endif
/* Macros: */ /* Macros: */
#if (ARCH == ARCH_UC3) // TODO: FIXME
#define PROGMEM const
#endif
#if !defined(LIBUSB_DRIVER_COMPAT) #if !defined(LIBUSB_DRIVER_COMPAT)
/** Endpoint number of the AVRISP data OUT endpoint. */ /** Endpoint number of the AVRISP data OUT endpoint. */
#define AVRISP_DATA_OUT_EPNUM 2 #define AVRISP_DATA_OUT_EPNUM 2
@ -70,7 +77,7 @@
USB_Descriptor_Interface_t AVRISP_Interface; USB_Descriptor_Interface_t AVRISP_Interface;
USB_Descriptor_Endpoint_t AVRISP_DataInEndpoint; USB_Descriptor_Endpoint_t AVRISP_DataInEndpoint;
USB_Descriptor_Endpoint_t AVRISP_DataOutEndpoint; USB_Descriptor_Endpoint_t AVRISP_DataOutEndpoint;
} USB_Descriptor_Configuration_t; } ATTR_PACKED USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,

@ -52,7 +52,7 @@ void ISPProtocol_EnterISPMode(void)
uint8_t PollValue; uint8_t PollValue;
uint8_t PollIndex; uint8_t PollIndex;
uint8_t EnterProgBytes[4]; uint8_t EnterProgBytes[4];
} Enter_ISP_Params; } ATTR_PACKED Enter_ISP_Params;
Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL); Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL);
@ -107,7 +107,7 @@ void ISPProtocol_LeaveISPMode(void)
{ {
uint8_t PreDelayMS; uint8_t PreDelayMS;
uint8_t PostDelayMS; uint8_t PostDelayMS;
} Leave_ISP_Params; } ATTR_PACKED Leave_ISP_Params;
Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL); Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL);
@ -141,12 +141,12 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
uint8_t ProgrammingCommands[3]; uint8_t ProgrammingCommands[3];
uint8_t PollValue1; uint8_t PollValue1;
uint8_t PollValue2; uint8_t PollValue2;
uint8_t ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the uint8_t ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the
} Write_Memory_Params; // whole page and ACK the packet as fast as possible to prevent it from aborting } ATTR_PACKED Write_Memory_Params; // whole page and ACK the packet as fast as possible to prevent it from aborting
Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) - Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
sizeof(Write_Memory_Params.ProgData)), NULL); sizeof(Write_Memory_Params.ProgData)), NULL);
Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite); Write_Memory_Params.BytesToWrite = be16_to_cpu(Write_Memory_Params.BytesToWrite);
if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData)) if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
{ {
@ -286,10 +286,10 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
{ {
uint16_t BytesToRead; uint16_t BytesToRead;
uint8_t ReadMemoryCommand; uint8_t ReadMemoryCommand;
} Read_Memory_Params; } ATTR_PACKED Read_Memory_Params;
Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NULL); Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NULL);
Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead); Read_Memory_Params.BytesToRead = be16_to_cpu(Read_Memory_Params.BytesToRead);
Endpoint_ClearOUT(); Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@ -360,7 +360,7 @@ void ISPProtocol_ChipErase(void)
uint8_t EraseDelayMS; uint8_t EraseDelayMS;
uint8_t PollMethod; uint8_t PollMethod;
uint8_t EraseCommandBytes[4]; uint8_t EraseCommandBytes[4];
} Erase_Chip_Params; } ATTR_PACKED Erase_Chip_Params;
Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL); Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL);
@ -396,7 +396,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
{ {
uint8_t RetByte; uint8_t RetByte;
uint8_t ReadCommandBytes[4]; uint8_t ReadCommandBytes[4];
} Read_FuseLockSigOSCCAL_Params; } ATTR_PACKED Read_FuseLockSigOSCCAL_Params;
Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL); Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL);
@ -427,7 +427,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
struct struct
{ {
uint8_t WriteCommandBytes[4]; uint8_t WriteCommandBytes[4];
} Write_FuseLockSig_Params; } ATTR_PACKED Write_FuseLockSig_Params;
Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL); Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL);
@ -454,7 +454,7 @@ void ISPProtocol_SPIMulti(void)
uint8_t RxBytes; uint8_t RxBytes;
uint8_t RxStartAddr; uint8_t RxStartAddr;
uint8_t TxData[255]; uint8_t TxData[255];
} SPI_Multi_Params; } ATTR_PACKED SPI_Multi_Params;
Endpoint_Read_Stream_LE(&SPI_Multi_Params, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NULL); Endpoint_Read_Stream_LE(&SPI_Multi_Params, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NULL);
Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL); Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL);

@ -37,11 +37,15 @@
#define _ISP_PROTOCOL_ #define _ISP_PROTOCOL_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <util/delay.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include "../V2Protocol.h" #include "../V2Protocol.h"
/* Preprocessor Checks: */ /* Preprocessor Checks: */

@ -37,12 +37,19 @@
#define _ISP_TARGET_ #define _ISP_TARGET_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Peripheral/SPI.h>
#if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
#include <LUFA/Drivers/Peripheral/SPI.h> // TODO: FIXME
#endif
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include "../V2ProtocolParams.h" #include "../V2ProtocolParams.h"
@ -84,6 +91,7 @@
const uint8_t ReadMemCommand); const uint8_t ReadMemCommand);
/* Inline Functions: */ /* Inline Functions: */
#if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
/** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or /** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or
* software routines depending on the selected ISP speed. * software routines depending on the selected ISP speed.
* *
@ -124,6 +132,7 @@
else else
return ISPTarget_TransferSoftSPIByte(Byte); return ISPTarget_TransferSoftSPIByte(Byte);
} }
#endif
#endif #endif

@ -42,13 +42,17 @@ uint32_t CurrentAddress;
/** Flag to indicate that the next read/write operation must update the device's current extended FLASH address */ /** Flag to indicate that the next read/write operation must update the device's current extended FLASH address */
bool MustLoadExtendedAddress; bool MustLoadExtendedAddress;
/** Command timeout expiration flag. */
volatile bool TimeoutExpired;
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/** ISR to manage timeouts whilst processing a V2Protocol command */ /** ISR to manage timeouts whilst processing a V2Protocol command */
ISR(WDT_vect, ISR_BLOCK) ISR(WDT_vect, ISR_BLOCK)
{ {
TimeoutExpired = true; TimeoutExpired = true;
wdt_disable(); wdt_disable();
} }
#endif
/** Initialises the hardware and software associated with the V2 protocol command handling. */ /** Initialises the hardware and software associated with the V2 protocol command handling. */
void V2Protocol_Init(void) void V2Protocol_Init(void)
@ -75,10 +79,12 @@ void V2Protocol_ProcessCommand(void)
{ {
uint8_t V2Command = Endpoint_Read_8(); uint8_t V2Command = Endpoint_Read_8();
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Start the watchdog with timeout interrupt enabled to manage the timeout */ /* Start the watchdog with timeout interrupt enabled to manage the timeout */
TimeoutExpired = false; TimeoutExpired = false;
wdt_enable(WDTO_1S); wdt_enable(WDTO_1S);
WDTCSR |= (1 << WDIE); WDTCSR |= (1 << WDIE);
#endif
switch (V2Command) switch (V2Command)
{ {
@ -140,8 +146,10 @@ void V2Protocol_ProcessCommand(void)
break; break;
} }
#if (ARCH == ARCH_AVR8) // TODO: FIXME
/* Disable the timeout management watchdog timer */ /* Disable the timeout management watchdog timer */
wdt_disable(); wdt_disable();
#endif
Endpoint_WaitUntilReady(); Endpoint_WaitUntilReady();
Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);

@ -37,12 +37,17 @@
#define _V2_PROTOCOL_ #define _V2_PROTOCOL_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include "../Descriptors.h" #include "../Descriptors.h"
#include "V2ProtocolConstants.h" #include "V2ProtocolConstants.h"
#include "V2ProtocolParams.h" #include "V2ProtocolParams.h"
@ -69,15 +74,13 @@
/** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */ /** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */
#define COMMAND_TIMEOUT_TICKS 100 #define COMMAND_TIMEOUT_TICKS 100
/** Command timeout expiration flag, GPIOR for speed. */
#define TimeoutExpired GPIOR1
/** MUX mask for the VTARGET ADC channel number. */ /** MUX mask for the VTARGET ADC channel number. */
#define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL) #define VTARGET_ADC_CHANNEL_MASK ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL)
/* External Variables: */ /* External Variables: */
extern uint32_t CurrentAddress; extern uint32_t CurrentAddress;
extern bool MustLoadExtendedAddress; extern bool MustLoadExtendedAddress;
extern volatile bool TimeoutExpired;
/* Function Prototypes: */ /* Function Prototypes: */
void V2Protocol_Init(void); void V2Protocol_Init(void);

@ -73,6 +73,7 @@
#define STATUS_CONN_FAIL_SCK 0x04 #define STATUS_CONN_FAIL_SCK 0x04
#define STATUS_TGT_NOT_DETECTED 0x10 #define STATUS_TGT_NOT_DETECTED 0x10
#define STATUS_TGT_REVERSE_INSERTED 0x20 #define STATUS_TGT_REVERSE_INSERTED 0x20
#define STATUS_ANSWER_CKSUM_ERROR 0xB0
#define PARAM_BUILD_NUMBER_LOW 0x80 #define PARAM_BUILD_NUMBER_LOW 0x80
#define PARAM_BUILD_NUMBER_HIGH 0x81 #define PARAM_BUILD_NUMBER_HIGH 0x81

@ -37,7 +37,7 @@
#include "V2ProtocolParams.h" #include "V2ProtocolParams.h"
/* Non-Volatile Parameter Values for EEPROM storage */ /* Non-Volatile Parameter Values for EEPROM storage */
static uint8_t EEMEM EEPROM_Rest_Polarity = 0x00; static uint8_t EEMEM EEPROM_Reset_Polarity = 0x00;
/* Volatile Parameter Values for RAM storage */ /* Volatile Parameter Values for RAM storage */
static ParameterItem_t ParameterTable[] = static ParameterItem_t ParameterTable[] =
@ -88,7 +88,7 @@ static ParameterItem_t ParameterTable[] =
void V2Params_LoadNonVolatileParamValues(void) void V2Params_LoadNonVolatileParamValues(void)
{ {
/* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */ /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */
V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Rest_Polarity); V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Reset_Polarity);
} }
/** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as /** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as
@ -163,7 +163,7 @@ void V2Params_SetParameterValue(const uint8_t ParamID,
/* The target RESET line polarity is a non-volatile parameter, save to EEPROM when changed */ /* The target RESET line polarity is a non-volatile parameter, save to EEPROM when changed */
if (ParamID == PARAM_RESET_POLARITY) if (ParamID == PARAM_RESET_POLARITY)
eeprom_update_byte(&EEPROM_Rest_Polarity, Value); eeprom_update_byte(&EEPROM_Reset_Polarity, Value);
} }
/** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given /** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given

@ -37,15 +37,20 @@
#define _V2_PROTOCOL_PARAMS_ #define _V2_PROTOCOL_PARAMS_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <avr/eeprom.h>
#include <LUFA/Version.h> #include <LUFA/Version.h>
#if defined(ADC) #if defined(ADC)
#include <LUFA/Drivers/Peripheral/ADC.h> #include <LUFA/Drivers/Peripheral/ADC.h>
#endif #endif
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/eeprom.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include "V2Protocol.h" #include "V2Protocol.h"
#include "V2ProtocolConstants.h" #include "V2ProtocolConstants.h"
#include "ISP/ISPTarget.h" #include "ISP/ISPTarget.h"
@ -60,6 +65,12 @@
/** Total number of parameters in the parameter table */ /** Total number of parameters in the parameter table */
#define TABLE_PARAM_COUNT (sizeof(ParameterTable) / sizeof(ParameterTable[0])) #define TABLE_PARAM_COUNT (sizeof(ParameterTable) / sizeof(ParameterTable[0]))
#if (ARCH == ARCH_UC3) // TODO: FIXME
#define EEMEM
#define eeprom_read_byte(x) *x
#define eeprom_update_byte(x,y) *x=y
#endif
/* Type Defines: */ /* Type Defines: */
/** Type define for a parameter table entry indicating a PC readable or writable device parameter. */ /** Type define for a parameter table entry indicating a PC readable or writable device parameter. */
typedef struct typedef struct

@ -37,12 +37,17 @@
#define _TINY_NVM_ #define _TINY_NVM_
/* Includes: */ /* Includes: */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <LUFA/Common/Common.h> #include <LUFA/Common/Common.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/interrupt.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include <stdbool.h>
#include "XPROGProtocol.h" #include "XPROGProtocol.h"
#include "XPROGTarget.h" #include "XPROGTarget.h"

@ -37,12 +37,17 @@
#define _XMEGA_NVM_ #define _XMEGA_NVM_
/* Includes: */ /* Includes: */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <LUFA/Common/Common.h> #include <LUFA/Common/Common.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/interrupt.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include <stdbool.h>
#include "XPROGProtocol.h" #include "XPROGProtocol.h"
#include "XPROGTarget.h" #include "XPROGTarget.h"

@ -60,7 +60,7 @@ void XPROGProtocol_SetMode(void)
struct struct
{ {
uint8_t Protocol; uint8_t Protocol;
} SetMode_XPROG_Params; } ATTR_PACKED SetMode_XPROG_Params;
Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NULL); Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NULL);
@ -163,10 +163,10 @@ static void XPROGProtocol_Erase(void)
{ {
uint8_t MemoryType; uint8_t MemoryType;
uint32_t Address; uint32_t Address;
} Erase_XPROG_Params; } ATTR_PACKED Erase_XPROG_Params;
Endpoint_Read_Stream_LE(&Erase_XPROG_Params, sizeof(Erase_XPROG_Params), NULL); Endpoint_Read_Stream_LE(&Erase_XPROG_Params, sizeof(Erase_XPROG_Params), NULL);
Erase_XPROG_Params.Address = SwapEndian_32(Erase_XPROG_Params.Address); Erase_XPROG_Params.Address = be32_to_cpu(Erase_XPROG_Params.Address);
Endpoint_ClearOUT(); Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@ -242,12 +242,12 @@ static void XPROGProtocol_WriteMemory(void)
uint32_t Address; uint32_t Address;
uint16_t Length; uint16_t Length;
uint8_t ProgData[256]; uint8_t ProgData[256];
} WriteMemory_XPROG_Params; } ATTR_PACKED WriteMemory_XPROG_Params;
Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params, (sizeof(WriteMemory_XPROG_Params) - Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params, (sizeof(WriteMemory_XPROG_Params) -
sizeof(WriteMemory_XPROG_Params).ProgData), NULL); sizeof(WriteMemory_XPROG_Params).ProgData), NULL);
WriteMemory_XPROG_Params.Address = SwapEndian_32(WriteMemory_XPROG_Params.Address); WriteMemory_XPROG_Params.Address = be32_to_cpu(WriteMemory_XPROG_Params.Address);
WriteMemory_XPROG_Params.Length = SwapEndian_16(WriteMemory_XPROG_Params.Length); WriteMemory_XPROG_Params.Length = be16_to_cpu(WriteMemory_XPROG_Params.Length);
Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NULL); Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NULL);
// The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need // The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
@ -335,11 +335,11 @@ static void XPROGProtocol_ReadMemory(void)
uint8_t MemoryType; uint8_t MemoryType;
uint32_t Address; uint32_t Address;
uint16_t Length; uint16_t Length;
} ReadMemory_XPROG_Params; } ATTR_PACKED ReadMemory_XPROG_Params;
Endpoint_Read_Stream_LE(&ReadMemory_XPROG_Params, sizeof(ReadMemory_XPROG_Params), NULL); Endpoint_Read_Stream_LE(&ReadMemory_XPROG_Params, sizeof(ReadMemory_XPROG_Params), NULL);
ReadMemory_XPROG_Params.Address = SwapEndian_32(ReadMemory_XPROG_Params.Address); ReadMemory_XPROG_Params.Address = be32_to_cpu(ReadMemory_XPROG_Params.Address);
ReadMemory_XPROG_Params.Length = SwapEndian_16(ReadMemory_XPROG_Params.Length); ReadMemory_XPROG_Params.Length = be16_to_cpu(ReadMemory_XPROG_Params.Length);
Endpoint_ClearOUT(); Endpoint_ClearOUT();
Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@ -380,7 +380,7 @@ static void XPROGProtocol_ReadCRC(void)
struct struct
{ {
uint8_t CRCType; uint8_t CRCType;
} ReadCRC_XPROG_Params; } ATTR_PACKED ReadCRC_XPROG_Params;
Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NULL); Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NULL);

@ -37,12 +37,18 @@
#define _XPROG_PROTOCOL_ #define _XPROG_PROTOCOL_
/* Includes: */ /* Includes: */
#include <avr/io.h> #include <LUFA/Common/Common.h>
#include <util/delay.h>
#include <stdio.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include <stdbool.h>
#include <stdio.h>
#include "../V2Protocol.h" #include "../V2Protocol.h"
#include "XMEGANVM.h" #include "XMEGANVM.h"
#include "TINYNVM.h" #include "TINYNVM.h"

@ -46,18 +46,22 @@ void XPROGTarget_EnableTargetPDI(void)
{ {
IsSending = false; IsSending = false;
/* Set Tx and XCK as outputs, Rx as input */ #if (ARCH == ARCH_AVR8)
DDRD |= (1 << 5) | (1 << 3); /* Set Tx and XCK as outputs, Rx as input */
DDRD &= ~(1 << 2); DDRD |= (1 << 5) | (1 << 3);
DDRD &= ~(1 << 2);
/* Set DATA line high for at least 90ns to disable /RESET functionality */
PORTD |= (1 << 3); /* Set DATA line high for at least 90ns to disable /RESET functionality */
_delay_us(1); PORTD |= (1 << 3);
Delay_MS(1);
/* Set up the synchronous USART for XMEGA communications - 8 data bits, even parity, 2 stop bits */
UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1); /* Set up the synchronous USART for XMEGA communications - 8 data bits, even parity, 2 stop bits */
UCSR1B = (1 << TXEN1); UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1); UCSR1B = (1 << TXEN1);
UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
/* Send two IDLEs of 12 bits each to enable PDI interface (need at least 16 idle bits) */ /* Send two IDLEs of 12 bits each to enable PDI interface (need at least 16 idle bits) */
XPROGTarget_SendIdle(); XPROGTarget_SendIdle();
@ -69,19 +73,23 @@ void XPROGTarget_EnableTargetTPI(void)
{ {
IsSending = false; IsSending = false;
/* Set /RESET line low for at least 400ns to enable TPI functionality */ #if (ARCH == ARCH_AVR8)
AUX_LINE_DDR |= AUX_LINE_MASK; /* Set /RESET line low for at least 400ns to enable TPI functionality */
AUX_LINE_PORT &= ~AUX_LINE_MASK; AUX_LINE_DDR |= AUX_LINE_MASK;
_delay_us(1); AUX_LINE_PORT &= ~AUX_LINE_MASK;
Delay_MS(1);
/* Set Tx and XCK as outputs, Rx as input */ /* Set Tx and XCK as outputs, Rx as input */
DDRD |= (1 << 5) | (1 << 3); DDRD |= (1 << 5) | (1 << 3);
DDRD &= ~(1 << 2); DDRD &= ~(1 << 2);
/* Set up the synchronous USART for TINY communications - 8 data bits, even parity, 2 stop bits */ /* Set up the synchronous USART for TINY communications - 8 data bits, even parity, 2 stop bits */
UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1); UBRR1 = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
UCSR1B = (1 << TXEN1); UCSR1B = (1 << TXEN1);
UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1); UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
/* Send two IDLEs of 12 bits each to enable TPI interface (need at least 16 idle bits) */ /* Send two IDLEs of 12 bits each to enable TPI interface (need at least 16 idle bits) */
XPROGTarget_SendIdle(); XPROGTarget_SendIdle();
@ -94,14 +102,18 @@ void XPROGTarget_DisableTargetPDI(void)
/* Switch to Rx mode to ensure that all pending transmissions are complete */ /* Switch to Rx mode to ensure that all pending transmissions are complete */
XPROGTarget_SetRxMode(); XPROGTarget_SetRxMode();
/* Turn off receiver and transmitter of the USART, clear settings */ #if (ARCH == ARCH_AVR8)
UCSR1A = ((1 << TXC1) | (1 << RXC1)); /* Turn off receiver and transmitter of the USART, clear settings */
UCSR1B = 0; UCSR1A = ((1 << TXC1) | (1 << RXC1));
UCSR1C = 0; UCSR1B = 0;
UCSR1C = 0;
/* Tristate all pins */
DDRD &= ~((1 << 5) | (1 << 3)); /* Tristate all pins */
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2)); DDRD &= ~((1 << 5) | (1 << 3));
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
} }
/** Disables the target's TPI interface, exits programming mode and starts the target's application. */ /** Disables the target's TPI interface, exits programming mode and starts the target's application. */
@ -110,18 +122,22 @@ void XPROGTarget_DisableTargetTPI(void)
/* Switch to Rx mode to ensure that all pending transmissions are complete */ /* Switch to Rx mode to ensure that all pending transmissions are complete */
XPROGTarget_SetRxMode(); XPROGTarget_SetRxMode();
/* Turn off receiver and transmitter of the USART, clear settings */ #if (ARCH == ARCH_AVR8)
UCSR1A |= (1 << TXC1) | (1 << RXC1); /* Turn off receiver and transmitter of the USART, clear settings */
UCSR1B = 0; UCSR1A |= (1 << TXC1) | (1 << RXC1);
UCSR1C = 0; UCSR1B = 0;
UCSR1C = 0;
/* Set all USART lines as inputs, tristate */
DDRD &= ~((1 << 5) | (1 << 3)); /* Set all USART lines as inputs, tristate */
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2)); DDRD &= ~((1 << 5) | (1 << 3));
PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
/* Tristate target /RESET line */
AUX_LINE_DDR &= ~AUX_LINE_MASK; /* Tristate target /RESET line */
AUX_LINE_PORT &= ~AUX_LINE_MASK; AUX_LINE_DDR &= ~AUX_LINE_MASK;
AUX_LINE_PORT &= ~AUX_LINE_MASK;
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
} }
/** Sends a byte via the USART. /** Sends a byte via the USART.
@ -134,10 +150,14 @@ void XPROGTarget_SendByte(const uint8_t Byte)
if (!(IsSending)) if (!(IsSending))
XPROGTarget_SetTxMode(); XPROGTarget_SetTxMode();
/* Wait until there is space in the hardware Tx buffer before writing */ #if (ARCH == ARCH_AVR8)
while (!(UCSR1A & (1 << UDRE1))); /* Wait until there is space in the hardware Tx buffer before writing */
UCSR1A |= (1 << TXC1); while (!(UCSR1A & (1 << UDRE1)));
UDR1 = Byte; UCSR1A |= (1 << TXC1);
UDR1 = Byte;
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
} }
/** Receives a byte via the software USART, blocking until data is received. /** Receives a byte via the software USART, blocking until data is received.
@ -150,10 +170,15 @@ uint8_t XPROGTarget_ReceiveByte(void)
if (IsSending) if (IsSending)
XPROGTarget_SetRxMode(); XPROGTarget_SetRxMode();
/* Wait until a byte has been received before reading */ #if (ARCH == ARCH_AVR8)
while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired)); /* Wait until a byte has been received before reading */
while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired));
return UDR1; return UDR1;
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
return 0;
#endif
} }
/** Sends an IDLE via the USART to the attached target, consisting of a full frame of idle bits. */ /** Sends an IDLE via the USART to the attached target, consisting of a full frame of idle bits. */
@ -163,40 +188,52 @@ void XPROGTarget_SendIdle(void)
if (!(IsSending)) if (!(IsSending))
XPROGTarget_SetTxMode(); XPROGTarget_SetTxMode();
/* Need to do nothing for a full frame to send an IDLE */ #if (ARCH == ARCH_AVR8)
for (uint8_t i = 0; i < BITS_IN_USART_FRAME; i++) /* Need to do nothing for a full frame to send an IDLE */
{ for (uint8_t i = 0; i < BITS_IN_USART_FRAME; i++)
/* Wait for a full cycle of the clock */ {
while (PIND & (1 << 5)); /* Wait for a full cycle of the clock */
while (!(PIND & (1 << 5))); while (PIND & (1 << 5));
} while (!(PIND & (1 << 5)));
}
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
} }
static void XPROGTarget_SetTxMode(void) static void XPROGTarget_SetTxMode(void)
{ {
/* Wait for a full cycle of the clock */ #if (ARCH == ARCH_AVR8)
while (PIND & (1 << 5)); /* Wait for a full cycle of the clock */
while (!(PIND & (1 << 5))); while (PIND & (1 << 5));
while (!(PIND & (1 << 5)));
PORTD |= (1 << 3); PORTD |= (1 << 3);
DDRD |= (1 << 3); DDRD |= (1 << 3);
UCSR1B &= ~(1 << RXEN1); UCSR1B &= ~(1 << RXEN1);
UCSR1B |= (1 << TXEN1); UCSR1B |= (1 << TXEN1);
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
IsSending = true; IsSending = true;
} }
static void XPROGTarget_SetRxMode(void) static void XPROGTarget_SetRxMode(void)
{ {
while (!(UCSR1A & (1 << TXC1))); #if (ARCH == ARCH_AVR8)
UCSR1A |= (1 << TXC1); while (!(UCSR1A & (1 << TXC1)));
UCSR1A |= (1 << TXC1);
UCSR1B &= ~(1 << TXEN1);
UCSR1B |= (1 << RXEN1); UCSR1B &= ~(1 << TXEN1);
UCSR1B |= (1 << RXEN1);
DDRD &= ~(1 << 3);
PORTD &= ~(1 << 3); DDRD &= ~(1 << 3);
PORTD &= ~(1 << 3);
#elif (ARCH == ARCH_UC3)
// TODO: FIXME
#endif
IsSending = false; IsSending = false;
} }

@ -37,12 +37,15 @@
#define _XPROG_TARGET_ #define _XPROG_TARGET_
/* Includes: */ /* Includes: */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdbool.h>
#include <LUFA/Common/Common.h> #include <LUFA/Common/Common.h>
#if (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/interrupt.h>
#elif (ARCH == ARCH_UC3)
#include <avr32/io.h>
#endif
#include "../V2Protocol.h" #include "../V2Protocol.h"
#include "XPROGProtocol.h" #include "XPROGProtocol.h"

Loading…
Cancel
Save