|
|
インデックス
関数リファレンス
サンプルコード
|
GCCとはGCCというのは、GNUコンパイラコレクションのことで、CやC++などのコンパイラを含んだ開発環境です。 通常はCコンパイラのことを指します。 GCCはオープンソースのフリーソフトウェアであり、誰でも無料で使うことができます。 リンク時のサイズに制限はないので、128kBを超えるプログラムも生成することができます。
RX用のGCCはソースコードで配布されていますので、これを利用するには、GCCのコンパイラ自体をコンパイルして、実行ファイルをつくらなければなりません。これは非常に厄介な作業で、一回のコンパイルとビルドに4時間くらいを要します。また、少しでも設定オプションを間違えるとビルドに失敗してしまって最初からやり直しになり、数時間の作業がムダになります。 どんなにGCCのコンパイルの経験があって手順がしっかりとわかっている人でも、最低丸1日かかります。
当社の場合では、いろいろな設定を行い、満足に使用できるCとC++のコンパイラを3日ほどかけて生成しました。ライブラリ等も揃っているので、printf や mallocなども使えます。 そのようにビルドされてすぐに使えるようになったGCCを、こちらで配布しています。 無料です。どなたでもダウンロードできます。
RX用GCCのインストールRX用の実行コードを生成するGCCはCygwin上で動作します。 CygwinというのはRed Hatが開発した、Microsoft Windows上で動作するUNIXライクな環境です。
GCCを使用する前に、最初にCygwinをインストールしてください。 そのためには、Red Hat社のページからCygwinの setup.exe をダウンロードして実行します。Cygwinのインストールはとても簡単で、特に説明するようなことはございません。ただし、Develの項目は必ずインストールするようにしてください。詳しいインストール方法を知りたい場合はネット上で探してください。
Cygwinがインストールできたら、上記のURLからダウンロードした tkdn-20110720-gcc.tar.bz2 を適当なディレクトリに移動し解凍します。コマンドは以下のとおりです。
解凍が終わったら、それを/usr/loca/の配下に移動します。
これでインストールは終わりです。
RX用GCCの使い方パスの設定 RX用GCCを使うには、Cygwin起動後、最初にパスを通します。
exportというのは環境変数をセットするコマンドです。 Cygwinに詳しい方は、ログイン時に自動的に上記のコマンドが実行されるようにするとよいでしょう。
パスが通ったら、rx-elf-gcc -vと入力してみてください。 以下のようにバージョン情報が表示されれば成功です。 ソースファイルのコンパイル方法 Cのソースファイルをコンパイルするには、以下のようにします。
代表的なオプションには、 -O2 最適化を行う -Wall いろいろな警告を出す -g デバッグ情報を埋め込む があります。
リンカの使い方 各種のファイルをコンパイルして、オブジェクトファイル(.oファイル)を作ったら、rx-elf-ldでリンクします。
です。
オプションには、mapファイルを生成する-Mapオプションや、リンカスクリプトを指定する-Tなどがあります。
-nostartfilesオプションと-Tオプションは必須です。これを指定しないと、デフォルトのスタートアップコード(newlibの中に入っているもの)が使われてしまい、デフォルトのメモリマップ(実際のデバイスのものとは異なる)に配置されてしまいます。
スタートアップコードというのは、CPUのスタックポインタや制御レジスタを設定して、main()を呼び出すためのコードです。リンカスクリプトとは、メモリ上のどこにプログラムやデータを配置するかが書かれたファイルです。
Cライブラリは/usr/local/tkdn-20110720/rx-elf/rx-elf/lib/のパスに、GCCのライブラリは/usr/local/tkdn-20110720/rx-elf/lib/gcc/rx-elf/4.6.1/にあります。もし、printfやmalloc、割り算や三角関数などのライブラリを使うのであれば、リンカのコマンドは以下のようになります。
-lc cライブラリ。常に使う。 -lgcc gccライブラリを使う。もしリンク時にエラーが出るようならつける。 -lm 三角関数などの数学ライブラリを使う場合につけます。
このような長いコマンドを毎回打つのは大変なのでmakeファイルを作るとよいでしょう。 生成されたELFファイルは、JTAG ICEを用いてRX内のRAMにダウンロードできます。
HEXファイルの生成 プログラムをROM化したい場合は、rx-elf-objcopyコマンドを使ってELFファイルをMOTファイルに変換し、FDT等を使って内蔵ROMに書き込みます。そのコマンドは、
と入力します。
難しいことを考えずにすぐに使えるRX用GCCのサンプルアプリスタートアップや、リンカスクリプト含んだ完全なプロジェクトの一式を下記のURLからダウンロードできます。 割り込み駆動のシリアル通信用コードも含まれていますので、ぜひプロジェクトの雛形としてご活用ください。 上のアーカイブに含まれているファイルの内容を説明します。
・RAM上のアプリケーションとしてビルドするには、 make と入力します。 elfファイルが生成されるのでJTAG ICE等を使ってダウンロードしてください。 ・ROM上のアプリケーションとしてビルドするには、 make romと入力します。 生成されたmotファイルはMITOUJTAGやFDTで書き込んでください。 ・プロジェクトをクリーンアップするには、make cleanと入力してください。 ・生成されたファイルを逆アセンブルしたリストを生成するには、make listと入力してください。
ぜひともGCCで、制限のないプログラムを開発してみてください。
なお、GCCでのコンパイルには、まだ何か問題がある可能性が排除できません。このGCCで開発したプログラムを製品に使用する場合は、お客様の責任の下、念入りな検証に基づいて行ってください。
|
Copyright(C) 2011 TokushuDenshiKairo Inc. All rights reserved.