pico]OS Memory Usage

This page contains some hints on the memory usage of pico]OS on some platforms, with three different configurations: small - medium - large. A detailed description of this three configurations is listed below the tables at the bottom of this page.

This processors/ports are listed below: 6502 - AVR - PPC440 - x86w32



Memory Usage On 8 Bit Processors

Note: The sum of data memory includes the task stack memory.

6502 port, small configuration

pico]OS RTOSArchitecture PortSum
Code3035 Bytes1069 Bytes4104 Bytes
Data248 Bytes1157 Bytes1405 Bytes
Overall Sum3283 Bytes2226 Bytes5509 Bytes

6502 port, medium configuration

pico]OS RTOSArchitecture PortSum
Code4804 Bytes1346 Bytes6150 Bytes
Data581 Bytes1864 Bytes2445 Bytes
Overall Sum5385 Bytes3210 Bytes8595 Bytes

6502 port, large configuration

pico]OS RTOSArchitecture PortSum
Code5949 Bytes1372 Bytes7321 Bytes
Data925 Bytes2506 Bytes3431 Bytes
Overall Sum6874 Bytes3878 Bytes10752 Bytes

AVR port, small configuration

pico]OS RTOSArchitecture PortSum
Code2142 Bytes548 Bytes2690 Bytes
Data644 Bytes80 Bytes724 Bytes
Overall Sum2786 Bytes628 Bytes3414 Bytes

AVR port, medium configuration

pico]OS RTOSArchitecture PortSum
Code3538 Bytes548 Bytes4086 Bytes
Data1175 Bytes80 Bytes1255 Bytes
Overall Sum4713 Bytes628 Bytes5341 Bytes

AVR port, large configuration

pico]OS RTOSArchitecture PortSum
Code4320 Bytes548 Bytes4868 Bytes
Data1717 Bytes80 Bytes1797 Bytes
Overall Sum6037 Bytes628 Bytes6665 Bytes



Memory Usage On 32 Bit Processors

Note: The sum of data memory does not include the task stack memory.

PPC440 port, small configuration

pico]OS RTOSArchitecture PortSum
Code4608 Bytes2288 Bytes6896 Bytes
Data3192 Bytes0 Bytes3192 Bytes
Overall Sum7800 Bytes2288 Bytes10088 Bytes

PPC440 port, medium configuration

pico]OS RTOSArchitecture PortSum
Code10108 Bytes2288 Bytes12396 Bytes
Data22600 Bytes0 Bytes22600 Bytes
Overall Sum32708 Bytes2288 Bytes34996 Bytes

PPC440 port, large configuration

pico]OS RTOSArchitecture PortSum
Code15844 Bytes2288 Bytes18132 Bytes
Data198752 Bytes0 Bytes198752 Bytes
Overall Sum214596 Bytes2288 Bytes216884 Bytes

x86w32 port, small configuration

pico]OS RTOSArchitecture PortSum
Code4400 Bytes7712 Bytes12112 Bytes
Data3456 Bytes208 Bytes3664 Bytes
Overall Sum7856 Bytes7920 Bytes15776 Bytes

x86w32 port, medium configuration

pico]OS RTOSArchitecture PortSum
Code11056 Bytes7712 Bytes18768 Bytes
Data22240 Bytes208 Bytes22448 Bytes
Overall Sum33296 Bytes7920 Bytes41216 Bytes

x86w32 port, large configuration

pico]OS RTOSArchitecture PortSum
Code16112 Bytes7712 Bytes23824 Bytes
Data186992 Bytes208 Bytes187200 Bytes
Overall Sum203104 Bytes7920 Bytes211024 Bytes



The Different pico]OS Configurations

Small configuration for 8 Bit processors (get poscfg.h):

  • Tasks : 3 + idle task
  • Events : 4
  • Timers : 2
  • Supported Functions:
    • posSemaCreate / posSemaGet / posSemaSignal
    • posTaskCreate / posTaskSleep
    • posTimerCreate / posTimerSet / posTimerStart / posTimerStop

