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