[ECOS] flash erase - network stack

Gary Thomas gary@mlbassoc.com
Tue Nov 9 13:17:00 GMT 2004


On Tue, 2004-11-09 at 05:25, Nicolas Brouard wrote:
> Thank you for this explanation. I understand I can't debug my application
> while the flash is erased because my Redboot is in the FLASH. But, if I
> execute my application without debugging it, I think no Redboot code is
> executing:

Not necessarily.  Depending on the platform, you may still be executing
some instructions from FLASH, even without debugging.

Try disabling interrupts during the FLASH operations to see if it helps.

> 
> RedBoot> load myapp.srec
> Using default protocol (TFTP)
> Entry point: 0x00020000, address range: 0x00020000-0x000895a4
> RedBoot> go
> ...etc...
> 
> I have the same problem when I ping the application.
> 
> ... Erase from 0x7c3e0000-0x7c6247e4:
> ........$T04thread:00000003;40:7c017eb0;01:000dc5d4;#24
> 
> I think this happens because of interrupts and not because RedBoot code from
> Flash is executed. Do you?
> 
> I will try the patch of Per Hedblom.
> 
> -----Original Message-----
> From: Gary Thomas [mailto:gary@mlbassoc.com]
> Sent: Monday, November 08, 2004 6:43 PM
> To: Nicolas Brouard
> Cc: eCos Discussion
> Subject: RE: [ECOS] flash erase - network stack
> 
> 
> On Mon, 2004-11-08 at 14:50, Nicolas Brouard wrote:
> > The code I execute is in RAM.
> > I can debug my code using RedBoot in FLASH with network debugging.
> > I put breakpoints in the function ip_input (ip_input.c) and in the
> function
> > icmp_input (ip_icmp.c)
> > I ping my application (not RedBoot). GDB breaks on input and on
> icmp_input.
> > I continue step by step then I go to icmp_reflect function, etc...
> > If I do that during erasing flash, I have a SIGILL signal (Illegal
> > instruction).
> 
> Precisely :-)  When you hit a breakpoint, single step or even just print
> a message, you'll be executing RedBoot from the FLASH.  Once you start
> the erase, execution is no longer possible and you'll get a trap.
> 
> The best solution is to run RedBoot in ROMRAM mode - where it never
> actually executes from FLASH [directly].  An alternative would be to
> disable interrupts during FLASH operations.
> 
> >
> > -----Original Message-----
> > From: Gary Thomas [mailto:gary@mlbassoc.com]
> > Sent: Monday, November 08, 2004 4:19 PM
> > To: Nicolas Brouard
> > Cc: eCos Discussion
> > Subject: Re: [ECOS] flash erase - network stack
> >
> >
> > On Mon, 2004-11-08 at 14:12, Nicolas Brouard wrote:
> > > Hi,
> > >
> > > I have a problem with the Ethernet Stack (FreeBSD) during flash erasing.
> > > My board is based on a MPC860. My application initializes the FreeBSD
> > stack
> > > and then erases several sectors of flash (2.5 Mo).
> > > Everything is ok if there is no Ethernet traffic.
> > > But, if I ping my board during flash erasing, the program scratches
> > > immediately:
> > > ... Erase from 0x7c3e0000-0x7c6247e4:
> > > ........$T04thread:00000003;40:7c017eb0;01:000dc5d4;#24
> > >
> > > The flash driver I use is: amd/am29xxxxx variant am29lv640
> >
> > It looks like you are trying to use (execute from) the FLASH while
> > executing the erase.  You don't happen to be using RedBoot in FLASH
> > with network debugging while running your code, do you?
> >
> > --
> > Gary Thomas <gary@mlbassoc.com>
> > MLB Associates
> >
> >
> > --
> > Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
> > and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
> >
> --
> Gary Thomas <gary@mlbassoc.com>
> MLB Associates
> 
-- 
Gary Thomas <gary@mlbassoc.com>
MLB Associates


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list