Linux に平行してベアメタルプログラムを走らせる のバックアップ差分(No.14)
更新- バックアップ一覧
- 現在との差分 を表示
- ソース を表示
- バックアップ を表示
- 電気回路/zynq/Linux に平行してベアメタルプログラムを走らせる へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
[[公開メモ]] #contents * CPU でリアルタイム処理をしたい [#p86d9575] UI や通信に関する処理を Linux で行いつつ、~ リアルタイム性能の必要な処理を別途動かしたい。 Zynq には CPU が2つあるので、1つを Linux に、 1つをベアメタルに使えば完全な並列処理ができるはず? http://www.wiki.xilinx.com/Real-Time+Linux によれば、~ IRQ Affinity という機能で、Linux で受け取る IRQ を特定の CPU に回すという方法もあるらしい。そちらの CPU を常時 Idle にしておき、 割り込み処理中の追加割り込みを禁止できるなら、Linux だけでリアルタイム処理ができるのかもしれないけれど、 そういう話にはなっていないようで。 ** まだまだ道半ばです [#b66245bd] 結構大変・・・ ** 資料 [#w2117929] シンプルな AMP : 2 つの Zynq SoC プロセッサ上で動作する Linux およびベアメタルシステム~ https://japan.xilinx.com/support/documentation/application_notes/j_xapp1078-amp-linux-bare-metal.pdf 上記に対する最新の補遺~ http://www.wiki.xilinx.com/XAPP1078+Latest+Information むしろこっちが最新か?~ http://www.wiki.xilinx.com/Multi-OS+Support+(AMP+%26+Hypervisor) FPGAマガジンの16に FreeRTOS をメインに動かして、 後から Linux を起動する方法が書かれている。 OpenAmp~ https://github.com/OpenAMP/open-amp ~ http://www.wiki.xilinx.com/OpenAMP これを読めばいいのかも。 ** OpenAmp を使えるとよさそう [#ya93739b] https://github.com/OpenAMP/open-amp Xilinx の OpenAmp というしくみを使うと、 CPU0 で走る Linux アプリから FreeRTOS や ベアメタル アプリを CPU1 で立ち上げたり、 そのリモートアプリとの間で通信をしたり、リモートアプリに Linux の資源を使わせたり できるとのことで、まさに欲しかった機能と言えます。 - OpenAmp の機能 -- remoteproc ホストからリモートのプロセスを制御する -- RPMsg ホストとリモートとの間での通信手段を提供する OpenAmp は petalinux を前提としていて、libmetal に依存しているのだそうです。 ただ、試してみると petalinux のビルドシステムは重すぎて使いづらい気が・・・ どうするべきか。 * petalinux [#ma53223d] Xilinx がメンテナンスしている Linux ディストリビューション。 開発環境、ブートローダ、カーネル、ソフトウェアパッケージ、すべてがこれでまかなえる。 ただし設定、コンパイル、デプロイにものすごく時間がかかるので、 そのままの形で開発に使うには向かないのかも。 - [[電気回路/zynq/Petalinux のビルド]]~ とりあえず標準の形でビルドするところまで~ ~ - [[電気回路/zynq/Petalinux のカスタマイズ]]~ いろいろカスタマイズして開発環境を整えた内容 * libmetal [#nc69c479] https://github.com/OpenAMP/libmetal linux, freertos, baremetal で共通に使えるライブラリ API を提供し、 デバイスへのアクセスや割り込み制御、メモリ確保、その他ユーティリティ機能を提供するもの のようです。 - Linux user space (based on UIO and VFIO support in the kernel) - RTOS (with and without virtual memory) - Bare-metal environments となっているので、metal_xxx という共通の名前の関数ではあるものの、 環境によって実装を変え、適切な API 呼び出しに変換してくれる、ということみたい。 ** petalinux ではチェックボックス一つでインストール可能? [#x0e2da29] petalinux-config -c rootfs で選択できるので、 チェックするだけでインストールできルっぽい? ただこれでやるとユーザープロジェクトもすべて petalinux のビルドシステムを使わなければならなくなってややこしい。 GitHub で公開されているソースから単独でインストールできないものか、 と四苦八苦しているのがこちらです。~ >> [[電気回路/zynq/libmetal のインストール]] ← あんまり意味が無いことが後から判明 ** そうじゃなくて Xilinx SDK から使うべき [#u1313afb] libmetal も openamp も、Xilinx SDK の GUI から使わないととてもじゃないけど 使いこなせない感じ。 以降、そっちでやってみる。 * Xilinx SDK から OpenAMP を使う [#oa16b34b] リポジトリは https://github.com/OpenAMP/open-amp にあるけれど、 Xilinx SDK から使う分にはそのあたりを気にする必要はないようです。 (以下未稿)
Counter: 20462 (from 2010/06/03),
today: 1,
yesterday: 4