[U-Boot-Users] Help--750FX, Cannot handle DEC or External Interrupt exception.U-Boot-1.1.1, ELDK3.0,RedHat

My target platform is with 750FX and MPC107, 256M ram, a NS16c552 serial and also a Intel 82559 compatiable ethernet controller.
I can get Program Exeption(0x700) printing msg when I "go" a program from an arbitary address within U-Boot's shell. But when I set EE bit in MSR register, U-Boot seems to hang there, nothing output.
I guess the exception handling have problem. But I really didn't change any codes in Start.s or ppc_asm.tmpl.
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.
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".
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.
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.

In message 001b01c48b3e$3dbac4e0$e439470a@huawei.com.cn you wrote:
My target platform is with 750FX and MPC107, 256M ram, a NS16c552 serial and also a Intel 82559 compatiable ethernet controller.
Which board configuration is this, and which version of U-Boot?
[And another question in anticipation of your reply (a new board configuration being ported by you based on an old version of U-Boot): are you absolutely sure that your SDRAM init code is correct?]
Best regards,
Wolfgang Denk

My target platform is with 750FX and MPC107, 256M ram, a NS16c552 serial and also a Intel 82559 compatiable ethernet controller.
Which board configuration is this, and which version of U-Boot?
U-Boot 1.1.1 ELDK3.0 RedHat9.0,
I made our board's configuration file by copying and modifying the BAB7xx.h.
[And another question in anticipation of your reply (a new board configuration being ported by you based on an old version of U-Boot): are you absolutely sure that your SDRAM init code is correct?]
Yes, I am sure my SDRAM init code is correct, because I had Vxworks running on many pieces of boards for many days Also, I've coded a program to test SDRAM detailly, but on Vxworks.
I have tested my situation for already many times. And found: 1) Sometimes, even program exception handling cannot work when I use "go 0x8000(or 0x9000, or 0x123456, or any other place"(Of course I examined the data there). 2)Sometimes, even I set IP bit in MSR register, exception handling also cannot work. 3)My hundreds of trying seemed ruleless.
I guess, the cause maybe the cache or exception handling mechanism ? And can you tell me is there a successful case that U-Boot on 750FX or 750 can handle the exceptions normally? Thanks a lot for your reply.
Best regards, gaohai
participants (3)
-
haigao
-
Wolfgang Denk
-
高海