HOME

terasic DE0基板 - NiosU/eのROMブート

NiosII/eをEPCS4に書いておき、新規のNiosプログラムは
FlashROMからBootできるようになりました。とりあえずやり方のまとめです。

開発環境
QuartusU10.0sp1
NiosU10.0 Software Build Tools for Eclipse
 (niosはインストールしてからsp1にupdateしておいてください)

T.QuartusUによるNiosU/eの作成

@サンプルプロジェクトDE0_NIOS_SDCARDのオリジナルを新しく
 コピーしてください。

terasicのサイトから
DE0 CD-ROM & Control Panel 2010-05-24をダウンロードして
これの中のDE0_NIOS_SDCARDを使用しました。

Aオリジナルは NiosU/f なので、SOPC Builderを開いて
cpuをクリックして NiosU/e に変更し、
Reset VectorとException VectorのMemoryをcfi_flashに変更してFinishします。
Reset VectorのMemoryをcfi_flashとしException VectorのMemoryをsdramに変更してFinishします。
GenerateしてからSOPC BuilderをExit。

(2010/11/05追記:Exception VectorはSDRAMにしたほうがよいです。
理由についてはブートコピアがSDRAMにアプリケーションを転送して、SDRAM
からプログラムが走るからです。下記の
ブートコピアの説明をみてください)

BQuartusUに戻って、DeviceのDevice and Pin Optionの
ConfigurationカテゴリーのConfiguration Deviceを
EPCS4に変更voltageはAutoのまま。

Cコンパイルして、pofが作成されます。


DProgrammerでpofファイルをEPCS4に書き込みます。(PROGスイッチで書き込んで、RUNに戻しておきます)


U.
NiosII Software Build Tools for Eclipseでプログラム新規作成してDE0へ書き込み


@File-New-NiosUApprication and BSP from Templateを選択。
SOPC Infomation File は DE0_NIOS_SDCARDフォルダ
にあるDE0_SOPC.sopcinfoを選択。
Project nameは任意。たとえばProject NameをTestとすると
後で使用するHEXファイルはTest.elfとなります。

templateはHello World Smallを選択してFinish。

ACプログラムの変更(hello_world_small.c)

以下のプログラムはBTN0,BTN1,BTN2ボタンを押す
と対応するLED0,LED1,LED2が消灯するというものです。

#include "sys/alt_stdio.h"

#define LED_BASE 0x40
#define BTN_BASE 0x60

int main()
{
    alt_putstr("Hello from Nios II!\n");

    /* Event loop never exits. */
    while (1){
        *(volatile long *)LED_BASE = *(volatile long *)BTN_BASE;
    }

    return 0;
}



BProjectをBuildする。


CNiosU−Flash Programmer
File-NewからSOPC Infomation Fileとして、
DE0_NIOS_SDCARDフォルダ
にあるDE0_SOPC.sopcinfoを選択。


Dここで、DE0とconnectionしていることを確認。
認識していなければ、Connectionボタン後
1、2回Refreshボタンを押すと認識することがあります。


EAddボタンで、先につくったTest.elfファイルを選択。


FStartボタンを押すと書き込みがおこなわれます。

以上です。
これでNiosU/eはECPS4に書かれていて、NiosのソフトはFlashROM
に格納されていると思います。

 

ブートコピアの説明

デフォルトブートコピアについて簡単に説明すると、
NiosのCPUリセットベクターがCFIフラッシュメモリを指していて
.textコードがCFIフラッシュメモリ以外を指していた場合、たとえば.textコードはSDRAMを
指していた場合は、elf2flashがNiosアプリケーションとコピー用プログラム(ブートコピア)を
一緒にしてCFIフラッシュメモリへ書き込みます。

NiosCPUがリセットされると、リセットベクターが指すCFIフラッシュメモリのブートコピアが
起動して、CFIフラッシュメモリ内のNiosアプリケーションをSDRAM等にコピーしてSDRAMの
.textコードへジャンプして実行する形になっているようです。

参考にさせてもらったサイト(外部サイト)

Sim's blogさんのNIOSを使ってみました(1)NIOSを使ってみました(2)

DIGITALFILTER.COMさんのNiosIIプロセッサ入門編Flash Controllerを使ってみよう

marseeさんのblog FPGAの部屋 コンテンツまとめサイト

 感謝です。ありがとうございます。

Alteraのオンライン資料(外部サイト)

●SOPC Builder
     SOPC Builder
     SOPC Builder サポート

●NiosU
     オンライン資料: Nios II プロセッサ
     NiosUブート方法の応用 (AN458)

           ペリフェラルの日本語解説(ただし本家Japanにはリンクがない?)古い?
     http://www.altera.co.jp/literature/hb/nios2/n2cpu_nii5v1_j.pdf 

●CycloneV
     オンライン資料: Cyclone III デバイス

 その他サイト(外部サイト)

Tech Village : SOPC Builderを活用した基本I/O&SDRAM制御回路の設計

 

inserted by FC2 system