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@judgementSPAMCAKE.com
Viewed: 
1558 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 (...) (25 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: (...) (25 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
    

Custom Search

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