Feature | Module |
EtherCAT examples running from On-chip RAM | Industrial Communications Toolkit |
EtherNet/IP Adapter examples with Device Level Ring Support | Industrial Communications Toolkit |
Profinet RT and IRT examples | Industrial Communications Toolkit |
SBL OSPI booting R5F, M4F and Linux on A53 | Bootloader |
IPC RPMsg with M4F | IPC |
MMCSD Raw Write/Read support for MMCSD0, eMMC | MMCSD |
Layer 2 Timesync example | CPSW |
Layer 2 Switch/Dual-MAC example | ICSSG |
VLAN,FDB conformance example | ICSSG |
Crypto SHA and AES examples | CRYPTO |
FreeRTOS+FAT file system integrated to use in a NO-RTOS environment | File System |
MMCSD File I/O support for MMCSD0, eMMC using FreeRTOS+FAT | MMCSD |
SBL MMCSD enabled to boot from SD card using File I/O | Bootloader |
SBL eMMC booting R5F, M4F and Linux on A53 | Bootloader |
Module | Supported CPUs | SysConfig Support | OS support | Key features tested | Key features not tested / NOT supported |
Address Translate | M4F | YES | FreeRTOS, NORTOS | Use RAT to allow M4F access to peripheral address space | - |
Cache | R5F, A53 | YES | FreeRTOS, NORTOS | Cache write back, invalidate, enable/disable | - |
Clock | R5F, M4F, A53 | YES | FreeRTOS, NORTOS | Tick timer at user specified resolution, timeouts and delays | - |
CycleCounter | R5F, M4F, A53 | NA | FreeRTOS, NORTOS | Measure CPU cycles using CPU specific internal counters | - |
Debug | R5F, M4F, A53 | YES | FreeRTOS, NORTOS | Logging and assert to any combo of: UART, CCS, shared memory | - |
Heap | R5F, M4F, A53 | NA | FreeRTOS, NORTOS | Create arbitrary heaps in user defined memory segments | - |
Hwi | R5F, M4F, A53 | YES | FreeRTOS, NORTOS | Interrupt register, enable/disable/restore | - |
MPU | R5F, M4F | YES | FreeRTOS, NORTOS | Setup MPU and control access to address space | - |
MMU | A53 | YES | NORTOS | Setup MMU and control access to address space | - |
Semaphore | R5F, M4F, A53 | NA | FreeRTOS, NORTOS | Binary, Counting Semaphore, recursive mutexs with timeout | - |
Task | R5F, M4F, A53 | NA | FreeRTOS | Create, delete tasks | - |
Timer | R5F, M4F, A53 | YES | FreeRTOS, NORTOS | Configure arbitrary timers | - |
Event | R5F, M4F | YES | FreeRTOS | Setting, getting, clearing, and waiting of Event bits | - |
Peripheral | Supported CPUs | SysConfig Support | Key features tested | Key features not tested / NOT supported |
ADC | R5F | YES | Single conversion (one-shot mode), interrupt mode, DMA mode | Continuous conversion not tested |
CRC | R5F | YES | CRC in full CPU mode | - |
DDR | R5F | YES | Tested LPDDR4 at 400MHz frequency. | - |
ECAP | R5F | YES | Frequency, Duty cycle, interrupt mode | PWM mode not tested |
EPWM | R5F | YES | Different Frequency, Duty cycle, interrupt mode, Deadband and chopper module | Tripzone module not tested |
EQEP | R5F | YES | Signal Frequency and Direction, interrupt mode | - |
FSI (RX/TX) | R5F | YES | RX, TX, polling, interrupt mode, single/dual lanes | - |
GPIO | R5F, M4F, A53 | YES | Basic input/output, GPIO as interrupt | GPIO as interrupt is not tested for A53. |
GTC | R5F, A53 | NA | Enable GTC, setting FID (Frequency indicator) | - |
I2C | R5F, M4F, A53 | YES | Master mode, basic read/write, polling and interrupt mode | Slave mode not supported. M4F not tested due to EVM limitation |
IPC Notify | R5F, M4F, A53 | YES | Low latency IPC between RTOS/NORTOS CPUs | - |
IPC Rpmsg | R5F, M4F, A53 | YES | RPMessage protocol based IPC for all R5F, M4F, A53 running NORTOS/FreeRTOS/Linux | - |
MCAN | R5F | YES | RX, TX, interrupt and polling mode | - |
MCSPI | R5F, M4F | YES | Master/Slave mode, basic read/write, polling, interrupt mode | DMA mode not supported |
MDIO | R5F | NA | Register read/write, link status and link interrupt enable API | - |
MMCSD | R5F | YES | Raw read/write and file I/O on MMCSD0 eMMC, and MMCSD1 SD. eMMC tested till HS SDR mode (8-bit data, 52 MHz), SD tested till SD HS mode (4-bit, 25 MHz) | Interrupt mode not tested |
OSPI | R5F | YES | Read direct, Write indirect, Read/Write commands, DMA for read, PHY Mode | Interrupt mode not supported |
Pinmux | R5F, M4F, A53 | YES | Tested with multiple peripheral pinmuxes | - |
PRUICSS | R5F | YES | Tested with Ethercat, EtherNet/IP, IO-Link, ICSS-EMAC, HDSL, EnDat | - |
SOC | R5F, M4F, A53 | YES | lock/unlock MMRs, get CPU clock, CPU name, clock enable, set frequency | - |
Sciclient | R5F, M4F, A53 | YES | Tested with clock setup, module on/off | - |
SPINLOCK | R5F, M4F, A53 | NA | Lock, unlock HW spinlocks | - |
UART | R5F, M4F, A53 | YES | Basic read/write, polling, interrupt mode, | HW flow control not tested. DMA mode not supported |
UDMA | R5F, A53 | YES | Basic memory copy, SW trigger, Chaining | - |
Module | Supported CPUs | SysConfig Support | OS Support | Key features tested | Key features not tested |
EtherCAT Slave FWHAL | R5F | NO | FreeRTOS | Tested with ethercat_slave_beckhoff_ssc_demo example | Reset isolation |
EtherCAT Slave Evaluation Stack | R5F | NO | FreeRTOS | Tested with examples from examples\industrial_comms\ethercat_slave_demo folder | - |
EtherNet/IP Adapter FWHAL | R5F | NO | FreeRTOS | Tested with examples from examples\industrial_comms\ethernetip_adapter_demo folder | Multicast Filtering |
EtherNet/IP Adapter Evaluation Stack | R5F | NO | FreeRTOS | Tested with examples from examples\industrial_comms\ethernetip_adapter_demo folder | - |
IO-Link Master Evaluation Stack | R5F | NO | FreeRTOS | Tested with iolink_master_demo example | - |
Profinet Device FWHAL | R5F | NO | FreeRTOS | Tested with examples from examples\industrial_comms\profinet_device_demo folder | MRP |
Profinet Device Evaluation Stack | R5F | NO | FreeRTOS | Tested with examples from examples\industrial_comms\profinet_device_demo folder | - |
ID | Head Line | Module | Applicable Releases | Applicable Devices | Resolution/Comments |
MCUSDK-750 | Not all pins are supported by SYSCFG. Leads to manual pinmux of ICSSG PRU pins. | ICSS | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1564 | time.h APIs do not work as expected with SBL OSPI | SBL, OSPI | 7.3.0 onwards | AM64x, AM243x | When the time.h functions are called from a CCS environment, the implementation uses queries the host PC to get the time. Hence this does not work with a non-CCS (SBL) environment. Clock APIs like ClockP_getTimeUsec should be used instead. |
MCUSDK-1598 | LWIP: UDP iperf test results in assert due to memory alloc failure | LWIP | 8.0 onwards | AM64x, AM243x | NONE |
MCUSDK-1599 | LWIP: LwIP Stack diagnostics prints like assert and printf are not redirected to DebugP_log, i.e UART terminal | LWIP | 8.0 onwards | AM64x, AM243x | look at CCS console for these logs |
MCUSDK-1620 | A53 NORTOS: A53 Interrupts doesn't work with CCS Reset and Reload | DPL | 8.1 onwards | AM64x | Power cycle the EVM before reloading application to A53 |
MCUSDK-1622 | ClockP_start is not allowed from ISR context | DPL | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1623 | A53 NORTOS: Application halts when using Console logs without debug port connected | DPL | 8.1 onwards | AM64x | Use UART logs when using booting through SBL |
MCUSDK-1629 | Timer configuration is not allowed in units of nsecs and does not allow to select different clock source | DPL / Timer | 7.3.0 onwards | AM64x, AM243x | Added a new parameter to allow set timer period in units of nsecs and updated SysConfig to allow selecting different timer clock sources |
MCUSDK-1637 | EtherNet/IP DLR Port 1 Interrupt comes multiple times | EtherNet/IP Adapter FWHAL | 7.3.0 onwards | AM64x, AM243x | Fixed an offset calculation in PORT 1 ISR |
MCUSDK-1646 | 16 bits accessed instead of 8 bits while checking for busy_s bit of queue in ICSS EMAC | ICSS-EMAC | 7.3.0 onwards | AM64x, AM243x | Changed HW_WR_REG16 to HW_WR_REG8 |
MCUSDK-1651 | In EtherNet/IP DLR, Neighbour Check Requests are sent 4 times instead of 3 | EtherNet/IP Adapter FWHAL | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1652 | Data abort is seen in TimeSync_drvInit function of ICSS TimeSync driver | ICSS TimeSync | 7.3.0 onwards | AM64x, AM243x | Add "-mno-unaligned-access" flag for library compilation |
MCUSDK-1736 | TimeSync_drvDisable API does not work everytime | ICSS TimeSync | 7.3.0 onwards | AM64x, AM243x | NONE |
MCUSDK-1737 | ICSS TimeSync driver tries to create a Hwi with priority 20 | ICSS TimeSync | 7.3.0 onwards | AM64x, AM243x | Changed priority to 15 |
MCUSDK-1743 | [EQEP]Incorrect Maximum Limit Check for Pulse Width Period Cycles | EQEP | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1755 | Interrupt callback does not happen for CPSW | CPSW | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1758 | [UART]Read Return Partial Mode is not functional | UART | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1814 | [MCSPI]Transfer Timeout feature is not functional | McSPI | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1815 | [MCSPI]Multi Channel Transfer, Results in Failure | McSPI | 7.3.0 onwards | AM64x, AM243x | Enabled FIFO for all channels in case of Multi Channel Transfer. |
MCUSDK-1824 | A53 DPL: malloc not working with GCC AArch64 compiler | DPL | 8.0 onwards | AM64x | Linker command file updates to add symbols to mark heap start and heap end |
MCUSDK-1830 | [MCSPI]Incorrect channel configuration in slave mode, Results in Failure | McSPI | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1898 | UART Read fails at baud rate greater than 230.4kbps | UART | 7.3.0 onwards | AM64x, AM243x | Updated driver and SYSCFG to support baudrate greater than 230.4kbps. |
MCUSDK-1907 | [MCSPI]Channel number configuration is not 0 in slave mode | McSPI | 7.3.0 onwards | AM64x, AM243x | SYSCFG updates to configure channel number always to 0 in SLAVE mode. |
MCUSDK-2082 | [MCSPI]Master RX Only mode, Slave TX Only Mode transfer is not functional | McSPI | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1954 | PHY delay values for RX and TX are incorrect in Profinet Device FWHAL | Profinet Device FWHAL | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-1980 | Change optimization level for ti-arm-clang from O3 to Os | Build | 7.3.0 onwards | AM64x, AM243x | Fixed |
MCUSDK-2060 | Need CMSIS example and benchmark data | Bench Mark Demo | 7.3.0 onwards | AM64x, AM243x | Fixed |
ID | Head Line | Module | Applicable Releases | Applicable Devices | Workaround |
MCUSDK-626 | DMA not working with ADC FIFO 1 | ADC | 7.3.0 onwards | AM64x, AM243x | Use ADC FIFO 0 |
MCUSDK-1016 | Semaphore does not function as expected when "post" call is present in multiple ISRs at different priorities | DPL | 7.3.0 onwards | AM64x, AM243x | Interrupt nesting should be disabled. SDK disables interrupt nesting by default. |
MCUSDK-1572 | OSPI: Flash IO and Flash DMA examples fail for AM243x-LP when built from CCS in release mode | OSPI | 7.3.0 onwards | AM243x | i. Build via makefile
ii.Try the CCS build in debug mode
iii.Disable phy mode if performance is not concern
iv. Change memcpy version to slow version in CCS Project properties :
Properties->Build->Arm linker->Advanced options->Link-time optimization->choose "small" option for using memcpy slow version. |
MCUSDK-2131 | EtherCAT Slave increments long frame errors for frames with size less than 2000 bytes | EtherCAT Slave FWHAL | 7.3.0 onwards | AM64x, AM243x | - |
MCUSDK-2135 | Insufficient UDMA TX channels allocated for in Dual-mac mode | Enet | 8.1.0 onwards | AM64x, AM243x | Allocate minimum of 2 TX channels(ENET_CFG_TX_CHANNELS_NUM macro) in enet_cfg.h file |
MCUSDK-2171 | SBL OSPI, SBL Linux (OSPI and eMMC) pauses in between the SBL profiling logs when UART is in interrupt mode. The issue is observed in debug build only. | SBL, UART | 8.1.0 onwards | AM64x, AM243x | Change the UART mode to polling mode |
This section lists changes which could affect user applications developed using older SDK versions. Read this carefully to see if you need to do any changes in your existing application when migrating to this SDK version relative to previous SDK version. Also refer to older SDK version release notes to see changes in earlier SDKs.
Module | Affected API | Change | Additional Remarks |
EtherCAT Slave FWHAL and stack, EtherNet/IP Adapter FWHAL and stack, IO-Link stack and Profinet Device FWHAL | - | Sources are moved from ${SDK_INSTALL_PATH}/source/industrial_protocols to ${SDK_INSTALL_PATH}/source/industrial_comms | - |
SysConfig | - | Removed the module "Ethernet (ICSS)" and added "EtherNet/IP" and "Profinet" modules in SysConfig. Also removed inclusion of pins which are either not connected appropriately on the board or not required. | Any examples using "Ethernet (ICSS)" module in SysConfig will be affected. Any .syscfg file using this module, needs to be updated by removing lines related to "Ethernet (ICSS)" module using text editor and adding "EtherNet/IP" or "Profinet" module using SysConfig GUI. |
SysConfig | - | In "EtherCAT" module, removed inclusion of pins which are either not connected appropriately on the board or not required. | Any examples using "EtherCAT" module in SysConfig will be affected. Any .syscfg file using this module, needs to be updated by first removing and then adding this module back using SysConfig GUI. |
EtherNet/IP Adapter FWHAL | EIP_drvInit | Added pruicssHandle in EIP_Handle structure | pruicssHandle should be set by user before calling EIP_drvInit API. |
Profinet Device FWHAL | PN_initDrv | Added latchIntConfig in PN_IntConfig structure | latchIntConfig should be set by user before calling PN_initDrv API, if ENABLE_LATCH_SUPPORT macro is enabled in ${SDK_INSTALL_PATH}/industrial_comms/profinet_device/icss_fwhal/IRT/pnDrvConfig.h or ${SDK_INSTALL_PATH}/industrial_comms/profinet_device/icss_fwhal/RT_MRP/pnDrvConfig.h . |
ICSS TimeSync | TimeSync_reset | Added ptpDrvStackReset in TimeSync_Config_t structure | ptpDrvStackReset callback function should be provided by the user if a PTP stack reset callback is needed inside TimeSync_reset . |