From c1ad1298a5f2dd0ebe2d398248b89feb111a02f5 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 3 Dec 2011 00:48:23 +0100 Subject: import usb-device-mass-storage project --- usb-device-massstorage-project/Makefile | 322 +++ usb-device-massstorage-project/bin/.empty_dir | 0 ...massstorage-project-at91sam3u-ek-at91sam3u4.map | 2381 ++++++++++++++++++++ usb-device-massstorage-project/main.c | 1154 ++++++++++ usb-device-massstorage-project/obj/.empty_dir | 0 5 files changed, 3857 insertions(+) create mode 100644 usb-device-massstorage-project/Makefile create mode 100644 usb-device-massstorage-project/bin/.empty_dir create mode 100644 usb-device-massstorage-project/bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4.map create mode 100644 usb-device-massstorage-project/main.c create mode 100644 usb-device-massstorage-project/obj/.empty_dir (limited to 'usb-device-massstorage-project') diff --git a/usb-device-massstorage-project/Makefile b/usb-device-massstorage-project/Makefile new file mode 100644 index 0000000..6b26565 --- /dev/null +++ b/usb-device-massstorage-project/Makefile @@ -0,0 +1,322 @@ +# ---------------------------------------------------------------------------- +# ATMEL Microcontroller Software Support +# ---------------------------------------------------------------------------- +# Copyright (c) 2008, Atmel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the disclaimer below. +# +# Atmel's name may not be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE +# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +# Makefile for compiling usb-device-massstorage-project + +#------------------------------------------------------------------------------- +# User-modifiable options +#------------------------------------------------------------------------------- + +# Chip & board used for compilation +# (can be overriden by adding CHIP=chip and BOARD=board to the command-line) +CHIP = at91sam3u4 +BOARD = at91sam3u-ek + +# Trace level used for compilation +# (can be overriden by adding TRACE_LEVEL=#number to the command-line) +# TRACE_LEVEL_DEBUG 5 +# TRACE_LEVEL_INFO 4 +# TRACE_LEVEL_WARNING 3 +# TRACE_LEVEL_ERROR 2 +# TRACE_LEVEL_FATAL 1 +# TRACE_LEVEL_NO_TRACE 0 +TRACE_LEVEL = 3 + +# Optimization level, put in comment for debugging +OPTIMIZATION = -O0 + +# AT91 library directory +AT91LIB = ../../at91lib + +# External library +EXT_LIBS= ../external_libs + +# Output file basename +OUTPUT = usb-device-massstorage-project-$(BOARD)-$(CHIP) + +# Compile with chip specific features +include $(AT91LIB)/boards/$(BOARD)/$(CHIP)/chip.mak + +# Compile for all memories available on the board (this sets $(MEMORIES)) +include $(AT91LIB)/boards/$(BOARD)/board.mak + +# Output directories +BIN = bin +OBJ = obj + +#------------------------------------------------------------------------------- +# Tools +#------------------------------------------------------------------------------- + +# Tool suffix when cross-compiling +CROSS_COMPILE = arm-none-eabi- + +# Compilation tools +CC = $(CROSS_COMPILE)gcc +SIZE = $(CROSS_COMPILE)size +STRIP = $(CROSS_COMPILE)strip +OBJCOPY = $(CROSS_COMPILE)objcopy + +# Flags +INCLUDES += -I$(AT91LIB)/boards/$(BOARD) +INCLUDES += -I$(AT91LIB)/peripherals +INCLUDES += -I$(AT91LIB)/drivers +INCLUDES += -I$(AT91LIB)/memories +INCLUDES += -I$(AT91LIB) +INCLUDES += -I$(EXT_LIBS) + +ifeq ($(CHIP_CORE), cortexm3) +TARGET_OPTS = -mcpu=cortex-m3 -mthumb +else +TARGET_OPTS = +endif + +CFLAGS += $(TARGET_OPTS) +CFLAGS += -Wall -mlong-calls -ffunction-sections +CFLAGS += -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -DTRACE_LEVEL=$(TRACE_LEVEL) +ASFLAGS = $(TARGET_OPTS) -Wall -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D__ASSEMBLY__ +LDFLAGS = -g $(OPTIMIZATION) -nostartfiles $(TARGET_OPTS) -Wl,-Map=$(OUTPUT).map,--cref,--gc-sections + +ifdef ORIGIN_SD_PORT +CFLAGS += -DORIGIN_SD_PORT_$(ORIGIN_SD_PORT) +endif + +#------------------------------------------------------------------------------- +# Files +#------------------------------------------------------------------------------- + +# Objects built from C source files + +# at91lib/usb/common/core +VPATH += $(AT91LIB)/usb/common/core +C_OBJECTS += USBConfigurationDescriptor.o +C_OBJECTS += USBEndpointDescriptor.o +C_OBJECTS += USBFeatureRequest.o +C_OBJECTS += USBGenericDescriptor.o +C_OBJECTS += USBGenericRequest.o +C_OBJECTS += USBGetDescriptorRequest.o +C_OBJECTS += USBInterfaceRequest.o +C_OBJECTS += USBSetAddressRequest.o +C_OBJECTS += USBSetConfigurationRequest.o + +# at91lib/usb/device/core +VPATH += $(AT91LIB)/usb/device/core +#C_OBJECTS += USBD_OTGHS.o +#C_OBJECTS += USBD_UDP.o +C_OBJECTS += USBD_UDPHS.o +C_OBJECTS += USBDCallbacks_Initialized.o +#C_OBJECTS += USBDCallbacks_RequestReceived.o +C_OBJECTS += USBDCallbacks_Reset.o +#C_OBJECTS += USBDCallbacks_Resumed.o +#C_OBJECTS += USBDCallbacks_Suspended.o +C_OBJECTS += USBDDriver.o +C_OBJECTS += USBDDriverCb_IfSettingChanged.o +#C_OBJECTS += USBDDriverCb_CfgChanged.o + +# at91lib/usb/device/massstorage +VPATH += $(AT91LIB)/usb/device/massstorage +VPATH += $(AT91LIB)/usb/common/massstorage +C_OBJECTS += MSDDriver.o +C_OBJECTS += MSDDriverDescriptors.o +C_OBJECTS += MSDDStateMachine.o +C_OBJECTS += MSDLun.o +C_OBJECTS += SBCMethods.o + +# at91lib/utility +VPATH += $(AT91LIB)/utility +C_OBJECTS += led.o +C_OBJECTS += math.o +C_OBJECTS += stdio.o + +# at91lib/peripherals +PERIPH = $(AT91LIB)/peripherals +VPATH += $(PERIPH)/irq +VPATH += $(PERIPH)/dbgu +VPATH += $(PERIPH)/eefc +VPATH += $(PERIPH)/efc +VPATH += $(PERIPH)/pio +VPATH += $(PERIPH)/pmc +VPATH += $(PERIPH)/tc +VPATH += $(PERIPH)/mci +VPATH += $(PERIPH)/dma +VPATH += $(PERIPH)/hsmc4 +C_OBJECTS += dbgu.o +C_OBJECTS += pio.o +C_OBJECTS += pio_it.o +C_OBJECTS += pmc.o +C_OBJECTS += tc.o + +# at91lib/drivers +VPATH += $(AT91LIB)/drivers/dmad + +# at91lib/boards/at91xxx/ +VPATH += $(AT91LIB)/boards/$(BOARD) +VPATH += $(AT91LIB)/boards/$(BOARD)/$(CHIP) +C_OBJECTS += board_lowlevel.o +C_OBJECTS += trace.o +C_OBJECTS += board_memories.o + +# at91lib/memories +VPATH += $(AT91LIB)/memories +C_OBJECTS += Media.o + +# external_libs +VPATH += $(EXT_LIBS)/cmsis + +ifeq ($(CHIP_IP_MCI), MCI_DMA) +VPATH += $(AT91LIB)/memories/sdmmc +C_OBJECTS += sdmmc_mci.o +C_OBJECTS += MEDSdcard.o +C_OBJECTS += mci_hs.o +C_OBJECTS += dma.o +C_OBJECTS += dmad.o +endif + +ifeq ($(CHIP_IP_MCI), MCI_PDC) +VPATH += $(AT91LIB)/memories/sdmmc +C_OBJECTS += sdmmc_mci.o +C_OBJECTS += MEDSdcard.o +C_OBJECTS += mci.o +endif + +ifeq ($(CHIP_CORE), cortexm3) +C_OBJECTS += MEDRamDisk.o +else +C_OBJECTS += MEDSdram.o +C_OBJECTS += MEDDdram.o +endif + +# at91lib/memories/flash +VPATH += $(AT91LIB)/memories/flash + +ifneq ($(CHIP_CORE), cortexm3) +ifeq ($(CHIP_IP_EFC),EFC) +C_OBJECTS += efc.o +C_OBJECTS += flashd_efc.o +C_OBJECTS += MEDFlash.o +else ifeq ($(CHIP_IP_EFC),EEFC) +C_OBJECTS += eefc.o +C_OBJECTS += flashd_eefc.o +C_OBJECTS += MEDFlash.o +endif +endif + +# at91lib/memories/nandflash +#VPATH += $(AT91LIB)/memories/nandflash + +#C_OBJECTS += MEDNandFlash.o +#C_OBJECTS += EccNandFlash.o +##C_OBJECTS += SkipBlockNandFlash.o +#C_OBJECTS += NandFlashModel.o +#C_OBJECTS += NandFlashModelList.o +#C_OBJECTS += NandSpareScheme.o +#C_OBJECTS += ManagedNandFlash.o +#C_OBJECTS += MappedNandFlash.o +#C_OBJECTS += TranslatedNandFlash.o +#C_OBJECTS += math.o +#C_OBJECTS += hamming.o + +# Objects for chips with nfc +#ifeq ($(CHIP_IP_NAND), NAND_CTRL) +#C_OBJECTS += NfcRawNandFlash.o +#C_OBJECTS += hsmc4.o +#else +#C_OBJECTS += RawNandFlash.o +#endif + +#Objects for chips with HW ECC +ifeq ($(CHIP_IP_ECC), HW_ECC) +C_OBJECTS += hsmc4_ecc.o +endif + +# Individual objects for different chips +ifeq ($(CHIP_CORE), cortexm3) +VPATH += $(PERIPH)/systick + +C_OBJECTS += nvic.o +C_OBJECTS += exceptions.o +C_OBJECTS += board_cstartup_gnu.o +C_OBJECTS += core_cm3.o +C_OBJECTS += systick.o +else +VPATH += $(PERIPH)/cp15 +VPATH += $(PERIPH)/pit + +C_OBJECTS += aic.o +C_OBJECTS += cp15.o +C_OBJECTS += pit.o +endif + +# usb-device-massstorage-project +C_OBJECTS += main.o + +# Objects built from Assembly source files +ifneq ($(CHIP_CORE), cortexm3) +# at91lib/boards/at91xxx/ +ASM_OBJECTS += board_cstartup.o +# at91lib/peripherals +ASM_OBJECTS += cp15_asm.o +endif + +# Append OBJ and BIN directories to output filename +OUTPUT := $(BIN)/$(OUTPUT) + +#------------------------------------------------------------------------------- +# Rules +#------------------------------------------------------------------------------- + +all: $(BIN) $(OBJ) $(MEMORIES) + +$(BIN) $(OBJ): + mkdir $@ + +define RULES +C_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(C_OBJECTS)) +ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS)) + +$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1)) + $(CC) $(LDFLAGS) -T"$(AT91LIB)/boards/$(BOARD)/$(CHIP)/$$@.lds" -o $(OUTPUT)-$$@.elf $$^ + $(OBJCOPY) -O binary $(OUTPUT)-$$@.elf $(OUTPUT)-$$@.bin + $(SIZE) $$^ $(OUTPUT)-$$@.elf + +$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN) + $(CC) $(CFLAGS) -D$(1) -c -o $$@ $$< + +$$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN) + $(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$< + +debug_$(1): $(1) + perl ../resources/gdb/debug.pl $(OUTPUT)-$(1).elf + +endef + +$(foreach MEMORY, $(MEMORIES), $(eval $(call RULES,$(MEMORY)))) + +clean: + -rm -f $(OBJ)/*.o $(BIN)/*.bin $(BIN)/*.elf + diff --git a/usb-device-massstorage-project/bin/.empty_dir b/usb-device-massstorage-project/bin/.empty_dir new file mode 100644 index 0000000..e69de29 diff --git a/usb-device-massstorage-project/bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4.map b/usb-device-massstorage-project/bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4.map new file mode 100644 index 0000000..50eb7fe --- /dev/null +++ b/usb-device-massstorage-project/bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4.map @@ -0,0 +1,2381 @@ +Archive member included because of file (symbol) + +/usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + obj/flash_stdio.o (_impure_ptr) +/usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + obj/flash_board_memories.o (memset) + +Allocating common symbols +Common symbol size file + +medias 0xcc obj/flash_main.o +msdBuffer 0x1800 obj/flash_main.o +luns 0x120 obj/flash_main.o + +Discarded input sections + + .text 0x0000000000000000 0x0 obj/flash_USBConfigurationDescriptor.o + .data 0x0000000000000000 0x0 obj/flash_USBConfigurationDescriptor.o + .bss 0x0000000000000000 0x0 obj/flash_USBConfigurationDescriptor.o + .text.USBConfigurationDescriptor_GetNumInterfaces + 0x0000000000000000 0x18 obj/flash_USBConfigurationDescriptor.o + .text 0x0000000000000000 0x0 obj/flash_USBEndpointDescriptor.o + .data 0x0000000000000000 0x0 obj/flash_USBEndpointDescriptor.o + .bss 0x0000000000000000 0x0 obj/flash_USBEndpointDescriptor.o + .text.USBEndpointDescriptor_GetInterval + 0x0000000000000000 0x18 obj/flash_USBEndpointDescriptor.o + .text 0x0000000000000000 0x0 obj/flash_USBFeatureRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBFeatureRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBFeatureRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBGenericDescriptor.o + .data 0x0000000000000000 0x0 obj/flash_USBGenericDescriptor.o + .bss 0x0000000000000000 0x0 obj/flash_USBGenericDescriptor.o + .text 0x0000000000000000 0x0 obj/flash_USBGenericRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBGenericRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBGenericRequest.o + .text.USBGenericRequest_GetType + 0x0000000000000000 0x24 obj/flash_USBGenericRequest.o + .text.USBGenericRequest_GetDirection + 0x0000000000000000 0x2c obj/flash_USBGenericRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBGetDescriptorRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBGetDescriptorRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBGetDescriptorRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBInterfaceRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBInterfaceRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBInterfaceRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBSetAddressRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBSetAddressRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBSetAddressRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBSetConfigurationRequest.o + .data 0x0000000000000000 0x0 obj/flash_USBSetConfigurationRequest.o + .bss 0x0000000000000000 0x0 obj/flash_USBSetConfigurationRequest.o + .text 0x0000000000000000 0x0 obj/flash_USBD_UDPHS.o + .data 0x0000000000000000 0x0 obj/flash_USBD_UDPHS.o + .text.USBD_MblWrite + 0x0000000000000000 0x3b4 obj/flash_USBD_UDPHS.o + .text.USBD_MblReuse + 0x0000000000000000 0x17c obj/flash_USBD_UDPHS.o + .text.USBD_RemoteWakeUp + 0x0000000000000000 0x68 obj/flash_USBD_UDPHS.o + .text.USBD_ConfigureSpeed + 0x0000000000000000 0x54 obj/flash_USBD_UDPHS.o + .text 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Initialized.o + .data 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Initialized.o + .bss 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Initialized.o + .text 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Reset.o + .data 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Reset.o + .bss 0x0000000000000000 0x0 obj/flash_USBDCallbacks_Reset.o + .text 0x0000000000000000 0x0 obj/flash_USBDDriver.o + .data 0x0000000000000000 0x0 obj/flash_USBDDriver.o + .text.USBDDriver_IsRemoteWakeUpEnabled + 0x0000000000000000 0x18 obj/flash_USBDDriver.o + .text 0x0000000000000000 0x0 obj/flash_USBDDriverCb_IfSettingChanged.o + .data 0x0000000000000000 0x0 obj/flash_USBDDriverCb_IfSettingChanged.o + .bss 0x0000000000000000 0x0 obj/flash_USBDDriverCb_IfSettingChanged.o + .text 0x0000000000000000 0x0 obj/flash_MSDDriver.o + .data 0x0000000000000000 0x0 obj/flash_MSDDriver.o + .text.MSDDriver_RemoteWakeUp + 0x0000000000000000 0x3c obj/flash_MSDDriver.o + .text 0x0000000000000000 0x0 obj/flash_MSDDriverDescriptors.o + .bss 0x0000000000000000 0x0 obj/flash_MSDDriverDescriptors.o + .text 0x0000000000000000 0x0 obj/flash_MSDDStateMachine.o + .data 0x0000000000000000 0x0 obj/flash_MSDDStateMachine.o + .bss 0x0000000000000000 0x0 obj/flash_MSDDStateMachine.o + .text 0x0000000000000000 0x0 obj/flash_MSDLun.o + .bss 0x0000000000000000 0x0 obj/flash_MSDLun.o + .text 0x0000000000000000 0x0 obj/flash_SBCMethods.o + .data 0x0000000000000000 0x0 obj/flash_SBCMethods.o + .bss 0x0000000000000000 0x0 obj/flash_SBCMethods.o + .text 0x0000000000000000 0x0 obj/flash_led.o + .data 0x0000000000000000 0x0 obj/flash_led.o + .bss 0x0000000000000000 0x0 obj/flash_led.o + .text.LED_Toggle + 0x0000000000000000 0x88 obj/flash_led.o + .text 0x0000000000000000 0x0 obj/flash_math.o + .data 0x0000000000000000 0x0 obj/flash_math.o + .bss 0x0000000000000000 0x0 obj/flash_math.o + .text.min 0x0000000000000000 0x24 obj/flash_math.o + .text.absv 0x0000000000000000 0x24 obj/flash_math.o + .text.power 0x0000000000000000 0x38 obj/flash_math.o + .text 0x0000000000000000 0x0 obj/flash_stdio.o + .data 0x0000000000000000 0x428 obj/flash_stdio.o + .bss 0x0000000000000000 0x0 obj/flash_stdio.o + .text.snprintf + 0x0000000000000000 0x3c obj/flash_stdio.o + .text.fprintf 0x0000000000000000 0x38 obj/flash_stdio.o + .text.sprintf 0x0000000000000000 0x38 obj/flash_stdio.o + .text.puts 0x0000000000000000 0x30 obj/flash_stdio.o + .text 0x0000000000000000 0x0 obj/flash_dbgu.o + .data 0x0000000000000000 0x0 obj/flash_dbgu.o + .bss 0x0000000000000000 0x0 obj/flash_dbgu.o + .text.DBGU_IsRxReady + 0x0000000000000000 0x1c obj/flash_dbgu.o + .text.DBGU_GetChar + 0x0000000000000000 0x2c obj/flash_dbgu.o + .text 0x0000000000000000 0x0 obj/flash_pio.o + .data 0x0000000000000000 0x0 obj/flash_pio.o + .bss 0x0000000000000000 0x0 obj/flash_pio.o + .text.PIO_GetOutputDataStatus + 0x0000000000000000 0x30 obj/flash_pio.o + .text 0x0000000000000000 0x0 obj/flash_pio_it.o + .data 0x0000000000000000 0x0 obj/flash_pio_it.o + .text.PIO_DisableIt + 0x0000000000000000 0x44 obj/flash_pio_it.o + .text 0x0000000000000000 0x0 obj/flash_pmc.o + .data 0x0000000000000000 0x0 obj/flash_pmc.o + .bss 0x0000000000000000 0x0 obj/flash_pmc.o + .text.PMC_DisableProcessorClock + 0x0000000000000000 0x2c obj/flash_pmc.o + .rodata 0x0000000000000000 0x54 obj/flash_pmc.o + .text.PMC_EnablePeripheral + 0x0000000000000000 0x84 obj/flash_pmc.o + .text.PMC_DisablePeripheral + 0x0000000000000000 0x84 obj/flash_pmc.o + .text.PMC_EnableAllPeripherals + 0x0000000000000000 0x3c obj/flash_pmc.o + .text.PMC_DisableAllPeripherals + 0x0000000000000000 0x34 obj/flash_pmc.o + .text.PMC_IsAllPeriphEnabled + 0x0000000000000000 0x28 obj/flash_pmc.o + .text.PMC_IsPeriphEnabled + 0x0000000000000000 0x2c obj/flash_pmc.o + .text.PMC_CPUInIdleMode + 0x0000000000000000 0x10 obj/flash_pmc.o + .text 0x0000000000000000 0x0 obj/flash_tc.o + .data 0x0000000000000000 0x0 obj/flash_tc.o + .bss 0x0000000000000000 0x0 obj/flash_tc.o + .text.TC_Stop 0x0000000000000000 0x1c obj/flash_tc.o + .text 0x0000000000000000 0x0 obj/flash_board_lowlevel.o + .data 0x0000000000000000 0x0 obj/flash_board_lowlevel.o + .bss 0x0000000000000000 0x0 obj/flash_board_lowlevel.o + .text.SetFlashWaitState + 0x0000000000000000 0x3c obj/flash_board_lowlevel.o + .text 0x0000000000000000 0x0 obj/flash_trace.o + .data 0x0000000000000000 0x0 obj/flash_trace.o + .bss 0x0000000000000000 0x0 obj/flash_trace.o + .text.putchar 0x0000000000000000 0x30 obj/flash_trace.o + .text.PrintChar + 0x0000000000000000 0x44 obj/flash_trace.o + .rodata 0x0000000000000000 0xdc obj/flash_trace.o + .text.TRACE_DumpFrame + 0x0000000000000000 0x58 obj/flash_trace.o + .text.TRACE_DumpMemory + 0x0000000000000000 0x1e8 obj/flash_trace.o + .text.TRACE_GetInteger + 0x0000000000000000 0xcc obj/flash_trace.o + .text.TRACE_GetIntegerMinMax + 0x0000000000000000 0x84 obj/flash_trace.o + .text.TRACE_GetHexa32 + 0x0000000000000000 0xe0 obj/flash_trace.o + .text 0x0000000000000000 0x0 obj/flash_board_memories.o + .data 0x0000000000000000 0x0 obj/flash_board_memories.o + .bss 0x0000000000000000 0x0 obj/flash_board_memories.o + .text.BOARD_ConfigureNandFlash + 0x0000000000000000 0x88 obj/flash_board_memories.o + .text.BOARD_ConfigurePsram + 0x0000000000000000 0x2b8 obj/flash_board_memories.o + .text 0x0000000000000000 0x0 obj/flash_Media.o + .data 0x0000000000000000 0x0 obj/flash_Media.o + .text.MED_Handler + 0x0000000000000000 0x20 obj/flash_Media.o + .text.MED_HandleAll + 0x0000000000000000 0x4c obj/flash_Media.o + .text 0x0000000000000000 0x0 obj/flash_sdmmc_mci.o + .bss 0x0000000000000000 0x0 obj/flash_sdmmc_mci.o + .text.DecodeR1 + 0x0000000000000000 0x14 obj/flash_sdmmc_mci.o + .text.DecodeR2 + 0x0000000000000000 0x14 obj/flash_sdmmc_mci.o + .text.Cmd53 0x0000000000000000 0xec obj/flash_sdmmc_mci.o + .text.MoveToTranState + 0x0000000000000000 0xec obj/flash_sdmmc_mci.o + .text.SdMmcSwitchHsMode + 0x0000000000000000 0x230 obj/flash_sdmmc_mci.o + .text.SdioFindTuples + 0x0000000000000000 0xc8 obj/flash_sdmmc_mci.o + .text.SDIO_ReadDirect + 0x0000000000000000 0xc4 obj/flash_sdmmc_mci.o + .text.SDIO_WriteDirect + 0x0000000000000000 0x80 obj/flash_sdmmc_mci.o + .text.SDIO_ReadBytes + 0x0000000000000000 0xa8 obj/flash_sdmmc_mci.o + .text.SDIO_WriteBytes + 0x0000000000000000 0xa8 obj/flash_sdmmc_mci.o + .text.SD_ReadBlock + 0x0000000000000000 0x14c obj/flash_sdmmc_mci.o + .text.SD_WriteBlock + 0x0000000000000000 0x14c obj/flash_sdmmc_mci.o + .text.SD_Stop 0x0000000000000000 0x78 obj/flash_sdmmc_mci.o + .text.SD_HighSpeedMode + 0x0000000000000000 0xc4 obj/flash_sdmmc_mci.o + .text.SD_BusWidth + 0x0000000000000000 0x1c obj/flash_sdmmc_mci.o + .text.MMC_GetTotalSizeKB + 0x0000000000000000 0x6c obj/flash_sdmmc_mci.o + .text.MMC_GetBootSizeKB + 0x0000000000000000 0x78 obj/flash_sdmmc_mci.o + .text.SDIO_DisplayCardInformation + 0x0000000000000000 0x280 obj/flash_sdmmc_mci.o + .text.SD_DisplayRegisterCID + 0x0000000000000000 0x28 obj/flash_sdmmc_mci.o + .text.SD_DisplayRegisterCSD + 0x0000000000000000 0x28 obj/flash_sdmmc_mci.o + .text.SD_DisplayRegisterECSD + 0x0000000000000000 0x34 obj/flash_sdmmc_mci.o + .text.SD_DisplayRegisterSCR + 0x0000000000000000 0x28 obj/flash_sdmmc_mci.o + .text.SD_DisplaySdStatus + 0x0000000000000000 0x38 obj/flash_sdmmc_mci.o + .text 0x0000000000000000 0x0 obj/flash_MEDSdcard.o + .data 0x0000000000000000 0x0 obj/flash_MEDSdcard.o + .text.MEDSdcard_Read + 0x0000000000000000 0xb0 obj/flash_MEDSdcard.o + .text.MEDSdcard_Write + 0x0000000000000000 0xb8 obj/flash_MEDSdcard.o + .text.MEDSdcard_Initialize + 0x0000000000000000 0x234 obj/flash_MEDSdcard.o + .text.MEDSdcard_EraseAll + 0x0000000000000000 0xd8 obj/flash_MEDSdcard.o + .text.MEDSdcard_EraseBlock + 0x0000000000000000 0x98 obj/flash_MEDSdcard.o + .text.MEDSdcard_GetDriver + 0x0000000000000000 0x34 obj/flash_MEDSdcard.o + .text 0x0000000000000000 0x0 obj/flash_mci_hs.o + .text.MCI_Enable + 0x0000000000000000 0xa4 obj/flash_mci_hs.o + .text.MCI_Close + 0x0000000000000000 0x90 obj/flash_mci_hs.o + .text.MCI_GetSpeed + 0x0000000000000000 0xb8 obj/flash_mci_hs.o + .text.MCI_CheckBusy + 0x0000000000000000 0x7c obj/flash_mci_hs.o + .text.MCI_FifoTransfer + 0x0000000000000000 0x1c obj/flash_mci_hs.o + .text 0x0000000000000000 0x0 obj/flash_dma.o + .data 0x0000000000000000 0x0 obj/flash_dma.o + .bss 0x0000000000000000 0x0 obj/flash_dma.o + .text.DMA_Config + 0x0000000000000000 0x20 obj/flash_dma.o + .text.DMA_Disable + 0x0000000000000000 0x18 obj/flash_dma.o + .text.DMA_GetMaskedStatus + 0x0000000000000000 0x30 obj/flash_dma.o + .text.DMA_EnableChannels + 0x0000000000000000 0x20 obj/flash_dma.o + .text.DMA_DisableChannels + 0x0000000000000000 0x20 obj/flash_dma.o + .text.DMA_SetFlowControl + 0x0000000000000000 0xc0 obj/flash_dma.o + .text 0x0000000000000000 0x0 obj/flash_dmad.o + .data 0x0000000000000000 0x0 obj/flash_dmad.o + .text.DMAD_Configure_Buffer + 0x0000000000000000 0xac obj/flash_dmad.o + .text.DMAD_Configure_TransferController + 0x0000000000000000 0x9c obj/flash_dmad.o + .text.DMAD_BufferTransfer + 0x0000000000000000 0xe0 obj/flash_dmad.o + .text.DMAD_IsFinished + 0x0000000000000000 0x80 obj/flash_dmad.o + .text 0x0000000000000000 0x0 obj/flash_MEDRamDisk.o + .data 0x0000000000000000 0x0 obj/flash_MEDRamDisk.o + .bss 0x0000000000000000 0x0 obj/flash_MEDRamDisk.o + .text.AlignedCopy + 0x0000000000000000 0x70 obj/flash_MEDRamDisk.o + .text.UnalignedCopy + 0x0000000000000000 0x44 obj/flash_MEDRamDisk.o + .rodata 0x0000000000000000 0x98 obj/flash_MEDRamDisk.o + .text.MEDRamDisk_Read + 0x0000000000000000 0xe4 obj/flash_MEDRamDisk.o + .text.MEDRamDisk_Write + 0x0000000000000000 0xf0 obj/flash_MEDRamDisk.o + .text.MEDRamDisk_Initialize + 0x0000000000000000 0x178 obj/flash_MEDRamDisk.o + .text 0x0000000000000000 0x0 obj/flash_nvic.o + .data 0x0000000000000000 0x0 obj/flash_nvic.o + .bss 0x0000000000000000 0x0 obj/flash_nvic.o + .text.NVIC_SetPendingIRQ + 0x0000000000000000 0x3c obj/flash_nvic.o + .text.IRQ_DisableIT + 0x0000000000000000 0x24 obj/flash_nvic.o + .text.NVIC_SetPending + 0x0000000000000000 0x24 obj/flash_nvic.o + .text.NVIC_ClrPending + 0x0000000000000000 0x24 obj/flash_nvic.o + .text.NVIC_Swi + 0x0000000000000000 0x1c obj/flash_nvic.o + .text 0x0000000000000000 0x0 obj/flash_exceptions.o + .data 0x0000000000000000 0x0 obj/flash_exceptions.o + .bss 0x0000000000000000 0x0 obj/flash_exceptions.o + .text.SYS_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.PIOA_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.PIOB_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.PIOC_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.MCI0_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.TC0_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text.USBD_IrqHandler + 0x0000000000000000 0x8 obj/flash_exceptions.o + .text 0x0000000000000000 0x0 obj/flash_board_cstartup_gnu.o + .data 0x0000000000000000 0x0 obj/flash_board_cstartup_gnu.o + .bss 0x0000000000000000 0x0 obj/flash_board_cstartup_gnu.o + .text 0x0000000000000000 0x0 obj/flash_core_cm3.o + .data 0x0000000000000000 0x0 obj/flash_core_cm3.o + .bss 0x0000000000000000 0x0 obj/flash_core_cm3.o + .text.__get_PSP + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_PSP + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text.__get_MSP + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_MSP + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text.__get_BASEPRI + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_BASEPRI + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text.__get_PRIMASK + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_PRIMASK + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text.__get_FAULTMASK + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_FAULTMASK + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text.__REV 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__REV16 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__REVSH 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__RBIT 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__LDREXB + 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__LDREXH + 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__LDREXW + 0x0000000000000000 0x24 obj/flash_core_cm3.o + .text.__STREXB + 0x0000000000000000 0x2c obj/flash_core_cm3.o + .text.__STREXH + 0x0000000000000000 0x2c obj/flash_core_cm3.o + .text.__STREXW + 0x0000000000000000 0x28 obj/flash_core_cm3.o + .text.__get_CONTROL + 0x0000000000000000 0x20 obj/flash_core_cm3.o + .text.__set_CONTROL + 0x0000000000000000 0x18 obj/flash_core_cm3.o + .text 0x0000000000000000 0x0 obj/flash_systick.o + .data 0x0000000000000000 0x0 obj/flash_systick.o + .bss 0x0000000000000000 0x0 obj/flash_systick.o + .text.SysTick_Configure + 0x0000000000000000 0x58 obj/flash_systick.o + .text 0x0000000000000000 0x0 obj/flash_main.o + .text.ISR_Media + 0x0000000000000000 0x28 obj/flash_main.o + .text 0x0000000000000000 0x0 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .rodata 0x0000000000000000 0x4 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +Memory Configuration + +Name Origin Length Attributes +sram0 0x0000000020000100 0x0000000000007f00 w !xr +sram1 0x0000000020080000 0x0000000000004000 w !xr +flash0 0x0000000000080000 0x0000000000020000 w !xr +flash1 0x0000000000100000 0x0000000000020000 w !xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD obj/flash_USBConfigurationDescriptor.o +LOAD obj/flash_USBEndpointDescriptor.o +LOAD obj/flash_USBFeatureRequest.o +LOAD obj/flash_USBGenericDescriptor.o +LOAD obj/flash_USBGenericRequest.o +LOAD obj/flash_USBGetDescriptorRequest.o +LOAD obj/flash_USBInterfaceRequest.o +LOAD obj/flash_USBSetAddressRequest.o +LOAD obj/flash_USBSetConfigurationRequest.o +LOAD obj/flash_USBD_UDPHS.o +LOAD obj/flash_USBDCallbacks_Initialized.o +LOAD obj/flash_USBDCallbacks_Reset.o +LOAD obj/flash_USBDDriver.o +LOAD obj/flash_USBDDriverCb_IfSettingChanged.o +LOAD obj/flash_MSDDriver.o +LOAD obj/flash_MSDDriverDescriptors.o +LOAD obj/flash_MSDDStateMachine.o +LOAD obj/flash_MSDLun.o +LOAD obj/flash_SBCMethods.o +LOAD obj/flash_led.o +LOAD obj/flash_math.o +LOAD obj/flash_stdio.o +LOAD obj/flash_dbgu.o +LOAD obj/flash_pio.o +LOAD obj/flash_pio_it.o +LOAD obj/flash_pmc.o +LOAD obj/flash_tc.o +LOAD obj/flash_board_lowlevel.o +LOAD obj/flash_trace.o +LOAD obj/flash_board_memories.o +LOAD obj/flash_Media.o +LOAD obj/flash_sdmmc_mci.o +LOAD obj/flash_MEDSdcard.o +LOAD obj/flash_mci_hs.o +LOAD obj/flash_dma.o +LOAD obj/flash_dmad.o +LOAD obj/flash_MEDRamDisk.o +LOAD obj/flash_nvic.o +LOAD obj/flash_exceptions.o +LOAD obj/flash_board_cstartup_gnu.o +LOAD obj/flash_core_cm3.o +LOAD obj/flash_systick.o +LOAD obj/flash_main.o +START GROUP +LOAD /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/thumb/libgcc.a +LOAD /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a +LOAD /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libc.a +END GROUP + 0x0000000020000000 _vect_start = 0x20000000 + +.fixed 0x0000000000080000 0xde80 + 0x0000000000080000 . = ALIGN (0x4) + 0x0000000000080000 _sfixed = . + *(.vectors) + .vectors 0x0000000000080000 0xbc obj/flash_board_cstartup_gnu.o + 0x0000000000080000 exception_table + *(.text*) + .text.USBConfigurationDescriptor_GetTotalLength + 0x00000000000800bc 0x24 obj/flash_USBConfigurationDescriptor.o + 0x00000000000800bc USBConfigurationDescriptor_GetTotalLength + .text.USBConfigurationDescriptor_IsSelfPowered + 0x00000000000800e0 0x2c obj/flash_USBConfigurationDescriptor.o + 0x00000000000800e0 USBConfigurationDescriptor_IsSelfPowered + .text.USBConfigurationDescriptor_Parse + 0x000000000008010c 0xec obj/flash_USBConfigurationDescriptor.o + 0x000000000008010c USBConfigurationDescriptor_Parse + .text.USBEndpointDescriptor_GetNumber + 0x00000000000801f8 0x20 obj/flash_USBEndpointDescriptor.o + 0x00000000000801f8 USBEndpointDescriptor_GetNumber + .text.USBEndpointDescriptor_GetDirection + 0x0000000000080218 0x2c obj/flash_USBEndpointDescriptor.o + 0x0000000000080218 USBEndpointDescriptor_GetDirection + .text.USBEndpointDescriptor_GetType + 0x0000000000080244 0x20 obj/flash_USBEndpointDescriptor.o + 0x0000000000080244 USBEndpointDescriptor_GetType + .text.USBEndpointDescriptor_GetMaxPacketSize + 0x0000000000080264 0x24 obj/flash_USBEndpointDescriptor.o + 0x0000000000080264 USBEndpointDescriptor_GetMaxPacketSize + .text.USBFeatureRequest_GetFeatureSelector + 0x0000000000080288 0x24 obj/flash_USBFeatureRequest.o + 0x0000000000080288 USBFeatureRequest_GetFeatureSelector + .text.USBFeatureRequest_GetTestSelector + 0x00000000000802ac 0x28 obj/flash_USBFeatureRequest.o + 0x00000000000802ac USBFeatureRequest_GetTestSelector + .text.USBGenericDescriptor_GetLength + 0x00000000000802d4 0x18 obj/flash_USBGenericDescriptor.o + 0x00000000000802d4 USBGenericDescriptor_GetLength + .text.USBGenericDescriptor_GetType + 0x00000000000802ec 0x18 obj/flash_USBGenericDescriptor.o + 0x00000000000802ec USBGenericDescriptor_GetType + .text.USBGenericDescriptor_GetNextDescriptor + 0x0000000000080304 0x24 obj/flash_USBGenericDescriptor.o + 0x0000000000080304 USBGenericDescriptor_GetNextDescriptor + .text.USBGenericRequest_GetRequest + 0x0000000000080328 0x18 obj/flash_USBGenericRequest.o + 0x0000000000080328 USBGenericRequest_GetRequest + .text.USBGenericRequest_GetValue + 0x0000000000080340 0x18 obj/flash_USBGenericRequest.o + 0x0000000000080340 USBGenericRequest_GetValue + .text.USBGenericRequest_GetIndex + 0x0000000000080358 0x18 obj/flash_USBGenericRequest.o + 0x0000000000080358 USBGenericRequest_GetIndex + .text.USBGenericRequest_GetLength + 0x0000000000080370 0x18 obj/flash_USBGenericRequest.o + 0x0000000000080370 USBGenericRequest_GetLength + .text.USBGenericRequest_GetEndpointNumber + 0x0000000000080388 0x28 obj/flash_USBGenericRequest.o + 0x0000000000080388 USBGenericRequest_GetEndpointNumber + .text.USBGenericRequest_GetRecipient + 0x00000000000803b0 0x20 obj/flash_USBGenericRequest.o + 0x00000000000803b0 USBGenericRequest_GetRecipient + .text.USBGetDescriptorRequest_GetDescriptorType + 0x00000000000803d0 0x28 obj/flash_USBGetDescriptorRequest.o + 0x00000000000803d0 USBGetDescriptorRequest_GetDescriptorType + .text.USBGetDescriptorRequest_GetDescriptorIndex + 0x00000000000803f8 0x24 obj/flash_USBGetDescriptorRequest.o + 0x00000000000803f8 USBGetDescriptorRequest_GetDescriptorIndex + .text.USBInterfaceRequest_GetInterface + 0x000000000008041c 0x24 obj/flash_USBInterfaceRequest.o + 0x000000000008041c USBInterfaceRequest_GetInterface + .text.USBInterfaceRequest_GetAlternateSetting + 0x0000000000080440 0x24 obj/flash_USBInterfaceRequest.o + 0x0000000000080440 USBInterfaceRequest_GetAlternateSetting + .text.USBSetAddressRequest_GetAddress + 0x0000000000080464 0x28 obj/flash_USBSetAddressRequest.o + 0x0000000000080464 USBSetAddressRequest_GetAddress + .text.USBSetConfigurationRequest_GetConfiguration + 0x000000000008048c 0x24 obj/flash_USBSetConfigurationRequest.o + 0x000000000008048c USBSetConfigurationRequest_GetConfiguration + .text.UDPHS_DisableBIAS + 0x00000000000804b0 0x24 obj/flash_USBD_UDPHS.o + .text.UDPHS_EnableBIAS + 0x00000000000804d4 0x28 obj/flash_USBD_UDPHS.o + .text.UDPHS_EnablePeripheral + 0x00000000000804fc 0x18 obj/flash_USBD_UDPHS.o + .text.UDPHS_EnableUsbClock + 0x0000000000080514 0x44 obj/flash_USBD_UDPHS.o + .text.UDPHS_DisableUsbClock + 0x0000000000080558 0x30 obj/flash_USBD_UDPHS.o + .text.UDPHS_EndOfTransfer + 0x0000000000080588 0x124 obj/flash_USBD_UDPHS.o + .text.UDPHS_ClearRxFlag + 0x00000000000806ac 0x30 obj/flash_USBD_UDPHS.o + .text.UDPHS_MblUpdate + 0x00000000000806dc 0xc4 obj/flash_USBD_UDPHS.o + .text.UDPHS_MblWriteFifo + 0x00000000000807a0 0x1f0 obj/flash_USBD_UDPHS.o + .text.UDPHS_WritePayload + 0x0000000000080990 0xa4 obj/flash_USBD_UDPHS.o + .text.UDPHS_ReadPayload + 0x0000000000080a34 0xb4 obj/flash_USBD_UDPHS.o + .text.UDPHS_ReadRequest + 0x0000000000080ae8 0x44 obj/flash_USBD_UDPHS.o + .text.UDPHS_ResetEndpoints + 0x0000000000080b2c 0x88 obj/flash_USBD_UDPHS.o + .text.UDPHS_DisableEndpoints + 0x0000000000080bb4 0x4c obj/flash_USBD_UDPHS.o + .text.UDPHS_EndpointHandler + 0x0000000000080c00 0x4e4 obj/flash_USBD_UDPHS.o + .text.UDPHS_DmaHandler + 0x00000000000810e4 0x3cc obj/flash_USBD_UDPHS.o + .text.USBD_IrqHandler + 0x00000000000814b0 0x2d0 obj/flash_USBD_UDPHS.o + 0x00000000000814b0 USBD_IrqHandler + .text.USBD_ConfigureEndpoint + 0x0000000000081780 0x3c4 obj/flash_USBD_UDPHS.o + 0x0000000000081780 USBD_ConfigureEndpoint + .text.USBD_Write + 0x0000000000081b44 0x22c obj/flash_USBD_UDPHS.o + 0x0000000000081b44 USBD_Write + .text.USBD_Read + 0x0000000000081d70 0x1c4 obj/flash_USBD_UDPHS.o + 0x0000000000081d70 USBD_Read + .text.USBD_Halt + 0x0000000000081f34 0xd0 obj/flash_USBD_UDPHS.o + 0x0000000000081f34 USBD_Halt + .text.USBD_Unhalt + 0x0000000000082004 0x68 obj/flash_USBD_UDPHS.o + 0x0000000000082004 USBD_Unhalt + .text.USBD_IsHalted + 0x000000000008206c 0x40 obj/flash_USBD_UDPHS.o + 0x000000000008206c USBD_IsHalted + .text.USBD_IsHighSpeed + 0x00000000000820ac 0x34 obj/flash_USBD_UDPHS.o + 0x00000000000820ac USBD_IsHighSpeed + .text.USBD_Stall + 0x00000000000820e0 0x6c obj/flash_USBD_UDPHS.o + 0x00000000000820e0 USBD_Stall + .text.USBD_SetAddress + 0x000000000008214c 0x70 obj/flash_USBD_UDPHS.o + 0x000000000008214c USBD_SetAddress + .text.USBD_SetConfiguration + 0x00000000000821bc 0x40 obj/flash_USBD_UDPHS.o + 0x00000000000821bc USBD_SetConfiguration + .text.USBD_Connect + 0x00000000000821fc 0x3c obj/flash_USBD_UDPHS.o + 0x00000000000821fc USBD_Connect + .text.USBD_Disconnect + 0x0000000000082238 0x74 obj/flash_USBD_UDPHS.o + 0x0000000000082238 USBD_Disconnect + .text.USBD_Test + 0x00000000000822ac 0x16c obj/flash_USBD_UDPHS.o + 0x00000000000822ac USBD_Test + .text.USBD_Init + 0x0000000000082418 0x200 obj/flash_USBD_UDPHS.o + 0x0000000000082418 USBD_Init + .text.USBD_GetState + 0x0000000000082618 0x18 obj/flash_USBD_UDPHS.o + 0x0000000000082618 USBD_GetState + .text.USBDCallbacks_Initialized + 0x0000000000082630 0x30 obj/flash_USBDCallbacks_Initialized.o + 0x0000000000082630 USBDCallbacks_Initialized + .text.USBDCallbacks_Reset + 0x0000000000082660 0xc obj/flash_USBDCallbacks_Reset.o + 0x0000000000082660 USBDCallbacks_Reset + .text.TerminateCtrlInWithNull + 0x000000000008266c 0x38 obj/flash_USBDDriver.o + .text.SetConfiguration + 0x00000000000826a4 0xd8 obj/flash_USBDDriver.o + .text.GetConfiguration + 0x000000000008277c 0x34 obj/flash_USBDDriver.o + .text.GetDeviceStatus + 0x00000000000827b0 0xbc obj/flash_USBDDriver.o + .text.GetEndpointStatus + 0x000000000008286c 0x7c obj/flash_USBDDriver.o + .text.GetDescriptor + 0x00000000000828e8 0x2f8 obj/flash_USBDDriver.o + .text.SetInterface + 0x0000000000082be0 0x80 obj/flash_USBDDriver.o + .text.GetInterface + 0x0000000000082c60 0x54 obj/flash_USBDDriver.o + .text.USBDDriver_Test + 0x0000000000082cb4 0xbc obj/flash_USBDDriver.o + .text.USBDDriver_Initialize + 0x0000000000082d70 0x34 obj/flash_USBDDriver.o + 0x0000000000082d70 USBDDriver_Initialize + .text.USBDDriver_RequestHandler + 0x0000000000082da4 0x3c8 obj/flash_USBDDriver.o + 0x0000000000082da4 USBDDriver_RequestHandler + .text.USBDDriverCallbacks_InterfaceSettingChanged + 0x000000000008316c 0x18 obj/flash_USBDDriverCb_IfSettingChanged.o + 0x000000000008316c USBDDriverCallbacks_InterfaceSettingChanged + .text.MSDDriver_Reset + 0x0000000000083184 0x3c obj/flash_MSDDriver.o + .text.USBDCallbacks_RequestReceived + 0x00000000000831c0 0x1c obj/flash_MSDDriver.o + 0x00000000000831c0 USBDCallbacks_RequestReceived + .text.USBDDriverCallbacks_ConfigurationChanged + 0x00000000000831dc 0x24 obj/flash_MSDDriver.o + 0x00000000000831dc USBDDriverCallbacks_ConfigurationChanged + .text.MSDD_Read + 0x0000000000083200 0x34 obj/flash_MSDDriver.o + 0x0000000000083200 MSDD_Read + .text.MSDD_Write + 0x0000000000083234 0x34 obj/flash_MSDDriver.o + 0x0000000000083234 MSDD_Write + .text.MSDD_Halt + 0x0000000000083268 0x40 obj/flash_MSDDriver.o + 0x0000000000083268 MSDD_Halt + .text.MSDD_IsHalted + 0x00000000000832a8 0x50 obj/flash_MSDDriver.o + 0x00000000000832a8 MSDD_IsHalted + .text.MSDDriver_Initialize + 0x00000000000832f8 0xa4 obj/flash_MSDDriver.o + 0x00000000000832f8 MSDDriver_Initialize + .text.MSDDriver_RequestHandler + 0x000000000008339c 0x198 obj/flash_MSDDriver.o + 0x000000000008339c MSDDriver_RequestHandler + .text.MSDDriver_StateMachine + 0x0000000000083534 0x28 obj/flash_MSDDriver.o + 0x0000000000083534 MSDDriver_StateMachine + .text.MSDDriver_Callback + 0x000000000008355c 0x40 obj/flash_MSDDStateMachine.o + .text.MSDD_GetCommandInformation + 0x000000000008359c 0x50 obj/flash_MSDDStateMachine.o + .text.MSDD_PreProcessCommand + 0x00000000000835ec 0x2cc obj/flash_MSDDStateMachine.o + .text.MSDD_PostProcessCommand + 0x00000000000838b8 0x88 obj/flash_MSDDStateMachine.o + .text.MSDD_ProcessCommand + 0x0000000000083940 0x1f0 obj/flash_MSDDStateMachine.o + .text.MSDD_StateMachine + 0x0000000000083b30 0x324 obj/flash_MSDDStateMachine.o + 0x0000000000083b30 MSDD_StateMachine + .text.MED_Write + 0x0000000000083e54 0x30 obj/flash_MSDLun.o + .text.MED_Read + 0x0000000000083e84 0x30 obj/flash_MSDLun.o + .text.LUN_Init + 0x0000000000083eb4 0x2c8 obj/flash_MSDLun.o + 0x0000000000083eb4 LUN_Init + .text.LUN_Eject + 0x000000000008417c 0x44 obj/flash_MSDLun.o + 0x000000000008417c LUN_Eject + .text.LUN_Write + 0x00000000000841c0 0x108 obj/flash_MSDLun.o + 0x00000000000841c0 LUN_Write + .text.LUN_Read + 0x00000000000842c8 0xf4 obj/flash_MSDLun.o + 0x00000000000842c8 LUN_Read + .text.MED_Flush + 0x00000000000843bc 0x2c obj/flash_SBCMethods.o + .text.MSDDriver_Callback + 0x00000000000843e8 0x40 obj/flash_SBCMethods.o + .text.SBCLunIsReady + 0x0000000000084428 0x88 obj/flash_SBCMethods.o + .text.SBCLunCanBeWritten + 0x00000000000844b0 0x84 obj/flash_SBCMethods.o + .text.SBC_Write10 + 0x0000000000084534 0x74c obj/flash_SBCMethods.o + .text.SBC_Read10 + 0x0000000000084c80 0x718 obj/flash_SBCMethods.o + .text.SBC_ReadCapacity10 + 0x0000000000085398 0x104 obj/flash_SBCMethods.o + .text.SBC_Inquiry + 0x000000000008549c 0x10c obj/flash_SBCMethods.o + .text.SBC_RequestSense + 0x00000000000855a8 0xe8 obj/flash_SBCMethods.o + .text.SBC_ModeSense6 + 0x0000000000085690 0x11c obj/flash_SBCMethods.o + .text.SBC_TestUnitReady + 0x00000000000857ac 0xac obj/flash_SBCMethods.o + .text.SBC_UpdateSenseData + 0x0000000000085858 0x38 obj/flash_SBCMethods.o + 0x0000000000085858 SBC_UpdateSenseData + .text.SBC_GetCommandInformation + 0x0000000000085890 0x208 obj/flash_SBCMethods.o + 0x0000000000085890 SBC_GetCommandInformation + .text.SBC_ProcessCommand + 0x0000000000085a98 0x1b8 obj/flash_SBCMethods.o + 0x0000000000085a98 SBC_ProcessCommand + .text.LED_Configure + 0x0000000000085c50 0x4c obj/flash_led.o + 0x0000000000085c50 LED_Configure + .text.LED_Set 0x0000000000085c9c 0x80 obj/flash_led.o + 0x0000000000085c9c LED_Set + .text.LED_Clear + 0x0000000000085d1c 0x80 obj/flash_led.o + 0x0000000000085d1c LED_Clear + .text.PutChar 0x0000000000085d9c 0x24 obj/flash_stdio.o + 0x0000000000085d9c PutChar + .text.PutString + 0x0000000000085dc0 0x48 obj/flash_stdio.o + 0x0000000000085dc0 PutString + .text.PutUnsignedInt + 0x0000000000085e08 0xc8 obj/flash_stdio.o + 0x0000000000085e08 PutUnsignedInt + .text.PutSignedInt + 0x0000000000085ed0 0x140 obj/flash_stdio.o + 0x0000000000085ed0 PutSignedInt + .text.PutHexa 0x0000000000086010 0x100 obj/flash_stdio.o + 0x0000000000086010 PutHexa + .text.vsnprintf + 0x0000000000086110 0x2d4 obj/flash_stdio.o + 0x0000000000086110 vsnprintf + .text.vsprintf + 0x00000000000863e4 0x2c obj/flash_stdio.o + 0x00000000000863e4 vsprintf + .text.vfprintf + 0x0000000000086410 0x80 obj/flash_stdio.o + 0x0000000000086410 vfprintf + .text.vprintf 0x0000000000086490 0x34 obj/flash_stdio.o + 0x0000000000086490 vprintf + .text.printf 0x00000000000864c4 0x34 obj/flash_stdio.o + 0x00000000000864c4 printf + .text.DBGU_Configure + 0x00000000000864f8 0x80 obj/flash_dbgu.o + 0x00000000000864f8 DBGU_Configure + .text.DBGU_PutChar + 0x0000000000086578 0x48 obj/flash_dbgu.o + 0x0000000000086578 DBGU_PutChar + .text.PIO_SetPeripheralA + 0x00000000000865c0 0x54 obj/flash_pio.o + .text.PIO_SetPeripheralB + 0x0000000000086614 0x48 obj/flash_pio.o + .text.PIO_SetFilter + 0x000000000008665c 0x3c obj/flash_pio.o + .text.PIO_SetInput + 0x0000000000086698 0x54 obj/flash_pio.o + .text.PIO_SetOutput + 0x00000000000866ec 0x68 obj/flash_pio.o + .text.PIO_Configure + 0x0000000000086754 0x15c obj/flash_pio.o + 0x0000000000086754 PIO_Configure + .text.PIO_Set 0x00000000000868b0 0x1c obj/flash_pio.o + 0x00000000000868b0 PIO_Set + .text.PIO_Clear + 0x00000000000868cc 0x1c obj/flash_pio.o + 0x00000000000868cc PIO_Clear + .text.PIO_Get 0x00000000000868e8 0x4c obj/flash_pio.o + 0x00000000000868e8 PIO_Get + .text.PioInterruptHandler + 0x0000000000086934 0xc0 obj/flash_pio_it.o + .text.PIO_IT_InterruptHandler + 0x00000000000869f4 0x48 obj/flash_pio_it.o + 0x00000000000869f4 PIO_IT_InterruptHandler + .text.PIO_InitializeInterrupts + 0x0000000000086a3c 0x104 obj/flash_pio_it.o + 0x0000000000086a3c PIO_InitializeInterrupts + .text.PIO_ConfigureIt + 0x0000000000086b40 0x6c obj/flash_pio_it.o + 0x0000000000086b40 PIO_ConfigureIt + .text.PIO_EnableIt + 0x0000000000086bac 0xec obj/flash_pio_it.o + 0x0000000000086bac PIO_EnableIt + .text.PIOA_IrqHandler + 0x0000000000086c98 0x1c obj/flash_pio_it.o + 0x0000000000086c98 PIOA_IrqHandler + .text.PIOB_IrqHandler + 0x0000000000086cb4 0x1c obj/flash_pio_it.o + 0x0000000000086cb4 PIOB_IrqHandler + .text.PIOC_IrqHandler + 0x0000000000086cd0 0x1c obj/flash_pio_it.o + 0x0000000000086cd0 PIOC_IrqHandler + .text.TC_Configure + 0x0000000000086cec 0x30 obj/flash_tc.o + 0x0000000000086cec TC_Configure + .text.TC_Start + 0x0000000000086d1c 0x1c obj/flash_tc.o + 0x0000000000086d1c TC_Start + .text.TC_FindMckDivisor + 0x0000000000086d38 0xd4 obj/flash_tc.o + 0x0000000000086d38 TC_FindMckDivisor + .text.LowLevelInit + 0x0000000000086e0c 0x2d4 obj/flash_board_lowlevel.o + 0x0000000000086e0c LowLevelInit + .text.SetDefaultMaster + 0x00000000000870e0 0x70 obj/flash_board_lowlevel.o + 0x00000000000870e0 SetDefaultMaster + .text.fputc 0x0000000000087150 0x50 obj/flash_trace.o + 0x0000000000087150 fputc + .text.fputs 0x00000000000871a0 0x58 obj/flash_trace.o + 0x00000000000871a0 fputs + .text.MmcGetTranSpeed + 0x00000000000871f8 0x70 obj/flash_sdmmc_mci.o + .text.GetTransSpeedValue + 0x0000000000087268 0x108 obj/flash_sdmmc_mci.o + 0x0000000000087268 GetTransSpeedValue + .text.ResetCommand + 0x0000000000087370 0x7c obj/flash_sdmmc_mci.o + .text.Delay 0x00000000000873ec 0x24 obj/flash_sdmmc_mci.o + .text.SendCommand + 0x0000000000087410 0x78 obj/flash_sdmmc_mci.o + .text.Pon 0x0000000000087488 0x48 obj/flash_sdmmc_mci.o + .text.Cmd0 0x00000000000874d0 0x50 obj/flash_sdmmc_mci.o + .text.Cmd1 0x0000000000087520 0xb0 obj/flash_sdmmc_mci.o + .text.Cmd2 0x00000000000875d0 0x50 obj/flash_sdmmc_mci.o + .text.Cmd3 0x0000000000087620 0xc0 obj/flash_sdmmc_mci.o + .text.Cmd5 0x00000000000876e0 0x58 obj/flash_sdmmc_mci.o + .text.Cmd7 0x0000000000087738 0x50 obj/flash_sdmmc_mci.o + .text.Cmd6 0x0000000000087788 0x1ec obj/flash_sdmmc_mci.o + .text.Cmd8 0x0000000000087974 0xf0 obj/flash_sdmmc_mci.o + .text.Cmd9 0x0000000000087a64 0x64 obj/flash_sdmmc_mci.o + .text.Cmd12 0x0000000000087ac8 0x74 obj/flash_sdmmc_mci.o + .text.Cmd13 0x0000000000087b3c 0x60 obj/flash_sdmmc_mci.o + .text.Cmd16 0x0000000000087b9c 0x5c obj/flash_sdmmc_mci.o + .text.Cmd18 0x0000000000087bf8 0x9c obj/flash_sdmmc_mci.o + .text.Cmd25 0x0000000000087c94 0x94 obj/flash_sdmmc_mci.o + .text.Cmd52 0x0000000000087d28 0x9c obj/flash_sdmmc_mci.o + .text.Cmd55 0x0000000000087dc4 0x60 obj/flash_sdmmc_mci.o + .text.Acmd6 0x0000000000087e24 0x94 obj/flash_sdmmc_mci.o + .text.Acmd13 0x0000000000087eb8 0xb4 obj/flash_sdmmc_mci.o + .text.Acmd41 0x0000000000087f6c 0xb0 obj/flash_sdmmc_mci.o + .text.Acmd51 0x000000000008801c 0xb4 obj/flash_sdmmc_mci.o + .text.ContinuousRead + 0x00000000000880d0 0x74 obj/flash_sdmmc_mci.o + .text.ContinuousWrite + 0x0000000000088144 0x6c obj/flash_sdmmc_mci.o + .text.SwReset 0x00000000000881b0 0x54 obj/flash_sdmmc_mci.o + .text.MoveToTransferState + 0x0000000000088204 0x2fc obj/flash_sdmmc_mci.o + .text.MmcSelectCard + 0x0000000000088500 0x110 obj/flash_sdmmc_mci.o + .text.MmcGetExtInformation + 0x0000000000088610 0x80 obj/flash_sdmmc_mci.o + .text.SdGetExtInformation + 0x0000000000088690 0x9c obj/flash_sdmmc_mci.o + .text.SdMmcUpdateInformation + 0x000000000008872c 0xcc obj/flash_sdmmc_mci.o + .text.SD_Read 0x00000000000887f8 0xb8 obj/flash_sdmmc_mci.o + 0x00000000000887f8 SD_Read + .text.SD_Write + 0x00000000000888b0 0xb8 obj/flash_sdmmc_mci.o + 0x00000000000888b0 SD_Write + .text.SdMmcIdentify + 0x0000000000088968 0x308 obj/flash_sdmmc_mci.o + .text.SdMmcEnum + 0x0000000000088c70 0x560 obj/flash_sdmmc_mci.o + .text.SD_Init 0x00000000000891d0 0x340 obj/flash_sdmmc_mci.o + 0x00000000000891d0 SD_Init + .text.MCI0_IrqHandler + 0x0000000000089510 0x18 obj/flash_MEDSdcard.o + 0x0000000000089510 MCI0_IrqHandler + .text.CardIsConnected + 0x0000000000089528 0x60 obj/flash_MEDSdcard.o + .text.CardIsProtected + 0x0000000000089588 0x34 obj/flash_MEDSdcard.o + .text.ConfigurePIO + 0x00000000000895bc 0x7c obj/flash_MEDSdcard.o + .text.SdMmcCallback + 0x0000000000089638 0x74 obj/flash_MEDSdcard.o + .text.MEDSdusb_Read + 0x00000000000896ac 0xc0 obj/flash_MEDSdcard.o + .text.MEDSdusb_Write + 0x000000000008976c 0xb8 obj/flash_MEDSdcard.o + .text.MEDSdcard_Detect + 0x0000000000089824 0x28 obj/flash_MEDSdcard.o + 0x0000000000089824 MEDSdcard_Detect + .text.MEDSdusb_Initialize + 0x000000000008984c 0x234 obj/flash_MEDSdcard.o + 0x000000000008984c MEDSdusb_Initialize + .text.AT91F_Prepare_Multiple_Transfer + 0x0000000000089a80 0x10c obj/flash_mci_hs.o + .text.DMACH_MCI_P2M + 0x0000000000089b8c 0x240 obj/flash_mci_hs.o + .text.DMACH_MCI_M2P + 0x0000000000089dcc 0x24c obj/flash_mci_hs.o + .text.DMACH_EnableIt + 0x000000000008a018 0x3c obj/flash_mci_hs.o + .text.MCI_Reset + 0x000000000008a054 0x84 obj/flash_mci_hs.o + 0x000000000008a054 MCI_Reset + .text.MCI_Init + 0x000000000008a0d8 0x18c obj/flash_mci_hs.o + 0x000000000008a0d8 MCI_Init + .text.MCI_SetSpeed + 0x000000000008a264 0x15c obj/flash_mci_hs.o + 0x000000000008a264 MCI_SetSpeed + .text.MCI_EnableHsMode + 0x000000000008a3c0 0xb0 obj/flash_mci_hs.o + 0x000000000008a3c0 MCI_EnableHsMode + .text.MCI_SetBusWidth + 0x000000000008a470 0xa0 obj/flash_mci_hs.o + 0x000000000008a470 MCI_SetBusWidth + .text.MCI_SendCommand + 0x000000000008a510 0x3c4 obj/flash_mci_hs.o + 0x000000000008a510 MCI_SendCommand + .text.MCI_Handler + 0x000000000008a8d4 0x488 obj/flash_mci_hs.o + 0x000000000008a8d4 MCI_Handler + .text.MCI_IsTxComplete + 0x000000000008ad5c 0x44 obj/flash_mci_hs.o + 0x000000000008ad5c MCI_IsTxComplete + .text.DMA_Enable + 0x000000000008ada0 0x18 obj/flash_dma.o + 0x000000000008ada0 DMA_Enable + .text.DMA_EnableIt + 0x000000000008adb8 0x20 obj/flash_dma.o + 0x000000000008adb8 DMA_EnableIt + .text.DMA_DisableIt + 0x000000000008add8 0x20 obj/flash_dma.o + 0x000000000008add8 DMA_DisableIt + .text.DMA_GetStatus + 0x000000000008adf8 0x18 obj/flash_dma.o + 0x000000000008adf8 DMA_GetStatus + .text.DMA_GetInterruptMask + 0x000000000008ae10 0x18 obj/flash_dma.o + 0x000000000008ae10 DMA_GetInterruptMask + .text.DMA_EnableChannel + 0x000000000008ae28 0x60 obj/flash_dma.o + 0x000000000008ae28 DMA_EnableChannel + .text.DMA_DisableChannel + 0x000000000008ae88 0x60 obj/flash_dma.o + 0x000000000008ae88 DMA_DisableChannel + .text.DMA_KeeponChannel + 0x000000000008aee8 0x60 obj/flash_dma.o + 0x000000000008aee8 DMA_KeeponChannel + .text.DMA_ClearAutoMode + 0x000000000008af48 0x7c obj/flash_dma.o + 0x000000000008af48 DMA_ClearAutoMode + .text.DMA_GetChannelStatus + 0x000000000008afc4 0x18 obj/flash_dma.o + 0x000000000008afc4 DMA_GetChannelStatus + .text.DMA_SetSourceAddr + 0x000000000008afdc 0x60 obj/flash_dma.o + 0x000000000008afdc DMA_SetSourceAddr + .text.DMA_SetDestinationAddr + 0x000000000008b03c 0x60 obj/flash_dma.o + 0x000000000008b03c DMA_SetDestinationAddr + .text.DMA_SetDescriptorAddr + 0x000000000008b09c 0x60 obj/flash_dma.o + 0x000000000008b09c DMA_SetDescriptorAddr + .text.DMA_SetSourceBufferSize + 0x000000000008b0fc 0xd8 obj/flash_dma.o + 0x000000000008b0fc DMA_SetSourceBufferSize + .text.DMA_SetSourceBufferMode + 0x000000000008b1d4 0x160 obj/flash_dma.o + 0x000000000008b1d4 DMA_SetSourceBufferMode + .text.DMA_SetDestBufferMode + 0x000000000008b334 0x144 obj/flash_dma.o + 0x000000000008b334 DMA_SetDestBufferMode + .text.DMA_SetConfiguration + 0x000000000008b478 0x60 obj/flash_dma.o + 0x000000000008b478 DMA_SetConfiguration + .text.DMAD_Handler + 0x000000000008b4d8 0x144 obj/flash_dmad.o + 0x000000000008b4d8 DMAD_Handler + .text.DMAD_Initialize + 0x000000000008b61c 0xf8 obj/flash_dmad.o + 0x000000000008b61c DMAD_Initialize + .text.NVIC_EnableIRQ + 0x000000000008b714 0x38 obj/flash_nvic.o + .text.NVIC_DisableIRQ + 0x000000000008b74c 0x3c obj/flash_nvic.o + .text.NVIC_ClearPendingIRQ + 0x000000000008b788 0x3c obj/flash_nvic.o + .text.NVIC_SetPriority + 0x000000000008b7c4 0x54 obj/flash_nvic.o + .text.IRQ_ConfigureIT + 0x000000000008b818 0xc4 obj/flash_nvic.o + 0x000000000008b818 IRQ_ConfigureIT + .text.IRQ_EnableIT + 0x000000000008b8dc 0x24 obj/flash_nvic.o + 0x000000000008b8dc IRQ_EnableIT + .text.FaultReport + 0x000000000008b900 0x1b8 obj/flash_exceptions.o + 0x000000000008b900 FaultReport + .text.IrqHandlerNotUsed + 0x000000000008bab8 0x8 obj/flash_exceptions.o + 0x000000000008bab8 IrqHandlerNotUsed + .text.NMI_Handler + 0x000000000008bac0 0x8 obj/flash_exceptions.o + 0x000000000008bac0 NMI_Handler + .text.HardFault_HandlerBody + 0x000000000008bac8 0x20 obj/flash_exceptions.o + 0x000000000008bac8 HardFault_HandlerBody + .text.HardFault_Handler + 0x000000000008bae8 0x20 obj/flash_exceptions.o + 0x000000000008bae8 HardFault_Handler + .text.MemManage_HandlerBody + 0x000000000008bb08 0x20 obj/flash_exceptions.o + 0x000000000008bb08 MemManage_HandlerBody + .text.MemManage_Handler + 0x000000000008bb28 0x20 obj/flash_exceptions.o + 0x000000000008bb28 MemManage_Handler + .text.BusFault_HandlerBody + 0x000000000008bb48 0x20 obj/flash_exceptions.o + 0x000000000008bb48 BusFault_HandlerBody + .text.BusFault_Handler + 0x000000000008bb68 0x20 obj/flash_exceptions.o + 0x000000000008bb68 BusFault_Handler + .text.UsageFault_HandlerBody + 0x000000000008bb88 0x20 obj/flash_exceptions.o + 0x000000000008bb88 UsageFault_HandlerBody + .text.UsageFault_Handler + 0x000000000008bba8 0x20 obj/flash_exceptions.o + 0x000000000008bba8 UsageFault_Handler + .text.SVC_Handler + 0x000000000008bbc8 0x8 obj/flash_exceptions.o + 0x000000000008bbc8 SVC_Handler + .text.DebugMon_Handler + 0x000000000008bbd0 0x8 obj/flash_exceptions.o + 0x000000000008bbd0 DebugMon_Handler + .text.PendSV_Handler + 0x000000000008bbd8 0x8 obj/flash_exceptions.o + 0x000000000008bbd8 PendSV_Handler + .text.SysTick_Handler + 0x000000000008bbe0 0x8 obj/flash_exceptions.o + 0x000000000008bbe0 SysTick_Handler + .text.SUPC_IrqHandler + 0x000000000008bbe8 0x8 obj/flash_exceptions.o + 0x000000000008bbe8 SUPC_IrqHandler + .text.RSTC_IrqHandler + 0x000000000008bbf0 0x8 obj/flash_exceptions.o + 0x000000000008bbf0 RSTC_IrqHandler + .text.RTC_IrqHandler + 0x000000000008bbf8 0x8 obj/flash_exceptions.o + 0x000000000008bbf8 RTC_IrqHandler + .text.RTT_IrqHandler + 0x000000000008bc00 0x8 obj/flash_exceptions.o + 0x000000000008bc00 RTT_IrqHandler + .text.WDT_IrqHandler + 0x000000000008bc08 0x8 obj/flash_exceptions.o + 0x000000000008bc08 WDT_IrqHandler + .text.PMC_IrqHandler + 0x000000000008bc10 0x8 obj/flash_exceptions.o + 0x000000000008bc10 PMC_IrqHandler + .text.EFC0_IrqHandler + 0x000000000008bc18 0x8 obj/flash_exceptions.o + 0x000000000008bc18 EFC0_IrqHandler + .text.EFC1_IrqHandler + 0x000000000008bc20 0x8 obj/flash_exceptions.o + 0x000000000008bc20 EFC1_IrqHandler + .text.DBGU_IrqHandler + 0x000000000008bc28 0x8 obj/flash_exceptions.o + 0x000000000008bc28 DBGU_IrqHandler + .text.HSMC4_IrqHandler + 0x000000000008bc30 0x8 obj/flash_exceptions.o + 0x000000000008bc30 HSMC4_IrqHandler + .text.USART0_IrqHandler + 0x000000000008bc38 0x8 obj/flash_exceptions.o + 0x000000000008bc38 USART0_IrqHandler + .text.USART1_IrqHandler + 0x000000000008bc40 0x8 obj/flash_exceptions.o + 0x000000000008bc40 USART1_IrqHandler + .text.USART2_IrqHandler + 0x000000000008bc48 0x8 obj/flash_exceptions.o + 0x000000000008bc48 USART2_IrqHandler + .text.USART3_IrqHandler + 0x000000000008bc50 0x8 obj/flash_exceptions.o + 0x000000000008bc50 USART3_IrqHandler + .text.TWI0_IrqHandler + 0x000000000008bc58 0x8 obj/flash_exceptions.o + 0x000000000008bc58 TWI0_IrqHandler + .text.TWI1_IrqHandler + 0x000000000008bc60 0x8 obj/flash_exceptions.o + 0x000000000008bc60 TWI1_IrqHandler + .text.SPI0_IrqHandler + 0x000000000008bc68 0x8 obj/flash_exceptions.o + 0x000000000008bc68 SPI0_IrqHandler + .text.SSC0_IrqHandler + 0x000000000008bc70 0x8 obj/flash_exceptions.o + 0x000000000008bc70 SSC0_IrqHandler + .text.TC1_IrqHandler + 0x000000000008bc78 0x8 obj/flash_exceptions.o + 0x000000000008bc78 TC1_IrqHandler + .text.TC2_IrqHandler + 0x000000000008bc80 0x8 obj/flash_exceptions.o + 0x000000000008bc80 TC2_IrqHandler + .text.PWM_IrqHandler + 0x000000000008bc88 0x8 obj/flash_exceptions.o + 0x000000000008bc88 PWM_IrqHandler + .text.ADCC0_IrqHandler + 0x000000000008bc90 0x8 obj/flash_exceptions.o + 0x000000000008bc90 ADCC0_IrqHandler + .text.ADCC1_IrqHandler + 0x000000000008bc98 0x8 obj/flash_exceptions.o + 0x000000000008bc98 ADCC1_IrqHandler + .text.HDMA_IrqHandler + 0x000000000008bca0 0x8 obj/flash_exceptions.o + 0x000000000008bca0 HDMA_IrqHandler + .text.ResetException + 0x000000000008bca8 0xa4 obj/flash_board_cstartup_gnu.o + 0x000000000008bca8 ResetException + .text.WakeUpHandler + 0x000000000008bd4c 0x24 obj/flash_main.o + .text.ConfigureWakeUp + 0x000000000008bd70 0x48 obj/flash_main.o + .text.ISR_Vbus + 0x000000000008bdb8 0x40 obj/flash_main.o + 0x000000000008bdb8 ISR_Vbus + .text.VBus_Configure + 0x000000000008bdf8 0x78 obj/flash_main.o + .text.USBDCallbacks_Resumed + 0x000000000008be70 0x4c obj/flash_main.o + 0x000000000008be70 USBDCallbacks_Resumed + .text.USBDCallbacks_Suspended + 0x000000000008bebc 0x30 obj/flash_main.o + 0x000000000008bebc USBDCallbacks_Suspended + .text.MSDCallbacks_Data + 0x000000000008beec 0x8c obj/flash_main.o + 0x000000000008beec MSDCallbacks_Data + .text.TC0_IrqHandler + 0x000000000008bf78 0x60 obj/flash_main.o + 0x000000000008bf78 TC0_IrqHandler + .text.ConfigureTc0 + 0x000000000008bfd8 0xb4 obj/flash_main.o + 0x000000000008bfd8 ConfigureTc0 + .text.SDConnectionUpdate + 0x000000000008c08c 0x90 obj/flash_main.o + .text.MemoryInitialization + 0x000000000008c11c 0x84 obj/flash_main.o + .text.LowPowerMode + 0x000000000008c1a0 0xc obj/flash_main.o + .text.NormalPowerMode + 0x000000000008c1ac 0xc obj/flash_main.o + .text.main 0x000000000008c1b8 0x3f4 obj/flash_main.o + 0x000000000008c1b8 main + .text 0x000000000008c5ac 0x98 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + 0x000000000008c5ac memset + *(.rodata*) + .rodata 0x000000000008c644 0x1ac obj/flash_USBD_UDPHS.o + .rodata 0x000000000008c7f0 0xf4 obj/flash_USBDDriver.o + .rodata 0x000000000008c8e4 0xa4 obj/flash_MSDDriver.o + .rodata 0x000000000008c988 0x114 obj/flash_MSDDriverDescriptors.o + 0x000000000008ca74 msdDriverDescriptors + .rodata 0x000000000008ca9c 0x2d4 obj/flash_MSDDStateMachine.o + .rodata 0x000000000008cd70 0xfc obj/flash_MSDLun.o + .rodata 0x000000000008ce6c 0x300 obj/flash_SBCMethods.o + .rodata 0x000000000008d16c 0x64 obj/flash_led.o + .rodata 0x000000000008d1d0 0x24 obj/flash_stdio.o + .rodata 0x000000000008d1f4 0x14 obj/flash_tc.o + .rodata 0x000000000008d208 0x73c obj/flash_sdmmc_mci.o + .rodata 0x000000000008d944 0x164 obj/flash_MEDSdcard.o + .rodata 0x000000000008daa8 0x8c obj/flash_mci_hs.o + .rodata 0x000000000008db34 0x80 obj/flash_dma.o + .rodata 0x000000000008dbb4 0x7c obj/flash_dmad.o + .rodata 0x000000000008dc30 0xf8 obj/flash_exceptions.o + .rodata 0x000000000008dd28 0x154 obj/flash_main.o + .rodata.str1.4 + 0x000000000008de7c 0x4 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + *(.glue_7) + .glue_7 0x0000000000000000 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0000000000000000 0x0 linker stubs + 0x000000000008de80 . = ALIGN (0x4) + 0x000000000008de80 _efixed = . + +.vfp11_veneer 0x000000000008de80 0x0 + .vfp11_veneer 0x0000000000000000 0x0 linker stubs + +.v4_bx 0x000000000008de80 0x0 + .v4_bx 0x0000000000000000 0x0 linker stubs + +.relocate 0x0000000020000100 0x4a8 load address 0x000000000008de80 + 0x0000000020000100 . = ALIGN (0x4) + 0x0000000020000100 _srelocate = . + *(.ramfunc) + *(.data) + .data 0x0000000020000100 0x10 obj/flash_MSDDriverDescriptors.o + .data 0x0000000020000110 0x60 obj/flash_MSDLun.o + .data 0x0000000020000170 0x1 obj/flash_sdmmc_mci.o + 0x0000000020000170 gSdmmcAutoHsEnable + *fill* 0x0000000020000171 0x1 00 + .data 0x0000000020000172 0x2 obj/flash_mci_hs.o + .data 0x0000000020000174 0x4 obj/flash_main.o + 0x0000000020000174 updateDelay + .data 0x0000000020000178 0x430 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + 0x0000000020000178 _impure_ptr + 0x00000000200005a8 . = ALIGN (0x4) + 0x00000000200005a8 _erelocate = . + +.bss 0x00000000200005a8 0x1ea8 load address 0x000000000008e328 + 0x00000000200005a8 . = ALIGN (0x4) + 0x00000000200005a8 _szero = . + *(.bss) + .bss 0x00000000200005a8 0xe4 obj/flash_USBD_UDPHS.o + .bss 0x000000002000068c 0x4 obj/flash_USBDDriver.o + .bss 0x0000000020000690 0x68 obj/flash_MSDDriver.o + .bss 0x00000000200006f8 0x3c obj/flash_pio_it.o + .bss 0x0000000020000734 0x4 obj/flash_Media.o + 0x0000000020000734 numMedias + .bss 0x0000000020000738 0x274 obj/flash_MEDSdcard.o + .bss 0x00000000200009ac 0x68 obj/flash_mci_hs.o + .bss 0x0000000020000a14 0x40 obj/flash_dmad.o + .bss 0x0000000020000a54 0x10 obj/flash_main.o + 0x0000000020000a54 msdReadTotal + 0x0000000020000a58 msdWriteTotal + 0x0000000020000a5c msdFullCnt + 0x0000000020000a5e msdNullCnt + 0x0000000020000a60 updateView + 0x0000000020000a61 USBState + 0x0000000020000a64 . = ALIGN (0x4) + 0x0000000020000a64 _ezero = . + COMMON 0x0000000020000a64 0x19ec obj/flash_main.o + 0x0000000020000a64 medias + 0x0000000020000b30 msdBuffer + 0x0000000020002330 luns + 0x0000000020007ffc _estack = 0x20007ffc + 0x0000000020002450 end = . +OUTPUT(bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4-flash.elf elf32-littlearm) + +.debug_info 0x0000000000000000 0x16b4d + .debug_info 0x0000000000000000 0x315 obj/flash_USBConfigurationDescriptor.o + .debug_info 0x0000000000000315 0x183 obj/flash_USBEndpointDescriptor.o + .debug_info 0x0000000000000498 0x100 obj/flash_USBFeatureRequest.o + .debug_info 0x0000000000000598 0xfd obj/flash_USBGenericDescriptor.o + .debug_info 0x0000000000000695 0x208 obj/flash_USBGenericRequest.o + .debug_info 0x000000000000089d 0x100 obj/flash_USBGetDescriptorRequest.o + .debug_info 0x000000000000099d 0x100 obj/flash_USBInterfaceRequest.o + .debug_info 0x0000000000000a9d 0xd8 obj/flash_USBSetAddressRequest.o + .debug_info 0x0000000000000b75 0xd8 obj/flash_USBSetConfigurationRequest.o + .debug_info 0x0000000000000c4d 0x1694 obj/flash_USBD_UDPHS.o + .debug_info 0x00000000000022e1 0x85 obj/flash_USBDCallbacks_Initialized.o + .debug_info 0x0000000000002366 0x4d obj/flash_USBDCallbacks_Reset.o + .debug_info 0x00000000000023b3 0x8ef obj/flash_USBDDriver.o + .debug_info 0x0000000000002ca2 0xa9 obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_info 0x0000000000002d4b 0x10a7 obj/flash_MSDDriver.o + .debug_info 0x0000000000003df2 0x584 obj/flash_MSDDriverDescriptors.o + .debug_info 0x0000000000004376 0x12cc obj/flash_MSDDStateMachine.o + .debug_info 0x0000000000005642 0xbec obj/flash_MSDLun.o + .debug_info 0x000000000000622e 0x15d8 obj/flash_SBCMethods.o + .debug_info 0x0000000000007806 0x6d2 obj/flash_led.o + .debug_info 0x0000000000007ed8 0x119 obj/flash_math.o + .debug_info 0x0000000000007ff1 0xeab obj/flash_stdio.o + .debug_info 0x0000000000008e9c 0x530 obj/flash_dbgu.o + .debug_info 0x00000000000093cc 0xa5f obj/flash_pio.o + .debug_info 0x0000000000009e2b 0xa22 obj/flash_pio_it.o + .debug_info 0x000000000000a84d 0x385 obj/flash_pmc.o + .debug_info 0x000000000000abd2 0x225 obj/flash_tc.o + .debug_info 0x000000000000adf7 0x7e1 obj/flash_board_lowlevel.o + .debug_info 0x000000000000b5d8 0xbef obj/flash_trace.o + .debug_info 0x000000000000c1c7 0xb92 obj/flash_board_memories.o + .debug_info 0x000000000000cd59 0x34f obj/flash_Media.o + .debug_info 0x000000000000d0a8 0x20b6 obj/flash_sdmmc_mci.o + .debug_info 0x000000000000f15e 0x137e obj/flash_MEDSdcard.o + .debug_info 0x00000000000104dc 0xfde obj/flash_mci_hs.o + .debug_info 0x00000000000114ba 0x6f6 obj/flash_dma.o + .debug_info 0x0000000000011bb0 0x62e obj/flash_dmad.o + .debug_info 0x00000000000121de 0x591 obj/flash_MEDRamDisk.o + .debug_info 0x000000000001276f 0xbb4 obj/flash_nvic.o + .debug_info 0x0000000000013323 0x6a7 obj/flash_exceptions.o + .debug_info 0x00000000000139ca 0x65c obj/flash_board_cstartup_gnu.o + .debug_info 0x0000000000014026 0x554 obj/flash_core_cm3.o + .debug_info 0x000000000001457a 0x5ce obj/flash_systick.o + .debug_info 0x0000000000014b48 0x1589 obj/flash_main.o + .debug_info 0x00000000000160d1 0x966 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .debug_info 0x0000000000016a37 0x116 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_abbrev 0x0000000000000000 0x32fe + .debug_abbrev 0x0000000000000000 0xb3 obj/flash_USBConfigurationDescriptor.o + .debug_abbrev 0x00000000000000b3 0x99 obj/flash_USBEndpointDescriptor.o + .debug_abbrev 0x000000000000014c 0x9f obj/flash_USBFeatureRequest.o + .debug_abbrev 0x00000000000001eb 0x82 obj/flash_USBGenericDescriptor.o + .debug_abbrev 0x000000000000026d 0x9f obj/flash_USBGenericRequest.o + .debug_abbrev 0x000000000000030c 0x9f obj/flash_USBGetDescriptorRequest.o + .debug_abbrev 0x00000000000003ab 0x9f obj/flash_USBInterfaceRequest.o + .debug_abbrev 0x000000000000044a 0x88 obj/flash_USBSetAddressRequest.o + .debug_abbrev 0x00000000000004d2 0x88 obj/flash_USBSetConfigurationRequest.o + .debug_abbrev 0x000000000000055a 0x237 obj/flash_USBD_UDPHS.o + .debug_abbrev 0x0000000000000791 0x41 obj/flash_USBDCallbacks_Initialized.o + .debug_abbrev 0x00000000000007d2 0x36 obj/flash_USBDCallbacks_Reset.o + .debug_abbrev 0x0000000000000808 0x14f obj/flash_USBDDriver.o + .debug_abbrev 0x0000000000000957 0x50 obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_abbrev 0x00000000000009a7 0x198 obj/flash_MSDDriver.o + .debug_abbrev 0x0000000000000b3f 0x99 obj/flash_MSDDriverDescriptors.o + .debug_abbrev 0x0000000000000bd8 0x1fa obj/flash_MSDDStateMachine.o + .debug_abbrev 0x0000000000000dd2 0x1ae obj/flash_MSDLun.o + .debug_abbrev 0x0000000000000f80 0x20d obj/flash_SBCMethods.o + .debug_abbrev 0x000000000000118d 0x115 obj/flash_led.o + .debug_abbrev 0x00000000000012a2 0xa2 obj/flash_math.o + .debug_abbrev 0x0000000000001344 0x226 obj/flash_stdio.o + .debug_abbrev 0x000000000000156a 0xba obj/flash_dbgu.o + .debug_abbrev 0x0000000000001624 0x194 obj/flash_pio.o + .debug_abbrev 0x00000000000017b8 0x1cf obj/flash_pio_it.o + .debug_abbrev 0x0000000000001987 0xe4 obj/flash_pmc.o + .debug_abbrev 0x0000000000001a6b 0xcb obj/flash_tc.o + .debug_abbrev 0x0000000000001b36 0xd6 obj/flash_board_lowlevel.o + .debug_abbrev 0x0000000000001c0c 0x220 obj/flash_trace.o + .debug_abbrev 0x0000000000001e2c 0x131 obj/flash_board_memories.o + .debug_abbrev 0x0000000000001f5d 0x103 obj/flash_Media.o + .debug_abbrev 0x0000000000002060 0x218 obj/flash_sdmmc_mci.o + .debug_abbrev 0x0000000000002278 0x1fc obj/flash_MEDSdcard.o + .debug_abbrev 0x0000000000002474 0x1da obj/flash_mci_hs.o + .debug_abbrev 0x000000000000264e 0x14c obj/flash_dma.o + .debug_abbrev 0x000000000000279a 0x159 obj/flash_dmad.o + .debug_abbrev 0x00000000000028f3 0x114 obj/flash_MEDRamDisk.o + .debug_abbrev 0x0000000000002a07 0x15b obj/flash_nvic.o + .debug_abbrev 0x0000000000002b62 0x121 obj/flash_exceptions.o + .debug_abbrev 0x0000000000002c83 0xd3 obj/flash_board_cstartup_gnu.o + .debug_abbrev 0x0000000000002d56 0xa5 obj/flash_core_cm3.o + .debug_abbrev 0x0000000000002dfb 0xbe obj/flash_systick.o + .debug_abbrev 0x0000000000002eb9 0x252 obj/flash_main.o + .debug_abbrev 0x000000000000310b 0x166 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .debug_abbrev 0x0000000000003271 0x8d /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_loc 0x0000000000000000 0x58ba + .debug_loc 0x0000000000000000 0xe0 obj/flash_USBConfigurationDescriptor.o + .debug_loc 0x00000000000000e0 0x118 obj/flash_USBEndpointDescriptor.o + .debug_loc 0x00000000000001f8 0x70 obj/flash_USBFeatureRequest.o + .debug_loc 0x0000000000000268 0xa8 obj/flash_USBGenericDescriptor.o + .debug_loc 0x0000000000000310 0x1c0 obj/flash_USBGenericRequest.o + .debug_loc 0x00000000000004d0 0x70 obj/flash_USBGetDescriptorRequest.o + .debug_loc 0x0000000000000540 0x70 obj/flash_USBInterfaceRequest.o + .debug_loc 0x00000000000005b0 0x38 obj/flash_USBSetAddressRequest.o + .debug_loc 0x00000000000005e8 0x38 obj/flash_USBSetConfigurationRequest.o + .debug_loc 0x0000000000000620 0x778 obj/flash_USBD_UDPHS.o + .debug_loc 0x0000000000000d98 0x2c obj/flash_USBDCallbacks_Initialized.o + .debug_loc 0x0000000000000dc4 0x2c obj/flash_USBDCallbacks_Reset.o + .debug_loc 0x0000000000000df0 0x2a4 obj/flash_USBDDriver.o + .debug_loc 0x0000000000001094 0x38 obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_loc 0x00000000000010cc 0x244 obj/flash_MSDDriver.o + .debug_loc 0x0000000000001310 0x150 obj/flash_MSDDStateMachine.o + .debug_loc 0x0000000000001460 0x150 obj/flash_MSDLun.o + .debug_loc 0x00000000000015b0 0x310 obj/flash_SBCMethods.o + .debug_loc 0x00000000000018c0 0xe0 obj/flash_led.o + .debug_loc 0x00000000000019a0 0xa8 obj/flash_math.o + .debug_loc 0x0000000000001a48 0x342 obj/flash_stdio.o + .debug_loc 0x0000000000001d8a 0xc8 obj/flash_dbgu.o + .debug_loc 0x0000000000001e52 0x230 obj/flash_pio.o + .debug_loc 0x0000000000002082 0x1c8 obj/flash_pio_it.o + .debug_loc 0x000000000000224a 0x184 obj/flash_pmc.o + .debug_loc 0x00000000000023ce 0xe0 obj/flash_tc.o + .debug_loc 0x00000000000024ae 0xa8 obj/flash_board_lowlevel.o + .debug_loc 0x0000000000002556 0x1f8 obj/flash_trace.o + .debug_loc 0x000000000000274e 0x72 obj/flash_board_memories.o + .debug_loc 0x00000000000027c0 0x70 obj/flash_Media.o + .debug_loc 0x0000000000002830 0xd99 obj/flash_sdmmc_mci.o + .debug_loc 0x00000000000035c9 0x342 obj/flash_MEDSdcard.o + .debug_loc 0x000000000000390b 0x3be obj/flash_mci_hs.o + .debug_loc 0x0000000000003cc9 0x4cc obj/flash_dma.o + .debug_loc 0x0000000000004195 0x150 obj/flash_dmad.o + .debug_loc 0x00000000000042e5 0x118 obj/flash_MEDRamDisk.o + .debug_loc 0x00000000000043fd 0x268 obj/flash_nvic.o + .debug_loc 0x0000000000004665 0x824 obj/flash_exceptions.o + .debug_loc 0x0000000000004e89 0x38 obj/flash_board_cstartup_gnu.o + .debug_loc 0x0000000000004ec1 0x4d0 obj/flash_core_cm3.o + .debug_loc 0x0000000000005391 0x38 obj/flash_systick.o + .debug_loc 0x00000000000053c9 0x2f5 obj/flash_main.o + .debug_loc 0x00000000000056be 0x1fc /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_aranges 0x0000000000000000 0x10f0 + .debug_aranges + 0x0000000000000000 0x38 obj/flash_USBConfigurationDescriptor.o + .debug_aranges + 0x0000000000000038 0x40 obj/flash_USBEndpointDescriptor.o + .debug_aranges + 0x0000000000000078 0x28 obj/flash_USBFeatureRequest.o + .debug_aranges + 0x00000000000000a0 0x30 obj/flash_USBGenericDescriptor.o + .debug_aranges + 0x00000000000000d0 0x58 obj/flash_USBGenericRequest.o + .debug_aranges + 0x0000000000000128 0x28 obj/flash_USBGetDescriptorRequest.o + .debug_aranges + 0x0000000000000150 0x28 obj/flash_USBInterfaceRequest.o + .debug_aranges + 0x0000000000000178 0x20 obj/flash_USBSetAddressRequest.o + .debug_aranges + 0x0000000000000198 0x20 obj/flash_USBSetConfigurationRequest.o + .debug_aranges + 0x00000000000001b8 0x138 obj/flash_USBD_UDPHS.o + .debug_aranges + 0x00000000000002f0 0x20 obj/flash_USBDCallbacks_Initialized.o + .debug_aranges + 0x0000000000000310 0x20 obj/flash_USBDCallbacks_Reset.o + .debug_aranges + 0x0000000000000330 0x78 obj/flash_USBDDriver.o + .debug_aranges + 0x00000000000003a8 0x20 obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_aranges + 0x00000000000003c8 0x70 obj/flash_MSDDriver.o + .debug_aranges + 0x0000000000000438 0x48 obj/flash_MSDDStateMachine.o + .debug_aranges + 0x0000000000000480 0x48 obj/flash_MSDLun.o + .debug_aranges + 0x00000000000004c8 0x88 obj/flash_SBCMethods.o + .debug_aranges + 0x0000000000000550 0x38 obj/flash_led.o + .debug_aranges + 0x0000000000000588 0x30 obj/flash_math.o + .debug_aranges + 0x00000000000005b8 0x88 obj/flash_stdio.o + .debug_aranges + 0x0000000000000640 0x38 obj/flash_dbgu.o + .debug_aranges + 0x0000000000000678 0x68 obj/flash_pio.o + .debug_aranges + 0x00000000000006e0 0x60 obj/flash_pio_it.o + .debug_aranges + 0x0000000000000740 0x58 obj/flash_pmc.o + .debug_aranges + 0x0000000000000798 0x38 obj/flash_tc.o + .debug_aranges + 0x00000000000007d0 0x30 obj/flash_board_lowlevel.o + .debug_aranges + 0x0000000000000800 0x60 obj/flash_trace.o + .debug_aranges + 0x0000000000000860 0x28 obj/flash_board_memories.o + .debug_aranges + 0x0000000000000888 0x28 obj/flash_Media.o + .debug_aranges + 0x00000000000008b0 0x208 obj/flash_sdmmc_mci.o + .debug_aranges + 0x0000000000000ab8 0x90 obj/flash_MEDSdcard.o + .debug_aranges + 0x0000000000000b48 0xa0 obj/flash_mci_hs.o + .debug_aranges + 0x0000000000000be8 0xd0 obj/flash_dma.o + .debug_aranges + 0x0000000000000cb8 0x48 obj/flash_dmad.o + .debug_aranges + 0x0000000000000d00 0x40 obj/flash_MEDRamDisk.o + .debug_aranges + 0x0000000000000d40 0x70 obj/flash_nvic.o + .debug_aranges + 0x0000000000000db0 0x188 obj/flash_exceptions.o + .debug_aranges + 0x0000000000000f38 0x20 obj/flash_board_cstartup_gnu.o + .debug_aranges + 0x0000000000000f58 0xc8 obj/flash_core_cm3.o + .debug_aranges + 0x0000000000001020 0x20 obj/flash_systick.o + .debug_aranges + 0x0000000000001040 0x90 obj/flash_main.o + .debug_aranges + 0x00000000000010d0 0x20 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_ranges 0x0000000000000000 0xe60 + .debug_ranges 0x0000000000000000 0x28 obj/flash_USBConfigurationDescriptor.o + .debug_ranges 0x0000000000000028 0x30 obj/flash_USBEndpointDescriptor.o + .debug_ranges 0x0000000000000058 0x18 obj/flash_USBFeatureRequest.o + .debug_ranges 0x0000000000000070 0x20 obj/flash_USBGenericDescriptor.o + .debug_ranges 0x0000000000000090 0x48 obj/flash_USBGenericRequest.o + .debug_ranges 0x00000000000000d8 0x18 obj/flash_USBGetDescriptorRequest.o + .debug_ranges 0x00000000000000f0 0x18 obj/flash_USBInterfaceRequest.o + .debug_ranges 0x0000000000000108 0x10 obj/flash_USBSetAddressRequest.o + .debug_ranges 0x0000000000000118 0x10 obj/flash_USBSetConfigurationRequest.o + .debug_ranges 0x0000000000000128 0x128 obj/flash_USBD_UDPHS.o + .debug_ranges 0x0000000000000250 0x10 obj/flash_USBDCallbacks_Initialized.o + .debug_ranges 0x0000000000000260 0x10 obj/flash_USBDCallbacks_Reset.o + .debug_ranges 0x0000000000000270 0x68 obj/flash_USBDDriver.o + .debug_ranges 0x00000000000002d8 0x10 obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_ranges 0x00000000000002e8 0x60 obj/flash_MSDDriver.o + .debug_ranges 0x0000000000000348 0x38 obj/flash_MSDDStateMachine.o + .debug_ranges 0x0000000000000380 0x38 obj/flash_MSDLun.o + .debug_ranges 0x00000000000003b8 0x78 obj/flash_SBCMethods.o + .debug_ranges 0x0000000000000430 0x28 obj/flash_led.o + .debug_ranges 0x0000000000000458 0x20 obj/flash_math.o + .debug_ranges 0x0000000000000478 0x78 obj/flash_stdio.o + .debug_ranges 0x00000000000004f0 0x28 obj/flash_dbgu.o + .debug_ranges 0x0000000000000518 0x58 obj/flash_pio.o + .debug_ranges 0x0000000000000570 0x50 obj/flash_pio_it.o + .debug_ranges 0x00000000000005c0 0x48 obj/flash_pmc.o + .debug_ranges 0x0000000000000608 0x28 obj/flash_tc.o + .debug_ranges 0x0000000000000630 0x20 obj/flash_board_lowlevel.o + .debug_ranges 0x0000000000000650 0x50 obj/flash_trace.o + .debug_ranges 0x00000000000006a0 0x18 obj/flash_board_memories.o + .debug_ranges 0x00000000000006b8 0x18 obj/flash_Media.o + .debug_ranges 0x00000000000006d0 0x228 obj/flash_sdmmc_mci.o + .debug_ranges 0x00000000000008f8 0x80 obj/flash_MEDSdcard.o + .debug_ranges 0x0000000000000978 0x90 obj/flash_mci_hs.o + .debug_ranges 0x0000000000000a08 0xc0 obj/flash_dma.o + .debug_ranges 0x0000000000000ac8 0x38 obj/flash_dmad.o + .debug_ranges 0x0000000000000b00 0x30 obj/flash_MEDRamDisk.o + .debug_ranges 0x0000000000000b30 0x60 obj/flash_nvic.o + .debug_ranges 0x0000000000000b90 0x178 obj/flash_exceptions.o + .debug_ranges 0x0000000000000d08 0x10 obj/flash_board_cstartup_gnu.o + .debug_ranges 0x0000000000000d18 0xb8 obj/flash_core_cm3.o + .debug_ranges 0x0000000000000dd0 0x10 obj/flash_systick.o + .debug_ranges 0x0000000000000de0 0x80 obj/flash_main.o + +.debug_line 0x0000000000000000 0x5c0b + .debug_line 0x0000000000000000 0x134 obj/flash_USBConfigurationDescriptor.o + .debug_line 0x0000000000000134 0xcc obj/flash_USBEndpointDescriptor.o + .debug_line 0x0000000000000200 0x8c obj/flash_USBFeatureRequest.o + .debug_line 0x000000000000028c 0xa5 obj/flash_USBGenericDescriptor.o + .debug_line 0x0000000000000331 0xf9 obj/flash_USBGenericRequest.o + .debug_line 0x000000000000042a 0x92 obj/flash_USBGetDescriptorRequest.o + .debug_line 0x00000000000004bc 0x8e obj/flash_USBInterfaceRequest.o + .debug_line 0x000000000000054a 0x7d obj/flash_USBSetAddressRequest.o + .debug_line 0x00000000000005c7 0x83 obj/flash_USBSetConfigurationRequest.o + .debug_line 0x000000000000064a 0x97d obj/flash_USBD_UDPHS.o + .debug_line 0x0000000000000fc7 0x6e obj/flash_USBDCallbacks_Initialized.o + .debug_line 0x0000000000001035 0x64 obj/flash_USBDCallbacks_Reset.o + .debug_line 0x0000000000001099 0x331 obj/flash_USBDDriver.o + .debug_line 0x00000000000013ca 0x6e obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_line 0x0000000000001438 0x2b1 obj/flash_MSDDriver.o + .debug_line 0x00000000000016e9 0x145 obj/flash_MSDDriverDescriptors.o + .debug_line 0x000000000000182e 0x239 obj/flash_MSDDStateMachine.o + .debug_line 0x0000000000001a67 0x19e obj/flash_MSDLun.o + .debug_line 0x0000000000001c05 0x4ca obj/flash_SBCMethods.o + .debug_line 0x00000000000020cf 0xfa obj/flash_led.o + .debug_line 0x00000000000021c9 0x7e obj/flash_math.o + .debug_line 0x0000000000002247 0x34f obj/flash_stdio.o + .debug_line 0x0000000000002596 0xe8 obj/flash_dbgu.o + .debug_line 0x000000000000267e 0x1a5 obj/flash_pio.o + .debug_line 0x0000000000002823 0x1aa obj/flash_pio_it.o + .debug_line 0x00000000000029cd 0x149 obj/flash_pmc.o + .debug_line 0x0000000000002b16 0xe8 obj/flash_tc.o + .debug_line 0x0000000000002bfe 0x14e obj/flash_board_lowlevel.o + .debug_line 0x0000000000002d4c 0x331 obj/flash_trace.o + .debug_line 0x000000000000307d 0xf7 obj/flash_board_memories.o + .debug_line 0x0000000000003174 0x81 obj/flash_Media.o + .debug_line 0x00000000000031f5 0xb74 obj/flash_sdmmc_mci.o + .debug_line 0x0000000000003d69 0x2f1 obj/flash_MEDSdcard.o + .debug_line 0x000000000000405a 0x5f0 obj/flash_mci_hs.o + .debug_line 0x000000000000464a 0x328 obj/flash_dma.o + .debug_line 0x0000000000004972 0x167 obj/flash_dmad.o + .debug_line 0x0000000000004ad9 0x168 obj/flash_MEDRamDisk.o + .debug_line 0x0000000000004c41 0x233 obj/flash_nvic.o + .debug_line 0x0000000000004e74 0x4c1 obj/flash_exceptions.o + .debug_line 0x0000000000005335 0xcc obj/flash_board_cstartup_gnu.o + .debug_line 0x0000000000005401 0x25f obj/flash_core_cm3.o + .debug_line 0x0000000000005660 0xcd obj/flash_systick.o + .debug_line 0x000000000000572d 0x28f obj/flash_main.o + .debug_line 0x00000000000059bc 0x103 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .debug_line 0x0000000000005abf 0x14c /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_str 0x0000000000000000 0x5664 + .debug_str 0x0000000000000000 0x2f2 obj/flash_USBConfigurationDescriptor.o + 0x304 (size before relaxing) + .debug_str 0x00000000000002f2 0xe9 obj/flash_USBEndpointDescriptor.o + 0x1c9 (size before relaxing) + .debug_str 0x00000000000003db 0xc0 obj/flash_USBFeatureRequest.o + 0x13b (size before relaxing) + .debug_str 0x000000000000049b 0x98 obj/flash_USBGenericDescriptor.o + 0x145 (size before relaxing) + .debug_str 0x0000000000000533 0x11d obj/flash_USBGenericRequest.o + 0x1df (size before relaxing) + .debug_str 0x0000000000000650 0x8d obj/flash_USBGetDescriptorRequest.o + 0x14f (size before relaxing) + .debug_str 0x00000000000006dd 0x7d obj/flash_USBInterfaceRequest.o + 0x13f (size before relaxing) + .debug_str 0x000000000000075a 0x55 obj/flash_USBSetAddressRequest.o + 0x117 (size before relaxing) + .debug_str 0x00000000000007af 0x67 obj/flash_USBSetConfigurationRequest.o + 0x129 (size before relaxing) + .debug_str 0x0000000000000816 0x91e obj/flash_USBD_UDPHS.o + 0xb49 (size before relaxing) + .debug_str 0x0000000000001134 0x54 obj/flash_USBDCallbacks_Initialized.o + 0x132 (size before relaxing) + .debug_str 0x0000000000001188 0x48 obj/flash_USBDCallbacks_Reset.o + 0xc3 (size before relaxing) + .debug_str 0x00000000000011d0 0x31c obj/flash_USBDDriver.o + 0x5a5 (size before relaxing) + .debug_str 0x00000000000014ec 0x74 obj/flash_USBDDriverCb_IfSettingChanged.o + 0x15f (size before relaxing) + .debug_str 0x0000000000001560 0x6ab obj/flash_MSDDriver.o + 0xabf (size before relaxing) + .debug_str 0x0000000000001c0b 0x159 obj/flash_MSDDriverDescriptors.o + 0x4ca (size before relaxing) + .debug_str 0x0000000000001d64 0x2cd obj/flash_MSDDStateMachine.o + 0x9cb (size before relaxing) + .debug_str 0x0000000000002031 0xac obj/flash_MSDLun.o + 0x688 (size before relaxing) + .debug_str 0x00000000000020dd 0x1f7 obj/flash_SBCMethods.o + 0xaaa (size before relaxing) + .debug_str 0x00000000000022d4 0x32c obj/flash_led.o + 0x3ed (size before relaxing) + .debug_str 0x0000000000002600 0x28 obj/flash_math.o + 0x118 (size before relaxing) + .debug_str 0x0000000000002628 0x44b obj/flash_stdio.o + 0x5c6 (size before relaxing) + .debug_str 0x0000000000002a73 0x191 obj/flash_dbgu.o + 0x324 (size before relaxing) + .debug_str 0x0000000000002c04 0xf7 obj/flash_pio.o + 0x581 (size before relaxing) + .debug_str 0x0000000000002cfb 0xfb obj/flash_pio_it.o + 0x614 (size before relaxing) + .debug_str 0x0000000000002df6 0xd9 obj/flash_pmc.o + 0x2da (size before relaxing) + .debug_str 0x0000000000002ecf 0xb2 obj/flash_tc.o + 0x145 (size before relaxing) + .debug_str 0x0000000000002f81 0x3df obj/flash_board_lowlevel.o + 0x5b2 (size before relaxing) + .debug_str 0x0000000000003360 0xb4 obj/flash_trace.o + 0x586 (size before relaxing) + .debug_str 0x0000000000003414 0x2d8 obj/flash_board_memories.o + 0x763 (size before relaxing) + .debug_str 0x00000000000036ec 0x54 obj/flash_Media.o + 0x222 (size before relaxing) + .debug_str 0x0000000000003740 0x76e obj/flash_sdmmc_mci.o + 0x945 (size before relaxing) + .debug_str 0x0000000000003eae 0x178 obj/flash_MEDSdcard.o + 0x92d (size before relaxing) + .debug_str 0x0000000000004026 0x2f3 obj/flash_mci_hs.o + 0x72e (size before relaxing) + .debug_str 0x0000000000004319 0x339 obj/flash_dma.o + 0x47b (size before relaxing) + .debug_str 0x0000000000004652 0x177 obj/flash_dmad.o + 0x42c (size before relaxing) + .debug_str 0x00000000000047c9 0xbf obj/flash_MEDRamDisk.o + 0x2e8 (size before relaxing) + .debug_str 0x0000000000004888 0x596 obj/flash_nvic.o + 0x750 (size before relaxing) + .debug_str 0x0000000000004e1e 0x2f2 obj/flash_exceptions.o + 0x484 (size before relaxing) + .debug_str 0x0000000000005110 0x9d obj/flash_board_cstartup_gnu.o + 0x3cd (size before relaxing) + .debug_str 0x00000000000051ad 0x152 obj/flash_core_cm3.o + 0x263 (size before relaxing) + .debug_str 0x00000000000052ff 0x60 obj/flash_systick.o + 0x407 (size before relaxing) + .debug_str 0x000000000000535f 0x1d4 obj/flash_main.o + 0xc2a (size before relaxing) + .debug_str 0x0000000000005533 0x9d /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + 0x4ed (size before relaxing) + .debug_str 0x00000000000055d0 0x94 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + 0x137 (size before relaxing) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 obj/flash_USBConfigurationDescriptor.o + 0x12 (size before relaxing) + .comment 0x0000000000000000 0x12 obj/flash_USBEndpointDescriptor.o + .comment 0x0000000000000000 0x12 obj/flash_USBFeatureRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBGenericDescriptor.o + .comment 0x0000000000000000 0x12 obj/flash_USBGenericRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBGetDescriptorRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBInterfaceRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBSetAddressRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBSetConfigurationRequest.o + .comment 0x0000000000000000 0x12 obj/flash_USBD_UDPHS.o + .comment 0x0000000000000000 0x12 obj/flash_USBDCallbacks_Initialized.o + .comment 0x0000000000000000 0x12 obj/flash_USBDCallbacks_Reset.o + .comment 0x0000000000000000 0x12 obj/flash_USBDDriver.o + .comment 0x0000000000000000 0x12 obj/flash_USBDDriverCb_IfSettingChanged.o + .comment 0x0000000000000000 0x12 obj/flash_MSDDriver.o + .comment 0x0000000000000000 0x12 obj/flash_MSDDriverDescriptors.o + .comment 0x0000000000000000 0x12 obj/flash_MSDDStateMachine.o + .comment 0x0000000000000000 0x12 obj/flash_MSDLun.o + .comment 0x0000000000000000 0x12 obj/flash_SBCMethods.o + .comment 0x0000000000000000 0x12 obj/flash_led.o + .comment 0x0000000000000000 0x12 obj/flash_math.o + .comment 0x0000000000000000 0x12 obj/flash_stdio.o + .comment 0x0000000000000000 0x12 obj/flash_dbgu.o + .comment 0x0000000000000000 0x12 obj/flash_pio.o + .comment 0x0000000000000000 0x12 obj/flash_pio_it.o + .comment 0x0000000000000000 0x12 obj/flash_pmc.o + .comment 0x0000000000000000 0x12 obj/flash_tc.o + .comment 0x0000000000000000 0x12 obj/flash_board_lowlevel.o + .comment 0x0000000000000000 0x12 obj/flash_trace.o + .comment 0x0000000000000000 0x12 obj/flash_board_memories.o + .comment 0x0000000000000000 0x12 obj/flash_Media.o + .comment 0x0000000000000000 0x12 obj/flash_sdmmc_mci.o + .comment 0x0000000000000000 0x12 obj/flash_MEDSdcard.o + .comment 0x0000000000000000 0x12 obj/flash_mci_hs.o + .comment 0x0000000000000000 0x12 obj/flash_dma.o + .comment 0x0000000000000000 0x12 obj/flash_dmad.o + .comment 0x0000000000000000 0x12 obj/flash_MEDRamDisk.o + .comment 0x0000000000000000 0x12 obj/flash_nvic.o + .comment 0x0000000000000000 0x12 obj/flash_exceptions.o + .comment 0x0000000000000000 0x12 obj/flash_board_cstartup_gnu.o + .comment 0x0000000000000000 0x12 obj/flash_core_cm3.o + .comment 0x0000000000000000 0x12 obj/flash_systick.o + .comment 0x0000000000000000 0x12 obj/flash_main.o + .comment 0x0000000000000000 0x12 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .comment 0x0000000000000000 0x12 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.ARM.attributes + 0x0000000000000000 0x33 + .ARM.attributes + 0x0000000000000000 0x31 obj/flash_USBConfigurationDescriptor.o + .ARM.attributes + 0x0000000000000031 0x31 obj/flash_USBEndpointDescriptor.o + .ARM.attributes + 0x0000000000000062 0x31 obj/flash_USBFeatureRequest.o + .ARM.attributes + 0x0000000000000093 0x31 obj/flash_USBGenericDescriptor.o + .ARM.attributes + 0x00000000000000c4 0x31 obj/flash_USBGenericRequest.o + .ARM.attributes + 0x00000000000000f5 0x31 obj/flash_USBGetDescriptorRequest.o + .ARM.attributes + 0x0000000000000126 0x31 obj/flash_USBInterfaceRequest.o + .ARM.attributes + 0x0000000000000157 0x31 obj/flash_USBSetAddressRequest.o + .ARM.attributes + 0x0000000000000188 0x31 obj/flash_USBSetConfigurationRequest.o + .ARM.attributes + 0x00000000000001b9 0x31 obj/flash_USBD_UDPHS.o + .ARM.attributes + 0x00000000000001ea 0x31 obj/flash_USBDCallbacks_Initialized.o + .ARM.attributes + 0x000000000000021b 0x31 obj/flash_USBDCallbacks_Reset.o + .ARM.attributes + 0x000000000000024c 0x31 obj/flash_USBDDriver.o + .ARM.attributes + 0x000000000000027d 0x31 obj/flash_USBDDriverCb_IfSettingChanged.o + .ARM.attributes + 0x00000000000002ae 0x31 obj/flash_MSDDriver.o + .ARM.attributes + 0x00000000000002df 0x31 obj/flash_MSDDriverDescriptors.o + .ARM.attributes + 0x0000000000000310 0x31 obj/flash_MSDDStateMachine.o + .ARM.attributes + 0x0000000000000341 0x31 obj/flash_MSDLun.o + .ARM.attributes + 0x0000000000000372 0x31 obj/flash_SBCMethods.o + .ARM.attributes + 0x00000000000003a3 0x31 obj/flash_led.o + .ARM.attributes + 0x00000000000003d4 0x31 obj/flash_math.o + .ARM.attributes + 0x0000000000000405 0x31 obj/flash_stdio.o + .ARM.attributes + 0x0000000000000436 0x31 obj/flash_dbgu.o + .ARM.attributes + 0x0000000000000467 0x31 obj/flash_pio.o + .ARM.attributes + 0x0000000000000498 0x31 obj/flash_pio_it.o + .ARM.attributes + 0x00000000000004c9 0x31 obj/flash_pmc.o + .ARM.attributes + 0x00000000000004fa 0x31 obj/flash_tc.o + .ARM.attributes + 0x000000000000052b 0x31 obj/flash_board_lowlevel.o + .ARM.attributes + 0x000000000000055c 0x31 obj/flash_trace.o + .ARM.attributes + 0x000000000000058d 0x31 obj/flash_board_memories.o + .ARM.attributes + 0x00000000000005be 0x31 obj/flash_Media.o + .ARM.attributes + 0x00000000000005ef 0x31 obj/flash_sdmmc_mci.o + .ARM.attributes + 0x0000000000000620 0x31 obj/flash_MEDSdcard.o + .ARM.attributes + 0x0000000000000651 0x31 obj/flash_mci_hs.o + .ARM.attributes + 0x0000000000000682 0x31 obj/flash_dma.o + .ARM.attributes + 0x00000000000006b3 0x31 obj/flash_dmad.o + .ARM.attributes + 0x00000000000006e4 0x31 obj/flash_MEDRamDisk.o + .ARM.attributes + 0x0000000000000715 0x31 obj/flash_nvic.o + .ARM.attributes + 0x0000000000000746 0x31 obj/flash_exceptions.o + .ARM.attributes + 0x0000000000000777 0x31 obj/flash_board_cstartup_gnu.o + .ARM.attributes + 0x00000000000007a8 0x31 obj/flash_core_cm3.o + .ARM.attributes + 0x00000000000007d9 0x31 obj/flash_systick.o + .ARM.attributes + 0x000000000000080a 0x31 obj/flash_main.o + .ARM.attributes + 0x000000000000083b 0x32 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + .ARM.attributes + 0x000000000000086d 0x32 /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +.debug_frame 0x0000000000000000 0x3294 + .debug_frame 0x0000000000000000 0x84 obj/flash_USBConfigurationDescriptor.o + .debug_frame 0x0000000000000084 0x9c obj/flash_USBEndpointDescriptor.o + .debug_frame 0x0000000000000120 0x50 obj/flash_USBFeatureRequest.o + .debug_frame 0x0000000000000170 0x68 obj/flash_USBGenericDescriptor.o + .debug_frame 0x00000000000001d8 0xf4 obj/flash_USBGenericRequest.o + .debug_frame 0x00000000000002cc 0x50 obj/flash_USBGetDescriptorRequest.o + .debug_frame 0x000000000000031c 0x50 obj/flash_USBInterfaceRequest.o + .debug_frame 0x000000000000036c 0x30 obj/flash_USBSetAddressRequest.o + .debug_frame 0x000000000000039c 0x30 obj/flash_USBSetConfigurationRequest.o + .debug_frame 0x00000000000003cc 0x41c obj/flash_USBD_UDPHS.o + .debug_frame 0x00000000000007e8 0x2c obj/flash_USBDCallbacks_Initialized.o + .debug_frame 0x0000000000000814 0x28 obj/flash_USBDCallbacks_Reset.o + .debug_frame 0x000000000000083c 0x188 obj/flash_USBDDriver.o + .debug_frame 0x00000000000009c4 0x2c obj/flash_USBDDriverCb_IfSettingChanged.o + .debug_frame 0x00000000000009f0 0x160 obj/flash_MSDDriver.o + .debug_frame 0x0000000000000b50 0xc8 obj/flash_MSDDStateMachine.o + .debug_frame 0x0000000000000c18 0xc8 obj/flash_MSDLun.o + .debug_frame 0x0000000000000ce0 0x1c4 obj/flash_SBCMethods.o + .debug_frame 0x0000000000000ea4 0x90 obj/flash_led.o + .debug_frame 0x0000000000000f34 0x64 obj/flash_math.o + .debug_frame 0x0000000000000f98 0x1ec obj/flash_stdio.o + .debug_frame 0x0000000000001184 0x78 obj/flash_dbgu.o + .debug_frame 0x00000000000011fc 0x12c obj/flash_pio.o + .debug_frame 0x0000000000001328 0x114 obj/flash_pio_it.o + .debug_frame 0x000000000000143c 0xe8 obj/flash_pmc.o + .debug_frame 0x0000000000001524 0x84 obj/flash_tc.o + .debug_frame 0x00000000000015a8 0x68 obj/flash_board_lowlevel.o + .debug_frame 0x0000000000001610 0x130 obj/flash_trace.o + .debug_frame 0x0000000000001740 0x4c obj/flash_board_memories.o + .debug_frame 0x000000000000178c 0x50 obj/flash_Media.o + .debug_frame 0x00000000000017dc 0x7a8 obj/flash_sdmmc_mci.o + .debug_frame 0x0000000000001f84 0x1e4 obj/flash_MEDSdcard.o + .debug_frame 0x0000000000002168 0x220 obj/flash_mci_hs.o + .debug_frame 0x0000000000002388 0x2b0 obj/flash_dma.o + .debug_frame 0x0000000000002638 0xd0 obj/flash_dmad.o + .debug_frame 0x0000000000002708 0xa8 obj/flash_MEDRamDisk.o + .debug_frame 0x00000000000027b0 0x158 obj/flash_nvic.o + .debug_frame 0x0000000000002908 0x488 obj/flash_exceptions.o + .debug_frame 0x0000000000002d90 0x30 obj/flash_board_cstartup_gnu.o + .debug_frame 0x0000000000002dc0 0x2b8 obj/flash_core_cm3.o + .debug_frame 0x0000000000003078 0x2c obj/flash_systick.o + .debug_frame 0x00000000000030a4 0x1c4 obj/flash_main.o + .debug_frame 0x0000000000003268 0x2c /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + +Cross Reference Table + +Symbol File +ADCC0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +ADCC1_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +BOARD_ConfigureNandFlash obj/flash_board_memories.o +BOARD_ConfigurePsram obj/flash_board_memories.o +BusFault_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +BusFault_HandlerBody obj/flash_exceptions.o +ConfigureTc0 obj/flash_main.o +DBGU_Configure obj/flash_dbgu.o + obj/flash_main.o +DBGU_GetChar obj/flash_dbgu.o + obj/flash_trace.o +DBGU_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +DBGU_IsRxReady obj/flash_dbgu.o +DBGU_PutChar obj/flash_dbgu.o + obj/flash_sdmmc_mci.o + obj/flash_trace.o +DMAD_BufferTransfer obj/flash_dmad.o +DMAD_Configure_Buffer obj/flash_dmad.o +DMAD_Configure_TransferController obj/flash_dmad.o +DMAD_Handler obj/flash_dmad.o +DMAD_Initialize obj/flash_dmad.o + obj/flash_MEDSdcard.o +DMAD_IsFinished obj/flash_dmad.o +DMA_ClearAutoMode obj/flash_dma.o + obj/flash_dmad.o +DMA_Config obj/flash_dma.o +DMA_Disable obj/flash_dma.o +DMA_DisableChannel obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_DisableChannels obj/flash_dma.o +DMA_DisableIt obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_Enable obj/flash_dma.o + obj/flash_dmad.o +DMA_EnableChannel obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_EnableChannels obj/flash_dma.o +DMA_EnableIt obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_GetChannelStatus obj/flash_dma.o + obj/flash_dmad.o +DMA_GetInterruptMask obj/flash_dma.o + obj/flash_mci_hs.o +DMA_GetMaskedStatus obj/flash_dma.o +DMA_GetStatus obj/flash_dma.o + obj/flash_dmad.o +DMA_KeeponChannel obj/flash_dma.o + obj/flash_dmad.o +DMA_SetConfiguration obj/flash_dma.o + obj/flash_mci_hs.o +DMA_SetDescriptorAddr obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_SetDestBufferMode obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_SetDestinationAddr obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_SetFlowControl obj/flash_dma.o +DMA_SetSourceAddr obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_SetSourceBufferMode obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DMA_SetSourceBufferSize obj/flash_dma.o + obj/flash_dmad.o + obj/flash_mci_hs.o +DebugMon_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +DecodeR1 obj/flash_sdmmc_mci.o +DecodeR2 obj/flash_sdmmc_mci.o +EFC0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +EFC1_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +FaultReport obj/flash_exceptions.o +GetTransSpeedValue obj/flash_sdmmc_mci.o +HDMA_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +HSMC4_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +HardFault_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +HardFault_HandlerBody obj/flash_exceptions.o +IRQ_ConfigureIT obj/flash_nvic.o + obj/flash_main.o + obj/flash_dmad.o + obj/flash_MEDSdcard.o + obj/flash_pio_it.o + obj/flash_USBDCallbacks_Initialized.o +IRQ_DisableIT obj/flash_nvic.o +IRQ_EnableIT obj/flash_nvic.o + obj/flash_main.o + obj/flash_dmad.o + obj/flash_MEDSdcard.o + obj/flash_pio_it.o + obj/flash_USBDCallbacks_Initialized.o +ISR_Media obj/flash_main.o +ISR_Vbus obj/flash_main.o +IrqHandlerNotUsed obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +LED_Clear obj/flash_led.o + obj/flash_main.o + obj/flash_USBD_UDPHS.o +LED_Configure obj/flash_led.o + obj/flash_main.o +LED_Set obj/flash_led.o + obj/flash_main.o + obj/flash_USBD_UDPHS.o +LED_Toggle obj/flash_led.o +LUN_Eject obj/flash_MSDLun.o + obj/flash_main.o +LUN_Init obj/flash_MSDLun.o + obj/flash_main.o +LUN_Read obj/flash_MSDLun.o + obj/flash_SBCMethods.o +LUN_Write obj/flash_MSDLun.o + obj/flash_SBCMethods.o +LowLevelInit obj/flash_board_lowlevel.o + obj/flash_board_cstartup_gnu.o +MCI0_IrqHandler obj/flash_MEDSdcard.o + obj/flash_board_cstartup_gnu.o +MCI_CheckBusy obj/flash_mci_hs.o +MCI_Close obj/flash_mci_hs.o + obj/flash_sdmmc_mci.o +MCI_Enable obj/flash_mci_hs.o +MCI_EnableHsMode obj/flash_mci_hs.o + obj/flash_sdmmc_mci.o +MCI_FifoTransfer obj/flash_mci_hs.o +MCI_GetSpeed obj/flash_mci_hs.o +MCI_Handler obj/flash_mci_hs.o + obj/flash_MEDSdcard.o +MCI_Init obj/flash_mci_hs.o + obj/flash_MEDSdcard.o +MCI_IsTxComplete obj/flash_mci_hs.o + obj/flash_sdmmc_mci.o +MCI_Reset obj/flash_mci_hs.o +MCI_SendCommand obj/flash_mci_hs.o + obj/flash_sdmmc_mci.o +MCI_SetBusWidth obj/flash_mci_hs.o + obj/flash_sdmmc_mci.o +MCI_SetSpeed obj/flash_mci_hs.o + obj/flash_MEDSdcard.o +MEDRamDisk_Initialize obj/flash_MEDRamDisk.o +MEDSdcard_Detect obj/flash_MEDSdcard.o + obj/flash_main.o +MEDSdcard_EraseAll obj/flash_MEDSdcard.o +MEDSdcard_EraseBlock obj/flash_MEDSdcard.o +MEDSdcard_GetDriver obj/flash_MEDSdcard.o +MEDSdcard_Initialize obj/flash_MEDSdcard.o +MEDSdusb_Initialize obj/flash_MEDSdcard.o + obj/flash_main.o +MED_HandleAll obj/flash_Media.o + obj/flash_main.o +MMC_GetBootSizeKB obj/flash_sdmmc_mci.o +MMC_GetTotalSizeKB obj/flash_sdmmc_mci.o +MSDCallbacks_Data obj/flash_main.o +MSDD_Halt obj/flash_MSDDriver.o + obj/flash_MSDDStateMachine.o +MSDD_IsHalted obj/flash_MSDDriver.o + obj/flash_MSDDStateMachine.o +MSDD_Read obj/flash_MSDDriver.o + obj/flash_SBCMethods.o + obj/flash_MSDDStateMachine.o +MSDD_StateMachine obj/flash_MSDDStateMachine.o + obj/flash_MSDDriver.o +MSDD_Write obj/flash_MSDDriver.o + obj/flash_SBCMethods.o + obj/flash_MSDDStateMachine.o +MSDDriver_Initialize obj/flash_MSDDriver.o + obj/flash_main.o +MSDDriver_RemoteWakeUp obj/flash_MSDDriver.o +MSDDriver_RequestHandler obj/flash_MSDDriver.o +MSDDriver_StateMachine obj/flash_MSDDriver.o + obj/flash_main.o +MemManage_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +MemManage_HandlerBody obj/flash_exceptions.o +NMI_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +NVIC_ClrPending obj/flash_nvic.o +NVIC_SetPending obj/flash_nvic.o +NVIC_Swi obj/flash_nvic.o +PIOA_IrqHandler obj/flash_pio_it.o + obj/flash_board_cstartup_gnu.o +PIOB_IrqHandler obj/flash_pio_it.o + obj/flash_board_cstartup_gnu.o +PIOC_IrqHandler obj/flash_pio_it.o + obj/flash_board_cstartup_gnu.o +PIO_Clear obj/flash_pio.o + obj/flash_led.o +PIO_Configure obj/flash_pio.o + obj/flash_main.o + obj/flash_MEDSdcard.o + obj/flash_board_memories.o + obj/flash_led.o +PIO_ConfigureIt obj/flash_pio_it.o + obj/flash_main.o +PIO_DisableIt obj/flash_pio_it.o +PIO_EnableIt obj/flash_pio_it.o + obj/flash_main.o +PIO_Get obj/flash_pio.o + obj/flash_main.o + obj/flash_MEDSdcard.o +PIO_GetOutputDataStatus obj/flash_pio.o + obj/flash_led.o +PIO_IT_InterruptHandler obj/flash_pio_it.o +PIO_InitializeInterrupts obj/flash_pio_it.o + obj/flash_main.o +PIO_Set obj/flash_pio.o + obj/flash_led.o +PMC_CPUInIdleMode obj/flash_pmc.o +PMC_DisableAllPeripherals obj/flash_pmc.o +PMC_DisablePeripheral obj/flash_pmc.o +PMC_DisableProcessorClock obj/flash_pmc.o +PMC_EnableAllPeripherals obj/flash_pmc.o +PMC_EnablePeripheral obj/flash_pmc.o +PMC_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +PMC_IsAllPeriphEnabled obj/flash_pmc.o +PMC_IsPeriphEnabled obj/flash_pmc.o +PWM_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +PendSV_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +PutChar obj/flash_stdio.o +PutHexa obj/flash_stdio.o +PutSignedInt obj/flash_stdio.o +PutString obj/flash_stdio.o +PutUnsignedInt obj/flash_stdio.o +RSTC_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +RTC_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +RTT_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +ResetException obj/flash_board_cstartup_gnu.o +SBC_GetCommandInformation obj/flash_SBCMethods.o + obj/flash_MSDDStateMachine.o +SBC_ProcessCommand obj/flash_SBCMethods.o + obj/flash_MSDDStateMachine.o +SBC_UpdateSenseData obj/flash_SBCMethods.o + obj/flash_MSDDStateMachine.o +SDIO_DisplayCardInformation obj/flash_sdmmc_mci.o +SDIO_ReadBytes obj/flash_sdmmc_mci.o +SDIO_ReadDirect obj/flash_sdmmc_mci.o +SDIO_WriteBytes obj/flash_sdmmc_mci.o +SDIO_WriteDirect obj/flash_sdmmc_mci.o +SD_BusWidth obj/flash_sdmmc_mci.o +SD_DisplayRegisterCID obj/flash_sdmmc_mci.o +SD_DisplayRegisterCSD obj/flash_sdmmc_mci.o +SD_DisplayRegisterECSD obj/flash_sdmmc_mci.o +SD_DisplayRegisterSCR obj/flash_sdmmc_mci.o +SD_DisplaySdStatus obj/flash_sdmmc_mci.o +SD_HighSpeedMode obj/flash_sdmmc_mci.o +SD_Init obj/flash_sdmmc_mci.o + obj/flash_MEDSdcard.o +SD_Read obj/flash_sdmmc_mci.o + obj/flash_MEDSdcard.o +SD_ReadBlock obj/flash_sdmmc_mci.o + obj/flash_MEDSdcard.o +SD_Stop obj/flash_sdmmc_mci.o +SD_Write obj/flash_sdmmc_mci.o + obj/flash_MEDSdcard.o +SD_WriteBlock obj/flash_sdmmc_mci.o + obj/flash_MEDSdcard.o +SPI0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +SSC0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +SUPC_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +SVC_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +SYS_IrqHandler obj/flash_exceptions.o +SetDefaultMaster obj/flash_board_lowlevel.o +SetFlashWaitState obj/flash_board_lowlevel.o +SysTick_Configure obj/flash_systick.o +SysTick_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +TC0_IrqHandler obj/flash_main.o + obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +TC1_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +TC2_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +TC_Configure obj/flash_tc.o + obj/flash_main.o +TC_FindMckDivisor obj/flash_tc.o + obj/flash_main.o +TC_Start obj/flash_tc.o + obj/flash_main.o +TC_Stop obj/flash_tc.o +TRACE_DumpFrame obj/flash_trace.o +TRACE_DumpMemory obj/flash_trace.o +TRACE_GetHexa32 obj/flash_trace.o +TRACE_GetInteger obj/flash_trace.o +TRACE_GetIntegerMinMax obj/flash_trace.o +TWI0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +TWI1_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +USART0_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +USART1_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +USART2_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +USART3_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +USBConfigurationDescriptor_GetNumInterfaces obj/flash_USBConfigurationDescriptor.o +USBConfigurationDescriptor_GetTotalLength obj/flash_USBConfigurationDescriptor.o + obj/flash_USBDDriver.o +USBConfigurationDescriptor_IsSelfPowered obj/flash_USBConfigurationDescriptor.o + obj/flash_USBDDriver.o +USBConfigurationDescriptor_Parse obj/flash_USBConfigurationDescriptor.o + obj/flash_USBDDriver.o +USBDCallbacks_Initialized obj/flash_USBDCallbacks_Initialized.o + obj/flash_USBD_UDPHS.o +USBDCallbacks_RequestReceived obj/flash_MSDDriver.o + obj/flash_USBD_UDPHS.o +USBDCallbacks_Reset obj/flash_USBDCallbacks_Reset.o + obj/flash_USBD_UDPHS.o +USBDCallbacks_Resumed obj/flash_main.o + obj/flash_USBD_UDPHS.o +USBDCallbacks_Suspended obj/flash_main.o + obj/flash_USBD_UDPHS.o +USBDDriverCallbacks_ConfigurationChanged obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBDDriverCallbacks_InterfaceSettingChanged obj/flash_USBDDriverCb_IfSettingChanged.o + obj/flash_USBDDriver.o +USBDDriver_Initialize obj/flash_USBDDriver.o + obj/flash_MSDDriver.o +USBDDriver_IsRemoteWakeUpEnabled obj/flash_USBDDriver.o + obj/flash_MSDDriver.o +USBDDriver_RequestHandler obj/flash_USBDDriver.o + obj/flash_MSDDriver.o +USBD_ConfigureEndpoint obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_ConfigureSpeed obj/flash_USBD_UDPHS.o +USBD_Connect obj/flash_USBD_UDPHS.o + obj/flash_main.o +USBD_Disconnect obj/flash_USBD_UDPHS.o + obj/flash_main.o +USBD_GetState obj/flash_USBD_UDPHS.o + obj/flash_main.o + obj/flash_MSDDriver.o +USBD_Halt obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBD_Init obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o +USBD_IrqHandler obj/flash_USBD_UDPHS.o + obj/flash_board_cstartup_gnu.o + obj/flash_USBDCallbacks_Initialized.o +USBD_IsHalted obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBD_IsHighSpeed obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_MblReuse obj/flash_USBD_UDPHS.o +USBD_MblWrite obj/flash_USBD_UDPHS.o +USBD_Read obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o +USBD_RemoteWakeUp obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o +USBD_SetAddress obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_SetConfiguration obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_Stall obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBD_Test obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_Unhalt obj/flash_USBD_UDPHS.o + obj/flash_USBDDriver.o +USBD_Write obj/flash_USBD_UDPHS.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBEndpointDescriptor_GetDirection obj/flash_USBEndpointDescriptor.o + obj/flash_USBD_UDPHS.o +USBEndpointDescriptor_GetInterval obj/flash_USBEndpointDescriptor.o +USBEndpointDescriptor_GetMaxPacketSize obj/flash_USBEndpointDescriptor.o + obj/flash_USBD_UDPHS.o +USBEndpointDescriptor_GetNumber obj/flash_USBEndpointDescriptor.o + obj/flash_USBD_UDPHS.o +USBEndpointDescriptor_GetType obj/flash_USBEndpointDescriptor.o + obj/flash_USBD_UDPHS.o +USBFeatureRequest_GetFeatureSelector obj/flash_USBFeatureRequest.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBFeatureRequest_GetTestSelector obj/flash_USBFeatureRequest.o + obj/flash_USBDDriver.o +USBGenericDescriptor_GetLength obj/flash_USBGenericDescriptor.o + obj/flash_USBDDriver.o + obj/flash_USBConfigurationDescriptor.o +USBGenericDescriptor_GetNextDescriptor obj/flash_USBGenericDescriptor.o + obj/flash_USBConfigurationDescriptor.o +USBGenericDescriptor_GetType obj/flash_USBGenericDescriptor.o + obj/flash_USBConfigurationDescriptor.o +USBGenericRequest_GetDirection obj/flash_USBGenericRequest.o +USBGenericRequest_GetEndpointNumber obj/flash_USBGenericRequest.o + obj/flash_USBDDriver.o +USBGenericRequest_GetIndex obj/flash_USBGenericRequest.o + obj/flash_USBDDriver.o + obj/flash_USBInterfaceRequest.o + obj/flash_USBFeatureRequest.o +USBGenericRequest_GetLength obj/flash_USBGenericRequest.o + obj/flash_USBDDriver.o +USBGenericRequest_GetRecipient obj/flash_USBGenericRequest.o + obj/flash_USBDDriver.o +USBGenericRequest_GetRequest obj/flash_USBGenericRequest.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o +USBGenericRequest_GetType obj/flash_USBGenericRequest.o +USBGenericRequest_GetValue obj/flash_USBGenericRequest.o + obj/flash_USBSetConfigurationRequest.o + obj/flash_USBSetAddressRequest.o + obj/flash_USBInterfaceRequest.o + obj/flash_USBGetDescriptorRequest.o + obj/flash_USBFeatureRequest.o +USBGetDescriptorRequest_GetDescriptorIndex obj/flash_USBGetDescriptorRequest.o + obj/flash_USBDDriver.o +USBGetDescriptorRequest_GetDescriptorType obj/flash_USBGetDescriptorRequest.o + obj/flash_USBDDriver.o +USBInterfaceRequest_GetAlternateSetting obj/flash_USBInterfaceRequest.o + obj/flash_USBDDriver.o +USBInterfaceRequest_GetInterface obj/flash_USBInterfaceRequest.o + obj/flash_USBDDriver.o +USBSetAddressRequest_GetAddress obj/flash_USBSetAddressRequest.o + obj/flash_USBDDriver.o +USBSetConfigurationRequest_GetConfiguration obj/flash_USBSetConfigurationRequest.o + obj/flash_USBDDriver.o +USBState obj/flash_main.o +UsageFault_Handler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +UsageFault_HandlerBody obj/flash_exceptions.o +WDT_IrqHandler obj/flash_exceptions.o + obj/flash_board_cstartup_gnu.o +__LDREXB obj/flash_core_cm3.o +__LDREXH obj/flash_core_cm3.o +__LDREXW obj/flash_core_cm3.o +__RBIT obj/flash_core_cm3.o +__REV obj/flash_core_cm3.o +__REV16 obj/flash_core_cm3.o +__REVSH obj/flash_core_cm3.o +__STREXB obj/flash_core_cm3.o +__STREXH obj/flash_core_cm3.o +__STREXW obj/flash_core_cm3.o +__get_BASEPRI obj/flash_core_cm3.o +__get_CONTROL obj/flash_core_cm3.o +__get_FAULTMASK obj/flash_core_cm3.o +__get_MSP obj/flash_core_cm3.o +__get_PRIMASK obj/flash_core_cm3.o +__get_PSP obj/flash_core_cm3.o +__set_BASEPRI obj/flash_core_cm3.o +__set_CONTROL obj/flash_core_cm3.o +__set_FAULTMASK obj/flash_core_cm3.o +__set_MSP obj/flash_core_cm3.o +__set_PRIMASK obj/flash_core_cm3.o +__set_PSP obj/flash_core_cm3.o +_efixed obj/flash_board_cstartup_gnu.o +_erelocate obj/flash_board_cstartup_gnu.o +_estack obj/flash_board_cstartup_gnu.o +_ezero obj/flash_board_cstartup_gnu.o +_global_impure_ptr /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) +_impure_ptr /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-impure.o) + obj/flash_trace.o + obj/flash_stdio.o +_sfixed obj/flash_board_cstartup_gnu.o +_srelocate obj/flash_board_cstartup_gnu.o +_szero obj/flash_board_cstartup_gnu.o +absv obj/flash_math.o +exception_table obj/flash_board_cstartup_gnu.o +fprintf obj/flash_stdio.o +fputc obj/flash_trace.o +fputs obj/flash_trace.o + obj/flash_stdio.o +gSdmmcAutoHsEnable obj/flash_sdmmc_mci.o +luns obj/flash_main.o +main obj/flash_main.o + obj/flash_board_cstartup_gnu.o +medias obj/flash_main.o +memset /usr/local/arm-cortex-toolchain/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-memset.o) + obj/flash_MEDSdcard.o + obj/flash_board_memories.o +min obj/flash_math.o +msdBuffer obj/flash_main.o +msdDriverDescriptors obj/flash_MSDDriverDescriptors.o + obj/flash_MSDDriver.o +msdFullCnt obj/flash_main.o +msdNullCnt obj/flash_main.o +msdReadTotal obj/flash_main.o +msdWriteTotal obj/flash_main.o +numMedias obj/flash_Media.o + obj/flash_main.o +power obj/flash_math.o +printf obj/flash_stdio.o + obj/flash_main.o + obj/flash_exceptions.o + obj/flash_MEDRamDisk.o + obj/flash_dmad.o + obj/flash_dma.o + obj/flash_mci_hs.o + obj/flash_MEDSdcard.o + obj/flash_sdmmc_mci.o + obj/flash_trace.o + obj/flash_pmc.o + obj/flash_SBCMethods.o + obj/flash_MSDLun.o + obj/flash_MSDDStateMachine.o + obj/flash_MSDDriver.o + obj/flash_USBDDriver.o + obj/flash_USBD_UDPHS.o +putchar obj/flash_trace.o +puts obj/flash_stdio.o +r obj/flash_stdio.o +snprintf obj/flash_stdio.o +sprintf obj/flash_stdio.o +updateDelay obj/flash_main.o +updateView obj/flash_main.o +vfprintf obj/flash_stdio.o +vprintf obj/flash_stdio.o +vsnprintf obj/flash_stdio.o +vsprintf obj/flash_stdio.o diff --git a/usb-device-massstorage-project/main.c b/usb-device-massstorage-project/main.c new file mode 100644 index 0000000..2af5346 --- /dev/null +++ b/usb-device-massstorage-project/main.c @@ -0,0 +1,1154 @@ +/*---------------------------------------------------------------------------- + * ATMEL Microcontroller Software Support + * ---------------------------------------------------------------------------- + * Copyright (c) 2008, Atmel Corporation + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * Atmel's name may not be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * ---------------------------------------------------------------------------- + */ + +//----------------------------------------------------------------------------- +/// \dir "USB Device Mass Storage Project" +/// +/// !!!Purpose +/// +/// The USB Massstorage Project will help you to get familiar with the +/// USB Device Port(UDP) on AT91SAM microcontrollers. Also +/// it can help you to be familiar with the USB Framework that is used for +/// rapid development of USB-compliant class drivers such as USB Mass +/// Storage class (MSD). +/// +/// You can find following information depends on your needs: +/// - Sample usage of USB MSD driver. +/// - USB MSD driver development based on the AT91 USB Framework. +/// - USB enumerate sequence, the standard and class-specific descriptors and +/// requests handling. +/// - The initialize sequence and usage of UDP interface. +/// +/// !See +/// - memories: Storage Media interface for MSD +/// - usb: USB Framework, USB MSD driver and UDP interface driver +/// - "AT91 USB device framework" +/// - "USBD API" +/// - "massstorage" +/// - "USB MSD Driver" +/// +/// !!!Requirements +/// +/// This package can be used with all Atmel evaluation kits that have USB interface +/// +/// !!!Description +/// +/// When an EK running this program connected to a host (PC for example), with +/// USB cable, the EK appears as a USB Disk for the host. Then the host can +/// format/read/write on the disk. +/// +/// If there is SDRAM on the EK, the disk can be up to 10M so that read/write +/// speed can be tested. +/// +/// If there is no SDRAM but only internal flash, the disk is about 30K and +/// only small file can be tested. +/// +/// !!!Usage +/// +/// -# Build the program and download it inside the evaluation board. Please +/// refer to the +/// +/// SAM-BA User Guide, the +/// +/// GNU-Based Software Development application note or to the +/// +/// IAR EWARM User Guide, depending on your chosen solution. +/// -# On the computer, open and configure a terminal application +/// (e.g. HyperTerminal on Microsoft Windows) with these settings: +/// - 115200 bauds +/// - 8 bits of data +/// - No parity +/// - 1 stop bit +/// - No flow control +/// -# Start the application. +/// -# In the terminal window, the following text should appear: +/// \code +/// -- USB Device Mass Storage Project xxx -- +/// -- AT91xxxxxx-xx +/// -- Compiled: xxx xx xxxx xx:xx:xx -- +/// \endcode +/// -# When connecting USB cable to windows, the LED blinks, and the host +/// reports a new USB %device attachment and Disk installation. +/// . Then new "USB Mass Storage Device" and +/// "ATMEL Mass Storage MSD USB Device" and "Generic volume" appear in +/// hardware %device list. +/// -# You can find the new disk on host, and to create/write file to it. +/// +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +/// \unit +/// +/// !Purpose +/// +/// This file contains all the specific code for the +/// usb-device-massstorage-project +/// +/// !Contents +/// +/// The code can be roughly broken down as follows: +/// - Configuration functions +/// - VBus_Configure +/// - ConfigurePit +/// - ConfigureWakeUp +/// - PIO & Timer configurations in start of main +/// - Interrupt handlers +/// - ISR_Vbus +/// - ISR_Pit +/// - WakeUpHandler +/// - ISR_Media +/// - The main function, which implements the program behavior +/// +/// Please refer to the list of functions in the #Overview# tab of this unit +/// for more detailed information. +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Headers +//------------------------------------------------------------------------------ + +#include +#include +#include +#include +#include +#ifdef AT91C_BASE_PITC +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if defined(AT91C_EBI_SDRAM) +#include +#endif +#if defined(AT91C_BASE_DDR2C) +#include +#endif +#if defined(BOARD_SD_MCI_BASE) +#include +#endif +#if defined(CHIP_FLASH_EFC) || defined(CHIP_FLASH_EEFC) && !defined(cortexm3) +#include +#endif +#if defined(at91sam3uek) +#include +#endif +#if 0 +#include +#include +#include +#endif + +#include + +#include + +//------------------------------------------------------------------------------ +// Internal definitions +//------------------------------------------------------------------------------ + +/// Maximum number of LUNs which can be defined. +#define MAX_LUNS 3 + +/// Media index for different disks +#define DRV_RAMDISK 0 /// RAM disk +#define DRV_IFLASH 0 /// Internal flash, if no RAM disk +#define DRV_SDMMC 1 /// SD card, if there is +#define DRV_NAND 2 /// Nand flash, if there is + +/// Delay for pushbutton debouncing (ms) +#define DEBOUNCE_TIME 10 + +/// PIT period value (seconds) +#define PIT_PERIOD 1000 + +/// Delay for display view update (*250ms) +#define UPDATE_DELAY 4 + +/// Delay for waiting DBGU input (*250ms) +#define INPUT_DELAY 20 + +#if defined(at91sam3uek) +/// No reserved space for code in PSRAM +#define CODE_SIZE (0) +/// Size of the RAM disk in bytes (512K). +#define RAMDISK_SIZE (512*1024) +#else +/// Maximum code size 100K reserved for running in SDRAM and FLASH +#define CODE_SIZE (100*1024) +/// Size of the RAM disk in bytes (10M). +#define RAMDISK_SIZE (10*1024*1024) +#endif + +/// Size of the reserved Nand Flash (4M) +#define NF_RESERVE_SIZE (4*1024*1024) + +/// Size of the managed Nand Flash (128M) +#define NF_MANAGED_SIZE (128*1024*1024) + +/// Size of one block in bytes. +#define BLOCK_SIZE 512 + +/// Size of the MSD IO buffer in bytes (2K, more the better). +#define MSD_BUFFER_SIZE (12*BLOCK_SIZE) + +/// Use for power management +#define STATE_IDLE 0 +/// The USB device is in suspend state +#define STATE_SUSPEND 4 +/// The USB device is in resume state +#define STATE_RESUME 5 + +/// Retry 3 times when SD is inserted +#define SD_INIT_RETRY 3 + +//------------------------------------------------------------------------------ +// Global variables +//------------------------------------------------------------------------------ + +/// Available medias. +Media medias[MAX_LUNS]; + +//------------------------------------------------------------------------------ +// Internal variables +//------------------------------------------------------------------------------ + +/// Device LUNs. +MSDLun luns[MAX_LUNS]; + +/// LUN read/write buffer. +unsigned char msdBuffer[MSD_BUFFER_SIZE]; + +/// Total data read/write by MSD +unsigned int msdReadTotal = 0; +unsigned int msdWriteTotal = 0; +unsigned short msdFullCnt = 0; +unsigned short msdNullCnt = 0; + +/// Update delay counter, tick is 250ms +unsigned int updateDelay = UPDATE_DELAY; + +/// Flag to update Display View +unsigned char updateView = 0; + +/// State of USB, for suspend and resume +unsigned char USBState = STATE_IDLE; + +#if 0//#ifdef PINS_NANDFLASH +/// Pins used to access to nandflash. +static const Pin pPinsNf[] = {PINS_NANDFLASH}; +/// Nandflash device structure. +static struct TranslatedNandFlash translatedNf; +/// Address for transferring command bytes to the nandflash. +static unsigned int cmdBytesAddr = BOARD_NF_COMMAND_ADDR; +/// Address for transferring address bytes to the nandflash. +static unsigned int addrBytesAddr = BOARD_NF_ADDRESS_ADDR; +/// Address for transferring data bytes to the nandflash. +static unsigned int dataBytesAddr = BOARD_NF_DATA_ADDR; +/// Nandflash chip enable pin. +static const Pin nfCePin = BOARD_NF_CE_PIN; +/// Nandflash ready/busy pin. +static const Pin nfRbPin = BOARD_NF_RB_PIN; +#endif + +//------------------------------------------------------------------------------ +// Remote wake-up support (optional) +//------------------------------------------------------------------------------ +#if (BOARD_USB_BMATTRIBUTES == USBConfigurationDescriptor_BUSPOWERED_RWAKEUP) \ + || (BOARD_USB_BMATTRIBUTES == USBConfigurationDescriptor_SELFPOWERED_RWAKEUP) + +#define WAKEUP_CONFIGURE() ConfigureWakeUp() + +/// Button for Wake-UP the USB device. +static const Pin pinWakeUp = PIN_PUSHBUTTON_1; + +//------------------------------------------------------------------------------ +/// Interrupt service routine for the PIT. Debounces the wake-up pin input. +//------------------------------------------------------------------------------ +#if defined (AT91C_BASE_PITC) +static void ISR_Pit(void) +{ + static unsigned long debounceCounter = DEBOUNCE_TIME; + unsigned long pisr = 0; + + // Read the PISR + pisr = PIT_GetStatus() & AT91C_PITC_PITS; + + if (pisr != 0) { + + // Read the PIVR. It acknowledges the IT + PIT_GetPIVR(); + } + + // Button released + if (PIO_Get(&pinWakeUp)) { + + debounceCounter = DEBOUNCE_TIME; + } + // Button still pressed + else { + + debounceCounter--; + } + + // End of debounce time + if (debounceCounter == 0) { + + debounceCounter = DEBOUNCE_TIME; + PIT_DisableIT(); + AT91C_BASE_PITC->PITC_PIMR &= ~AT91C_PITC_PITEN; + MSDDriver_RemoteWakeUp(); + } +} + +//------------------------------------------------------------------------------ +/// Configures the PIT to generate 1ms ticks. +//------------------------------------------------------------------------------ +static void ConfigurePit(void) +{ + // Initialize and enable the PIT + PIT_Init(PIT_PERIOD, BOARD_MCK / 1000000); + + // Disable the interrupt on the interrupt controller + IRQ_DisableIT(AT91C_ID_SYS); + + // Configure the AIC for PIT interrupts + IRQ_ConfigureIT(AT91C_ID_SYS, 0, ISR_Pit); + + // Enable the interrupt on the interrupt controller + IRQ_EnableIT(AT91C_ID_SYS); + + // Enable the interrupt on the pit + PIT_EnableIT(); + + // Enable the pit + PIT_Enable(); +} +#endif // AT91C_BASE_PITC + +//------------------------------------------------------------------------------ +/// Interrupt service routine for the remote wake-up pin. Starts the debouncing +/// sequence. +//------------------------------------------------------------------------------ +static void WakeUpHandler(const Pin *pin) +{ + TRACE_DEBUG("Wake-up handler\n\r"); + + // Check current level on the remote wake-up pin + if (!PIO_Get(&pinWakeUp)) { +#ifdef AT91C_BASE_PITC + ConfigurePit(); +#endif // AT91C_BASE_PITC + } +} + +//------------------------------------------------------------------------------ +/// Configures the wake-up pin to generate interrupts. +//------------------------------------------------------------------------------ +static void ConfigureWakeUp(void) +{ + TRACE_INFO("Wake-up configuration\n\r"); + + // Configure PIO + PIO_Configure(&pinWakeUp, 1); + PIO_ConfigureIt(&pinWakeUp, WakeUpHandler); + PIO_EnableIt(&pinWakeUp); +} + +#else + #define WAKEUP_CONFIGURE() +#endif + +//------------------------------------------------------------------------------ +// VBus monitoring (optional) +//------------------------------------------------------------------------------ +#if defined(PIN_USB_VBUS) + +#define VBUS_CONFIGURE() VBus_Configure() + +/// VBus pin instance. +static const Pin pinVbus = PIN_USB_VBUS; + +//------------------------------------------------------------------------------ +/// Handles interrupts coming from PIO controllers. +//------------------------------------------------------------------------------ +void ISR_Vbus(const Pin *pPin) +{ + // Check current level on VBus + if (PIO_Get(&pinVbus)) { + + TRACE_INFO("VBUS conn\n\r"); + USBD_Connect(); + } + else { + + TRACE_INFO("VBUS discon\n\r"); + USBD_Disconnect(); + } +} + +//------------------------------------------------------------------------------ +/// Configures the VBus pin to trigger an interrupt when the level on that pin +/// changes. +//------------------------------------------------------------------------------ +static void VBus_Configure( void ) +{ + TRACE_INFO("VBus configuration\n\r"); + + // Configure PIO + PIO_Configure(&pinVbus, 1); + PIO_ConfigureIt(&pinVbus, ISR_Vbus); + PIO_EnableIt(&pinVbus); + + // Check current level on VBus + if (PIO_Get(&pinVbus)) { + + // if VBUS present, force the connect + TRACE_INFO("conn\n\r"); + USBD_Connect(); + } + else { + USBD_Disconnect(); + } +} + +#else + #define VBUS_CONFIGURE() USBD_Connect() +#endif //#if defined(PIN_USB_VBUS) + + +//------------------------------------------------------------------------------ +// Callbacks (re)-implementation +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +/// Invoked when the USB device leaves the Suspended state. By default, +/// configures the LEDs. +//------------------------------------------------------------------------------ +void USBDCallbacks_Resumed(void) +{ + // Initialize LEDs + LED_Configure(USBD_LEDPOWER); + LED_Set(USBD_LEDPOWER); + LED_Configure(USBD_LEDUSB); + LED_Clear(USBD_LEDUSB); + USBState = STATE_RESUME; +} + +//------------------------------------------------------------------------------ +/// Invoked when the USB device gets suspended. By default, turns off all LEDs. +//------------------------------------------------------------------------------ +void USBDCallbacks_Suspended(void) +{ + // Turn off LEDs + LED_Clear(USBD_LEDPOWER); + LED_Clear(USBD_LEDUSB); + USBState = STATE_SUSPEND; +} + +//------------------------------------------------------------------------------ +/// Invoked when the MSD finish a READ/WRITE. +/// \param flowDirection 1 - device to host (READ10) +/// 0 - host to device (WRITE10) +/// \param dataLength Length of data transferred in bytes. +/// \param fifoNullCount Times that FIFO is NULL to wait +/// \param fifoFullCount Times that FIFO is filled to wait +//------------------------------------------------------------------------------ +void MSDCallbacks_Data(unsigned char flowDirection, + unsigned int dataLength, + unsigned int fifoNullCount, + unsigned int fifoFullCount) +{ + if (flowDirection) { + + msdReadTotal += dataLength; + } + else { + + msdWriteTotal += dataLength; + } + + msdFullCnt += fifoFullCount; + msdNullCnt += fifoNullCount; +} + +//------------------------------------------------------------------------------ +// Internal functions +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +/// Interrupt handler for timer. +//------------------------------------------------------------------------------ +void TC0_IrqHandler(void) +{ + volatile unsigned int dummy; + // Clear status bit to acknowledge interrupt + dummy = AT91C_BASE_TC0->TC_SR; + + if (-- updateDelay == 0) { + + updateDelay = UPDATE_DELAY; + updateView = 1; + } +} + +//------------------------------------------------------------------------------ +/// Configure Timer Counter 0 to generate an interrupt every 250ms. +//------------------------------------------------------------------------------ +void ConfigureTc0(void) +{ + unsigned int div; + unsigned int tcclks; + + // Enable peripheral clock + AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TC0; + + // Configure TC for a 4Hz frequency and trigger on RC compare + TC_FindMckDivisor(4, BOARD_MCK, &div, &tcclks); + TC_Configure(AT91C_BASE_TC0, tcclks | AT91C_TC_CPCTRG); + AT91C_BASE_TC0->TC_RC = (BOARD_MCK / div) / 4; // timerFreq / desiredFreq + + // Configure and enable interrupt on RC compare + IRQ_ConfigureIT(AT91C_ID_TC0, 3, TC0_IrqHandler); + AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS; + IRQ_EnableIT(AT91C_ID_TC0); + + TC_Start(AT91C_BASE_TC0); +} + +//------------------------------------------------------------------------------ +/// Interrupt handler for all media types. +//------------------------------------------------------------------------------ +void ISR_Media(void) +{ + MED_HandleAll(medias, numMedias); +} + +#if defined(BOARD_SD_MCI_BASE) +//------------------------------------------------------------------------------ +/// SD card connection/disconnection handler, to initialize and link SD Media +/// to corresponding LUN or unlink it. +/// \param inserted SD card is inserted/ejected. +//------------------------------------------------------------------------------ +static unsigned char SDConnectionUpdate(unsigned char inserted) +{ + unsigned char rc; + if (inserted) { + #if 1 + // Faster, non-blocked SD access function + rc = MEDSdusb_Initialize(&(medias[DRV_SDMMC]), 0); + #else + // Blocked SD access function + rc = MEDSdcard_Initialize(&(medias[DRV_SDMMC]), 0); + #endif + if(rc) { + LUN_Init(&(luns[DRV_SDMMC]), &(medias[DRV_SDMMC]), + msdBuffer, MSD_BUFFER_SIZE, + 0, 0, 0, 0, + MSDCallbacks_Data); + return 1; + } + } + else { + LUN_Eject(&luns[DRV_SDMMC]); + } + return 0; +} +#endif + +#if 0//defined(PINS_NANDFLASH) +#define NandFlash_Configure(nfBusWidth) BOARD_ConfigureNandFlash(nfBusWidth) + +//------------------------------------------------------------------------------ +/// Initialize Nand Flash for LUN +//------------------------------------------------------------------------------ +static void NandFlashInitialize(void) +{ + unsigned char nfBusWidth = 16, nfRc; + unsigned short nfBaseBlock = 0; + struct RawNandFlash *pRaw = (struct RawNandFlash*)&translatedNf; + struct NandFlashModel *pModel = (struct NandFlashModel*)&translatedNf; + unsigned int nfMamagedSize; + + // Configure SMC for NandFlash + NandFlash_Configure(nfBusWidth); + // Configure PIO for Nand Flash + PIO_Configure(pPinsNf, PIO_LISTSIZE(pPinsNf)); + + // Nand Flash Initialize (ALL flash mapped) + nfRc = RawNandFlash_Initialize(pRaw, + 0, + cmdBytesAddr, + addrBytesAddr, + dataBytesAddr, + nfCePin, + nfRbPin); + if (nfRc) { + printf("Nand not found\n\r"); + return; + } + else { + printf("NF\tNb Blocks %d\n\r", + NandFlashModel_GetDeviceSizeInBlocks(pModel)); + printf("\tBlock Size %dK\n\r", + NandFlashModel_GetBlockSizeInBytes(pModel)/1024); + printf("\tPage Size %d\n\r", + NandFlashModel_GetPageDataSize(pModel)); + nfBaseBlock = + NF_RESERVE_SIZE / NandFlashModel_GetBlockSizeInBytes(pModel); + } + printf("NF disk will use area from %dM(B%d)\n\r", + NF_RESERVE_SIZE/1024/1024, nfBaseBlock); + printf("!! Erase the NF Disk? (y/n):"); + updateDelay = INPUT_DELAY; + updateView = 0; + while(1) { + if(DBGU_IsRxReady()) { + char key = DBGU_GetChar(); + DBGU_PutChar(key); + if (key == 'y') { + if (nfRc == 0) { + unsigned int block; + printf(" Erase from %d ... ", nfBaseBlock); + for (block = nfBaseBlock; + block < NandFlashModel_GetDeviceSizeInBlocks(pModel); + block ++) { + RawNandFlash_EraseBlock(pRaw, block); + } + printf("OK"); + } + } + printf("\n\r"); + break; + } + if (updateView) { + printf("No\n\r"); + break; + } + } + nfMamagedSize = ((NandFlashModel_GetDeviceSizeInMBytes(pModel) - NF_RESERVE_SIZE/1024/1024) > NF_MANAGED_SIZE/1024/1024) ? \ + NF_MANAGED_SIZE/1024/1024 : (NandFlashModel_GetDeviceSizeInMBytes(pModel) - NF_RESERVE_SIZE/1024/1024); + if (TranslatedNandFlash_Initialize(&translatedNf, + 0, + cmdBytesAddr, + addrBytesAddr, + dataBytesAddr, + nfCePin, + nfRbPin, + nfBaseBlock, nfMamagedSize * 1024 * 1024/NandFlashModel_GetBlockSizeInBytes(pModel))) { + printf("Nand init error\n\r"); + return; + } + // Check the data bus width of the NandFlash + nfBusWidth = + NandFlashModel_GetDataBusWidth(pModel); + NandFlash_Configure(nfBusWidth); + + // Media initialize + MEDNandFlash_Initialize(&medias[DRV_NAND], &translatedNf); + + // Initialize LUN + LUN_Init(&(luns[DRV_NAND]), &(medias[DRV_NAND]), + msdBuffer, MSD_BUFFER_SIZE, + 0, 0, 0, 0, + MSDCallbacks_Data); + + numMedias ++; +} +#endif + +#if !defined(cortexm3) + +//------------------------------------------------------------------------------ +/// Initialize memory for LUN +//------------------------------------------------------------------------------ +static void MemoryInitialization(void) +{ + unsigned int i; + for (i = 0; i < MAX_LUNS; i ++) + LUN_Init(&luns[i], 0, 0, 0, 0, 0, 0, 0, 0); + + // Memory initialization +#if defined(AT91C_BASE_DDR2C) + TRACE_INFO("MEM: DDR2\n\r"); + BOARD_ConfigureDdram(0, BOARD_DDRAM_BUSWIDTH); // Micron, 16 bit data bus size + + MEDDdram_Initialize(&(medias[DRV_RAMDISK]), + BLOCK_SIZE, + (unsigned int)(AT91C_DDR2 + CODE_SIZE) / BLOCK_SIZE, + RAMDISK_SIZE / BLOCK_SIZE); + LUN_Init(&(luns[DRV_RAMDISK]), &(medias[DRV_RAMDISK]), + msdBuffer, MSD_BUFFER_SIZE, + 0, 0, 0, 0, + MSDCallbacks_Data); + numMedias = 1; + +#elif defined(AT91C_EBI_SDRAM) + + TRACE_INFO("MEM: SDRAM\n\r"); +#if !defined(sdram) + BOARD_ConfigureSdram(BOARD_SDRAM_BUSWIDTH); +#endif + + MEDSdram_Initialize(&(medias[DRV_RAMDISK]), + BLOCK_SIZE, + (unsigned int)(AT91C_EBI_SDRAM + CODE_SIZE)/BLOCK_SIZE, + RAMDISK_SIZE / BLOCK_SIZE); + LUN_Init(&(luns[DRV_RAMDISK]), + &(medias[DRV_RAMDISK]), + msdBuffer, MSD_BUFFER_SIZE, + 0, 0, 0, 0, + MSDCallbacks_Data); + numMedias = 1; + +#endif // AT91C_EBI_SDRAM + + // SD Card +#if defined(BOARD_SD_MCI_BASE) + TRACE_DEBUG("MEM: SD Card\n\r"); + SDConnectionUpdate(1); + numMedias = 2; +#endif + + // Flash +#if defined(CHIP_FLASH_EFC) || defined(CHIP_FLASH_EEFC) + TRACE_INFO("MEM: Flash\n\r"); + if (numMedias == 0) { + + FLA_Initialize(&(medias[DRV_IFLASH]), AT91C_BASE_EFC); + LUN_Init(&(luns[DRV_IFLASH]), + &(medias[DRV_IFLASH]), + msdBuffer, MSD_BUFFER_SIZE, + CODE_SIZE, + AT91C_IFLASH_SIZE - CODE_SIZE, + BLOCK_SIZE, + 0, + MSDCallbacks_Data); + numMedias = 1; + } +#endif // #if defined(CHIP_FLASH_EFC) || defined(CHIP_FLASH_EEFC) +} +#else +static void MemoryInitialization(void) +{ + unsigned int i; + for (i = 0; i < MAX_LUNS; i ++) + LUN_Init(&luns[i], 0, 0, 0, 0, 0, 0, 0, 0); + + #if defined(AT91C_EBI_PSRAM) + // Currently working on Sam3u-PSRAM + BOARD_ConfigurePsram(); + + // Initialize 10M for ram disk & code. + if (1 != MEDRamDisk_Initialize(&(medias[DRV_RAMDISK]), + BLOCK_SIZE, + (AT91C_EBI_PSRAM + CODE_SIZE) / BLOCK_SIZE, + RAMDISK_SIZE / BLOCK_SIZE)) { + TRACE_ERROR("FAIL!\n\r"); + return; + } + // 512k Disk + LUN_Init(&(luns[DRV_RAMDISK]), &(medias[DRV_RAMDISK]), msdBuffer, + MSD_BUFFER_SIZE, 0, 0, 0, 0 , MSDCallbacks_Data); + #endif + + // SD Disk + // SDConnectionUpdate(1); + numMedias = 2; + + // Nand flash + //NandFlashInitialize(); +} +#endif + +#if defined (CP15_PRESENT) +//------------------------------------------------------------------------------ +/// Put the CPU in 32kHz, disable PLL, main oscillator +/// Put voltage regulator in standby mode +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ + PMC_CPUInIdleMode(); +} +//------------------------------------------------------------------------------ +/// Put voltage regulator in normal mode +/// Return the CPU to normal speed 48MHz, enable PLL, main oscillator +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ +} + +#elif defined(at91sam7a3) +//------------------------------------------------------------------------------ +/// Put the CPU in 32kHz, disable PLL, main oscillator +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ + // MCK=48MHz to MCK=32kHz + // MCK = SLCK/2 : change source first from 48 000 000 to 18. / 2 = 9M + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=SLCK : then change prescaler + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // disable PLL + AT91C_BASE_PMC->PMC_PLLR = 0; + // Disable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = 0; + + PMC_DisableProcessorClock(); +} +//------------------------------------------------------------------------------ +/// Return the CPU to normal speed 48MHz, enable PLL, main oscillator +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ + // MCK=32kHz to MCK=48MHz + // enable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = (( (AT91C_CKGR_OSCOUNT & (0x06 <<8)) | AT91C_CKGR_MOSCEN )); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS ) ); + + // enable PLL@96MHz + AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x0E) | + (AT91C_CKGR_PLLCOUNT & (28<<8)) | + (AT91C_CKGR_MUL & (0x48<<16))); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK ) ); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + AT91C_BASE_CKGR->CKGR_PLLR |= AT91C_CKGR_USBDIV_1 ; + // MCK=SLCK/2 : change prescaler first + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=PLLCK/2 : then change source + AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); +} + +#elif defined (at91sam7se) +//------------------------------------------------------------------------------ +/// Put the CPU in 32kHz, disable PLL, main oscillator +/// Put voltage regulator in standby mode +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ + // MCK=48MHz to MCK=32kHz + // MCK = SLCK/2 : change source first from 48 000 000 to 18. / 2 = 9M + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=SLCK : then change prescaler + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // disable PLL + AT91C_BASE_PMC->PMC_PLLR = 0; + // Disable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = 0; + + // Voltage regulator in standby mode : Enable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR |= AT91C_VREG_PSTDBY; + + PMC_DisableProcessorClock(); +} +//------------------------------------------------------------------------------ +/// Put voltage regulator in normal mode +/// Return the CPU to normal speed 48MHz, enable PLL, main oscillator +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ + // Voltage regulator in normal mode : Disable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR &= ~AT91C_VREG_PSTDBY; + + // MCK=32kHz to MCK=48MHz + // enable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = (( (AT91C_CKGR_OSCOUNT & (0x06 <<8)) | AT91C_CKGR_MOSCEN )); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS ) ); + + // enable PLL@96MHz + AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x0E) | + (AT91C_CKGR_PLLCOUNT & (28<<8)) | + (AT91C_CKGR_MUL & (0x48<<16))); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK ) ); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + AT91C_BASE_CKGR->CKGR_PLLR |= AT91C_CKGR_USBDIV_1 ; + // MCK=SLCK/2 : change prescaler first + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=PLLCK/2 : then change source + AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); +} + +#elif defined (at91sam7s) +//------------------------------------------------------------------------------ +/// Put the CPU in 32kHz, disable PLL, main oscillator +/// Put voltage regulator in standby mode +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ + // MCK=48MHz to MCK=32kHz + // MCK = SLCK/2 : change source first from 48 000 000 to 18. / 2 = 9M + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=SLCK : then change prescaler + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // disable PLL + AT91C_BASE_PMC->PMC_PLLR = 0; + // Disable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = 0; + + // Voltage regulator in standby mode : Enable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR |= AT91C_VREG_PSTDBY; + + PMC_DisableProcessorClock(); +} + +//------------------------------------------------------------------------------ +/// Put voltage regulator in normal mode +/// Return the CPU to normal speed 48MHz, enable PLL, main oscillator +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ + // Voltage regulator in normal mode : Disable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR &= ~AT91C_VREG_PSTDBY; + + // MCK=32kHz to MCK=48MHz + // enable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = (( (AT91C_CKGR_OSCOUNT & (0x06 <<8)) | AT91C_CKGR_MOSCEN )); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS ) ); + + // enable PLL@96MHz + AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x0E) | + (AT91C_CKGR_PLLCOUNT & (28<<8)) | + (AT91C_CKGR_MUL & (0x48<<16))); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK ) ); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + AT91C_BASE_CKGR->CKGR_PLLR |= AT91C_CKGR_USBDIV_1 ; + // MCK=SLCK/2 : change prescaler first + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=PLLCK/2 : then change source + AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + +} + +#elif defined (at91sam7x) || defined (at91sam7xc) +//------------------------------------------------------------------------------ +/// Put the CPU in 32kHz, disable PLL, main oscillator +/// Put voltage regulator in standby mode +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ + // MCK=48MHz to MCK=32kHz + // MCK = SLCK/2 : change source first from 48 000 000 to 18. / 2 = 9M + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=SLCK : then change prescaler + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // disable PLL + AT91C_BASE_PMC->PMC_PLLR = 0; + // Disable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = 0; + + // Voltage regulator in standby mode : Enable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR |= AT91C_VREG_PSTDBY; + + PMC_DisableProcessorClock(); +} + +//------------------------------------------------------------------------------ +/// Put voltage regulator in normal mode +/// Return the CPU to normal speed 48MHz, enable PLL, main oscillator +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ + // Voltage regulator in normal mode : Disable VREG Low Power Mode + AT91C_BASE_VREG->VREG_MR &= ~AT91C_VREG_PSTDBY; + + // MCK=32kHz to MCK=48MHz + // enable Main Oscillator + AT91C_BASE_PMC->PMC_MOR = (( (AT91C_CKGR_OSCOUNT & (0x06 <<8)) | AT91C_CKGR_MOSCEN )); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS ) ); + + // enable PLL@96MHz + AT91C_BASE_PMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x0E) | + (AT91C_CKGR_PLLCOUNT & (28<<8)) | + (AT91C_CKGR_MUL & (0x48<<16))); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK ) ); + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + AT91C_BASE_CKGR->CKGR_PLLR |= AT91C_CKGR_USBDIV_1 ; + // MCK=SLCK/2 : change prescaler first + AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); + // MCK=PLLCK/2 : then change source + AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK ; + while( !( AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY ) ); +} +#else +//------------------------------------------------------------------------------ +/// Put the CPU in low power mode (for customer) +//------------------------------------------------------------------------------ +static void LowPowerMode(void) +{ +} + +//------------------------------------------------------------------------------ +/// Return the CPU to normal speed (for customer) +//------------------------------------------------------------------------------ +static void NormalPowerMode(void) +{ +} +#endif + +//------------------------------------------------------------------------------ +/// Initializes the Mass Storage driver and runs it. +//------------------------------------------------------------------------------ +int main(void) +{ + unsigned char sdConnected = 0; + unsigned char sdInitErrorCnt = 0, sdInitExecDelay = 0; + + TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK); + printf("-- USB Device Mass Storage Project %s --\n\r", SOFTPACK_VERSION); + printf("-- %s\n\r", BOARD_NAME); + printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__); + + // If they are present, configure Vbus & Wake-up pins + PIO_InitializeInterrupts(0); + + // If there is on board power, switch it off + #ifdef PIN_USB_POWER_ENB + { const Pin pinUsbPwr = PIN_USB_POWER_ENB; + PIO_Configure(&pinUsbPwr, 1); + } + #endif + + WAKEUP_CONFIGURE(); + + // Start TC for timing & status update + ConfigureTc0(); + + MemoryInitialization(); + + ASSERT(numMedias > 0, "Error: No media defined.\n\r"); + TRACE_INFO("%u medias defined\n\r", numMedias); + + // BOT driver initialization + MSDDriver_Initialize(luns, numMedias); + + // connect if needed + VBUS_CONFIGURE(); + + while (USBD_GetState() < USBD_STATE_CONFIGURED); + + + // Infinite loop + updateDelay = UPDATE_DELAY; + updateView = 0; + while (1) { + + #if defined(BOARD_SD_MCI_BASE) + // SD Card disconnection + if (MEDSdcard_Detect(&medias[DRV_SDMMC], 0)) { + if (sdConnected == 0) { + // Try several times + if (sdInitExecDelay == 0) { + sdInitExecDelay = sdInitErrorCnt + 1; + } + } + } + else if (sdConnected) { + sdConnected = 0; + sdInitErrorCnt = 0; + SDConnectionUpdate(0); + printf("\n\r** SD removed!\n\r"); + } + #endif + + // Mass storage state machine + if (USBD_GetState() < USBD_STATE_CONFIGURED){} + else MSDDriver_StateMachine(); + + if( USBState == STATE_SUSPEND ) { + TRACE_DEBUG("suspend !\n\r"); + LowPowerMode(); + USBState = STATE_IDLE; + } + if( USBState == STATE_RESUME ) { + // Return in normal MODE + TRACE_DEBUG("resume !\n\r"); + NormalPowerMode(); + USBState = STATE_IDLE; + } + + // Update status view + if (updateView) { + + updateView = 0; + #if 0 + if (msdWriteTotal < 50 * 1000) + MED_Flush(&medias[DRV_NAND]); + #endif + + printf("Read %5dK, Write %5dK, IO %5dK; Null %4d, Full %4d\r", + msdReadTotal/(UPDATE_DELAY*250), + msdWriteTotal/(UPDATE_DELAY*250), + (msdReadTotal+msdWriteTotal)/(UPDATE_DELAY*250), + msdNullCnt, msdFullCnt); + + msdReadTotal = 0; + msdWriteTotal = 0; + msdNullCnt = 0; + msdFullCnt = 0; + + #if defined(BOARD_SD_MCI_BASE) + if (sdInitExecDelay) { + if (0 == --sdInitExecDelay) { + sdConnected = SDConnectionUpdate(1); + if (!sdConnected) { + if (SD_INIT_RETRY <= sdInitErrorCnt++) { + printf("\n\r** SD inserted but init fail!\n\r"); + sdConnected = 1; + } + } + } + } + #endif + } + } +} + diff --git a/usb-device-massstorage-project/obj/.empty_dir b/usb-device-massstorage-project/obj/.empty_dir new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3