We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I suspect I have found a bug in OHx51 - either that, or I am driving it wrong. It seems to have problems generating offsets. The details are as follows. I need to create more CODE space in my C51 application by moving all constant data into XCONST: I have plenty of flash memory but my XDATA requirements are not too high. I've built using C51 misc controls VARBANKING OMF2 STRING(XDATA) XCROM I am not using "far" at all. In the LX51 Locate configuration, I'm using XDATA (X:0x0-X:0x9FFF),XCONST(x:0xC000-x:0XEFFF) (and deselected "Use memory layout...") This all builds fine. I then use OHx51 to create a Intel hex file containing the XDATA. I want the base address for this to be zero. I therefore issue the command : ohx51 stagkeil hexfile (sjm.hex) h386 range (x:0xc000-x:0xEfff) offset (- 0x0c000) This almost works. Each individual record starts at the correct address (i.e. starting at zero). However, the first two entries in the generated file are : :020000040100F9 :020000040101F8 when I would expect to see a single line specifying : :020000040000FA By changing this manually - everything works fine. I have tried many values for the offset command parameter, but I am unable to get it to work. It seems that (1) the lower part of the address decrements correctly (2) The upper part of the address/offset is always added regardless of the +/- (3) I can't add values >= 0x8000 0000 (since + 0xFFFFF400 would probably do the trick) since anything above 8000... seems to be treated as a -ve number. This seems to be a bug in ohxc51 : - or am I doing something wrong. Any suggestions ? I am using C51 version 7.02b (ohxc51 version V1.32) Steve