From: Uwe S. <uwe...@un...> - 2000-04-20 10:31:07
|
Hi SDCC developers & users, After spending many hours to make my old sources (which compile & run well with my old compiler) compatible to SDCC I still have no success : My design ( www.sensorella.da.ru) uses extern. memory so I want to use the LARGE model. I expected SDCC to make best usage of the limited 8031 internal RAM and put all internal data DSEG right after the last used register bank, then leaving a gap at 0x20 with size N/8+1 for the N bit-vars. in BSEG, then mapping the remaining DSEG/OSEG data finally followed by the stack (which then can grow beyond 0x7F for the larger 8031 derivates) Far away ! SDCC dafaults to stack before data, does not take care about bit variables at 0x20 and begins DSEG in the middle of IRAM at 0x30. Why that; makes no sense to me ? Then I tried --stack-after-data and --data-loc 0x8 : No way ; SDCC filled IRAM from 0x8 to 0x21 with local variables, so I could not place dummy variables at 0x20 to protect bit-vars from beeing overwritten. Now I tried to recompile all .c files in .../lib with --xstack --stack-auto : Arghh , I got SDCC.exe.core dumped (_fssub.c), fatal compiler internal error (_fsmul.c), ASxx errors (_char2fs.c,_long2fs.) a lot of warnings: storage class not allowed (_divuint.c), recompile all _mem*.c and _str*.c reentrant... ( btw reentrant : why ist printf() reentrant ? I can't imaging calling printf() from an interrupt routine seeing all this stack/memmory-map trouble.) should I give up ? Is anybody out there using SDCC in a larger project ( external mem.,printf(),long or float math.) ? Please help ! Uwe |