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

The target doesn't initialize arrays, why?

Hi, my eval board is Phytec KC-161 (with 64k ext RAM, and 256k ext FLASH). Why the target doesn't initialize arrays in free running?
Thank you.

Parents
  • Thank you for for paying atention, Chris Wunderlich .
    The information you requested is:
    My simple code is:

    #include <reg161.h>
    
    void main (void)  {
       unsigned char array[6]={1,2,3,4,5,6};
    
       while (1) {}
    }
    


    (1),(3) the size and the declaration - look above;
    (2) If it'll help you to discover what may be the problem, I pasted the important parts(I think so) from two files(Ithe 'array' word is red as to find it quickly):
    -> "Phytec KC161.lst"

    C166 COMPILER V6.06, PHYTEC_KC161                                                          04/25/2007 09:50:00 PAGE 2
    
    NAME                                    CLASS    SPACE  TYPE   OFFSET   SIZE
    ----------------------------------------------------------------------------
    BUSCON1. . . . . . . . . . . . . . . .  sfr             uint   FF14H    2
    ..
    ..
    main . . . . . . . . . . . . . . . . .  public   FCODE  funct  -----
      array. . . . . . . . . . . . . . . .  auto            array     0H    6
    ?tpl?0001. . . . . . . . . . . . . . .  static   NCONST array     0H    6
    
    MODULE INFORMATION:   INITIALIZED  UNINITIALIZED
      CODE SIZE        =          20     --------
      NEAR-CONST SIZE  =           6     --------
    ......
    


    -> "project.m66" :

    .......
    MEMORY MAP OF MODULE:  .\Object\project (PHYTEC_KC161)
    
    START     STOP      LENGTH    TYPE  RTYP  ALIGN  TGR  GRP  COMB  CLASS   SECTION NAME
    =====================================================================================
    000000H   000003H   000004H   ---   ---   ---    ---  ---  ---   * INTVECTOR TABLE *
    000004H   000005H   000002H   XDATA REL   WORD   ---  ---  GLOB  ---     ?C_INITSEC
    000008H   00000BH   000004H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    00000CH   00001FH   000014H   CODE  REL   WORD   ---  ---  PUBL  FCODE   ?PR?PHYTEC_KC161
    0000ACH   0000AFH   000004H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    0000B0H   0001CDH   00011EH   CODE  REL   WORD   ---  ---  PRIV  ICODE   ?C_STARTUP_CODE
    004000H   004005H   000006H   DATA  REL   WORD   ---    1  PUBL  NCONST  ?NC?PHYTEC_KC161
    008000H   0080FFH   000100H   DATA  REL   WORD   ---    2  PUBL  NDATA   ?C_USERSTACK
    00D900H   00DFFFH   000700H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    00FA00H   00FBFFH   000200H   ---   ---   ---    ---  ---  ---   * SYSTEM STACK *
    00FC00H   00FC1FH   000020H   DATA  ---   BYTE   ---  ---  ---   *REG*   ?C_MAINREGISTERS
    ..........
    SYMBOL TABLE OF MODULE:  .\Object\project (PHYTEC_KC161)
          VALUE       TYPE      REP       LENGTH  TGR   SYMBOL NAME
    =========================================================
          00000CH     GLOBAL    LABEL     ---     ---   main
          004000H     SYMBOL    VAR       ---     ---   ?tpl?0001
    
          00000CH     BLOCK     LVL=0     0014H   ---   main
          00000EH     BLOCK     LVL=1     0012H   ---
          000000H     SYMBOL    AUTO      ---     ---   array
          ---         BLOCKEND  LVL=1     ---     ---
    ........
    

Reply
  • Thank you for for paying atention, Chris Wunderlich .
    The information you requested is:
    My simple code is:

    #include <reg161.h>
    
    void main (void)  {
       unsigned char array[6]={1,2,3,4,5,6};
    
       while (1) {}
    }
    


    (1),(3) the size and the declaration - look above;
    (2) If it'll help you to discover what may be the problem, I pasted the important parts(I think so) from two files(Ithe 'array' word is red as to find it quickly):
    -> "Phytec KC161.lst"

    C166 COMPILER V6.06, PHYTEC_KC161                                                          04/25/2007 09:50:00 PAGE 2
    
    NAME                                    CLASS    SPACE  TYPE   OFFSET   SIZE
    ----------------------------------------------------------------------------
    BUSCON1. . . . . . . . . . . . . . . .  sfr             uint   FF14H    2
    ..
    ..
    main . . . . . . . . . . . . . . . . .  public   FCODE  funct  -----
      array. . . . . . . . . . . . . . . .  auto            array     0H    6
    ?tpl?0001. . . . . . . . . . . . . . .  static   NCONST array     0H    6
    
    MODULE INFORMATION:   INITIALIZED  UNINITIALIZED
      CODE SIZE        =          20     --------
      NEAR-CONST SIZE  =           6     --------
    ......
    


    -> "project.m66" :

    .......
    MEMORY MAP OF MODULE:  .\Object\project (PHYTEC_KC161)
    
    START     STOP      LENGTH    TYPE  RTYP  ALIGN  TGR  GRP  COMB  CLASS   SECTION NAME
    =====================================================================================
    000000H   000003H   000004H   ---   ---   ---    ---  ---  ---   * INTVECTOR TABLE *
    000004H   000005H   000002H   XDATA REL   WORD   ---  ---  GLOB  ---     ?C_INITSEC
    000008H   00000BH   000004H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    00000CH   00001FH   000014H   CODE  REL   WORD   ---  ---  PUBL  FCODE   ?PR?PHYTEC_KC161
    0000ACH   0000AFH   000004H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    0000B0H   0001CDH   00011EH   CODE  REL   WORD   ---  ---  PRIV  ICODE   ?C_STARTUP_CODE
    004000H   004005H   000006H   DATA  REL   WORD   ---    1  PUBL  NCONST  ?NC?PHYTEC_KC161
    008000H   0080FFH   000100H   DATA  REL   WORD   ---    2  PUBL  NDATA   ?C_USERSTACK
    00D900H   00DFFFH   000700H   ---   ---   ---    ---  ---  ---   * RESERVED MEMORY *
    00FA00H   00FBFFH   000200H   ---   ---   ---    ---  ---  ---   * SYSTEM STACK *
    00FC00H   00FC1FH   000020H   DATA  ---   BYTE   ---  ---  ---   *REG*   ?C_MAINREGISTERS
    ..........
    SYMBOL TABLE OF MODULE:  .\Object\project (PHYTEC_KC161)
          VALUE       TYPE      REP       LENGTH  TGR   SYMBOL NAME
    =========================================================
          00000CH     GLOBAL    LABEL     ---     ---   main
          004000H     SYMBOL    VAR       ---     ---   ?tpl?0001
    
          00000CH     BLOCK     LVL=0     0014H   ---   main
          00000EH     BLOCK     LVL=1     0012H   ---
          000000H     SYMBOL    AUTO      ---     ---   array
          ---         BLOCKEND  LVL=1     ---     ---
    ........
    

