2.1. Release Notes

2.1.1. Overview

The Processor Software Development Kit (Processor-SDK) provides the core foundation and building blocks that facilitate application software development on TI’s embedded processors. This Release Notes focuses on the Real-time operating system (RTOS).


2.1.2. Licensing

Please refer to the software manifest, which outlines the licensing status for all packages included in this release. The manifest can be found on the SDK download page or in the installed directory as indicated below.


2.1.3. Documentation

  • Getting Started Guide: Provides information on getting the software and running basic examples/demonstrations bundled in the SDK.
  • Migration Guide Provides migration information for applications built on top of the Processor SDK for RTOS.
  • Software Developer Guide Provides information on features, functions, delivery package and, compile tools for the Processor SDK RTOS release. This also provides detailed information regarding software elements and software infrastructure to allow developers to start creating applications.
  • Software Manifest: Provides license information on software included in the SDK release. This document is in the release at /processor_sdk_rtos_<SOC>_<version>/docs and available to view from the software download page.
  • EVM Quick Start Guide: Provides information on hardware setup and running the demonstration application that is loaded on flash. This document is provided as part of the EVM kit.

2.1.4. Processor SDK v06.01.00

Released Oct 2019

What’s New

New Features

Note

C64P big endian targets are no longer supported since this release.

Component Version

The following software components and host tools are bundled with the SDK installer. See the Software Developer Guide for more information on each item.

Note

This release has been tested with the following component and tool versions. It is recommended to use the versions listed here to avoid compatibility issues.
Component Version AM335x AM437x AM57x AM65x K2H/K2K K2E K2L K2G C665x C667x OMAP-L137 OMAP-L138
CG_XML 2.61.0 X X X X X X X X X X X X
CTOOLSLIB 2.2.0.0     X   X X X X X X    
DSPLIB 3.4.0.4     X   X X X X X X X X
EDMA3 LLD 2.12.5.30 X X X     X X X X X X X
FC 3.40.2.7     X   X X X X X X    
FFTLIB 3.1.0.0                   X    
IMGLIB 3.1.1.0     X   X X X X X X    
IPC 3.50.4     X X X X X X X X   X
LIBARCH 1.0.0.0         X         X    
LINALG 1.2.0.0         X         X    
MATHLIB 3.1.2.4     X   X X X X X X X X
MPM 3.0.4.0         X X X X        
NDK 3.61.1 X X X X X X X X X X X X
NS 2.60.1 X X X X X X X X X X X X
OPENCL 1.1.19.2     X                  
OPENMP 2.6.3.0     X   X X X X X X    
PDK   1.0.16 1.0.16 1.0.16 1.0.6 4.0.15 4.0.15 4.0.15 1.0.15 2.0.15 2.0.15 1.0.10 1.0.10
SYS/BIOS 6.76.2 X X X X X X X X X X X X
UIA 2.30.1.2     X X X X X X X X X X
XDAIS 7.24.0.4     X   X X X X X X X X
XDCTOOLS 3.55.02 X X X X X X X X X X X X

The following compilers are bundled with the SDK installer:

Compiler Version AM335x AM437x AM57x AM65x K2H/K2K K2E K2L K2G C665x C667x OMAP-L137 OMAP-L138
GNU ARM Embedded 7-2018-q2 A8 A9 A15   A15 A15 A15 A15        
GNU Linaro GCC 7.2.1       A53                
TI ARM CGT 18.12.1     M4 R5     A15(SBL)     ARM9 ARM9  
TI C6000 CGT 8.3.2     C66x   C66x C66x C66x C66x C66x C66x C674x C674x
TI PRU CGT 2.3.2 PRU PRU PRU PRU     PRU          

The SDK uses Code Composer Studio (CCS) as the integrated development environment (IDE) for all devices and EVMs:

Component Version AM335x AM437x AM57x AM65x K2H/K2K K2E K2L K2G C665x C667x OMAP-L137 OMAP-L138
CCS 9.1.0 X X X X X X X X X X X X
EMU Pack Sitara Device 1.4.5 X X X X                
TI

Emulators

8.3.0.0 X X X X X X X X X X X X

If you need to install CCS, see the CCS installation section in the Getting Started Guide for options to select for Processor-SDK.

2.1.5. Fixed Issues

