So-net無料ブログ作成

HOS-V4のhosdenv.hの中の__CPU__について [HOS]

※またまたHEW上のH8マイコンでの開発の話です。

カーネルライブラリを構築する時、一部のファイルはハードウエアや開発環境に依存したファイルを使用します。
Cソース等は直接構成ファイルを指定していますが、ヘッダーファイルはこの依存性を解決する為にhosdenv.hと言うヘッダーファイルを使っています。

その中身の一部を紹介すると
#elif defined(__CPU__)	/* 日立H8コンパイラ */

#if (__CPU__ == 3) || (__CPU__ == 2)        /* H8/300H */
#include "h83/hospac.h"
#endif

そこで皆さんは疑問に思われるに違いない!。「「__CPU__」とは何ぞや!。」とね。

これは、ルネサスのH8用コンパイラの暗黙の宣言で、本来コンパイラマニュアルに掲載されているべき物ですが、実は手持ちのマニュアルには存在しない。過去の2002年頃のマニュアルを見ても無い!。

しかしこの暗黙の宣言は実際には存在しています。例えばHEWのウイザードを使用してH8/300H用のプロジェクトを生成した場合、iodefine.hの中にもその記述を見る事ができます。

結局手持ちのテキストベースのドキュメントの中からこの暗黙の宣言に関する記述を見つけられなかったので(いや、何処かには在るのでしょうけれど、見つけられない)、バイナリーファイルの中身を検索して、何とか以下の記述を抽出しました。
__300L__     __CPU__ 0
__300__      __CPU__ 1
__300HN__    __CPU__ 2
__300HA__    __CPU__ 3 __ADDRESS_SPACE__ 20
__300HA__    __CPU__ 3 __ADDRESS_SPACE__ 24
__2000N__    __CPU__ 6
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 20
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 24
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 28
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 32
__2600N__    __CPU__ 4
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 20
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 24
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 28
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 32

__CPU__に続く番号が、先のhosdenv.hの__CPU__の番号に対応すると思われます。

と言う訳で、HOS-V4をH8/300H以外にも移植する時の参考にして下さい。

※しかしこうやって一般的なドキュメントに記述を行っていないと言うことは、ルネサスの方向性としてはあまり使用して欲しくないのかもしれません。
先のhosdenv.hの中の記述も、
#elif defined(__RENESAS__)	/* ルネサスH8コンパイラ */

#if defined(__300HN__) || defined(__300HA__)        /* H8/300H */
#include "h83/hospac.h"
#endif

に変えた方が良いのかもしれません。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。