RT1170のFlexRAMモジュールは、512KBのFlexRAMと128KBのFlexRAM ECCの合計640KB分のメモリがあります。それぞれ16バンクあり、
- Bank0~15がFlexRAMで、1バンク(32KB)ごとにITCM/DTCM/OCRAMのいずれかへ割り当てるか設定できます。
- Bank16~31がFlexRAM ECCで、1バンク(8KB)でOCRAMとして使用するか、ECCを有効にした場合ユーザからアクセスできない領域になります。
ITCM/DTCM/OCRAMに割り当てられた領域のうち、最も小さいバンクから順に、リファレンスマニュアルのTable 3-1に記載されているメモリマップの小さいアドレスから順に詰めて連続して割り当てされます。
- ITCM: 0x0000_0000
- DTCM: 0x2000_0000
- OCRAM: 0x2036_0000
なお、Table 3-1には0x2036_0000はORCAM M7 (FlexRAM ECC)で、0x2038_0000はORCAM M7 (FlexRAM)と記載されていますが間違いです。FlexRAMにOCRAMを割り当てた場合、0x2036_0000から割り当てられます。
- 45~46ページ:Table 3-1. System memory map (CM7)
例えば、リファレンスマニュアルのTable 39-2のITCMに割り当てられているのはBank4, 5, 12, 13のため、割当は下記の通りとなります。
- 0x0000_0000 ~ 0x0000_7FFF Bank4
- 0x0000_8000 ~ 0x0000_FFFF Bank5
- 0x0001_0000 ~ 0x0001_7FFF Bank12
- 0x0001_8000 ~ 0x0001_FFFF Bank13
同様にDTCMに割り当てられているのは、Bank6, 7, 14, 15のため、割当は下記の通りです。
- 0x2000_0000 ~ 0x2000_7FFF Bank6
- 0x2000_8000 ~ 0x2000_FFFF Bank7
- 0x2001_0000 ~ 0x2001_7FFF Bank14
- 0x2001_8000 ~ 0x2001_FFFF Bank15
最後に、OCRAMに割り当てられているのはBank0~3、8~11ですが、他にFlexRAM ECCのBank16~31もあるため、FlexRAMのOCRAMに続いてFlexRAM ECCが割り当てられ、下記の通りとなります。
- 0x2036_0000 ~ 0x2036_7FFF Bank0
- 0x2036_8000 ~ 0x2036_FFFF Bank1
- 0x2037_0000 ~ 0x2037_7FFF Bank2
- 0x2037_8000 ~ 0x2037_FFFF Bank3
- 0x2038_0000 ~ 0x2038_7FFF Bank8
- 0x2038_8000 ~ 0x2038_FFFF Bank9
- 0x2039_0000 ~ 0x2039_7FFF Bank10
- 0x2039_8000 ~ 0x2039_FFFF Bank11
- 0x203A_0000 ~ 0x203A_1FFF Bank16
- 0x203A_2000 ~ 0x203A_3FFF Bank17
- 0x203A_4000 ~ 0x203A_5FFF Bank18
- 0x203A_6000 ~ 0x203A_7FFF Bank19
- 0x203A_8000 ~ 0x203A_9FFF Bank20
- 0x203A_A000 ~ 0x203A_BFFF Bank21
- 0x203A_C000 ~ 0x203A_DFFF Bank22
- 0x203A_E000 ~ 0x203A_FFFF Bank23
- 0x203B_0000 ~ 0x203B_1FFF Bank24
- 0x203B_2000 ~ 0x203B_FFFF Bank25
- 0x203B_4000 ~ 0x203B_3FFF Bank26
- 0x203B_6000 ~ 0x203B_5FFF Bank27
- 0x203B_8000 ~ 0x203B_7FFF Bank28
- 0x203B_A000 ~ 0x203B_9FFF Bank29
- 0x203B_C000 ~ 0x203B_BFFF Bank30
- 0x203B_E000 ~ 0x203B_DFFF Bank31