やりたいこと整理

前にも書いたけど、今作りたいものを再整理する。

あるいみ備忘録か・・・

・ローカルCPUはMicroBlaze

 MicroBlazeを使う理由はgccでコンパイルできるからである。

 コンパイラから作るとなると、大きな労力になるので使えるものは使ったほうがいい。

 MicroBlazeはそのうち時間ができたら命令互換CPUを作ることにする。

・ローダのサポート

 標準でELFローダをサポートする。

 アプリケーションをFPGAのBlockRAMに最初からロードしておくとなると、運用時にアプリケーションを入れ替えるとかできなくなる。

 アプリケーションを実行できる以上は運用時にアプリケーションを入れ替えたくなるだろう。

 独自のローダを作りこんでも良いが、gccで出力されるELF実行ファイルをそのまま読み込んで展開できる方が、アプリケーションをgccでコンパイル後にハードウェアに合わせてファイル変換していく面倒な作業が発生する。

 そういう手間は極力、省きたい。

・ローカルキャッシュ

 ローカルキャッシュを備えて、これをうまく実装することでローカルCPU(MicroBlaze)自体を複数実装することができる。

 アプリケーションも何個目のローカルCPUのアプリケーションを作っているとか、ローダやメモリ管理で何個目のローカルCPUが・・・、云々の特別な制御をしなくてもマルチCPUに対応することができる。

 ある意味、アプリケーションを書けばローカルCPUを複数持ってることでアプリケーションでいうマルチプロセスやマルチスレッドのように扱える。

 ただし、メモリの扱いで気をつけなければいけない。

・LinuxとかOSは汎用CPUに任せる。

 最近はARMが載っているCPUであれば、簡単にLinux対応の組込みシステムが作れるようになっている。

 TI、NXP、ATMEL、freescaleなどのARM搭載チップを使用すればメーカもSDKを準備しているのでそのまま使うことができる。

 私のおすすめはTIのAMxxxx系のCPUである。

 各社メーカの評価ボードもあるけど、BeagleBorad(AM37xx)、BeagleBone(AM33xx)やPandaBorad(OMAP4460)とか、フリーのように出回っていてメーカの評価ボードよりも安く手に入るので使っている人も多いだろう。

 回路図なども参照できるので基板から作るときも参考にできる。