In an embedded operating system, Bootloader is run before the operating system kernel runs. You can initialize a hardware device, establish a memory space map, and bring the system's hardware and software environment to a suitable state to prepare the correct environment for the final call to the operating system kernel. In embedded systems, there is usually no firmware program like the BIOS (note that some embedded CPUs also embed a short startup program), so the entire system's load start-up task is entirely done by bootloader. In an embedded system based on ARM7TDMI core, the system usually executes from address 0x00000000 when power-up or reset, while the system's Bootloader program is usually arranged at this address. (personal feeling is the BIOS on different hardware)
Bootloader is the first code of the embedded system after power-on, after it completes the initialization of the CPU and related hardware, the operating system image or the solidified embedded application is loaded into memory and then jumps to the space where the operating system is located, and the operating system starts running. [1] for embedded systems, Bootloader is implemented on a specific hardware platform. Therefore, it is almost impossible to build a common bootloader for all embedded systems, and different processor architectures have different bootloader. Bootloader not only relies on the CPU's architecture, but also relies on the configuration of the embedded system board-level devices. For 2 different embedded boards, even if they are using the same processor, the bootloader program running on a board can also run on another board, and the bootloader source program needs to be modified.
Some knowledge of bootloader