Rough English Here
 
 
A^4-Nerveを動かす
6/13,2001: h8toolsの修正方法を追加
6/3, 2001: ページ公開
[]

A^4-NerveProject A^4の 一環としてAAFおぎちゅ〜で開発された超小型コントローラボードです。

MPUにH8Tinyを採用し、24mm x 38mmという大きさにもかかわらず 3軸分のモータドライバを内蔵しています。

スペックの詳細は おぎちゅ〜の説明をご覧ください。

(上はRS-232Cのレベルコンバータ、下がA^4-Nerveです。小さい!!)

ぱ研ではLinux上に開発環境を構築して動かしてみました。とっても簡単にでき ますよ。

シリアルレベルコンバータの製作
NerveのSCIは5Vインターフェイスなので、PCのシリアルポートと接続するためには レベルコンバータを用意しなければなりません。とりあえず手元にあったMAX232CPEを 使って作ってみました(上の写真のものです)。 NerveのSCIはハードウェアフローに対応していませんが、 この回路では一応汎用で使えるようにピンを出してあります。
また、H8のブートモードとユーザモードを切り替えるためのスイッチも付けてみました。

この切り替えスイッチを有効にするには、NerveのSCT1の2-3番のランドパターンを ハンダでブリッジする必要があります。

写真で示した部分に3つのランドがあります。このうちの"NMI"と中央のランドをハンダでブリッジします。

また、DIPスイッチの4番をOFFにしておきます。

クロス開発環境のインストール
NerveのMPUであるH8/3664のクロス開発環境をLinux上で構築します。

とりあえずてっとり早く進めたい人のために、Vine Linux 2.1.5で作ったRPMパッ ケージを用意しました。以下のファイルをダウンロードして、順番に"rpm -ivh (ファイル名)"でインストールしてください。

このパッケージは GNU Development Tools for the Hitachi H8/300[HS] Series からもらってきたRedHat7.x用のパッケージを再構築しただけのものです。

以下の手順で作成しました。

1.rpm srcパッケージのダウンロード
  http://sourceforge.net/project/showfiles.php?group_id=24580
  から
   h8300-hms-binutils-2.11-1.src.rpm
   h8300-hms-gdb-5.0-4.src.rpm
   h8300-hms-gcc-2.95.3-2.src.rpm
  をもらってくる

2.ソースパッケージをインストールする
  # rpm -ivh h8300-hms-binutils-2.11-1.src.rpm
  # rpm -ivh h8300-hms-gcc-2.95.3-2.src.rpm
  # rpm -ivh h8300-hms-gdb-5.0-4.src.rpm

3.パッケージを再構築してインストールする
  # cd /usr/src/redhat/SPEC
  # rpm -bb h8300-hms-binutils-2.11-1.spec 
  # rpm -bb h8300-hms-gdb-5.0-4.spec 
  # rpm -ivh /usr/src/redhat/RPMS/i386/h8300-hms-binutils-2.11-1.i386.rpm 
  # rpm -ivh /usr/src/redhat/RPMS/i386/h8300-hms-gdb-5.0-4.i386.rpm
  # rehash
  # rpm -bb h8300-hms-gcc-2.95.3-2.spec
  # rpm -ivh /usr/src/redhat/RPMS/i386/h8300-hms-gcc-2.95.3-2.i386.rpm
Flash ROM書込みツールとモニタプログラムのインストール
H8/3664内蔵のFlash ROMへの書き込みはシリアルポート経由で行うことができま す。このためにはH8/3664を"ブートモード"で起動したあと、規定のプロトコル に従って書き込みプログラムを転送するツールが必要です。

またモニタプログラムがあればなにかと便利です。

これらのツールは Linux研究所 で提供されています。感謝!

h8toolsはボーレートを正しく設定してくれないバグがあるので,修正します.
また,必要なら通信速度をあげる改造も施します.ROMライタの転送は19200bps,プログ ラムの転送時は38400bpsに設定してみました.

--- h8tools/3664eeprom/3664tool.c
 #ifdef LINUX
        tcsetpgrp(TheFd,getpgrp());
        tcgetattr(TheFd,&TheTty);
        cfmakeraw(&TheTty);
>       cfsetispeed(&TheTty,9600);
>       cfsetospeed(&TheTty,9600);
 #endif

'>'で示した部分を,
       cfsetispeed(&TheTty,B19200);
       cfsetospeed(&TheTty,B19200);
に変更(9600bpsでいいときは,'B9600')します.

さらに以下の'>'で示した部分を追加します.

	else {
		puts("EEPROM writing program transfer failed!");
		exit(-1);
	}

>#ifdef LINUX
>	cfsetispeed(&TheTty,B38400);
>	cfsetospeed(&TheTty,B38400);
>#endif
>#ifdef FreeBSD
>	TheTty.sg_ispeed=B38400;
>	TheTty.sg_ospeed=B38400;
>#endif
>	if(stty(TheFd, &TheTty ) == -1){
>		fprintf(stderr, "stty error\n" );
>		return -1;
>	}

	if((fp = fopen(fileName,"r")) == NULL) {
		fprintf(stderr,"file not found!\n");
		exit(-1);
	}

--- h8tools/3664eeprom/romwrite.c

最初の方で,
	SMR = 0;
>	BRR = 51;
	SCR3 = 0;

となっているところを以下のように修正.

	BRR = 12; /* 12:38400bps 25:19200bps 51:9600bps @16MHz */

インストールは以下のように行います(プロンプトが#のところはrootでの作業を 意味します)。
> tar xzvf h8tools.tar.gz
> cd h8tools
> chmod a+x 3048eeprom/ 3048mon/ 3067eeprom/ 3067mon/ 3664eeprom/ 3664mon/
> cd 3664eeprom/
(ここでプログラムを修正)
> make
# make install
# gcc -o /usr/bin/3664tool 3664tool.c
# cd ..
# gcc -o /usr/bin/h8term h8term.c
> cd 3664mon
> make
> 3664tool h8mon.mot  (PCのシリアルポートと接続し、bootモードで起動します)

ここまで来たら、もうモニタプログラムを動かすことができます。
Nerveをユーザモードで起動し、

  > h8term
とすれば、すばらしい!!しっかり動くじゃないですか。
ここから先は。。。
ここまでくればあとはプログラムを作って遊べます。ぱ研でも折を見てサンプル プログラム等を紹介していきたいと思います。

ただH8/3664内蔵のRAMは容量が小さいので、プログラムの開発は拡張RAMを搭載 したボードで行い、デバッグが済んだらNerveのFlash ROMに書き込んで動かす、 という手順がいいような気がしてます。


このページに関するコメントをお願いします
お名前:   ↓タグ使えます
コメント: →他の人のコメント

→最近のコメント


Copyright © 2001 KOMORIYA Takeru リンクはご自由に (参考) →開発レポートにもどる