SSブログ

細かい事なのかもしれないけれど、重要な事なので。 [HOS]

ええっと、HOSはProject HOSの成果物です。
http://sourceforge.jp/projects/hos/

CopyrightもProject HOSとなっております。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



HOS-V4のSh2バージョンにちょっと問題ありのバグ [HOS]

詳細はこちらをご覧下さい。
http://sourceforge.jp/forum/message.php?msg_id=47854

お使いの方はカーネルソースのsh/開発環境別ディレクトリ/pacctx.srcを開いて_hospac_ena_intを以下の様に修正し、カーネルライブラリの再構築を行ってください。なおこれはHEWの場合です。

アセンブラ関数の上の2行に問題が有ったと言う訳です。行いたい事はステータスレジスタの割り込みマスク値のみ変更したいのでこの修正で行けると思いますが、まだ実機に組み込んでの確認は行っていませんので、お使いになる時は十分注意してくださいね。
※実機に組み込んだからと言ってすぐに結果が出るようなタイプのバグではないので問題なのですが、、、。
;------------------------------------------------
; 割り込み許可
; void hospac_ena_int(void)
;------------------------------------------------
  .SECTION  P, CODE, ALIGN=4
_hospac_ena_int:
;  mov  #h'f0, r1       ; 0x00f0 を反転させて 0xff0f を作成
;  not  r1, r1
  mov.w  without_imsk,r1
  stc    sr, r0
  and    r1, r0         ; 割り込みマスク値以外を取得
  mov.l  L_imsk, r1
  mov.l  @r1, r1
  or     r1, r0         ; 割り込みマスクの値を設定
  rts
  ldc    r0, sr
without_imsk  .DATA.W  h'0303  ; 割り込みマスク以外のマスク

  .ALIGN	4
L_imsk  .DATA.L _hospac_sh_imsk ; 割り込みマスク


改めてHOSの開発環境(gcc)の構築を確認する [HOS]

※関連ページ
http://hamayan.blog.so-net.ne.jp/2005-10-27
hos_image_001.pngまずはオーム社の該当ページに行き、そこからダウンロードのページに進みます。
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も用意する必要があります。以前Cortex M3の開発環境を用意した時に利用させてもらったツール群が以下のリンクからダウンロードできますので、こちらも落として解凍します。
http://www.itplaza.co.jp/opti/ARM7/src/utils.zip

hosのサンプルプログラムは適当なフォルダーに解凍し、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設定を参照し、行ってください。


hos_image_002.png私の場合はXPに入れましたので、デスクトップ上にあるマイコンピューターを右クリックしてプロパティを開き、「詳細設定」タブの「環境変数」をクリックして、まあユーザー環境変数でもシステム環境変数のどちらでも良いのですが、「path」の項目を編集して先のドキュメントに書いてある「c:\msys\1.0\local\h8300-hms\bin」を最後に追加します。


hos_image_003.png


hos_image_004.png


そうしたら正しくgccバイナリーがあるディレクトリへのPATHが設定されているか確認する為に「スタートメニュー」の「ファイル名を指定して実行」から「cmd.exe」を実行します。
DOS窓が開いたら、以下の様にタイプします。
h8300-hms-gcc --version
hos_image_005.png
無事gccのバージョン番号が確認できればgccのインストールは完了です。


次にmakeのインストールに進みます。
先のユーティリティプログラム群を解凍すると、その中にmake.exeがありますので、これをPATHの通っているディレクトリにコピーしてしまいます。簡単に言えば先程gccバイナリーの有るディレクトリへのPATHを通したので、C:\msys\1.0\local\h8300-hms\bin以下にmake.exeをコピーしてしまえば良いわけです。
では、実際にmakeが動くかコマンドプロンプトから以下の様にタイプしてバージョン表示をさせてみます。
make --version
hos_image_006.png


hosのサンプルを解凍した先にディレクトリを移動し、sampleディレクトリ以下にある適当なディレクトリ、ここではh83としますが、ここに移動後以下の様にタイプしてください。
make -f gcc.mak
hos_image_007.png