Record ID Board/s Component/s Summary
PRSDK-5916 *Multiple platforms High-Speed Drivers Sitara EMMC driver does not support data bus width other than 8 bit
PRSDK-4764 *Multiple platforms PDK icss_dual emac firmware: PTP frames are all put under queue 0 for both ports
PRSDK-5789 *Multiple platforms System Integration Top level make windows fails intermittently with: fork: can’t reserve memory for stack
PRSDK-5624 *Multiple platforms Collateral, Optimized Libraries FFTLIB documentation for AM57xx and K2H devices is missing
PRSDK-5303 am335x-evm, am335x-ice, am335x-sk, amic110-ice Networking APP image for NIMU CCLINK examples on AM335x/AMIC110 exceeds the SPI flash size
PRSDK-5683 am335x-ice Boot OOB MLO from PSDK doesn’t work with PRU-ICSS Ethernet/IP
PRSDK-5770 am335x-ice, am437x-idk, beagleboneblack PRUSS-Firmware PUT_IORD_SHORT not working after issuing PUT_IOWR_SHORT
PRSDK-5403 am437x-idk Control Drivers iolink: channel 7 has ISDN read/write response error
PRSDK-5612 am437x-idk OSAL Missing interrupt enable/disable option in OSAL HwiP_Params
PRSDK-5690 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk High-Speed Drivers Improper test of MMCSD driver with power switch from 3.3V to 1.8V
PRSDK-5730 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk High-Speed Drivers Need to implement AM57x errata i926 in PCIE RX PHY setting sample code
PRSDK-6055 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk High-Speed Drivers FATFS example crash when insert/remove MMCSD cards
PRSDK-5611 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk Networking NDK HTTP server memory leak
PRSDK-5851 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk Optimized Libraries Fail to run RTOS examples on non-primary A15 core
PRSDK-4850 am571x-idk, am572x-evm, am572x-idk Audio, Video, & Display RTOS: VPS test fails using MMCSD/UARTApploader on am571x-idk, am572x-evm and am572x-idk platforms
PRSDK-5466 am654x-evm Boot AM65xx/OSPI/XIP: OSPI driver re-open() fails on XIP mode
PRSDK-5000 am654x-evm Chip Support Incorrect DMSC IRAM size in CSL-RL
PRSDK-5638 am654x-evm Diagnostics AM65xx diag self test hangs during memory test on R5 core
PRSDK-5253 am654x-evm OSAL [osal] R5 OsalArch_HwiPCreate calls system enable() unconditionally
PRSDK-6056 am654x-evm, am654x-hsevm, am654x-idk Board Support make clean board fails when run from <pdk>packages
PRSDK-5952 am654x-evm, am654x-hsevm, am654x-idk Networking am65xx: icssg: fw: shutdown command doesn’t work
PRSDK-6259 am654x-evm, am654x-idk Board Support AM65xx Board lib build failure with PMT output files
PRSDK-4706 am654x-evm, am654x-idk Boot SBL: MCU0 Boot in R5 Split Mode not supported in SBL
PRSDK-6040 am654x-evm, am654x-idk Boot Uniflash 5.0.0 hangs at 99% while flashing sbl_baremetal_boot_{xip/smp} appimage
PRSDK-5669 am654x-evm, am654x-idk Diagnostics Maxwell DIAG: OSPI stress test hangs
PRSDK-5535 am654x-evm, am654x-idk KeyStone Drivers SA UnitTest MPU failure: Did not find SA reply in rx ring 305 from SYSFW
PRSDK-4744 am654x-evm, am654x-idk Networking nimu_free_pkt() wrongly frees p_pkt_desc
PRSDK-6059 am654x-evm, am654x-idk PDK reserved area for DMSC in top level linker command file in PDK is incorrect
PRSDK-4739 am654x-evm, am654x-idk SCIClient ccsLoadDmsc fails if 2 or more boards configured
PRSDK-4927 am654x-evm, am654x-idk SCIClient sciclient: APIs seems to always use self host id to be core 0
PRSDK-6047 am654x-idk Board Support CPSWHSDIV_CLKOUT2 should be initialized to 250MHz
PRSDK-6445 am654x-idk Example Invalid “project_detected” variable in pdkProjectCreate.bat
PRSDK-5340 am654x-idk Example, Networking mis-matched number of channels and allocated memory arrays with EmacLoopbackTest
PRSDK-5947 am654x-idk PDK EMAC fails to remove CRC from Locally received frame in TSN Switch
PRSDK-6254 am654x-idk PDK emac_poll function takes ~1ms time during link change
PRSDK-5793 beagleboneblack PDK, PRUSS-Firmware pdkAppImageCreate script creates large binaries for PRU FW projects
PRSDK-5675 c6657-evm Boot To bring back bootloader utilities into Processor SDK RTOS
PRSDK-5766 c6657-evm, c6678-evm Boot IBL external GIT and release source don`t match
PRSDK-6027 c6678-evm Demonstrations Image processing demo doesn’t work on C6678
PRSDK-6301 c6678-evm Networking NDK NIMU driver memory double free error
PRSDK-5307 c6748-lcdk Control Drivers SPI_transferCancel function not implemented in SPI v0 driver
PRSDK-5920 c6748-lcdk, k2g-evm, k2g-ice, k2h-evm, omapl137-evm, omapl138-lcdk OSAL OSAL DSP test hangs after ‘HWI tests have passed’
PRSDK-5981 c6748-lcdk, omapl137-evm, omapl138-lcdk High-Speed Drivers MMCSD DMA test projects hangs on OMAPL138/137
PRSDK-5799 c6748-lcdk, omapl138-lcdk High-Speed Drivers Setting RMIISPEED bit in EMAC HwAttrs structure has no effect
PRSDK-5701 j721e-evm PDK NIMU: NIMU should not call Udma_init
PRSDK-5915 k2e-evm, k2g-evm, k2g-hsevm, k2g-ice, k2h-evm, k2k-evm, k2l-evm Chip Support Incorrect Keystone II Serdes Rx valid signal for PCIE interface using CSL
PRSDK-5388 k2e-evm, k2h-evm, k2k-evm PDK mmap_TestProject DSP LE/BE: error #3188: Object size is greater than maximum supported size
PRSDK-5959 k2g-evm, k2g-hsevm, k2g-ice Diagnostics Incorrect GPMC register access on K2G NAND diagnostics
PRSDK-5727 k2g-hsevm Boot K2G HS SBL fails out of the box in SBL_initSK
PRSDK-4214 k2g-hsevm System create-sdcard script does not boot OOB
PRSDK-5811 k2k-evm System Integration K2K: top level parallel make fails due to package interdependency
PRSDK-5992 omapl138-lcdk Chip Support Incorrect definitions in CSLR header for OMAPL138
PRSDK-6204 omapl138-lcdk Chip Support Corrections needed to EPWM CSL header for OMAP-L138

2.1.6. Known Issues

This section contains the list of known issues at the time of making the release and any known workaround.

Record ID Board/s Component/s Summary Workaround
PRSDK-5186 *Multiple platforms Board Support PDK Driver examples wrongly puts libgcc in to DDR invalidating IO delay configuration The user application could explicitly place the libgcc.a in to OCMC RAM along with BOARD_IO_DELAY_DATA/CODE sections so that there is no DDR access while calling IO Delay functions
PRSDK-6043 *Multiple platforms CCS TI-RTOS Kernel Example does not work with Resource Explorer in CCS 9.x  
PRSDK-769 *Multiple platforms Demonstrations Posix-SMP Demo DMIPS are wrong  
PRSDK-5821 *Multiple platforms High-Speed Drivers Failure to support file system with unicode string ASCII string file names should be used instead of Unicode strings
PRSDK-6184 *Multiple platforms System Integration BIOS 6.75 newlib-nano and header incompatibility with GCCv7.3.1 toolchain in SDK  
PRSDK-5642 am335x-evm Board Support USB_DevBulk_ExampleProject: Failed to load/run app Use JTAG to load and run the example
PRSDK-3541 am335x-evm High-Speed Drivers USB MSC device mode doesn’t handle “safely remove” command well.  
PRSDK-6639 am335x-evm OSAL AM335x Osal baremetal test fails when loaded through SBL Please load/run the test via JTAG instead of SBL
PRSDK-6653 am335x-evm, am437x-evm Diagnostics Diagnostics accelerometer, adc, temperature and ambient_light_sensor hangs on evmAM335x/AM437x  
PRSDK-2336 am335x-evm, am437x-evm Power AM3 & AM4 PM Examples experience I2C bus lockup when communicating with PMIC The debug versions of the PM apps are still functional. To build them: From the top-level makefile in pdk.../packages folder run “make BUILD_PROFILE=debug pm” This will build the debug versions of the PM RTOS and measurement apps.
PRSDK-5164 am335x-evm, omapl137-evm, omapl138-lcdk High-Speed Drivers AM3/OMAP USB driver sends NYET response to BULK OUT transfer request causing unnecessary USB traffic  
PRSDK-4548 am335x-ice PRUSS-Firmware PRU-ICSS EMAC + TTS : Corrupted Rx packet at host from Firmware Rebuild the firmware using the following changes to prioritize Rx packets over Tx packets during non realtime packet reception. Please make the following changes to firmware/icss_dualemac/src/emac_tts.h scheduler. In the M_TTS_XMT_SCHEDULER macro, add the following instruction after the label NOT_Queue1?: at line 149. ‘QBBS TASK_EXECUTION_FINISHED, R23, Rcv_active’ .With the above changes, clean and rebuild the icss-emac firmware using the steps mentioned in http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_pru_icss_fw.html#firmware-build-instruction.Please note that there will be significant reduction in throughput due to the above change.
PRSDK-6652 am335x-ice, am437x-evm Diagnostics Diagnostics LED test hangs at “Jumping to user application”  
PRSDK-7120 am335x-ice, am571x-idk PDK SPI master slave test fails in non-dma callback mode  
PRSDK-3565 am437x-hsevm Security AM437x-HSEVM: GPMC unit-tests fail  
PRSDK-3564 am437x-hsevm System I2C unit tests on AM437x-HSEVM fail with the message “Some tests have failed.”  
PRSDK-6161 am437x-idk Networking ICSS_EMAC_BasicExample fails on AM437x IDK with errors in received acyclic pkt content  
PRSDK-5936 am437x-idk PDK IO-Link master example does not work with Balluff inductive coupler  
PRSDK-4583 am437x-idk PRUSS-Firmware PRUSS-I2C-FW: Does not support 1Mhz mode. Incorrect STOP condition generated for HS mode  
PRSDK-7085 am437x-idk, am437x-sk Diagnostics Diagnostics: ‘mem test’ hangs on AM4 boards  
PRSDK-5938 am437x-idk, am571x-idk, am572x-idk PDK MCSPI/I2C Master Slave Example: SPI TX/RX FIFO trigger level test failure (UT1)  
PRSDK-335 am437x-idk, k2g-evm High-Speed Drivers USB host MSC fails to re-enumerate Re-enumeration support for the case of device unplugged and plugged back currently fails for the example. Workaround is to avoid disconnecting drive while running example.
PRSDK-5871 am570x-evm PDK EMAC_BasicExample MPU LE test fails at “Clock synthesizer: Write: Failed”  
PRSDK-6766 am570x-evm, am571x-idk, am572x-evm, am572x-idk, am574x-idk High-Speed Drivers USB driver TRB data buffer placement caused the bulk test failure  
PRSDK-2892 am571x-idk, am572x-evm, am572x-idk PDK Incorrect A15 MMU configurations in default config file Set MMU attribute to not executable for device memory attrs0.noExecute = true; // Not executable
PRSDK-5178 am571x-idk, am572x-idk, am574x-idk Board Support Uniflash: Host tool fails to load Flash Programmer, when Flash device is programmed In case of AM5 platform, if flash device is programmed with a valid boot image, the board boots from flash as soon as powered on. After this, attempting to connect the board over JTAG will fail. | Workaround for this issue is to insert SD card without any valid boot image( to prevent booting from SD card), and power on the board. SD boot has boot sequence priority over Flash device. This will hold the board booting out of flash device.
PRSDK-3864 am571x-idk, am572x-idk, am574x-idk High-Speed Drivers Missing USB disconnect event on USB device mode on AM5xx  
PRSDK-5087 am571x-idk, am572x-idk, am574x-idk Networking ICSS_EMAC_BasicExample fails on AM57xx-IDK with Packet cyclic timestamp error  
PRSDK-3876 am572x-evm Chip Support CM_EMU_CLKSTCTRL=0x2 needed for reliable low power exit if EMU[1:0] pins are used as GPIOs  
PRSDK-5987 am572x-evm Control Drivers UART Rx/TX trigger level test fails in SMP mode for AM572x EVM (DMA)  
PRSDK-4667 am572x-evm Demonstrations, Networking Image Processing Demo lock up on AM572x GP EVM Issue seen using 1Gig router on ETH0. Replace with 100Mbps
PRSDK-1975 am572x-evm Diagnostics timer_DiagExample_evmAM572x_arm7.out doesn’t work on ARM1 core Example can run on ARM Core 0
PRSDK-6958 am572x-evm Power pm_rtos_testapp DSP/M4: shutdown test failed  
PRSDK-3656 am572x-evm Unknown PM: shutdown test failed on DSP core for am572x-evm  
PRSDK-3408 am572x-evm PDK AM572x GP EVM - camera sysbios loopback example fails for M4  
PRSDK-6361 am572x-idk Chip Support Cycle-intensive interrupt handler breaks timer function  
PRSDK-5493 am572x-idk Demonstrations Gravit Graphics demo: Error: File io init failed!!  
PRSDK-7174 am572x-idk PDK Double interrupt with GPIO level triggering  
PRSDK-3344 am572x-idk, am574x-idk Diagnostics Diagnostics: icssEmac_TEST on idkAM57{2/4}x fails due to link status being down ICSS-EMAC LLD TI-RTOS example can be used for similar test.
PRSDK-5397 am574x-idk Chip Support CSL ECC EMIF test hangs at “OCMC FULL ECC Mode” on ARM  
PRSDK-3383 am574x-idk Diagnostics Diagnostics: lcdTouchscreen_TEST hangs Issue expected to be specific to TI EVM. For TI EVM, test need to be bypassed from the diagnostic menu.
PRSDK-5879 am654x-evm Board Support Board: Board library needs to cover entire DDR region connected to EMIF1  
PRSDK-6382 am654x-evm Boot SBL: R5F: Core 1 boot is not working with unsigned binary with ipc images  
PRSDK-6341 am654x-evm Control Drivers UART SMP test application hangs in SMP mode on AM65xx board  
PRSDK-6342 am654x-evm Debug & Instrumentation Interrupt latency benchmark hangs in SMP mode on AM65xx board  
PRSDK-5638 am654x-evm Diagnostics AM65xx diag self test hangs during memory test on R5 core  
PRSDK-6109 am654x-evm, am654x-hsevm, am654x-idk Boot ROM load time of SBL increased on GP devices Use ROM degenrate key on GP devices for signing the SBL. To do this, overwrite ti/build/k3_dev_mpk.pem with ti/build/rom_degenerateKey.pem before building the SBL
PRSDK-5966 am654x-evm, am654x-hsevm, am654x-idk Boot PLL settings for Maxwell are not optimal  
PRSDK-4661 am654x-evm, am654x-hsevm, am654x-idk Diagnostics Maxwell: Board diagnostics LCD touchscreen test reports incorrect number of touch events  
PRSDK-6364 am654x-evm, am654x-hsevm, am654x-idk Demonstrations CAN-GATEWAY-DEMO not present on am65xx installer  
PRSDK-6054 am654x-evm, am654x-hsevm, am654x-idk High-Speed Drivers Bare-metal USB application performance degradation on Am65xx R5 core as compared to SYSBIOS benchmark  
PRSDK-4886 am654x-evm, am654x-hsevm, am654x-idk High-Speed Drivers UDMA-P Real-time Remote Peer Registers not Functional Across UDMA-P Domains  
PRSDK-5755 am654x-evm, am654x-hsevm, am654x-idk Networking ICSS-G-FW: Firmware should not configure ICSSG clock mux  
PRSDK-5064 am654x-evm, am654x-idk Audio, Video, & Display RTOS: Maxwell MCASP Device Loopback Regression test 7 and 9 fail  
PRSDK-2951 am654x-evm, am654x-idk Board Support, Diagnostics Maxwell_M4_Diag: LCD Display Diagnostic Stress Test  
PRSDK-5448 am654x-evm, am654x-idk Boot SBL boot from MMCSD fails intermittently  
PRSDK-5648 am654x-evm, am654x-idk Diagnostics Maxwell DIAG: UART stress test only runs over JTAG  
PRSDK-7118 am654x-evm, am654x-idk Diagnostics Diagnostics ICSSG EMAC STRESS: Port 4 Send to Port 5 Receive Test Failed for 10240 packets  
PRSDK-5097 am654x-evm, am654x-idk High-Speed Drivers USB Dev MSC performance is not on par with Linux driver  
PRSDK-5544 am654x-evm, am654x-idk Networking Maxwell EMAC LLD example doesn’t work at 100Mbps  
PRSDK-5074 am654x-evm, j721e-evm PDK McASP driver hangs with small buffer size Use packet size 32 samples or greater
PRSDK-4680 am654x-evm, omapl137-evm PDK Processor SDK RTOS Post Installer script fails in case cygwin/mingw is overriding Windows default find utility  
PRSDK-5626 am654x-hsevm Boot, DMA OSPI Read using UDMA fails on AM65x HS devices. Non-DMA mode could be used for the read operation
PRSDK-5229 am654x-idk Board Support PCIe diagnostic test validates only one port on PCIe 2-lane card  
PRSDK-4843 am654x-idk Board Support Pinmux support for AM654x IDK ICSS MII pin is missing  
PRSDK-5988 am654x-idk Control Drivers OSPI SMP unit test fails in 133MHz speed for AM65xx IDK  
PRSDK-5989 am654x-idk Control Drivers USB Host MSC test hangs in SMP mode on AM65xx IDK board  
PRSDK-5751 am654x-idk Diagnostics AM65xx IDK PCIe diagnostic test failure  
PRSDK-5022 am654x-idk Networking am65xx: Running emac unit test on R5 core from ddrless SBL at times does not complete execution  
PRSDK-7121 am654x-idk PDK OSPI flash test slave in DAC mode at 166MHz RCLK have failed  
PRSDK-5933 amic110-ice Networking NIMU_ICSS iceAMIC110: ping failed at J7 port  
PRSDK-3727 c6748-evm, c6748-lcdk PDK C6748 is missing from SOC description list in pdkProjectCreate  
PRSDK-6399 j721e-evm, k2g-evm Control Drivers SPI Master Slave example fails at the UT0  
PRSDK-7177 k2e-evm, k2h-evm, k2k-evm PDK mmap_TestProject DSP LE: keystone_mmap_init() returned error  
PRSDK-3114 k2g-evm, k2g-hsevm, k2g-ice Diagnostics K2G: RTOS ECC support broken on ARM core  
PRSDK-5903 k2g-hsevm Networking EMAC_BasicExample DSP LE: Exception at 0xc00fde4  
PRSDK-3371 omapl137-evm Boot Slave boot is failing on evmOMAPL137  
PRSDK-2989 omapl137-evm High-Speed Drivers MMCSD LLD fails on OMAPl137 with 1024 byte block size  
PRSDK-3412 omapl137-evm, omapl138-evm High-Speed Drivers USB audio class example noise issue on OMAPL13x  
PRSDK-4043 omapl137-evm, omapl138-lcdk High-Speed Drivers OMAPL13x: USB Baremetal project binaries not built via top level make  

2.1.7. Supported Platforms

2.1.7.2. Evaluation Modules

See Processor SDK Supported Platforms page for a list of supported EVMs per platform and links to more information.

2.1.7.3. Demonstrations

See Examples and Demonstrations page for a list of demonstrations per platform and EVM.

2.1.7.4. Drivers

The following tables show RTOS driver availability per platform and EVM. A shaded box implies that the feature is not applicable for that platform/EVM.

Sitara devices

Feature Platform/SOC AM335x EVM AM437x EVM AM57x EVM AM65x EVM
  AM335x AM437x AM57x GP ICE SK BBB GP IDK SK GP IDK GP IDK
CSL X X X X X X X X X X X X X X
EMAC X X X X X X X X X X X X X X
EDMA3 X X X X       X     X      
GPIO X X X   X   X X   X X X X X
GPMC X X     X     X            
I2C X X X X X X X X X X X X X X
PRUSS-I2C f/w X X X   X       X     X    
PRUSS-eSPI f/w X X                        
ICSS-EMAC X X X   X       X     X    
McASP X X X X       X     X   X  
McSPI X X X   X       X     X X X
MMC-SD X X X X X X X X X X X X X X
PCIe     X                 X X  
PM X   X X             X   X X
PRUSS X X X   X       X     X X X
QSPI   X X           X X   X    
OSPI                         X X
UART X X X X X X X X X X X X X X
USB X X X X       X     X X X X
USB Device Audio X     X                    
USB Device Bulk X X X X       X     X X X X
VPS     X               X X    
UDMA                         X X
SCICLIENT                         X X
SA                         X X
CAL                         X X
DSS                         X X

DSP devices - K2x, C66x

Feature Platform/SOC K2 EVM C66x EVM
  K2H/K2K K2E K2L K2G C665x C667x K2H K2E K2L K2G K2G-ICE C665x C667x
CSL X X X X X X X X X X X X X
AIF2 X           X            
BCP X   X       X   X        
CPPI X X X X X X X X X X X X X
DFE     X           X        
EDMA3 X X X X X X X X X X X X X
EMAC       X X         X X X  
FFTC X   X       X   X        
GPIO X X X X X X X X X X X X X
HYPLNK X X     X X X X       X X
ICSS-EMAC       X             X    
I2C X X X X X X X X X X X X X
IQN2     X           X        
McASP       X           X      
McBSP       X X         X   X  
MMAP X X         X X          
MMC-SD       X           X X    
NWAL X X X     X X X X       X
PA X X X     X X X X       X
PCIe X X X X X X X X X X   X X
QMSS X X X X X X X X X X X X X
RM X X X X X X X X X X X X X
SA X X X X   X X X X X     X
SPI X X X X X X X X X X X X X
SRIO X       X X X         X X
TCP3D X   X   X   X   X     X  
TSIP   X       X   X         X
UART X X X X X X X X X X X X X
USB       X           X      
USB Device Audio                          
USB Device Bulk       X           X      

DSP devices - OMAP-L13x, C674x

Feature Platform/SOC OMAP-L137 EVM OMAP-L138 EVM
  OMAP-L137 OMAP-L138 L137/6747 SK LCDK138 LCDK6748
CSL X X X X X
EDMA3 X X X X X
EMAC X X X X X
GPIO X X X X X
I2C X X X X X
McASP X X X X X
MMC-SD X X X X X
SPI X X X X X
UART X X X X X
USB X X X X X
USB Device Audio X X X X X
USB Device Bulk X X X X X

Unsupported Features

  • In general driver support is available across all cores within an SOC with following exceptions
Feature Not supported
  SOC CPU/Core
McASP AM57x M4
USB AM57x C66x
USB AM57x M4
USB K2G C66x
McBSP K2G A15
McBSP OMAP-L13x ARM9
All Drivers K2E/L/K A15

2.1.7.5. Other Features

The following table shows other feature availability per platform and EVM:

Sitara devices

Feature Platform/SOC AM335x EVM AM437x EVM AM57x EVM AM65x EVM
  AM335x AM437x AM57x GP ICE SK BBB GP IDK SK GP IDK GP IDK
Board Support X X X X X X X X X X X X X X
Boot (SBL) X X X X X X X X X X X X X X
Diagnostics X X X X       X     X X X X
FATFS X X X X X     X X   X X X X
NDK-NIMU(CPSW) X X X X X X X X X X X X X X
NDK-NIMU(ICSS) X X X   X       X     X X X
CC-LINK IE Field Basic(CPSW) X X X X X X X X X X X X    
CC-Link IE Field Basic(ICSS) X X X   X       X     X    

DSP devices - K2x, C66x

Feature Platform/SOC K2 EVM C66x EVM
  K2H/K2K K2E K2L K2G C665x C667x K2H K2E K2L K2G K2G-ICE C665x C667x
Board Support X X X X X X X X X X X X X
Boot (IBL/SBL) X X X X X X X X X X X X X
Diagnostics       X           X X    
FATFS       X           X X    
Fault Management X X X       X X X        
IPC Transport (QMSS) X X X   X X X X X     X X
IPC Transport (SRIO) X       X X X         X X
MAD-UTIL         X X           X X
Network (CPSW) X X X X X X X X X X X X X
Network (ICSS)       X           X      
CC-Link IE Field Basic(ICSS)       X           X      
Platform Library (obsolete) X X X   X X X X X     X X
PKTLIB X X X     X X X X       X
POST X X X   X X X X X     X X
SERDES Diagnostics X X X       X X X        
Trace Framework X X X       X X X        

DSP devices - OMAP-L13x, C674x

Feature Platform/SOC OMAP-L137 EVM OMAP-L138 EVM
  OMAP-L137 OMAP-L138 137/6747 SK LCDK138 LCDK6748
Board Support X X X X X
Boot (SBL) X X X X X
Diagnostics X   X    
FATFS X X X X X
Network (CPSW) X X X X X

2.1.8. Installation and Usage

The Getting Started Guide provides instructions on how to setup up your development environment, install the SDK and start your development.

To uninstall the SDK, remove the individual component directories from the installed path. This is safe to do even in Windows since these components do not modify the Windows registry.


2.1.9. Technical Support and Product Updates

For further information or to report any problems, contact: - TI E2E Processor Support for all supported platforms


2.1.10. Archived

Note: Release Notes prior to 4.3 are not archived. Please see the Migration Guide for information on migration from these releases.


2.2. Supported Platforms and Versions

Supported Host Operating Systems

The following operating systems have been validated to work with our SDK.

  • Linux SDK
Operating System
Version
Ubuntu
16.04 (64-bit)
18.04 (64-bit)
  • RTOS SDK
Operating System
Version
Windows
7 (64-bit)
Ubuntu
14.04 (64-bit)
16.04 (64-bit)
  • Android SDK
Operating System
Version
Ubuntu
16.04 (64-bit)
18.04 (64-bit)

Supported Platforms and EVMs

The following platforms and EVMs are supported with Processor SDK

Platform EVM Tested Version Document Processor SDK Linux Processor SDK RT Linux Processor SDK RTOS Processor SDK Android
AM65x/DRA80xM AM65x/DRA80xM EVM Beta Hardware User’s Guide Hardware Setup with CCS X X X X
AM65x/DRA80xM IDK Beta Hardware User’s Guide Hardware Setup with CCS X X X X
AM57x AM572x EVM A3 Hardware User’s Guide X X X X
AM572x IDK 1.3A Hardware User’s Guide Hardware Setup with CCS X X X X
AM571x IDK 1.3A Hardware User’s Guide Hardware Setup with CCS X X X X
AM574x IDK 1.0A Hardware User’s Guide Hardware Setup with CCS X X X X
AM437x AM437x EVM 1.5B Hardware User’s Guide X X X  
AM437x SK 1.1A Hardware User’s Guide X   X  
AM437x IDK 1.4A Hardware User’s Guide   X X  
AM335x AM335x EVM 1.6A Hardware User’s Guide X X X  
AM335x SK 1.2 Hardware User’s Guide X   X  
BeagleBone Black B6 Hardware User’s Guide X   X  
AM335x ICE 2.1A Hardware User’s Guide Hardware Setup with CCS   X X  
K2H/K2K 66AK2Hx EVM 4.0 Hardware Setup with CCS X X X  
TCI6638K2K EVM 4.0 Hardware Setup with CCS X X X  
K2E 66AK2Ex EVM 1.0.3.0 Hardware User’s Guide X X X  
K2L 66AK2L06 EVM 1.0.3.0 Hardware User’s Guide X X X  
K2G K2G EVM 1.3D Hardware User’s Guide Hardware Setup with CCS X X X  
K2G 1G EVM 1.5D Hardware User’s Guide X X X  
K2G Audio Daughtercard D Software Support     X  
K2G ICE EVM 1.0C Beta Hardware User’s Guide Hardware Setup with CCS X X X  
C665x C665x EVM 1.1-44 Hardware Setup with CCS N/A N/A X  
C667x C667x EVM 3B Hardware Setup with CCS N/A N/A X  
OMAPL137/C6747 OMAP-L137/C6747 Starter kit EVM J Hardware User’s Guide Hardware Setup with CCS N/A N/A X  
OMAPL138/C6748 OMAP-L138/C6748 LCDK A7A Hardware User’s Guide Hardware Setup with CCS X N/A X  
AMIC110 AMIC110 ICE 1.1 Hardware User’s Guide Hardware Setup with CCS     X  

2.3. Migration Guide

2.3.1. Overview

This page covers migration information for applications built on top of the Processor SDK RTOS.

2.3.2. Processor SDK 06.xx Releases

2.3.2.1. Processor SDK 06.01

2.3.3. NIMU

Migration: Udma init sequence call has been moved from NIMU library to NIMU example for AM65xx

Impact Scope: Applicable for all NIMU applications using NIMU tranport library for AM65xx

Additional Details: Applications will need to implement the following function to provide UDMA drive handle which will be called by the NIMU driver at startup

Udma_DrvHandle nimu_app_get_udma_handle(void)

2.3.3.1. Processor SDK 06.00

2.3.3.1.1. PRUSS

Migration: Calls that passed PRUICCSS_INSTANCE_MAX as a parameter to PRUSS driver API calls will now pass PRUICCSS_INSTANCE_THREE instead.

Impact Scope: Applicable for all AM65xx applications using PRUSS driver for ICSSG use case.

Additional Details: The following new enumeration, PRUICCSS_INSTANCE_THREE, for PRU-ICSS instance 3 has been added to PRUICSS_MaxInstances enumeration list as PRUICCSS_INSTANCE_MAX is not longer valid when making PRUSS driver API calls.

2.3.3.1.2. Board Library

Migration: MMU configuration is needed to enable NBO CFG registers access on A53 core.

Impact Scope: Applicable for all AM65xx RTOS applications calling Board_init() with BOARD_INIT_ICSS_ETH_PHY flag.

Additional Details: Board library is setting NAVSS THREADMAP register to give higher priority for MSMC access from ICSSG which requires access to NBO CFG registers.

2.3.4. Processor SDK 05.xx Releases

2.3.4.1. Processor SDK 05.03

2.3.4.1.1. EMAC

Migration-1: ICSS-G EMAC firmware binary directory location update for future extension.

Impact Scope: Applicable for all applications using EMAC driver with ICSS-G dual EMAC firmware.

Additional Details: Applications will need to update the include path to location of firmware header files for ICSSG use case:

  • Prevous location: ti/drv/emac/firmeare/icss_eth/src/dm
  • New location: ti/drv/emac/firmware/icss_dualmac/bin

Migration-2: Release introduces support for additional firmware specific configuration files. Added for future extension to support multiple firmwares using same EMAC driver.

Impact Scope: Applicable for all applications using EMAC driver with ICSS-G dual EMAC firmware.

Additional Details: Firmware configuration has been moved to firmware specific configuration files, emac_fw_config_dual_mac.h and emac_fw_config_dual_mac.c. Previously the firmware configuration was specified in the test application. It is not expected that applicatons will need to modify these files as the are closely tied to the firmware.

  • Previous location: firmware specific configuration was specified in the text application (ti/drv/emac/test/EmacLoopbackTest/test_utils_k3.c)
  • New location: ti/drv/emac/firmware/icss_dualmac/config/

Applications will need to update their makefiles to include c source file emac_fw_config_dual_mac.c.

At time of emac_open() API call, applications need to udpate configuruation parameters to pass get firmware configuration pointer :

EMAC_HwAttrs_V5 emac_cfg;
EMAC_socGetInitCfg(0, &emac_cfg);
emac_cfg.portCfg[port_num].getFwCfg = &emacGetDualMacFwConfig;
EMAC_socSetInitCfg(0, &emac_cfg);

2.3.4.1.2. CSL

Migration: API changes on CSL-FL of AM65xx on ecc aggregator, vim, esm modules

Impact Scope: Limited to the case if application is using the CSL-FL APIs

Additional Details: The CSL-FL for ECC aggregator, ESM and VIM are modified to return API functionality success/failures and additional arguments are added as and when needed (especially during the cases where the return was the value instead of API success/failure). Applications that use these CSL-FL calls are impacted and are needed to align to new calling conventions. If applicable application modification required to align to updated APIs, refer doxygen API documentation for API details.

2.3.4.1.3. DSP- TI CGT Compiler

Migration: In DSP TI CGT compiler version 8.3.2 the rts library boot object file name is changed from boot.obj to boot.c.obj.

Impact Scope: Limited only to DSP applications that explicitly uses rts library object files in linker command file.

Additional Details: The DSP application which is using linker command file of CSL module should change boot object name from boot.obj file to boot.c.obj. If the user is using cpp version of boot object file then it should be mentioned as boot.cpp.obj. In general it can be also be used as boot.*.obj. This can be referred from the following linker command file in the PDK package <PDK>/packages/ti/csl/example/lnk_dsp.cmd

2.3.4.2. Processor SDK 05.02

2.3.4.2.1. SBL

Migration: Image integration and memory map changes.

Additional Details: Release supports optimized boot times for booting MCU1_0 core from OSPI flash. To reduce the size of the SBL, the system firmware image, which was earlier embedded in the SBL, is now a separate binary. The system firmware image can be found at <PDK>/packages/ti/drv/sciclient/soc/V0/sysfw.bin

For MMC/SD boot, if the steps followed in Windows SD Card Creation Guide or Linux SD Card Creation Guide are used, no additional steps are need. If the SD card is being created manually, then the sysfw.bin file also needs to be copied into the root directory of the MMC SD card, along with tiboot3.bin and app.

For OSPI boot, the flash offsets have changed. sysfw.bin needs to be programmed into OSPI flash at offset 0x40000 (new for this release), along with sbl_ospi_img_mcu1_0_release.tiimage at offset 0x0 (no change from previous release) and the app at offset 0xA0000 (was 0x80000 previous release). For details please refer Programming the OSPI flash

Applications that the SBL loads must co-exist with the SBL’s memory usage.In the application’s linker command file, care must be taken to not use the first 0x100 bytes of MCU1_0’s ATCM memory and SBL reserved memory from 0x41C00100 to 0x41C28000. If the applications violate the SBL memory usage, then apps that were working with the last release might not work any more, as the memory constraints are tighter. For details, refer the SBL Memory Utilization

2.3.4.2.2. PDK

Migration: AM65xx PDK component dependency on sciclient module.

Impact Scope: Applications will need to link to sciclient module library. No migration impact if application is already linking the library.

Additional Details: All application using PDK components on AM65xx platform will need to link sciclient library as components internally will be using sciclient API for PLL and interrupt configuration. In this release, requirement for application will be more mandated as more components are using common infrastructure.

DMSC firmware should be loaded onto Cortex-M4 core using SBL or CCS GEL script before calling the Board Init API with ‘BOARD_INIT_PLL’ flag.

2.3.4.2.3. Board

Migration: New APIs for EEPROM Board ID Information

Impact Scope: Applications using Board ID info APIs on AM65xx platform. No migration impact for existing applications and boards using version 1 API.

Additional Details: TI Board ID information format has been updated to new version on AM65xx. New board library APIs Board_getIDInfo_v2() and Board_writeIDInfo_v2() are added to support new Board ID information format. Old Board ID info APIs are still avaialble to retain the backward build compatibility but returns error when used on AM65xx platform.

2.3.4.2.4. FATFS

Migration: FATFS module in this release includes multipartition support and capability of detecting single vs multiple partitions run time.

Impact Scope: Limited to the case if user had used MS-DOS Floppy disk format for formatting the SD/eMMC memory. No impact if the SD/eMMC is formatted using the steps provided by Windows SD Card Creation Guide/ Linux SD Card Creation Guide

Additional Details: Partition entry information may be wrongly detected for the storage media formated to MS-DOS Floppy disk format. FATFS APIs fail to access the disk in this case.

Workaround: Format the storage media using the steps provided by Windows SD Card Creation Guide/ Linux SD Card Creation Guide in case this issue is observed.

2.3.4.3. Processor SDK 05.01

2.3.4.3.1. Build

Migration: Applicable for applications migrating from SOCs supporting EDMA LLD to AM65x with updated DMA infrastructure. Additional UDMA driver support is available in package to support enhanced DMA infrastrcuture for AM65x Drivers for AM65x SOC is extended to support UDMA LLD abstracting changes needed by application. Limited change will be required for application using drivers included in Processor SDK.

Additional Details: Modifications needed at application will be limited to initialization of UDMA driver using Udma_init() API in addition to linking UDMA driver library. Driver Test code could be used as reference Additional migration details for all cases are covered in /ti/drv/udma/docs folder inside PDK package.

2.3.4.3.2. DMA

Migration: For all drivers using DMA mode EDMA driver is updated to UDMA driver.

Additional Details: Application will need to initialize UDMA driver and SCIClient interface using Udma_init() and Sciclient_init() API. Test code could be used as reference.

2.3.4.3.3. Networking

Migration: Applicable for applications using NDK and Posix port of SysBIOS.

Additional Details: Release introduces NS (Network Services Component) as independent portable networking API abstracting different network stacks. Detailed migration details is available at NDK 2.x to 3.x Migration Guide

2.3.4.4. Processor SDK 05.00

2.3.4.4.1. Build

Migration: TOOLS_INSTALL_PATH macro value changed to SDK_INSTALL_PATH. No migration impact if tools and SDK are installed in same location.

Additional Details: TOOLS_INSTALL_PATH macro value is set to SDK_INSTALL_PATH by default. For accessing the tools from a different path, modify TOOLS_INSTALL_PATH in packages/ti/build/Rules.make file or can be overriden from the build console as shown below.

Windows

set TOOLS_INSTALL_PATH=<Path for the tools root folder>

Linux

TOOLS_INSTALL_PATH=<Path for the tools root folder>

2.3.4.4.2. Build Setup

Migration: There is no migration need for components used within processor SDK. Application Software outside processor SDK may require a change if there is a dependency to internal Processor SDK environment variables. See more details below.

Additional Details: Rules.make file is used instead of pdksetupenv to setup the build environment variables. Components inside processor SDK are updated to align with this change. Any applications making use of pdksetupenv from processor SDK to setup the build environment variables should include below line in the application makefile.

include $(RULES_MAKE)

2.3.5. Processor SDK 04.xx Releases

2.3.5.1. Processor SDK 04.03

2.3.5.1.1. OSAL

Migration: No impact expected if Semaphore allocation and HwIP registration from OSAL is not invoked by application.

Additional Details: OSAL module is fine tuned for optimized number of semaphores required internally within drivers. Module provides additional API to application for additional semaphore allocation if required.Application can configure for either default internal static allocation or it can select external memory block that can be provided to create these objects. Note that this decision to go with external memory block or internal memory block need to be done during init configuration of application (near to main) just after Board_init() is called. Below sample code sets SemaphoreP/HwiP to be used from external memory block:

/* Get the Hw Attrs */
osal_ret = Osal_getHwAttrs(&hwAttrs);
if (osal_ret != osal_OK)
{
    return (false);
}

/* This API should set to use external memory block */
hwAttrs.extSemaphorePBlock.base = (uintptr_t) &semPMemBlock[0];
hwAttrs.extSemaphorePBlock.size = SEMP_BLOCK_SIZE;
hwAttrs.extHwiPBlock.size       = HWIP_BLOCK_SIZE;
hwAttrs.extHwiPBlock.base       = (uintptr_t) &hwiPMemBlock[0];
osal_ret = Osal_setHwAttrs(ctrlBitMap, &hwAttrs);

2.3.5.1.2. Board

Migration: Section details applicable only to applications based on DRA7xx SoCs.

Additional Details: DRA7xx board libraries have refactored pad configuration sequence by removing manual pinmux entries and replacing them with a full IODELAY reconfiguration procedure. This was done in order to simplify transition from a standalone application development in CCS to booting the whole device via SBL, ensuring that pad configuration is 100% consistent between the two application loading methods.

The IODELAY and pin control data structures are maintained in each of evmDRA72x and evmDRA75x board library source directories. These structures are also included in the SBL compilation and used in the SBL’s IODELAY reconfiguration. Therefore, changes can be made in one location but reused by both Board and SBL components just through recompilation.

Note that DRA78x does not require IODELAY reconfiguration and pinmux setup is always contained entirely in the application. Hence, there are no corresponding changes to this library.

All of this is done in a transparent manner, so there is no API change and will not affect existing applications. However, there are considerations with respect to memory placement and potential conflicts between the board library and SBL code. These restrictions have always existed but are now more clearly defined and documented. Please refer to Board Support for more details.

2.3.5.1.3. I2C

Migration: No migration required for existing user application.

Additional Details: PRUICSS based I2C Firmware have been introduced in this release. This new features increases the number of I2C interface available in the SOC. I2C LLD now depends on PRUSS LLD for compilation of this new feature. All of this is done in a transparent manner, so there is no API change and will not affect existing applications. However, for using the I2C FW feature refer I2C FW for additional details.

2.3.5.2. Processor SDK 04.02

2.3.5.2.1. GCC Toolchain Migration to 6-2017-q1

Migration: Limited to TI-RTOS based application on ARM Cortex-A cores.

Additional Details: Processor SDK RTOS components includes updates to be compatible with GCC tool chain. This includes updates to SysBIOS, compiler and linker options. Following migration changes required for applications:

  • Compiler options: Add nano libs to Include path

    • Example: gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include/newlib-nano
  • Linker Options: Replace fpu lib paths with hard lib and enable nano specs

    • Example: "<SYS/BIOS Root>/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu"

      with "<SYS/BIOS Root>/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard --specs=nano.specs”

Additional References:

  • PDK Project Creation Scipt: <pdk_soc_x_x_x/packages/pdkProjectCreate.[bat/sh]>

Note: For baremetal applications, stack section needs to be aligned to 8 bytes. Updated GCC toolchain is more stringent on memory alignment requirement. Misalignment can result in unexpected run time failures.

2.3.5.2.2. EMAC Library

Migration: Limited to C6657, OMAPL137/C6747 and OMAPL138/C6748 SoCs.

Additional Details: Interrupt setup and ISR functions are implemented in the driver. Interrupt handling in applications need to be removed to use the latest driver version. Use EMAC_socGetInitCfg() and EMAC_socSetInitCfg() functions to change the default interrupt mapping in HW attributes if required.

Example:

EMAC_HwAttrs_V0             emac_hwattr;  /* Local instance for HW attributes */
EMAC_OPEN_CONFIG_INFO_T     open_cfg;

EMAC_socGetInitCfg(port_num, &emac_hwattr);  /* Get default SOC HW attributes */
emac_hwattr.txIntrNum = <Int Num>  /* Change default interrupt mapping Optional: if needed */
EMAC_socSetInitCfg(port_num, &emac_hwattr); /* Change the default HW attributes */
open_cfg.hwAttrs = &emac_hwattr;  /* Assign HW attributes to configuration parameters */
emac_open(port_num, &open_cfg);

2.3.5.3. Processor SDK 04.01

2.3.5.3.1. Common CSL Library

Migration: Limited to Bare metal Application and Keystone SoCs such as K2HK/K2LE/K2G. No change required for other SoCs such as AM571x/AM572x/C6678/C6657.

Additional Details: Default start address for the vectors modified to beginning of MSMCSRAM (0x0C000000) compared to previous release end of the MSMC. This matches to both secured and non secured devices Application is required to reserve (0x0C000000 to 0x0C000040) size 0x40 bytes.

Bare metal Application needs to reserve this location for vectors when using CSL startup library. There is still option for overriding default configuration by defining vector_base to desired start address: Example: if the vector location desired is say 0xC0E0000, then add below line in the application’s linker command file:

__vector_base__= 0xC0E0000;

No change needed for application using default configuration matching CSL.

2.3.5.3.2. ICSS_EMAC Library

Migration: Optional. No migration required for applications using default icss_dualemac and icss_switch firmware.

The location of icss_emacFwConfig.c/.h has moved from ti/drv/icss_emac/firmware/<SOC_TYPE> directory to ti/drv/icss_emac/firmware/icss_dualemac/config/ directory. If applications are compiled with icss_emacFwConfig.c, please update your build/make infrastructure.

2.3.5.4. Processor SDK 04.00

2.3.5.4.1. MCSDK 1.1 to Processor SDK Migration for OMAPL13x/C674x devices

This release includes additional support for OMAPL13x/C674x architecture/SOCs. For more information on migrating aplications from MCSDK(OMAPL13x) to Processor SDK, see this migration page.

2.3.5.4.2. ICSS_EMAC Library

Migration: Required. Application will need to link to firmware binaries.

ICSS EMAC driver component includes source code support for Dual-emac firmware with support for rebuilding. Firmware is no longer supported as header format *.h in order to align to PRUSS compiler.

  • In order to include new binary application will need to link the PRUSS firmware binary as demonstrated through *project.txt. Note: firmware binary to be linked will be dependent on the SOC as shown below

Example: AM572x have support for both version so include both version of binaries and linker *.cmd files.

${PDK_INSTALL_PATH}/ti/drv/icss_emac/firmware/icss_dualemac/bin/<SOC>/<HOSTCORE>/<REVISION>/icss_dualemac_PRU0.bin
${PDK_INSTALL_PATH}/ti/drv/icss_emac/firmware/icss_dualemac/bin/<SOC>/<HOSTCORE>/<REVISION>/icss_dualemac_PRU1.bin
  • Default linker command file is available in PDK software which can be linked by application based on cores where application is running. For A8, A9, A15 cores below linker command can be linked in makefile or CCS project. Refer the ICSS-EMAC Unittest for additional details.
-Wl,-T,${PDK_INSTALL_PATH}/ti/build/pruss/lnk_a8_a9_a15_<REVISION>.cmd
  • For c66 and m4 cores
-Wl,-T,${PDK_INSTALL_PATH}/ti/build/pruss/lnk_c66_m4_<REVISION>.cmd

2.3.5.4.3. Board Library

Migration: Optional. No migration impact in case of applications using custom board library which is not following similar approach as default board library for Ethernet PHY configurations.

Updated Board library for OMAPL137 in this release includes additional Ethernet PHY initialization support for reference EVM during init and hence requiring dependency on I2C LLD. This is applicable to applications using default OMAPL137 board library similar to other PDK/Processor SDK applications in the release. For all those cases linking to additional I2C LLD library will be required.

Examples for including I2C LLD library for:

  • Baremetal Applications

Include the I2C LLD library from below mentioned path in makefile or linker command file:

  • ARM Core - <PDK_INSTALL_DIR>/packages/ti/drv/i2c/lib/omapl137/arm9/release/ti.drv.i2c.ae9
  • DSP Core - <PDK_INSTALL_DIR>/packages/ti/drv/i2c/lib/omapl137/c674/release/ti.drv.i2c.ae674
  • SYS/BIOS RTOS Applications

Include the I2C LLD library in SYS/BIOS config file using xdc load package module:

var devType = "omapl137"
var I2c     = xdc.loadPackage('ti.drv.i2c');
I2c.Settings.socType = devType;

2.3.5.4.4. McASP Library

Migration: Optional. No migration impact for applications initializing the structure using memset and default configuration: ``Mcasp_WordBitsSelect_LSB()``.

McASP driver includes additional configuration field in Mcasp_ChanParams->wordBitsSelect to enable newly introduced mode Mcasp_WordBitsSelect_MSB. Configuration needs to be initialized by application.

2.3.6. Processor SDK 03.xx Releases

2.3.6.1. Processor SDK 03.03

2.3.6.2. Processor SDK 03.02

2.3.6.2.1. PDK I2C LLD

To support I2C slave mode, added I2C_transactionInit() API. Applications need to call I2C_transactionInit() API before calling I2C_transfer() API.

Example:

I2C_Transaction   transaction;
I2C_transactionInit(&transaction);
transaction.masterMode   = false;
transaction.writeCount = wrLen;
transaction.readCount  = rdLen;
transaction.timeout    = timeout;
I2C_transfer(i2c, &transaction);

2.3.6.2.2. PDK MCASP LLD

The call back function’s behavior has changed. The MCASP driver no longer modifies the cArg parameter of the registered call back function to indicate the transaction type(TX or RX). The cArg paramter will be unchanged and passed back to the application. Please refer to the examples, which have been updated to reflect this change.

2.3.6.2.3. PDK MMCSD LLD

No update required for use of default SOC dependent library.This is applicable for applications which choose to include the soc/MMCSDDMA_soc.c. The soc/MMCSDDMA_soc.c file has now been removed as a part of combining the DMA and Non-DMA source code of the MMCSD library. Applications may include soc/MMCSD_soc.c file instead.

2.3.6.2.4. PDK USB LLD

  • Cache is now supported. Buffers that are passed to low level USB bulk API’s need to be cache-size aligned. These include buffers passed to: USBHMSCBlockWrite(), USBHMSCBlockRead(), USBHostRead(), USBHostWrite(), or usbSetupEpReq(), etc.
  • DMA is enabled by default on AM335x. Remove DMA_MODE flag in build/makefile.mk to go back to FIFO mode.

2.3.6.2.5. PDK ICSS EMAC LLD

Support has been added to all allow the icss-emac LLD to be configured with custom firmware memory map parameters which fall into the following 2 categories:

  • Static configuration: Tied directly to the firmware. For example, location and size of statistics, port status and conrol address offsets.
  • Dynamic configuration: Tuneable parameters based on application. For example, sizes of TX/RX queues, port specific buffer/buffer descriptor offsets.

A complete list of these parameters can be found in ti/drv/icss_emac/icss_emacDrv.h. Refer to ICSS_EmacFwStaticMmap and ICSS_EmacFwDynamicMmap structures.

Firmare binaries which reside in ti/drv/icss_emac/firmware/<SOC> directory should be accompanied by a icss_emacFwConfig.c file. For existing firmware binaries in this release, there is an equivelent icss_emacFwConfig.c file already present. This file basically defines the 2 stuctures mentioned above. This file needs to be compiled in as part of the user application. User application can then use the following 2 newly introduced API’s to “get” and “set” firmware memory map configuration parameters with the LLD and firmware.

  • icss_emacGetFwMMapInitConfig(): Allows for retrieval of default firmware memory map configuration. User application may call this if they wish to update dynamic firmware memory map configuration paremeters. Static configuration parameters MUST not be updated.
  • icss_emacSetFwMMapInitConfig(): Allows for static and dynamic firmware memory map configuration parameters to be configured into the the LLD and firmware.

Note that these API’s need to be called prior to calling ICSS_EmacInit() which is LLD’s initialization function.

Backward compatibility is also supported. If user application does not wish to update any configuration parameters, LLD will operate of default configuration parameters as specified in respective icss_emacFwConfig.c file which is being delivered as part of this release.

2.3.6.2.6. TI-RTOS

The updated version of TI-RTOS (SYS/BIOS) includes a check to ensure the proper run-time library is linked. If you face a compilation issue, see this note on RTOS FAQ for more information.

2.3.6.3. Processor SDK 03.01

2.3.6.3.1. PDK CSL

  • csl_a15init module is renamed to csl_init to support portability. The impact of this change is limited to bare metal application using PDK makefile infrastructure. As part of migration, the module name need to be updated.
  • csl_a15Aux.h is removed as it is duplicate of csl_a15.h. The impact of this change is limited to applications that include csl_a15Aux.h. As part of migration, the modification required is to include csl_a15.h instead.

2.3.6.3.2. PDK SA LLD (K2x, C66x)

Added a feature to select Air Cipher Engine over the default Encryption engine for algorithms such as AES_CTR part of Sa_DataModeConfigParams_t API. There is no migration impact if application is initializing the structure to zero using memset.

2.3.6.4. Processor SDK 03.00

This release is a maintenance update with new features and bug fixes. The major number in the version changed to stay aligned with the Linux package that moved to 2016 LTS.

2.3.6.4.1. Device Drivers

  • Locations of precompiled libraries have moved for the following PDK components: CSL, PDK Examples, GPIO, GPMC, I2C, ICSS-EMAC, McASP, McSPI, MMC-SD, PCIe, PRUSS, QSPI, UART, USB, VPS, PDK Utils, FATFS, BOARD, OSAL, NIMU, NIMU_ICSS. The overall change is to rename armv7 to a15/a8/a9 as appropriate for the device. All cores have moved the libraries compiled with optimization to release, while a debug folder is available (but not prebuilt) for libraries with -g.
    • No changes are needed for applications configured with a XDC/BIOS *.cfg with dependancies specified through xdc.useModule or xdc.loadPackage because updated library paths are autogenerated.
    • For other applications which explicitly set libraries and/or library include paths via -l, -I, or -L flags passed to the linker, the library paths need to be updated. For example, for GPIO on A15, the path changes from ti/drv/gpio/lib/am572x/armv7 to ti/drv/gpio/lib/am572x/a15/release.
  • The drivers GPIO, I2C, SPI and UART now use CSL-FL. Applications using these drivers need to add include and library dependencies by adding xdc.useModule for CSL-FL for XDC/BIOS based applications, or by adding -I/-l/-L paths to the compilation/linker flags for the application. For XDC, here is a sample code for adding CSL-FL:
/*use CSL package*/
var socType = "am571x";
var Csl     = xdc.loadPackage('ti.csl');

Csl.Settings.deviceType = socType;
  • The driver I2C has an API change for I2C_transfer, a new timeout field is added to I2C_Transaction structure, and the return value type of this API is changed from bool to int16_t. In the test/example application, timeout value need to be initialized before calling this API:

Example:

int16_t status;

i2cTransaction.slaveAddress = I2C_EEPROM_ADDR;
i2cTransaction.writeBuf = (uint8_t *)&txBuf[0];
i2cTransaction.writeCount = I2C_EEPROM_TEST_LENGTH + I2C_EEPROM_ADDR_SIZE;
i2cTransaction.readBuf = NULL;
i2cTransaction.readCount = 0;
i2cTransaction.timeout   = I2C_TRANSACTION_TIMEOUT;

status = I2C_transfer(handle, &i2cTransaction);

2.3.7. Processor SDK 02.xx Releases

2.3.7.1. Processor SDK 02.00.02

This release primarily adds support for K2G device. There is no migration impact to customers using devices supported in the previous release (AM3, AM4, AM5, C665x, C667x, K2E, K2H, K2K, K2L).

2.3.7.2. Processor SDK 02.00.01

This release primarily adds support for devices from the KeyStone architecture: C665x, C557x, K2E, K2H, K2K, and K2L. There is no migration impact to customers using devices supported in the previous release (AM3, AM4, AM5).

For information on migrating from BIOS-MCSDK (C66x) or MCSDK (K2x) to Processor SDK, see this migration page.

2.3.7.3. Processor SDK 02.00.00

This is the initial Processor SDK RTOS release from Texas Instruments unifying platform software across multiple SOC’s.

The strategy for forward/backwards compatibility is as follows:

  • Device Drivers
    • All new development efforts should use Device Drivers because:
      • Device Drivers will maintain common APIs for all supported SoCs
      • Customer applications can be easily ported to new and additional SoCs hence providing scalable software platform
      • All new features and development will occur only in the Device Drivers.
  • StarterWare is included for AM335x and AM437x for backwards compatibility with Industrial SDK 02.01.00.01
    • This will be maintenance only (bugs will be fixed, no new features)

For applications that already depend on StarterWare from Industrial SDK 02.01.00.01 on AM335x/AM437x, those APIs remain in Processor SDK in:

  • AM335x SOC: pdk_am335x_1_0_0/ti/starterware
  • AM437x SOC: pdk_am437x_1_0_0/ti/starterware