H8/3048F-ONE評価基板でKOZOSを動かしてみた(実装編)

  • 投稿日:
  • by
  • Category:

KOZOSはフルスクラッチの小さなOSです。今回は以前cygwin上に作成したH8 gccクロスコンパイル環境を使って開発をします。KOZOSのターゲットボードはH8/3069Fネット対応マイコンLANボード(K-01271)であり、今回のH8/3048F-ONE評価基板とCPUが違います。CPUのコアはH8/300Hなので同じですがフラッシュROMとRAMの容量が異なり、それに伴ってメモリマップも変わってきます。

  • H8/3069F ・・・・CPU内蔵 フラッシュROM 512KB、RAM 16KB
  • H8/3048F-ONE・・CPU内蔵 フラッシュROM 128KB、RAM 4KB

この評価基板には外部フラッシュROMや外部RAMも実装されているのですが、この時点ではどのようなメモリマップに配置されているのかがわからないので、CPUの内蔵ROM/RAMのみを使います。
ROMはともかくRAMが4KBしかない点が気になりますが、まずはできるところまでやってみようと考えました。

KOZOS本(「12ステップで作る 組込みOS自作入門」)を見て思い出しながら作業を進めました。

まずはシリアルへの文字出力から。

h8board03.jpg

問題なく表示できました。

次はbootloaderの移植です。メモリマップを合わせてこちらも動きました。

h8board04.jpg

この状態でXMODEMでのバイナリアップロードができるようになりました。

ELFのヘッダ解析も問題なくできています。

h8board05.jpg

bootloaderも動いたところで、いよいよKOZOSを動かしたいところなのですが、RAMの容量の関係でXMODEの受信バッファにKOZOSが収まりません。このため、bootloaderを使わずに直接KOZOSをフラッシュROMに書き込むことにしました。

内蔵フラッシュROMからKOZOSがbootして、echoの動作確認ができました。

h8board06.jpg

H8/3048F-ONEではフラッシュROMの書き込みは100回程度しか行えないとのことなので、本来であればフラッシュROMにはbootloaderだけ書き込んで、KOZOS本体はシリアルから読み込んでbootすべきなのですが、これから先は4KBの内蔵RAMだけでは動かすことができません。どうしても外部RAMを使うことになります。しかし、このあたりの仕様は不明です。

いろいろ調べたところルネサスのホームページでH8のモニタプログラムを見つけました。このモニタプログラムを動かすことができればメモリダンプや書き込み、プログラムの実行など基板の解析に必要な作業ができそうです。

KOZOSの移植は一旦中断して、このモニタプログラムの移植を開始しました。

(続く)

H8/3048F-ONE評価基板でKOZOSを動かしてみた(準備編)

  • 投稿日:
  • by
  • Category:

ソフィアシステムズさんのBDZ Series H8 Embedded Training Boardをヤフオクで手にいれました。

h8board01.jpg

すでに販売終了のもので何か仕様書のようなものはないかと探してみましたが見つかりませんでした。でも、秋月電子で販売しているH8/3069Fネット対応マイコンLANボード(K-01271)を使ったことがありますのである程度動かせるかなと。秋月電子でも同じCPUを使ったAKI-H8/3048F-ONEマイコンボード(K-02119)がありますのでこのデータシートも役に立ちそうです。

※この内容は個人的な興味で行ったもので保証はありませんし、内容についてソフィアシステムズ様などへの問い合わせ等も行わないようにお願いします。

このボードの概要は以下の通りです。

【特 徴】
・CPUに16ビット・ワンチップ・マイコン H8/3048F-ONEを採用
・μITRON(Ver4.0準拠)が動作可能なハードウェア仕様
・外部I/Fとして、RS232C×1chと100Base-Tを装備
・1MB外付けSRAMを搭載し、内蔵フラッシュROMを使用せずにデバック作業が可能
・プログラムダウンロード、オンチップデバックが可能なI/Fを装備

秋月電子のH8/3069Fボードではシリアルポートを使ってマイコンに書き込みを行いました。このH8ボードでも同様のことができるはずです。ボードのコネクタを目視で確認したところ次の2つがシリアルのようです。

・JCOM (RS232C)・・・D-SUB9Pで見るからにRS232C

