AVR32 Studioへリンカ・スクリプトを追加

AVR32 Studioから既存プロジェクトに新規作成したリンカ・スクリプトを追加する。OSが存在する場合、まずリンカ・スクリプトでリンカを操作することはないので仕方がないのかもしれないが、組み込みだとリンカ・スクリプト修正が必要となることが多い。



ファイルを新規作成し、プロジェクトに登録する。

  • メニュー「File」→「New」→「File」を選択。
  • 追加対象プロジェクトの任意フォルダを選択。
  • 「File name」にファイル名を入力(拡張子は任意だが、とりあえず.ldsとする)。
  • Finishボタンを押す。

これで空のリンカ・スクリプト・ファイルが作成された。



リンカに対して、新規作成したリンカ・スクリプトを読み込むよう指定する。

  • プロジェクトのアイコンを選択して、右クリックからPropertiesを選択。
  • C/C++ Build」→「Settings」を選択。
  • 「Configuration」を「[ All Configurations ]」に切り替える。
  • タブ「Tool Settings」を選択。
  • 「AVR32/GNU C Linker」→「Miscellaneos」を選択。
  • 「Other options」のAdd(アイコン)ボタンをクリック。
  • 表示されたダイアログで以下のように入力し、OKボタンを押す。

-T${workspace_loc:/プロジェクト名/相対パス/リンカ・スクリプト・ファイル名}

  • OKボタンを押して、プロパティ設定ダイアログを閉じる。



ビルドして試してみる。以下はTC(Timer Counter)の例題3にリンカ・スクリプトlink-script.ldsを指定した。中身はデフォルト・リンカ・スクリプトそのままである。

avr32-gcc -nostartfiles -L../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS -march=ucr1 -Wl,--gc-sections -Wl,-e,_trampoline -Xlinker -TC:\dev\avr32\tc3\src\link-script.lds -mpart=uc3b0256 -Wl,--gc-sections --rodata-writable --direct-data -otc3_DEBUG.elf src\tc_example3.o src\intc.o src\exception.o src\SOFTWARE_FRAMEWORK\UTILS\STARTUP_FILES\GCC\crt0.o src\SOFTWARE_FRAMEWORK\DRIVERS\USART\usart.o src\SOFTWARE_FRAMEWORK\DRIVERS\TC\tc.o src\SOFTWARE_FRAMEWORK\DRIVERS\PM\pm_conf_clocks.o src\SOFTWARE_FRAMEWORK\DRIVERS\PM\pm.o src\SOFTWARE_FRAMEWORK\DRIVERS\GPIO\gpio.o src\SOFTWARE_FRAMEWORK\BOARDS\EVK1101\led.o src\SOFTWARE_FRAMEWORK\ASM\trampoline.o -lnewlib_addons-at32ucr1-speed_opt



拡張子が何でもよいのは、ベースとなるCDT(EclipseC言語開発用プラグイン)がリンカ・スクリプトを認識しないからだ。
いくらリンカ・スクリプトをプロジェクトに追加しても、AVR32 Studio内で編集できない(外部エディタが起動される)し、書き換えを検出できない(ビルドしてもリンカが実行されない)。