現象
CMSIS静的ライブラリ.aファイルをコンパイルした後、APPプログラムによって生成された実行可能ファイル780 + KBをリンクします。
フラッシュマップファイルを確認したところ、APPがDSPライブラリ内の関数を使用していることがわかりました。この関数は、一連のグローバル定数テーブルを含むDSPライブラリファイルCommmontables.cを呼び出し、コンパイル後にすべてのテーブルがリンクされます。
理由
コンパイル時に、コンパイラはデフォルトですべてのグローバル変数をリンクしますが、これは多くのスペースを占有します
解決する
ライブラリとAPPをコンパイルするときは、次のようにコンパイルオプションを追加します。
CFLAGS+= -ffunction-sections -fdata-sections
LFLAGS+=-Wl,--gc-sections
このオプションは、関数ごとに個別のセクションを作成します。リンクする場合、使用される定数テーブルのみが関数呼び出しに従ってリンクされます。コンパイル後、実行可能ファイルはわずか70 + KBです。