・JPRG (3P)・・・・・PRGはプログラミングの略?

このH8ボードでは、CPUが小さい基板にはんだ付けされていて、全ピンが引き出されています。この部分を利用して、H8/3048Fのデータシートをみながらテスターで辿ってどのように接続されているのかを確認していきます。

マイコンのフラッシュに書き込むためのシリアルポートはポート1を使用しますが、このH8基板ではJPRGにTXD1,RXD1、JCOMにTXD0,RXD0が接続されていました。これで、JPRGコネクタがH8/3048F-ONEプログラム書き込み用と判断しました。

また、基板上にはRS232CドライバであるMAX3232があり、JPRGとJCOMはRS232Cレベルと考えられますので、いつものFT232基板(5V/3.3V)を使うのではなく、秋月電子のUSB-シリアル変換ケーブル(M-00720)を使いました。

WindowsPCをUSB-シリアル変換ケーブルを使ってJPRGコネクタに接続し、定番のFDTをインストールしてデバイスが認識されるかを確認したところ問題なく認識できました。これでH8/3048F-ONEへの書き込み準備ができました。

h8board02.jpg
次はマイコンに書き込むプログラムを作成します。以前H8を使ったときはKOZOSという小さいOSを書き込みましたので、この基板でもKOZOSを動かしてみたいと思います。
(続く)

Firefox OS & Raspberry Pi WoTハンズオンに参加してみた

  • 投稿日:
  • by
  • Category:

2015/4/26に開催されたFirefox OS & Raspberry Pi WoTハンズオンに参加してみました。

Firefox OSのハンズオンは以前にも参加したことはありますが、Raspberry Piとの連携をやったことがなかったので、良い機会と考えました。会場はMixiさんです。

fxos_pi_handson01.jpg

最初に興味があったRaspberry Piのハンズオンに参加しました。

材料はこんな感じです。

fxos_pi_handson02.jpg

  • Raspberry Pi model B+
  • microSDカード or SDカード
  • USB WiFiアダプタ
  • USB-シリアル変換ボード
  • ブレッドボード
  • 電池BOX(006Pスナップ付き)
  • 単三電池2本
  • モバイルバッテリー(miniUSBコネクタ付)
  • モーター
  • USBケーブル
  • モータードライバIC
  • 抵抗
  • LED
  • 配線材料

今回のハンズオンは配布されたPDFのテキストに従って各自もくもく進める形式でした。不明な点があったらチューターのかたにその都度質問をするという形です。

Raspberry PiのOSや必要なソフトウェアはすでにSDカードに書き込み済で、すぐハンズオンに取りかかれましたが、最初にUSB-シリアル変換ボードを使ってシリアルコンソールでRaspberry Piにログインすることになります。このあたりはこれまで経験がありましたので、スムーズに行うことができました。

次にNode.jsを使いJavaScriptのプログラムでハードウェアの制御を行っていきます。このあたりは未経験なのですが、思ったよりは簡単に進みLチカまではできました。

fxos_pi_handson03.jpg

さて次に進もうかと思っていたところに知り合いの講師のかたに肩を叩かれ、

「すみません。チューターを手伝ってください・・・。」

実は最初のステップのシリアルコンソール接続でRaspberry Piにログインできない人が多く、急遽サポーターとしてお手伝いすることになりました。

ハンズオンのゴールとしては、エミュレーター上のFirefox OSアプリからWebSocketでRaspberry Piと通信し、PWMでモーターを制御するというものでしたが、マニュアルに誤記があったり、WiFiネットワークにRasberry Piがうまく接続できなかったり、その後もトラブル続出でした。

実際にハンズオンでモーターが制御できた動画を載せておきます。この動画には写っていませんが、Firefox OSアプリにスライダーが表示されていて、それを動かすとモーターの回転数が変化するというデモになります。

これまではハンズオンやハッカソンに参加者としての立場で参加してきましたが、今回ひょんなことから運営側の経験ができて、いかに事前準備が大変だということがわかりました。私も運営側としてお手伝いできることがあれば参加していきたいと思います。開催者の皆様お疲れ様でした。

fxos_pi_handson99.jpg

【追記】

ハンズオンで使用したULN2003Aの代わりに、TD62083APGを使って同様な動作ができることを確認しました。