2017-10-05 13 views
0

Contikiアプリケーションを開発中で、ROMメモリが不足しています。私は小さなファイル(32バイト長)を書くためにコンチキ・ファイル・システム(CFS)を使用したいので、私は次のコードを追加します。なぜ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セクションを増大させることですバイト。

text data bss dec hex filename 
    23912 114 4710 28736 7040 coffee-example.sky 

とcfs_write有する()コードサイズである:()をcfs_write

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

お知らせ3210によって.textセクションを増加cfs_writeを除去するコードサイズ()があるので、私はそれについて見つけますバイト。 cfs_write()が.textセクションを大きくする理由.textセクションのcfs_write()のサイズを減らすにはどうすればよいですか?

敬具、

セルジオ・ディアス

答えて

2

cfs_write()が独自に巨大な関数ではありませんが、それは他の関数を呼び出して行います。アプリケーションコードからcfs_write()を使用すると、これらの他のすべての関数も実行可能ファイルにリンクされます。

たとえば、CFSのCoffeeインプリメンテーション(複数の実装があります)を使用している場合は、merge_log()が呼び出されます。これにより、一連の関数が呼び出されます。

コンパクトバイナリコードを念頭に置いてCFSコードが既に開発されているため、この使用法を簡単に最適化する方法はありません。

関連する問題