無事ビルドが完了しましたでしょうか。

HOSのサンプルの動作確認は今回紹介したgccツールチェインで行っています。
もちろん現在ではこのgccのバージョンは随分古いものですので、最新のバージョンで試したい気持ちはよく判ります。ですが、その様な方は使いたいバージョンの構築を正しく出来るだけのスキルが有る事が前提です。と言うのはあらゆるバージョン、あらゆる実行環境下での動作を保障する事が困難だからです。
個人的に思う事は、gccを使う為には、自力で全ての問題を解決できる方、若しくは極身近にスキルのある方が居り、いつでも相談可能な方でないと難しいかと思います。

もし開発環境の構築などで躓いてどうしようも無い時は、私は評価版HEWを使う事をお勧めします。
目的が「開発環境の構築」ではなく「ITRONを動かしてみる事」にあるのだとすれば、HEWを使う方が近道に思えます。
評価版HEWは商用利用はできませんが、勉強目的で利用する事については制限がありませんので、是非ご活用ください。
評価版のページ
http://japan.renesas.com/fmwk.jsp?cnt=evaluation_software_mid_level_landing.jsp&fp=/products/tools/evaluation_software/

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



Arduino DuemilanoveとかDiecimilaでHOS-V4を実行してみたい時は! [HOS]

hos_avr_02.png今回の開発には、ボードはATmarquino、IDEはAVR Studio、書き込みはAVR ISP Mk2で行っています。
勿論HOS-V4を動かす環境としてはATmega168以上にRAMを持っているAVRさえ有れば良いのですから、ターゲットとしては掲題のArduino DuemilanoveとかDiecimilaも入って来る訳ですよね。

しかしAVR ISP Mk2で書き込みをしてしまうとBoot Loaderは消去されてしまいますし、必ずしも皆さんがこの書き込みツールを持っている訳ではないでしょう。

そこで、以下のリンクの方法を使えばArduinoのブートローダーを削除せずに気軽にHOS-V4を試す事ができます。
※但し何があっても責任は持てませんので、自己責任でお願いしますね。
http://hamayan.blog.so-net.ne.jp/2009-03-08-3

コマンドラインのみ書いてみると、hexファイルのあるディレクトリに移動して、
avrdude -Cavrdude.conf -v -v -v -v -pm168 -cstk500v1 -P\\.\COM4 -b19200 -D -Uflash:w:送りたいファイル名.hex:i
※-pm168は勿論328とかに置き換えて使用する。
※COM4も実際のポート番号に置き換えて使用する。
※送りたいファイル名も、、、(笑)。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



ATmega168上でHOS-V4動いています。 [HOS]

ここでの話のAVRにポーティングしたHOS-V4です。
http://hamayan.blog.so-net.ne.jp/2009-11-27-1
hos_avr_01.pngもう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が私が作ったつまらないアプリケーションです。
AVR Studioで開発してあります。
※まずなんとかかんとか\hos-v4\document\atmega.txtからお読みください。



しかし、こうなると1KbyteのRAMでそこそこ実用的にタスクを実現できるSmaligh OSって凄いですね。前にR8Cで使ってみましたが。
勿論HEW上で開発し、Call Walkerを駆使してスタックを1byte単位で切り詰めていますけれど。

※Makefileの一部に絶対PATHを書いていたので、ご自分の環境に合わせていただくか、以下の様に書き直すと良いかもしれません。
## Include Directories
INCLUDES = -I"./" -I"../include" -I"../../../include/AVR" -I"../../../include" 
#INCLUDES = -I"D:\projects\avr\hos-v4\app\ATmega\hos_avr_01" -I"D:\projects\avr\hos-v4\app\ATmega\include" -I"D:\projects\avr\hos-v4\app\ATmega\..\..\include\AVR" -I"D:\projects\avr\hos-v4\app\ATmega\..\..\include" 

## Library Directories
LIBDIRS = -L"../../../lib/AVR" 
#LIBDIRS = -L"D:\projects\avr\hos-v4\lib\AVR" 


