Skip to main content

What is Boot loader in embedded System Init Steps

Lets talk about Boot loader in embedded system and its basics.
What is Boot loader in embedded System and its initialization steps?
What happens on power on? What does bootloader do on power on? Read on for answers to these question .
Boot loader is a program which will execute on power-on in an embedded system. The main functionality of the boot loader is to initialize the hardware and make a platform for, and load the Operating system. Hardware initialization includes the CPU, memory controller, UART, etc. As system is up the CPU will be initialized then the memory controller (i.e. DDR controller, Flash controller) will be initialized. The Boot loader code will itself relocate to the RAM and do further hardware initialization like UART, MAC, PCI etc.
The very first initialization code should be from a non-volatile memory on board, which will have the capability of XIP (execute in place). IF you have serial Flash as boot code holder, which cannot be used for XIP, then other options are

1. Boot from IROM
2. Boot from SPI flash

IROM code will be a one time programmable on-chip memory. This memory should be enough to hold a minimal boot loader. This memory will have the capability of XIP. On power-up, if boot strap selects this mode of operation IROM code will initialize the hardware. After initialization is over the code will be relocated to DDR.
Basic operations provided in the boot loader will be
1. Memory read
2. Memory write
3. SPI & I2C EEPROM support
4. SPI Flash read, write & erase
5. TFTP support for Upgrade
Algorithm for the boot-up procedure from IROM
1. On power-up IROM will be mapped to address 0x00 by H/W.
2. Read the configuration data from I2C/SPI memory for configuring memory controller and SPI Flash Support.

a. If I2C EEPROM is not present, I2C flag provided by the ASIC will be cleared. Thus boot loader can do a conditional read, either from SPI EEPROM or I2C EEPROM.
b. When neither SPI EEPROM nor I2C EEPROM has the configuration data, default configuration will be used.
3. Configure the memory controller and SPI Flash support

4. The IROM code will be relocated to the DDR
5. Control of execution will be transferred to DDR.

In summary
Internal bootloader (IBoot) is present in the IROM memory of the chip and the main purpose of this is to do the critical initializations. The IBoot is divided into following.
Booting procedure:
• Jump to Internal ROM address 0xE8000100.
• Initialize CPU (peripheral port configuration).
• Disable the IROM on region0 i.e. at address 0x00 so that DDR can be configured.
• Initialize DDR memory controller.
• Check for PCIe RC/EP mode and if EP mode is enabled then configure the device properties.
• Check for external booting mode and if it is enabled relocate code from SPI flash and execute it.
• If external booting is not enabled then relocate the IBoot code from IROM to RAM and jump to the start_iboot ().
• Initialize UART with baud rate 57600.
• Initialize the stack.
• Print the IBoot command prompt.
• Now IBoot is ready to execute commands given by the user.

Comments

Popular posts from this blog

Xilinx's Interview Questions

Xilinx is the world's one of largest supplier of programmable logic devices. It has started R & D department in Hyderabad, India. It has broad scope for embedded system programming in device driver in linux.

Before the interview you have to feel the Xilinx form with information containing all academic details, current/previous employer, contacts of employer( to check out info about you), current ctc, expected ctc and expected date of joining, etc.

I appeared two back to back technical interviews.

The first interview was taken by a young man look like just crossed 30's.

He asked me to tell me about myself.

Then he asked my experience.

He checked my expertise in resume.

He asked questions about RTOS, and Linux Device Drivers.
What is RTOS ? Define it.
How a linux device driver works?
How a character driver works?

He looked at my project summaries and started to ask in depth questions about each project.

After that he asked me to write to delete nth node from starting in Singly Linked Li…

Rajasthan Board 10th Results | rajedubord.nic.in | RBSE

Raj Board of Secondary Education, Rajasthan Results at rajeduboard.nic.inBoard of Secondary Education, Rajasthan Ajmer declared result of secondary examination today at 4PM official site is rajedubord.nic.in

check Secondary Examination- 2008 Result
(To be announced on July 1st, 2008 at 4:00 PM)
source
http://rajresults.nic.in/

Declared result
Praveshika Examination-2008 Result
(Announced on June 25, 2008 at 4:00 PM)

The history of the Board of Secondary Education Rajasthan (BSER) is a remarkable panorama of progressive record of the futurological vision for developing a dynamic system of various sub-systems of examinations and highlights of the academic excellence of the last four decades. The BSER took rapid strides for promotion and development of Secondary Education in Rajasthan, spread over 3,42,239 sq. km. and in more than 6000 schools located in 32 districts involving 8.5 lakhs students for Secondary and Senior Secondary Examination in the year 2000.

At present the Board is conducting …

Delete Last Char in String C program Simple Way

How to delete the last character in a string?
Lets say I have a string "/data/share/" I want to delete the last character from the string ie "/" so that output will be "/data/share"; Here are some methods to do this in C language.
one way could be use of strncat() function;
char*strncat(char*restricts1, constchar*restricts2, size_tn);
The strncat() function appends not more than n characters from s2, and
then adds a terminating `\0'.
#include
Another simple way is,
say the string variable is str_p
Then simply put
str_p[(strlen(str_p)-1)] = '\0';
And you are done;