-細かい事なのかもしれないけれど、重要な事なので。HOSとなっております。[HOS]詳細はこちらをご覧下さい。http://sourceforge.jp/forum/message.php?msg_id=47854お使いの方はカーネルソースのsh/開発環境別ディレクトリ/pacctx.srcを開いて_hospac_ena_intを以下の様に修正し、カーネルライブラリの再構築を行ってください。これはHEWの場合です。アセンブラ関数の上の2行に問題が有ったと言う訳です。行いたい事はステータスレジスタの割り込みマスク値のみ変更したいのでこの修正で行けると思いますが、まだ実機に組み込んでの確認は行っていませんので、お使いになる時は十分注意してくださいね。※実機に組み込んだからと言ってすぐに結果が出るようなタイプのバグではないので問題なのですが、、、。[HOS]※関連ページhttp://hamayan.blog.so-net.ne.jp/2005-10-27まずはオーム社の該当ページに行き、そこからダウンロードのページに進みます。http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06604-5次にhos-v4_for_gcc.zipとtools.zipの両方をダウンロードし、それぞれ解凍します。この2つのファイルはhos本のサンプルプログラムとWindowsのコマンドライン(つまりdos窓)で動くgcc関連です。gccでMakeする場合にはMakeも用意する必要があります。M3の開発環境を用意した時に利用させてもらったツール群が以下のリンクからダウンロードできますので、こちらも落として解凍します。http://www.itplaza.co.jp/opti/ARM7/src/utils.ziphosのサンプルプログラムは適当なフォルダーに解凍し、toolsの場合は中のh8300-binutils-2.13.2.1-gcc-3.2.3-newlib-1.11.0-bin.exeと言うインストーラがありますので、実行してインストールを開始して下さい。適当にウイザードに従って行くと、gccのバイナリーが特に変更を行わなければC:\msys以下に出来ている筈です。このインストーラでは実行ファイルへのPATHが設定されませんので、C:\msys\1.0\local\about_h8_gcc.txtを開き、コマンドプロンプトの場合のPATH設定を参照し、行ってください。私の場合はXPに入れましたので、デスクトップ上にあるマイコンピューターを右クリックしてプロパティを開き、「詳細設定」タブの「環境変数」をクリックして、まあユーザー環境変数でもシステム環境変数のどちらでも良いのですが、「path」の項目を編集して先のドキュメントに書いてある「c:\msys\1.0\local\h8300-hms\bin」を最後に追加します。したら正しくgccバイナリーがあるディレクトリへのPATHが設定されているか確認する為に「スタートメニュー」の「ファイル名を指定して実行」から「cmd.exe」を実行します。DOS窓が開いたら、以下の様にタイプします。--version無事gccのバージョン番号が確認できればgccのインストールは完了です。次にmakeのインストールに進みます。先のユーティリティプログラム群を解凍すると、その中にmake.exeがありますので、これをPATHの通っているディレクトリにコピーしてしまいます。簡単に言えば先程gccバイナリーの有るディレクトリへのPATHを通したので、C:\msys\1.0\local\h8300-hms\bin以下にmake.exeをコピーしてしまえば良いわけです。実際にmakeが動くかコマンドプロンプトから以下の様にタイプしてバージョン表示をさせてみます。--versionhosのサンプルを解凍した先にディレクトリを移動し、sampleディレクトリ以下にある適当なディレクトリ、ここではh83としますが、ここに移動後以下の様にタイプしてください。gcc.mak無事ビルドが完了しましたでしょうか。HOSのサンプルの動作確認は今回紹介したgccツールチェインで行っています。現在ではこのgccのバージョンは随分古いものですので、最新のバージョンで試したい気持ちはよく判ります。その様な方は使いたいバージョンの構築を正しく出来るだけのスキルが有る事が前提です。言うのはあらゆるバージョン、あらゆる実行環境下での動作を保障する事が困難だからです。個人的に思う事は、gccを使う為には、自力で全ての問題を解決できる方、若しくは極身近にスキルのある方が居り、いつでも相談可能な方でないと難しいかと思います。開発環境の構築などで躓いてどうしようも無い時は、私は評価版HEWを使う事をお勧めします。目的が「開発環境の構築」ではなく「ITRONを動かしてみる事」にあるのだとすれば、HEWを使う方が近道に思えます。評価版HEWは商用利用はできませんが、勉強目的で利用する事については制限がありませんので、是非ご活用ください。Mk2で行っています。DuemilanoveとかDiecimilaも入って来る訳ですよね。Loaderは消去されてしまいますし、必ずしも皆さんがこの書き込みツールを持っている訳ではないでしょう。そこで、以下のリンクの方法を使えばArduinoのブートローダーを削除せずに気軽にHOS-V4を試す事ができます。※但し何があっても責任は持てませんので、自己責任でお願いしますね。-Uflash:w:送りたいファイル名.hex:i※-pm168は勿論328とかに置き換えて使用する。※COM4も実際のポート番号に置き換えて使用する。※送りたいファイル名も、、、(笑)。トラックバック(0)ATmega168上でHOS-V4動いています。[HOS]ここでの話のAVRにポーティングしたHOS-V4です。http://hamayan.blog.so-net.ne.jp/2009-11-27-1もう2タスク動かした時点でRAMがかつかつです。タスクは引数で渡された時間毎に起床して、システムタイマーのltimeを報告すると言う単純な物です。ATmega168には1KbyteしかRAMが無いので、もう限界と言うか、もしかしたら駄目かも知れません(笑)。ATmega328の2Kbyte位あれば5個のタスクが動くらしいですけれど。AVRでRTOSって面白い組み合わせだと思いますので、ここにアーカイブを置いて置きます。ここを右クリック例によってローカルに保存後、拡張子のjpgをzipに直して解凍してください。なんとかかんとか\hos-v4\app\ATmega\samplesがxkobayasさんの5人の哲学者で、なんとかかんとか\hos-v4\app\ATmega\hos_avr_01が私が作ったつまらないアプリケーションです。Studioで開発してあります。※まずなんとかかんとか\hos-v4\document\atmega.txtからお読みください。前にR8Cで使ってみましたが。Walkerを駆使してスタックを1byte単位で切り詰めていますけれど。※Makefileの一部に絶対PATHを書いていたので、ご自分の環境に合わせていただくか、以下の様に書き直すと良いかもしれません。この本が役に立つ時が来たのか?(笑)。[HOS]いつもいつも色々なマイコンにポーティングしていらっしゃるxkobayasさんが、今度はAVRにポーティングしたとの連絡をいただきました。http://sourceforge.jp/forum/message.php?msg_id=47180おお!、ちょっと、いやかなり面白そうです。AVRの場合リソースが小さい事と、レジスタが多過ぎてタスクスイッチが重くなってしまう事からRTOSの利用はどうしたものか!と思っていましたが、出来たのなら触らせてもらいますとも。[HOS]※実際にはこのボードを持っていないので、動作確認が取れていません。詳しい解説が欲しい場合もあるかもしれません。連絡はコメント欄を使用してください。VS-WRC003http://akizukidenshi.com/catalog/g/gM-02745/確かに安いですね。HOSのサンプルプログラムはH8/Tinyシリーズの3664をターゲットにしています。それに対してこのVS-WRC003で使用しているTinyは36064と言う第2世代?のTinyシリーズが使われています。この世代から書替え保証回数が10000回以上になったのは嬉しい限りですね。このマイコンの違いに伴い、HOSのサンプルを動かす為には幾つかの変更をしないと動かない事になりますので、現状判っている範囲でそれを書いておきます。一つはCPUクロックの周波数が異なっています。このボードは、秋月の写真を見る限り14.7456MHz近辺の周波数となるようです。※実際はお手持ちの資料を確認してくださいね。3664では存在していたTimerA(TA)が無くなり、TimerB1(TB1)がTAに近い機能を持つタイマーのようです。*/これで約8.192ms周期で割り込みが入る筈です。OsTimer_TimerHandler});としておきます。CPUカーネルとプロジェクトの割り込みベクター(vector.srcまたはvector.S)にも変更が必要となってきます。_hos_vector029ベクターテーブルの追加が必要です。_hos_vector029_hos_vector029はカーネルライブラリを参照しますので、カーネルライブラリにもベクター番号29までの追加と、ライブラリの再構築が必要となってきます。hosv4\src\h83\htc以下のpacintn.src(ルネサス環境の場合)が該当します。r0lうーん、ちょっと手間は多いですね。CPUコアが変更と言う訳ではなくとも、割り込みの様にそのCPUに大きく依存する部分についての変更は、やはりそれなりに手間が掛かります。CPUクロックの変更はSCIのBRRにも影響を与えます。以下がh8t_sci.h内の新しいBRR値です。11Tinyの世代更新に伴う違いとして、WDT(ウオッチドッグタイマー)がデフォルトでONとなっています。この変更は組み込みとしては正解だと思いますが、学習用としての利用ならばあまり使わなくても良いかな?。sample.cのmainに入った直後に以下の記述を追加するとWDTを停止できます。LOOP内にWDTのクリアを行う処理を追加するか、最も優先度の低いタスクを生成して、その中でクリアを行う等の方法が有ります。※ベストな方法はそのシステムに依存しますので、適切な方法を取ってください。トラックバック(0)久しぶりにH8でも触るか!、忘れない様にね。[HOS]ええっと、久しぶりにH8をネタにblogを書いて行こうと思っています。ええっと、もうインストール記事は要らないよね。知っている人には馬の耳になんとかだし、初めての人だってインストーラーに従ってやって行けば問題無く終了します。そもそも誰でもちゃんとインストールできるようにインストーラーが有るんだし、インストールの解説なんて個人のblogとか、ましてや雑誌に何ページも使って掲載するネタじゃないでしょう。それが必要というなら、メーカーのサイトでやってくれれば済む事なんだよね、本当。それでなんで今更H8なのか?なのですが、RTOSを勉強する入門用としてはとても良い選択だと思います。OSも勉強目的に限り利用できます。これを切欠にRTOSを始めて、その内もっとハイパワーなマイコンに切り替えて行くと言う流れが想定できます。上から2番目の図はH8/300H用コンパイラのマニュアルから抜粋した図ですが、これは一般的なプログラム開発のワークフローを示しています。いや、一部HEW特有の流れもありますか。白いところと、灰色のところがありますが、白は基本的にユーザーが自前で用意したり、途中、途中の過程で生成される中間ファイル等です。灰色は統合開発環境が用意しているツール等で、基本的に作業は上から下方向に作業が進みます。デバックなんかすると一番下から一番上に戻ったりもしますが。以下のリンクで示す統合開発環境(通称HEW)を入手して自分のパソコンにインストールすると、灰色のところが埋まります。http://japan.renesas.com/fmwk.jsp?cnt=evaluation_software_mid_level_landing.jsp&fp=/products/tools/evaluation_software/お金が有れば勿論有償版のツールチェインを購入した方が良いのですが、なかなかそこまで手が出せない訳で、これを製品開発等に利用したりしなければ無償版でも十分楽しめます。H8ファミリ用C/C++コンパイラパッケージ」を入手して下さい。※なお実際にダウンロードする際には事前にユーザー登録が必要となります。一つツールが必要です。上の図の左下にはロードモジュールまでしか掲載されていませんが、このロードモジュールをターゲットのH8マイコンにダウンロードしないとH8マイコンは動いてくれない訳で、その為のツールとして個人レベルではE8エミュレータを使う方法と、FDTを使ってシリアル(SCI)経由で書き込む方法があります。※おっといけない!、自分で書き込みモジュールを作成し、H8(またはSH)をブートモードで起動してHTERMから書き込む方法も有りますね。初期の頃のルネサスのマイコン、例えばSH2/7045Fは何故かFDTのサポートリストに見当たらないので、この方法で私は書き込みを行っています。※写真に写っているのがE8エミュレータで、このタイプは既に旧型になっています。※E8エミュレータを持っている人は既にH8マイコンを使いこなしているのでしょうから、これの解説は割愛させていただきます。FDTはやはりルネサスの以下のサイトからダウンロードできます。http://japan.renesas.com/fmwk.jsp?cnt=evaluation_software_mid_level_landing.jsp&fp=/products/tools/evaluation_software/一番下にリンクがありますね。これもインストーラに従って自分のパソコンに入れて下さい。※下記情報、FDTのver4.03以前の話です。ver4.03ではCOM9でも書き込み確認しました。このFDTでロードモジュールをターゲットのH8マイコンに書き込む事になりますが、FDTには一つ面倒な事があります。最近のノートパソコン、いやデスクトップパソコンでさえCOMポートは冷遇されています。その為USB/シリアル変換器を使わざるを得ないのですが、このUSB/シリアル変換器を使えば使うほど割り当てられるCOMポート番号が後ろになってしまいます。ちなみに先日のMTM03にでFDTIのFT232RLを使った基板を沢山用意したら、仕舞にはCOMポート番号は20を超えてしまいました。ところが困った事にFDTが対応しているのはCOM8までです。ないけれどCOM20なんて相手にしてくれません。こんな時、setcom21を使ってFT232RLが接続されたポート番号を強制的にCOM8以下にする方法や、FTCleanを使ってCOMポートの割り当て情報を削除する方法がありますが、随分前にUSB関連の記事で教わったデバイスマネージャーに非表示デバイスを表示させて、それでCOMポートの割り当て情報を削除する方法がお勧めです。以下の呪文を「ファイル名を指定して実行」から唱えて下さい。devmgmt.mscデバイスマネージャーが起動しますので表示メニューから「非表示デバイスの表示」をチェックして下さい。使わないCOMポートはどんどん削除していってしまいましょう。再度FT232RLが搭載されたデバイスが小さな番号に割り当てられていれば成功です。※ええ!勿論初めからCOM8以下の小さな番号に割り当てされているなら、上記の作業は必要としません。これでHEWを使ったプログラミングの準備ができました。[HOS]※またまたHEW上のH8マイコンでの開発の話です。カーネルライブラリを構築する時、一部のファイルはハードウエアや開発環境に依存したファイルを使用します。Cソース等は直接構成ファイルを指定していますが、ヘッダーファイルはこの依存性を解決する為にhosdenv.hと言うヘッダーファイルを使っています。"h83/hospac.h"#endifそこで皆さんは疑問に思われるに違いない!。「「__CPU__」とは何ぞや!。これは、ルネサスのH8用コンパイラの暗黙の宣言で、本来コンパイラマニュアルに掲載されているべき物ですが、実は手持ちのマニュアルには存在しない。過去の2002年頃のマニュアルを見ても無い!。この暗黙の宣言は実際には存在しています。HEWのウイザードを使用してH8/300H用のプロジェクトを生成した場合、iodefine.hの中にもその記述を見る事ができます。結局手持ちのテキストベースのドキュメントの中からこの暗黙の宣言に関する記述を見つけられなかったので(いや、何処かには在るのでしょうけれど、見つけられない)、バイナリーファイルの中身を検索して、何とか以下の記述を抽出しました。32__CPU__に続く番号が、先のhosdenv.hの__CPU__の番号に対応すると思われます。言う訳で、HOS-V4をH8/300H以外にも移植する時の参考にして下さい。※しかしこうやって一般的なドキュメントに記述を行っていないと言うことは、ルネサスの方向性としてはあまり使用して欲しくないのかもしれません。"h83/hospac.h"#endifに変えた方が良いのかもしれません。[HOS]掲題の様な質問をもらいましたので、あらためて解説したいと思います。システムコンフィギュレーションファイル」の章に詳しく掲載されています。これをHOS-V4とHEW環境での話しをしますね。ソフトウエア部品を使わない場合の手順は以下の様になります。1.コンフィギュレーションファイルの編集HOSのソース中ではsystem.cfgがコンフィギュレーションファイルです。この名前は予約されています。2.プリプロセッサでコンフィギュレーションファイルの整形。この時中間ファイルが生成されます。3.コンフィギュレーションの実行。先程の中間ファイルをコンフィギュレータ(hos4cfg.exe)に食わせて、二つのソースファイルを生成します。一つはkernel_cfg.c、もう一つはkernel_id.hです。この二つのファイルの名前も予約されています。4.他のソースも含めてコンパイルやアセンブルを行い、オブジェクトファイルの生成。5.上のオブジェクトファイルとカーネルライブラリをリンカーで結合。6.実行モジュールの生成です。※この中でkernel_cfg.cの中に変数kernel_min_intnoが生成されます。この手順で処理を行わないと上手く行きません。※なお、ソフトウエア部品のコンフィギュレーションは、1.の前に行っておきます。1.と2.の間にソフトウエア部品のコンフィギュレーションを行います。システムコンフィギュレーションファイルの中に、ソフトウエア部品のオブジェクトに関する記述を行います。Make一発!でアプリケーションのビルドを行う場合はよいのですが、HEWのプロジェクトにファイルを登録してビルド!となると、一つ問題が発生します。kernel_cfg.cとkernel_id.hが手順3.で生成される為に、本当の本当の初期の段階ではこれらファイルが無く、登録出来ないと言う事になります。そこで、もっともお手軽と思える解決方法は、適当なファイルをでっち上げてしまってください。エクスプローラの右クリックで新規テキストファイルを生成して、その後ファイル名をkernel_cfg.cとkernel_id.hに変えてしまっても構いません。1~6の手順でビルドを行う限り、3.の段階でこれらでっち上げたファイルは、本物のファイルで上書きされてしまいます。※市販のITRON仕様OSだとコンフィギュレーションにGUIを使ったりしますが、実はsystem.cfgファイルを編集してコンフィギュレータに食わせる方法が本道だと判りますね。Make一発の場合はこちらの方法が親和性が高いですし、system.cfgの編集は、わざわざGUIでやるほど難しくも面倒くさくも無いですから。逆にコンフィギュレータがコマンドラインで動く方が、様々なIDEツールへの対応をさせ易いです。ITRON本でもカスタムビルドフェーズとして、HEWのビルドフェーズに組み込む方法を提供しています。最近のコメントこんなものでよろしければ。場合..ありがとうございます。Electronicsアットマークエレ不要なデバイスドライバーを削除ダウンロードInterface付属SH2基板のSRAM有り/無しデバックモニタとHOS-V4同梱バージョンHOS本のサンプルをH8/3048Fでデバックする為のデバックモニタH8/3048Fのセクション情報ファイルインポートして使います。