以前、FreeRTOSを調査したときは、RISC-Vのターゲットとして調査したものだった。ところが、調査を進めると普通にFreeRTOSはZynqチップにも移植されており、Cortex-A9でも動作させることが出来るらしい。
今回はRTOSの勉強の最初のステップとして、ZedBoardのメインCPUであるARM Cortex-A9上でFreeRTOSを動作させるステップについて調査する。
1. FreeRTOS ソースコードのダウンロード
FreeRTOSのソースコードは、以下の公式ウェブサイトからダウンロードできる。
上記のページから、ダウンロードサイトをクリックし、"Click to download the latest official release from SourceForge"をクリックするとSourceForgeのサイトに接続されるのでそれでダウンロードできる。
ダウンロードしたらzipファイルを回答する。自己解答形式で圧縮されている。
2. ZC702用のディレクトリをXilinx SDKで開く
提供されているデモディレクトリはZC702用のものだが、ZedBoard向けにも動作させることが出来る。
FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\
がそのディレクトリだ。
XilinxのSDKを開いて、当該ディレクトリをインポートする。今回は、Xilinx SDK 2016.3を利用した。
Import Projectで、上記のZC702用のディレクトリを指定する。自動的にプロジェクトが認識され、取り込まれる。
Finishをクリックすると、プロジェクトが取り込まれた作業画面になる。
3. ZedBoardにFreeRTOSをダウンロードし、動作させる
まず、TeraTermか何かでシリアルコンソールを用意しておく。ZedBoardに接続されているポートで、転送速度は115200を選択しておく。
Xilinx SDKに戻り、Project ExplorerからRTOSDemo
を右クリックし、Debug As
→Debug Configuration
を選択する。
そのままDebug
ボタンでデバッグが開始される。いったんmain()
の中でブレークポイントにより停止するのだが、それを確認してからResume
を実行する。
TeraTermを確認すると、FreeRTOSが立ち上がったのが確認できた。
ためしにtask-stats
などと入力すると、タスク一覧らしきものが出てきた。これはps aux
的なものだろうか?