2020/03/10

ultra96 (Zynq) arm cortex r5 でfree rtosを動かす

ZYNQ   

ultra96のarm cortex r5で、free rtosを動かす。

最初に、ZYNQのHW側ですが、ultra96のチュートリアルをそのまま実行して、export Hardwareをして、hdfファイルと、bitstreamを準備しておく。

https://www.element14.com/community/docs/DOC-91053/l/01ultra96vivadointro2018201zip

SW側は、XSDKを使って、Hello Worldを作っていく。
HW Platform→BSP→Hello worldの順で3つ作る。

HW Platformは、チュートリアル2と同じ方法になる。
https://www.element14.com/community/docs/DOC-91052/l/02ultra96vivadohelloworld2018201zip

File→New→Project→Xilinx→Hardware PlatformSpecificationを選択して、Next。
Project名は適当に、「hw_platform_0」とする。Target Hardwre Specificationは、チュートリアル1で作ったHWを、「Browse」ボタンで指定して、Finishする。
HWは、xxxx.sdkというフォルダ名の中に、*.hdfがあるはずだ。
なければ、チュートリアル01をもう一度実行しよう。

次に、BSPを作成する。
File→New→Board Support Packageを選択する。

Project Name = デフォルト  (OSを指定すると名称が変更される)
Use Default location = チェック
Hardware Platform = デフォルト(↑で作ったのが指定されている)
CPU = psu_cortexr5_0
Board Support Package OS = freertos10_xilinx

で、Finishする。

Setting画面がでてくるので、Overview→freertos10_xilinxで、UARTを変更する。
stdin→ psu_uart_1
stdout→psu_uart_1

そして、OKにする。

次に、Hello Worldのプロジェクトだ

File→New→ Application Projectを選択する。

Project name=適当
Use default location = チェック
OS Platform = freertos10_xilinx
Hardware Platform = デフォルト(↑で作ったのが指定されている)
Processor= psu_cortexr5_0
Language=C
Board Support Packge = Use existing freertos10_xilinx_bsp_0(↑で作ったのが指定されている)

で、Nextする。FreeRTOS Hello Worldを指定されているのを確認して、Finishする。

で、完成です。

動作確認は、ボードの電源を入れて、電源Onボタンを押して、
XSDKのSDK TerminalにCOMポートの出力を設定しておき、

XSDKの↓のボタンをおして、bitstreamをProgramボタンを押して転送します。

転送できたら、HelloWorldのプロジェクトを右クリックして、Run As→Launch on Hardware (System Debuffer)で実行します。

以下、ターミナルの結果です。
———————————-
Hello from Freertos example main
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
Rx task received string from Tx task: Hello World
FreeRTOS Hello World Example PASSED

———————————-

以下がプロジェクトファイルになります。

https://github.com/y38y38/fpga/tree/master/basic_ultra96

« »