2017-10-05 107 views
0

我正在開發一個Contiki應用程序,而且我的ROM內存不足。我想使用的半自助旅遊旅行社文件系統(CFS)寫的一個小文件(32個字節長),所以我添加以下代碼:爲什麼cfs_write()會消耗太多的ROM內存?

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()增加了3210 .text段字節。我找到,由於代碼大小去除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()由3210增加了.text段字節。爲什麼cfs_write()會增加.text段這麼多?如何在.text節中減小cfs_write()的大小?

最好的問候,

塞爾吉奧·迪亞茲

回答

2

雖然cfs_write()是不是本身就是一個巨大的功能,它調用其他功能。如果您從應用程序代碼中使用cfs_write(),則所有這些其他功能也會鏈接到可執行文件中。例如,如果您使用CFS的Coffee實現(有多種實現方式),則它會調用merge_log(),後者又會自行調用一堆函數。

沒有簡單的方法來優化這種使用方式,因爲CFS代碼已經開發,目的是生成緊湊的二進制代碼。