メディア

マイコンにおけるメモリ外付け(メモリ増設)方法Q&Aで学ぶマイコン講座(59)(2/5 ページ)

» 2021年01月08日 10時00分 公開

メモリの外部拡張機能

 多くのマイコンにメモリの外部拡張機能が搭載されています。その仕様や名称、使い方などはマイコンによって異なります。したがって、各マイコンのマニュアルやアプリケーションノートを参照する必要があります。

 ここでは、STM32F7シリーズのSTM32F745マイコンを例に説明します。

 STM32F745のCPUには、Arm Cortex-M7(以下、Cortex-M7)が搭載されています。図2(a)に示すように、Cortex-M7の扱えるメモリ空間は0x00000000〜0xFFFFFFFFの4Gバイトですが、実際のマイコンに4Gバイトのメモリを搭載することは物理的に不可能です。そこで、ターゲットとするアプリケーションをベースとした必要最低限の実メモリを搭載します。例えばSTM32F745ではフラッシュメモリを1Mバイト、SRAMを320Kバイト搭載しています。しかし、システムを開発する際にプログラムコードが予定よりも大きくなったり、RAM領域が不足したりする場合があります。そのような場合は、メモリの外部拡張機能を使って、プログラムコード領域やRAM領域を増設できます。

図2:「Arm Cortex-M7」と「STM32F745」のFSMCのメモリ空間

 図2(a)にCortex-M7オリジナルのメモリ空間を示します。各領域は0.5Gバイトまたは1Gバイトで区切られています。アドレスの小さい方から、0.5Gバイトごとにプログラムコード用、内蔵SRAM用、周辺機能のメモリマップドレジスタ用になっています。最も大きな領域はCortex-M7専用の領域になっていて、その間のアドレス0x60000000〜0xDFFFFFFFがメモリの外部拡張機能用に割り当てられています。それぞれ外部RAM用と外部デバイス用に1Gバイト単位で区切られています。

 STM32F745では、この外部拡張機能用の領域をFMC用とQSPI用に割り当てています。FMCの扱うアドレス空間内は全部で6つのバンクに分かれていますが、そのうち2つのバンクは使用されていないため、有効なバンクは4つになります。バンク1はNORフラッシュ/PSRAM/SRAMメモリ、バンク3はNANDフラッシュ、SDRAMバンク1と2はSDRAMにそれぞれ対応しています。バンク3は、QSPIと共用です。

 FMCを使って外部のSRAMにアクセスする場合、バンク1に割り当てられている0x60000000〜0x6FFFFFFFに外部のSRAMがみえることになります。外部につながれた単体のSRAMのアドレスは0x000から始まり、実際には0x60000000台ではありませんが、FMCがアドレス変換を行い、CPUから見ると仮想的に0x60000000台に配置されます。また、QSPIを使用した場合は0x90000000台に配置されます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.