
Hi Prakash,
On Tuesday 04 May 2010 16:21:19 prakash bedge wrote:
I am facing an error while porting u-boot for my platform because if exception error.
After running the u-boot to detect the DDR and flash u-boot hangs after showing the serial console output. In debugger I am seeing PC at 0x00000400 address which the exception handler vector address.
But when I modify the below statement in the function int interrupt_init (void) in u-boot\lib_ppc\interrupts.c, u-boot continues and I can see the u-boot prompt and I am able to run all u-boot commands.
int interrupt_init (void) { int ret;
/* call cpu specific function from $(CPU)/interrupts.c */ ret = interrupt_init_cpu (&decrementer_count); if (ret) return ret; set_dec (decrementer_count);
--- set_msr (get_msr () | MSR_EE); //Removed this statement. ++ set_msr (get_msr ());
By not setting MSR_EE, you will not be able to receive external interrupts, or even worse, your timer will most likely not work. Try the "sleep" command.
return (0);
}
It seems that there is an exception error and because of this u-boot hangs. But I didn't get any error condition till now.
If someone has earlier experienced this kind of issue, please share.
One thing I've noticed in other PPC4xx ports as well, is that DDR auto- calibration (with short memory tests) can lead to exceptions that need to be cleared after the DDR is fully configured. Example:
arch/powerpc/cpu/ppc4xx/44x_spd_ddr2.c:
phys_size_t initdram(int board_type) { ...
/* * Clear potential errors resulting from auto-calibration. * If not done, then we could get an interrupt later on when * exceptions are enabled. */ set_mcsr(get_mcsr());
Hard to tell, if you experience the same problem, since we have little information about your platform (which DDR3 core is used etc).
Cheers, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de