
On Thu, Sep 23, 2010 at 5:30 PM, Albert ARIBAUD albert.aribaud@free.fr wrote:
Watch out: 'sl' is always 'r10': those are alias names of the register; I specify both names because depending on the tool you use, you might see either name. But the pic base, i.e. the register which holds the address of the GOT, is not necessarily sl! It can can be r10 *or* r9, depending on the toolchain and options.
Here your excepts show that r9 remains constant (and, I suspect, its value is the address of the symbol __got_base) while r10 varies; r9 is the pic base. Which is lucky because r10 is trashed by the loop that goes through init_sequence and runs each of the functions it points to.
Ok :) So i showed that the alias is true. :) -- Thanks for the info, I'll need to do some research into what the pic base is with this toolchain.
There is no arch_cpu_init or board_early_init_f; timer_init is at 0xc1091e6c. So it is timer_init which is being called above.
The call to timer_init completes successfully; the next function pointer dereferenced and called is 0xc1087e04 == env_init. That call completes successfully. The next is 0xc10804f8 == init_baudrate; it completes successfully. The next call is 0xc108119c == serial_init; it completes successfully. The next is 0xc1086550 == console_init_f; it completes successfully. The next is 0xc10804d0 == display_banner; it completes successfully. They all did.
Ok, so all this goes fine, yet you do not see the banner displayed?
Correct.
Execution reaches the call to relocate_code and enters; the last instruction I am able to single-step is the 'ldr r10, _got_base' in the following lines from your patch:
What happens when you single-step through it? Any kind of error message, or does the target simply not respond any more?
No output on the serial console or from the debugger software. As you say, the target simply does not respond anymore.
Thanks again for your help in testing my patches!
My pleasure. I hope we can get them working on the da850evm.
We certainly will. For me to reproduce your SW setting and build exactly the same binary as you do, can you confirm that you are again using the 2009q1 toolchain, and indicate the exact command line you use to build your target?
It was the 2009q1 toolchain.
export CROSS_COMPILE=arm-none-linux-gnueabi- export PATH=/opt/codesourcery-arm-none-eabi-2009q1/bin/:${PATH} export ARCH=arm make mrproper ; make da850evm_config ; make -j9 all
Best Regards, Ben Gardiner
--- Nanometrics Inc. http://www.nanometrics.ca