Hi Amrit ,
Both of these boot loaders have different functionalities.Please find the points below :
1)When system is started , the Program counter is loaded with all zeros which says to fetch an instruction from this location .IT is the Boot ROM chip location by default (ie.., like BIOS chip in x86).
2)This location in the BOOT ROM has an instruction says to jump to a location where the code to be executed when reset happens.The PC is loaded with this address.
3) The basic required peripheral initialization happens and then the boot ROM code searches for a valid boot partition location(like from eeprom or sdcard ) when it doesn't find a valid partition , it waits for some thing to be transmitted over UART as a last option.(we can pass FSBL over UART also)
4)suppose say if SDcard is detected it searches for a file called MLO (Memory loader) which is the first stage boot loader .
First stage boot loader :-
The first stage boot loader is required because there will be different RAM types of various sizes , so different RAMs have different initialization things need to taken care of before we make RAM available to system.The FSBL is loaded in the internal RAM ,which initializes the external RAM .We can do this this in BOOT ROM code also but since the contents of the BOOT ROM code cannot be changed once flashed for good flexibility to initialize various RAM types having FSBL is a nice option.This is how we have from same company mobile sets with different RAM sizes .This also adds to production cutting cost for industries.
The FSBL after initializing external RAM will bring the SSBL (uboot) to the RAM and now uboot starts executing .
Second Stage Boot Loader (UBOOT) :-
The SSBL brings the uImage (linux kernel image) to the RAM. Kernel requires some parameters to be passed for it to execute(like ROOT FS location or saying it to fetch from network etc..,) , the SSBL takes this responsibility of passing these parameters to kernel ,then the kernel boots up and now the system is in hands of kernel.
Thanking,
Gopikrishna.