<?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>Softwareupdate from USB-Memorystick by Flash-in-situ-Reprogramming</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/37448/softwareupdate-from-usb-memorystick-by-flash-in-situ-reprogramming</link><description> 
Hello, what I want to do in a new XC167 project is to program a
boot routine which always resides in first sector of the internal
flash. On power-up of the unit this routine will check if a memory
stick is installed and if so it will also check if a</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Softwareupdate from USB-Memorystick by Flash-in-situ-Reprogramming</title><link>https://community.arm.com/thread/75513?ContentTypeID=1</link><pubDate>Wed, 19 Sep 2007 22:55:56 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:11b2e614-5e1f-41f1-9de7-0a57c89872bb</guid><dc:creator>Harald Buehler</dc:creator><description>&lt;p&gt;&lt;p&gt;
Great assistance - Thanks a lot !&lt;/p&gt;

&lt;p&gt;
One further question concerning this topic, maybe you can help me
once more: We are using &amp;Acirc;&amp;micro;V3 with Ulink2 for debugging. I
think, for running the application program from adress 0x0C02000 we
have to make this by linker settings. But how does Ulink treat this
when downloading into target ? Do we have to adjust the offset adress
in ULINK settings ? If so, does ULINK erase the first sector too or
does it remain unchanged ? In other words, we want to download the
application to adress 0x0C02000, leaving the first flash sector
unchanged - the bootloader must remain unaffected !&lt;/p&gt;

&lt;p&gt;
Thank you in advance, regards&lt;br /&gt;
Harald&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Softwareupdate from USB-Memorystick by Flash-in-situ-Reprogramming</title><link>https://community.arm.com/thread/51152?ContentTypeID=1</link><pubDate>Wed, 19 Sep 2007 08:58:26 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:f050ab0e-68db-49e9-b42e-b6411211a5be</guid><dc:creator>Chris Wunderlich</dc:creator><description>&lt;p&gt;&lt;p&gt;
There are many ways to do this but something in C could look
like.&lt;/p&gt;

&lt;p&gt;
Declare a function pointer&lt;/p&gt;

&lt;pre&gt;
static void (far *myPC)(void);
&lt;/pre&gt;

&lt;p&gt;
Then in your code set the pointer to the address you want and then
call it.&lt;/p&gt;

&lt;pre&gt;
  myPC = 0xC02000;  /* set the address */
  myPC();           /* jump to the address */
&lt;/pre&gt;

&lt;p&gt;
If you are using assembly then simply push the address you want
onto the stack and then perform a &amp;quot;RET&amp;quot; of &amp;quot;RETS&amp;quot; instruction.&lt;/p&gt;

&lt;p&gt;
-Chris&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>