Multi Core Handling Guide in Traveo II: Associated Part Family
Multi Core Handling Guide in Traveo II: Associated Part Family
Intended audience
This document is intended for anyone using Traveo II family .
Table of contents
Associated part family..................................................................................................................... 1
About this document ....................................................................................................................... 1
Table of contents ............................................................................................................................ 1
1 Introduction .......................................................................................................................... 3
2 Consideration for CPU Start Up ................................................................................................ 5
2.1 Example of Step Up CPU Clock Frequency ............................................................................................. 5
2.1.1 Configuration ..................................................................................................................................... 5
3 Consideration for Resource Access ........................................................................................... 8
4 Communicating between CPUs ............................................................................................... 10
4.1 CPU Synchronization ............................................................................................................................ 10
4.1.1 Implementation Example Operation of Synchronization between CPUs ..................................... 12
4.1.2 Use case ............................................................................................................................................ 12
4.1.3 Configuration ................................................................................................................................... 14
4.2 Mutual Exclusion Operation.................................................................................................................. 19
4.2.1 Implementation Example of Mutual Exclusion ............................................................................... 20
4.2.2 Use case ............................................................................................................................................ 20
4.2.3 Configuration ................................................................................................................................... 21
4.3 Data Passing .......................................................................................................................................... 23
4.3.1 Implementation Example of Passing Small Data (Up to 64 Bits) ................................................... 23
4.3.2 Use case ............................................................................................................................................ 23
4.3.3 Configuration ................................................................................................................................... 25
4.3.4 Implementation Example of Passing Large Data (More than 64 Bits) ............................................ 29
4.3.5 Use Case ........................................................................................................................................... 29
Please read the Important Notice and Warnings at the end of this document 002-24432 Rev. *A
www.infineon.com page 1 of 55 <2021-02>
Multi Core Handling Guide in Traveo II
Table of contents
2 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Introduction
1 Introduction
Traveo II family MCUs include Arm Cortex-M CPUs with SRAM, Flash memory, Enhanced Secure Hardware
Extension (eSHE), CAN FD, memory, and analog and digital peripheral functions in a single chip.
The CPU subsystem of the Traveo II MCU consists of multiple bus masters, two or three CPUs, two types of DMA
controllers (P-DMA, M-DMA), and a cryptography block (Crypto). The CPU subsystem also has an Inter-Processor
communication (IPC) block that can be used for exclusive control, synchronization, and data passing between
CPUs.
In addition, the CYT3 and CYT4 series have cache memory on CPU and some peripherals. A cache memory is a
low latency memory, and helps to improve the performance. However, cache memory can cause coherency
issues between memories. Therefore, use of cache memory requires careful handling.
In addition, this application note describes example code with the Sample Driver Library (SDL). The code
snippets in this application note are part of SDL. See Other References for the SDL.
SDL basically has a configuration part and a driver part. The configuration part mainly configures the
parameter values for the desired operation. The driver part configures each register based on the parameter
values in the configuration part. You can configure the configuration part according to your system.
Figure 1 shows block diagram of CPU subsystem for CYT2B series, and Figure 2 shows block diagram for
CYT4B/CYT4D series.
CPU Subsystem
Arm Arm
P-DMA M-DMA Crypto
Cortex-M4 Cortex-M0+
Code/Work
SRAM ROM
Flash
Peripheral Interconnect
CPU Subsystem
ITCM DTCM ITCM DTCM
Arm Arm
Arm
Cortex-M7 Cortex-M7 P-DMA M-DMA Crypto
Cortex-M0+
I-Cache D-Cache I-Cache D-Cache
Code/Work
SRAM ROM
Flash
Peripheral Interconnect
3 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Introduction
The CYT2 series MCUs have an Arm Cortex-M4F-based CPU (CM4) and a Cortex-M0+-based CPU (CM0+). The
CYT4 series have two Arm Cortex-M7-based CPUs (CM7) and one CM0+. The CYT3 series has one Arm Cortex-M7-
based CPU (CM7) and one CM0+. CM7 CPUs have Instruction/Data cache (I-cache/D-cache) and Instruction/Data
tightly-coupled Memories (ITCM/DTCM). The CPU subsystems of the CYT2, CYT3 and CYT4 series MCUs have bus
masters for P-DMA, M-DMA, and Crypto block. See the Arm documentation sets for CM7, CM4, and CM0+, and
the Traveo II Architecture Technical Reference Manual (TRM) for more information.
Note: The contents of the block diagram may vary depending on the device. See the Device Datasheet
for device specific details.
All memories and peripherals are shared by all bus masters. Shared resources are accessed through standard
Arm multi-layer bus arbitration. Exclusive accesses are supported by an IPC block.
A multi-CPU architecture presents unique opportunities for system-level design and performance optimization
in a single MCU. With multi-CPUs, you can allocate:
• Tasks to CPUs so that multiple tasks may be done at the same time
• Resources to CPUs so that a CPU may be dedicated to managing those resources, thus improving efficiency
4 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
ENABLE
CLK_PATH1
PLL400#0
Predivider CLK_HF1
CM7 CPUs
(1/2/4/8)
ROOT_MAX
ROOT_DIV
DIRECT_MUX
2.1.1 Configuration
Table 1 and Table 2 list the parameters and functions in SDL for step up CPU clock frequency.
5 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
typedef enum
{
CY_SYSCLK_HFCLK_NO_DIVIDE = 0u, /**< don't divide hf_clk. */
CY_SYSCLK_HFCLK_DIVIDE_BY_2 = 1u, /**< divide hf_clk by 2 */
CY_SYSCLK_HFCLK_DIVIDE_BY_4 = 2u, /**< divide hf_clk by 4 */
CY_SYSCLK_HFCLK_DIVIDE_BY_8 = 3u /**< divide hf_clk by 8 */
} cy_en_hf_clk_dividers_t;
typedef enum
{
CY_SYSCLK_HFCLK_IN_CLKPATH0 = 0u, /**< hf_clk input is Clock Path 0 */
CY_SYSCLK_HFCLK_IN_CLKPATH1 = 1u, /**< hf_clk input is Clock Path 1 */
CY_SYSCLK_HFCLK_IN_CLKPATH2 = 2u, /**< hf_clk input is Clock Path 2 */
CY_SYSCLK_HFCLK_IN_CLKPATH3 = 3u, /**< hf_clk input is Clock Path 3 */
CY_SYSCLK_HFCLK_IN_CLKPATH4 = 4u, /**< hf_clk input is Clock Path 4 */
CY_SYSCLK_HFCLK_IN_CLKPATH5 = 5u, /**< hf_clk input is Clock Path 5 */
:
CY_SYSCLK_HFCLK_IN_CLKIMO = 0xFFu, /**< hf_clk input is directly connected to IMO */
} cy_en_hf_clk_sources_t;
/* Gradually decrease the current root clock divider until the target divider is reached */
for(int8_t i_divRegValue = 2; i_divRegValue >= clkHfSetting[i_clkHfNo].targetDiv; i_divRegValue--)
{
Cy_SysTick_DelayCoreCycle(WAIT_CYCLE_WHILE_DISTRIBUTING_CLOCK);
SRSS->unCLK_ROOT_SELECT[i_clkHfNo].stcField.u2ROOT_DIV = i_divRegValue;
}
Cy_SysTick_DelayCoreCycle(WAIT_CYCLE_WHILE_DISTRIBUTING_CLOCK); Step up CPU Clock
}
:
frequency
}
6 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
In this example, the CPU clock frequency is stepped up using the CLK_HF clock divider in steps from 8 division
to target division using CLK_HF clock divider. The Cy_SysTick_DelayCoreCycle() provides the required
delay between each successive step. See the Architecture TRM and Application Note for PLL and CLK_HF
configuration.
7 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Peripheral Interconnect
SAR
PERI CRYPT CPUSS HSIOM SMIF LIN SCB I2S
PASS
PERI_
IPC SMARTIO ETH FLEXRAY
PCLK
FLASHC EVTGEN
SRSS
BACKUP
P-DMA
M-DMA
To improve performance, you need to consider CPU resource allocation in system design, so that the CPU may
be dedicated to managing those resources. In this case, dedicating either CM7_0 or CM_1 to TTCAN FD
management will improve performance.
A similar case occurs for memory access. For example, SRAM0 access of CM7_0 and SRAM1 access of CM7_1 can
be performed at same time (blue arrow). CM7_0 and CM7_1 cannot access same SRAM at the same time even if
the addresses are different within the SRAM (red arrow).
8 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
TCM
TCM
CM7_0 CM7_0
System Interconnect
In such cases, you can improve performance by assigning dedicated SRAM for each CPU or using TCM dedicated
to each CPU.
Note: The connection of resources and memory may vary depending on the device. See the Device
Datasheet for device specific details.
9 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Note: Some IPCs are reserved by SROM API, and you cannot use structures of IPC channel and interrupt
reserved by the SROM API. See the Device Datasheet for more information.
10 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Note: The channel number of IPC channel structure and IPC interrupt structure may vary depending on
the device. See the Device Datasheet for device specific details.
Figure 6 shows the relation between the IPC channel structures and the IPC interrupt structures. An IPC
interrupt structure can be triggered from any of the IPC channel structures, and the event generated from an
IPC channel structure can trigger any or multiple interrupts in an IPC interrupt structure.
11 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
In the example shown in Figure 6, IPC 0 channel structure can trigger the RELEASE event of INTR 0 and IPC 1
channel structure can trigger the NOTIFY and RELEASE event of INTR 2. IPC N channel structure can trigger the
NOTIFY event of INTR 1 and INTR 3, and the RELEASE event of INTR 0.
12 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
ACQUIRE
2)
NOTIFY
IPC Interrput
NOTIFY 3)
Interrupt
1) 4)
Peripheral
CPU_A CPU_B
Start Start
End End
See the Architecture TRM and AN219842 - How to Use Interrupt in Traveo II for Interrupt configuration
details.
13 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4.1.3 Configuration
Table 4 and Table 5 list the parameters and functions in SDL for CPU synchronization using IPC. This is
example for CYT2B series. Here, it assumes that CPU_A is CM4 and CPU_B is CM0+.
14 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
15 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
See cyip_ipc.h under hdr/rev_x/ip for more information on the union and structure representation of registers.
Code Listing 2 Example of CPU Synchronization for CM4
int main(void)
{
: Get base address of IPC channel structure. See Code Listing 3.
/* At first force release the lock state. */
volatile stc_IPC_STRUCT_t* ipcBase = Cy_IPC_Drv_GetIpcBaseAddress(IPC_CHANNEL_NUMBER);
(void)Cy_IPC_Drv_LockRelease(ipcBase, CY_IPC_NO_NOTIFICATION);
IPC channel initialization (Release a lock).
/* Wait until the CM0+ IPC server is started */ See Code Listing 4.
/* Note:
* After the CM0+ IPC server is started, the corresponding number of the INTR_MASK is set.
* So in this case CM4 can recognize whether the server has started or not by the INTR_MASK status.
*/
volatile stc_IPC_INTR_STRUCT_t* ipcIntrStrBase = Cy_IPC_Drv_GetIntrBaseAddr(IPC_NOTIFY_INT_NUMBER);
uint32_t intrMask;
uint32_t notifyMask; Get base address of IPC interrupt
do Get value of IPC.INTR_MASK. See Code Listing 6. structure. See Code Listing 5.
{
intrMask = Cy_IPC_Drv_GetInterruptMask(ipcIntrStrBase); Get value of notify mask. See Code Listing 7.
notifyMask = Cy_IPC_Drv_ExtractAcquireMask(intrMask); (Get CM0+ configuration status)
} while((notifyMask & (1ul << IPC_CHANNEL_NUMBER)) == 0);
/* Check to make sure the IPC is Acquired */ Check if the lock is acquired. See Code Listing 9.
if( Cy_IPC_Drv_IsLockAcquired(base) )
{
/* The IPC was acquired, release the IPC channel */
Cy_IPC_Drv_ReleaseNotify(base, releaseEventIntr);
Release the IPC channel. See Code Listing 10.
retStatus = CY_IPC_DRV_SUCCESS;
}
else /* The IPC channel was already released (not acquired) */
{
retStatus = CY_IPC_DRV_ERROR;
}
return(retStatus);
}
16 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
17 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
#define IPC_NOTIFY_INT_NUMBER 5ul /* Notify interrupt number */ Define number of IPC interrupt for release event.
#define IPC_CHANNEL_NUMBER 6ul /* IPC number which is used in this example */
Define IPC channel
#define CY_IPC_NO_NOTIFICATION (uint32_t)(0x00000000ul)
Configure IPC interrupt.
cy_stc_sysint_irq_t irq_cfg =
{
.sysIntSrc = (cy_en_intr_t)(cpuss_interrupts_ipc_0_IRQn + IPC_NOTIFY_INT_NUMBER),
.intIdx = CPUIntIdx2_IRQn,
.isEnabled = true,
};
int main(void)
{
:
/* Enable application core CM4.
* CY_CORTEX_M4_APPL_ADDR must be updated if CM4 memory layout is changed.
*/
Cy_SysEnableApplCore(CY_CORTEX_M4_APPL_ADDR); Activate CM4 Get base address of IPC interrupt
structure. See Code Listing 5.
/* Enable IPC interrupt mask */
volatile stc_IPC_INTR_STRUCT_t* ipcIntrStrBase = Cy_IPC_Drv_GetIntrBaseAddr(IPC_NOTIFY_INT_NUMBER);
uint32_t releaseMask = CY_IPC_NO_NOTIFICATION;
uint32_t notifyMask = (1ul << IPC_CHANNEL_NUMBER);
Cy_IPC_Drv_SetInterruptMask(ipcIntrStrBase, releaseMask, notifyMask); (5)-1 Enable IPC notify event. See
Code Listing 13.
/* Interrupt setting */
Cy_SysInt_InitIRQ(&irq_cfg);
Cy_SysInt_SetSystemIrqVector(irq_cfg.sysIntSrc, IpcIntHandler); (5)-2 Configure interrupt for IPC notify event
/* Check if the interrupt is caused by the notifier channel */ Get value of notify mask. See Code Listing 7.
if (notifyMasked & (1ul << IPC_CHANNEL_NUMBER))
{ Check if interrupts are valid.
/* Clear IPC interrupt */
Cy_IPC_Drv_ClearInterrupt(ipcIntrStrBase, releaseMasked, notifyMasked);
18 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
If the register is already in an acquired state, another master cannot acquire it. The acquired state of IPC
channel structure is provided by the IPC_STRUCTx_LOCK_STATUS register. The acquired state of IPC channel
structure is released by writing any value into the IPC_STRUCTx_RELEASE register, and allows for the
generation of release events to the IPC interrupt structure.
19 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
7)
RELEASE
IPC Interrupt
RELEASE
Interrupt
5) 6)
Peripheral
Note: IPC has no hardware to restrict resource access. Therefore, software must have strict rules not to
access shared memory if it cannot acquire the lock.
20 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
CPU_A CPU_B
Start Start
Common peripheral
(5)
resource setting
(2) Acquire lock of IPC channel (7) Acquire lock of IPC channel
No No
Success? Success?
Yes Yes
End End
See the Architecture TRM and AN220193 - GPIO USAGE SETUP IN TRAVEO II FAMILY for GPIO configuration
details.
4.2.3 Configuration
Table 7 and Table 8 list the parameters and functions in SDL for mutual exclusion using IPC. This is example in
CYT2B series. In this case, it is assumed that CPU_A is CM4 and CPU_B is CM0+.
21 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
#define IPC_CHANNEL_NUMBER 6ul /* IPC number which is used in this example */ Define IPC channel number
int main(void)
{
: Get base address of IPC channel structure. See Code Listing 3.
/* At first force release the lock state. */
volatile stc_IPC_STRUCT_t* ipcBase = Cy_IPC_Drv_GetIpcBaseAddress(IPC_CHANNEL_NUMBER);
(void)Cy_IPC_Drv_LockRelease(ipcBase, CY_IPC_NO_NOTIFICATION);
(1) IPC channel initialization (Release a lock).
/* Lock IPC channnel */ See Code Listing 4.
for(;;)
{
if(CY_IPC_DRV_SUCCESS == Cy_IPC_Drv_LockAcquire(ipcBase)) Acquire lock of IPC channel. See Code Listing 17.
{
/* Set IO port to 1 */
Cy_GPIO_Write(CY_CB_LED_PORT, CY_CB_LED_PIN, 1ul); (3) Set IO Port to 1.
for(;;)
{
}
}
22 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
int main(void)
{
:
/* Initialize the port pin for LED */ (5) Initialize IO Port.
Cy_GPIO_Pin_Init(CY_CB_LED_PORT, CY_CB_LED_PIN, &user_led_port_pin_cfg);
for(;;)
{
}
}
23 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
3) 3)
NOTIFY
RELEASE
2) 4)
DATA0/1
IPC Interrupt
NOTIFY 3)
Interrupt
RELEASE
Interrupt
Note: IPC has no hardware to restrict resource access. Therefore, CPU_B software must have strict rules
not to access IPC_STRUCTx_DATA0/1 if it does not receive notify interrupt.
Figure 12 shows the example flow for data passing (up to 64 bit).
24 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
CPU_A CPU_B
Start Start
End End
See the Architecture TRM and AN219842 - How to Use Interrupt in Traveo II for Interrupt configuration
details.
4.3.3 Configuration
Table 9 and Table 10 list the parameters and functions in SDL for data passing of 64 bits or less using IPC. This
is example in CYT2B series. In this case, it is assumed that CPU_A is CM4 and CPU_B is CM0+.
25 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
26 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Code Listing 19 shows an example of data passing of 64 bits or less using IPC.
Code Listing 19 Example of Data Passing (Up to 64 bits) for CM4
#define IPC_NOTIFY_INT_NUMBER 5ul /* Notify interrupt number */ Define number of IPC interrupt for notify event.
#define IPC_CHANNEL_NUMBER 6ul /* IPC number which is used in this example */
#define IPC_DATA 0x5A5A5A5Aul Define IPC channel number
#define IPC_DATA2 0x12345678ul Define send message data
retStatus = CY_IPC_DRV_SUCCESS;
}
else
{
/* Channel was already acquired, return Error */
retStatus = CY_IPC_DRV_ERROR;
}
return(retStatus);
}
27 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
for(;;)
{
}
}
28 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
retStatus = CY_IPC_DRV_SUCCESS;
}
else
{
/* The channel is not locked so channel is invalid. */
retStatus = CY_IPC_DRV_ERROR;
}
return(retStatus);
}
29 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4) 4)
NOTIFY
RELEASE
3) 5)
DATA0/1
IPC Interrput
NOTIFY 4)
Interrupt
RELEASE
Interrupt
Shared
Memory
2) 6)
Shared Area
Note: IPC has no hardware to restrict resource access. Therefore, CPU_A and CPU_B software must have
strict rules not to access IPC_STRUCTx_DATA0/1 and message data in shared memory if it does not
receive notify interrupt.
Figure 14 shows the example flow for data passing (More than 64 bits).
30 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
CPU_A CPU_B
Start Start
End End
4.3.6 Configuration
Table 11 lists the parameters and functions in SDL for data passing of more than 64 bits using IPC. This is
example in CYT2B series. In this case, it is assumed that CPU_A is CM4 and CPU_B is CM0+.
31 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Code Listing 26 shows an example of data passing of more than 64 bits using IPC.
Code Listing 26 Example of Data Passing (more than 64 bits) for CM4
int main(void)
{
Get base address of IPC channel structure. See Code Listing 3.
:
/* At first force release the lock state. */
volatile stc_IPC_STRUCT_t* ipcBase = Cy_IPC_Drv_GetIpcBaseAddress(IPC_CHANNEL_NUMBER);
(void)Cy_IPC_Drv_LockRelease(ipcBase, CY_IPC_NO_NOTIFICATION);
(1) IPC channel initialization (Release a lock).
/* Wait until the CM0+ IPC server is started */ See Code Listing 4.
/* Note:
* After the CM0+ IPC server is started, the corresponding number of the INTR_MASK is set.
* So in this case CM4 can recognize whether the server has started or not by the INTR_MASK status.
*/
volatile stc_IPC_INTR_STRUCT_t* ipcIntrStrBase = Cy_IPC_Drv_GetIntrBaseAddr(IPC_NOTIFY_INT_NUMBER);
uint32_t intrMask;
uint32_t notifyMask; Get base address of IPC interrupt
do Get value of IPC.INTR_MASK. See Code Listing 6. structure. See Code Listing 5.
{
intrMask = Cy_IPC_Drv_GetInterruptMask(ipcIntrStrBase); Get value of notify mask. See Code Listing 7.
notifyMask = Cy_IPC_Drv_ExtractAcquireMask(intrMask); (Get CM0+ configuration status)
} while((notifyMask & (1ul << IPC_CHANNEL_NUMBER)) == 0);
32 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Code Listing 27 Example of Passing Data (more than 64 bits) for CM0+
#define IPC_NOTIFY_INT_NUMBER 5ul /* Notify interrupt number */ Define IPC interrupt number for notify event
#define IPC_CHANNEL_NUMBER 6ul /* IPC number which is used in this example */
Define IPC channel
#define CY_IPC_NO_NOTIFICATION (uint32_t)(0x00000000ul)
Configure release interrupt
cy_stc_sysint_irq_t irq_cfg =
{
.sysIntSrc = (cy_en_intr_t)(cpuss_interrupts_ipc_0_IRQn + IPC_NOTIFY_INT_NUMBER),
.intIdx = CPUIntIdx2_IRQn,
.isEnabled = true,
};
Configure Receive area
uint32_t receivedData[64] = {0ul};
/* Interrupt setting */
Cy_SysInt_InitIRQ(&irq_cfg); (7)-2 Configure interrupt for IPC notify event
Cy_SysInt_SetSystemIrqVector(irq_cfg.sysIntSrc, IpcNotifyInt_ISR);
for(;;)
{
}
}
33 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
W0
W2
W3
W4
W5
W6
W7
3) Update data in
shared memory
2) Read from shared memory and
write into cache memory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Coherency
・・
・・
Issue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
New W1
W0
W1
W2
W3
W4
W5
W6
W7
W0
W2
W3
W4
W5
W6
W7
-
-
-
-
-
-
-
-
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1. The cache memory does not have data before the start of the operation.
2. Master A tries to read data from the cache memory. However, the cache memory does not have data.
Therefore, this access causes a cache miss.
3. As a result of cache miss, the cache memory reads data form the shared memory. The cache memory data
and the shared memory data are same at this point. Therefore, they are coherent. Subsequent accesses to
this address are cache hit.
34 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4. Master B updates data (New W1) in shared memory. As a result, the cache memory data and the shared
memory data are different. Therefore, they are not coherent.
5. Master A reads data from the cache memory. The cache memory has data (old W1), thus, cache hit. As a
result of cache hit, master A reads old W1 from cache memory. Master A starts to operate using different
data. A coherency issue occurs.
Cache management is important for a system with cache memory and multiple masters.
Read-only Read-only
Cache Cache
External Memory
In these series, CM7 CPUs have I-cache and D-cache, and Flash Memory and Serial memory interfaces (SMIF)
have read-only cache memory for AHB-Lite Bus Interface.
35 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
36 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
These configurations are available in MPU Region Attribute and Size Register (MPU_RASR). Table 13 shows
MPU_RASR common combination for cache configuration. The configuration of cache memory is defined by
TEX, C, B in MPU_RASR.
See the Arm documentation sets of CM7 for the complete details related to TEX, C, B Encoding.
37 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
static uint8_t srcBuffer[BUFFER_SIZE] __ALIGNED(32); // Align to 32-byte boundary to simplify cache maintenance
static uint8_t dstBuffer[BUFFER_SIZE] __ALIGNED(32); // Align to 32-byte boundary to simplify cache maintenance
int main(void)
{
SystemInit(); See Code Listing 30.
:
// Preset source buffer with test pattern and clear destination
for(uint32_t i = 0; i < BUFFER_SIZE; i++)
{
srcBuffer[i] = (uint8_t) i;
dstBuffer[i] = 0; Initialize buffer. It executes in cache memory.
}
// Ensure buffer data is cleaned out to SRAM (so that it can be accessed by DMA later on)
SCB_CleanDCache_by_Addr((uint32_t *) srcBuffer, sizeof(srcBuffer));
SCB_CleanDCache_by_Addr((uint32_t *) dstBuffer, sizeof(dstBuffer)); Clean D-cache for buffer area.
The data of the shared memory
// Initialize DMA match cache memory.
:
// Ensure descriptor data is cleaned out to SRAM (so that it can be accessed by DMA later on)
SCB_CleanDCache_by_Addr((uint32_t *) &descriptor3D, sizeof(descriptor3D));
Clean D-cache for descriptor area
// Trigger DMA transfer by SW DMA transfer from srcBuffer to dstBuffer.
:
// Destination buffer has been modified by DMA, so the corresponding area needs to be invalidated before
accessing it by CPU
SCB_InvalidateDCache_by_Addr((uint32_t *) dstBuffer, sizeof(dstBuffer)); Invalidate D-cache for dstBuffer area.
Subsequent access is cache miss.
// Check for expected data
for(uint32_t i = 0; i < BUFFER_SIZE; i++)
{
: Read from dstBuffer. Data is fetched from shared memory
}
for(;;)
{
: }
}
38 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
In general, flash memory does not rewrite as frequently as RAM. Also, flash memory is most often written under
specific conditions according to system requirement. Therefore, cache memory can avoid the coherency issues
by clearing the cache memory after rewriting the flash memory. Table 16 lists the control registers to invalidate
and enable/disable the cache memory. Cache memory can be enabled/disabled using register. When cache
memory is set to disable and enable again, data in cache memory is invalidated, and read access causes
refilling in the cache memory. See the Registers TRM for more details.
39 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
SMIF has three interfaces: XIP AXI, XIP AHB-Lite, and MMIO AHB-Lite interface. Out of the three interfaces, only
the XIP AHB-Lite interface has cache memory. In addition, this cache memory does not support cache
coherency by hardware. Therefore, SMIF has cache coherency issue depending on access between each port.
Table 18 lists the control registers for invalidating and enabling/disabling of cache memory. See the Registers
TRM for more details.
40 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
41 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Updated W5
4) Coherency Issue
Old W5
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W6
W7
W0
W1
W2
W3
W4
W6
W7
2) Read from
shared memory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
Cache memory Cache memory Cache memory Cache memory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Shared memory Shared memory
1. Each CPU tries to read data from the cache memory. However, the cache memory does not have data, thus,
it is a cache miss.
2. As a result of read access, the cache memory refills the data from the shared memory. The cache memory
data and the shared memory data are same at this point. Therefore, they are coherent. Subsequent access
results in cache hit.
3. CM7_1 updates W5 data in own cache memory according to cache configuration, but this write access does
not update shared memory immediately because of Write-back.
4. W5 (Updated W5) in the CM7_1 cache memory is different from W5 (Old W5) of CM7_0 cache memory and
shared memory. That is, this has cache coherency issue.
5. CM7_0 reads W5 (Old W5) data from its own cache memory. As a result, CM7_0 can cause unintended
operation.
Here are some solutions for this scenario between CM7 CPUs:
• Solution 1: Disable cache
Both CM7 CPUs configure cache disable to the common area. Cache memory does not operate, and each
CPU reads/writes to the shared memory directly. Both CPUs have no cache coherency issue. Therefore,
there is no need to manage the cache coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_1 performs cache clean after write access to the cache memory. Cache clean writes data from the
cache memory back to the shared memory. The cache memory and the shared memory are coherent after
performing cache clean.
CM7_0 performs cache invalidate before read access from the cache memory. Cache invalidate invalidates
data in the cache memory, and subsequent read access refills the cache memory data with shared memory
data. The cache memory and the shared memory are coherent after read access with cache invalidate is
performed.
• Solution 3: Change cache configuration
CM7_1 cache memory is configured to Write-Through. CM7_1 writes data to the cache memory and the
shared memory. The write access of CM7_1 has no coherency issue between the cache memory and the
shared memory. However, the read access of CM7_0 still has coherency issue. Therefore, CM7_0 requires a
read access with cache invalidate handling.
42 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
5.4.2 Cache Coherency Issue between CM7 CPU and Other Masters
This section describes the scenario of cache coherency issue between CM7 CPU and other masters. Other
masters except CM7 have no cache memory for shared memory (SRAM). Therefore, these masters operate the
shared memory directly.
5.4.2.1 Scenario and Solution for CM7 CPU Read and Other Master Write
In this scenario, DMA transfers data from peripheral to the shared memory, and CM7_0 reads the data. That is,
DMA writes the data and CM7_0 reads the data. Figure 18 shows the cache coherency issue scenario in this
case. The preconditions are as follows:
• CPU and DMA use a part of the shared memory as common area, and the common area enables a cache.
• CPU cache configuration is Write-back, write, and read allocate.
3) Data
Transfer
CM7_0 DMA CM7_0 DMA
Issue
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W6
W7
W0
W1
W2
W3
W4
W6
W7
shared memory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Figure 18 Scenario between CM7 CPU and Other Master (CM7_0 Reads, DMA Writes)
1. CM7_0 tries to read data from the cache memory. However, the cache memory does not have data, thus, it
is a cache miss.
2. As a result of read access, the cache memory refills the data from the shared memory. The cache memory
data and the shared memory data are same at this point. Therefore, they are coherent. Subsequent access
result is cache hit.
3. The DMA writes data to the shared memory by data transfer.
43 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4. W5 (Updated W5) in the shared memory is different from W5 (Old W5) in CM7_0 cache memory. That is, this
has cache coherency issue.
5. CM7_0 reads Old W5 from the cache memory. As a result, CM7_0 can cause unintended operation.
Here are some solutions for the scenario where CM7 CPU reads and other master writes:
• Solution 1: Disable cache
CM7_0 configures cache disable to the common area. Cache memory does not operate, and CM7_0 reads
from the shared memory directly. CM7_0 has no cache coherency issue. Therefore, there is no need to
manage the cache coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_0 performs cache invalidate before read access from the cache memory. The cache memory and the
shared memory are coherent after read access with cache invalidate is performed.
• Solution 3: Use TCM
In case of using CM7_0 TCM, CM7_0 has no cache coherency issue. CM7_0 is not required for handling of
cache coherency issue regardless of cache configuration. CM7_0 always reads from TCM directly without
having to go through the cache memory.
5.4.2.2 Scenario and Solution for CM7 CPU Write and Other Master Read
In this scenario, CM7_0 writes data, DMA transfers the data from the shared memory to peripheral. That is, DMA
reads the data and CM7_0 writes the data. Figure 19 shows cache coherency issue scenario in this case. The
preconditions are as follows:
• CM7_0 and DMA use a part of the shared memory as common area, and the common area enables a cache.
• CM7_0 cache configuration is Write-back, write, and read allocate.
5) Data
Transfer
CM7_0 DMA CM7_0 DMA
Issue
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W6
W7
W0
W1
W2
W3
W4
W6
W7
shared memory
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Figure 19 Scenario between CM7 CPU and Other Master (CM7_0 Writes, DMA Reads)
1. CM7_0 tries to read data from the cache memory. However, the cache memory does not have data, thus, it
is a cache miss.
2. As a result of read access, the cache memory refills the data from the shared memory. The cache memory
data and the shared memory data are same at this point. Therefore, they are coherent. Subsequent access
results in a cache hit.
3. CM7_0 updates W5 data in its own cache memory according to cache configuration, but this write access
does not update the shared memory immediately because of Write-back.
4. W5 (Updated W5) in the CM7_0 cache memory is different from W5 (Old W5) in the shared memory. That is,
this has cache coherency issue.
5. DMA reads and transfers old W5 in the shared memory. As a result, DMA transfer can cause unintended
operation.
44 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Here are some solutions for the scenario where CM7 CPU writes and other master reads:
• Solution 1: Disable cache
CM7 CPU configures cache disable to the common area. Cache memory does not operate, and CPU writes to
the shared memory directly. CPU has no cache coherency issue. Therefore, there is no need to manage the
cache coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_0 performs cache clean after write access to cache memory. Cache clean writes data from the cache
memory back to the shared memory. The cache memory and the shared memory are coherent after
performing cache clean.
• Solution 3: Using TCM
In case of using CM7_0 TCM, CM7_0 has no cache coherency issue. CM7_0 is not required for handling of
cache coherency issue regardless of cache configuration. CM7_0 always writes to TCM directly without
through cache memory.
SMIF
XIP AXI XIP AHB-Lite MMIO AHB-Lite
Interface Interface Interface
Cache
Buffer
Memory
Registers
External Memory
SMIF has three bus interfaces: XIP AXI, XIP AHB-Lite, and MMIO AHI-Lite. The XIP AXI interface is used by CM7 to
access external memory in XIP mode. The XIP AHB-Lite interface is used by masters except CM7 to access
external memory in XIP mode. The MMIO AHB-Lite interface is used by all master to access external memory in
MMIO mode. See the Architecture TRM for XIP mode, MMIP mode, and each interface details.
45 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Out of the three interfaces, only AXI AHB-Lite interface has cache memory with read-only. The cache memory
refills the data from the external memory by a read access via the XIP AHB-Lite interface.
This cache memory does not have hardware control of cache consistency by access between interfaces. That is,
the cache memory is not affected by writing to the external memory via the XIP AXI interface and MMIO AHB-
Lite interface. Therefore, a write access from XIP AXI and MMIO interfaces may cause cache coherency issues. In
addition, CM7 with cache memory has cache coherency issue for write access from XIP AHB-Lite and MMIO
interfaces.
W0
W1
W2
W3
W4
W6
W7
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Invalidate
Invalidate
Invalidate
Invalidate
Invalidate
Invalidate
Invalidate
Invalidate
Cache memory Cache memory Invalidate
W0
W1
W2
W3
W4
W5
W6
W7
4) Coherency Issue
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Updated External
Memory Data
Updated W5
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W6
W7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Figure 21 Scenario between CM7 and CM0+ (CM7_0 Reads, CM0+ Writes)
1. CM7_0 and CM0+ try to read data from the cache memory. However, the cache memory does not have data,
thus, it is a cache miss.
2. As a result of read access, the cache memories refill the data from the external memory. The cache
memories data and the external memory data are same at this point. Therefore, they are coherent.
Subsequent access results in a cache hit.
3. CM0+ updates W5. As a result of write access, W5 in the external memory is updated, and the associated
cache subsector is invalidated. Subsequent access to this data results in a cache miss, and cache memory
refills the data from the external memory again.
46 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4. W5 (Old W5) in the CM7_0 cache memory is different from W5 (Updated W5) in the external memory. That is,
this has cache coherency issue.
5. CM7_0 reads old W5 from the cache memory. As a result, CM7_0 can cause unintended operation.
Here are some solutions for the scenario where CM7_0 reads and CM0+ writes:
• Solution 1: Disable cache
CM7_0 configures cache disable to the common area. Cache memory does not operate, and CM7_0 reads
from the external memory directly. CM7_0 has no cache coherency issue. Therefore, the handling is not
required to the cache coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_0 performs cache invalidate before read access from cache memory. The cache memory and the
shared memory are coherent after performing read access with cache invalidate.
Figure 22 shows cache coherency issue scenario in CM0+ reads and CM7_0 writes. The preconditions are as
follows:
• CM7_0 and CM0+ use a part of the external memory as the common area.
• CM7 cache memory of the common area is enabled for CM7_0 XIP mode access, and CM7_0 cache
configuration is Write-back, write, and read allocate.
• SMIF cache memory of the common area is enabled for CM0+ XIP mode access.
W0
W1
W2
W3
W4
W6
W7
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Old W5
Cache memory Cache memory
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W6
W7
4) Coherency Issue
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
W0
W1
W2
W3
W4
W6
W7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Figure 22 Scenario between CM7 and CM0+ (CM7_0 Writes, CM0+ Reads)
1. CM7_0 and CM0+ try to read data from the cache memory. However, the cache memory does not have data,
thus, it is a cache miss.
2. As a result of read access, the cache memories refill the data form the external memory. The cache
memories data and the external memory data are same at this point. Therefore, they are coherent.
Subsequent access results in a cache hit.
3. CM7_0 updates W5 data in its own cache memory according to cache configuration, but this write access
does not update external memory immediately because of Write-back.
47 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
4. W5 (Updated W5) in the CM7_0 cache memory is different from W5 (Old W5) in the cache memory in SMIF
and external memory. That is, this has cache coherency issue.
5. CM0+ reads old W5 from the cache memory. As a result, CM0+ can cause unintended operation.
Here are some solutions for the scenario where CM7_0 writes and CM0+ reads
• Solution 1: Disable cache
CM7_0 and CM0+ configure cache disable to the common area. Cache memory does not operate, and both
CPUs write to the external memory directly. Both CPUs have no cache coherency issue. There is no need to
manage the cache coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_0 performs cache clean after write access to the cache memory. Cache clean writes data from the
cache memory back to the shared memory. The cache memory and the shared memory are coherent after
performing cache clean. SMIF cache memory needs to be invalidated with CM7_0 write access. Therefore,
the application software needs to monitor write access from XIP AXI interface and MMIO AHB-Lite interface.
5.4.5.1 Scenario and Solution when Using SROM API (CM0+ API Parameter
Read)
In this scenario, CM7 uses the SROM API to read specific memory data. The CM7 writes the SROM API
parameters to the shared memory, and CM0+ reads it and executes the SROM API. Then, CM0+ writes the
execution result and memory data to the shared memory, and CM7 CPU reads the data. That is, in this scenario,
CM7 writes, CM0+ reads and CM7 reads, CM0+ writes occur. Two cache coherency issues occur when writing and
reading of CM7. Figure 23 shows cache coherency issue scenario in CM0+ API parameter read. The
preconditions are as follows:
• CM7 and CM0+ use a part of the shared memory as a common area, and the common area enables a cache.
• CM7 cache configuration is Write-back, write, and read allocate.
48 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Parameter 7
Parameter 0
Parameter 1
Parameter 2
Parameter 3
Parameter 4
Parameter 5
Parameter 6
Parameter 0
Parameter 1
Parameter 2
Parameter 3
Parameter 4
Parameter 5
Parameter 6
2) Coherency
Issue
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cache memory Shared memory Cache memory Shared memory
1. CM7_0 writes SROM API parameters in its own cache memory according to cache configuration, but this
write access does not update the shared memory immediately because of Write-back.
2. SROM API parameters in the CM7_0 cache memory is different from the shared memory. That is, this has
cache coherency issue.
3. CM7_0 notifies SROM API activation to CM0+ via IPC.
4. CM0+ reads SROM API parameters from the shared memory when notified by IPC. However, CM0+ reads
non-updated SROM API parameters. As a result, CM0+ cannot perform correctly.
Here are some solutions for the scenario:
• Solution 1: Disable cache
CM7 CPU configures cache disable to the common area. Cache memory does not operate, and CPU writes to
the shared memory directly. CPU has no cache coherency issue. There is no need to manage the cache
coherency issue.
• Solution 2: Use cache maintenance APIs
CM7_0 performs cache clean after write access to cache memory. Cache clean writes data from the cache
memory back to the shared memory. The cache memory and the shared memory are coherent after
performing cache clean.
After that, CM7_0 notifies SROM API activation to CM0+ via IPC.
49 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
5.4.5.2 Scenario and Solution when Used SROM API (CM7 Execution Result
Read)
Figure 24 shows cache coherency issue scenario in CM7 SROM API execution result read.
2) Coherency
Result 0
Result 1
Result 2
Result 3
Result 4
Result 5
Result 6
Result 7
Result 0
Result 1
Result 2
Result 3
Result 4
Result 5
Result 6
Result 7
Issue
W0
W1
W2
W3
W4
W5
W6
W7
W0
W1
W2
W3
W4
W5
W6
W7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
・・
・・
・・
・・
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cache memory Shared memory Cache memory Shared memory
50 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Glossary
6 Glossary
Terms Description
AHB Advanced High-performance Bus
AXI Advanced eXtensible Interface
BOD Brown-out detection
CAN FD Controller Area Network with Flexible Data Rate. See the CAN FD controller chapter of
the Architecture TRM for details
CPU Central Processing Unit
D-cache Data cache memory
DTCM Data Tightly-Coupled Memory
eSHE Enhanced Secure Hardware Extension
I-cache Instruction cache memory
IPC Inter-Processor communication
ITCM Instruction Tightly-Coupled Memory
LRU Least Recently Used. An algorithm that determines the allocation of data handled by
cache memory to resources.
M-DMA Memory DMA. See the Direct Memory Access chapter of the Architecture TRM for
details.
P-DMA Peripheral DMA. See the Direct Memory Access chapter of the Architecture TRM for
details.
PLL Phase-Locked Loop
SMIF Serial Memory Interface
SROM API SROM Application Programming Interface. It performs various supervisory tasks such as flash
programming and changing system configuration. See the Nonvolatile Memory
Programming chapter of the Architecture TRM for details.
XIP eXecute-In-Place
51 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Related Documents
Related Documents
The following are the Traveo II family series datasheets and Technical Reference Manuals. Contact Technical
Support to obtain these documents.
[1] Device datasheet
− CYT2B7 Datasheet 32-Bit Arm® Cortex®-M4F Microcontroller Traveo™ II Family
− CYT2B9 Datasheet 32-Bit Arm® Cortex®-M4F Microcontroller Traveo™ II Family
− CYT4BF Datasheet 32-Bit Arm® Cortex®-M7 Microcontroller Traveo™ II Family
− CYT4DN Datasheet 32-Bit Arm® Cortex®-M7 Microcontroller Traveo™ II Family
52 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Other References
Other References
A Sample Driver Library (SDL) including startup as sample software to access various peripherals is provided.
SDL also serves as a reference, to customers, for drivers that are not covered by the official AUTOSAR products.
The SDL cannot be used for production purposes as it does not qualify to any automotive standards. The code
snippets in this application note are part of the SDL. Contact Technical Support to obtain the SDL.
53 of 55 002-24432 Rev. *A
<2021-02>
Multi Core Handling Guide in Traveo II
Revision history
Revision history
Document Date of release Description of changes
version
** 12/12/2019 New Application Note.
*A 2021-02-02 Moved to Infineon Template
Updated code examples using SDL
54 of 55 002-24432 Rev. *A
<2021-02>
Trademarks
All referenced product or service names and trademarks are the property of their respective owners.
IMPORTANT NOTICE
Edition <2021-02> The information contained in this application note is For further information on the product, technology,
Published by given as a hint for the implementation of the product delivery terms and conditions and prices please
only and shall in no event be regarded as a contact your nearest Infineon Technologies office
Infineon Technologies AG description or warranty of a certain functionality, (www.infineon.com).
condition or quality of the product. Before
81726 Munich, Germany implementation of the product, the recipient of this
application note must verify any function and other WARNINGS
technical information given herein in the real Due to technical requirements products may contain
© 2019-2021 Infineon Technologies AG. application. Infineon Technologies hereby disclaims dangerous substances. For information on the types
All Rights Reserved. any and all warranties and liabilities of any kind in question please contact your nearest Infineon
(including without limitation warranties of non- Technologies office.
infringement of intellectual property rights of any
Do you have a question about this third party) with respect to any and all information
document? given in this application note. Except as otherwise explicitly approved by Infineon
Technologies in a written document signed by
Go to: www.cypress.com/support authorized representatives of Infineon
The data contained in this document is exclusively Technologies, Infineon Technologies’ products may
intended for technically trained staff. It is the not be used in any applications where a failure of the
Document reference responsibility of customer’s technical departments product or any consequences of the use thereof can
to evaluate the suitability of the product for the reasonably be expected to result in personal injury.
002-24432 Rev. *A intended application and the completeness of the
product information given in this document with
respect to such application.