The AM263x Sitara™ Arm® microcontrollers are built to meet the complex real-time processing needs of next-generation industrial and automotive embedded products. The AM263x MCU family consists of multiple pin-to-pin compatible devices with up to four 400-MHz Arm Cortex®-R5F cores. The family is designed for advanced motor control and digital power control applications with advanced analog modules. This document details the differences between these family of devices based on their part number and compared against the superset device AM2634.
Sitara™ and LaunchPad™ are trademarks of Texas Instruments.
Arm® and Cortex® are registered trademarks of Arm Ltd.
All trademarks are the property of their respective owners.
The current MCU_PLUS_SDK for AM263x is developed to support the entire series of AM263x devices. This document points out the examples of SDK designed for different subset devices of AM263x and explains the steps to modify existing examples to support the subset devices AM2632 and AM2631.
The AM263x LaunchPad™ Development Kit and ControlCARD are developed for the superset device AM2634. The users working on other AM263x SOCs can get started on the AM2634 EVMs as these are pin-to-pin compatible with AM2632 and AM2631. This document™ explains how to adapt these EVMs for the other family of devices. Users working on different AM263x family of devices can seamlessly use the same SDK libraries and EVMs for their different SOC projects.
The features and characteristics of any AM263x IP are identified by the part number. Table 2-1 describes how to decrypt features. See the data sheet to get the details of speed, memory, number of Control IPs, networking settings, and so on. Table 2-2 is classified according to the part number as explained in Table 2-1.
AM263 | 4 | C | O | K | F | H | M | ZCZ | R | Q1 |
---|---|---|---|---|---|---|---|---|---|---|
Common IP Name | Number of R5 cores | Device Revision | Device Operating Performance Points | Features | Functional Safety | Security | Junction Temperature | Package Designator | Carrier | Automotive Designator |
Table 2-2 specifies differences between six part numbers. More information regarding these differences is available in the Device Comparison section of AM263x Sitara™ Microcontrollers, data sheet.
Part Numbers |
AM2634 |
AM2632 |
AM2631 |
AM2634-Q1 |
AM2632-Q1 |
AM2631-Q1 |
---|---|---|---|---|---|---|
AM2634COMFHAZCZR |
AM2632COLFHAZCZR |
AM2631CNDGHAZCZR |
AM2634COKFHMZCZRQ1 |
AM2632COKFHMZCZRQ1 |
AM2631CODGHMZCZRQ1 |
|
Core Characteristics |
||||||
R5 Cores |
4 |
2 |
1 |
4 |
2 |
1 |
Clock Speed |
400 MHZ |
400 MHZ |
400 MHZ |
400 MHZ |
400 MHZ |
400 MHZ |
Memory |
2 MB |
2 MB |
1 MB |
2 MB |
2 MB |
2 MB |
Safety and Security |
||||||
Functional Safety |
Yes |
Yes |
No |
Yes |
Yes |
No |
Security |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Auto Qual |
No |
No |
No |
Yes |
Yes |
Yes |
Temperature |
-40 to 105C |
-40 to 105C |
-40 to 105C |
-40 to 150C |
-40 to 150C |
-40 to 150C |
Control System Instances |
||||||
Analog |
Enhanced Analog |
Enhanced Analog |
Standard Analog |
Enhanced Analog |
Enhanced Analog |
Standard Analog |
ADC |
5 |
5 |
3 |
5 |
5 |
3 |
PWM |
32 |
32 |
16 |
32 |
32 |
16 |
QEP |
3 |
3 |
2 |
3 |
3 |
2 |
SDFM |
2 |
2 |
1 |
2 |
2 |
1 |
CMP |
20 |
20 |
12 |
20 |
20 |
12 |
Networking Protocols |
||||||
Features |
M |
L |
D |
K |
K |
D |
Bosch CAN-FD |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
EtherCAT |
Yes |
Yes |
No |
No |
No |
No |
Kunbus Stacks (integrated Stacks) |
Yes |
No |
No |
No |
No |
No |
ICSS-PRU |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
General Characteristics |
||||||
Package |
15x15 |
15x15 |
15x15 |
15x15 |
15x15 |
15x15 |
Auto Qual |
No |
No |
No |
Yes |
Yes |
Yes |
In AM263x multiple R5F cores are arranged in cluster with 256KB of shared tightly coupled memory (TCM) as shown in Figure 3-1.
Here after in this document the R5 cores are defined as explained below based on the position of the core in the cluster:
AM2634 has two R5 clusters:
AM2632 has two R5 clusters:
Am2631 has one R5 cluster:
All the examples in the SDK are supported for AM2634 devices. Currently, IPC and Networking are not supported for some devices. The 8th character of the part numbers in Section 2 represent Device Operating Performance Points of the device. Similarly, the 6th character represents number of R5 cores in the device, see Section 2 for more information. For example in AM2632COLFHAZCZR, O is the speed and memory setting and 2 represents two R5 cores. Section 4 lists supported examples in the MCU PLUS SDK for AM263x family of devices, based on the memory setting and number of cores.
Examples in the SDK |
Sub-modules |
Memory Classification |
Classification based on Number of Cores |
|||
---|---|---|---|---|---|---|
K,O,P |
N |
4 cores |
2 cores |
1 core |
||
Example Projects |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Software Diagnostics Library (SDL) |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Empty Project (Multi-Core Example) |
Supported |
Supported |
Supported |
Supported, see also Section 6 |
Only r5ss0_0 example is supported. Multi-core example is not supported. |
|
Hello World Project |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Hello World C++ Project |
Supported |
Supported |
Supported |
Supported |
Supported |
|
OS Kernel and Driver Porting Layer (DPL) |
Supported |
Supported |
Supported |
Supported |
Supported |
|
SOC and Board Peripheral Drivers |
Control IP Examples |
Supported |
Supported |
Supported |
Supported |
Supported |
GPIO |
Supported |
Supported |
Supported |
Supported |
Supported |
|
IPC (Multi-core example) |
Supported |
Supported |
Supported |
Supported, see also Section 5 |
Not Supported. |
|
HSM |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Serial Communication Examples |
Supported |
Supported |
Supported |
Supported |
Supported |
|
EDMA |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Boot |
Supported |
Supported |
Supported |
Supported |
Supported |
|
WatchDog |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Secondary Bootloader (SBL) |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Real Time Debug |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Industrial Communications Toolkit |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Networking |
Enet CPSW EST Example |
Supported |
Supported |
Supported |
Supported |
Supported |
Enet Layer 2 CPSW Example |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Layer 2 CPSW SWITCH Example |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Layer 2 Multi-Channel Example |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Loopback Example |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Lwip CPSW RAW HTTP Server |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Lwip Socket Example |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Enet Tx Scatter Gather Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet Lwip TCP Client Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet Lwip TCP Server Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet Lwip UDP IGMP Server Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet Lwip UDP Server Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet Lwip CPSW Example |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet CPSW TimeSync PTP Demo |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
Enet CPSW Operation Modes Demo |
Supported |
Not Supported |
Supported |
Supported, not supported if Memory setting is N |
Supported, not supported if Memory setting is N |
|
MATHLIB Benchmark |
Supported |
Supported |
Supported |
Supported |
Supported |
|
SECURITY |
Supported |
Supported |
Supported |
Supported |
Supported |
|
Software Diagnostics Library (SDL) |
Supported |
Supported |
Supported |
Supported |
Supported |
Changes in the IPC Notify Example to build through CCS to create a dual core .appimage for AM2632:
This section contains changes made in the IPC Notify example to create a Dual Lockstep Core (two cores) example from an existing four-core IPC Notify example.
This section provides a simple method to create a Dual Lockstep Core (two cores) example from an existing four-core IPC Notify example. This example does not involve any system project; therefore, the user must use the command line to create a final combined app image. Steps for creating a Dual Core Appimage are described below.
uint32_t gRemoteCoreId[] = {
CSL_CORE_ID_R5FSS1_0,
CSL_CORE_ID_MAX
};
C:\ti{sysconfig}\nodejs\node C:\ti{mcu_plus_sdk}/tools/boot/multicoreImageGen/multicoreImageGen.js --devID 55 --out Debug/Combined.debug.appimage ../ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang/Debug/ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang.rprc@0 ../ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang/Debug/ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang.rprc@2
The command format for MulticoreImage Generation is given below.
cd ${SDK_INSTALL_PATH}/tools/boot/multicoreImageGen${NODE} multicoreImageGen.js --devID {DEV_ID} --out {Output image file (.appimage)} {core 1 rprc file}@{core 1 id} [ {core n rprc file}@{core n id} ... ]
This process helps to import the existing IPC Notify example as a 2-core system project with R50_0 as the main core and R51_0 as the remote core. The following changes need to be done in the make files in the SDK for IPC Notify. Choose the folder depending on your device type CC or LP.
Open the system_freertos_nortos makefile at the locaion:examples\drivers\ipc\ipc_notify_echo\am263x-cc\system_freertos_nortos\ makefile.
Retain the CORE_0 definition. Remove CORE_1 and CORE_2 definitions from lines 18 and 19 as these are not required.
Define CORE_1 as below:
CORE_1=--script ../r5fss1-0_nortos/example.syscfg --context r5fss1-0 --output ../r5fss1-0_nort os/ti-arm-clang/generated
Remove $(CORE_3) and $(CORE_2) from CORES. And define CORES as shown.
CORES = \
$(CORE_1) \
$(CORE_0) \
all:
syscfg $(MAKE) -C ../r5fss0-0_freertos/ti-arm-clang/ all
$(MAKE) -C ../r5fss1-0_nortos/ti-arm-clang/ all
$(MAKE) $(MULTI_CORE_BOOTIMAGE_NAME)
Remove r5fss0-1 and r5fss1-1 instances from clean section.
clean:
$(MAKE) -C ../r5fss0-0_freertos/ti-arm-clang/ clean
$(MAKE) -C ../r5fss1-0_nortos/ti-arm-clang/ clean
$(RM) $(MULTI_CORE_BOOTIMAGE_NAME)
$(RM) $(MULTI_CORE_BOOTIMAGE_NAME_SIGNED)
$(RM) $(MULTI_CORE_BOOTIMAGE_NAME_XIP)
Remove r5fss0-1 and r5fss1-1 instances from scrub section.
scrub:
$(MAKE) -C ../r5fss0-0_freertos/ti-arm-clang/ scrub
$(MAKE) -C ../r5fss1-0_nortos/ti-arm-clang/ scrub
Remove r5fss0-1 and r5fss1-1 instances from MULTI_CORE_APP_PARAMS section.
MULTI_CORE_APP_PARAMS = \
../r5fss0-0_freertos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc@$(BOOTIMAGE_CORE_ID_r5fss0-0) \
../r5fss1-0_nortos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc@$(BOOTIMAGE_CORE_ID_r5fss1-0) \
Remove r5fss0-1 and r5fss1-1 instances from MULTI_CORE_APP_PARAMS_XIP section.
MULTI_CORE_APP_PARAMS_XIP = \
../r5fss0-0_freertos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc_xip@$(BOOTIMAGE_CORE_ID_r5fss0-0) \
../r5fss1-0_nortos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc_xip@$(BOOTIMAGE_CORE_ID_r5fss1-0) \
Remove r5fss0-1 and r5fss1-1 instances from MULTI_CORE_BOOTIMAGE_DEPENDENCY section.
MULTI_CORE_BOOTIMAGE_DEPENDENCY = \
../r5fss0-0_freertos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc \
../r5fss1-0_nortos/ti-arm-clang/ipc_notify_echo.$(PROFILE).rprc \
Open the projectspec makefile at the location: examples\drivers\ipc\ipc_notify_echo\am263x-cc\system_freertos_nortos\ makefile_projectspec.
Make the following changes in this makefile:
Remove r5fss0-1 and r5fss1-1 instances from clean section to support only r5fss0-0 and r5fss1-0.
clean:
$(CCS_ECLIPSE) -noSplash -data $(MCU_PLUS_SDK_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectBuild -ccs.projects
$(PROJECT_NAME) -ccs.configuration
$(PROFILE) -ccs.clean
$(MAKE) -C ../r5fss0-0_freertos/ti-arm-clang/ -f makefile_projectspec clean
$(MAKE) -C ../r5fss1-0_nortos/ti-arm-clang/ -f makefile_projectspec clean
Open the bootimage_gen makefile at the location: examples\drivers\ipc\ipc_notify_echo\am263x-cc\system_freertos_nortos\ makefile_system_ccs_bootimage_gen.
Make the following changes in this makefile:
Remove r5fss0-1 and r5fss1-1 instances from MULTI_CORE_APP_PARAMS section.
MULTI_CORE_APP_PARAMS = \
../ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang/$(PROFILE)/ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang.rprc@$(BOOTIMAGE_CORE_ID_r5fss0-0) \
../ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang/$(PROFILE)/ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang.rprc@$(BOOTIMAGE_CORE_ID_r5fss1-0) \
Remove r5fss0-1 and r5fss1-1 instances from MULTI_CORE_APP_PARAMS_XIP section.
MULTI_CORE_APP_PARAMS_XIP = \
../ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang/$(PROFILE)/ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang.rprc_xip@$(BOOTIMAGE_CORE_ID_r5fss0-0) \
../ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang/$(PROFILE)/ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang.rprc_xip@$(BOOTIMAGE_CORE_ID_r5fss1-0) \
Open the system projectspec file at the location: examples\drivers\ipc\ipc_notify_echo\am263x-cc\system_freertos_nortos\ system.projectspec.
Make the following changes in thisprojectspec file:
Remove r5fss0-1 and r5fss1-1 projectspec files from getting imported with the system_freertos_nortos project (lines 4 and 6).
<projectSpec>
<import spec="../r5fss0-0_freertos/ti-arm-clang/example.projectspec"/>
<import spec="../r5fss1-0_nortos/ti-arm-clang/example.projectspec"/>
Open the system projectspec file at the location: examples\drivers\ipc\ipc_notify_echo\am263x-cc\system_freertos_nortos\ system.xml.
Make the following changes in this projectspec file:
Remove r5fss0-1 and r5fss1-1 cores project configurations from the xml file and only keep 0-0 and 1-0 cores. Modify core 1 as r5fss1-0 core as shown below.
<project configuration="@match" id="project_0" name="ipc_notify_echo_am263x-cc_r5fss0-0_freertos_ti-arm-clang">
</project>
<core id="MAIN_PULSAR_Cortex_R5_0_0" project="project_0"/>
<project configuration="@match" id="project_1" name="ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang">
</project>
<core id="MAIN_PULSAR_Cortex_R5_1_0" project="project_1"/>
After modifying the system project make files, import this example into your CCS. This step is the same as the other system projects.
Modify your example.syscfg to support IPC notify feature to the cores 0-0 and 1-0. Subsequently, disable IPC Notify feature for cores 1-0 and 1-1.
Change the Remote Core ID List to support only core 1-0, and remove rest of the cores as shown below. Make this change in ipc_notify_echo .c file of both ipc_notify_echo_am263x-cc_r5fss0-0_nortos_ti-arm-clang and ipc_notify_echo_am263x-cc_r5fss1-0_nortos_ti-arm-clang projects.
uint32_t gRemoteCoreId[] = {
CSL_CORE_ID_R5FSS1_0,
CSL_CORE_ID_MAX
};
Now build the system project to generate a combined app image for core 0-0 and 1-0. This app image can be flashed on to your AM2632 device.In MCU-PLUS-SDK_AM263x, system projects are configured for 2-core devices by default. But the examples are present for core - R50_0 and R50_1. These examples can be modified to enable the system project for the cores R50_0 and R51_0.
To find the system projects, go to → C:\ti\mcu_plus_sdk_am263x_08_05_00_24\examples\empty. Here, the SDK has 2 System Projects: freeRtos System Project and Nortos System Project. The engineer can choose a system project for the application.
The following files need to be modified:
examples\empty\am263x-cc\system_nortos\makefile
examples\empty\am263x-cc\system_nortos\makefile_projectspec
examples\empty\am263x-cc\system_nortos\makefile_system_ccs_bootimage_gen
examples\empty\am263x-cc\system_nortos\system.projectspec
examples\empty\am263x-cc\system_nortos\system.xml
Replace r5fss0-1 core with r5fss1-0 in these files. These changes are explained in the Section 5.
AM2631 is a single core device; multi-core system projects are not supported for single-core devices.