Zephyr and the Memory Footprint: Difference between revisions
No edit summary |
No edit summary |
||
| Line 5: | Line 5: | ||
{| style="width: 100%;" | {| style="width: 100%;" | ||
| style="width: 50%; vertical-align:top;" | | | style="width: 50%; vertical-align:top;" | | ||
main.c: | ''main.c:'' | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
void main (void) { | void main (void) { | ||
| Line 17: | Line 17: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| style="width: 50%; vertical-align:top;"| | | style="width: 50%; vertical-align:top;"| | ||
prj.conf: | ''prj.conf:'' | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
# disable all peripherals | # disable all peripherals | ||
| Line 28: | Line 28: | ||
CONFIG_BOOT_BANNER=n | CONFIG_BOOT_BANNER=n | ||
#disable all debug and log messages | # disable all debug and log messages | ||
CONFIG_DEBUG=n | CONFIG_DEBUG=n | ||
# enable compiler size opt. (this is the default anyway) | |||
CONFIG_SIZE_OPTIMIZATIONS=y | |||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
Revision as of 13:05, 26 January 2021
Do you want to use Zephyr RTOS on a Microcontroller with only a few bytes of Flash? Let's try it!
On the Optimizing for Footprint doc site you will find some hints how to reduce the memory footprint. Ok let's do it. I compiled the following application by using this configs:
|
main.c: void main (void) {
uint32_t i = 0;
// run the loop for ever
while (true) {
i++;
}
}
|
prj.conf: # disable all peripherals
CONFIG_GPIO=n
CONFIG_SERIAL=n
CONFIG_SPI=n
CONFIG_I2C=n
# disable the boot banner
CONFIG_BOOT_BANNER=n
# disable all debug and log messages
CONFIG_DEBUG=n
# enable compiler size opt. (this is the default anyway)
CONFIG_SIZE_OPTIMIZATIONS=y
|
With this application and settings I could reduce the total application to 6872 bytes:
west build -p auto -b <board name>
Memory region Used Size Region Size %age Used
FLASH: 6872 B 16 KB 41.94%
SRAM: 1232 B 2 KB 60.16%
IDT_LIST: 56 B 2 KB 2.73%
Ok, this is just the compiled kernel to have an idea how much flash it needs. You can analyze the memory usage from the rom/ram-report.
By using west build -t rom_report you will get a really nice report of the flash coverage. The same procedure for a ram usage report: west build -t ram_report
For more details have a look at the Zephyr Docs: Optimization Tools).
But how much does a small hello world application need, for example?