To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.rcx.pbforthOpen lugnet.robotics.rcx.pbforth in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / RCX / pbFORTH / 369
368  |  370
Subject: 
Re: How do I delete firmware from firmware?
Newsgroups: 
lugnet.robotics.rcx.pbforth
Date: 
Tue, 23 May 2000 15:06:46 GMT
Reply-To: 
sjm@judgement.com#spamless#
Viewed: 
4453 times
  
Ralph Hempel wrote:
> 
> > I asked this question under a confusing subject that
> > people may have missed so I am asking again. How does
> > one delete firmware from firmware. I am looking for a
> > solution for pbforth but the question could have be asked
> > for LegOS or Quite C as well. If I get no answer I will
> > try gross things like zeroing the first 50 bytes of code,
> > turn off sll interrupts and then jumping to the h8-300 reset
> > vector. Some variation of this will probably work but I
> > wondered if there was an "official" way to do this. I notice
> > from the unofficial internals doc that there is an opcode
> > for this but no rom entry is listed for this function. Has
> > anyone looked at the rom to see what it does?
> 
> I think if you do a direct jump to 0x03ae, it will init memory
> and essentially start the brick from scratch. At least that's
> what I read from the internals doc...

Looking at forth code it looks like "HEX 3ae EXECUTE"
might end up doing what we are talking about. I tried this
with out getting what I expected. I will fiddle more but does
the approach seems right?

M_CODE(7,``"EXECUTE"'',EXECUTE,_FLINK)
     MOV.W   rTOS,rA
     MOV.W   @rDSP+,rTOS
     JMP     @rA             ;jump to code address

BTW: I like the direct threaded approach of pbforth.
It is clean and easy to understand. The last forth
I knew something about used token threading which
required an extra level of indirection.



Message has 1 Reply:
  RE: How do I delete firmware from firmware?
 
(...) Here's a copy of what Kekoa replied with... This sounds correct. In C, this is how I do it: /* Delete the firmware */ *(char *)0xffcc = 1; (*(void (**)(void))0)(); Indeed, *(void (**)(void))0) is the reset vector, whose value is 0x03ae. 0xffcc (...) (26 years ago, 23-May-00, to lugnet.robotics.rcx.pbforth)

Message is in Reply To:
  RE: How do I delete firmware from firmware?
 
(...) I think if you do a direct jump to 0x03ae, it will init memory and essentially start the brick from scratch. At least that's what I read from the internals doc... Cheers, Ralph Hempel - P.Eng ---...--- Check out pbFORTH for LEGO Mindstorms at: (...) (26 years ago, 18-May-00, to lugnet.robotics.rcx)

5 Messages in This Thread:


Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact

This Message and its Replies on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR