This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Performing a soft reset on the Cirrus Logic EP7312
- From: "Chris Sekula" <chriss at turnpikeglobal dot com>
- To: <danc at fullplaymedia dot com>
- Cc: <ecos-discuss at sources dot redhat dot com>
- Date: Wed, 30 Jan 2002 10:13:59 -0500
- Subject: [ECOS] RE: Performing a soft reset on the Cirrus Logic EP7312
Dan:
Thanks for your comments.
I tried both of your suggestions and it worked consistently (though I
had to cast the return value from hal_vsr_table[0]). I also tried both
suggestions without disabling the cache, interrupts and the scheduler
and got varying results: it would work 6 or 7 times in a row but would
then hang shortly thereafter.
I suppose the reason that my method (the inline assembly command) didn't
work consistently was that I had specified the incorrect address for the
reset vector. The base address of the Flash is 0xe0000000 and I had
assumed that the reset vector was located here (note that the Kernel
starts up and begins executing from Flash).
I think it may be better to use the value returned from
hal_vsr_table[0], which was 0xe0000330. Using an address of 0, as in
your first suggestion will cause a startup from RAM as the base address
of the RAM is 0x00. If I have reprogrammed the kernel/application, I'd
prefer to jump to the reset vector in Flash to start up the system.
Do you agree? Also, do you know what the vector located at 0xe0000000 is
supposed to do?
Thanks for your assistance,
CHRIS.