MES2 for H8

大西@ソフト屋です。

ここではサポートが終了したH8、特にH8-3069F向け動作可能なMES2(エムイーエス)を、
作者のみついわゆきお(三岩幸夫)さんに許可を得て再配布しています。
個人で手軽に入手できるボード対応の開発環境があれば先に進める、という方々の
「ものづくり」のきっかけやホビーの一端を担えれば幸いです。

私自身は主にSH7084やSH7706ボードでMES2最新版を利用し、業務用途ではSH7084ボードを利用した製品を200台以上出荷しています。

当ページは2017/08/10現在の内容です。


■H8対応バージョンについて

MES2のライセンスはGPL2ですが、信頼性が保証できないという理由でH8向け環境の新規業務用途は推奨されていません。
自己責任となりますので、今後はホビー用途に限定して使用して下さい。
リリース済みの既存製品の保守にほ引き続き使用可能ですが、公開を中止された意図を踏まえた上で自己責任で利用して下さい。

みついわさんからのコメント

MES2.xはもともとARM7/SuperH向けのシステムとして開発しましたが、当初、適当なボードがなかったので、暫定的にH8に移植し、
適当なボードが供給できたので、H8の暫定サポートの意味がなくなったことと無理やりH8に移植したために思うように安定しないので撤退しました。
H8向けを配布しなくなった理由は不安定だとわかっているものをそのまま公開すべきでないと判断しました。



当ページ配布物のH8向けサポートは終了していますので、H8利用でのみついわさんへの問い合わせは行わないでください。
自己解決を基本とし、インターネット上の善意の情報を活用ください。なお、当初のメーリングリストは現状停止しています。
ソフトウェア屋でハードに疎いですが、入門レベルのフォローで良ければメールフォームから相談下さい。
(メールはSJIS扱いです。海外のUTF8等の文字コードには対応しません。)

ソースコードも再配布の許可を得ておりますので、読み解いていくとMES2の動きや制約等が少しずつ理解できるようになります。


■現行バージョンについて

MES2の業務利用可能な最新版は、SH3/SH2/SH2A向けとして以下の公式ページで配布されています。

http://mes.osdn.jp/mes2/

当ページ記述時点の最新は以下の通りです。

・安定版 MES2.5r19
・挑戦版 MES2.6b1(MES3.0b1もカーネルは同一バイナリ、ソースコードは原則非公開)

最新版がリリースされると過去バージョンの公開は無くなります。
ボードの購入時期により公開より新しい開発版が入る事がありますが、上記ページで公開された物が公式版となります。

今までH8ボードを業務利用されていた方も、現行バージョンに移行しやすいようにみついわさん設計の代替ボードが用意されています。

・SH7084LAN / SH7084USB / SH7084LANUSBボード

 SH7084(SH-2)を用いた安価なボード。MES2以外にTOPPERS/JSP 1.4.3が公式サポートされています。
 MES2業務利用でのメインボードと位置付けられており、USB1.0周りにも力を入れているボードです。

 なお、現在販売中のSH7084LANにはISP1362のパターンが有る物がありますが、
 ISP1362はSL811HST搭載版のSH7084USB/SH7084LANUSBの在庫が無くなり次第の対応だそうです。

 URL:
 エムイーシステム株式会社:見積ページ

・SH7706LSR / SH7706LANボード

 SH7706(SH-3)を用いた高機能なボード。MES2以外にSH7706LSRではLinux2.6.39.4 / 2.6.28.10 / 2.6.12.6が、
 SH7706LANではLinux2.6.12.6が公式サポートされています。

 URL:
 株式会社ティーエーシー商品ページ
 株式会社若松通商商品ページ

・SH7216LAN/USBボード

 LAN機能を内蔵したSH7216(SH2A)とUSB2.0のISP1362対応のボード。電力制御や多軸モータ一括制御やFPUが必須な制御向けだそうです。

 URL:
 エムイーシステム株式会社:見積ページ

また対応ボードとして、Interface誌付録CQ7144A及びその製品版SH7144 リピート基板と、業務向けSH7144LANボード(保守品)があります。
同じくInterface誌付録のFRK-SH2Aと業務向けSH7262LANについても試作が行われましたが、80MHz高速アクセスのSPI/ROMでも起動速度が遅く
対応中止となったそうです。


■MESの再配布について

最新版のソースコードについては、みついわさんに直接リクエストして下さい。
正式版の過去リリースのソースコードやホームページ上で公開された配布物は、所持している物は再配布可能ですので
メールフォームから問い合わせ下さい。
ベータ版の物は正式ではないためGPL2適用外です。ソースコードは原則非公開で再配布も禁止されています。


■H8-3069F向け配布ファイル

