BSPs always include a viable startup program binary, and source code you can use to build your own image with a modified or new startup program.
Typically, the startup source code is found in the following directory:
bsp_working_dir/src/hardware/startup/boards/boardname
The diagram below shows a typical source code directory structure.
The hardware directory will usually also include the ipl directory, but on systems that always use U-Boot, this directory may be absent because it isn't needed.
Similarly, the flash directory will be present only if the system will use a Flash filesystem.
In most cases, the hardware directory also includes other subdirectories such as dev* directories for device drivers (e.g., audio, eMMC), a devnp directory for networking, and spi and i2c directories with the source code that supports these technologies.
The boards directory has platform-specific source code:
The lib directory has the generic (i.e., common to all platforms) startup API source files, and: