AnsweredAssumed Answered

USB mass storage Host library takes too much memories.

Question asked by Calvin63 on Sep 9, 2015
Latest reply on Sep 9, 2015 by Calvin63
Dear Sir:
     I try to merge USB mass storage host (full speed) to my application. The project is based on STM32F427 and compiled on uVision The library taken from example: FW upgrade of STM32F4-Discovery. After adding necessary files and build successfully, I found the usb library eat too many ram, After comparing with original example, I see the original example project does not. I'm wondering why the result is different, I can't see any clue from the source code. What should I check? 
 Below is part of the map file from my project:

    Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x0002a968, Max: 0x0002d000, ABSOLUTE)

    Base Addr    Size         Type   Attr      Idx    E Section Name        Object

    0x20000000   0x0001f400   Zero   RW         3672    .ARM.__AT_0x20000000  stm32variable.o
    0x2001f400   0x00000020   Zero   RW          577    .bss                intr.o
    0x2001f420   0x00000040   Zero   RW         3692    .bss                stm32myvariable.o
    0x2001f460   0x00000040   Zero   RW         3693    .bss                stm32myvariable.o
    0x2001f4a0   0x00000040   Zero   RW         3695    .bss                stm32myvariable.o
    0x2001f4e0   0x00000040   Zero   RW         3697    .bss                stm32myvariable.o
    0x2001f520   0x000004b0   Zero   RW         3700    .bss                stm32myvariable.o
    0x2001f9d0   0x00000084   Zero   RW         3701    .bss                stm32myvariable.o
    0x2001fa54   0x00000430   Zero   RW        10681    .bss                usbh_usr.o
    0x2001fe84   0x00000424   Zero   RW        10682    .bss                usbh_usr.o
    0x200202a8   0x00000424   Zero   RW        10683    .bss                usbh_usr.o
    0x200206cc   0x00008000   Zero   RW        10836    .bss                command.o
    0x200286cc   0x00000210   Zero   RW        11275    .bss                usbh_msc_scsi.o
    0x200288dc   0x00000040   Zero   RW        11360    .bss                usbh_msc_bot.o
    0x2002891c   0x0000004a   Zero   RW        11410    .bss                usbh_msc_core.o

    0x20028966   0x00000002   PAD
    0x20028968   0x00002000   Zero   RW         3816    STACK               startup_stm32f4xx.o

    Execution Region RW_IRAM2 (Base: 0x2002d000, Size: 0x00000354, Max: 0x00008000, ABSOLUTE, COMPRESSED[0x000001bc])

    Base Addr    Size         Type   Attr      Idx    E Section Name        Object

    0x2002d000   0x00000008   Data   RW         1727    .data               xxx1.o
    0x2002d008   0x00000008   Data   RW         2059    .data               main.o
    0x2002d010   0x00000004   Data   RW         2460    .data               xxx2.o
    0x2002d014   0x00000004   Data   RW         2461    .data               xxx2.o
    0x2002d018   0x00000004   Data   RW         2462    .data               xxx2.o
    0x2002d01c   0x00000008   Data   RW         2582    .data               stm32f4x7_eth_bsp.o
    0x2002d024   0x00000008   Data   RW         2877    .data               stm32init.o
    0x2002d02c   0x00000004   Data   RW         3705    .data               stm32myvariable.o
    0x2002d030   0x00000004   Data   RW         3706    .data               stm32myvariable.o
    0x2002d034   0x00000002   Data   RW         3707    .data               stm32myvariable.o
    0x2002d036   0x00000002   Data   RW         3709    .data               stm32myvariable.o
    0x2002d038   0x00000002   Data   RW         3711    .data               stm32myvariable.o
    0x2002d03a   0x00000002   PAD
    0x2002d03c   0x00000004   Data   RW         3713    .data               stm32myvariable.o
    0x2002d040   0x00000004   Data   RW         3714    .data               stm32myvariable.o
    0x2002d044   0x00000004   Data   RW         3718    .data               stm32myvariable.o
    0x2002d048   0x00000004   Data   RW         3719    .data               stm32myvariable.o
    0x2002d04c   0x00000004   Data   RW         3720    .data               stm32myvariable.o
    0x2002d050   0x00000038   Data   RW         3876    .data               stm324xg_eval.o
    0x2002d088   0x000001f4   Data   RW         4205    .data               stm324xg_eval_lcd.o
    0x2002d27c   0x00000010   Data   RW         6699    .data               stm32f4xx_rcc.o
    0x2002d28c   0x00000014   Data   RW         8577    .data               system_stm32f4xx.o
    0x2002d2a0   0x00000004   Data   RW        10583    .data               usb_bsp.o
    0x2002d2a4   0x00000048   Data   RW        10686    .data               usbh_usr.o
    0x2002d2ec   0x0000000c   Data   RW        10687    .data               usbh_usr.o
    0x2002d2f8   0x00000010   Data   RW        10837    .data               command.o
    0x2002d308   0x00000001   Data   RW        11277    .data               usbh_msc_scsi.o
    0x2002d309   0x00000003   PAD
    0x2002d30c   0x00000010   Data   RW        11361    .data               usbh_msc_bot.o
    0x2002d31c   0x00000002   Data   RW        11411    .data               usbh_msc_core.o
    0x2002d31e   0x00000002   PAD
    0x2002d320   0x00000010   Data   RW        11412    .data               usbh_msc_core.o
    0x2002d330   0x00000001   Data   RW        11459    .data               usbh_msc_fatfs.o
    0x2002d331   0x00000003   PAD
    0x2002d334   0x00000010   Data   RW        11581    .data               usbh_core.o

    0x2002d344   0x00000008   Data   RW        11809    .data               ff.o
    0x2002d34c   0x00000004   Data   RW        12533    .data               mc_w.l(stdout.o)
    0x2002d350   0x00000004   Data   RW        12547    .data               mc_w.l(errno.o)

