No subject
Tue Aug 19 22:18:26 CEST 2008
At last I check the data in exactly the exception handler offset, like "md 0x700; md 0x900; md 0x500;". I can find the last two addresses embedded.
One is like UnknownException() or timer_interrupt() or external_interrupt(). The other is like int_return. Simply "go" the first address, I retained normal result -- UnknownException() or timer_interrupt() or external_interrupt() print their origin msg on the console. But why they can't work in the exception handling -- even they won't really run in the exception handling, :)
Thanks to your patiently reading out the above long text.
Any help or advice is appreciated.
Thank you.
--Boundary_(ID_Wi3WBd41UM4KkI/R7iGBFA)
Content-type: text/html; charset=gb2312
Content-transfer-encoding: 7BIT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2919.6307" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>My target platform is with 750FX and MPC107, 256M ram, a
NS16c552 serial and also a Intel 82559 compatiable ethernet
controller.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>I can get Program Exeption(0x700) printing msg when I "go" a
program from an arbitary address within U-Boot's shell.</FONT></DIV>
<DIV><FONT size=2>But when I set EE bit in MSR register, U-Boot seems to hang
there, nothing </FONT></DIV>
<DIV><FONT size=2>output.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>I guess the exception handling have problem. But I really
didn't change any codes in Start.s or ppc_asm.tmpl.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Additonal, when I write a dword to a address outside my
BAT-Array covered range, DSI Exception(0x300) also seems hanging, nothing
output. I originally image that the UnknownException() funciton can print
something on my console.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>In any case Program Exception handling does work. And it
seems when I set IP bit in MSR register, the higher Exception handler which is
borned in flash can go up to the address { hdlr - _start + EXC_OFF_SYS_RESET;
(refer to ppc_asm.tmpl Line 304) }. There is a number such as 0x3688. Maybe
CPU turned to that address to fetch next instruction. Unfortunately, that
address is dull, so program exception occured. And then I got something on the
console just like that after I "go 0x3688".</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>From above, I can image STD_EXCEPTION(...) works well, even
transfer_to_handler has no problem, but next to that, UnknownException() or
timer_interrupt() or external_interrupt() don't work -- at least they can't
output the strings to console.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>At last I check the data in exactly the exception handler
offset, like "md 0x700; md 0x900; md 0x500;". I can find the last
two addresses embedded.</FONT></DIV>
<DIV><FONT size=2>One is like UnknownException() or timer_interrupt() or
external_interrupt(). The other is like int_return. Simply "go" the
first address, I retained normal result -- UnknownException() or
timer_interrupt() or external_interrupt() print their origin msg on the console.
But why they can't work in the exception handling -- even they won't really run
in the exception handling, :)</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>Thanks to your patiently reading out the above long
text.</FONT></DIV>
<DIV><FONT size=2>Any help or advice is appreciated.</FONT></DIV>
<DIV><FONT size=2>Thank you.</FONT></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV></BODY></HTML>
--Boundary_(ID_Wi3WBd41UM4KkI/R7iGBFA)--
More information about the U-Boot
mailing list