我正在开发一个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()的代码大小是:
text data bss dec hex filename
23912 114 4710 28736 7040 coffee-example.sky对于cfs_write(),代码大小是:
text data bss dec hex filename
27122 114 4710 31946 7cca coffee-example.sky注意,cfs_write()将.text部分增加3210字节。为什么cfs_write()这么多地增加了.text部分?如何减少cfs_write()在.text部分中的大小?
诚挚的问候,
塞尔吉奥·迪亚兹
发布于 2017-10-05 12:11:04
虽然cfs_write()本身并不是一个巨大的函数,但它确实调用了其他函数。如果您从应用程序代码中使用cfs_write(),那么所有其他函数也会在可执行文件中链接。
例如,如果您正在使用CFS的Coffee实现(有多个实现),则它调用merge_log(),而后者又单独调用一组函数。
优化这种使用没有简单的方法,因为CFS代码的开发已经考虑到了产生紧凑二进制代码的目标。
https://stackoverflow.com/questions/46585102
复制相似问题