This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

when I use big arrays, i get problem...

Hi,

I am using AT89C51rd2. When I use big arrays like abc[270] and def[274] in my code, nothing works correct. But i use abc[40] and def[40], every thing is ok.

when abc[270] and def[274] declared, keil generates:

Program Size: data=109.1 xdata=1159 code=12696

when abc[40] and def[40] declared, keil generates:

Program Size: data=109.1 xdata=695 code=12461

In options, "use on-chip xram" is checked. I tried to set AUXR resiter in firmware like XRS0=0,XRS1=0,XRS2=1 to select "software selectable" xram size as 1792. Nothing is work....

What can be the problem???

Thanks...

Parents
  • Many are afraid of touching startup.a51 however in some cases it is MANDATORY.
    when the OP followed my suggestion (set AUXR in startup) everything worked.
    thus
    ANYTHING related to xdata configuration (e.g. SILabs) MUST be done at the beginning of startup
    if you have an external XDATA memory, you may need to configure the clock at the beginning of startup.
    if you have a crossbar (SILabs, some ARMs, ,,,) you need to configure it at the beginning of startup.

    Generally:
    anything that relates to XDATA access MUST be done at the beginning of startup
    this can be memory configuration, memory timing, crossbar, ....

    HAVE NO FEAR modifying startup is quite simple. DO NOT call a C routine, C is not "ready"

    Erik

Reply
  • Many are afraid of touching startup.a51 however in some cases it is MANDATORY.
    when the OP followed my suggestion (set AUXR in startup) everything worked.
    thus
    ANYTHING related to xdata configuration (e.g. SILabs) MUST be done at the beginning of startup
    if you have an external XDATA memory, you may need to configure the clock at the beginning of startup.
    if you have a crossbar (SILabs, some ARMs, ,,,) you need to configure it at the beginning of startup.

    Generally:
    anything that relates to XDATA access MUST be done at the beginning of startup
    this can be memory configuration, memory timing, crossbar, ....

    HAVE NO FEAR modifying startup is quite simple. DO NOT call a C routine, C is not "ready"

    Erik

Children