Forums

why is a bootloader required?

Started by funkymunky December 31, 2004
Hi,


Im new to the arm family and embedded systems in general,till now iv
worked a bit on the 89c51. Ive been puzzled by the following: why is a
bootloader required in controllers like the at91rm9200 im using right
now? how come no bootloader is required in a controller like the 89c51?
Iv read a bit on
the need for a bootloader in a PC..but why would it be required on a
controller?

Also, the atmel manual mentions that a default bootloader is provided
in controllers like the one im using..my project involves porting of
Linux to this controller..why,then, is a seperate bootloader reqd??
thanx in anticipation
Mayank

If you are executing a program in ram you need something to load it
from your storage device like your hard disk or flash drive. The
bootloader is a small program in rom that does this.
Peter

in  x51 architectures and all u have one program loaded in flash or any
whr. on resetting system, the instruction pointer,IP will point to
0x0000 where u writes the jump instruction which points to the real
program start location. but for complex architectures and all u need to
initialize registers , set timers, flags and check for some other
constraints etc. before going into program execution by the embedded
sys.
u can think ur computer bios in an analogus way to this...on starting
it initializes the peripherals attached to it and the loads the IP with
the location in secondary storage from where the boot record for OS is
residing.
hopes this serves the purpose

Hi Mayank,

Sometimes there is yet another reason: On parts like the MSP430 that are JTAG programmed this JTAG interface takes about half a dozen pins that can be difficult to wire up for dual use. This can be roughly a third of the port pins on a smaller pin count devices, too much to give up. So, there is a boot loader already on the uC that allows programming via a simple RS232 type setup, requiring much less in port pins.

Regards, Joerg

http://www.analogconsultants.com
In article <1104478831.630041.307790@c13g2000cwb.googlegroups.com>,
funkymunky <prehistorictoad2k@yahoo.com> writes
>Hi, > > >Im new to the arm family and embedded systems in general,till now iv >worked a bit on the 89c51. Ive been puzzled by the following: why is a >bootloader required in controllers like the at91rm9200 im using right >now? how come no bootloader is required in a controller like the 89c51? >Iv read a bit on >the need for a bootloader in a PC..but why would it be required on a >controller?
They are different boot loaders. One loads the program (OS) from disk to memory to run. on an 8051 the program is already in memory. the boot loader is to load the program into the empty MCU. Usually to flash memory so *next time* you fire up the chip the program will run automatically.
>Also, the atmel manual mentions that a default bootloader is provided >in controllers like the one im using..
Yes. It is in a special area of ROM.
>my project involves porting of >Linux to this controller..
STOP... Linux will not run on the 8051. GAME OVER Choose another MCU architecture. Preferably 32 bit. You can NOT run Linux on an 8051. Try an ARM part with an external bus. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\ /\/\/ chris@phaedsys.org www.phaedsys.org \/\/ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
In article <1104492249.960351.205940@c13g2000cwb.googlegroups.com>,
peterk <peterk.vt80@gmail.com> writes
>If you are executing a program in ram you need something to load it >from your storage device like your hard disk or flash drive. The >bootloader is a small program in rom that does this. >Peter
On an 8051 the program resides in flash... there is not a storage device. The boot loader is for programming an empty 51 code space instead of using an eprom programmer. It is not the same as a boot loader in a PC. /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\ /\/\/ chris@phaedsys.org www.phaedsys.org \/\/ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Luckily he is using an Atmel ARM part at91rm9200 like he said in his
original post. Atmel has links in an FAQ for Linux development systems
and drivers.
Peter

Hi!

Thanx for the help..i read the Atmel manual more closely this time, it
said that the boot program also implements a few rountines that can be
called from user programs later on, so it saves some effort and makes
ur code smaller.

Quote:
>STOP... Linux will not run on the 8051. GAME >OVER
Im not trying to port Linux to an 8051! il be using an AT91rm9200 for that. Upon bootup, the Prog. Conter points to 0x0 which has a jump to the program code..This jump instruction is written by the software that we are using to load the program into the controller`s flash, is that correct? Or is it hard coded, so that program code must always start from a particular address..?
In article <1104532695.886082.313770@z14g2000cwz.googlegroups.com>,
peterk <peterk.vt80@gmail.com> writes
>Luckily he is using an Atmel ARM part at91rm9200 like he said in his >original post. Atmel has links in an FAQ for Linux development systems >and drivers. >Peter
Sorry... put it down to a bout of pre New Year party drinking :-) The Atmel ARM part is OK for Linux. The Atmel (or any one else's 51 parts) are not. Jumping to conclusions because i have been asked about putting Linux on 51's /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\ /\/\/ chris@phaedsys.org www.phaedsys.org \/\/ \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
hi Mayank!
i think there is separate procedure for accessing bootloader memory and
code memory!
So they are accessed using the same address. its like using same name
to call different persons, each person responds based on the context!
so it is not hard coded!!
Hi all! 
any one got any comments on my explanation!

-srinivas