From ce03845623154384abd52c97daed10022800eba7 Mon Sep 17 00:00:00 2001 From: Robert Fisk Date: Fri, 2 Oct 2015 01:49:51 +1300 Subject: [PATCH] Completed moving Upstream to interrupt-based SPI. Although I am not entirely convinced this is necessary, as the SPI data stall issue only appeared with optimisation off (-O0). Perhaps re-visit this if Upstream needs more free CPU time later... --- Downstream/Src/downstream_spi.c | 5 - Downstream/Src/downstream_statemachine.c | 8 +- Upstream/Debug/Upstream.elf | Bin 801557 -> 747248 bytes Upstream/Debug/Upstream.map | 1493 +++++++++-------- .../Src/stm32f4xx_hal_spi.c | 2 +- Upstream/Inc/board_config.h | 8 +- Upstream/Inc/interrupts.h | 9 +- Upstream/Inc/upstream_spi.h | 6 +- Upstream/Src/hal_msp.c | 90 +- Upstream/Src/interrupts.c | 44 +- Upstream/Src/main.c | 16 +- Upstream/Src/upstream_spi.c | 77 +- 12 files changed, 897 insertions(+), 861 deletions(-) diff --git a/Downstream/Src/downstream_spi.c b/Downstream/Src/downstream_spi.c index a1db17f..eda96a4 100644 --- a/Downstream/Src/downstream_spi.c +++ b/Downstream/Src/downstream_spi.c @@ -447,11 +447,6 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) } -void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) -{ - SpiInterruptCompleted = 1; -} - // ////Called at the end of the SPI TX DMA transfer, ////at DMA2 interrupt priority. Assume *hspi points to our hspi1. diff --git a/Downstream/Src/downstream_statemachine.c b/Downstream/Src/downstream_statemachine.c index 8aa0cbf..0fe3070 100644 --- a/Downstream/Src/downstream_statemachine.c +++ b/Downstream/Src/downstream_statemachine.c @@ -167,7 +167,6 @@ void Downstream_PacketProcessor_ClassReply(DownstreamPacketTypeDef* replyPacket) //This callback receives various event ids from the host stack, //either at INT_PRIORITY_OTG_FS or from main(). -//We therefore require interrupts be disabled when being called from main(). void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id) { InterfaceCommandClassTypeDef newActiveClass = COMMAND_CLASS_INTERFACE; @@ -177,21 +176,22 @@ void Downstream_HostUserCallback(USBH_HandleTypeDef *phost, uint8_t id) return; } - //Called from USB interrupt + //Called from USB interrupt. + //Simple function shouldn't need to worry about preempting anything important. if (id == HOST_USER_DISCONNECTION) { DownstreamState = STATE_DEVICE_NOT_READY; return; } - //Called from main(). Elevate priority before calling! + //Called from main() if (id == HOST_USER_UNRECOVERED_ERROR) { DOWNSTREAM_STATEMACHINE_FREAKOUT; return; } - //Called from main(). Elevate priority before calling! + //Called from main() if (id == HOST_USER_CLASS_ACTIVE) { switch (phost->pActiveClass->ClassCode) diff --git a/Upstream/Debug/Upstream.elf b/Upstream/Debug/Upstream.elf index d2413b557bec65b37368f75356aa858394b2f9d1..8d0dfc8dc3e6176afbccbf369f43b371386de126 100755 GIT binary patch delta 113394 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 I#ER1Y2e{q%4gdfE delta 145925 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 F{{cD@QyTyP diff --git a/Upstream/Debug/Upstream.map b/Upstream/Debug/Upstream.map index d4e65d9..c252832 100644 --- a/Upstream/Debug/Upstream.map +++ b/Upstream/Debug/Upstream.map @@ -28,7 +28,6 @@ SCSI_ProcessCmd_params 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o errno 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) hpcd_USB_OTG_FS 0x3b4 Src/usbd_config.o -spiRxDmaHandle 0x50 Src/hal_msp.o ReadStreamBusy 0x1 Src/upstream_msc.o SentCommand 0x1 Src/upstream_spi.o GetCapacityCallback @@ -50,7 +49,6 @@ GetStreamDataCallback SentCommandClass 0x1 Src/upstream_spi.o MSC_BOT_hmsc 0x4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o ByteCount 0x4 Src/upstream_msc.o -spiTxDmaHandle 0x50 Src/hal_msp.o Hspi1 0x58 Src/upstream_spi.o USBD_StrDesc 0x200 Src/usbd_descriptors.o @@ -571,6 +569,7 @@ Discarded input sections .group 0x00000000 0x8 Src/upstream_spi.o .group 0x00000000 0x8 Src/upstream_spi.o .group 0x00000000 0x8 Src/upstream_spi.o + .group 0x00000000 0x8 Src/upstream_spi.o .text 0x00000000 0x0 Src/upstream_spi.o .data 0x00000000 0x0 Src/upstream_spi.o .bss 0x00000000 0x0 Src/upstream_spi.o @@ -635,6 +634,7 @@ Discarded input sections .debug_macro 0x00000000 0x1b6 Src/upstream_spi.o .debug_macro 0x00000000 0x6a Src/upstream_spi.o .debug_macro 0x00000000 0x2e Src/upstream_spi.o + .debug_macro 0x00000000 0x22 Src/upstream_spi.o .group 0x00000000 0x8 Src/upstream_msc.o .group 0x00000000 0x8 Src/upstream_msc.o .group 0x00000000 0x8 Src/upstream_msc.o @@ -823,6 +823,7 @@ Discarded input sections .group 0x00000000 0x8 Src/main.o .group 0x00000000 0x8 Src/main.o .group 0x00000000 0x8 Src/main.o + .group 0x00000000 0x8 Src/main.o .text 0x00000000 0x0 Src/main.o .data 0x00000000 0x0 Src/main.o .bss 0x00000000 0x0 Src/main.o @@ -885,8 +886,9 @@ Discarded input sections .debug_macro 0x00000000 0x16 Src/main.o .debug_macro 0x00000000 0x6a Src/main.o .debug_macro 0x00000000 0x1b6 Src/main.o - .debug_macro 0x00000000 0x8e Src/main.o + .debug_macro 0x00000000 0xa6 Src/main.o .debug_macro 0x00000000 0x1c Src/main.o + .debug_macro 0x00000000 0x2e Src/main.o .group 0x00000000 0x8 Src/led.o .group 0x00000000 0x8 Src/led.o .group 0x00000000 0x8 Src/led.o @@ -963,7 +965,7 @@ Discarded input sections .debug_macro 0x00000000 0x109 Src/led.o .debug_macro 0x00000000 0x125 Src/led.o .debug_macro 0x00000000 0x16 Src/led.o - .debug_macro 0x00000000 0x8e Src/led.o + .debug_macro 0x00000000 0xa6 Src/led.o .group 0x00000000 0x8 Src/interrupts.o .group 0x00000000 0x8 Src/interrupts.o .group 0x00000000 0x8 Src/interrupts.o @@ -1031,7 +1033,7 @@ Discarded input sections .data 0x00000000 0x0 Src/interrupts.o .bss 0x00000000 0x0 Src/interrupts.o .debug_macro 0x00000000 0x868 Src/interrupts.o - .debug_macro 0x00000000 0x1c Src/interrupts.o + .debug_macro 0x00000000 0x22 Src/interrupts.o .debug_macro 0x00000000 0x58 Src/interrupts.o .debug_macro 0x00000000 0x22 Src/interrupts.o .debug_macro 0x00000000 0x35 Src/interrupts.o @@ -1091,7 +1093,7 @@ Discarded input sections .debug_macro 0x00000000 0x1b6 Src/interrupts.o .debug_macro 0x00000000 0x6a Src/interrupts.o .debug_macro 0x00000000 0x2e Src/interrupts.o - .debug_macro 0x00000000 0x8e Src/interrupts.o + .debug_macro 0x00000000 0xa6 Src/interrupts.o .debug_macro 0x00000000 0x1c Src/interrupts.o .group 0x00000000 0x8 Src/hal_msp.o .group 0x00000000 0x8 Src/hal_msp.o @@ -1134,7 +1136,7 @@ Discarded input sections .data 0x00000000 0x0 Src/hal_msp.o .bss 0x00000000 0x0 Src/hal_msp.o .text.HAL_SPI_MspDeInit - 0x00000000 0x64 Src/hal_msp.o + 0x00000000 0x38 Src/hal_msp.o .debug_macro 0x00000000 0x868 Src/hal_msp.o .debug_macro 0x00000000 0x1a7 Src/hal_msp.o .debug_macro 0x00000000 0x2e Src/hal_msp.o @@ -1170,8 +1172,8 @@ Discarded input sections .debug_macro 0x00000000 0x1df Src/hal_msp.o .debug_macro 0x00000000 0x109 Src/hal_msp.o .debug_macro 0x00000000 0x125 Src/hal_msp.o - .debug_macro 0x00000000 0x1c Src/hal_msp.o - .debug_macro 0x00000000 0x8e Src/hal_msp.o + .debug_macro 0x00000000 0x22 Src/hal_msp.o + .debug_macro 0x00000000 0xa6 Src/hal_msp.o .group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o .group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o .group 0x00000000 0x8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o @@ -2213,48 +2215,52 @@ Discarded input sections 0x00000000 0x124 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_Receive_IT 0x00000000 0x134 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.HAL_SPI_TransmitReceive_IT - 0x00000000 0x12c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_Transmit_DMA 0x00000000 0x144 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_Receive_DMA 0x00000000 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.HAL_SPI_TransmitReceive_DMA + 0x00000000 0x1e0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_DMAPause 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_DMAResume 0x00000000 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_DMAStop 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.HAL_SPI_IRQHandler - 0x00000000 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.HAL_SPI_TxCpltCallback - 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_RxCpltCallback 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_TxRxCpltCallback 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_TxHalfCpltCallback 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.HAL_SPI_RxHalfCpltCallback + 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.HAL_SPI_TxRxHalfCpltCallback + 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_ErrorCallback 0x00000000 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_GetState 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_SPI_GetError 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_TxCloseIRQHandler - 0x00000000 0xd4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_TxISR - 0x00000000 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_RxCloseIRQHandler - 0x00000000 0x138 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_2LinesRxISR - 0x00000000 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.SPI_RxISR 0x00000000 0x80 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.SPI_DMATransmitCplt 0x00000000 0xac Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMAReceiveCplt + 0x00000000 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMAEndTransmitReceive + 0x00000000 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMATransmitReceiveCplt + 0x00000000 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.SPI_DMAHalfTransmitCplt 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMAHalfReceiveCplt + 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMAHalfTransmitReceiveCplt + 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_DMAError + 0x00000000 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o @@ -2781,18 +2787,32 @@ Discarded input sections .text 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .data 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .bss 0x00000000 0x0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .text.HAL_DMA_Init + 0x00000000 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_DeInit 0x00000000 0x140c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_Start 0x00000000 0x64 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x00000000 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_Abort 0x00000000 0x7c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_PollForTransfer 0x00000000 0x3308 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x00000000 0x32c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_GetState 0x00000000 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.HAL_DMA_GetError 0x00000000 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .text.DMA_SetConfig + 0x00000000 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_info 0x00000000 0x638 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_abbrev 0x00000000 0x1c5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_aranges + 0x00000000 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_ranges 0x00000000 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_macro 0x00000000 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_macro 0x00000000 0x868 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_macro 0x00000000 0x1a7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_macro 0x00000000 0x2e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o @@ -2828,6 +2848,12 @@ Discarded input sections .debug_macro 0x00000000 0x1df Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_macro 0x00000000 0x109 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .debug_macro 0x00000000 0x125 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_line 0x00000000 0x481d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_str 0x00000000 0x60452 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .debug_frame 0x00000000 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + .ARM.attributes + 0x00000000 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .group 0x00000000 0x8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o @@ -3162,7 +3188,7 @@ LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/ LOAD /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a END GROUP -.text 0x08000000 0xb2e2 +.text 0x08000000 0x7e2a *(.vectors) .vectors 0x08000000 0x188 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o 0x08000000 __Vectors @@ -3297,449 +3323,448 @@ END GROUP 0x08000a74 0x9c Src/upstream_spi.o 0x08000a74 Upstream_InitSPI .text.Upstream_GetFreePacket - 0x08000b10 0x80 Src/upstream_spi.o + 0x08000b10 0x78 Src/upstream_spi.o 0x08000b10 Upstream_GetFreePacket .text.Upstream_GetFreePacketImmediately - 0x08000b90 0x6c Src/upstream_spi.o - 0x08000b90 Upstream_GetFreePacketImmediately + 0x08000b88 0x68 Src/upstream_spi.o + 0x08000b88 Upstream_GetFreePacketImmediately .text.Upstream_ReleasePacket - 0x08000bfc 0x6c Src/upstream_spi.o - 0x08000bfc Upstream_ReleasePacket + 0x08000bf0 0x68 Src/upstream_spi.o + 0x08000bf0 Upstream_ReleasePacket .text.Upstream_TransmitPacket - 0x08000c68 0x108 Src/upstream_spi.o - 0x08000c68 Upstream_TransmitPacket + 0x08000c58 0xf0 Src/upstream_spi.o + 0x08000c58 Upstream_TransmitPacket .text.HAL_SPI_TxRxCpltCallback - 0x08000d70 0x1ec Src/upstream_spi.o - 0x08000d70 HAL_SPI_TxRxCpltCallback + 0x08000d48 0x28 Src/upstream_spi.o + 0x08000d48 HAL_SPI_TxRxCpltCallback + .text.Upstream_SPIProcess_InterruptSafe + 0x08000d70 0x30 Src/upstream_spi.o + 0x08000d70 Upstream_SPIProcess_InterruptSafe + .text.Upstream_SPIProcess + 0x08000da0 0x1cc Src/upstream_spi.o + 0x08000da0 Upstream_SPIProcess .text.Upstream_ReceivePacket - 0x08000f5c 0x4c Src/upstream_spi.o - 0x08000f5c Upstream_ReceivePacket + 0x08000f6c 0x44 Src/upstream_spi.o + 0x08000f6c Upstream_ReceivePacket .text.Upstream_CheckBeginPacketReception - 0x08000fa8 0x60 Src/upstream_spi.o - 0x08000fa8 Upstream_CheckBeginPacketReception + 0x08000fb0 0x58 Src/upstream_spi.o + 0x08000fb0 Upstream_CheckBeginPacketReception .text.Upstream_TxOkInterrupt - 0x08001008 0x80 Src/upstream_spi.o + 0x08001008 0x78 Src/upstream_spi.o 0x08001008 Upstream_TxOkInterrupt .text.Upstream_BeginTransmitPacketSize - 0x08001088 0x54 Src/upstream_spi.o - 0x08001088 Upstream_BeginTransmitPacketSize + 0x08001080 0x4c Src/upstream_spi.o + 0x08001080 Upstream_BeginTransmitPacketSize .text.Upstream_BeginTransmitPacketBody - 0x080010dc 0x6c Src/upstream_spi.o - 0x080010dc Upstream_BeginTransmitPacketBody + 0x080010cc 0x58 Src/upstream_spi.o + 0x080010cc Upstream_BeginTransmitPacketBody .text.Upstream_BeginReceivePacketSize - 0x08001148 0x94 Src/upstream_spi.o - 0x08001148 Upstream_BeginReceivePacketSize + 0x08001124 0x88 Src/upstream_spi.o + 0x08001124 Upstream_BeginReceivePacketSize .text.Upstream_BeginReceivePacketBody - 0x080011dc 0x5c Src/upstream_spi.o - 0x080011dc Upstream_BeginReceivePacketBody + 0x080011ac 0x58 Src/upstream_spi.o + 0x080011ac Upstream_BeginReceivePacketBody .text.HAL_SPI_RxCpltCallback - 0x08001238 0x38 Src/upstream_spi.o - 0x08001238 HAL_SPI_RxCpltCallback + 0x08001204 0x34 Src/upstream_spi.o + 0x08001204 HAL_SPI_RxCpltCallback .text.HAL_SPI_ErrorCallback - 0x08001270 0x30 Src/upstream_spi.o - 0x08001270 HAL_SPI_ErrorCallback + 0x08001238 0x28 Src/upstream_spi.o + 0x08001238 HAL_SPI_ErrorCallback .text.Upstream_MSC_TestReady - 0x080012a0 0x68 Src/upstream_msc.o - 0x080012a0 Upstream_MSC_TestReady + 0x08001260 0x68 Src/upstream_msc.o + 0x08001260 Upstream_MSC_TestReady .text.Upstream_MSC_TestReadyReplyCallback - 0x08001308 0x5c Src/upstream_msc.o + 0x080012c8 0x5c Src/upstream_msc.o .text.Upstream_MSC_GetCapacity - 0x08001364 0x68 Src/upstream_msc.o - 0x08001364 Upstream_MSC_GetCapacity + 0x08001324 0x68 Src/upstream_msc.o + 0x08001324 Upstream_MSC_GetCapacity .text.Upstream_MSC_GetCapacityReplyCallback - 0x080013cc 0x64 Src/upstream_msc.o + 0x0800138c 0x64 Src/upstream_msc.o .text.Upstream_MSC_BeginRead - 0x08001430 0xa0 Src/upstream_msc.o - 0x08001430 Upstream_MSC_BeginRead + 0x080013f0 0xa0 Src/upstream_msc.o + 0x080013f0 Upstream_MSC_BeginRead .text.Upstream_MSC_GetStreamDataPacket - 0x080014d0 0x74 Src/upstream_msc.o - 0x080014d0 Upstream_MSC_GetStreamDataPacket + 0x08001490 0x74 Src/upstream_msc.o + 0x08001490 Upstream_MSC_GetStreamDataPacket .text.Upstream_MSC_GetStreamDataPacketCallback - 0x08001544 0xb0 Src/upstream_msc.o + 0x08001504 0xb0 Src/upstream_msc.o .text.Upstream_MSC_BeginWrite - 0x080015f4 0x80 Src/upstream_msc.o - 0x080015f4 Upstream_MSC_BeginWrite + 0x080015b4 0x80 Src/upstream_msc.o + 0x080015b4 Upstream_MSC_BeginWrite .text.Upstream_MSC_BeginWriteReplyCallback - 0x08001674 0x6c Src/upstream_msc.o + 0x08001634 0x6c Src/upstream_msc.o .text.Upstream_MSC_PutStreamDataPacket - 0x080016e0 0x50 Src/upstream_msc.o - 0x080016e0 Upstream_MSC_PutStreamDataPacket - .text.main 0x08001730 0x20 Src/main.o - 0x08001730 main + 0x080016a0 0x50 Src/upstream_msc.o + 0x080016a0 Upstream_MSC_PutStreamDataPacket + .text.main 0x080016f0 0x24 Src/main.o + 0x080016f0 main .text.SystemClock_Config - 0x08001750 0x98 Src/main.o - 0x08001750 SystemClock_Config + 0x08001714 0x98 Src/main.o + 0x08001714 SystemClock_Config .text.GPIO_Init - 0x080017e8 0xcc Src/main.o + 0x080017ac 0xe4 Src/main.o .text.LED_Init - 0x080018b4 0x24 Src/led.o - 0x080018b4 LED_Init + 0x08001890 0x24 Src/led.o + 0x08001890 LED_Init .text.LED_Fault_SetBlinkRate - 0x080018d8 0x3c Src/led.o - 0x080018d8 LED_Fault_SetBlinkRate + 0x080018b4 0x3c Src/led.o + 0x080018b4 LED_Fault_SetBlinkRate .text.LED_DoBlinks - 0x08001914 0x68 Src/led.o - 0x08001914 LED_DoBlinks + 0x080018f0 0x68 Src/led.o + 0x080018f0 LED_DoBlinks .text.SysTick_Handler - 0x0800197c 0x10 Src/interrupts.o - 0x0800197c SysTick_Handler + 0x08001958 0x10 Src/interrupts.o + 0x08001958 SysTick_Handler .text.OTG_FS_IRQHandler - 0x0800198c 0x10 Src/interrupts.o - 0x0800198c OTG_FS_IRQHandler - .text.DMA2_Stream2_IRQHandler - 0x0800199c 0x10 Src/interrupts.o - 0x0800199c DMA2_Stream2_IRQHandler - .text.DMA2_Stream3_IRQHandler - 0x080019ac 0x10 Src/interrupts.o - 0x080019ac DMA2_Stream3_IRQHandler + 0x08001968 0x10 Src/interrupts.o + 0x08001968 OTG_FS_IRQHandler .text.EXTI3_IRQHandler - 0x080019bc 0x14 Src/interrupts.o - 0x080019bc EXTI3_IRQHandler + 0x08001978 0x14 Src/interrupts.o + 0x08001978 EXTI3_IRQHandler + .text.SPI1_IRQHandler + 0x0800198c 0x24 Src/interrupts.o + 0x0800198c SPI1_IRQHandler .text.HAL_MspInit - 0x080019d0 0x14 Src/hal_msp.o - 0x080019d0 HAL_MspInit + 0x080019b0 0x14 Src/hal_msp.o + 0x080019b0 HAL_MspInit .text.HAL_SPI_MspInit - 0x080019e4 0x188 Src/hal_msp.o - 0x080019e4 HAL_SPI_MspInit + 0x080019c4 0xac Src/hal_msp.o + 0x080019c4 HAL_SPI_MspInit .text.USBD_CtlSendData - 0x08001b6c 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08001b6c USBD_CtlSendData + 0x08001a70 0x38 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08001a70 USBD_CtlSendData .text.USBD_CtlContinueSendData - 0x08001ba4 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08001ba4 USBD_CtlContinueSendData + 0x08001aa8 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08001aa8 USBD_CtlContinueSendData .text.USBD_CtlContinueRx - 0x08001bc8 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08001bc8 USBD_CtlContinueRx + 0x08001acc 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08001acc USBD_CtlContinueRx .text.USBD_CtlSendStatus - 0x08001bec 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08001bec USBD_CtlSendStatus + 0x08001af0 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08001af0 USBD_CtlSendStatus .text.USBD_CtlReceiveStatus - 0x08001c14 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - 0x08001c14 USBD_CtlReceiveStatus + 0x08001b18 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x08001b18 USBD_CtlReceiveStatus .text.USBD_StdDevReq - 0x08001c3c 0xa0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08001c3c USBD_StdDevReq + 0x08001b40 0xa0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08001b40 USBD_StdDevReq .text.USBD_StdItfReq - 0x08001cdc 0x68 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08001cdc USBD_StdItfReq + 0x08001be0 0x68 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08001be0 USBD_StdItfReq .text.USBD_StdEPReq - 0x08001d44 0x1b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08001d44 USBD_StdEPReq + 0x08001c48 0x1b0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08001c48 USBD_StdEPReq .text.USBD_GetDescriptor - 0x08001ef4 0x1f8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08001df8 0x1f8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_SetAddress - 0x080020ec 0x7c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08001ff0 0x7c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_SetConfig - 0x08002168 0x114 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0800206c 0x114 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_GetConfig - 0x0800227c 0x64 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08002180 0x64 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_GetStatus - 0x080022e0 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x080021e4 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_SetFeature - 0x08002334 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08002238 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_ClrFeature - 0x08002368 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x0800226c 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_ParseSetupRequest - 0x080023b8 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x080023b8 USBD_ParseSetupRequest + 0x080022bc 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x080022bc USBD_ParseSetupRequest .text.USBD_CtlError - 0x08002430 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08002430 USBD_CtlError + 0x08002334 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08002334 USBD_CtlError .text.USBD_GetString - 0x08002450 0x84 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - 0x08002450 USBD_GetString + 0x08002354 0x84 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x08002354 USBD_GetString .text.USBD_GetLen - 0x080024d4 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x080023d8 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .text.USBD_Init - 0x08002504 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002504 USBD_Init + 0x08002408 0x54 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002408 USBD_Init .text.USBD_RegisterClass - 0x08002558 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002558 USBD_RegisterClass + 0x0800245c 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0800245c USBD_RegisterClass .text.USBD_Start - 0x0800258c 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800258c USBD_Start + 0x08002490 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002490 USBD_Start .text.USBD_Stop - 0x080025a4 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080025a4 USBD_Stop + 0x080024a8 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080024a8 USBD_Stop .text.USBD_RunTestMode - 0x080025d0 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080025d0 USBD_RunTestMode + 0x080024d4 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080024d4 USBD_RunTestMode .text.USBD_SetClassConfig - 0x080025e8 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080025e8 USBD_SetClassConfig + 0x080024ec 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080024ec USBD_SetClassConfig .text.USBD_ClrClassConfig - 0x08002628 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002628 USBD_ClrClassConfig + 0x0800252c 0x28 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0800252c USBD_ClrClassConfig .text.USBD_SetupStage - 0x08002650 0x94 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002650 USBD_SetupStage + 0x08002554 0x94 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002554 USBD_SetupStage .text.USBD_DataOutStage - 0x080026e4 0xb8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080026e4 USBD_DataOutStage + 0x080025e8 0xb8 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080025e8 USBD_DataOutStage .text.USBD_DataInStage - 0x0800279c 0x120 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800279c USBD_DataInStage + 0x080026a0 0x120 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080026a0 USBD_DataInStage .text.USBD_Reset - 0x080028bc 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080028bc USBD_Reset + 0x080027c0 0x60 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080027c0 USBD_Reset .text.USBD_SetSpeed - 0x0800291c 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800291c USBD_SetSpeed + 0x08002820 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002820 USBD_SetSpeed .text.USBD_Suspend - 0x0800293c 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800293c USBD_Suspend + 0x08002840 0x2c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002840 USBD_Suspend .text.USBD_Resume - 0x08002968 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002968 USBD_Resume + 0x0800286c 0x24 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x0800286c USBD_Resume .text.USBD_SOF - 0x0800298c 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x0800298c USBD_SOF + 0x08002890 0x34 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002890 USBD_SOF .text.USBD_IsoINIncomplete - 0x080029c0 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080029c0 USBD_IsoINIncomplete + 0x080028c4 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080028c4 USBD_IsoINIncomplete .text.USBD_IsoOUTIncomplete - 0x080029dc 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080029dc USBD_IsoOUTIncomplete + 0x080028e0 0x1c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080028e0 USBD_IsoOUTIncomplete .text.USBD_DevConnected - 0x080029f8 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x080029f8 USBD_DevConnected + 0x080028fc 0x18 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x080028fc USBD_DevConnected .text.USBD_DevDisconnected - 0x08002a10 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002a10 USBD_DevDisconnected + 0x08002914 0x30 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002914 USBD_DevDisconnected .text.USBD_BufferFreed - 0x08002a40 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - 0x08002a40 USBD_BufferFreed + 0x08002944 0x20 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x08002944 USBD_BufferFreed .text.SCSI_ProcessCmd - 0x08002a60 0x22c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08002a60 SCSI_ProcessCmd + 0x08002964 0x22c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002964 SCSI_ProcessCmd .text.SCSI_TestUnitReady - 0x08002c8c 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002b90 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_TestUnitReadyCallback - 0x08002cf4 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08002cf4 SCSI_TestUnitReadyCallback + 0x08002bf8 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002bf8 SCSI_TestUnitReadyCallback .text.SCSI_Inquiry - 0x08002d54 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002c58 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_ReadCapacity10 - 0x08002e04 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002d08 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_ReadCapacity10Callback - 0x08002e24 0x12c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08002e24 SCSI_ReadCapacity10Callback + 0x08002d28 0x12c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002d28 SCSI_ReadCapacity10Callback .text.SCSI_ReadFormatCapacity - 0x08002f50 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002e54 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_ReadFormatCapacityCallback - 0x08002f70 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08002f70 SCSI_ReadFormatCapacityCallback + 0x08002e74 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002e74 SCSI_ReadFormatCapacityCallback .text.SCSI_ModeSense6 - 0x0800308c 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002f90 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_ModeSense10 - 0x080030f0 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08002ff4 0x64 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_RequestSense - 0x08003154 0x130 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003058 0x130 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_SenseCode - 0x08003284 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08003284 SCSI_SenseCode + 0x08003188 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003188 SCSI_SenseCode .text.SCSI_StartStopUnit - 0x08003300 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003204 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_Read10 - 0x08003320 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003224 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_Read10BeginCallback - 0x080034a8 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x080034a8 SCSI_Read10BeginCallback + 0x080033ac 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x080033ac SCSI_Read10BeginCallback .text.SCSI_Read10ReplyCallback - 0x08003510 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08003510 SCSI_Read10ReplyCallback + 0x08003414 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003414 SCSI_Read10ReplyCallback .text.SCSI_Write10 - 0x080035b4 0x210 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x080034b8 0x210 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_Write10BeginCallback - 0x080037c4 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x080037c4 SCSI_Write10BeginCallback + 0x080036c8 0xa4 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x080036c8 SCSI_Write10BeginCallback .text.SCSI_Write10FreePacketCallback - 0x08003868 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x08003868 SCSI_Write10FreePacketCallback + 0x0800376c 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x0800376c SCSI_Write10FreePacketCallback .text.SCSI_Verify10 - 0x080038c0 0x84 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x080037c4 0x84 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.SCSI_CheckAddressRange - 0x08003944 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x08003848 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .text.MSC_BOT_Init - 0x0800399c 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x0800399c MSC_BOT_Init + 0x080038a0 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x080038a0 MSC_BOT_Init .text.MSC_BOT_Reset - 0x080039f0 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x080039f0 MSC_BOT_Reset + 0x080038f4 0x34 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x080038f4 MSC_BOT_Reset .text.MSC_BOT_DeInit - 0x08003a24 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003a24 MSC_BOT_DeInit + 0x08003928 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003928 MSC_BOT_DeInit .text.MSC_BOT_DataIn - 0x08003a44 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003a44 MSC_BOT_DataIn + 0x08003948 0x60 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003948 MSC_BOT_DataIn .text.MSC_BOT_DataIn_Callback - 0x08003aa4 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003aa4 MSC_BOT_DataIn_Callback + 0x080039a8 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x080039a8 MSC_BOT_DataIn_Callback .text.MSC_BOT_DataOut - 0x08003acc 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003acc MSC_BOT_DataOut + 0x080039d0 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x080039d0 MSC_BOT_DataOut .text.MSC_BOT_DataOut_Callback - 0x08003b24 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003b24 MSC_BOT_DataOut_Callback + 0x08003a28 0x28 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003a28 MSC_BOT_DataOut_Callback .text.MSC_BOT_CBW_Decode - 0x08003b4c 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003a50 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o .text.MSC_BOT_CBW_Decode_Callback - 0x08003bfc 0xa0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003bfc MSC_BOT_CBW_Decode_Callback + 0x08003b00 0xa0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003b00 MSC_BOT_CBW_Decode_Callback .text.MSC_BOT_SendData - 0x08003c9c 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003ba0 0x50 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o .text.MSC_BOT_SendCSW - 0x08003cec 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003cec MSC_BOT_SendCSW + 0x08003bf0 0x54 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003bf0 MSC_BOT_SendCSW .text.MSC_BOT_Abort - 0x08003d40 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003c44 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o .text.MSC_BOT_CplClrFeature - 0x08003d98 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x08003d98 MSC_BOT_CplClrFeature + 0x08003c9c 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x08003c9c MSC_BOT_CplClrFeature .text.USBD_MSC_Init - 0x08003de4 0x90 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x08003de4 USBD_MSC_Init + 0x08003ce8 0x90 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003ce8 USBD_MSC_Init .text.USBD_MSC_DeInit - 0x08003e74 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x08003e74 USBD_MSC_DeInit + 0x08003d78 0x4c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003d78 USBD_MSC_DeInit .text.USBD_MSC_Setup - 0x08003ec0 0x16c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x08003ec0 USBD_MSC_Setup + 0x08003dc4 0x16c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003dc4 USBD_MSC_Setup .text.USBD_MSC_DataIn - 0x0800402c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x0800402c USBD_MSC_DataIn + 0x08003f30 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003f30 USBD_MSC_DataIn .text.USBD_MSC_DataOut - 0x0800404c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x0800404c USBD_MSC_DataOut + 0x08003f50 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003f50 USBD_MSC_DataOut .text.USBD_MSC_BufferFreed - 0x0800406c 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x0800406c USBD_MSC_BufferFreed + 0x08003f70 0x40 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003f70 USBD_MSC_BufferFreed .text.USBD_MSC_GetHSCfgDesc - 0x080040ac 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x080040ac USBD_MSC_GetHSCfgDesc + 0x08003fb0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003fb0 USBD_MSC_GetHSCfgDesc .text.USBD_MSC_GetFSCfgDesc - 0x080040cc 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x080040cc USBD_MSC_GetFSCfgDesc + 0x08003fd0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003fd0 USBD_MSC_GetFSCfgDesc .text.USBD_MSC_GetOtherSpeedCfgDesc - 0x080040ec 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x080040ec USBD_MSC_GetOtherSpeedCfgDesc + 0x08003ff0 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08003ff0 USBD_MSC_GetOtherSpeedCfgDesc .text.USBD_MSC_GetDeviceQualifierDescriptor - 0x0800410c 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x0800410c USBD_MSC_GetDeviceQualifierDescriptor + 0x08004010 0x20 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x08004010 USBD_MSC_GetDeviceQualifierDescriptor .text.USB_CoreInit - 0x0800412c 0xa4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800412c USB_CoreInit + 0x08004030 0xa4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004030 USB_CoreInit .text.USB_EnableGlobalInt - 0x080041d0 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080041d0 USB_EnableGlobalInt + 0x080040d4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080040d4 USB_EnableGlobalInt .text.USB_DisableGlobalInt - 0x080041f4 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080041f4 USB_DisableGlobalInt + 0x080040f8 0x24 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080040f8 USB_DisableGlobalInt .text.USB_SetCurrentMode - 0x08004218 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004218 USB_SetCurrentMode + 0x0800411c 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x0800411c USB_SetCurrentMode .text.USB_DevInit - 0x08004268 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004268 USB_DevInit + 0x0800416c 0x258 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x0800416c USB_DevInit .text.USB_FlushTxFifo - 0x080044c0 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080044c0 USB_FlushTxFifo + 0x080043c4 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080043c4 USB_FlushTxFifo .text.USB_FlushRxFifo - 0x0800450c 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800450c USB_FlushRxFifo + 0x08004410 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004410 USB_FlushRxFifo .text.USB_SetDevSpeed - 0x08004550 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004550 USB_SetDevSpeed + 0x08004454 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004454 USB_SetDevSpeed .text.USB_GetDevSpeed - 0x08004580 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004580 USB_GetDevSpeed + 0x08004484 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004484 USB_GetDevSpeed .text.USB_ActivateEndpoint - 0x080045ec 0x114 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080045ec USB_ActivateEndpoint + 0x080044f0 0x114 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080044f0 USB_ActivateEndpoint .text.USB_DeactivateEndpoint - 0x08004700 0xf8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004700 USB_DeactivateEndpoint + 0x08004604 0xf8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004604 USB_DeactivateEndpoint .text.USB_EPStartXfer - 0x080047f8 0x484 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080047f8 USB_EPStartXfer + 0x080046fc 0x484 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080046fc USB_EPStartXfer .text.USB_EP0StartXfer - 0x08004c7c 0x2bc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004c7c USB_EP0StartXfer + 0x08004b80 0x2bc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004b80 USB_EP0StartXfer .text.USB_WritePacket - 0x08004f38 0x70 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004f38 USB_WritePacket + 0x08004e3c 0x70 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004e3c USB_WritePacket .text.USB_ReadPacket - 0x08004fa8 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004fa8 USB_ReadPacket + 0x08004eac 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004eac USB_ReadPacket .text.USB_EPSetStall - 0x08004ffc 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08004ffc USB_EPSetStall + 0x08004f00 0xe4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004f00 USB_EPSetStall .text.USB_EPClearStall - 0x080050e0 0xdc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080050e0 USB_EPClearStall + 0x08004fe4 0xdc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08004fe4 USB_EPClearStall .text.USB_StopDevice - 0x080051bc 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080051bc USB_StopDevice + 0x080050c0 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080050c0 USB_StopDevice .text.USB_SetDevAddress - 0x08005244 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08005244 USB_SetDevAddress + 0x08005148 0x4c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005148 USB_SetDevAddress .text.USB_DevConnect - 0x08005290 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08005290 USB_DevConnect + 0x08005194 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005194 USB_DevConnect .text.USB_DevDisconnect - 0x080052c0 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080052c0 USB_DevDisconnect + 0x080051c4 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080051c4 USB_DevDisconnect .text.USB_ReadInterrupts - 0x080052f0 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080052f0 USB_ReadInterrupts + 0x080051f4 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080051f4 USB_ReadInterrupts .text.USB_ReadDevAllOutEpInterrupt - 0x0800531c 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800531c USB_ReadDevAllOutEpInterrupt + 0x08005220 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005220 USB_ReadDevAllOutEpInterrupt .text.USB_ReadDevAllInEpInterrupt - 0x0800534c 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800534c USB_ReadDevAllInEpInterrupt + 0x08005250 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005250 USB_ReadDevAllInEpInterrupt .text.USB_ReadDevOutEPInterrupt - 0x0800537c 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x0800537c USB_ReadDevOutEPInterrupt + 0x08005280 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005280 USB_ReadDevOutEPInterrupt .text.USB_ReadDevInEPInterrupt - 0x080053b4 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x080053b4 USB_ReadDevInEPInterrupt + 0x080052b8 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x080052b8 USB_ReadDevInEPInterrupt .text.USB_GetMode - 0x08005408 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08005408 USB_GetMode + 0x0800530c 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x0800530c USB_GetMode .text.USB_ActivateSetup - 0x08005424 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08005424 USB_ActivateSetup + 0x08005328 0x6c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005328 USB_ActivateSetup .text.USB_EP0_OutStart - 0x08005490 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - 0x08005490 USB_EP0_OutStart + 0x08005394 0x8c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005394 USB_EP0_OutStart .text.USB_CoreReset - 0x0800551c 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x08005420 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o .text.HAL_SPI_Init - 0x08005584 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x08005584 HAL_SPI_Init - .text.HAL_SPI_TransmitReceive_DMA - 0x08005650 0x1e0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x08005650 HAL_SPI_TransmitReceive_DMA - .text.HAL_SPI_RxHalfCpltCallback - 0x08005830 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x08005830 HAL_SPI_RxHalfCpltCallback - .text.HAL_SPI_TxRxHalfCpltCallback - 0x08005844 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x08005844 HAL_SPI_TxRxHalfCpltCallback - .text.SPI_DMAReceiveCplt - 0x08005858 0x11c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_DMAEndTransmitReceive - 0x08005974 0xd0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_DMATransmitReceiveCplt - 0x08005a44 0x50 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_DMAHalfReceiveCplt - 0x08005a94 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_DMAHalfTransmitReceiveCplt - 0x08005ab0 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .text.SPI_DMAError - 0x08005acc 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08005488 0xcc Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08005488 HAL_SPI_Init + .text.HAL_SPI_TransmitReceive_IT + 0x08005554 0x12c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08005554 HAL_SPI_TransmitReceive_IT + .text.HAL_SPI_IRQHandler + 0x08005680 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08005680 HAL_SPI_IRQHandler + .text.HAL_SPI_TxCpltCallback + 0x08005814 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x08005814 HAL_SPI_TxCpltCallback + .text.SPI_TxCloseIRQHandler + 0x08005828 0xd4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_TxISR + 0x080058fc 0x74 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_RxCloseIRQHandler + 0x08005970 0x138 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .text.SPI_2LinesRxISR + 0x08005aa8 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.SPI_WaitOnFlagUntilTimeout 0x08005b08 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .text.HAL_RCC_OscConfig @@ -3804,207 +3829,197 @@ END GROUP .text.HAL_GPIO_Init 0x0800750c 0x32c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0x0800750c HAL_GPIO_Init - .text.HAL_DMA_Init - 0x08007838 0xe0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08007838 HAL_DMA_Init - .text.HAL_DMA_Start_IT - 0x08007918 0xb4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x08007918 HAL_DMA_Start_IT - .text.HAL_DMA_IRQHandler - 0x080079cc 0x32c8 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x080079cc HAL_DMA_IRQHandler - .text.DMA_SetConfig - 0x0800ac94 0x5c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .text.NVIC_SetPriorityGrouping - 0x0800acf0 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007838 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_GetPriorityGrouping - 0x0800ad38 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007880 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_EnableIRQ - 0x0800ad54 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x0800789c 0x30 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_SetPriority - 0x0800ad84 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080078cc 0x54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.NVIC_EncodePriority - 0x0800add8 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007920 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.SysTick_Config - 0x0800ae40 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007988 0x3c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x0800ae7c 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x0800ae7c HAL_NVIC_SetPriorityGrouping + 0x080079c4 0x14 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080079c4 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x0800ae90 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x0800ae90 HAL_NVIC_SetPriority + 0x080079d8 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x080079d8 HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x0800aec8 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x0800aec8 HAL_NVIC_EnableIRQ + 0x08007a10 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007a10 HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x0800aee4 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x0800aee4 HAL_SYSTICK_Config + 0x08007a2c 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007a2c HAL_SYSTICK_Config .text.HAL_SYSTICK_CLKSourceConfig - 0x0800aefc 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - 0x0800aefc HAL_SYSTICK_CLKSourceConfig + 0x08007a44 0x38 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x08007a44 HAL_SYSTICK_CLKSourceConfig .text.HAL_Init - 0x0800af34 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x0800af34 HAL_Init + 0x08007a7c 0x44 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08007a7c HAL_Init .text.HAL_InitTick - 0x0800af78 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x0800af78 HAL_InitTick + 0x08007ac0 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08007ac0 HAL_InitTick .text.HAL_IncTick - 0x0800afa4 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x0800afa4 HAL_IncTick + 0x08007aec 0x1c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08007aec HAL_IncTick .text.HAL_GetTick - 0x0800afc0 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x0800afc0 HAL_GetTick + 0x08007b08 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08007b08 HAL_GetTick .text.HAL_Delay - 0x0800afd8 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - 0x0800afd8 HAL_Delay + 0x08007b20 0x2c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x08007b20 HAL_Delay .text.SystemInit - 0x0800b004 0x5c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - 0x0800b004 SystemInit + 0x08007b4c 0x5c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + 0x08007b4c SystemInit .text.Reset_Handler - 0x0800b060 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o - 0x0800b060 Reset_Handler + 0x08007ba8 0x4c Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + 0x08007ba8 Reset_Handler .text.Default_Handler - 0x0800b0ac 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o - 0x0800b0ac RTC_Alarm_IRQHandler - 0x0800b0ac HASH_RNG_IRQHandler - 0x0800b0ac EXTI2_IRQHandler - 0x0800b0ac TIM8_CC_IRQHandler - 0x0800b0ac DebugMon_Handler - 0x0800b0ac TIM1_CC_IRQHandler - 0x0800b0ac DMA2_Stream5_IRQHandler - 0x0800b0ac HardFault_Handler - 0x0800b0ac DMA1_Stream5_IRQHandler - 0x0800b0ac PVD_IRQHandler - 0x0800b0ac SDIO_IRQHandler - 0x0800b0ac TAMP_STAMP_IRQHandler - 0x0800b0ac PendSV_Handler - 0x0800b0ac NMI_Handler - 0x0800b0ac CAN2_RX1_IRQHandler - 0x0800b0ac TIM8_TRG_COM_TIM14_IRQHandler - 0x0800b0ac TIM1_UP_TIM10_IRQHandler - 0x0800b0ac TIM8_UP_TIM13_IRQHandler - 0x0800b0ac I2C3_ER_IRQHandler - 0x0800b0ac EXTI0_IRQHandler - 0x0800b0ac I2C2_EV_IRQHandler - 0x0800b0ac DMA1_Stream2_IRQHandler - 0x0800b0ac CAN1_RX0_IRQHandler - 0x0800b0ac FPU_IRQHandler - 0x0800b0ac OTG_HS_WKUP_IRQHandler - 0x0800b0ac UsageFault_Handler - 0x0800b0ac CAN2_SCE_IRQHandler - 0x0800b0ac SPI1_IRQHandler - 0x0800b0ac TIM6_DAC_IRQHandler - 0x0800b0ac TIM1_BRK_TIM9_IRQHandler - 0x0800b0ac CAN2_RX0_IRQHandler - 0x0800b0ac USART6_IRQHandler - 0x0800b0ac USART3_IRQHandler - 0x0800b0ac CAN1_RX1_IRQHandler - 0x0800b0ac UART5_IRQHandler - 0x0800b0ac DMA2_Stream0_IRQHandler - 0x0800b0ac TIM4_IRQHandler - 0x0800b0ac I2C1_EV_IRQHandler - 0x0800b0ac DMA1_Stream6_IRQHandler - 0x0800b0ac DMA1_Stream1_IRQHandler - 0x0800b0ac UART4_IRQHandler - 0x0800b0ac TIM3_IRQHandler - 0x0800b0ac RCC_IRQHandler - 0x0800b0ac TIM8_BRK_TIM12_IRQHandler - 0x0800b0ac Default_Handler - 0x0800b0ac EXTI15_10_IRQHandler - 0x0800b0ac ADC_IRQHandler - 0x0800b0ac DMA1_Stream7_IRQHandler - 0x0800b0ac TIM7_IRQHandler - 0x0800b0ac CAN2_TX_IRQHandler - 0x0800b0ac TIM5_IRQHandler - 0x0800b0ac DMA2_Stream7_IRQHandler - 0x0800b0ac I2C3_EV_IRQHandler - 0x0800b0ac EXTI9_5_IRQHandler - 0x0800b0ac RTC_WKUP_IRQHandler - 0x0800b0ac SPI2_IRQHandler - 0x0800b0ac OTG_HS_EP1_IN_IRQHandler - 0x0800b0ac MemManage_Handler - 0x0800b0ac DMA1_Stream0_IRQHandler - 0x0800b0ac CAN1_TX_IRQHandler - 0x0800b0ac SVC_Handler - 0x0800b0ac EXTI4_IRQHandler - 0x0800b0ac FSMC_IRQHandler - 0x0800b0ac OTG_HS_EP1_OUT_IRQHandler - 0x0800b0ac WWDG_IRQHandler - 0x0800b0ac TIM2_IRQHandler - 0x0800b0ac OTG_FS_WKUP_IRQHandler - 0x0800b0ac TIM1_TRG_COM_TIM11_IRQHandler - 0x0800b0ac OTG_HS_IRQHandler - 0x0800b0ac EXTI1_IRQHandler - 0x0800b0ac USART2_IRQHandler - 0x0800b0ac I2C2_ER_IRQHandler - 0x0800b0ac DMA2_Stream1_IRQHandler - 0x0800b0ac CAN1_SCE_IRQHandler - 0x0800b0ac FLASH_IRQHandler - 0x0800b0ac DMA2_Stream4_IRQHandler - 0x0800b0ac BusFault_Handler - 0x0800b0ac USART1_IRQHandler - 0x0800b0ac SPI3_IRQHandler - 0x0800b0ac DMA1_Stream4_IRQHandler - 0x0800b0ac I2C1_ER_IRQHandler - 0x0800b0ac DMA2_Stream6_IRQHandler - 0x0800b0ac DMA1_Stream3_IRQHandler - *fill* 0x0800b0ae 0x2 - .text.malloc 0x0800b0b0 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) - 0x0800b0b0 malloc - .text.free 0x0800b0c0 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) - 0x0800b0c0 free - .text._free_r 0x0800b0d0 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) - 0x0800b0d0 _free_r + 0x08007bf4 0x2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + 0x08007bf4 RTC_Alarm_IRQHandler + 0x08007bf4 HASH_RNG_IRQHandler + 0x08007bf4 EXTI2_IRQHandler + 0x08007bf4 TIM8_CC_IRQHandler + 0x08007bf4 DebugMon_Handler + 0x08007bf4 TIM1_CC_IRQHandler + 0x08007bf4 DMA2_Stream5_IRQHandler + 0x08007bf4 HardFault_Handler + 0x08007bf4 DMA1_Stream5_IRQHandler + 0x08007bf4 PVD_IRQHandler + 0x08007bf4 SDIO_IRQHandler + 0x08007bf4 TAMP_STAMP_IRQHandler + 0x08007bf4 PendSV_Handler + 0x08007bf4 NMI_Handler + 0x08007bf4 CAN2_RX1_IRQHandler + 0x08007bf4 TIM8_TRG_COM_TIM14_IRQHandler + 0x08007bf4 TIM1_UP_TIM10_IRQHandler + 0x08007bf4 TIM8_UP_TIM13_IRQHandler + 0x08007bf4 I2C3_ER_IRQHandler + 0x08007bf4 EXTI0_IRQHandler + 0x08007bf4 I2C2_EV_IRQHandler + 0x08007bf4 DMA1_Stream2_IRQHandler + 0x08007bf4 CAN1_RX0_IRQHandler + 0x08007bf4 FPU_IRQHandler + 0x08007bf4 OTG_HS_WKUP_IRQHandler + 0x08007bf4 UsageFault_Handler + 0x08007bf4 CAN2_SCE_IRQHandler + 0x08007bf4 DMA2_Stream2_IRQHandler + 0x08007bf4 TIM6_DAC_IRQHandler + 0x08007bf4 TIM1_BRK_TIM9_IRQHandler + 0x08007bf4 CAN2_RX0_IRQHandler + 0x08007bf4 DMA2_Stream3_IRQHandler + 0x08007bf4 USART6_IRQHandler + 0x08007bf4 USART3_IRQHandler + 0x08007bf4 CAN1_RX1_IRQHandler + 0x08007bf4 UART5_IRQHandler + 0x08007bf4 DMA2_Stream0_IRQHandler + 0x08007bf4 TIM4_IRQHandler + 0x08007bf4 I2C1_EV_IRQHandler + 0x08007bf4 DMA1_Stream6_IRQHandler + 0x08007bf4 DMA1_Stream1_IRQHandler + 0x08007bf4 UART4_IRQHandler + 0x08007bf4 TIM3_IRQHandler + 0x08007bf4 RCC_IRQHandler + 0x08007bf4 TIM8_BRK_TIM12_IRQHandler + 0x08007bf4 Default_Handler + 0x08007bf4 EXTI15_10_IRQHandler + 0x08007bf4 ADC_IRQHandler + 0x08007bf4 DMA1_Stream7_IRQHandler + 0x08007bf4 TIM7_IRQHandler + 0x08007bf4 CAN2_TX_IRQHandler + 0x08007bf4 TIM5_IRQHandler + 0x08007bf4 DMA2_Stream7_IRQHandler + 0x08007bf4 I2C3_EV_IRQHandler + 0x08007bf4 EXTI9_5_IRQHandler + 0x08007bf4 RTC_WKUP_IRQHandler + 0x08007bf4 SPI2_IRQHandler + 0x08007bf4 OTG_HS_EP1_IN_IRQHandler + 0x08007bf4 MemManage_Handler + 0x08007bf4 DMA1_Stream0_IRQHandler + 0x08007bf4 CAN1_TX_IRQHandler + 0x08007bf4 SVC_Handler + 0x08007bf4 EXTI4_IRQHandler + 0x08007bf4 FSMC_IRQHandler + 0x08007bf4 OTG_HS_EP1_OUT_IRQHandler + 0x08007bf4 WWDG_IRQHandler + 0x08007bf4 TIM2_IRQHandler + 0x08007bf4 OTG_FS_WKUP_IRQHandler + 0x08007bf4 TIM1_TRG_COM_TIM11_IRQHandler + 0x08007bf4 OTG_HS_IRQHandler + 0x08007bf4 EXTI1_IRQHandler + 0x08007bf4 USART2_IRQHandler + 0x08007bf4 I2C2_ER_IRQHandler + 0x08007bf4 DMA2_Stream1_IRQHandler + 0x08007bf4 CAN1_SCE_IRQHandler + 0x08007bf4 FLASH_IRQHandler + 0x08007bf4 DMA2_Stream4_IRQHandler + 0x08007bf4 BusFault_Handler + 0x08007bf4 USART1_IRQHandler + 0x08007bf4 SPI3_IRQHandler + 0x08007bf4 DMA1_Stream4_IRQHandler + 0x08007bf4 I2C1_ER_IRQHandler + 0x08007bf4 DMA2_Stream6_IRQHandler + 0x08007bf4 DMA1_Stream3_IRQHandler + *fill* 0x08007bf6 0x2 + .text.malloc 0x08007bf8 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) + 0x08007bf8 malloc + .text.free 0x08007c08 0x10 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) + 0x08007c08 free + .text._free_r 0x08007c18 0x88 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) + 0x08007c18 _free_r .text._malloc_r - 0x0800b158 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) - 0x0800b158 _malloc_r - .text._sbrk_r 0x0800b204 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) - 0x0800b204 _sbrk_r - .text._sbrk 0x0800b224 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) - 0x0800b224 _sbrk + 0x08007ca0 0xac /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) + 0x08007ca0 _malloc_r + .text._sbrk_r 0x08007d4c 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) + 0x08007d4c _sbrk_r + .text._sbrk 0x08007d6c 0x1c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) + 0x08007d6c _sbrk *(.init) *(.fini) *(.rodata*) .rodata.STORAGE_Inquirydata_FS - 0x0800b240 0x24 Src/usbd_descriptors.o - 0x0800b240 STORAGE_Inquirydata_FS - .rodata 0x0800b264 0x54 Src/usbd_descriptors.o + 0x08007d88 0x24 Src/usbd_descriptors.o + 0x08007d88 STORAGE_Inquirydata_FS + .rodata 0x08007dac 0x54 Src/usbd_descriptors.o .rodata.MSC_Page00_Inquiry_Data - 0x0800b2b8 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - 0x0800b2b8 MSC_Page00_Inquiry_Data + 0x08007e00 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + 0x08007e00 MSC_Page00_Inquiry_Data .rodata.MSC_Mode_Sense6_data - 0x0800b2c0 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - 0x0800b2c0 MSC_Mode_Sense6_data + 0x08007e08 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + 0x08007e08 MSC_Mode_Sense6_data .rodata.MSC_Mode_Sense10_data - 0x0800b2c8 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - 0x0800b2c8 MSC_Mode_Sense10_data + 0x08007e10 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + 0x08007e10 MSC_Mode_Sense10_data .rodata.APBAHBPrescTable - 0x0800b2d0 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - 0x0800b2d0 APBAHBPrescTable + 0x08007e18 0x10 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x08007e18 APBAHBPrescTable .rodata.str1.1 - 0x0800b2e0 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o) + 0x08007e28 0x2 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o) *(.eh_frame*) - 0x0800b2e2 __etext = . + 0x08007e2a __etext = . -.glue_7 0x0800b2e4 0x0 +.glue_7 0x08007e2c 0x0 .glue_7 0x00000000 0x0 linker stubs -.glue_7t 0x0800b2e4 0x0 +.glue_7t 0x08007e2c 0x0 .glue_7t 0x00000000 0x0 linker stubs -.vfp11_veneer 0x0800b2e4 0x0 +.vfp11_veneer 0x08007e2c 0x0 .vfp11_veneer 0x00000000 0x0 linker stubs -.v4_bx 0x0800b2e4 0x0 +.v4_bx 0x08007e2c 0x0 .v4_bx 0x00000000 0x0 linker stubs -.iplt 0x0800b2e4 0x0 +.iplt 0x08007e2c 0x0 .iplt 0x00000000 0x0 Src/usbd_descriptors.o -.rel.dyn 0x0800b2e4 0x0 +.rel.dyn 0x08007e2c 0x0 .rel.iplt 0x00000000 0x0 Src/usbd_descriptors.o -.data 0x20000000 0x144 load address 0x0800b2e2 +.data 0x20000000 0x144 load address 0x08007e2a 0x20000000 __data_start__ = . *(vtable) *(.data*) @@ -4041,10 +4056,10 @@ END GROUP 0x20000140 _impure_ptr 0x20000144 __data_end__ = . -.igot.plt 0x20000144 0x0 load address 0x0800b428 +.igot.plt 0x20000144 0x0 load address 0x08007f70 .igot.plt 0x00000000 0x0 Src/usbd_descriptors.o -.bss 0x20000144 0xd54 load address 0x0800b428 +.bss 0x20000144 0xcb4 load address 0x08007f70 0x20000144 . = ALIGN (0x4) 0x20000144 __bss_start__ = . *(.bss*) @@ -4071,7 +4086,9 @@ END GROUP .bss.TxOkInterruptReceived 0x20000158 0x1 Src/upstream_spi.o 0x20000158 TxOkInterruptReceived - *fill* 0x20000159 0x1 + .bss.SpiInterruptCompleted + 0x20000159 0x1 Src/upstream_spi.o + 0x20000159 SpiInterruptCompleted .bss.FaultLedBlinkRate 0x2000015a 0x2 Src/led.o 0x2000015a FaultLedBlinkRate @@ -4114,31 +4131,28 @@ END GROUP 0x20000dcc TestReadyCallback 0x20000dd0 GetStreamDataCallback 0x20000dd4 ByteCount - COMMON 0x20000dd8 0xa0 Src/hal_msp.o - 0x20000dd8 spiRxDmaHandle - 0x20000e28 spiTxDmaHandle - COMMON 0x20000e78 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x20000e78 SCSI_ProcessCmd_hmsc - 0x20000e7c SCSI_ProcessCmd_params - 0x20000e80 SCSI_ProcessCmd_lun - 0x20000e84 SCSI_ProcessCmd_callback - 0x20000e88 SCSI_ProcessCmd_pdev - COMMON 0x20000e8c 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x20000e8c MSC_BOT_pdev - 0x20000e90 MSC_BOT_hmsc - COMMON 0x20000e94 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) - 0x20000e94 errno - 0x20000e98 . = ALIGN (0x4) - 0x20000e98 __bss_end__ = . + COMMON 0x20000dd8 0x14 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x20000dd8 SCSI_ProcessCmd_hmsc + 0x20000ddc SCSI_ProcessCmd_params + 0x20000de0 SCSI_ProcessCmd_lun + 0x20000de4 SCSI_ProcessCmd_callback + 0x20000de8 SCSI_ProcessCmd_pdev + COMMON 0x20000dec 0x8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x20000dec MSC_BOT_pdev + 0x20000df0 MSC_BOT_hmsc + COMMON 0x20000df4 0x4 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) + 0x20000df4 errno + 0x20000df8 . = ALIGN (0x4) + 0x20000df8 __bss_end__ = . -.heap 0x20000e98 0x0 - 0x20000e98 __HeapBase = . - 0x20000e98 __end__ = . - 0x20000e98 end = __end__ +.heap 0x20000df8 0x0 + 0x20000df8 __HeapBase = . + 0x20000df8 __end__ = . + 0x20000df8 end = __end__ *(.heap*) - 0x20000e98 __HeapLimit = . + 0x20000df8 __HeapLimit = . -.stack_dummy 0x20000e98 0x0 +.stack_dummy 0x20000df8 0x0 *(.stack*) 0x2001c000 __StackTop = (ORIGIN (SRAM1) + 0x1c000) 0x2001c000 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) @@ -4161,67 +4175,65 @@ END GROUP 0x10000000 _eccmram = . OUTPUT(Upstream.elf elf32-littlearm) -.debug_info 0x00000000 0xee67 +.debug_info 0x00000000 0xeb5e .debug_info 0x00000000 0x3bd Src/usbd_descriptors.o .debug_info 0x000003bd 0x12ff Src/usbd_config.o .debug_info 0x000016bc 0x4de Src/usb_device.o .debug_info 0x00001b9a 0x71b Src/upstream_statemachine.o - .debug_info 0x000022b5 0xa4a Src/upstream_spi.o - .debug_info 0x00002cff 0x507 Src/upstream_msc.o - .debug_info 0x00003206 0x54e Src/main.o - .debug_info 0x00003754 0x1fe Src/led.o - .debug_info 0x00003952 0x77c Src/interrupts.o - .debug_info 0x000040ce 0xaa7 Src/hal_msp.o - .debug_info 0x00004b75 0x673 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_info 0x000051e8 0x873 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_info 0x00005a5b 0x93c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_info 0x00006397 0xc44 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_info 0x00006fdb 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - .debug_info 0x000070f7 0xa8b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_info 0x00007b82 0xa41 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_info 0x000085c3 0x13d5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_info 0x00009998 0xf65 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_info 0x0000a8fd 0xd54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_info 0x0000b651 0x54b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_info 0x0000bb9c 0xe89 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_info 0x0000ca25 0x6c6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_info 0x0000d0eb 0x638 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_info 0x0000d723 0xb57 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_info 0x0000e27a 0x6ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_info 0x0000e928 0x4a2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_info 0x0000edca 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + .debug_info 0x000022b5 0xad4 Src/upstream_spi.o + .debug_info 0x00002d89 0x507 Src/upstream_msc.o + .debug_info 0x00003290 0x54e Src/main.o + .debug_info 0x000037de 0x1fe Src/led.o + .debug_info 0x000039dc 0xa43 Src/interrupts.o + .debug_info 0x0000441f 0xa85 Src/hal_msp.o + .debug_info 0x00004ea4 0x673 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_info 0x00005517 0x873 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_info 0x00005d8a 0x93c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_info 0x000066c6 0xc44 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_info 0x0000730a 0x11c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_info 0x00007426 0xa8b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_info 0x00007eb1 0xa41 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_info 0x000088f2 0x13d5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_info 0x00009cc7 0xf65 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_info 0x0000ac2c 0xd54 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_info 0x0000b980 0x54b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_info 0x0000becb 0xe89 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_info 0x0000cd54 0x6c6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_info 0x0000d41a 0xb57 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_info 0x0000df71 0x6ae Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_info 0x0000e61f 0x4a2 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_info 0x0000eac1 0x9d Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o -.debug_abbrev 0x00000000 0x2d6a +.debug_abbrev 0x00000000 0x2c02 .debug_abbrev 0x00000000 0x144 Src/usbd_descriptors.o .debug_abbrev 0x00000144 0x20e Src/usbd_config.o .debug_abbrev 0x00000352 0x12e Src/usb_device.o .debug_abbrev 0x00000480 0x1a5 Src/upstream_statemachine.o - .debug_abbrev 0x00000625 0x223 Src/upstream_spi.o - .debug_abbrev 0x00000848 0x164 Src/upstream_msc.o - .debug_abbrev 0x000009ac 0x138 Src/main.o - .debug_abbrev 0x00000ae4 0x106 Src/led.o - .debug_abbrev 0x00000bea 0x16d Src/interrupts.o - .debug_abbrev 0x00000d57 0x16d Src/hal_msp.o - .debug_abbrev 0x00000ec4 0x12e Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_abbrev 0x00000ff2 0x1ee Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_abbrev 0x000011e0 0x1be Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_abbrev 0x0000139e 0x26e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_abbrev 0x0000160c 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - .debug_abbrev 0x00001684 0x20b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_abbrev 0x0000188f 0x1c7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_abbrev 0x00001a56 0x216 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_abbrev 0x00001c6c 0x20d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_abbrev 0x00001e79 0x252 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_abbrev 0x000020cb 0x161 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_abbrev 0x0000222c 0x23b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_abbrev 0x00002467 0x1a4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_abbrev 0x0000260b 0x1c5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_abbrev 0x000027d0 0x282 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_abbrev 0x00002a52 0x202 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_abbrev 0x00002c54 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_abbrev 0x00002d58 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + .debug_abbrev 0x00000625 0x291 Src/upstream_spi.o + .debug_abbrev 0x000008b6 0x164 Src/upstream_msc.o + .debug_abbrev 0x00000a1a 0x138 Src/main.o + .debug_abbrev 0x00000b52 0x106 Src/led.o + .debug_abbrev 0x00000c58 0x16d Src/interrupts.o + .debug_abbrev 0x00000dc5 0x15c Src/hal_msp.o + .debug_abbrev 0x00000f21 0x12e Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_abbrev 0x0000104f 0x1ee Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_abbrev 0x0000123d 0x1be Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_abbrev 0x000013fb 0x26e Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_abbrev 0x00001669 0x78 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_abbrev 0x000016e1 0x20b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_abbrev 0x000018ec 0x1c7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_abbrev 0x00001ab3 0x216 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_abbrev 0x00001cc9 0x20d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_abbrev 0x00001ed6 0x252 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_abbrev 0x00002128 0x161 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_abbrev 0x00002289 0x23b Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_abbrev 0x000024c4 0x1a4 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_abbrev 0x00002668 0x282 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_abbrev 0x000028ea 0x202 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_abbrev 0x00002aec 0x104 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_abbrev 0x00002bf0 0x12 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o -.debug_aranges 0x00000000 0xe58 +.debug_aranges 0x00000000 0xdf8 .debug_aranges 0x00000000 0x50 Src/usbd_descriptors.o .debug_aranges @@ -4231,84 +4243,81 @@ OUTPUT(Upstream.elf elf32-littlearm) .debug_aranges 0x00000170 0x50 Src/upstream_statemachine.o .debug_aranges - 0x000001c0 0x90 Src/upstream_spi.o + 0x000001c0 0xa0 Src/upstream_spi.o .debug_aranges - 0x00000250 0x68 Src/upstream_msc.o + 0x00000260 0x68 Src/upstream_msc.o .debug_aranges - 0x000002b8 0x30 Src/main.o + 0x000002c8 0x30 Src/main.o .debug_aranges - 0x000002e8 0x30 Src/led.o + 0x000002f8 0x30 Src/led.o .debug_aranges - 0x00000318 0x40 Src/interrupts.o + 0x00000328 0x38 Src/interrupts.o .debug_aranges - 0x00000358 0x30 Src/hal_msp.o + 0x00000360 0x30 Src/hal_msp.o .debug_aranges - 0x00000388 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + 0x00000390 0x50 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o .debug_aranges - 0x000003d8 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + 0x000003e0 0x88 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o .debug_aranges - 0x00000460 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + 0x00000468 0xc0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o .debug_aranges - 0x00000520 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x00000528 0xc0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o .debug_aranges - 0x000005e0 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + 0x000005e8 0x18 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o .debug_aranges - 0x000005f8 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x00000600 0x80 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o .debug_aranges - 0x00000678 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x00000680 0x68 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o .debug_aranges - 0x000006e0 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + 0x000006e8 0x180 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o .debug_aranges - 0x00000860 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x00000868 0x158 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o .debug_aranges - 0x000009b8 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + 0x000009c0 0x88 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o .debug_aranges - 0x00000a40 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + 0x00000a48 0x28 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o .debug_aranges - 0x00000a68 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + 0x00000a70 0x120 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o .debug_aranges - 0x00000b88 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + 0x00000b90 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .debug_aranges - 0x00000be0 0x68 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o + 0x00000be8 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .debug_aranges - 0x00000c48 0x100 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000ce8 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .debug_aranges - 0x00000d48 0xc0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x00000da8 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o .debug_aranges - 0x00000e08 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_aranges - 0x00000e30 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + 0x00000dd0 0x28 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o -.debug_ranges 0x00000000 0xc98 +.debug_ranges 0x00000000 0xc48 .debug_ranges 0x00000000 0x40 Src/usbd_descriptors.o .debug_ranges 0x00000040 0xf0 Src/usbd_config.o .debug_ranges 0x00000130 0x10 Src/usb_device.o .debug_ranges 0x00000140 0x40 Src/upstream_statemachine.o - .debug_ranges 0x00000180 0x80 Src/upstream_spi.o - .debug_ranges 0x00000200 0x58 Src/upstream_msc.o - .debug_ranges 0x00000258 0x20 Src/main.o - .debug_ranges 0x00000278 0x20 Src/led.o - .debug_ranges 0x00000298 0x30 Src/interrupts.o - .debug_ranges 0x000002c8 0x20 Src/hal_msp.o - .debug_ranges 0x000002e8 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_ranges 0x00000328 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_ranges 0x000003a0 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_ranges 0x00000450 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_ranges 0x00000500 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_ranges 0x00000570 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_ranges 0x000005c8 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_ranges 0x00000738 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_ranges 0x00000880 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_ranges 0x000008f8 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_ranges 0x00000910 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_ranges 0x00000a20 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_ranges 0x00000a68 0x58 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_ranges 0x00000ac0 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_ranges 0x00000bb0 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_ranges 0x00000c60 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_ranges 0x00000c78 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + .debug_ranges 0x00000180 0x90 Src/upstream_spi.o + .debug_ranges 0x00000210 0x58 Src/upstream_msc.o + .debug_ranges 0x00000268 0x20 Src/main.o + .debug_ranges 0x00000288 0x20 Src/led.o + .debug_ranges 0x000002a8 0x28 Src/interrupts.o + .debug_ranges 0x000002d0 0x20 Src/hal_msp.o + .debug_ranges 0x000002f0 0x40 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_ranges 0x00000330 0x78 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_ranges 0x000003a8 0xb0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_ranges 0x00000458 0xb0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_ranges 0x00000508 0x70 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_ranges 0x00000578 0x58 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_ranges 0x000005d0 0x170 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_ranges 0x00000740 0x148 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_ranges 0x00000888 0x78 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_ranges 0x00000900 0x18 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_ranges 0x00000918 0x110 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_ranges 0x00000a28 0x48 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_ranges 0x00000a70 0xf0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_ranges 0x00000b60 0xb0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_ranges 0x00000c10 0x18 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_ranges 0x00000c28 0x20 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o -.debug_macro 0x00000000 0x13f50 +.debug_macro 0x00000000 0x13de4 .debug_macro 0x00000000 0x379 Src/usbd_descriptors.o .debug_macro 0x00000379 0x868 Src/usbd_descriptors.o .debug_macro 0x00000be1 0x58 Src/usbd_descriptors.o @@ -4376,124 +4385,120 @@ OUTPUT(Upstream.elf elf32-littlearm) .debug_macro 0x0000fd26 0x316 Src/usbd_config.o .debug_macro 0x0001003c 0x44 Src/usbd_config.o .debug_macro 0x00010080 0x64 Src/usbd_config.o - .debug_macro 0x000100e4 0x1c Src/usbd_config.o - .debug_macro 0x00010100 0x353 Src/usb_device.o - .debug_macro 0x00010453 0x373 Src/upstream_statemachine.o - .debug_macro 0x000107c6 0x16 Src/upstream_statemachine.o - .debug_macro 0x000107dc 0x1c Src/upstream_statemachine.o - .debug_macro 0x000107f8 0x31b Src/upstream_spi.o - .debug_macro 0x00010b13 0x1c Src/upstream_spi.o - .debug_macro 0x00010b2f 0x8e Src/upstream_spi.o - .debug_macro 0x00010bbd 0x31c Src/upstream_msc.o - .debug_macro 0x00010ed9 0x317 Src/main.o - .debug_macro 0x000111f0 0x1b7 Src/led.o - .debug_macro 0x000113a7 0x30b Src/interrupts.o - .debug_macro 0x000116b2 0x1b1 Src/hal_msp.o - .debug_macro 0x00011863 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_macro 0x00011b66 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_macro 0x00011e6d 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_macro 0x00012174 0x36f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_macro 0x000124e3 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_macro 0x0001255f 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_macro 0x00012581 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - .debug_macro 0x00012871 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - .debug_macro 0x0001288d 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_macro 0x00012bda 0x34a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_macro 0x00012f24 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_macro 0x000130c3 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_macro 0x00013268 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_macro 0x00013449 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_macro 0x000135e8 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_macro 0x00013793 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_macro 0x0001396a 0x1a6 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_macro 0x00013b10 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_macro 0x00013caf 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_macro 0x00013e9c 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_macro 0x000100e4 0x22 Src/usbd_config.o + .debug_macro 0x00010106 0x353 Src/usb_device.o + .debug_macro 0x00010459 0x373 Src/upstream_statemachine.o + .debug_macro 0x000107cc 0x16 Src/upstream_statemachine.o + .debug_macro 0x000107e2 0x1c Src/upstream_statemachine.o + .debug_macro 0x000107fe 0x324 Src/upstream_spi.o + .debug_macro 0x00010b22 0x1c Src/upstream_spi.o + .debug_macro 0x00010b3e 0xa6 Src/upstream_spi.o + .debug_macro 0x00010be4 0x31c Src/upstream_msc.o + .debug_macro 0x00010f00 0x32a Src/main.o + .debug_macro 0x0001122a 0x1b7 Src/led.o + .debug_macro 0x000113e1 0x30b Src/interrupts.o + .debug_macro 0x000116ec 0x1b1 Src/hal_msp.o + .debug_macro 0x0001189d 0x303 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_macro 0x00011ba0 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_macro 0x00011ea7 0x307 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_macro 0x000121ae 0x36f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_macro 0x0001251d 0x7c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_macro 0x00012599 0x22 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_macro 0x000125bb 0x2f0 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_macro 0x000128ab 0x1c Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_macro 0x000128c7 0x34d Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_macro 0x00012c14 0x34a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_macro 0x00012f5e 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_macro 0x000130fd 0x1a5 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_macro 0x000132a2 0x1e1 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_macro 0x00013483 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_macro 0x00013622 0x1ab Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_macro 0x000137cd 0x1d7 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_macro 0x000139a4 0x19f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_macro 0x00013b43 0x1ed Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_macro 0x00013d30 0xb4 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o -.debug_line 0x00000000 0x11c78 +.debug_line 0x00000000 0xd494 .debug_line 0x00000000 0x7ee Src/usbd_descriptors.o .debug_line 0x000007ee 0x904 Src/usbd_config.o .debug_line 0x000010f2 0x784 Src/usb_device.o .debug_line 0x00001876 0x8f0 Src/upstream_statemachine.o - .debug_line 0x00002166 0x9a5 Src/upstream_spi.o - .debug_line 0x00002b0b 0x832 Src/upstream_msc.o - .debug_line 0x0000333d 0x732 Src/main.o - .debug_line 0x00003a6f 0x579 Src/led.o - .debug_line 0x00003fe8 0x717 Src/interrupts.o - .debug_line 0x000046ff 0x5b0 Src/hal_msp.o - .debug_line 0x00004caf 0x768 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_line 0x00005417 0x919 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_line 0x00005d30 0x8e0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_line 0x00006610 0xa8f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_line 0x0000709f 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o - .debug_line 0x000077bf 0x8e7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_line 0x000080a6 0x8b7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_line 0x0000895d 0xb86 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_line 0x000094e3 0xd52 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_line 0x0000a235 0x855 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_line 0x0000aa8a 0x58c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_line 0x0000b016 0xa4f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_line 0x0000ba65 0x742 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_line 0x0000c1a7 0x481d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_line 0x000109c4 0x80f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_line 0x000111d3 0x6fa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_line 0x000118cd 0x2fe Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_line 0x00011bcb 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + .debug_line 0x00002166 0x9f0 Src/upstream_spi.o + .debug_line 0x00002b56 0x832 Src/upstream_msc.o + .debug_line 0x00003388 0x74c Src/main.o + .debug_line 0x00003ad4 0x579 Src/led.o + .debug_line 0x0000404d 0x707 Src/interrupts.o + .debug_line 0x00004754 0x594 Src/hal_msp.o + .debug_line 0x00004ce8 0x768 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_line 0x00005450 0x919 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_line 0x00005d69 0x8e0 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_line 0x00006649 0xa8f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_line 0x000070d8 0x720 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_line 0x000077f8 0x8e7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_line 0x000080df 0x8b7 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_line 0x00008996 0xb86 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_line 0x0000951c 0xd52 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_line 0x0000a26e 0x855 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_line 0x0000aac3 0x58c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_line 0x0000b04f 0xa4f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_line 0x0000ba9e 0x742 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_line 0x0000c1e0 0x80f Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_line 0x0000c9ef 0x6fa Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_line 0x0000d0e9 0x2fe Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_line 0x0000d3e7 0xad Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o -.debug_str 0x00000000 0x68d9c - .debug_str 0x00000000 0x64290 Src/usbd_descriptors.o - 0x645a8 (size before relaxing) - .debug_str 0x00064290 0xe29 Src/usbd_config.o - 0x648b6 (size before relaxing) - .debug_str 0x000650b9 0x41 Src/usb_device.o - 0x64629 (size before relaxing) - .debug_str 0x000650fa 0x485 Src/upstream_statemachine.o - 0x64ab0 (size before relaxing) - .debug_str 0x0006557f 0xb3d Src/upstream_spi.o - 0x64915 (size before relaxing) - .debug_str 0x000660bc 0x2e0 Src/upstream_msc.o - 0x64021 (size before relaxing) - .debug_str 0x0006639c 0x140 Src/main.o - 0x63f75 (size before relaxing) - .debug_str 0x000664dc 0x7c Src/led.o - 0x603ff (size before relaxing) - .debug_str 0x00066558 0xb2 Src/interrupts.o - 0x6443d (size before relaxing) - .debug_str 0x0006660a 0x3f Src/hal_msp.o - 0x60e44 (size before relaxing) - .debug_str 0x00066649 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o +.debug_str 0x00000000 0x68d15 + .debug_str 0x00000000 0x6425d Src/usbd_descriptors.o + 0x64575 (size before relaxing) + .debug_str 0x0006425d 0xe4b Src/usbd_config.o + 0x648d8 (size before relaxing) + .debug_str 0x000650a8 0x41 Src/usb_device.o + 0x645f6 (size before relaxing) + .debug_str 0x000650e9 0x485 Src/upstream_statemachine.o + 0x64a7d (size before relaxing) + .debug_str 0x0006556e 0xc7b Src/upstream_spi.o + 0x64aa0 (size before relaxing) + .debug_str 0x000661e9 0x2e0 Src/upstream_msc.o + 0x63fee (size before relaxing) + .debug_str 0x000664c9 0x140 Src/main.o + 0x64236 (size before relaxing) + .debug_str 0x00066609 0x7c Src/led.o + 0x604e3 (size before relaxing) + .debug_str 0x00066685 0x74 Src/interrupts.o + 0x646d2 (size before relaxing) + .debug_str 0x000666f9 0x3f Src/hal_msp.o + 0x60f2c (size before relaxing) + .debug_str 0x00066738 0xc9 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o 0x63d52 (size before relaxing) - .debug_str 0x00066712 0x133 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_str 0x00066801 0x133 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o 0x63dca (size before relaxing) - .debug_str 0x00066845 0x19c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_str 0x00066934 0x19c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o 0x63e31 (size before relaxing) - .debug_str 0x000669e1 0x50a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - 0x64c71 (size before relaxing) - .debug_str 0x00066eeb 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o + .debug_str 0x00066ad0 0x50a Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + 0x64c3e (size before relaxing) + .debug_str 0x00066fda 0x49 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_data.o 0x6395b (size before relaxing) - .debug_str 0x00066f34 0x15b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - 0x64931 (size before relaxing) - .debug_str 0x0006708f 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - 0x64a01 (size before relaxing) - .debug_str 0x0006720e 0x73e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_str 0x00067023 0x15b Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + 0x648fe (size before relaxing) + .debug_str 0x0006717e 0x17f Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + 0x649ce (size before relaxing) + .debug_str 0x000672fd 0x73e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o 0x609c1 (size before relaxing) - .debug_str 0x0006794c 0x364 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - 0x6088c (size before relaxing) - .debug_str 0x00067cb0 0x343 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_str 0x00067a3b 0x363 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + 0x6088b (size before relaxing) + .debug_str 0x00067d9e 0x343 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o 0x60651 (size before relaxing) - .debug_str 0x00067ff3 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_str 0x000680e1 0x4a Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o 0x603a7 (size before relaxing) - .debug_str 0x0006803d 0x1f0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_str 0x0006812b 0x1f0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o 0x60857 (size before relaxing) - .debug_str 0x0006822d 0x25e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_str 0x0006831b 0x25e Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o 0x6042f (size before relaxing) - .debug_str 0x0006848b 0x175 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - 0x60452 (size before relaxing) - .debug_str 0x00068600 0x306 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_str 0x00068579 0x306 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o 0x60902 (size before relaxing) - .debug_str 0x00068906 0x40d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_str 0x0006887f 0x40d Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o 0x6067f (size before relaxing) - .debug_str 0x00068d13 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_str 0x00068c8c 0x89 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o 0x39fc2 (size before relaxing) .comment 0x00000000 0x70 @@ -4521,7 +4526,6 @@ OUTPUT(Upstream.elf elf32-littlearm) .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .comment 0x00000000 0x71 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .comment 0x00000000 0x71 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o @@ -4575,60 +4579,57 @@ OUTPUT(Upstream.elf elf32-littlearm) .ARM.attributes 0x00000462 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o .ARM.attributes - 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .ARM.attributes - 0x000004c8 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + 0x00000495 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o .ARM.attributes - 0x000004fb 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + 0x000004c8 0x33 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o .ARM.attributes - 0x0000052e 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + 0x000004fb 0x33 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o .ARM.attributes - 0x00000561 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o + 0x0000052e 0x21 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f405xx.o .ARM.attributes - 0x00000582 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) + 0x0000054f 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) .ARM.attributes - 0x000005af 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) + 0x0000057c 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) .ARM.attributes - 0x000005dc 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) + 0x000005a9 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) .ARM.attributes - 0x00000609 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) + 0x000005d6 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) .ARM.attributes - 0x00000636 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o) + 0x00000603 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-impure.o) .ARM.attributes - 0x00000663 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) + 0x00000630 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) .ARM.attributes - 0x00000690 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) + 0x0000065d 0x2d /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) -.debug_frame 0x00000000 0x383c +.debug_frame 0x00000000 0x36d8 .debug_frame 0x00000000 0x114 Src/usbd_descriptors.o .debug_frame 0x00000114 0x428 Src/usbd_config.o .debug_frame 0x0000053c 0x2c Src/usb_device.o .debug_frame 0x00000568 0xf4 Src/upstream_statemachine.o - .debug_frame 0x0000065c 0x1fc Src/upstream_spi.o - .debug_frame 0x00000858 0x178 Src/upstream_msc.o - .debug_frame 0x000009d0 0x74 Src/main.o - .debug_frame 0x00000a44 0x74 Src/led.o - .debug_frame 0x00000ab8 0x9c Src/interrupts.o - .debug_frame 0x00000b54 0x74 Src/hal_msp.o - .debug_frame 0x00000bc8 0x10c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o - .debug_frame 0x00000cd4 0x210 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o - .debug_frame 0x00000ee4 0x324 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o - .debug_frame 0x00001208 0x2e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o - .debug_frame 0x000014f0 0x1e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o - .debug_frame 0x000016d8 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o - .debug_frame 0x00001860 0x718 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o - .debug_frame 0x00001f78 0x604 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o - .debug_frame 0x0000257c 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o - .debug_frame 0x00002780 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o - .debug_frame 0x000027e0 0x508 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o - .debug_frame 0x00002ce8 0x14c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o - .debug_frame 0x00002e34 0x194 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o - .debug_frame 0x00002fc8 0x42c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o - .debug_frame 0x000033f4 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o - .debug_frame 0x000036b4 0x58 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o - .debug_frame 0x0000370c 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) - .debug_frame 0x0000373c 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) - .debug_frame 0x00003768 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) - .debug_frame 0x00003794 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) - .debug_frame 0x000037c0 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) - .debug_frame 0x0000381c 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) + .debug_frame 0x0000065c 0x248 Src/upstream_spi.o + .debug_frame 0x000008a4 0x178 Src/upstream_msc.o + .debug_frame 0x00000a1c 0x74 Src/main.o + .debug_frame 0x00000a90 0x74 Src/led.o + .debug_frame 0x00000b04 0x80 Src/interrupts.o + .debug_frame 0x00000b84 0x74 Src/hal_msp.o + .debug_frame 0x00000bf8 0x10c Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o + .debug_frame 0x00000d04 0x210 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o + .debug_frame 0x00000f14 0x324 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o + .debug_frame 0x00001238 0x2e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.o + .debug_frame 0x00001520 0x1e8 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_bot.o + .debug_frame 0x00001708 0x188 Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.o + .debug_frame 0x00001890 0x718 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o + .debug_frame 0x00001fa8 0x604 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o + .debug_frame 0x000025ac 0x204 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o + .debug_frame 0x000027b0 0x60 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.o + .debug_frame 0x00002810 0x508 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.o + .debug_frame 0x00002d18 0x14c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o + .debug_frame 0x00002e64 0x42c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o + .debug_frame 0x00003290 0x2c0 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o + .debug_frame 0x00003550 0x58 Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.o + .debug_frame 0x000035a8 0x30 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-malloc.o) + .debug_frame 0x000035d8 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-freer.o) + .debug_frame 0x00003604 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-nano-mallocr.o) + .debug_frame 0x00003630 0x2c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-sbrkr.o) + .debug_frame 0x0000365c 0x5c /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libg_nano.a(lib_a-reent.o) + .debug_frame 0x000036b8 0x20 /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m/libnosys.a(sbrk.o) diff --git a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c index 60ee967..a72d4d5 100644 --- a/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c +++ b/Upstream/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c @@ -102,7 +102,7 @@ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ -#define SPI_TIMEOUT_VALUE 10 +#define SPI_TIMEOUT_VALUE 2 /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ diff --git a/Upstream/Inc/board_config.h b/Upstream/Inc/board_config.h index 30fb7a3..37336ae 100644 --- a/Upstream/Inc/board_config.h +++ b/Upstream/Inc/board_config.h @@ -30,10 +30,10 @@ #define FAULT_LED_ON STAT_LED_ON #define FAULT_LED_OFF STAT_LED_OFF -//#define SPI_DMA_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI & DMA activity -//#define SPI_DMA_ACTIVE_PORT GPIOB -//#define SPI_DMA_ACTIVE_ON SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_LOW) -//#define SPI_DMA_ACTIVE_OFF SPI_DMA_ACTIVE_PORT->BSRR = (SPI_DMA_ACTIVE_PIN << BSRR_SHIFT_HIGH) +#define SPI_INT_ACTIVE_PIN GPIO_PIN_5 /////////Temporary indicator of SPI activity +#define SPI_INT_ACTIVE_PORT GPIOB +#define SPI_INT_ACTIVE_ON SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_HIGH) +#define SPI_INT_ACTIVE_OFF SPI_INT_ACTIVE_PORT->BSRR = (SPI_INT_ACTIVE_PIN << BSRR_SHIFT_LOW) #define SPI1_NSS_PIN GPIO_PIN_4 #define SPI1_NSS_PORT GPIOA diff --git a/Upstream/Inc/interrupts.h b/Upstream/Inc/interrupts.h index 1fd97e9..963a383 100755 --- a/Upstream/Inc/interrupts.h +++ b/Upstream/Inc/interrupts.h @@ -49,8 +49,9 @@ * A lower priority value indicates a higher priority. */ #define INT_PRIORITY_SYSTICK 2 -#define INT_PRIORITY_SPI_DMA 10 //SPI interacts heavily with USB_OTG, -#define INT_PRIORITY_OTG_FS 10 //so set them at the same priority. +#define INT_PRIORITY_SPI 8 //SPI is more important than USB now! +#define INT_PRIORITY_OTG_FS 10 +#define INT_PRIORITY_EXT3I INT_PRIORITY_OTG_FS /* Exported macro ------------------------------------------------------------*/ @@ -58,8 +59,8 @@ void OTG_FS_IRQHandler(void); void SysTick_Handler(void); -void DMA2_Stream2_IRQHandler(void); -void DMA2_Stream3_IRQHandler(void); +//void DMA2_Stream2_IRQHandler(void); +//void DMA2_Stream3_IRQHandler(void); void EXTI3_IRQHandler(void); diff --git a/Upstream/Inc/upstream_spi.h b/Upstream/Inc/upstream_spi.h index 6959ef5..628d220 100644 --- a/Upstream/Inc/upstream_spi.h +++ b/Upstream/Inc/upstream_spi.h @@ -24,7 +24,7 @@ #define UPSTREAM_SPI_FREAKOUT \ do { \ LED_Fault_SetBlinkRate(LED_FAST_BLINK_RATE); \ - UpstreamInterfaceState = UPSTREAM_INTERFACE_ERROR; \ + /*UpstreamInterfaceState = UPSTREAM_INTERFACE_ERROR; */ \ Upstream_StateMachine_SetErrorState(); \ while (1); \ } while (0); @@ -78,8 +78,8 @@ void Upstream_ReleasePacket(UpstreamPacketTypeDef* packetToRelease); HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite); HAL_StatusTypeDef Upstream_ReceivePacket(SpiPacketReceivedCallbackTypeDef callback); void Upstream_TxOkInterrupt(void); -void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi); -void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi); +void Upstream_SPIProcess_InterruptSafe(void); +void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi); void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi); diff --git a/Upstream/Src/hal_msp.c b/Upstream/Src/hal_msp.c index b4e3024..b364f67 100755 --- a/Upstream/Src/hal_msp.c +++ b/Upstream/Src/hal_msp.c @@ -38,8 +38,8 @@ #include "board_config.h" -DMA_HandleTypeDef spiTxDmaHandle; -DMA_HandleTypeDef spiRxDmaHandle; +//DMA_HandleTypeDef spiTxDmaHandle; +//DMA_HandleTypeDef spiRxDmaHandle; /** @@ -64,7 +64,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { /* Peripheral clock enable */ __HAL_RCC_SPI1_CLK_ENABLE(); - __HAL_RCC_DMA2_CLK_ENABLE(); +// __HAL_RCC_DMA2_CLK_ENABLE(); /**SPI1 GPIO Configuration PA4 ------> GPIO manual slave select @@ -90,42 +90,46 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) GPIO_InitStruct.Mode = GPIO_MODE_INPUT | GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(DOWNSTREAM_TX_OK_PORT, &GPIO_InitStruct); - HAL_NVIC_SetPriority(EXTI3_IRQn, INT_PRIORITY_SPI_DMA, 0); + HAL_NVIC_SetPriority(EXTI3_IRQn, INT_PRIORITY_EXT3I, 0); HAL_NVIC_EnableIRQ(EXTI3_IRQn); - //Prepare Tx DMA stream - hspi->hdmatx = &spiTxDmaHandle; - spiTxDmaHandle.Instance = DMA2_Stream3; - spiTxDmaHandle.Parent = hspi; - spiTxDmaHandle.Init.Channel = DMA_CHANNEL_3; - spiTxDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH; - spiTxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE; - spiTxDmaHandle.Init.MemInc = DMA_MINC_ENABLE; - spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE; - spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE; - spiTxDmaHandle.Init.Mode = DMA_NORMAL; - spiTxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM; - spiTxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - HAL_DMA_Init(&spiTxDmaHandle); - HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); - - //Prepare Rx DMA stream - hspi->hdmarx = &spiRxDmaHandle; - spiRxDmaHandle.Instance = DMA2_Stream2; - spiRxDmaHandle.Parent = hspi; - spiRxDmaHandle.Init.Channel = DMA_CHANNEL_3; - spiRxDmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY; - spiRxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE; - spiRxDmaHandle.Init.MemInc = DMA_MINC_ENABLE; - spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE; - spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE; - spiRxDmaHandle.Init.Mode = DMA_NORMAL; - spiRxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM; - spiRxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - HAL_DMA_Init(&spiRxDmaHandle); - HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); + //Interrupt-based SPI now! + HAL_NVIC_SetPriority(SPI1_IRQn, INT_PRIORITY_SPI, 0); + HAL_NVIC_EnableIRQ(SPI1_IRQn); + +// //Prepare Tx DMA stream +// hspi->hdmatx = &spiTxDmaHandle; +// spiTxDmaHandle.Instance = DMA2_Stream3; +// spiTxDmaHandle.Parent = hspi; +// spiTxDmaHandle.Init.Channel = DMA_CHANNEL_3; +// spiTxDmaHandle.Init.Direction = DMA_MEMORY_TO_PERIPH; +// spiTxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE; +// spiTxDmaHandle.Init.MemInc = DMA_MINC_ENABLE; +// spiTxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE; +// spiTxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE; +// spiTxDmaHandle.Init.Mode = DMA_NORMAL; +// spiTxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM; +// spiTxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; +// HAL_DMA_Init(&spiTxDmaHandle); +// HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, INT_PRIORITY_SPI_DMA, 0); +// HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); +// +// //Prepare Rx DMA stream +// hspi->hdmarx = &spiRxDmaHandle; +// spiRxDmaHandle.Instance = DMA2_Stream2; +// spiRxDmaHandle.Parent = hspi; +// spiRxDmaHandle.Init.Channel = DMA_CHANNEL_3; +// spiRxDmaHandle.Init.Direction = DMA_PERIPH_TO_MEMORY; +// spiRxDmaHandle.Init.PeriphInc = DMA_PINC_DISABLE; +// spiRxDmaHandle.Init.MemInc = DMA_MINC_ENABLE; +// spiRxDmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; //DMA_PDATAALIGN_BYTE; +// spiRxDmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; //DMA_MDATAALIGN_BYTE; +// spiRxDmaHandle.Init.Mode = DMA_NORMAL; +// spiRxDmaHandle.Init.Priority = DMA_PRIORITY_MEDIUM; +// spiRxDmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE; +// HAL_DMA_Init(&spiRxDmaHandle); +// HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, INT_PRIORITY_SPI_DMA, 0); +// HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); } } @@ -136,7 +140,7 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) { /* Peripheral clock disable */ __HAL_RCC_SPI1_CLK_DISABLE(); - __HAL_RCC_DMA2_CLK_DISABLE(); +// __HAL_RCC_DMA2_CLK_DISABLE(); /**SPI1 GPIO Configuration PA4 ------> SPI1_NSS @@ -145,11 +149,11 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) PA7 ------> SPI1_MOSI */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); - HAL_DMA_DeInit(&spiTxDmaHandle); - HAL_DMA_DeInit(&spiRxDmaHandle); - - HAL_NVIC_DisableIRQ(DMA2_Stream3_IRQn); - HAL_NVIC_DisableIRQ(DMA2_Stream2_IRQn); +// HAL_DMA_DeInit(&spiTxDmaHandle); +// HAL_DMA_DeInit(&spiRxDmaHandle); +// +// HAL_NVIC_DisableIRQ(DMA2_Stream3_IRQn); +// HAL_NVIC_DisableIRQ(DMA2_Stream2_IRQn); } } diff --git a/Upstream/Src/interrupts.c b/Upstream/Src/interrupts.c index f287490..0ff25c7 100755 --- a/Upstream/Src/interrupts.c +++ b/Upstream/Src/interrupts.c @@ -45,8 +45,10 @@ /* External variables --------------------------------------------------------*/ extern PCD_HandleTypeDef hpcd_USB_OTG_FS; -extern DMA_HandleTypeDef spiTxDmaHandle; -extern DMA_HandleTypeDef spiRxDmaHandle; +extern SPI_HandleTypeDef Hspi1; + +//extern DMA_HandleTypeDef spiTxDmaHandle; +//extern DMA_HandleTypeDef spiRxDmaHandle; /******************************************************************************/ @@ -66,34 +68,38 @@ void SysTick_Handler(void) ///////////////////////// void OTG_FS_IRQHandler(void) { - //STAT_LED_ON; //blink STAT LED while processing interrupt HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); - //STAT_LED_OFF; } -void DMA2_Stream2_IRQHandler(void) -{ - //SPI_DMA_ACTIVE_ON; - HAL_DMA_IRQHandler(&spiRxDmaHandle); - //SPI_DMA_ACTIVE_OFF; -} - -void DMA2_Stream3_IRQHandler(void) -{ - //SPI_DMA_ACTIVE_ON; - HAL_DMA_IRQHandler(&spiTxDmaHandle); - //SPI_DMA_ACTIVE_OFF; -} +//void DMA2_Stream2_IRQHandler(void) +//{ +// //SPI_DMA_ACTIVE_ON; +// HAL_DMA_IRQHandler(&spiRxDmaHandle); +// //SPI_DMA_ACTIVE_OFF; +//} +// +//void DMA2_Stream3_IRQHandler(void) +//{ +// //SPI_DMA_ACTIVE_ON; +// HAL_DMA_IRQHandler(&spiTxDmaHandle); +// //SPI_DMA_ACTIVE_OFF; +//} void EXTI3_IRQHandler(void) { - //SPI_DMA_ACTIVE_ON; __HAL_GPIO_EXTI_CLEAR_IT(DOWNSTREAM_TX_OK_PIN); Upstream_TxOkInterrupt(); - //SPI_DMA_ACTIVE_OFF; } ///////////////////////// ///////////////////////// +void SPI1_IRQHandler(void) +{ + SPI_INT_ACTIVE_ON; + HAL_SPI_IRQHandler(&Hspi1); + SPI_INT_ACTIVE_OFF; +} + + /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Upstream/Src/main.c b/Upstream/Src/main.c index 72c640b..77686d1 100755 --- a/Upstream/Src/main.c +++ b/Upstream/Src/main.c @@ -38,6 +38,7 @@ #include "board_config.h" #include "led.h" #include "upstream_statemachine.h" +#include "upstream_spi.h" /* Private variables ---------------------------------------------------------*/ @@ -68,10 +69,11 @@ int main(void) while (1) { - + Upstream_SPIProcess_InterruptSafe(); } } + /** System Clock Configuration */ void SystemClock_Config(void) @@ -151,12 +153,12 @@ void GPIO_Init(void) HAL_GPIO_Init(STAT_LED_PORT, &GPIO_InitStruct); STAT_LED_OFF; -// //SPI_DMA_ACTIVE indicator -// GPIO_InitStruct.Pin = SPI_DMA_ACTIVE_PIN; -// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; -// GPIO_InitStruct.Pull = GPIO_NOPULL; -// HAL_GPIO_Init(SPI_DMA_ACTIVE_PORT, &GPIO_InitStruct); -// SPI_DMA_ACTIVE_OFF; + //SPI_INT_ACTIVE indicator + GPIO_InitStruct.Pin = SPI_INT_ACTIVE_PIN; + //GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + //GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(SPI_INT_ACTIVE_PORT, &GPIO_InitStruct); + SPI_INT_ACTIVE_OFF; } /* USER CODE BEGIN 4 */ diff --git a/Upstream/Src/upstream_spi.c b/Upstream/Src/upstream_spi.c index d77aba7..30c4c36 100644 --- a/Upstream/Src/upstream_spi.c +++ b/Upstream/Src/upstream_spi.c @@ -11,6 +11,7 @@ #include "stm32f4xx_hal.h" #include "usbd_def.h" #include "board_config.h" +#include "interrupts.h" @@ -26,6 +27,7 @@ SpiPacketReceivedCallbackTypeDef ReceivePacketCallback = NULL; //Indicates some uint32_t TemporaryIncomingPacketLength; //We don't actually care about what Downstream sends us when we are transmitting. We just need somewhere to put it so that our own packet length is not overwritten. uint8_t TxOkInterruptReceived = 0; +uint8_t SpiInterruptCompleted = 0; uint8_t SentCommandClass; uint8_t SentCommand; @@ -35,6 +37,7 @@ void Upstream_BeginTransmitPacketBody(void); HAL_StatusTypeDef Upstream_CheckBeginPacketReception(void); void Upstream_BeginReceivePacketSize(UpstreamPacketTypeDef* freePacket); void Upstream_BeginReceivePacketBody(void); +void Upstream_SPIProcess(void); @@ -227,12 +230,41 @@ HAL_StatusTypeDef Upstream_TransmitPacket(UpstreamPacketTypeDef* packetToWrite) -//Called at the end of the SPI TxRx DMA transfer, -//at DMA2 interrupt priority. Assume *hspi points to our hspi1. +//Called at the end of the SPI TxRx transfer, +//at SPI1 interrupt priority. Assume *hspi points to our hspi1. //We TxRx our outgoing packet because the SPI hardware freaks out if we only Tx it :-/ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) { - SpiPacketReceivedCallbackTypeDef tempPacketCallback; ///////// + SpiInterruptCompleted = 1; + + //Elevate priority here to stop EXT3I sneaking in + //before we have a chance to process UpstreamInterfaceState change. + __set_BASEPRI(INT_PRIORITY_OTG_FS << (8 - __NVIC_PRIO_BITS)); +} + + + +//Preemption protection wrapper around Upstream_SPIProcess() +void Upstream_SPIProcess_InterruptSafe(void) +{ + //This is done on SPI interrupt callback... + //__set_BASEPRI(INT_PRIORITY_OTG_FS << (8 - __NVIC_PRIO_BITS)); + + if (SpiInterruptCompleted == 0) + { + return; + } + SpiInterruptCompleted = 0; + Upstream_SPIProcess(); + __set_BASEPRI(0); +} + + +//Called from main(). +//Must be protected against preemption by USB and EXT3 interrupts at priority 10! +void Upstream_SPIProcess(void) +{ + SpiPacketReceivedCallbackTypeDef tempPacketCallback; SPI1_NSS_DEASSERT; @@ -440,10 +472,10 @@ void Upstream_BeginTransmitPacketSize(void) { UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_SIZE; SPI1_NSS_ASSERT; - if (HAL_SPI_TransmitReceive_DMA(&Hspi1, - (uint8_t*)&CurrentWorkingPacket->Length16, - (uint8_t*)&TemporaryIncomingPacketLength, - 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out... + if (HAL_SPI_TransmitReceive_IT(&Hspi1, + (uint8_t*)&CurrentWorkingPacket->Length16, + (uint8_t*)&TemporaryIncomingPacketLength, + 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out... { UPSTREAM_SPI_FREAKOUT; } @@ -455,15 +487,10 @@ void Upstream_BeginTransmitPacketBody(void) UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_PACKET; SPI1_NSS_ASSERT; - if (CurrentWorkingPacket->Length16 > 200) - { - UpstreamInterfaceState = UPSTREAM_INTERFACE_TX_PACKET; ///////////////////////// - } - - if (HAL_SPI_TransmitReceive_DMA(&Hspi1, - &CurrentWorkingPacket->CommandClass, - &CurrentWorkingPacket->CommandClass, - ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK) + if (HAL_SPI_TransmitReceive_IT(&Hspi1, + &CurrentWorkingPacket->CommandClass, + &CurrentWorkingPacket->CommandClass, + ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK) { UPSTREAM_SPI_FREAKOUT; } @@ -488,11 +515,11 @@ void Upstream_BeginReceivePacketSize(UpstreamPacketTypeDef* freePacket) CurrentWorkingPacket = freePacket; CurrentWorkingPacket->Length16 = 0; //Our RX buffer is used by HAL_SPI_Receive_DMA as dummy TX data, we set Length to 0 so downstream will know this is a dummy packet. SPI1_NSS_ASSERT; - TemporaryIncomingPacketLength = 0; //////////////// - if (HAL_SPI_TransmitReceive_DMA(&Hspi1, ////////////// - (uint8_t*)&TemporaryIncomingPacketLength, ///////////// - (uint8_t*)&CurrentWorkingPacket->Length16, - 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out... + TemporaryIncomingPacketLength = 0; + if (HAL_SPI_TransmitReceive_IT(&Hspi1, + (uint8_t*)&TemporaryIncomingPacketLength, + (uint8_t*)&CurrentWorkingPacket->Length16, + 2) != HAL_OK) //We only need to write one word, but the peripheral library freaks out... { UPSTREAM_SPI_FREAKOUT; } @@ -503,10 +530,10 @@ void Upstream_BeginReceivePacketBody(void) { UpstreamInterfaceState = UPSTREAM_INTERFACE_RX_PACKET; SPI1_NSS_ASSERT; - if (HAL_SPI_TransmitReceive_DMA(&Hspi1, //////////////// - &CurrentWorkingPacket->CommandClass, ///////////////////// - &CurrentWorkingPacket->CommandClass, - ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK) + if (HAL_SPI_TransmitReceive_IT(&Hspi1, + &CurrentWorkingPacket->CommandClass, + &CurrentWorkingPacket->CommandClass, + ((CurrentWorkingPacket->Length16 < 2) ? 2 : CurrentWorkingPacket->Length16)) != HAL_OK) { UPSTREAM_SPI_FREAKOUT; }