MPSoCでFreeRTOSを動かしてみよう!

FreeRTOSの概要

今回は、MPSoCのArm Cortex-R5上でFreeRTOSを動かしてみましょう! FreeRTOSはその名の通りフリーなリアルタイムOSです。2017年末にAWSのオープン ソース プロジェクトになり、ライセンスはMITになりました。Armを始め多くのCPUをサポートし、TCP/IP、TLS、ファイルシステム等のミドルウェア エコシステムもあります。 FreeRTOSについてもっと知りたい人は、Webサイトを読んでね!
FreeRTOS

Xilinx Software Development Kitで新規プロジェクトを作成してみよう

FreeRTOSのビルドには、Xilinx Software Development Kitを使用します。Xilinx Software Development Kit、略してXSDK。なんだかカッコイイですね!XSDKの詳細やダウンロードについては、XilinxのWebサイトを読んでね!※ダウンロードには、Xilinxのアカウントが必要です。
Xilinx Software Development Kit (XSDK)

XSDKを起動しワークスペースを設定すると次の画面になります。Create Application Projectをクリックするとプロジェクト作成画面が表示されます。

図

次の通り設定してください。Hardware Platformはお使いのボードに合わせて選択してください。設定できたら、Next>をクリックしてください。

図

アプリケーションのテンプレートを選択します。まずはHello Worldを動かしてみましょう。選択したらFinishをクリックしてください。

図

BSPを設定してみよう

BSPが生成されます。BSPの設定を行うため、右クリックしてメニューが表示されたら、Board Support Package Settingsをクリックします。

図

BSPの設定画面が表示されたら、freertos10_xilinxを選択します。

図

stdin/stdoutをデフォルトのpsu_uart_0からpsu_uart_1に変更します。psu_uart_0はArm Cortex-A53が使用するためです。

図

この画面でFreeRTOSのカーネルのコンフィグレーションもできます。

図

設定が完了したら、Re-generate BSP Sourcesをクリックし、BSPを生成し直します。

図

First Stage Boot Loaderをビルドしてみよう

次にFirst Stage Boot Loader (FSBL)をビルドします。File -> New -> Application Projectをクリックして、プロジェクト作成画面を表示します。次の通り設定し、Next>をクリックします。

図

Zynq MP FSBLを選択し、Finishをクリックします。

図

FSBLが生成されたら、右クリックしてメニューを表示させ、Create Boot Imageをクリックします。

図

Addをクリックします。

図

File pathにaps_freertos_appプロジェクトのDebugディレクトリーの下にあるelfファイルを設定し、Destination CPUはR5 0を選択し、OKをクリックします。

図

Boot image partitionsにイメージが追加されていることを確認し、Create Imageをクリックします。

図

SDカードをボードへ挿してブートしてみよう

FSBLプロジェクトのbootimageディレクトリーの下にあるBOOT.binをSDカードの最初のFATパーティションへ格納します。UART0はArm Cortex-A53上のFSBLの出力、UART1はArm Cortex-R5上のFreeRTOSの出力です。

図

プロジェクト作成時にlwipのテンプレートを選択すれば、すぐにTCP/IPが使えます。みなさんも遊んでみてください!

図

図