From: SourceForge.net <no...@so...> - 2004-04-17 19:07:52
|
Bugs item #899105, was opened at 2004-02-17 13:43 Message generated for change (Comment added) made by jesusc You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=899105&group_id=599 Category: msc51(8051) target Group: None >Status: Closed Resolution: None Priority: 5 Submitted By: Josef Pavlik (jetset) Assigned to: Nobody/Anonymous (nobody) Summary: misplaced 'LBA' record in intel hex output Initial Comment: hello all, I found, that in some situation an misplaced LBA (04) record can be found in the output intel hex file. In other words, rest of the program is placed in second 64KB page. This occures when 1 modul contains initialized xdata field (only xdata) and just next module contains some functions with 'using' term. If you try to compile the next project, you can found line :020000040001F9 in the main.ihx between modules 'disp' and 'keyboard'. This line switches the address of next records to address 0x10000+ SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.3.8 (Feb 17 2004) (UNIX) ------------- main.c: main() { } ------------- disp.c: xdata unsigned char disp_yoff1[4]={0,0,0,0}; // must be initialized xdata variable ------------- keyboard.c: void kbd_handler(void) using 1 { //must have 'using 1' } ------------- Makefile: all: sdcc -c main.c sdcc -c disp.c sdcc -c keyboard.c sdcc main.rel disp.rel keyboard.rel ---------------------------------------------------------------------- >Comment By: Jesus Calvino-Fraga (jesusc) Date: 2004-04-17 12:07 Message: Logged In: YES user_id=603650 The files below trigger the bug. Fixed in as/mcs51/lkihx.c 1.9 ------------- main.c: void main(void) { } ------------- test1.asm: .module test1 .optsdcc -mmcs51 --model-small .area CODE1 (ABS) .org 0x100 reti ------------- test2.asm: .module test .optsdcc -mmcs51 --model-small .area CODE1 (ABS) .org 0x200 reti ------------- makefile: all: sdcc -c main.c asx8051 -plosgff test1.asm asx8051 -plosgff test2.asm sdcc main.rel test2.rel test1.rel ---------------------------------------------------------------------- Comment By: Jesus Calvino-Fraga (jesusc) Date: 2004-04-17 11:16 Message: Logged In: YES user_id=603650 This is very likely caused by line 139 of lkihx.c which, if I understand correctly, was put there to deal with the extended linear addresses of the ds390 microcontroller. The problem is that I can not reproduce the problem using c files. The solution would be very simple though: validate the 'if' in line 139 with 'rflag' so extended linear addresses are not generated for the 64k 8051's. I'll try to reproduce the problem using asm files instead. Jesus ---------------------------------------------------------------------- Comment By: Gary Helbig (ghelbig) Date: 2004-04-17 10:06 Message: Logged In: YES user_id=117348 This is a problem in ASLINK; the same thing occurs with ASX8051 generated .rel files. As soon as a developer picks up this defect, I'll post the conditions that will trigger it. For now, you can use a down-rev of aslink; should work better. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-04-15 21:20 Message: Logged In: NO This is most likely a linker problem. I have seen it with asx8051->aslink programs. FWIW, it does not happen with slightly pre-2.4.0 tarballs. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=899105&group_id=599 |