This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.
 
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]