Medium configuration for 8 Bit processors (get poscfg.h):

  • Tasks : 5 + idle task
  • Events : 10
  • Timers : 2
  • Messages: 4
  • Supported Functions:
    • posAtomicAdd / posAtomicGet / posAtomicSet / posAtomicSub
    • posMessageAlloc / posMessageAvailable / posMessageFree / posMessageGet / posMessageSend / posMessageWait
    • posMutexCreate / posMutexLock / posMutexUnlock
    • posSemaCreate / posSemaGet / posSemaSignal / posSemaWait
    • posTaskCreate / posTaskGetCurrent / posTaskSleep
    • posTimerCreate / posTimerSet / posTimerStart / posTimerStop

Large configuration for 8 Bit processors (get poscfg.h):

  • Tasks : 7 + idle task
  • Events : 14
  • Timers : 4
  • Messages: 8
  • Supported Functions:
    • posAtomicAdd / posAtomicGet / posAtomicSet / posAtomicSub
    • posListAdd / posListGet / posListInit / posListRemove / posListTerm
    • posMessageAlloc / posMessageAvailable / posMessageFree / posMessageGet / posMessageSend / posMessageWait
    • posMutexCreate / posMutexDestroy / posMutexLock / posMutexUnlock
    • posSemaCreate / posSemaDestroy / posSemaGet / posSemaSignal / posSemaWait
    • posTaskCreate / posTaskExit / posTaskGetCurrent / posTaskSleep
    • posTimerCreate / posTimerDestroy / posTimerSet / posTimerStart / posTimerStop

Small configuration for 32 Bit processors (get poscfg.h):

  • Tasks : 15 + idle task
  • Events : 32
  • Timers : 4
  • Supported Functions:
    • posSemaCreate / posSemaDestroy / posSemaGet / posSemaSignal / posSemaWait
    • posTaskCreate / posTaskExit / posTaskSleep
    • posTimerCreate / posTimerDestroy / posTimerSet / posTimerStart / posTimerStop

Medium configuration for 32 Bit processors (get poscfg.h):

  • Tasks : 63 + idle task
  • Events : 128
  • Timers : 16
  • Messages: 32
  • Supported Functions:
    • posAtomicAdd / posAtomicGet / posAtomicSet / posAtomicSub
    • posListAdd / posListGet / posListInit / posListJoin / posListLen / posListRemove / posListTerm
    • posMessageAlloc / posMessageAvailable / posMessageFree / posMessageGet / posMessageSend / posMessageWait
    • posMutexCreate / posMutexDestroy / posMutexLock / posMutexTryLock / posMutexUnlock
    • posSemaCreate / posSemaDestroy / posSemaGet / posSemaSignal / posSemaWait
    • posTaskCreate / posTaskExit / posTaskGetCurrent / posTaskGetPriority / posTaskSetPriority / posTaskSleep / posTaskYield
    • posTimerCreate / posTimerDestroy / posTimerFired / posTimerSet / posTimerStart / posTimerStop

Large configuration for 32 Bit processors (get poscfg.h):

  • Tasks : 255 + idle task
  • Events : 1024
  • Timers : 32
  • Messages: 128
  • Supported Functions:
    • posAtomicAdd / posAtomicGet / posAtomicSet / posAtomicSub
    • posFlagCreate / posFlagDestroy / posFlagGet / posFlagSet / posFlagWait
    • posInstallIdleTaskHook
    • posListAdd / posListGet / posListInit / posListJoin / posListLen / posListRemove / posListTerm
    • posMessageAlloc / posMessageAvailable / posMessageFree / posMessageGet / posMessageSend / posMessageWait
    • posMutexCreate / posMutexDestroy / posMutexLock / posMutexTryLock / posMutexUnlock
    • posSemaCreate / posSemaDestroy / posSemaGet / posSemaSignal / posSemaWait
    • posSoftInt / posSoftIntDelHandler / posSoftIntSetHandler
    • posTaskCreate / posTaskExit / posTaskGetCurrent / posTaskGetPriority / posTaskSchedLock / posTaskSchedUnlock / posTaskSetPriority / posTaskSleep / posTaskUnused / posTaskYield
    • posTimerCreate / posTimerDestroy / posTimerFired / posTimerSet / posTimerStart / posTimerStop