ちょっと間が開いたが、SH-TINY にリアルタイム OS の HOS-V4 を載せる話題だ。
実は私よりも先に、適当電子工作研究所のSH/TinyにHOS-V4を載せようと言うコンテンツで、SH-TINY に HOS-V4 を載せる話が公開されている。このコンテンツの場合、アルファプロジェクトのSH/Tiny基板に、ルネサス純正のコンパイラの SHC 体験版を使って、HOS-V4 を入れる方法が書いてある。(コンパイラについては推測)
今回、私は、秋月の SH-TINY チップを使った自作マイコンに gcc を使って HOS-V4 をインストールしたのだが、適当電子工作研究所のコンテンツが大変参考になった。このコンテンツが無かったら、今ごろ、泥沼に陥っていたかも知れない。「適当電子工作研究所」の hamayan さんに感謝、感謝である。
さて、何がそんなに参考になったかと言うと、SH-TINY の CPU 部分は、SH-2 と全く同じでは無く、微妙に違う部分がある。具体的に言うと、「スロット不当命令例外処理に関する注意事項」である。正直、当初これは全く把握していなかった。HOS-V4 では、タスク切替えに、この機能を使っているので、気が付かなかったら、混乱していたと思う。
その他、 例外処理ベクタが増えていたり、メモリーや周辺機器のアドレスが変更になっている。
この中で、「スロット不当命令例外処理」と「例外処理ベクタ」の変更部分は、HOS-V4 のカーネル自体に変更が必要にある。以前の私の
コンテンツを参考にした人も居るかもしれないが、ここでは改めて、最初から、SH-TINY 用に HOS-V4 をインストールする方法を示そう。
HOSのダウンロードと解凍及びコンフィギュレーターとライブラリの構築
HOSから、h4_101a.tgzをダウンロード
sh2gcc.tgzをダウンロード
$ cd ~/
$ tar zxvf h4_101a.tgz
$ cd hos-v4/config/
$ make -f gcc.mak
# cp hos4cfg /usr/cross/bin/
$ cd ../src/sh
$ rm -rf sh2gcc
$ tar zxvf sh2gcc.tgz
$ cd ../../lib/sh/sh2gcc/
ここで、h4sh2.makの中の
sh-hms-gccをsh-elf-gccに
sh-hms-arをsh-elf-arに
sh-hms-ranlibをsh-elf-ranlibに変更する。
$ make -f h4sh2.mak
サンプルプログラムのROM 化
sh7125test.tgzをダウンロード
$ cd ~/hos-v4/sample/
$ tar zxvf sh7125test.tgz
$ cd sh7125test/
$ make -f gcc.mak
できた sampleRom.mot を SH-TINY ボードに書き込むと、「いわゆる哲学者の食事の問題」を実行する。
注意
ブログのコンテンツの内、「告知」など時期よって情報価値が無くなるのは除いてある。また、コンテンツに付いたコメントは書き込み者に著作権があるものと判断し、ここに持ってきていないので、コメントを見るときは、元々のブログコンテンツを参照してもらいたい。
その他、ブログ発表後、コメントなどの内容を反映するなど、内容を変更しているものもあるので、注意してほしい。