Using The I.Mx RT Flexram: Application Note
Using The I.Mx RT Flexram: Application Note
1. Introduction Contents
This document describes the flexible memory array 1. Introduction........................................................................ 1
available on the i.MX RT 4-digit crossover processors. 2. FlexRAM memory ............................................................. 2
2.1. FlexRAM configuration .......................................... 3
The first part of the document summarizes all features 2.2. FlexRAM memory controllers .............................. 11
of the FlexRAM memory, including: 2.3. FlexRAM module-related clocks and clock gates . 17
2.4. FlexRAM power domains ..................................... 18
• Configuration of the bank array. 2.5. FlexRAM interrupt ............................................... 19
3. Using FlexRAM features in the application ..................... 21
• Memory type size definition. 3.1. FlexRAM configuration demonstration on iMX
• Available memory controllers. RT1050 devices .................................................................. 21
4. Revision history ............................................................... 31
• Power domains and clocks.
• Interrupt request generation.
The second part of this document demonstrates the
FlexRAM configuration usage on a specific application
use case. It shows the things to consider in the
application to fully utilize the FlexRAM memory in the
i.MX RT1050 MCU. It focuses on the application
memory capability from the performance point of view
in a normal application runtime, as well as the low
power feature implementation.
2. FlexRAM memory
FlexRAM is a highly configurable and flexible RAM memory array. This memory array contains
memory banks which can be independently configured to be accessed by different type of interfaces,
such as I-TCM (Instruction-Tightly Coupled Memory), D-TCM (Data- Tightly Coupled Memory), or
AXI (system). The memory bank can act as an ITCM, DTCM, or OCRAM memory. There can also be
power domains assigned to a dedicated FlexRAM bank or a group of banks, which can potentially
reduce the power consumption in the low-power modes.
non-configurable RAM
Bank (n+15)
Bank (n+14)
Bank (n+13)
Bank (n+3)
Bank (n+2)
Bank (n+1)
Bank n
...
encode
R Bank x
Arbiter
system AXI
retention
64-bit
W e.g. PDRET
I-TCM
ITCM Bank z
64-bit
controller partial 1
e.g. PDRAM1
FlexRAM Bank z+
memory map ECC
IPG registers
32-bit controller FlexRAM
(SEC-DEC) config MUXs
IRQ
FlexRAM
IOMUXC_GPR_GPR3 FUSE
NVIC or or
FLEXRAM_CTRL IOMUXC_GPR_GPR17
(+ IOMUXC_GPR_GPR18)
NOTE
On some i.MX RT 4-digit devices, an additional OCRAM (which is not
part of the FlexRAM) can be found. It is used to increase the total on-chip
memory size. This kind of memory is not considered in this document as it
is not included in the FlexRAM array.
NOTE
All the dashed blocks in Figure 1 are parts that are chip-specific. It means
that they do not have to be available on all devices.
Bank
OCRAM [kB]
ITCM [kB]
DTCM [kB]
IOMUXC_GPR_GPR17
(FLEXRAM_BANK_CFG)
(binary)
0x6D0 [19:16]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0b0000
01010101101011111111101001010101 O O O O D D I I I I D D O O O O 256 128 128
1 0b0001
01010101010110101111101001010101 O O O O D D I I D D O O O O O O 320 128 64
2 0b0010
01011010111111111111111110100101 O O D D I I I I I I I I D D O O 128 128 256
3 0b0011
01010101010101011110101010010101 O O O D D D D I O O O O O O O O 352 128 32
4 0b0100
01010101010111111111101001010101 O O O O D D I I I I O O O O O O 320 64 128
5 0b0101
01010101010101011111101001010101 O O O O D D I I O O O O O O O O 384 64 64
6 0b0110
01010101111111111111111110100101 O O D D I I I I I I I I O O O O 192 64 256
7 0b0111
11111111111111111111111111110101 O O I I I I I I I I I I I I I I 64 0 448
8 0b1000
01011010101011111111101010100101 O O D D D D I I I I D D D D O O 128 256 128
9 0b1001
01010101101010101111101010100101 O O D D D D I I D D D D O O O O 192 256 64
10 0b1010
10101010111111111111111110100101 O O D D I I I I I I I I D D D D 64 192 256
11 0b1011
10101010101010101010101010100101 O O D D D D D D D D D D D D D D 64 448 0
12 0b1100
01010101010101011111111101010101 O O O O I I I I O O O O O O O O 384 0 128
13 0b1101
01010101010101010101011110010101 O O O D I O O O O O O O O O O O 448 32 32
14 0b1110
01010101010111111111111111110101 O O I I I I I I I I O O O O O O 256 0 256
15 0b1111
01010101010101010101010101010101 O O O O O O O O O O O O O O O O 512 0 0
O - OCRAM, D - DTCM, I - ITCM
FUSE
IOMUXC_GPR_GPR17 +
FlexRAM
IOMUXC_GPR_GPR18 Bank
Configuration OCRAM DTCM ITCM
(FLEXRAM_BANK_CFG_LOW +
Value [kB] [kB] [kB]
FLEXRAM_BANK_CFG_HIGH)
(binary)
0xC70 [5:0] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Due to fact that the RT1170 devices also support ECC, there is an additional bank array dedicated for
storing the ECC cipher based on the FlexRAM configuration and ECC enable. This bank array contains
additional 16 memory banks (8 kB each), so in total it is 128 kB. If the ECC is not enabled, it can be
freely used to store normal data, as in the 128-kB OCRAM. If the ECC is enabled, an adequate portion
of this array is dedicated to store the ECC cipher. For example, see row 9. If the ECC for both the
OCRAM and TCM is disabled, the whole 128-kB memory space can be used to store data as in the
OCRAM. If the TCM ECC is enabled, only 16 kBs can be used for the OCRAM data and the remaining
112 kBs are used to store the ECC cipher for the TCM (64 kBs for the DTC ECC cipher and 48 kBs for
the ITCM ECC cipher). If the OCRAM ECC is enabled, 112 kBs of memory can be used for the free
OCRAM data and the rest is used for the ECC cipher of the FlexRAM-configured OCRAM (64 kBs). If
both the OCRAM ECC and the TCM ECC are enabled, then there is no free space for the OCRAM data
and the whole memory space is dedicated for the ECC cipher proportional to the FlexRAM
configuration (1:4).
memory. This can potentially cause access to undefined memory space, which does not
necessarily lead to problems during the reconfiguration, but later on in the application run.
• The data/code in the re-configured banks are not required for the application program flow
anymore.
• The re-configured banks should be re-filled with the initializer data/code before access (no
stack/heap is expected there).
• The addressable memory spaces have changed (avoid potential application pointers to access that
space).
However, it still represents a continuous address space in the device memory map (see Table 5).
Table 7. Example of memory type address space
Size Address space
Memory type
[kB] start end
OCRAM 128 0x20200000 0x20220000
D-TCM 128 0x20000000 0x20020000
I-TCM 256 0x00000000 0x00040000
This feature enables you to configure the memory type and its size in accordance with the application
needs from the power consumption aspect (see next part for more details).
NOTE
The OCRAM cannot be configured to 0 kB due to the boot ROM code
requirements. The 64 KB of OCRAM represents the minimum system
requirement. The ITCM or DTCM can be configured to 0 KB (see also the
possible static configuration shown in Table 1).
The Arm Cortex-M7 specifications require the size of ITCM/DTCM to be
a power-of-two number, which can conflict with the FlexRAM
configuration capability (see configurations 7, 10, 11 in Table 1). Avoid
access to the empty RAM space configured by the corresponding
FlexRAM configuration or use the recommended way, which defines the
size of the TCM as a power-of-two number and reflect that by writing into
the appropriate field in IOMUXC_GPR_GPR14->CM7_CFGxTCMSZ (it
will update the CM7_xTCMCR accordingly).
If the requested ITCM/DTCM size is 0 Bytes, disable the corresponding TCM in
IOMUXC_GPR_GPR16->INIT_xTCM_EN before configuring the size to 0 Bytes in
IOMUXC_GPR_GPR14->CM7_CFGxTCMSZ.
If a dedicated RT device also supports the ECC, then there is an additional memory bank array dedicated
for this feature. On RT1170, there is a 128-kB ECC-dedicated array. Each 32-kB bank within the
configurable part of the FlexRAM (explained above) has its dedicated 8-kB ECC bank. For example,
bank0 of the configurable FlexRAM array has its ECC cipher backup storage in bank16 of the
ECC-dedicated FlexRAM (see Table 4 versus Table 5). This array can be freely used as a normal
OCRAM data storage until the ECC function is enabled. If the ECC function is enabled, then a
proportional size (1/4 on RT1170) of the configurable FlexRAM array has its portion in the ECC cipher
storage. For example, a 64-kB OCRAM, configured via a configurable FlexRAM array, has its 16-kB
ECC cipher storage if the OCRAM ECC is enabled. The proportional part of the configurable FlexRAM
array, which does not have the ECC enabled, can be freely used for normal OCRAM data. For example,
if there is 128 kBs of ITCM and 128kBs of DTCM and no ECC TCM is enabled, then there are 64 kBs
freely available for normal OCRAM data.
instructions on the I-TCM or accesses the data on the D-TCM). You may choose between two modes for
both the read and write accesses:
• Fast access mode (default)—the access is expected to be done in one cycle.
• Wait access mode—the access is expected to be done in two cycles.
This can be done by enabling/disabling the appropriate access bit in the TCM control register
(TCM_CTRL) in the FlexRAM memory map:
• TCM_RWAIT_EN:
— 0—fast mode selected.
— 1—wait mode selected.
• TCM_WWAIT_EN:
— 0—fast mode selected.
— 1—wait mode selected.
The TCM controllers also include the dynamic clock gate control to reduce the power consumption
when nothing is accessed.
— OCRAM_WRADDR_PIPELINE_EN, OCRAM_WRDATA_PIPELINE_EN,
OCRAM_RADDR_PIPELINE_EN, or OCRAM_RDATA_WAIT_EN in
FLEXRAM_CTRL
After performing changes in the OCRAM control field, it is recommended to wait until the corresponded
OCRAM status bit changes from 1 to 0 (1 means that the configuration is changed, but not applied yet):
• on RT10xx: OCRAM_STATUS[19:16]
• on RT117x: FLEXRAM_OCRAM_PIPELINE_STATUS
NOTE
It is expected that the code which is changing and then checking the
corresponding OCRAM status bit cannot be executed from the OCRAM.
ECC
Controller
Code / Data
write data
write Encode 64-bit / 32-bit 512kB configurable FlexRAM array
(16x32kB)
NOTE
The xxxx chain in the register description above represents OCRAM,
ITCM, D0TCM, or D1TCM.
Table 8. ECC syndrome look-up tables for 64-bit (OCRAM/ITCM) and 32-bit (D0TCM/D1TCM) data
64-bit LUT (OCRAM / ITCM) 32-bit LUT (D0TCM / D1TCM)
Syndrome value Error bit Syndrome value Error bit Syndrome value Error bit
0xc1 0 0x46 32 0x61 0
0x43 1 0x91 33 0x51 1
0x9e 2 0x86 34 0x19 2
0x83 3 0x61 35 0x45 3
0x15 4 0x49 36 0x43 4
0x4c 5 0x98 37 0x31 5
0x4a 6 0x89 38 0x29 6
0x8c 7 0x68 39 0x13 7
0x31 8 0x32 40 0x62 8
0x1c 9 0x34 41 0x52 9
0xa2 10 0x07 42 0x4a 10
0xe0 11 0xc8 43 0x46 11
0x51 12 0x92 44 0x32 12
0x2c 13 0xa8 45 0x2a 13
0xc2 14 0xa7 46 0x23 14
0xd0 15 0x54 47 0x1a 15
0x19 16 0xa1 48 0x2c 16
0x1a 17 0xd9 49 0x64 17
0x26 18 0x25 50 0x26 18
0xea 19 0xf8 51 0x25 19
0x29 20 0x0e 52 0x34 20
0x94 21 0x0b 53 0x16 21
0x16 22 0x8a 54 0x15 22
0x64 23 0x2a 55 0x54 23
0x37 24 0x52 56 0x0b 24
0xa4 25 0x45 57 0x58 25
0x0d 26 0x13 58 0x1c 26
0xc4 27 0x85 59 0x4c 27
0x75 28 0x62 60 0x38 28
0x38 29 0x70 61 0x0e 29
0x4f 30 0x23 62 0x0d 30
0x58 31 0xb0 63 0x49 31
error interrupt is enabled. for more details, see Section 2.5, “FlexRAM interrupt”. If it is enabled, then it
is possible to recognize the following:
• The adress offset on which the multi-bit error happened (64-bit (OCRAM/ITCM) or 32-bit
(D0TCM/D1TCM) aligned). It can be obtained by reading the
xxxx_ECC_MULTI_ERROR_ADDR registers.
• The data (64-bit (OCRAM/ITCM) or 32-bit (D0TCM/D1TCM) size) in which the multi-bit error
happened. It can be obtained by reading the xxxx_ECC_MULTI_ERROR_DATA registers.
• On the ITCM/DTCM (also available in the xxxx_ECC_MULTI_ERROR_INFO register), you
can obtain the following:
— Privilege level of access.
— Which master resource generated the access (instruction fetch/data access/debugger, and
so on).
— Size:
– For ITCM, it is fixed to 64 bits.
– For D0TCM/D1TCM, it is fixed to 32 bits.
— Access type:
– Read access.
– Write access.
NOTE
The information of the ECC syndrome does not matter when a multi-bit
error happens.
W/R
size
TCM only
NOTE
The RT10xx devices, such as RT101x, RT1015, RT102x, RT105x, and
RT106x, do not include the ECC support.
Table 9. FlexRAM-module-related clocks and their gates
Clock Source peripheral interface / registers access clock
Device Clock Name Derived source Default Maximum Default Maximum Clock gate
Name Name
clock name frequency frequency frequency frequency
flexram_clk module clock core_clk 396 MHz 600/528/400 MHz ipg_clk_root 96 MHz 150 MHz CCM_CCGR3[CG9] - flexram_clk_en
RT10xx
ocram_clk ocram_exsc_aclk_exsc axi_clk 99 MHz 150/132/100 MHz ipg_clk_root 96 MHz 150 MHz CCM_CCGR3[CG14]- ocram_clk_en
flexram_clk module clock core_clk 400 MHz 996 MHz ipg_clk_root 200 MHz 240 MHz LPCG0 - clk_enable_flexram
RT117x
ocram_clk ocram_exsc_aclk_exsc axi_clk 200 MHz 240 MHz ipg_clk_root 200 MHz 240 MHz LPCG25 - clk_enable_ocram
RT1060/RT1064 - Bank0-Bank15 -
RT1020 Bank0-Bank7 - -
RT1015 Bank0-Bank3 - -
RT1010 Bank0-Bank3 - -
The FlexRAM clock (flexram_clk) is the main clock the module is clocked by and is derived from the
Arm core clock (core_clk). The TCMs are fed by the same source clock. The on-chip RAM controller is
fully synchronized to the system AXI interface and the clock for the OCRAM (ocram_clk) is derived
from axi_clk and further divided accordingly. The last are the peripheral registers related to the
FlexRAM module that are accessed by the peripheral bus (IPG interface). This part is clocked by the
peripheral bus clock.
NOTE
The interconnect bus fabric (NIC) is a bus matrix which interconnects the
bus masters (like ARM AXIM, DMA, USB, ENET, uSDHC) with the bus
slaves (OCRAM controller, FlexSPI module, SEMC, and so on). It runs at
a lower frequency than the Arm Cortex-M7 core frequency. The OCRAM
runs at the same frequency as the interconnect bus fabric. The NIC master
port versus the slave port clock ratio is chip-specific. On RT10xx devices,
it is an integer number and it is fixed to 1:4. It means that if the Cortex-M7
clock is 600 MHz, then the slave port bus clock is limited to 150 MHz. On
RT117x, it is an asynchronous conversion and its maximum frequency is
from 996 MHz to 240 MHz.
RT1060/RT1064 - Bank0-Bank15 -
RT1020 Bank0-Bank7 - -
RT1010 Bank0-Bank3 - -
NOTE
The RT117x devices utilize just one power domain for all banks of the
FlexRAM. It uses an isolation power switch to switch the FlexRAM off.
This feature is controllable via the FlexRAM PDRAM0 power gate enable (PDRAM0_PGE) bit in the
general power controller interface control (GPC_CNTR) register. When this bit is set (default), the
FlexRAM banks assigned to this domain keep their content even when the Arm core is powered down.
When it is cleared, the PDRAM0 power domain is powered off when the Arm core is powered down.
• OCRAM_MAGIC_ADDR:
— The OCRAM_MAGIC_ADDR field represents a 16-bit address within the OCRAM
memory mapped address space.
— OCRAM_WR_RD_SEL:
0 – sets the interrupt generation for read access.
1 – sets the interrupt generation for write access.
• DTCM_MAGIC_ADDR:
— The DTCM _MAGIC_ADDR field represents a 16-bit address within the DTCM
memory mapped address space.
— DTCM _WR_RD_SEL:
0 – sets the interrupt generation for read access.
1 – sets the interrupt generation for write access.
• ITCM_MAGIC_ADDR:
— The ITCM _MAGIC_ADDR field represents a 16-bit address within the ITCM memory
mapped address space.
— ITCM _WR_RD_SEL:
0 – sets the interrupt generation for read access.
1 – sets the interrupt generation for write access.
compiler/linker outputs. The size of the ITCM/DTCM/OCRAM memory depends on how much
code/constant data/static data/stack memory the application requires. It is similar to the static
configuration described at the beginning of this document.
• Store the last four images’ processing data results (4 x 30-KB data buffers).
• The last processed image data results must be available in the memory after waking up from the
stop mode.
• There are three additional data buffers in the same raw image data format which are displayed
sporadically (application idle state).
Assumption: during the project development, the application software requires:
Table 14. Requirements
CODE DATA
120 KB 889 KB
application static data (initialized, non-initialized, or initialized to zero) is handled only by the core and
15 KB in size. The best location for such data is the DTCM.
There are also three 150-KB constant data buffers (for example, static LCD images) which are displayed
sporadically, based on the stand-by mode calling in the application. These buffers can be stored in an
external type of memory.
Using the stack usage analyses (for example, www.iar.com/support/resources/articles/mastering-stack-
and-heap-for-system-reliability), the stack size is estimated to be 4 KB (10 % addition included). It is
recommended to place the stack into the DTCM because it is accessed only by the core.
In this case, it is considered to think about moving 15 KB of static data from the DTCM to the OCRAM
(or ITCM). It depends on:
• OCRAM: the DMA channels loading the OCRAM controller write (CSI)/read (LCD) via the
system AXI bus.
• ITCM: access to static data is not required in low-power modes.
• The effect on the overall performance.
If the approach of moving data from the DTCM to the OCRAM does not significantly affect the overall
performance, then it can be done and fits into the FlexRAM memory configuration (see Table 5). If the
approach cannot be applied due to performance degradation, then the solution of moving data to the
ITCM can be applied.
Table 12 shows the case when the application static data are moved from the DTCM memory to the
OCRAM memory, considering no significant effect on performance.
Table 17. Application memory section requirements when application static data moved to OCRAM
Both memory re-configurations (Table 12 and Table 13) fit into the i.MX RT1050 FlexRAM and all 16
banks are used.
Table 18. Application memory section requirements when application static data moved to ITCM
The number of banks for each memory type configuration are known. However, it is still not clear what
bank number uses what configuration. This depends on the application needs from the low-power view,
because there are three different power domains used for the corresponding bank/bank groups. The
features of the i.MX RT1050 FlexRAM power distribution (power sub-domains) can be utilized in the
low-power modes of application. In this case, the application requires to retain the data of the last
processed imaged data buffer. The size of this buffer (30 KB) fits into the size of one bank (32 KB). The
FlexRAM bank 0 is in the PDRET power domain and keeps the data content down to the suspend mode.
The FlexRAM bank 0 can be used to store the last image processed result data buffer content. The
remaining memory is used only in the normal run power mode.
Table 14 shows detailed configuration of FlexRAM bank for this example. The figures 2-4 shows also
the starting addresses and the content of the individual memory configuration.
0x2000 0000
Result buffer 1
Bank1
DTCM
Result buffer 2
Bank2 PDRAM0
Result buffer 3
Bank3
Stack
0x2002 0000
Figure 4. DTCM memory addresses, configuration, content, and appropriate power domain
0x0000 0000
ITCM PDRAM0
Critical code
Bank5 (ISRs)
Figure 5. ITCM memory addresses, configuration, content, and appropriate power domain
0x2020 0000
Bank6
PDRAM0
Bank7
Bank9
OCRAM
Bank10
Bank11
PDRAM1
Bank12
Image buffer 1
Bank13
Bank14
Figure 6. OCRAM memory addresses, configuration, content, and appropriate power domain
As shown in Table 1, there is no valid FlexRAM configuration available in the fuse default setting
aligned with the configuration required by this use case. The static configuration cannot be utilized here.
However, it is possible to configure the FlexRAM by the run-time configuration approach defined in
Section 2.1, “FlexRAM configuration”. This configuration must be done before the start-up code calls
the static data and r/w code initialization.
The final FlexRAM configuration value will be 0x55555FAA:
IOMUXC_GPR_GPR17 Bank
OCRAM D-TCM I-TCM
(FLEXRAM_BANK_CFG) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
01010101010101010101111110101010 D D D D I I O O O O O O O O O O 320 128 64
NOTE
Consider the release (no debug) target configuration of the application
project when compiling.
Reset_Handler
CPSID I ; Mask interrupts
LDR R0, =0xE000ED08
LDR R1, =__vector_table
STR R1, [R0]
LDR R2, [R1]
MSR MSP, R2
#ifdef FLEXRAM_CFG_ENABLE
; NOTE: Initial stack pointer (SP) presented in vector table must be set to correct value considering the following FlexRAM re-configuration
; NOTE: If the value presented in vector table is not considering correct stack it then the stack pointer (SP) must be re-configured here, e.g.:
DSB
ISB
LDR R0,=__reconfig_init_sp ; load initial value of stack pointer into R0 2.
MSR MSP, R0 ; re-initialize stack pointer by new value
LDR R0,=__iomux_gpr17_adr ; load IOMUXC_GPR17 register address to R0
MOV32 R1,__flexram_bank_cfg ; move FlexRAM configuration value to R1
STR R1,[R0]
DSB
ISB
LDR R0,=__iomux_gpr16_adr ; load IOMUXC_GPR16 register address to R0
LDR R1,[R0] ; load IOMUXC_GPR16 register value to R1 3.
ORR R1, R1, #4 ; set corresponding FLEXRAM_BANK_CFG_SEL bit
STR R1,[R0] ; store the value to IOMUXC_GPR16 (user defined FlexRAM cfg enabled)
DSB
ISB
#ifdef FLEXRAM_ITCM_ZERO_SIZE
LDR R0,=__iomux_gpr16_adr ; load IOMUXC_GPR16 register address to R0
LDR R1,[R0] ; load IOMUXC_GPR16 register value to R1
4.
AND R1, R1, #0xFFFFFFFE ; clear corresponding INIT_ITCM_EN bit
STR R1,[R0] ; store the value to IOMUXC_GPR16 (disable ITCM)
DSB
ISB
#endif
#ifdef FLEXRAM_DTCM_ZERO_SIZE
LDR R0,=__iomux_gpr16_adr ; load IOMUXC_GPR16 register address to R0
LDR R1,[R0] ; load IOMUXC_GPR16 register value to R1
AND R1, R1, #0xFFFFFFFD ; clear corresponding INIT_DTCM_EN bit
STR R1,[R0] ; store the value to IOMUXC_GPR16 (disable DTCM)
DSB
ISB
#endif
#ifdef FLEXRAM_XTCM_POWER_OF_TWO_SIZE
LDR R0,=__iomux_gpr14_adr ; load IOMUXC_GPR14 register address to R0 5.
LDR R1,[R0] ; load IOMUXC_GPR14 register value to R1
MOVT R1, #0x0000 ; clear upper halfword of IOMUXC_GPR14 register
MOV R2, #__flexram_itcm_size
MOV R3, #__flexram_dtcm_size
LSL R2, R2, #16
LSL R3, R3, #20
ORR R1, R2, R3
STR R1,[R0] ; store the value to IOMUXC_GPR14
DSB
ISB
#endif
#endif
LDR R0, =SystemInit
BLX R0 6.
CPSIE I ; Unmask interrupts
LDR R0, =__iar_program_start
BX R0
512k
The software implementation can be similar to the previous case, excluding point 5 and the
power-of-two size consideration.
4. Revision history
Table summarizes the changes done to this document since the initial release.
Table 20. Revision history
Revision number Date Substantive changes
0 10/2017 Initial release
Added Section 3.1.3, “Software
1 08/2018 implementation”. Added support for
additional RT10xx devices.
2 09/2019 Added RT1010-based features.
3 01/2021 Added RT1170-based features.
While NXP has implemented advanced security features, all products may be subject to
unidentified vulnerabilities. Customers are responsible for the design and operation of
their applications and products to reduce the effect of these vulnerabilities on
customer’s applications and products, and NXP accepts no liability for any vulnerability
that is discovered. Customers should implement appropriate design and operating
safeguards to minimize the risks associated with their applications and products.
NXP, the NXP logo, NXP SECURE CONNECTIONS FOR A SMARTER WORLD,
COOLFLUX, EMBRACE, GREENCHIP, HITAG, I2C BUS, ICODE, JCOP, LIFE VIBES,
MIFARE, MIFARE CLASSIC, MIFARE DESFire, MIFARE PLUS, MIFARE FLEX,
MANTIS, MIFARE ULTRALIGHT, MIFARE4MOBILE, MIGLO, NTAG, ROADLINK,
SMARTLX, SMARTMX, STARPLUG, TOPFET, TRENCHMOS, UCODE, Freescale, the
Freescale logo, AltiVec, C 5, CodeTEST, CodeWarrior, ColdFire, ColdFire+, C Ware,
the Energy Efficient Solutions logo, Kinetis, Layerscape, MagniV, mobileGT, PEG,
PowerQUICC, Processor Expert, QorIQ, QorIQ Qonverge, Ready Play, SafeAssure, the
SafeAssure logo, StarCore, Symphony, VortiQa, Vybrid, Airfast, BeeKit, BeeStack,
CoreNet, Flexis, MXC, Platform in a Package, QUICC Engine, SMARTMOS, Tower,
TurboLink, and UMEMS are trademarks of NXP B.V. All other product or service names
are the property of their respective owners. Arm, AMBA, Arm Powered, Artisan, Cortex,
Jazelle, Keil, SecurCore, Thumb, TrustZone, and μVision are registered trademarks of
Arm Limited (or its subsidiaries) in the EU and/or elsewhere. Arm7, Arm9, Arm11,
big.LITTLE, CoreLink, CoreSight, DesignStart, Mali, Mbed, NEON, POP, Sensinode,
Socrates, ULINK and Versatile are trademarks of Arm Limited (or its subsidiaries) in the
EU and/or elsewhere. All rights reserved. Oracle and Java are registered trademarks of
Oracle and/or its affiliates. The Power Architecture and Power.org word marks and the
Power and Power.org logos and related marks are trademarks and service marks
licensed by Power.org.