この本が役に立つ時が来たのか?(笑)。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



図解 μITRONによる組込みシステム入門 - H8マイコンで学ぶリアルタイムOS

図解 μITRONによる組込みシステム入門 - H8マイコンで学ぶリアルタイムOS

  • 作者: 武井 正彦
  • 出版社/メーカー: 森北出版
  • 発売日: 2008/01/29
  • メディア: 単行本(ソフトカバー)



AVR版HOS-V4が [HOS]

いつもいつも色々なマイコンにポーティングしていらっしゃるxkobayasさんが、今度はAVRにポーティングしたとの連絡をいただきました。
http://sourceforge.jp/forum/message.php?msg_id=47180

おお!、ちょっと、いやかなり面白そうです。

AVRの場合リソースが小さい事と、レジスタが多過ぎてタスクスイッチが重くなってしまう事からRTOSの利用はどうしたものか!と思っていましたが、出来たのなら触らせてもらいますとも。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



HOSをVstoneのVS-WRC003で動かす為には [HOS]

※実際にはこのボードを持っていないので、動作確認が取れていません。
また、もう少し詳しい解説が欲しい場合もあるかもしれません。
連絡はコメント欄を使用してください。

VS-WRC003
http://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に近い機能を持つタイマーのようです。

これらを踏まえてostimer.c内のOsTimer_Initializeを変更するならば、
#include "iodefine.h" /*ルネサス環境の場合、h83664f.hの代わり*/

TB1.TCB1 = 14745600L / 512 / 122 * (-1); /*オートリロード値*/
TB1.TMB1.BYTE = 0x80 | 0x02; /*オートリロード有効、φ/512*/
IENR2.BIT.IENTB1 = 1; /*タイマ割り込み許可 */
これで約8.192ms周期で割り込みが入る筈です。

OsTimer_TimerHandlerの方は
TB1割り込みステータスのクリアを行いますので、
IRR2.BIT.IRRTB1 = 0; /* 割り込み要因クリア */
としておきます。

またTAからTB1では割り込み番号も異なりますので、system.cfgのOSタイマーの登録では
/* OS タイマ */
ATT_INI({TA_HLNG, 0, OsTimer_Initialize});
ATT_ISR({TA_HLNG, 0, 29, OsTimer_TimerHandler});
としておきます。

更に、さらに、CPUカーネルとプロジェクトの割り込みベクター(vector.srcまたはvector.S)にも変更が必要となってきます。
まずは割り込みベクターの変更は、これはルネサス環境用ですが、冒頭の.IMPORTに29までの追加と、
.IMPORT _hos_vector025
.IMPORT _hos_vector026 ;ここから追加
.IMPORT _hos_vector027
.IMPORT _hos_vector028
.IMPORT _hos_vector029
ベクターテーブルの追加が必要です。
.DATA.W _hos_vector025
.DATA.W _hos_vector026 ;ここから追加
.DATA.W _hos_vector027
.DATA.W _hos_vector028
.DATA.W _hos_vector029

_hos_vector029はカーネルライブラリを参照しますので、カーネルライブラリにもベクター番号29までの追加と、ライブラリの再構築が必要となってきます。
hosv4\src\h83\htc以下のpacintn.src(ルネサス環境の場合)が該当します。
.EXPORT _hos_vector025
.EXPORT _hos_vector026 ;ここから追加
.EXPORT _hos_vector027
.EXPORT _hos_vector028
.EXPORT _hos_vector029



_hos_vector025: push.w r0
mov.b #25, r0l
bra int_handler ;ここから追加

_hos_vector026: push.w r0
mov.b #26, r0l
bra int_handler

_hos_vector027: push.w r0
mov.b #27, r0l
bra int_handler

_hos_vector028: push.w r0
mov.b #28, r0l
bra int_handler

_hos_vector029: push.w r0
mov.b #29, r0l

