Rough English Here |
|
|
|
|
|
6/13,2001: h8toolsの修正方法を追加
6/3, 2001: ページ公開
[]
A^4-Nerveは Project 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 | リンクはご自由に (参考) | →開発レポートにもどる |