Memory management 为什么cfs_write()会消耗太多的ROM内存?

Memory management 为什么cfs_write()会消耗太多的ROM内存?,memory-management,out-of-memory,contiki,Memory Management,Out Of Memory,Contiki,我正在开发一个Contiki应用程序,我的ROM内存不足。我想使用Contiki文件系统(CFS)编写一个小文件(32字节长),因此我添加了以下代码: fd_write = cfs_open(filename, CFS_WRITE); n = cfs_write(fd_write, message, sizeof(message)); //Message size is 32 bytes cfs_close(fd_write); 问题是cfs_write()将.text部分增加了3210

我正在开发一个Contiki应用程序,我的ROM内存不足。我想使用Contiki文件系统(CFS)编写一个小文件(32字节长),因此我添加了以下代码:

 fd_write = cfs_open(filename, CFS_WRITE);
 n = cfs_write(fd_write, message, sizeof(message)); //Message size is 32 bytes
 cfs_close(fd_write);
问题是cfs_write()将.text部分增加了3210字节。我发现这是因为删除cfs_write()的代码大小是:

使用cfs_write()时,代码大小为:

 text   data    bss    dec    hex filename
 27122    114   4710  31946   7cca coffee-example.sky
请注意,cfs_write()将.text部分增加了3210字节。为什么cfs_write()会将.text部分增加这么多?如何减小.text部分中cfs_write()的大小

致以最良好的祝愿

Sergio Diaz

虽然
cfs_write()
本身不是一个巨大的函数,但它确实调用了其他函数。如果从应用程序代码中使用
cfs_write()
,则所有其他函数也会链接到可执行文件中

例如,如果您正在使用CFS的Coffee实现(有多个实现),它将调用
merge\u log()
,这反过来又会自己调用一系列函数

没有简单的方法来优化这种用法,因为CFS代码的开发目标是生成紧凑的二进制代码。

虽然
CFS_write()
本身不是一个巨大的函数,但它确实调用了其他函数。如果从应用程序代码中使用
cfs_write()
,则所有其他函数也会链接到可执行文件中

例如,如果您正在使用CFS的Coffee实现(有多个实现),它将调用
merge\u log()
,这反过来又会自己调用一系列函数

没有简单的方法来优化这种用法,因为CFS代码的开发目标是生成紧凑的二进制代码

 text   data    bss    dec    hex filename
 27122    114   4710  31946   7cca coffee-example.sky