うーん、ちょっと手間は多いですね。CPUコアが変更と言う訳ではなくとも、割り込みの様にそのCPUに大きく依存する部分についての変更は、やはりそれなりに手間が掛かります。

CPUクロックの変更はSCIのBRRにも影響を与えます。
以下がh8t_sci.h内の新しいBRR値です。
/* SCI通信速度定義 (14.7456MHzのとき) */
#define SCI_9600 47
#define SCI_19200 23
#define SCI_38400 11

Tinyの世代更新に伴う違いとして、WDT(ウオッチドッグタイマー)がデフォルトでONとなっています。
勿論この変更は組み込みとしては正解だと思いますが、学習用としての利用ならばあまり使わなくても良いかな?。
sample.cのmainに入った直後に以下の記述を追加するとWDTを停止できます。
WDT.TCSRWD.BYTE = 0x9a; /*0b1001 1010 B4WI=0,TCSRWE=1*/
WDT.TCSRWD.BYTE = 0x92; /*0b1001 0010 B2WI=0,WDON=0*/

逆にWDTも使用したいと言う事なら、一例としてはIDLE LOOP内にWDTのクリアを行う処理を追加するか、最も優先度の低いタスクを生成して、その中でクリアを行う等の方法が有ります。
※ベストな方法はそのシステムに依存しますので、適切な方法を取ってください。


ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



久しぶりにH8でも触るか!、忘れない様にね。 用意する物 [HOS]

Img_1425.jpg
hew_image_01.png
ええっと、久しぶりにH8をネタにblogを書いて行こうと思っています。

ええっと、もうインストール記事は要らないよね。既に知っている人には馬の耳になんとかだし、初めての人だってインストーラーに従ってやって行けば問題無く終了します。そもそも誰でもちゃんとインストールできるようにインストーラーが有るんだし、インストールの解説なんて個人のblogとか、ましてや雑誌に何ページも使って掲載するネタじゃないでしょう。それが必要というなら、メーカーのサイトでやってくれれば済む事なんだよね、本当。

それでなんで今更H8なのか?なのですが、RTOSを勉強する入門用としてはとても良い選択だと思います。
無償のITRON仕様のHOSや、ITRONのサブセットになりますがSmalight 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/
お金が有れば勿論有償版のツールチェインを購入した方が良いのですが、なかなかそこまで手が出せない訳で、これを製品開発等に利用したりしなければ無償版でも十分楽しめます。
このページの「H8SX, H8S, H8ファミリ用C/C++コンパイラパッケージ」を入手して下さい。
※なお実際にダウンロードする際には事前にユーザー登録が必要となります。


Img_1426.jpgもう一つツールが必要です。
上の図の左下にはロードモジュールまでしか掲載されていませんが、このロードモジュールをターゲットの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でも書き込み確認しました。


hew_image_02.pngこのFDTでロードモジュールをターゲットのH8マイコンに書き込む事になりますが、FDTには一つ面倒な事があります。
最近のノートパソコン、いやデスクトップパソコンでさえCOMポートは冷遇されています。その為USB/シリアル変換器を使わざるを得ないのですが、このUSB/シリアル変換器を使えば使うほど割り当てられるCOMポート番号が後ろになってしまいます。
ちなみに先日のMTM03にでFDTIのFT232RLを使った基板を沢山用意したら、仕舞にはCOMポート番号は20を超えてしまいました。

ところが困った事にFDTが対応しているのはCOM8までです。とてもじゃないけれどCOM20なんて相手にしてくれません。

こんな時、setcom21を使ってFT232RLが接続されたポート番号を強制的にCOM8以下にする方法や、FTCleanを使ってCOMポートの割り当て情報を削除する方法がありますが、随分前にUSB関連の記事で教わったデバイスマネージャーに非表示デバイスを表示させて、それでCOMポートの割り当て情報を削除する方法がお勧めです。
以下の呪文を「ファイル名を指定して実行」から唱えて下さい。
set devmgr_show_nonpresent_devices=1
start devmgmt.msc

