hello, I am a student in Cairo university in Egypt, in our department they gave me a project to develop a simple boot loader with a very simple kernel and I don't know where can I start from ? can u help me please
thx waiting for your reply
You could Google "Boot loader".
Otherwise some basic principles I have used and seen.
Generally there are two code sets in an embedded system. Most would refer to one as the boot loader and the other the application.
A boot loader most likely contains the following attributes:
1) It is most likely only programmable at the factory (not field programmable). 2) The code is stored in non-volatile memory (Flash) that the hardware vector will execute from a Power-On-Reset. 3) It usually has its own dedicated Flash sector (and mostly likely password protected from erase/programming) 4) It contains a method to check for a valid application program (via a calculated checksum, CRC that the result is stored at the last entries of the application Flash space). If the application is found to be valid it will pass control to the Application code. 5) Routines to configure the base operation of the embedded systems (clock, I/O, power, basic diagnostics...). In addition to be able to erase/program the on-system Flash memory. 6) Basic communication routines (UART, LIN, CAN, Ethernet, USB...) 7) Minimal operating system or state machine to run the basic routines and communication. 8) If the device has a programmable base address for the interrupt vector table it will have its own vector table. It will configure the vector to base vector table to the applications entry before jumping to it (assuming the application is valid). Otherwise there will be a double jump table for the vector table so that the application still gets its interrupts.