Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
12/18/09 01:03
Read: times


 
#171708 - explanation
Responding to: ???'s previous message
Erik and Andy thanks for the feedback.

My boot loader code has to run between 0x0000 to 0x09ff.
The application code starts at 0x0a00.

In my application code I should be able to go in to boot loader code (which is in between 0x0000 to 0x09ff) if required in order to update my application code.

I have written programs in assembly 8051 which work perfectly fine this way. I send a command to the application code to switch to boot loader mode and the code jumps to 0x000.

Also when I compile my program I make sure that the interrupts are correctly vectored to the new location.

I should be able to switch from oX0a00 location to 0X000 and stay there till I am done with the boot loader functions where in I erase the code between 0x0a00 to 0x8e00(a random location that I know for sure is within my code capacity).
Then I rewrite the flash memory from 0x0a00 to 0x8e00 with new program code.




List of 33 messages in thread
TopicAuthorDate
ljmp in C            01/01/70 00:00      
   DEAD WRONG in assembler            01/01/70 00:00      
      It would be better to describe what you need to achieve            01/01/70 00:00      
         explanation            01/01/70 00:00      
            if I understand correctly what you want...            01/01/70 00:00      
               this sort of job is best done in ssembler            01/01/70 00:00      
               re: if I understand correctly what you want...            01/01/70 00:00      
            Function pointer            01/01/70 00:00      
            not a reset            01/01/70 00:00      
               pardon?            01/01/70 00:00      
                  jump to zero and reset            01/01/70 00:00      
                     a watchdog reset does not necessarily perform a "full" reset            01/01/70 00:00      
                        ljmp 0000H tested with SDCC            01/01/70 00:00      
                           That's exactly what OP needed, not "reset"            01/01/70 00:00      
                           TOTALLY ABSOLUTELY WRONG!!            01/01/70 00:00      
                              EA=0            01/01/70 00:00      
                                 it depends            01/01/70 00:00      
                                    which leads me to            01/01/70 00:00      
                                    you prove my point            01/01/70 00:00      
                                       re: you prove my point            01/01/70 00:00      
                                          it will not do what you expect RELIABLY!!            01/01/70 00:00      
                                 I do take care of re-initializing            01/01/70 00:00      
                                    double, pls ignore            01/01/70 00:00      
                                    you don't get it, do you            01/01/70 00:00      
                           Does it really?            01/01/70 00:00      
                              Yes it does (sometimes)            01/01/70 00:00      
                                 Tail-end recursion            01/01/70 00:00      
                                 optional?            01/01/70 00:00      
                                    it's the default            01/01/70 00:00      
                                       ljmp in C            01/01/70 00:00      
                                          Have you confirmed that?            01/01/70 00:00      
                                             call != jump            01/01/70 00:00      
   I've seen some.            01/01/70 00:00      

Back to Subject List