This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Relocation of segments in user-defined memory class

I have defined my own memory class, ECODE_APP, in ECODE space. The memory range for this class is specified at link time. I have defined a segment in an assembly module, which I wish to locate at the start of this memory class. I have attempted to use the OFFSET relocation type to achieve this, as in the following directive:

VECTOR SEGMENT 'ECODE_APP' OFFS 0

When I link my code, this segment gets placed at the start of ECODE space, not at the start of my ECODE_APP space. In fact, this segment is placed outside of the memory range I have defined for ECODE_APP. Is my understanding of the OFFSET relocation type incorrect? If so, how else can I ensure that this segment gets located at the start of my ECODE_APP space?

Thanks,
Shane.

  • The OFFS implies an absolute segment that starts at the base address of the basic memory class plus the OFFSET you are stating. It is useful for interrupt vector redirections, but I guess that you have different need.

  • Interrupt vector redirection is exactly what I'm doing, but I don't want to relocate the whole ECODE memory class, just the memory class that I have defined myself. I need to ensure that my "secondary" interrupt vectors are located at the start of that user-defined memory class, so I need a way to specify the offset of that segment within that class.

    My vector segment seems to be always located at the start of the memory class when I don't specify a relocation type, but I guess this is just lucky. How does the default relocation type (UNIT according to the map file) work?

    Thanks,
    Shane.