2010年6月19日土曜日

MicroBlaze上でFreeRTOSを動作させるための作業2

昨日は手始めに既存のFreeRTOSデモプロジェクトをXilinx Platform Studio 12.1で開いてみました。
このデモプロジェクトはかなり以前のバージョンのツールで作られているようです。
期待通り変換は大失敗し、プロジェクトファイルとして成立しませんでした。
聞くところによるとMicroBlazeのPLB(Processor Local Bus)の仕様もどこかの時点で変更されたとのことです。

適当にホイホイやってもうまくいかなそうなので現状を整理してみました。

まず、デモプロジェクトで使用しているボードはXilinxが提供しているML403というなかなか豪華なボードです。まぁ、使うのはUSARTやGPIO(LED点灯用)、それにプロセッサのタイマーなので気にしなくても良いでしょう。

次に使っているペリフェラルを見てみます。
先日のプロジェクト変換リポートから情報を抽出します。

矢印が付いているものは見つかったハードウェアコアのバージョンが更新されているもの。
?が付いているものは見つからないハードウェアコアです。

lmb_bram_if_cntlr 1.00.b -> 2.10.b
opb_mdm?
opb_v20 1.10.c -> 1.10.d
microblaze 4.00.a -> 7.30.a
opb_uartlite?
opb_gpio?
opb_intc?
opb_timer?
intc 1.00.c -> 2.00.a
tmrctr 1.00.b -> 2.00.a
gpio 2.00.a -> 2.00.a
uartlite 1.00.b -> 2.00.a
bram 1.00.a -> 2.00.a
opbarb 1.02.a -> 1.12.b

opb_xxxという不明なハードウェアコアがあります。
調べたところOPB(On-chip Peripheral Bus)というのはPLB以前のプロセッサ内部バスのようです。
opb_xxxはハードウェアコア(ペリフェラル)とバスの接続モジュール(ブリッジ?)のようです。
既にこの仕様はPLB(Processor Local Bus)に代わったものですので無視して良さそうです。

ハードウェアコアとしてブロックラムも使用しているようです。
以前のMicroBlazeはRAM周辺の扱いも異なっていたのでしょう。
最近のバージョンではプロセッサが使用するラムはプロセッサの作成時に定義するようになっています。
この点からブロックラムのハードウェアコアについても気にすることはなさそうです。

FreeRTOSをMicroBlazeへポーティングするのに必要となるのは
・MicroBlaze本体
・割り込みコントローラ
・カーネルティック用タイマー
・USART
です。

これから考えるとハードウェアとしては
・microblaze 7.30.a
・intc 2.00.a
・tmrctr 2.00.a
・usartlite 2.00.a
だけ用意すれば事足りそうです。


戦略としては
・空のプロジェクトを作成する。
・ハードウェアコアを追加する。
・ハードウェアテストコードを作成する。
・ハードウェア動作を確認する。
・FreeRTOSのコードを移植する。
という方向で行きたいと思います。

こんな感じで調べながらのポーティング。
探偵か何かになった気分でなかなか楽しいです。

0 件のコメント:

コメントを投稿