FC2カウンター FPGAの部屋 MicroBlaze MCSをISE WebPACKから使用する3

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

MicroBlaze MCSをISE WebPACKから使用する3

今回は前回までと異なり、ISE12.4にインストールされてるmb-gcc を使ってMicroBlaze のソフトウェアをコンパイルする。cygwinからmb-gccを起動してMicroBlaze MCSを動作することができた。
ISEのgccソフトウェアをコピーして使っている。”カスタム設計の MicroBlaze”さんか”ISE WebPACKでも使用できるMicroBlazeコアとGCCコンパイラ”辺りを参照。

ポイントは mb-gcc のオプションに -mlittle-endian を付けることだった。ビッグエンディアンだと思っていたのだが、リトルエンディアンだったのかな?AXI4はリトルエンディアンと教えてもらった。Spartan-6なので、AXI4バスでリトルエンディアンなのか?
LogiCORE IP MicroBlaze Micro Controller System (v1.0) の21ページ Table 6: Internal MicroBlaze Parameters Settings によると、C_ENDIANNESSパラメータはデフォルト1で、Select endianness (1 = Little endian)だそうだ。ビッグエンディアンにも出来るということだろう。C_I_AXIはデフォルト0でPLBバスのようだ)

・Cygwinでの実行例。Makefile は、”ひでみのアイデア帳”のMakefileを参考にさせていただいた。
MB_MCS_79_120206.png

(追加)Makefile を貼っておきます。

# PROJECT: Build New MicroBlaze
# ----------------------------------------------------------------------
#
# Copyright (C) 2011-2012 H.Ishihara, http://www.aquaxis.com/
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# For further information please contact.
#   http://www.aquaxis.com/
#   info(at)aquaxis.com or hidemi(at)sweetcafe.jp

TARGET=Atlys_LED_test.elf
SRCDIR=./
OBJDIR=./

SRCS=    $(SRCDIR)Atlys_LED_test.c
OBJS=    $(OBJDIR)Atlys_LED_test.o

CC=mb-gcc
CFLAGS=-O2 -mlittle-endian -Wl,-Map=Atlys_LED_test.map
LDFLAGS1=-Wl,-s

$(TARGET) : $(OBJS)
    $(CC) $(CFLAGS) $(LDFLAGS1) $(OBJS) -o $(OBJDIR)$(TARGET) $(LDFLAGS2)

$(OBJDIR)Atlys_LED_test.o: $(SRCDIR)Atlys_LED_test.c $(INCS)
    $(CC) $(CFLAGS) -c $< -o $@

clean:
    rm -f Atlys_LED_test.elf $(OBJDIR)*.o Atlys_LED_test.map


・Atlys_LED_test.elf が出来ていた。
MB_MCS_80_120206.png

・Atlys_LED_test.elf を MB_MCS_led_test2フォルダの下にコピーして、Project Navigator のTCL ConsoleタブのCommand> で”microblaze_mcs_data2mem Atlys_LED_Test.elf”を実行する。
MB_MCS_82_120206.png

・これでISimを起動して、シミュレーションを行うとLED_out[7:0] の途中で 55 に変化したので、動作している。前回のシミュレーション結果と異なるのは、FITのカウント値に100000000をセットしてあるからだ。
MB_MCS_81_120206.png

・ビットファイルをAtlysにダウンロードしたら、LED+1が表示された。。。成功。。。

(2012/02/07:追加)
PITのPIT_InterruptとPIT_Toggleも動いていました。カウンタの値は読めないようです。
MB_MCS_83_120207.png

この時のソフトウェアのAltys_LED_Test.cを下に貼っておきます。

// 
// Atlys_LED_test.c
//
// AltysボードのLEDを1秒ごとに+1するソフトウェア
// 初めは割り込みを使わないで実行する
//

#define    GPO1_ADDR            0x80000010
#define GPI1_ADDR            0x80000020
#define PIT1_PRELOAD_ADDR    0x80000040
#define PIT1_COUNTER_ADDR    0x80000044
#define PIT1_CONTROL_ADDR    0x80000048

#define COUNT_VALUE            100

int main()
{
    unsigned int b_GPI1 = 0;
    unsigned int c_GPI1 = 0;
    unsigned int led = 0x55;
    
    *(volatile unsigned int *)(PIT1_PRELOAD_ADDR) = COUNT_VALUE; // 100MHzで1秒
    *(volatile unsigned int *)(PIT1_CONTROL_ADDR) = 0x3// Timer Enable, Auto Reload
    
    *(volatile unsigned int *)(GPO1_ADDR) = led;
    
    while(1){
        c_GPI1 = 0x2 & (*(volatile unsigned int *)(GPI1_ADDR));
        if (c_GPI1 != b_GPI1){
            *(volatile unsigned int *)(GPO1_ADDR) = led++;
        }
        b_GPI1 = c_GPI1;
    }
}


  1. 2012年02月06日 21:06 |
  2. MicroBlaze MCS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/2058-3bea2c3f
この記事にトラックバックする(FC2ブログユーザー)