今回はdsPICマイコンでコンパイルする際に
遭遇したエラーの回避方法についてご紹介します。
dsPICマイコンで使用するコンパイラでC30やXC16などありますが、
大量の変数や連続した変数を使用する場合に下記のようなエラーがでることがあります。
Link Error: Could not allocate section~
Link Error: Could not allocate data memory
メモリは余裕があるはずなのになぜコンパイルできない?
ということがたまにあります。
このような場合に大量の変数や連続した変数に
下記のようなおまじないを入れるとうまくコンパイルできます。
__attribute__((far))
たとえば、
struct path p[205]__attribute__((far));
int a[200]__attribute__((far));
という感じです。
勝手にコンパイラがいいように配置してくれれば良いだけと思ってしまいます。
大量の変数を扱う際にはぜひこのおまじないを使ってみてください。