below is the map file of fw upgrade example:

    Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00009928, Max: 0x00020000, ABSOLUTE)

    Base Addr    Size         Type   Attr      Idx    E Section Name        Object

    0x20000000   0x00000010   Data   RW            7    .data               command.o
    0x20000010   0x00000008   Data   RW           17    .data               main.o
    0x20000018   0x00000001   Data   RW           32    .data               stm32f4xx_it.o
    0x20000019   0x00000003   PAD
    0x2000001c   0x00000014   Data   RW           37    .data               system_stm32f4xx.o
    0x20000030   0x00000004   Data   RW           49    .data               usb_bsp.o
    0x20000034   0x00000048   Data   RW           78    .data               usbh_usr.o
    0x2000007c   0x0000000c   Data   RW           79    .data               usbh_usr.o
    0x20000088   0x00000014   Data   RW           88    .data               stm32f4_discovery.o
    0x2000009c   0x00000001   Data   RW          497    .data               usbh_msc_scsi.o
    0x2000009d   0x00000003   PAD
    0x200000a0   0x00000010   Data   RW          504    .data               usbh_msc_bot.o
    0x200000b0   0x00000002   Data   RW          512    .data               usbh_msc_core.o
    0x200000b2   0x00000002   PAD
    0x200000b4   0x00000010   Data   RW          513    .data               usbh_msc_core.o
    0x200000c4   0x00000001   Data   RW          521    .data               usbh_msc_fatfs.o
    0x200000c5   0x00000003   PAD
    0x200000c8   0x00000010   Data   RW          541    .data               usbh_core.o
    0x200000d8   0x00000008   Data   RW          601    .data               ff.o
    0x200000e0   0x00008000   Zero   RW            6    .bss                command.o
    0x200080e0   0x00000534   Zero   RW           16    .bss                main.o
    0x20008614   0x00000430   Zero   RW           73    .bss                usbh_usr.o
    0x20008a44   0x00000424   Zero   RW           74    .bss                usbh_usr.o
    0x20008e68   0x00000424   Zero   RW           75    .bss                usbh_usr.o
    0x2000928c   0x00000210   Zero   RW          495    .bss                usbh_msc_scsi.o
    0x2000949c   0x00000040   Zero   RW          503    .bss                usbh_msc_bot.o
    0x200094dc   0x0000004a   Zero   RW          511    .bss                usbh_msc_core.o
    0x20009526   0x00000002   PAD
    0x20009528   0x00000400   Zero   RW          432    STACK               startup_stm32f4xx.o