ソフト・マクロのCPUでLinuxを動かす(前編) ――FPGAベースのボード・コンピュータを設計する

川岡 圭一

tag: 組み込み 半導体

技術解説 2004年8月16日

● メモリ

 メモリ・マップを表1に示します.SDRAMを中間部分に独立させたのは,SDRAMの容量が変化してもほかの機能に影響を与えないようにするためです.

1)FPGA内蔵メモリ(BRAM)

 ブート・プログラムはFPGAの内蔵メモリ(BRAM;Block RAM)に格納します.FPGAコンフィグレーション・データといっしょに再プログラミングを行い,容易に復旧することできるためです.なんらかの原因で動作に問題が起こっても,再コンフィグレーションすることでブート・プログラムを復活させることができます.

 容量は4Kバイトとしました.最近のFPGAは内蔵メモリの容量が増えてきていますが,プログラムを納めるには十分とは言えません.ブート・プログラムのための容量を必要以上に指定すると,同じBRAM領域を使って構成するキャッシュ・メモリやFIFOメモリなどの容量が減ってしまいます.分配の際には注意が必要です.

 BRAMには,FPGAのコンフィグレーション時に初期値が書き込まれるので,ROMのように使用できますが,実体はSRAMであり,書き換えが可能です.システム起動完了後は,先頭の32バイト(割り込みベクタ領域)以外であれば,ユーザ・プログラムのために使用することもできます.

2)フラッシュ・メモリ

 フラッシュ・メモリには,Linuxシステムやアプリケーション・プログラム,FPGAコンフィグレーション・データを格納しています.

 LinuxカーネルとユーザランドおよびFPGAコンフィグレーション・データのために2Mバイトを割り当てています.したがって,残りの2Mバイトは自由に使用できます.

 FPGAとのインターフェースとしてOPB EMC(External Memory Controller)を使用しています.

表1  メモリ・マップ

アドレス
機能ブロック
接続デバイス
0x0000 0000 ~ 0x0000 0FFF
BRA
0x8000 0000 ~ 0x80FF FFF
OPB SDRAM コントローラ SDRAM
0xFF00 0000 ~ 0xFF7F FFFF
OPB EMC フラッシュ・メモリ
0xFFE0 0000 ~ 0xFFEF FFFF
OPB EMC LANコントローラ
0xFFFF 1000 ~ 0xFFFF 10FF
OPBタイマ
0xFFFF 2000 ~ 0xFFFF 20FF
OPB UART Lite
0xFFFF 3000 ~ 0xFFFF 30FF
OPB割り込みコントローラ
0xFFFF A000 ~ 0xFFFF A0FF
OPB GPIO
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日