Children
  • I though Phytec gives you a START167.A66 file with the correct settings of the memory. But it looks like you are using a standard one and as Joost implied you most likely have a problem with this setup.

    I believe you have the data set to Flash this is your problem. You need the data in RAM.

    I would suggest that you look for this *.a66 file from Phytec or make sure you have the correct settings for SYSCON and only use the RAM on-chip for now. Your memory settings should look something like this:

    From the *.lnp file

    "START167.obj",
    "main.obj"
    TO "test"
    IXREF
    CLASSES (ICODE (0x0-0xBFFF), NCODE (0x0-0xBFFF),
    FCONST (0x0-0xBFFF), HCONST (0x0-0xBFFF),
    XCONST (0x0-0xBFFF), NCONST (0x4000-0x7FFF),
    NDATA (0xC000-0xD7FF, 0xF600-0xFDFF), NDATA0 (0xC000-0xD7FF, 0xF600-0xFDFF),
    SDATA (0xC000-0xD7FF, 0xF600-0xFDFF), SDATA0 (0xC000-0xD7FF, 0xF600-0xFDFF),
    IDATA (0xF600-0xFDFF), IDATA0 (0xF600-0xFDFF),
    FDATA (0xC000-0xD7FF, 0xF600-0xFDFF), FDATA0 (0xC000-0xD7FF, 0xF600-0xFDFF),
    HDATA (0xC000-0xD7FF, 0xF600-0xFDFF), HDATA0 (0xC000-0xD7FF, 0xF600-0xFDFF),
    XDATA (0xC000-0xD7FF, 0xF600-0xFDFF), XDATA0 (0xC000-0xD7FF, 0xF600-0xFDFF))
     CINITTAB (0x0-0xBFFF)
    


    Then you will get something like this which should work.

    C166 COMPILER V6.06, MAIN
    
    NAME                                    CLASS    SPACE  TYPE   OFFSET   SIZE
    ----------------------------------------------------------------------------
    main . . . . . . . . . . . . . . . . .  public   NCODE  funct  -----
      array. . . . . . . . . . . . . . . .  auto            array     0H    6
    ?tpl?0001. . . . . . . . . . . . . . .  static   NCONST array     0H    6
    
    
    START     STOP      LENGTH    TYPE  RTYP  ALIGN  TGR  GRP  COMB  CLASS   SECTION NAME
    =====================================================================================
    000000H   000003H   000004H   ---   ---   ---    ---  ---  ---   * INTVECTOR TABLE *
    000004H   000005H   000002H   XDATA REL   WORD   ---  ---  GLOB  ---     ?C_INITSEC
    000006H   000125H   000120H   CODE  REL   WORD   ---  ---  PRIV  ICODE   ?C_STARTUP_CODE
    000126H   000139H   000014H   CODE  REL   WORD   ---    2  PUBL  NCODE   ?PR?MAIN
    004000H   004005H   000006H   DATA  REL   WORD   ---    3  PUBL  NCONST  ?NC?MAIN
    00C000H   00C1FFH   000200H   DATA  REL   WORD   ---    1  PUBL  NDATA   ?C_USERSTACK
    00FA00H   00FBFFH   000200H   ---   ---   ---    ---  ---  ---   * SYSTEM STACK *
    00FC00H   00FC1FH   000020H   DATA  ---   BYTE   ---  ---  ---   *REG*   ?C_MAINREGISTERS
    

    If you are a student then you can post your email and I will send you a project.

    -Chris

  • Thank you , Chris Wunderlich.

    Yes , I'm a student and I have to do a project to take my degree. My profesor gave me an eval board and have problems at the begining of the project.

    Well, if you can give a project with proper settings , my email is
    damian_dumitras@yahoo.com
    (or, if it is restricted:
    damian_dumitras
    @..
    yahoo
    dot
    com)

    Thank you very much.

  • I modified the project, except the startup file, and no changes have made...
    What and how can I modify in the startup file?

  • I'll send you an example program in a few minutes.

    But again check the value of the SYSCON0 register. You need to enable the XPEN bit.

    -Chris

  • Thanks for the project, and sorry for disturbance.
    But no changes. I replyed to your mail the results...
    Is it posible chat anywhere ?

    Damian.

  • Thanks for Chris Wunderlich.
    The problem was at the project settings.
    Also the modifications in the startup file solved this problem.
    Good luck to every body.