最近は仕事でコード書いてるので色々発散されてしまっていかんな。仕事で書いたコードは他のネタに使い回せないのでよくない。


ところで、組み込みのコードはいつもヒープどうやって使ったらいいものか迷う。とは言っても、僕のやってる仕事は全然クリティカルでもなんでもなくて、「まー、止まったら再起動すりゃいいかなー」って感じのものなので、ヒープぐらい好きなように使っても構わないとは思うんだけど。
いや、つまり、どうでもいい話なんだけど。それでも、実際のクリティカルな場面では、ヒープはどうやって使ってるのかは気になるところだ。断片化しないように、リアルタイム性を失わないようにヒープを使うにはどうすればいいんだろうか。そういうのは全然わからない。


でー、ITRONには、実は、ヒープっぽいものの仕様がある。cre_mpl、cre_mpf、get_blkなんかのメモリプールとか呼ばれるものがそれだ。
こいつらは、うまーく使えば、断片化を防いだりリアルタイム性を損ねないようにしたりするような機能を持ってそうな感じがする。
わざわざ似たような機能のAPIを用意しているのは、なんか、そこらへんをうまく対応するためなんだろう。


だがしかし、驚くべきことに、これらのAPIの情報をwebで手に入れることは非常に難しい。
仕様は手に入れることができる(http://www.sakamura-lab.org/TRON/ITRON/SPEC/mitron4-j.html)ので、全く無いとは言えないんだけど、これらのAPIはどう違うのか、どんな状況で、どうやって使い分ければよいのか、と、いったようなノウハウっぽいものは、webで見つかりそうな気がしない。
google:itron cre_mpl
google:itron cre_mpf
google:itron get_blk


こういう、webにおける情報の少なさというのは、ITRONに限らず、組込み全体の傾向と言えるかもしれない。
例えば、ハードウェアの規格とか。こういう資料なんか、「英語の仕様、あとInterface。以上。」と、いったようなものは、USB、CF、PCIATA、CardBus、などとすぐに思い付くだけでもゴロゴロと存在している。(http://wiki.osdev.info/ は非常に貴重な資料だと思うのだけど、良くも悪くもWikiっぽさが…)
あと、上のヒープの話もそうだけど、組込みっぽいノウハウの話。瞬電の話とか、フラッシュロムの使いかた(これは非常に良いんだけど、Interfaceに掲載されたものだし…)、変なコンパイラの使いかた、EC++…


と、いうような話から、「日本の組込みは誇り」みたいな空気はあるんだけど、その実態は、非常に日本的というか、ソフトウェアの流れの先端からはやや方向違いのところにあったりして、というような話に持っていきたかったのだけど、言葉が思い付かないので、今日はやめとく。次回に続…かないかもしれない。


あと、「要求をもとに、正しい仕様をつくって、それをもとに工数を見積る。設計を正しく行い、コーディングは誰が書いても同じようにすることによって品質は上がる」というような話は、疑う余地の無い常識というか、それが最も正しい方法であると全員が信じてる(本当に信じてるのですよ)とか、まあ、なんだ。