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.
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 --- --- ........
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.
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.