共通の設定ファイル - config.sys

販売元対応ボードファイル
株式会社 秋月電子通商 通販コード:K-00168
 AKI−H8/3069FフラッシュマイコンLANボード
通販コード:K-01271
 H8/3069Fネット対応マイコンLANボード(完成品)
通販コード:K-02133
 AKI−H8/3069Fマイコンボードキット完成品 ※要DRAM
通販コード:K-02298
 AKI−H8/3069Fマイコンボードキット完成品[DRAM付]
通販コード:K-00209(販売終了品)
 H8/3069Fネット対応マイコンLANボード(ボードキット)
25MHz動作: config.sys
20MHz動作: config.sys
株式会社 秋月電子通商 通販コード:K-00654
 H8/3069F USBホストボードキット(完成品)
config.sys
株式会社 ティーエーシー T104-H8M config.sys

秋月電子通商様は「リンク先は必ずトップページにお願いします。それ以外のページへの直接リンクはお避けください。」
という事なので各商品への直リンクを貼っていません。

共通のソースコード

内容ファイル
shellソースコードshell.c
libmesソースコードlibmes.zip
サンプルソースコードsample.zip

MES2.3r17(公式最終版はこちらです)

内容ファイル
WinGCC開発環境一式gcc23r17.exe
USB無線LANドライバprism.exe
カーネルソースコードmes23r17.zip
カーネルソースコード(修正版/mot同梱)mes23r17_modify.zip
ドライバモジュールソースコード(ダウンロード版)module.zip
ドライバモジュールソースコード(修正版/exe同梱)module_modify.zip
ドライバモジュールmmcソースコード(2.3r15〜)mmc_23r15.c
2017/02/14 ドライバモジュールrtcソースコード(修正版)rtc.c
2017/02/14 カーネルfatソースコード(修正版)fat.c
2017/02/14 カーネルscsiソースコード(修正版)scsi.c
※module.zipはr17より更新されてしまっているようです。mmc.cについて、r15以降の物を別途公開しました。

MES2.3r18

内容ファイル
WinGCC開発環境一式gcc23r18.exe
USB無線LANドライバprism.exe
カーネルソースコードmes23r18.zip
カーネルソースコード(修正版/mot同梱)mes23r18_modify.zip
ドライバモジュールソースコード(ダウンロード版)module.zip
ドライバモジュールソースコード(修正版/exe同梱)module_modify.zip
2017/02/14 ドライバモジュールrtcソースコード(修正版)rtc.c
2017/02/14 カーネルfatソースコード(修正版)fat.c
2017/02/14 カーネルscsiソースコード(修正版)scsi.c

・zipファイルの「修正版」はコンパイル時に発生したエラーや警告等を直した物です。

(2017/02/14 情報提供:大坂様)
・RTCの不具合対応:ドライバモジュールのソースコードrtc.cのrtc_write()修正版を別途公開しました。
 USBメモリマウント改善:カーネルのソースコードfat.cのmount()及びscsi.cのscsi_probe()修正版を別途公開しました。
 各zipは公開当時のまま更新していません。
 各ソースコードのrtc.c/fat.c/scsi.cを置き換えるか、diffを取り差分をマージするなどした上でコンパイルしてください。

shell.elfはインストール後の検証も兼ねてCBarでユーザプログラム設定のUser_H8.xmlを読み込み、
 新規プロジェクトを作成し、shell.cを追加してコンパイルした物を用いて下さい。

当方では2.3r17で水晶を25MHzに交換したAE-3069-LAN-BOARD-AからCまで、キット,半完成品,完成品で動作確認をしています。
(手持ちボードのDRAMは東芝 TC5117805CFTS-60,日立 HM5117800TT6,OKI MSM5117800F-60[高速ページモードで動作])


■MES2 Tips

1.コンパイル時の環境設定

CBarでのコンパイルは、以下の組み合わせで行う。(H8-3069F向け)

種別環境設定プロジェクト備考
ユーザプログラム
  shell.cやサンプル
  自作プログラム
User_H8.xml新規作成
ドライバモジュールDevice_H8.xmlmodule.zip内の各.cbaファイル
カーネル
  ドライバ統合版
MES_3069.xmlmes2.cba
カーネル
  ドライバ分離版
MES_3069.xmlcore.cba
libmes_h8eライブラリ
  ELFフォーマット
Library_H8.xmllibmes.cbalibmes.a→libmes_h8e.aにリネーム
libmes_h8cライブラリ
  COFFフォーマット
Library_H8_coff.xmllibmes.cbalibmes.a→libmes_h8c.aにリネーム
libdev_h8eライブラリ
  ELFフォーマット
