Skip to content

Latest commit

 

History

History
56 lines (49 loc) · 4.91 KB

memory_map.org

File metadata and controls

56 lines (49 loc) · 4.91 KB

Memory Map

以下に、SC OBC FPGAのメモリマップを示します。

./images/MemoryMap.svg

FieldAddress SpaceComment
Instruction Tightly Coupled Memory (Block RAM)0x0000_0000 - 0x0000_7FFFCFGITCMEN[0] is 1
HRMEM (SRAM)0x0000_0000 - 0x003F_FFFFCFGITCMEM[0] is 0
Main AXI Bus0x4000_0000 - 0x4EFF_FFFF
- QSPI Controller (Configuration Flash)0x4000_0000 - 0x4000_FFFF
- QSPI Controller (Data Store Flash)0x4010_0000 - 0x4010_FFFF
- QSPI Controller(FRAM)0x4020_0000 - 0x4020_FFFF
- CAN Controller0x4040_0000 - 0x4040_FFFF
- HRMEM Register0x4050_0000 - 0x4050_FFFF
Low Performance IP Bus0x4F00_0000 - 0x4FFF_FFFF
- System Register0x4F00_0000 - 0x4F00_FFFF
- UART Lite (Console Interface)0x4F01_0000 - 0x4F01_FFFF
- External I2C Master0x4F03_0000 - 0x4F03_FFFF
- System Monitor0x4F04_0000 - 0x4F04_FFFF
- General Purpose Timer0x4F05_0000 - 0x4F05_FFFF
Mission(UDL) Bus0x5000_0000 - 0x5FFF_FFFF
HRMEM Memory Mirror0x6000_0000 - 0x603F_FFFF
Coretex-M3 Internal Private peripheral bus0xE000_0000 - 0xE003_FFFF
- ITM0xE000_0000 - 0xE000_0FFF
- DWT0xE000_1000 - 0xE000_1FFF
- FPB0xE000_2000 - 0xE000_2FFF
- SCS0xE000_E000 - 0xE000_EFFF
Coretex-M3 External Private peripheral bus0xE004_0000 - 0xE00F_FFFF
- TPIU0xE004_0000 - 0xE004_0FFF
- ETM0xE004_1000 - 0xE004_1FFF
- External PPB0xE004_2000 - 0xE00F_EFFF
- ROM Table0xE00F_F000 - 0xE00F_FFFF

CPUが使用する メインメモリーは アドレス 0x00000000にマッピングされています。 メインメモリーは、ITCM (Instruction Tightly Coupled Memory)と HRMEM (High Reliability Memory)を選択する事ができます。 ITCMと HRMEMの切り替えは Code Memory Select Registerの ITCMENビットによって行います。

ITCMは FPGAの Block RAMで構成されています。 このメモリは FPGAの Configurationデータ (Bit Streamデータ)にプログラムを格納する事で、FPGAの Configuration後 すぐに CPUが動作します。 HRMEMは On Boardの SRAMで構成されています。 このメモリを使用する場合には、電源の投入後にデータを書き込んで使用する必要があります。 HRMEMは IPコアの内部に SRAMのデータが放射線によって破壊された場合に訂正する仕組みを実装しているため、通常はこのメモリを使って動作します。

./images/itcm_hrmem_select.png

FPGAの Configuration後、アドレス 0x00000000に ITCMがマッピングされています。 ITCMには プログラムローダーを書き込んで使用します。 プログラムローダーは NOR Flash Memoryに書き込まれているプログラムを HRMEMに転送するために使用します。 HRMEMのアドレス 0x60000000番地は、アドレス 0x00000000番地のミラーとなっており、プログラムローダーによって 0x60000000に書き込まれたデータは、メインメモリーを HRMEMに切り替えた時に 0x00000000から読み出す事ができます。 プログラムローダーが HRMEMへのプログラムを書き込む最後の手順として、Code Memory Select Registerの ITCMENビットを 0に書き込みます。 ITCMENビットの書き込みにより、メインメモリーを切り替えるとシステムにリセットがかかり、切り替えたメモリのアドレス 0x00000000から書き込まれたデータで CPUが動作します。