Linux に平行してベアメタルプログラムを走らせる のバックアップソース(No.3)
更新- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- バックアップ を表示
- 電気回路/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 だけでリアルタイム処理ができるのかもしれないけれど、 そういう話にはなっていないようで。 * 資料 [#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 これを読めばいいのかも。 * 概要 [#ya93739b] ** OpenAMP [#s36acb3e] https://github.com/OpenAMP/open-amp CPU0 で走る Linux アプリから FreeRTOS や ベアメタル アプリを CPU1 で立ち上げたり、 そのリモートアプリとの間で通信をしたり、リモートアプリに Linux の資源を使わせたり するためのライブラリとのことで、まさに欲しかった機能と言えます。 - remoteproc ホストからリモートのプロセスを制御する - RPMsg ホストとリモートとの間での通信手段を提供する OpenAMP は petalinux と、libmetal ライブラリの上に成り立っています。 ** libmetal [#nc69c479] linux, freertos, baremetal で共通に使えるライブラリ API を提供し、 デバイスへのアクセスや割り込み制御、メモリ確保、その他ユーティリティ機能を提供するもの のようです。 ** petalinux [#rdedf389] オープンソースの Xilinx Linux とは別物。Xilinx が開発している。 https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html ここから petalinux-v2016.4-final-installer1.run のようなファイルを落とし、 実行権限を付けて arm のコンソールで実行する。登録は必要だが無料。 https://japan.xilinx.com/support/answers/68370.html によれば カーネルバージョンは 4.6 だそうだ。 ここでは VirtualBox 内の Debian9 stretch に arm のエミュレータを入れて実行してみる。 まず [[電気回路/z-turn/Linuxの設定]] の流れで Linux ルートファイルシステムを作る。 カーネルが 4.6 なので jessie ではなく stretch を入れた。
Counter: 20462 (from 2010/06/03),
today: 1,
yesterday: 4