前にも書いたけど、今作りたいものを再整理する。
あるいみ備忘録か・・・
・ローカル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)とか、フリーのように出回っていてメーカの評価ボードよりも安く手に入るので使っている人も多いだろう。
回路図なども参照できるので基板から作るときも参考にできる。