First Stage Initialization Files - 2025.2 English - UG1400

Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400)

Document ID
UG1400
Release Date
2025-11-20
Version
2025.2 English
crt0.o
This initialization file is for programs executing in standalone mode, without the use of any bootloader or debugging stub. The file populates the reset, interrupt, exception, and hardware exception vectors and invokes the second stage startup routine _crtinit. On returning from _crtinit, it ends the program by infinitely looping in the _exit label.
crt1.o
This initialization file is for application debugging in a software-intrusive manner. It populates all the vectors except the breakpoint and reset vectors and transfers control to the second-stage _crtinit startup routine.
crt2.o
This initialization file is for executable loading using a bootloader. It populates all the vectors except the reset vector and transfers control to the second-stage _crtinit startup routine. On returning from _crtinit, it ends the program by infinitely looping at the _exit label. Because the reset vector is not populated, on a processor reset, control is transferred to the bootloader. The bootloader can reload and restart the program.
crt3.o
This initialization file is for the circumstance when the executable does not use any vectors and wishes to reduce code size. It populates only the reset vector and transfers control to the second stage _crtinit startup routine. On returning from _crtinit, it ends the program by infinitely looping at the _exit label. The GNU linking mechanism does not pull in any of the interrupt and exception handling related routines because the other vectors are not populated. This helps save code space.