以前、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的なものだろうか?
