「TOPPERS/JSPは#ifdefを少なくしました」の理由
まだ高田研ができて間もないころ... そう、私がまだ高田研でなかったころのお話。
この頃、ボスから「ItIsってITRONの実装があるんだけど、Windowsに移植してみない?」と持ちかけられた学生が、「ifdefばかりでコードが読めません」と文句を言ったのがきっかけ。その頃にその学生が触っていた組込み用OSがifdefだらけだったため、ifdef恐怖症に陥っていたようだ。その後、ボスがmITRON4.0カーネルの実装を始めたことを知ったその学生が「ifdefはやめましょう」連呼した結果、ifdefの少ないコードに向かって進んでいった。
ちなみに、ボス曰く「熟練した技術者なら、ifdefのあるコードでも苦労しないんだけど...」とのこと。ごめんなさい。とはいえgdbやgcc並みにifdefされるとやっぱり熟練でも読めないと思う 。
とか何とか言いつつ、今のTOPPERS/JSPの依存部のなかで最もifdefを使っているのは、その学生だったりする。
#初期の頃は#ifdef専用プリプロセッサみたいなものをつくろうとかいう話もあった (却下されたけど)「そのツール、公開されて無いような気がするのですが...」の理由
ET2003で何件かご意見を頂いたので、改めて。
公開されてないツールは存在しています。スカイフィッシュよりも確実に。
特にWindows環境のツールに多いのですが、「現在のカーネル状態を表示するツール」とか「実行後にログを解析してタスク実行時間や割合などの統計処理をするツール」とか「Visual C++を使わないWindows環境」とかがあります。なぜ公開しないのかというと、まだ公開のレベルに達してないとか、デモ用に作っただけなので保守する気がないとか、そんなものです。ノークレーム・ノーサポートなら出せるツールはあります。メンバ限定とかではないです。基本的に作ったツールにどんなものがあるかは、私のプレゼン資料 or このサイトのどこかに書いてあります。
最近、単体販売した後にアップデータを販売して機能拡張していくという販売モデルがありますが、これも「アップデートできるということを知っているレベルの人は、細かいことでサポートに電話してこない」というメリットがあるらしいです。同じことですね。
TOPPERSのTって...もう豊橋じゃないよね?
この問題は既に指摘済みです。それも「mITRON4.0の実装ができた。名前をつけよう。」といっている段階で指摘済みです。
T : 「他に候補がないのでTOPPERS(Toyohashi...)にしようと思うんだけど」
W : 「豊橋って、豊橋じゃなくなったらまた改名しないといけなくなりますよ」
T : 「まぁそのときはそのときだよね。そんな近い話じゃないし、大丈夫だよ」
W : 「そうですよね。一応、私がDr取るまでは技科大にいるって約束ですしね」
T : 「いざとなったらTRONのTheみたいにする手もあるし」# この内容は事実を元にしたフィクションです。
W : 「名前がTOPPERS(Toyohashi...)に決まるみたいだよ」
H : 「豊橋じゃなくなったらどうするの?」
W : 「まぁTなら(検閲済み)でもいい訳だし...」
H : 「周りは(検閲済み)って呼ぶだろうね」
W : 「あぁ、ItIsのsだってそうなんだからちょうどいいかも」# この内容はあくまでもフィクションです。
公式ではTOPPERSのTは "プロジェクト発祥の地として豊橋のまま" であり続けるそうですが、心の中でどう思うかは自由だと思います。私は(検閲済み)だと思ってます。
どうやらタブーらしい
次の質問には決して返事が来ないので、聞かない方が良いと思います。ROMってるだけでも緊張します。
- 「TOPPERS/JSPとT-Kernelの関係について教えてください」
- 「T-Engine上で動くTOPPERS/JSPはありますか?」
上記の質問に対する回答には非常に高度な政治的判断を伴うようです。
#ETの大学ブースのデモにご本人様が降臨された時は笑顔だったけどね
[2003/11/16 追記] 最近は「TOPPERS/JSP rel 1.4 は一体いつ出るんですか?」もわりとタブー
即答させるコツ
各依存部のドキュメントに書いてない環境で質問すると、返事が長くなります。例えば下記のような組合せは、とっても遅くなります。
- コンパイラにgcc-3.0以降を使用している (m68k, ARM, SH3, V850, M32R)
- cygwinを使っている (V850, M32R, コンフィギュレータ)
- Borland C++ Compilerを使っている (Windows, コンフィギュレータ)
ドキュメントにある環境だと、各自手持ちのノートマシンとかで検証できるので回答が早いです。それ以外だと、問合せがあってから環境を構築する or 研究室に来ないと環境がない ので、返事が遅くなります。
# make v850-nec-elf とか make sh-hitachi-elf とかやると開発環境が構築されるMakefileがある時点でどっかおかしい
真のTOPPERS/JSP
独自で依存部を作られる場合、真のTOPPERS/JSPのコードを元にしないと、他の依存部が踏んだバグを踏みなおす恐れがあります。ですから、真のコードを読みましょう。ITRONカーネルのお勉強をする際にも、真のコードを見るようにしたほうが良いです。間違いなく。
で、真のコードとは何かと言う話ですが、それは各ソースの文言の最後にある@(#) $Id: filename,v 1.0 2003/00/00 00:00:00 account Exp $と書いてある場所の、accountの部分に"hiro"と入っているコードを"真のコード"と言います。これが本筋です。ほぼ全ての依存部はここから派生しています。このコードには誤りはありません。他のコードとは格が違います。
たまに「漢字コード違ってたから」とかいう理由で "hiro" になるファイルがあります。これは産地偽装コードなので要注意です。罠を見つける際には、jsp/docにあるファイルが役に立ちます(開発時の漢字コードがEUCでなさそうな依存部には注意)。
# 研究室には「グッとにらんでバグを出す」という迷言があるが、m68kのコードにそれはありえない
TOPPERS/JSPを使い始めたいけど、ボードってなにがいいの?
コードの安定性を求めるなら、電算のDVE-68k辺りが一番お勧めです。これで "真の" TOPPERS/JSPが使用できます。MLのサポートを期待するなら、秋月のH8とかが使っている人が多いためか回答が早いのでいいですね。値段も安いですし。個人的なお勧めはYDKテクノロジーズのMIREFでしょうか。ウチの研究室のボードもこれで染まりつつあるし、身近なところの評判もいいし。今のところTCP/IPが使えるのはこれとH8だけですしね。
toppers-usersに「なんかいいボードない?」と聞いてみるのも悪くないです。結構真面目な答えやフルセットの製品などを教えてくれます。
TK-850/SA2
株式会社アプリケーションという会社が、V850プロセッサの載ったTK-850シリーズという結構安くて良いボードを作ってます。始めてV850を触った頃は「V850は単品で売ってないから、一般の人が手に入れるのは難しいよ」と言われていたのですが...。良い時代が来たものです。私の食指も動きっぱなしです。
ただこのボード、一つだけ問題があります。それは、ボード自体は\12,000-と非常に安価なのですが、mITRON仕様OSがつくと\198,000-になるそうです。最初見たとき、桁を一つ間違えました。というよりも、間違えているとしか思えません。OSのライセンス料が全体の93.9%を占めています。
正直なところ、こういう値段設定になっているとTOPPERS/JSPを移植しても公開してよいものやら大変悩みます。OSで利益を得るモデルになっている...訳はないと思うけど...でもそうとも言い切れないし...う〜ん。過去に仲間だと思っていた某社に「おまえらコンペティター(競合他社)だろ? 帰れ!」とお叱りを受けたことを思い出します(これ以降、某社のケンカは買うようにしてます)。まぁTOPPERSプロジェクトのグループ外の会社の利益を考える必要は無いという話もありますが...
V850は私が始めて触った組込み向けプロセッサなので、非常に愛着があります。でもこういう理由で公開できない部分が増えていくわけで。保守できないコードは趣味の範囲を超えないわけで。
戯言に近い話
・政治的な話はイヤなので、ARMがプロジェクトに参画するか、某社が拡張性の高い命令セットシミュレータを作ってくれる or 内部資料を公開してくれることを希望