Hello Karl, Yes, you ran out of 'data' memory. Especially when accessing xdata (--model-large) the compiler uses many temporaries which are stored in registers and then in data memory. It tries to overlay them but is not very good at that. The result: high usage of the limited data memory resource. As you can see in the .mem file all is used. It has no point putting temporaries in xdata as xdata access (only indirect) was the issue in the first place.
Am I saying all hope is lost? No, not all. You can try to use --stack-auto to put all temporaries on the stack. The stack uses idata which can be about twice as big as data memory, but it also might introduce extra temporaries. Also on the stack overlaying happens by definition in it's most efficient way. But I cannot guarantee this will solve your problems, it might even create more as stack pressure rises and stack overflows can happen. Greets, Maarten > Hi all, > > My code was compiling/linking/running fine, I added a few functions, > and now when linking i get: > > ?ASlink-Error-Could not get 4 consecutive bytes in internal RAM for area > OSEG. > > sdcc -v > SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 > 2.6.1 #4398 (Oct 2 2006) (UNIX) > > I also had the same with the 2.6.0 release. > > > I compile/link with args like: > > sdcc -c --iram-size 256 --model-large --xram-size 2048 --code-size > 63487 --opt-code-size --profile -I/usr/local/sdcc/share/sdcc/include > -L/usr/local/sdcc/share/sdcc/lib/large SD_MMC.c > /usr/local/sdcc/share/sdcc/include/malloc.h:46: warning 187: ISO C90 > does not support flexible array members > sdcc --iram-size 256 --model-large --xram-size 2048 --code-size 63487 > --opt-code-size --profile -I/usr/local/sdcc/share/sdcc/include > -L/usr/local/sdcc/share/sdcc/lib/large main.rel adc.rel alarms.rel > bluetooth.rel dac.rel interrupt.rel timer.rel uart.rel eeprom.rel > temperature.rel lookup_table.rel motor.rel lonworks-compat.rel > velocity.rel vfd_lcd_led.rel vel_to_vol.rel pressure.rel humidity.rel > FAT_format_disk.rel FAT_File_System.rel String_Util.rel > flash_sect_serv.rel SD_MMC.rel > ?ASlink-Error-Could not get 4 consecutive bytes in internal RAM for area > OSEG. > ?ASlink-Error-Could not get 4 consecutive bytes in internal RAM for area > OSEG. > > > $ cat main.mem > Internal RAM layout: > 0 1 2 3 4 5 6 7 8 9 A B C D E F > 0x00:|0|0|0|0|0|0|0|0|1|1|1|1|1|1|1|1| > 0x10:|2|2|2|2|2|2|2|2|a|a|a|a|b|b|b|b| > 0x20:|B|B|B|B|c|c|c|c|d|d|e|e|e|e|f|f| > 0x30:|f|f|g|g|g|g|g|g|g|g|h|h|h|h|h|h| > 0x40:|h|h|h|h|h|h|i|i|i|i|i|i|i|i|j|j| > 0x50:|j|j|k|k|k|k|l|l|l|l|l|l|l|l|l|l| > 0x60:|l|l|m|m|n|n|n|n|o|o|o|o|o|p|p|q| > 0x70:|q|q|q|q|q|q|q|r|s|s|s|s|s|t|Q|S| > 0x80:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0x90:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xa0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xb0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xc0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xd0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xe0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0xf0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| > 0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData, > S:Stack, A:Absolute > > ERROR: Couldn't get 4 bytes allocated in internal RAM for area OSEG. > Stack starts at: 0x7f (sp set to 0x7e) with 129 bytes available. > > Other memory: > Name Start End Size Max > ---------------- -------- -------- -------- -------- > PAGED EXT. RAM 0 256 > EXTERNAL RAM 0x0000 0x0593 1428 2048 > ROM/EPROM/FLASH 0x0000 0xbdf8 48633 63487 > > > > If interested, i can post .map, .mem, .sym, .lnk. > > Am I reading the error message correctly?: There is no more overlay > space? I have plenty of xram where I would think variables could be > allocated. > > > Should I be using different compile/link flags? My target processor is > analog devices ADUC842. > > Thanks.. > > -- > Karl Hiramoto http://karl.hiramoto.org/ > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys -- and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Sdcc-user mailing list > Sdcc-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sdcc-user > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user