デバイスマネージャーが起動しますので表示メニューから「非表示デバイスの表示」をチェックして下さい。使わないCOMポートはどんどん削除していってしまいましょう。
再度FT232RLが搭載されたデバイスが小さな番号に割り当てられていれば成功です。
※ええ!勿論初めからCOM8以下の小さな番号に割り当てされているなら、上記の作業は必要としません。

これでHEWを使ったプログラミングの準備ができました。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



図解 μITRONによる組込みシステム入門 - H8マイコンで学ぶリアルタイムOS

図解 μITRONによる組込みシステム入門 - H8マイコンで学ぶリアルタイムOS

  • 作者: 武井 正彦
  • 出版社/メーカー: 森北出版
  • 発売日: 2008/01/29
  • メディア: 単行本(ソフトカバー)



HOS-V4のhosdenv.hの中の__CPU__について [HOS]

※またまたHEW上のH8マイコンでの開発の話です。

カーネルライブラリを構築する時、一部のファイルはハードウエアや開発環境に依存したファイルを使用します。
Cソース等は直接構成ファイルを指定していますが、ヘッダーファイルはこの依存性を解決する為にhosdenv.hと言うヘッダーファイルを使っています。

その中身の一部を紹介すると
#elif defined(__CPU__)	/* 日立H8コンパイラ */

#if (__CPU__ == 3) || (__CPU__ == 2)        /* H8/300H */
#include "h83/hospac.h"
#endif

そこで皆さんは疑問に思われるに違いない!。「「__CPU__」とは何ぞや!。」とね。

これは、ルネサスのH8用コンパイラの暗黙の宣言で、本来コンパイラマニュアルに掲載されているべき物ですが、実は手持ちのマニュアルには存在しない。過去の2002年頃のマニュアルを見ても無い!。

しかしこの暗黙の宣言は実際には存在しています。例えばHEWのウイザードを使用してH8/300H用のプロジェクトを生成した場合、iodefine.hの中にもその記述を見る事ができます。

結局手持ちのテキストベースのドキュメントの中からこの暗黙の宣言に関する記述を見つけられなかったので(いや、何処かには在るのでしょうけれど、見つけられない)、バイナリーファイルの中身を検索して、何とか以下の記述を抽出しました。
__300L__     __CPU__ 0
__300__      __CPU__ 1
__300HN__    __CPU__ 2
__300HA__    __CPU__ 3 __ADDRESS_SPACE__ 20
__300HA__    __CPU__ 3 __ADDRESS_SPACE__ 24
__2000N__    __CPU__ 6
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 20
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 24
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 28
__2000A__    __CPU__ 7 __ADDRESS_SPACE__ 32
__2600N__    __CPU__ 4
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 20
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 24
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 28
__2600A__    __CPU__ 5 __ADDRESS_SPACE__ 32

__CPU__に続く番号が、先のhosdenv.hの__CPU__の番号に対応すると思われます。

と言う訳で、HOS-V4をH8/300H以外にも移植する時の参考にして下さい。

※しかしこうやって一般的なドキュメントに記述を行っていないと言うことは、ルネサスの方向性としてはあまり使用して欲しくないのかもしれません。
先のhosdenv.hの中の記述も、
#elif defined(__RENESAS__)	/* ルネサスH8コンパイラ */

#if defined(__300HN__) || defined(__300HA__)        /* H8/300H */
#include "h83/hospac.h"
#endif

に変えた方が良いのかもしれません。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



_kernel_min_intnoが見つからない! μITRON4.0仕様を使った場合のビルド手順 [HOS]

掲題の様な質問をもらいましたので、あらためて解説したいと思います。
じつはμITRON4.0仕様OSのビルド手順は、仕様書の「2.1.10 システムコンフィギュレーションファイル」の章に詳しく掲載されています。これを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のビルドフェーズに組み込む方法を提供しています。

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

ITRONプログラミング入門―H8マイコンとHOSで始める組み込み開発

  • 作者: 濱原 和明
  • 出版社/メーカー: オーム社
  • 発売日: 2005/04/25
  • メディア: 単行本



この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。