diff options
-rw-r--r-- | usb-device-massstorage-project/Makefile | 322 | ||||
-rw-r--r-- | usb-device-massstorage-project/bin/.empty_dir | 0 | ||||
-rw-r--r-- | usb-device-massstorage-project/bin/usb-device-massstorage-project-at91sam3u-ek-at91sam3u4.map | 2381 | ||||
-rw-r--r-- | usb-device-massstorage-project/main.c | 1154 | ||||
-rw-r--r-- | usb-device-massstorage-project/obj/.empty_dir | 0 |
5 files changed, 3857 insertions, 0 deletions
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 --- /dev/null +++ b/usb-device-massstorage-project/bin/.empty_dir 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
+/// <a href="http://www.atmel.com/dyn/resources/prod_documents/doc6224.pdf">
+/// SAM-BA User Guide</a>, the
+/// <a href="http://www.atmel.com/dyn/resources/prod_documents/doc6310.pdf">
+/// GNU-Based Software Development</a> application note or to the
+/// <a href="ftp://ftp.iar.se/WWWfiles/arm/Guides/EWARM_UserGuide.ENU.pdf">
+/// IAR EWARM User Guide</a>, 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 <board.h>
+#include <board_lowlevel.h>
+#include <board_memories.h>
+#include <pio/pio.h>
+#include <pio/pio_it.h>
+#ifdef AT91C_BASE_PITC
+#include <pit/pit.h>
+#endif
+#include <irq/irq.h>
+#include <tc/tc.h>
+#include <dbgu/dbgu.h>
+#include <utility/trace.h>
+#include <utility/assert.h>
+#include <utility/led.h>
+#include <usb/common/core/USBConfigurationDescriptor.h>
+#include <usb/device/core/USBD.h>
+#include <usb/device/massstorage/MSDDriver.h>
+#include <usb/device/massstorage/MSDLun.h>
+#include <usb/device/core/USBDCallbacks.h>
+#include <memories/Media.h>
+#if defined(AT91C_EBI_SDRAM)
+#include <memories/MEDSdram.h>
+#endif
+#if defined(AT91C_BASE_DDR2C)
+#include <memories/MEDDdram.h>
+#endif
+#if defined(BOARD_SD_MCI_BASE)
+#include <memories/MEDSdcard.h>
+#endif
+#if defined(CHIP_FLASH_EFC) || defined(CHIP_FLASH_EEFC) && !defined(cortexm3)
+#include <memories/MEDFlash.h>
+#endif
+#if defined(at91sam3uek)
+#include <memories/MEDRamDisk.h>
+#endif
+#if 0
+#include <memories/MEDNandFlash.h>
+#include <memories/nandflash/RawNandFlash.h>
+#include <memories/nandflash/TranslatedNandFlash.h>
+#endif
+
+#include <pmc/pmc.h>
+
+#include <string.h>
+
+//------------------------------------------------------------------------------
+// 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 --- /dev/null +++ b/usb-device-massstorage-project/obj/.empty_dir |