<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>BOOT LOADER  HELP</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/23652/boot-loader-help</link><description> 
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&amp;#39;t know where can I start
from ? can u help me please 

 
thx waiting for your reply 
</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: BOOT LOADER  HELP</title><link>https://community.arm.com/thread/51707?ContentTypeID=1</link><pubDate>Mon, 21 Apr 2008 17:10:32 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:0b38d67f-e5d3-4b9f-8426-6dcd2bcf8246</guid><dc:creator>Chris Wunderlich</dc:creator><description>&lt;p&gt;&lt;p&gt;
You could Google &amp;quot;Boot loader&amp;quot;.&lt;/p&gt;

&lt;p&gt;
Otherwise some basic principles I have used and seen.&lt;/p&gt;

&lt;p&gt;
Generally there are two code sets in an embedded system. Most
would refer to one as the boot loader and the other the
application.&lt;/p&gt;

&lt;p&gt;
A boot loader most likely contains the following attributes:&lt;/p&gt;

&lt;p&gt;
1) It is most likely only programmable at the factory (not field
programmable).&lt;br /&gt;
2) The code is stored in non-volatile memory (Flash) that the
hardware vector will execute from a Power-On-Reset.&lt;br /&gt;
3) It usually has its own dedicated Flash sector (and mostly likely
password protected from erase/programming)&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
6) Basic communication routines (UART, LIN, CAN, Ethernet,
USB...)&lt;br /&gt;
7) Minimal operating system or state machine to run the basic
routines and communication.&lt;br /&gt;
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.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: BOOT LOADER  HELP</title><link>https://community.arm.com/thread/51706?ContentTypeID=1</link><pubDate>Mon, 21 Apr 2008 14:24:36 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:e3409040-559f-4e4d-bc55-9dbc3f6d129b</guid><dc:creator>erik  malund</dc:creator><description>&lt;p&gt;&lt;p&gt;
1) the bootloader can not &amp;#39;just&amp;#39; be part of a C program, if you do
that the bootloader and the appcode will share the &amp;#39;secret&amp;#39; routines
and the bootloader will blow when you erase the app&lt;br /&gt;
2) a boot loader that can not handle a poweroutage at any time during
bootload &lt;i&gt;and switching between boot and app&lt;/i&gt; is worthless&lt;br /&gt;
3) because of 2) it is advisable not to use interrupts in the
bootloader&lt;br /&gt;
4) the &amp;#39;ease&amp;#39; of making a bootlader depend on the flash page size of
your chip.&lt;br /&gt;
5) good luck&lt;/p&gt;

&lt;p&gt;
Erik&lt;/p&gt;

&lt;p&gt;
&amp;quot;secret routines&amp;quot;: the routines the compiler inserts automatically
to handle certain constructs.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>