Library_H8.xmllibdev.cbalibdev.a→libdev_h8e.aにリネーム
libdev_h8cライブラリ
  COFFフォーマット
Library_H8_coff.xmllibdev.cbalibdev.a→libdev_h8c.aにリネーム

2.実行環境/開発環境バージョン

「MES Ver〜上で動作するユーザープログラムとデバイスドライバは必ずgcc25〜.exe使って開発をしてください。」
MES2のダウンロードページでは、上記のように実行環境と開発環境のバージョンを必ず一致させるようにという旨の記述がある。

カーネル本体に注目しがちだが、環境設定,フォルダ構成,ヘッダ,ライブラリ,スタートアップルーチン,リンカスクリプト,ツール類が更新される事もある。
過去バージョンでコンパイルした実行モジュールが動作不可な時は、対応したWinGCC環境で再コンパイルを行うと動作する事が多い。

また随時不具合対応が行われているので(当ページのH8向け配布物は最終版)、過去バージョンで動作不審な時は最新版で一度検証した方が良い。
また、動作実績のある過去バージョンの開発環境は、開発したソースコードも含めて一式で残しておくと安全である。

3.CBarでのコンパイル操作

CBarでのコンパイルは、プロジェクト名以外の実行モジュールが生成されたり、実行時の原因不明に思える不審な挙動を防ぐため、以下の手順で行う。

1)左のツリー部分の最上部に表示されているプロジェクト名を選択
2)実行→クリア
3)実行→コンパイル

実行モジュール名はファイル名から得たプロジェクト名ではなく、ツリービューから取得している。
ツリービューを最後に操作した箇所のファイル名を取得してしまう場合があるため、プロジェクト名を選択状態にしてからコンパイルを行う。

ソースコードで不具合が見つからないのにプログラムが正常動作しない状況では、更新したソースコード以外の中間ファイルが原因の場合がある。
クリアしてからコンパイルを行う事で中間ファイルを再作成して不具合を回避する。

4.CBarでのコンパイル内部処理

CBarは環境設定ファイル内の「%AppPath%」記述を自身のパスに置き換え、Makefileを作成し、以下のコマンドラインを実行している。(H8-3069F向け)
以下は「C:\WinGCC」にインストールを行い、「D:¥MES_Projects¥shell」にshell.cのプロジェクト一式を置いた状態である。

バッチファイル引数1(%1)引数2(%2)引数3(%3)
CBarのパス¥kick.bat環境設定項目のパス内容プロジェクトのパスCBarのドライブ
C:¥WinGCC¥app¥kick.bat%AppPath%..¥local¥binD:\MES_Projects\shellC:

kick.batでは以下の処理を行い、gccでコンパイル処理を実行する。(H8-3069F向け)

1)xcopyで「環境設定項目のパス¥tmp¥」に「プロジェクトのパス¥*.*」相当を丸ごとコピー
2)環境変数「PATH」内容を退避
3)環境変数「PATH」に環境設定項目のパスを設定
4)CBar自身のドライブにドライブを変更
5)プロジェクト内容をコピーしたフォルダに移動
6)makeを実行し標準出力や標準エラー出力内容はlog1.tmp,log2.tmpにリダイレクト
7)環境変数「PATH」内容を退避していた値に戻す
8)xcopyで.c,.h,.txt以外をプロジェクトのパスにコピー
9)プロジェクト内容をコピーした「環境設定項目のパス¥tmp¥」の全ファイルを削除

CBarに制御が戻ると、log1.tmp,log2.tmp内容を処理結果として表示する。


【参考】現行版MES2でCBarをコンパイル利用するには

MES2公式ページでダウンロード可能なtools.zipの中にCBarの2006年10月時点の旧ソースコードが含まれる。
現在のMES2ではは内部で呼び出しているkick.batと環境設定の仕様が変更されている為、そのままでは利用する事が出来ない。
自分でコンパイルしたCBarを最新版で利用するには、ソースコードのUMain.pasとkick.batを変更する必要がある。
CBarの環境設定にある「パス」の項目には、空白区切りで3個のパスが指定されている。
kick.batでは、1個目は既存の動作、2〜3個目はパスを通す為に環境変数「PATH」に追加している。
上記の表と比較し、受け渡し内容や並び順を合わせれば良い。

User_SH_coff.xmlでの例:

バッチファイル引数1(%1)引数2(%2)引数3(%3)引数4(%4)引数5(%5)
CBarのパス¥kick.batプロジェクトのパスCBarのドライブ環境設定項目のパス内容(%3,%4,%5)
C:¥WinGCC¥app¥kick.batD:¥MES_Projects¥shellC: %AppPath%..¥local¥sh-tools¥bin%AppPath%..¥local¥sh-tools¥sh-coff¥bin%AppPath%..¥local¥sh-tools¥libexec¥gcc¥sh-coff¥4.0.0

