石田マネジメント事務所 -84ページ目

石田マネジメント事務所

技術やものづくりに関する最近の話題と気づき、ちょっとした備忘録を書いています。

VirtualBoxのAdditional CD を入れて再起動し、デバイスファイルで ttyUSB0 が認識できたので、h8writeを書き込みます。どこに h8writeがあるのかよくわからないですが、download.sh を実行した際に、h8write.c というソースがある。どうやらこれで自分で作れということらしいのでgccで自分でコンパイルし、Makefileの記載の場所を作って、そこに置き make write としますが、

 

/dev/ttyUSB0 Permission Denied

 

と怒られる。恒久処置は後回しにして、sudo chmod a+rw /dev/ttyUSB0 でパーミッションを変えると

 

EEPROM Writing is successed.

 

で成功しました。うまくいかない場合もあるようですが、自分はなんとかなりました。これで cu -l /dev/ttyUSB0 とやってみると、接続はするのですが、字化けのようになる。これは字化けではなくて、ボーレートがあっていないようなので、 cu -s 9600 -l /dev/ttyUSB0 とやると以下のようにちゃんと、Hello World! が表示された。Hello World! はH8基板のリセットスイッチを押すごとに再起動するのでこんなかんじになります。

 

この書籍は12章まであるのですが、やっと最初の1章がクリアできました。

 

ビルドできたら、次のハードルはシリアルポートの問題です。ターゲットのH8マイコンは232cのシリアルの口しかなくUSBでつなげない。

しかし最近のPCはUSBが大半で、いまどきD-SUB9の232Cなんてついていない。

 

そこで、USB-232C変換アダプタを秋葉原で1000円くらいで購入し、VBoxのubuntuで認識させる必要があります。しかしこれもなかなかてこずりました。

 

購入したアダプタにはミニCDがついていてドライバなんかはマニュアルを読めばなんとかインストールでき、PCのデバイスマネージャなんかからもちゃんと見えている状態にできます。

 

しかしVBoxでUSBの有効化をして、ubuntuを起動するとエラーで起動できません。調べたら、USB2.0以上は VirtualBox 6.1以上のExtention Pack をいれないとNGだという。

 

そこでVBoxを最新にアップデートし、Extention Pack CDを追加インストールし再起動したらちゃんとubuntu起動に成功。端末で

 

sudo -l /dev とやって

 

       :

crw-rw----  1 root    dialout 188,   0  8月 22 09:12 ttyUSB0
       :

 

と表示されました。このttyUSB0 があればVBoxのゲストOSから見えていることになります。

 

 

こういうのをやってみようと思い格闘しているところです。

 

まず著者がいうような、RS232CのDSUB9ピンの口のあるジャンクPCというものは、秋葉原などに行ってもありません。

 

それにジャンク店自体がほとんど存在せず、秋葉原のラジオデパート内で1軒だけはありました。しかし、そこで聞くといまどきのパソコンはセキュリティの都合から、HDDは抜いてあるものが大半で、232Cのインタフェースがあるものもほとんどありませんでした。

 

そこで今持っているノートとかデスクトップでやろうと思いましたがノートは速度が遅すぎ、ubuntuの起動USBを作成し動かしました。起動できちゃんと動くのですが、所詮はUSB上で動いているだけで、またソースをダウンロードしてコンパイルなどしても、保存ができません。

 

このノートはWin10が入っていてubuntuに書きつぶすことはできず(デスクトップも同じ)、Cygwinでやってみました。これも動きましたが遅く、またどうにもうまくビルドできない。

 

最終的にデスクトップのWin10にVirtualBoxを入れて,ubuntu16を動かし、本に出ているようにビルドすることにしました。

 

しかしまずビルドできるまでが大変。著者がいうように、binutils-2.19.1, gcc-3.4.6 でやりましたが、何度も失敗しました。サポートサイトに出ているようにやるとできるのですが、順番が大切で

 

download.sh
build-binutils.sh
build-gcc.sh

 

の3つをDLし, 全て chmod +x で実行可能にしてからまずdownload.sh を実行。次いで、build-binutils.sh を実行する。

その後に build-gcc.sh をそのままやらない。この中身は

 

tar xvzf gcc-3.4.6.tar.gz
cd gcc-3.4.6
patch -p0 < ../patch-gcc-3.4.6-gcc4.txt
./configure --target=h8300-elf --disable-nls --disable-threads --disable-shared --disable-werror --enable-languages=c
make
 

と書かれているが、patct -p0 行の実行(これは gcc3.4.6/gcc/collect2.cのある1行だけ変更)したら ./configure する前にgcc3.4.6/gcc/config/h8300/h8300.c の3か所ほど次の変更を加える。

 

55,56c55,56
< static void h8300_emit_stack_adjustment (int, unsigned int);
< static int round_frame_size (int);
---
> static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT);
> static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT);
371c371
< h8300_emit_stack_adjustment (int sign, unsigned int size)
---
> h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
400,401c400,401
< static int
< round_frame_size (int size)
---
> static HOST_WIDE_INT
> round_frame_size (HOST_WIDE_INT size)

 

これをやってから、./configue をやらないと、エラーでmakeが出来ない状態になります。