S32SDK For S32K1xx RTM 4.0.0 ReleaseNotes
S32SDK For S32K1xx RTM 4.0.0 ReleaseNotes
S32SDK For S32K1xx RTM 4.0.0 ReleaseNotes
The S32 Software Development Kit (S32 SDK) is an extensive suite of peripheral abstraction
layers, peripheral drivers, RTOS, stacks and middleware designed to simplify and accelerate
application development on NXP S32K microcontrollers.
All software included in this release have RTM quality level in terms of features, testing and
quality documentation, according to NXP software release criteria. RTM releases contain all
planned features implemented and tested. RTM releases are candidates that can be used in
production.
This SDK can be used standalone or it can be used with S32 Design Studio IDE (see
Supported hardware and compatible software).
Refer to Product license (License.txt) for licensing information and Software content register
(SW-Content-Register-S32-SDK.txt) for the Software contents of this product. The files can
be found in the root of the installation directory.
This release is delivered with support for S32 Configuration Tool. Migration from projects
created for S32K1xx with RTM 3.0.x to the S32K1xx with RTM 4.0.0 is supported in S32
Design Studio 3.3.
For support and issue reporting use the following ways of contact:
NXP Support to https://www.nxp.com/support/support:SUPPORTHOME
NXP Community https://community.nxp.com/community/s32/s32k
2.2 List of fixed issues from S32K1xx RTM 3.0.3 and S32K14xW EAR 0.8.0.
Component Issue
FlexIO_I2S FlexIO_I2S slave read wrong data in some cases when its bit clock and
word select edges were not synchronized.
FlexCan No warning was displayed in the FlexCAN configuration component when
the values for Pretended Networking feature exceed the maximum values
("Needed Matches" should not exceed 255, range of ID values for ID
filtering should be 0 - 0x1FFFFFFF).
FlexCan Fixed issue of Sporius ISR Trigger or Message Buffer (MB) Status
desynchronization avoiding trapping in ISR loop.
ENET ENET driver was replaced the macro FEATURE_ENET_WAKEUP_IRQS
to FEATURE_ENET_WAKE_IRQS.
SAI Fixed the issue that data received after aborting transfer maybe corrupted
because of residue data remaining in fifo.
LinStack Configuration tool showed error when “Time out units (us)” value is not
divisible by "Idle timeout (s)".
Clock_manager SPLL could be enabled even if xosc was configured with low frequency
range.
SBC All sbc_uja116x components showed baud rate settings from the first lpspi
component. Currently, each sbc_uja116x component has the baud rate
configured in the lpspi component that is using.
ADC
CMP
CRC
CSEc
DMA
EIM
ENET
ERM
EWM
FLASH
FLASH_MX25L6433F
FLEXCAN
FLEXIO (I2C, SPI, I2S, UART profiles)
FTM
LIN
LPI2C
LPIT
LPSPI
LPTMR
LPUART
MCU (Clock Manager, Interrupt Manager, Power Manager)
MPU
PINS
PDB
PHY_TJA110x
QSPI
RTC
SAI
TRGMUX
WDOG
3.2 PAL
ADC
CAN
I2C
I2S
IC
MPU
OC
PWM
SECURITY
3.3 Middleware
LIN stack – provides support for LIN 2.0, LIN 2.1, LIN 2.2 and J2602 communication
protocols
Support interleave mode for versions: LIN 2.0, LIN 2.1, LIN 2.2 and J2602
TCP/IP stack – available for S32K148, for more details see TCP/IP stack release
notes (in the SDK installation folder)
SBC drivers – provides support for UJA116x System Basis Chips
Note: For ISELED and NFC contact your Sales representative or FAE for more information.
3.4 Libraries
3.5 RTOS
The following processor reference manual has been used to add support:
S32K1XXRM Rev. 12.1, 02/2020
6.2 Boards
S32K-MB with mini module S32K144-100LQFP REV X1/X2
S32K-MB with mini module S32K14xCVD-Q144 REV X2/X3
S32K-MB with mini module S32K14xCVD-Q100 REV A
S32K-MB with mini module S32K1xxCVD-Q048 REV X1
S32K-MB with mini module S32K1xxCVD-Q064 REV X2
7.3 Drivers
ALL DRIVERS
Drivers may not respect the requirements for nesting level and cyclomatic complexity
due to an issue in tools.
The generated configuration name for some modules might be changed after
switching pins variant if using custom name. In order to avoid this, Click to
Peripherals/Refresh to update configuration name before clicking to Update Code
button.
CPU
When using DIAB toolchain on S32K11x and the interrupt handlers are overwritten
with INT_SYS_InstallHandler, the core will not return from interrupt handlers that are
not calling other functions or writing a global variable. Workaround: Make sure that all
interrupt handlers are performing at least one function call or are writing a global
variable.
ALIGNED macro is not supported for aligning function when using IAR Compiler.
CLOCK
FlexIO, SAI
FlexIO drivers and the SAI driver cannot be simultaneously used in DMA mode due
to overlapping DMA requests.
FlexIO_I2C
No STOP condition is generated when aborting a transfer due to NACK reception.
No clock stretching when the application does not provide data fast enough, so Tx
underflows and Rx overflows are possible.
The driver does not support multi-master mode. It does not detect arbitration loss
condition.
Due to device limitations, it is not always possible to tell the difference between NACK
reception and receiver overflow.
FlexIO_I2C may not create the N-ACK after receiving last data byte. This case only
occurs when another interrupt takes over flexIO_I2C interrupt.
Note: FLEXIO I2C issues described above are caused by Hardware limitations.
FlexIO_SPI
The driver does not support back-to-back transmission mode for CPHA = 1
FTM
Module can be used only in one mode (e.g. only PWM, OC). For example, this
configuration is not possible: 4 channels of FTM0 run in PWM and 4 channels of FTM0
run in input capture.
Complementary channel is not enabled in all configurations for independent channels.
The workaround is to use complementary channel only for combined channels.
LPSPI
When a SPI transfer in slave mode over DMA is initialized with an invalid address for
the TX buffer, the driver can never finish the transfer
I2C_PAL, LPI2C
7.4 Examples
Running the FLASH driver example from the flash will secure the device. To unsecure
the MCU a mass erase of the flash needs to be done.
Hello World example S32K146, S32K116, S32K118, S32K142W and S32K144W
cannot be supported on IAR IDE.
After partitioning Flash for CSEc operation, using the JLink Flash configuration of any
other project will not work anymore.
Workaround:
- Run csec_keyconfig example with ERASE_ALL_KEYS 0, using PEmicro debug
configuration
- Run csec_keyconfig example with ERASE_ALL_KEYS 1, using PEmicro debug
configuration
Example projects for IAR Embedded Workbench use simulator as default debugger.
The user has to manually select and configure the debug probe prior to downloading
to the target.
For exceptions from the following compiler settings, additional information can be found in the
SDK documentation, Build Tools section.
Option Description
-Ol Low optimizations
-e Allow IAR extensions
--cpu=Cortex-M4 / --cpu Cortex-M0+ Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
--thumb Selects generating code that executes in Thumb
state.
--fpu VFPv4_sp / --fpu none Use floating point instructions / Use software
floating point
--debug Include debug information
-D<cpu_define> Define a preprocessor symbol for MCU
-warnings_are_errors Treat code warnings as errors
Option Description
--cpu Cortex-M4 / --cpu Cortex-M0+ Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
--thumb Selects generating code that executes in Thumb
state.
--fpu VFPv4_sp / --fpu none Use floating point instructions / Use software
floating point
-DSTART_FROM_FLASH Mandatory when flash target is used
Option Description
--cpu Cortex-M4 / --cpu Cortex-M0+ Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
--thumb Selects generating code that executes in Thumb
state.
--fpu VFPv4_sp / --fpu none Use floating point instructions / Use software
floating point
--map <map_file> Produce a linker memory map file
--entry Reset_Handler Make the symbol Reset_Handler be treated as a
root symbol and the start label of the
Option Description
-mcpu=cortex-m4 / -mcpu=cortex-m0plus Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-mthumb Selects generating code that executes in Thumb
state.
-O1 Optimize
-funsigned-char Let the type char be unsigned, like unsigned char
-funsigned-bitfields Bit-fields are signed by default
-fshort-enums Allocate to an enum type only as many bytes as it
needs for the declared range of possible values.
-ffunction-sections Place each function into its own section in the
output file
-fdata-sections Place data item into its own section in the output
file
-fno-jump-tables Do not use jump tables for switch statements
-std=c99 Use C99 standard
-g Generate debug information
-D<cpu_define> Define a preprocessor symbol for MCU
-mfloat-abi=hard / -mfloat-abi=soft Use FPU instructions / Use software FP
-mfpu=fpv4-sp-d16 Specify the FPU variant (only for S32K14x)
-Wall Produce warnings about questionable constructs
-Wextra Produce extra warnings that -Wall
-Wstrict-prototypes Warn if a function is declared or defined without
specifying the argument types.
-pedantic Issue all the warnings demanded by strict ISO C
-Wunused Produce warnings for unused variables
-Werror Treat warnings as errors
-Wsign-compare Produce warnings when comparing signed type
with unsigned type
Option Description
-mcpu=cortex-m4 / -mcpu=cortex-m0plus Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-mthumb Selects generating code that executes in Thumb
state.
--entry=Reset_Handler Make the symbol Reset_Handler be treated as a
root symbol and the start label of the
application
-T<linker_file.ld> Use the specified linker file
-mfloat-abi=hard / -mfloat-abi=soft Use FPU instructions / Use software FP
-mfpu=fpv4-sp-d16 Specify the FPU variant (only for S32K14x)
-Xlinker –gc-sections Remove unused sections
-Wl, -Map=<map_file> Produce a map file
-lgcc Link libgcc
-lc Link C library
-lm Link Math library
Option Description
-cpu=cortexm0plus / -cpu=cortexm4 Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-fhard / -fsoft Use FPU instructions / Use software FP
-fpu=vfpv4_d16 Specify FPU type (only for S32K14x)
-preprocess_assembly_files Preprocess assembly files
DSTART_FROM_FLASH Mandatory when flash target is used
Option Description
-cpu=cortexm0plus / -cpu=cortexm4 Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-thumb Selects generating code that executes in Thumb
state.
-entry=Reset_Handler Make the symbol Reset_Handler be treated as a
root symbol and the start label of the
application
-T<linker_file.ld> Use the specified linker file
-map=<map_file> Produce a map file
-larch Link architecture specific library
Option Description
-tARMCORTEXM4LV / Selects target processor: Arm Cortex M4 / Arm
-tARMCORTEXM0PLS Cortex M0+
-Xremove-unused-sections Removes unused code sections
-lc Link the standard C library to the project in order to
support elementary operations that are used by the
drivers
-lm Link the standard math library to the project in order
to support elementary math operations that are
used by the drivers
<linker_file.dld> Use the specified linker file
-e Reset_Handler Make the symbol Reset_Handler be treated as a
root symbol and the start label of the
application
-m6 > <map_file> Produce a linker map
-Xpreprocess-lecl Perform pre-processing on linker scripts
Option Description
--target=arm-arm-none-eabi Select arm-none-eabi as target architecture
--cpu=cortex-m4 / --cpu=cortex-m0plus Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-mthumb Selects generating code that executes in Thumb
state.
-O1 Optimize
-fshort-enums Allocate to an enum type only as many bytes as it
needs for the declared range of possible values.
-fdata-sections Place data item into its own section in the output
file
Option Description
--target=arm-arm-none-eabi Select arm-none-eabi as target architecture
--cpu=cortex-m4 / --cpu=cortex-m0plus Selects target processor: Arm Cortex M4 / Arm
Cortex M0+
-mfloat-abi=hard / -mfloat-abi=soft Use FPU instructions / Use software FP
--cpreproc Instructs the assembler to call armcc to preprocess
the input file before assembling it
--cpreproc_opts Enables the assembler to pass options to the
compiler when using the C preprocessor
-DSTART_FROM_FLASH Mandatory define when flash target is used
Note: The symbol <linker_file> must be replaced with the corresponding path and linker file name per
device, memory model and target compiler.
E.g. C:\NXP\S32_SDK\platform\devices\S32K144\linker\gcc\S32K144_64_flash.ld - for S32K144, 64 KB
of SRAM and Flash target on GCC.
Symbol <map_file> shall be replaced with the desired map file name.
Symbol <cpu_define> shall be replaced with CPU_S32K144HFT0VLLT for S32K144, CPU_S32K148 for
S32K148, CPU_S32K142 for S32K142, CPU_S32K146 for S32K146, CPU_S32K144W for S32K144W and
CPU_S32K142W for S32K142W
Acronym Description
EAR Early Access Release
JRE Java Runtime Environment
EVB Evaluation board
PAL Peripheral Abstraction Layer
RTOS Real Time Operating System
PEx Processor Expert Configurator
PD Peripheral Driver
RTM Ready to Manufacture
S32DS S32 Design Studio IDE
SDK Software Development Kit
SOC System-on-Chip
sCST Structural Core Self Test
S32CT S32 Configuration Tool
Vlad Baragan-
30-Oct-2015 1.0 First version for EAR 0.8.0
Stroe
Vlad Baragan-
18-Dec-2015 1.1 Added patch 1
Stroe
Added drivers, new in release section, updated Vlad Baragan-
01-Apr-2016 2.0
examples, known limitations for EAR 0.8.1 Stroe
21-Dec-2016 4.0 Updated Release Notes for 0.9.0 BETA release Rares Vasile
23-Mar-2017 5.0 Updated Release Notes for 1.0.0 RTM release Rares Vasile
04-May-2017 6.0 Updated Release Notes for 0.8.3 EAR release Rares Vasile
Updated Release Notes for 0.8.3 EAR release -
10-May-2017 6.1 Added drivers, new in release section, updated Cezar Dobromir
examples, known limitations for EAR 0.8.3
28-Mar-2019 14.1 Updated for RTM 3.0.1 service release Vlad Lionte
Ovidiu-Marius
11-Oct-2019 14.2 Updated for RTM 3.0.2 service release
Alexandru
Cuong Nguyen
5-May-2020 15.0 Updated for RTM 3.0.3 service release
Van
Cuong Nguyen
12-June-2020 16.0 Updated for RTM 4.0.0 release
Van