5.複数バージョン共存でのCBar使用

MES2をバージョン別のフォルダにインストールして共存させて手書きMakefileでなくCBarを使用する場合、
使用したいバージョンのフォルダにあるcbar.exeを起動し、設定ファイルは同じフォルダの物を使用する。
下記Disktoolの「System File」設定も必要。

6.Disktoolの「System File」

WinGCCは「C:¥wingcc」にインストールする事を前提にしている。
但し、インストール先は選択可能であり、HDD事情やデュアルブート環境のため「C:」にインストールできなかったり、
複数バージョンを保持したいケースもある。
Disktoolの設定ファイルでは、ターゲット別のMES2カーネルイメージが「C:¥wingcc¥app」のパスで記述されている。
このパスはインストール時に更新されないため、「C:¥wingcc」以外にインストールする際は「System File」ボタンの操作が必須となる。
また、初回のみカーネルイメージを選択しておくとトラブルが少なくなる。

ターゲット別のMES2カーネルイメージの割り当て方

1)対象となるターゲットをコンボボックスで選択する。
2)「System File」ボタンを押すと、メッセージが表示される。
  「The Disktool might not opration normally.」「May the Disktool rewrite the system file?」「Do really?」
  「C:¥wingcc」にインストールする事を前提としているため、設定変更で動作しなくなるのを防ぐために、再三確認される。
3)各メッセージに順次「はい(Y)」と答える。
4)ファイル選択画面になるので、フォルダが正しい事を確認した上で「C:¥wingcc¥mes2.mot」相当のファイルを選択する。


コンボボックスで選択できるターゲットを増減させる場合はdisktool.iniをテキストエディタで直接編集する必要がある。
その結果うまく動作しなくなった場合は以下の手順を試みる。

1)Disktoolを終了
2)Disktool.iniの未編集な[ターゲット名]とmotファイルの組をコピー&ペースト
3)ターゲット名だけを変更してDisktool.iniを保存
4)Disktoolを起動
5)変更したターゲット名を選択して「System File」で正しいmotファイルを選択

7.Disktoolの内部処理

1)「DiskLoad」で選択したフォルダの親(外側)に、[選択フォルダ名].motファイルを書き込みモードでオープンする。
2)選択ターゲットに対応するカーネルイメージの内容を、丸ごと[選択フォルダ名].motファイルに出力する。
3)カーネルイメージを読み、リンカスクリプトで埋め込んだマーカー"12345678"を検出、直前にあるuser領域の先頭アドレスを得る。
  (参考:SH2も同様。SH3ではリンカスクリプトで埋め込まれ、リトルエンディアンで"78563412"となる。)
4)選択フォルダ内のファイルを検索し、順次S2レコードの書式で[選択フォルダ名].motに出力する。
  (出力内容はファイル名,サイズ,ファイル内容で、アドレスはuser領域の先頭アドレス+出力済みサイズとなる。
5)[選択フォルダ名].motファイルを閉じる。

8.h8flushで推奨のUSBシリアル変換ケーブル

COMポートの無いPCでh8flushを使用する場合は、秋月電子通商の「USB・シリアル変換ケーブル」が推奨されている。
通販コード:M-00720, M-00721
 USB・シリアル変換ケーブル[スケルトン]
通販コード:M-02746, M-02747
 USB・シリアル変換ケーブル[グレー色]

当方では、ドライバは PL2303_Prolific_DriverInstaller_v1.7.0.zip (2012/08/01リリース) 使用
それ以降の最新版は試していません。
ダウンロード先:
http://www.prolific.com.tw/
Languageは「English」のままで、Account/Passwordともに「GUEST」と入力して「GO」
→「Click here for PL2303 USB to Serial Drivers」のリンクをクリック
ページ内で「PL2303_Prolific_DriverInstaller_」を検索してリンクをクリック(ブラウザでの検索操作はCtrl+Fなど)
Windows XP SP3 / Windows 7 32bit,64bitで確認。

最近はiBUFFALO Arvel USBシリアルケーブル SRC06-USBを使用中。

9.h8flushでUSBシリアル変換ケーブル使用時に書き込み失敗する場合

h8flushででH8-3069Fボードへの書き込みに失敗する場合はマイクロテクノ様公開の「SendTool 1.1 改良版V3」をお勧めする。
上記USBシリアル変換ケーブルにて確認。




当ページはリンクフリーです。ご連絡頂ければうれしいですが、そうでなくても構いません。
ご質問、ご要望等、メールはこちらから→メールフォーム
作業案件以外の内容は、私以外の目に留まる事はありません。
Page view: