Zephyr use lot of memory for unused fonction

Hello

I've noticed that Zephyr uses a lot of memory with all its libraries. My code only takes up 15%, but I'm already out of available space. I've been trying to play with flags to reduce flash size.  Many of Zephyr's embedded functions aren't used in my project. I thought the compiler would remove unused functions. Am I missing something here? Are there any strategies to optimize Zephyr's memory usage for my specific application?

Thanks 


Parents Reply Children
  • Thank you for your answer. I've already follow this guide :

    CONFIG_UART_INTERRUPT_DRIVEN=y
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_FLASH=y
    CONFIG_IMG_MANAGER=y
    CONFIG_IMG_ENABLE_IMAGE_CHECK=y
    CONFIG_MCUBOOT_IMG_MANAGER=y
    CONFIG_IMG_ERASE_PROGRESSIVELY=y
    CONFIG_REBOOT=y
    CONFIG_PICOLIBC=y
    CONFIG_PICOLIBC_IO_C99_FORMATS=n


    #TO CHANGE
    CONFIG_MAIN_STACK_SIZE=16384

    CONFIG_BT=y

    # Enable mcumgr.
    CONFIG_MCUMGR=y

    # Enable most core commands.
    CONFIG_MCUMGR_CMD_IMG_MGMT=y
    CONFIG_MCUMGR_CMD_OS_MGMT=y

    # Allow for large Bluetooth data packets.
    CONFIG_BT_BUF_ACL_RX_SIZE=255
    CONFIG_BT_BUF_ACL_TX_SIZE=251
    CONFIG_BT_BUF_CMD_TX_SIZE=255
    CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=255

    CONFIG_BT_L2CAP_TX_MTU=247

    # Enable the Bluetooth (unauthenticated) and shell mcumgr transports.
    CONFIG_MCUMGR_SMP_BT=y
    CONFIG_MCUMGR_SMP_BT_AUTHEN=n

    # Some command handlers require a large stack.
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192

    CONFIG_MULTITHREADING=y
    CONFIG_I2C=y

    CONFIG_SIZE_OPTIMIZATIONS=y
    CONFIG_FORCE_NO_ASSERT=y

    CONFIG_WATCHDOG=y

    # USB configuration
    CONFIG_USB_DEVICE_STACK=y

    CONFIG_CONSOLE=y
    CONFIG_UART_CONSOLE=y
    CONFIG_UART_LINE_CTRL=y

    # Power management
    CONFIG_PM=n

    # Drivers and peripherals
    CONFIG_PINMUX=n
    CONFIG_SPI=n

    # Boot
    CONFIG_BOOT_BANNER=n

    # Disable Bluetooth features not needed
    CONFIG_BT_DEBUG_NONE=y
    CONFIG_BT_ASSERT=n
    CONFIG_BT_DATA_LEN_UPDATE=n
    CONFIG_BT_PHY_UPDATE=n
    CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n
    CONFIG_BT_HCI_VS_EXT=n


    # Disable Bluetooth controller features not needed
    # CONFIG_BT_CTLR_PRIVACY=n
    # CONFIG_BT_CTLR_PHY_2M=n


    # Disable features not needed
    CONFIG_LOG=n
    CONFIG_ASSERT=n

    CONFIG_USB_DEVICE_REMOTE_WAKEUP=n

    ---


    I'm very impressed by the scope of Zephyr's size in comparison to my code, which takes up only 15%. (I know mcuboot cut half of my size)
Related