FreeRTOS Community Contributionsのサイトに,Nios II EDS 11.0の移植版が
アップされていることに気付き,一度は挫折したFreeRTOSに再挑戦してみました.
Nios updated port and demo for Nios EDS 11.0 and up
説明を読むと,外部割込みの処理も対応しているようですので,ちょっと期待.
まず,インストーラのrepositoryをzipファイルでダウンロードします.
github: EngineeringSpirit/FreeLwIP-Nios-II
次に,FreeRTOSのV7.1.0をダウンロードします.
sourceforge: FreeRTOS Real Time Kernel
これらを適当なフォルダに展開後,インストーラのトップディレクトリに
FreeRTOS_srcというフォルダを新規に作成します.そして,その中に,
FreeRTOSのSourceとDemoのフォルダをコピーします.
トップディレクトリのalt-freertos-lwip-install.batを実行すると
インストールが開始されます.
batの中身を見てみると,Quartusのインストールディレクトリを自動で探して
追加のファイルをコピーしています.複数のバージョンをインストールしている
場合は,最近使用したバージョンにインストールされます.
インストール先のバージョンを指定したいのであれば,batファイルにアドレスを
直接書き込むのが良いでしょう.
インストール中,何やらメッセージが表示されますが,どうなれば成功なのか
良く判りません.とりあえず,エラーや警告が出なければ大丈夫?
インストールが終了したら,Nios II SBT for Eclipseを起動し,BSPをビルドしてみます.
ターゲットとなるSOPCには,jtag_uartとsys_clk_timerが必要になります.
今回は,MicroC/OS-IIのテストで作成したものを流用しました.
まず,FileメニューからNew -> Nios II Board Support Packageを選びます.
SOPCファイルを選ぶと,CPUの名前が自動的に検出されます.
BSP typeには,プルダウンメニューからReal Time Engineers Ltd FreeRTOS 7.1.0を
選択します.
(クリックで拡大)
その後,Finishボタンをクリックし,BSPを生成し,ビルドします.
次は,アプリケーションを作成します.
FileメニューからNew -> Nios II Application and BSP from Templateを選択します.
Templateには,とりあえずHello Worldを選びました.
(クリックで拡大)
BSPには,先ほどビルドしたものを選びます.
(クリックで拡大)
これでコンパイルしてみると,vApplicationStackOverflowHookが見つからないと
エラーが出ます.
(クリックで拡大)
FreeRTOSのソースコードを探しても,この関数が見つかりません.
Demoを参照してみると,どうやらユーザが定義しなければいけない関数のようです.
そこで,メインのhello_world.cにとりあえず何もしない関数を定義しました.
これで,コンパイルも通り,Hello from Nios II!のメッセージが確認できました.
次にタスクを追加しようとしたのですが,あまり良いサンプルが見つかりません.
それなりにポピュラーなRTOSかと思ったのですが,そうでもない?
それでも何とか下記のサイトを参考に,一定間隔で動作するタスクを追加し,
FreeRTOSの動作が確認できました.
picfun:FreeRTOSの使い方
マイコン徹底入門:RTOS編
プロジェクトをアップしておきますので,興味のある方はお試しください.
http://www.sensorcomm.co.jp/osqzss/fpga/namuru/DE0_Nano_FreeRTOS.zip
FreeRTOSを動かしてみての感想は,全体的にごちゃごちゃしていてソースが読みづらい…
個人的に好みじゃないので,結局使わない気がします.
アップされていることに気付き,一度は挫折したFreeRTOSに再挑戦してみました.
Nios updated port and demo for Nios EDS 11.0 and up
説明を読むと,外部割込みの処理も対応しているようですので,ちょっと期待.
まず,インストーラのrepositoryをzipファイルでダウンロードします.
github: EngineeringSpirit/FreeLwIP-Nios-II
次に,FreeRTOSのV7.1.0をダウンロードします.
sourceforge: FreeRTOS Real Time Kernel
これらを適当なフォルダに展開後,インストーラのトップディレクトリに
FreeRTOS_srcというフォルダを新規に作成します.そして,その中に,
FreeRTOSのSourceとDemoのフォルダをコピーします.
トップディレクトリのalt-freertos-lwip-install.batを実行すると
インストールが開始されます.
batの中身を見てみると,Quartusのインストールディレクトリを自動で探して
追加のファイルをコピーしています.複数のバージョンをインストールしている
場合は,最近使用したバージョンにインストールされます.
インストール先のバージョンを指定したいのであれば,batファイルにアドレスを
直接書き込むのが良いでしょう.
インストール中,何やらメッセージが表示されますが,どうなれば成功なのか
良く判りません.とりあえず,エラーや警告が出なければ大丈夫?
インストールが終了したら,Nios II SBT for Eclipseを起動し,BSPをビルドしてみます.
ターゲットとなるSOPCには,jtag_uartとsys_clk_timerが必要になります.
今回は,MicroC/OS-IIのテストで作成したものを流用しました.
まず,FileメニューからNew -> Nios II Board Support Packageを選びます.
SOPCファイルを選ぶと,CPUの名前が自動的に検出されます.
BSP typeには,プルダウンメニューからReal Time Engineers Ltd FreeRTOS 7.1.0を
選択します.
(クリックで拡大)
その後,Finishボタンをクリックし,BSPを生成し,ビルドします.
次は,アプリケーションを作成します.
FileメニューからNew -> Nios II Application and BSP from Templateを選択します.
Templateには,とりあえずHello Worldを選びました.
(クリックで拡大)
BSPには,先ほどビルドしたものを選びます.
(クリックで拡大)
これでコンパイルしてみると,vApplicationStackOverflowHookが見つからないと
エラーが出ます.
(クリックで拡大)
FreeRTOSのソースコードを探しても,この関数が見つかりません.
Demoを参照してみると,どうやらユーザが定義しなければいけない関数のようです.
そこで,メインのhello_world.cにとりあえず何もしない関数を定義しました.
これで,コンパイルも通り,Hello from Nios II!のメッセージが確認できました.
次にタスクを追加しようとしたのですが,あまり良いサンプルが見つかりません.
それなりにポピュラーなRTOSかと思ったのですが,そうでもない?
それでも何とか下記のサイトを参考に,一定間隔で動作するタスクを追加し,
FreeRTOSの動作が確認できました.
picfun:FreeRTOSの使い方
マイコン徹底入門:RTOS編
プロジェクトをアップしておきますので,興味のある方はお試しください.
http://www.sensorcomm.co.jp/osqzss/fpga/namuru/DE0_Nano_FreeRTOS.zip
FreeRTOSを動かしてみての感想は,全体的にごちゃごちゃしていてソースが読みづらい…
個人的に好みじゃないので,結局使わない気がします.
※コメント投稿者のブログIDはブログ作成者のみに通知されます