From: Jesus Calvino-F. <Je...@ec...> - 2002-08-25 20:01:08
|
Hi Evandro, The problem is that the sum of DSEG and OSEG must be less than 128 (0x80), otherwise variables will overflow and write to the sfr memory. One quick fix for your problem would be to use some of the memory allocated for bit variables (BSEG, starting at address 0x20) which is available: BSEG 0000 000C = 12. bytes By the way, it should read 12 bits not bytes. Since 12 bits takes only two bytes, there are 14 extra bytes available for general use. Therefore when linking you could use the option '--data-loc 0x22'. Some time ago I encounter the same problem and after figuring out what was happening I wrote an small program called 'summary.c' which makes all the computations from the map file and warns if the numbers don't check. You can get it from the archives: http://www.geocrawler.com/archives/3/3278/2002/1/0/7559122/ Hope this helps. Best regards, Jesus At 04:11 PM 8/25/02 -0300, EVANDRO LUIZ HAUENSTEIN wrote: >Hi All, > >I have some problems with memory in my project (small model, target >mcs51, 89C52). >When the DSEG reaches around 75 bytes the program crashes... > >I notice that when these happens, the OSEG and SSEG goes to these >addresses: >OSEG 007E 0004 = 4. bytes (REL,OVR) >SSEG 0082 0001 = 1. bytes (REL,CON) > >Whats Im doing wrong? > >In the example below, the program is still working. When I declare some >DATA vars (or more functions) the DSEG segmente exceed that 75 bytes and >nothing works anymore. Im checking the stack and it never exceeds the >address 175 (my uC has 256bytes RAM). > >Part of Makefile >/*******************************************************/ >SDCCCFLAGS = --model-small >SDCCCFLAGS += -DSTACK_PROBE >SDCCCFLAGS += --debug >ASLINKFLAGS = --code-loc 0x2000 --data-loc 0x30 --stack-after-data >--xram-loc 0x6000 > > >Part of MAP (working): >/*******************************************************/ >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >DSEG 0030 0048 = 72. bytes (REL,CON) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >OSEG 0078 0004 = 4. bytes (REL,OVR) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >SSEG 007C 0001 = 1. bytes (REL,CON) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >ISEG 0080 0000 = 0. bytes (REL,CON) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >BSEG 0000 000C = 12. bytes >(REL,CON,BIT) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >XSEG 6000 007C = 124. bytes >(REL,CON,XDATA) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >XISEG 607C 0000 = 0. bytes >(REL,CON,XDATA) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >CSEG 2000 1D2D = 7469. bytes >(REL,CON,CODE) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >GSINIT 3D2D 005F = 95. bytes >(REL,CON,CODE) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >GSFINAL 3D8C 0003 = 3. bytes >(REL,CON,CODE) > Value Global > -------- -------------------------------- > 0C:3D8C A$main$314 > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >HOME 3D8F 0000 = 0. bytes >(REL,CON,CODE) > >Area Addr Size Decimal Bytes >(Attributes) >-------------------------------- ---- ---- ------- ----- >------------ >XINIT 3D8F 0000 = 0. bytes >(REL,CON,CODE) > >/*******************************************************/ >CSEG = 0x2000 >DSEG = 0x0030 >XSEG = 0x6000 >ISEG = 0x0080 >BSEG = 0x0000 > >/*******************************************************/ > > >Content-Type: text/plain; > name="Privacy Disclaimer.txt" >Content-Disposition: attachment; > filename="Privacy Disclaimer.txt" >X-MIME-Autoconverted: from 8bit to quoted-printable by sulu.siemens.com.br >id g7PJ7Spp026416 |