Yay! for mvme5500
Till Straumann
strauman at slac.stanford.edu
Thu Feb 24 20:05:33 UTC 2005
Joel Sherrill wrote:
> Till Straumann wrote:
>
>> Peter Dufault wrote:
>>
>>> I did "hello world", finally, on the MVME5500 on 4.7
>>>
>>> A few "heads up", though. Take these with a grain of salt since I'm
>>> just starting out, but I think they're real problems.
>>>
>>> 1. The linkcmds in the BSP in 4.7 (and supplied for 4.6) don't seem
>>> to correspond to the linkcmds used to build the "mvme5500-cexp.bin"
>>> that came with the MVME5500 patches for 4.6. That binary obviously
>>> starts at 4000000, but the linkcmds put the start at 4000100. Maybe
>>> the folks at Brookhaven only use incremental linking using cexp as a
>>> boot loader and haven't noticed? Don't get me started on
>>> "incremental linking considered dangerous", you should see some of
>>> the vxWorks startup scripts I've seen.
>>
>
> No clue on this one.
>
>>> 2. bspstart.c is calling "initialize_exceptions()" before setting up
>>> Cpu_table. For me (and I hope this is how it should be) this
>>> results in a call to mpc6xx/exceptions/raw_exception.c, and that
>>> checks Cpu_table.exceptions_in_RAM as a boolean to decide what to
>>> do. Since I kept carefully zeroing out memory for repeatability
>>> before starting things up, that was testing false, and nothing was
>>> working. When I saw what was going on I initialized
>>> Cpu_table.exceptions_in_RAM to 1 before calling
>>> initialize_exceptions(), and then things started working. (I assume
>>> that test is done before BSS is defined to be cleared out).
>>
>>
>>
>> Hmm - this seems to be broken by 4.7 ? The code flow in my 4.6 BSP is
>> different:
>>
>> libbsp/powerpc/shared/vectors/vectors_init.c:initialize_exceptions()
>> (calls)->
>> libcpu/powerpc/mpc6xx/exceptions/raw_exception.c:mpc60x_init_exceptions()
>>
>>
>> neither of which is using the Cpu_table...
>
>
> I think it is doing so in both Till. The mpc60x_get_vector_add()
> checks Cpu_table.exceptions_in_RAM and it is called from
> mpc60x_init_exceptions() if I am reading the code correctly.
??? When I 'grep -rl exceptions_in_RAM' in libcpu/powerpc,
libbsp/powerpc, and cpukit/score, the only
references to exceptions_in_RAM are from old exception processing. I'm
pretty positive that my BSP
would not work as I zero BSS very early, i.e., definitively prior to
calling initialize_exceptions().
Also, I don't see 'mpc60x_get_vector_add()' - only
'mpc60x_get_vector_addr()' - which is a trivial
inline that doesn't use Cpu_table.
I'm looking at RTEMS-4.6.2...
OK - I digged through your CVS repository an it seems that
mpc60x_get_vector_addr() was modified and the dependency on the
Cpu_table was
introduced on the 4.6 branch by raw_exceptions.c[1.8.2.4 on 2004/11/10]
Till
>
>
> The 4.6 and 4.7 versions of
> libcpu/powerpc/mpc6xx/exceptions/raw_exception.c are very close to
> identical.
>
>> -- Till
>>
>>
>>>
>>>
>>> A quick check of other powerpc bspstart.c's shows that they also
>>> call initialize_exceptions before setting up Cpu_table, they should
>>> maybe be checked for similar problems.
>>>
>>> 3. I get all my "Hello World" output, but the Motorola "MOTBoot"
>>> dramatically complains when it finishes up. I assume this is just
>>> my getting started.
>>
>
> Some BSPs do something nasty to get back to the monitor. It could be
> that. Or it could be an RTEMS interrupt that occurs after returning to
> the ROM monitor. What is Exception 3? And where in the code did it
> interrupt?
>
>>> Peter
>>>
>>> Peter Dufault
>>> HD Associates, Inc.
>>>
>>
>>
>
>
More information about the users
mailing list