Hello @zhangzhixing ,
You're seeing the following linker error when using a static library (libTESTLIB.a) in your S32DS project for S32K:
error: LpuartFlexio_Uart_Ip_Example_S32K396.elf uses VFP register arguments,
libTESTLIB.a(SchM_Port.o) does not
error: failed to merge target specific data
collect2.exe: error: ld returned 1 exit status
This means there's a mismatch in the floating-point ABI between your application and the library.
Your application is compiled with VFP (hardware floating-point) support, using VFP registers to pass arguments.
However, the library object file (SchM_Port.o) was compiled without VFP support — likely using softfp or soft ABI.
This ABI mismatch prevents the linker from combining the object files.
To fix this, ensure both your application and the library are compiled with the same ABI settings.
Option 1: Rebuild the library with VFP support
In S32DS:
- Go to Project Properties → C/C++ Build → Settings → Tool Settings → Target Processor
- Set:
- Floating Point Unit: FPv5-sp-d16 (or appropriate for your core)
- Floating Point ABI: hard (to use VFP registers)
Make sure these settings match in both the main project and the library project.
Option 2: Change your main project to use softfp
If you cannot rebuild the library, you can change your main project to use softfp ABI:
- Set Floating Point ABI to softfp in your project settings.
This allows compatibility with both hard and soft ABI, but may reduce performance.

Best regards,
Pavel