テクニカルTips

目次 > テクニカルTips

定義ファイルについて

GCCはPCだけでなくメジャーな組込用CPUに対応しています。
JDEはディレクトリ構造と定義ファイルでコンパイラのバリエーションに対応する仕組みになっています。

定義ファイルの構造

定義ファイルのバックアップ (重要) ■

※ プロジェクトの保守性を向上するためVer5.0から定義ファイルはプロジェクトディレクトリにコピーして使用する方式に変更しました
  CPUタイプインポートをしない限りプロジェクト構築時の定義ファイルはそのまま残ります。

(以下はVer5.0以前に関するトピックとなります)

標準の定義ファイルはバージョンアップや不具合修正のため変更されることがあり、インストーラは古い定義を新しい定義で上書きします。そのため古いバージョンで作ったプロジェクトが新しいバージョンのJDEではコンパイルできなかったり出来たプログラムが動作しない場合が発生することがあります。そのような問題を避けるためにバージョンアップの前に定義ファイルのバックアップをおこなうことを推奨します。

構成  ■

一番下のディレクトリには構成を定義する次のファイルがあります。

CPU形式 ■

このディレクトリには次のようなファイルがあります

makefile ■

make はGCCでプロジェクトを構築する際の基本となるツールで、makefileはmakeへの指令となるファイルです。
基本的かつ多機能なツールなのでここではその内容についての説明はしません。
makefile についてこれから勉強しようとする方がいらっしゃいましたら 「makefile 使い方」というキーワードでググれば役に立つサイトが山のように見つかることでしょう。

リンカスクリプト ■

リンカスクリプトは実行ファイルの形式やメモリの割り当てを指定する手順を記述したファイルです。
ワンチップCPUやCPUボードはそれぞれ固有のアドレスとサイズのROMとRAMを持っています。
それぞれのシステムに合わせたリンカスクリプトを用意して各ハードウェアに合ったメモリの割付を指定します。

スタートアップルーチン crt0.S ■

スタートアップルーチンはCPUがリセット起動するのに必要な初期化をするルーチンです。
PCではアプリケーションの開発者がスタートアップルーチンを意識することはありません、それはBIOSとして標準的に組み込まれているからです。
 組込システムではROMやRAMが限られていてハードウェア毎に初期化すべき内容が異なるため、自分でスタートアップルーチンの面倒を見なければならない場合が多くなります。

newlibライブラリのprintf関数サポート用 syscalls_newlib.S

newlibライブラリのprintf関数,puts関数などが呼ばれた時は最終的にハードウェアに依存する入出力関数を呼び出します。
ROMモニタはソフトウェア割り込みを通じてこの入出力をサポートする機能を持っています、syscalls_newlib.Sはnewlibライブラリからモニタの入出力関数=USB経由で文字をやりとりする、を呼び出すために必要です。
puts関数やprintf関数を利用する場合は、プロジェクトに追加して下さい。

FlashROM書込み時の注意 ■

FlashROMを書き込む場合、書込中のFlashROMは通常のアクセスが出来なくなります。
FlashROMを書き換えるためにはすくなくとも書き換えのコードだけはRAMにおいて実行する必要があります。