Question:
I have a question regarding a VIP. I have the need for a very large struct
array. I get a size error message telling me to up the value of
RAM_HIGH_ADRS, rebuild and re-flash a new bootloader to fix the problem.
Answer:
I tried RAM_HIGH_ADRS values of 32MB and 31MB, both with same results. I
recall reading somewhere that RAM_HIGH_ADRS has to be less than
LOCAL_MEM_SIZE--which is why I tried 31MB. I'm not sure why this value is
32MB to begin with--but since we are using auto sizing to handle our various
capacity boards, I was hoping this restriction would not apply. This however
seems to not really matter at this point because even 31MB did not work
(boot). Note that the rebuild of the VIP itself works fine with the larger
values--it seems to be a bootloader issue. I modified config.h, and the
RAM_HIGH_ADRS definition in the makefile (for the bootrom.bin) and
re-flashed. This procedure worked for 16MB.
Does anyone have any insight as to what may be happening? I'd really like to
be able to up the RAM available to the VIP to 128MB for my 512MB card and
32MB for our 64MB MV5100 cards.
First suggestion would be to dynamically allocate the huge array and
leave RAM_HIGH_ADRS alone.
Second suggestion, if that won't work for you, is to verify that the
bootrom is correctly setting up all available RAM.
A JTAG tool such as a Wind River ICE would help here.
Finally, remember that if the PPC exception vectors are too far away
from the exception handlers, you'll need to reconfigure more than just
RAM_HIGH_ADRS -- you'll need to enable extended call exception
handlers.
On this last point-- the wind river folks told me to be sure to turn on the
absolute-far switches for code/data to generate 32bit addresses instead of
24bit addresses and to build new image and bootrom with these switches. I
did this but it didn't work. This sounds related to what you are saying. How
does one enable extended call exception handler? WindRiver has not made a
similar suggestion. I am using diab toolchain.