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

find start of free code space

Hello,

I need to find the beginning of free code space to use for a flash filesystem. I did not see any compiler defined symbols in the M51 file to help.

I can declare a large array in code space and use the _AT_ directive to place it high in memory but this adds considerably to emulator download time.

Or I can periodically check the symbol table for the last used code, but this can be troublesome.

I'm using the Cygnal C8051F023 if it matters.

Any ideas?

Thanks

  • I see that the LX51 linker allows you to locate a segment as the last segment using the SEGMENTS command. This would work for me as I would specify that the filesystem segment would be last.

    Unfortunately, I'm using UV2 which seems to only use BL51 linker.

    BL51 has the CODE command which allows you to specify the order of the segments, but you have to list every segment (each routine is a seperate segment), in order to get one to be the last segment.

    I'd like a way to use all the unused code space for a flash filesystem.

    Any ideas?

  • OK, I was able to make BL51 linker do the job without too much pain. The CODE command allows wildcards, so you don't have to list every segment. So the following works:

    CODE (?PR*,?CO*,?C_*,?C?*,?PR?FILE_SYSTEM_START?MASTER)

  • So the following works:
    CODE (?PR*,?CO*,?C_*,?C?*,?PR?FILE_SYSTEM_START?MASTER)


    I am not arguing that it does not work, but I am saying that it is wrong that it does "?PR*" should include "?PR?FILE_SYSTEM_START?MASTER" so it would be in the first group.

    It is very uncomfortable when wildcards work different from the normal way

    Merry Christmas to all

    Erik

  • Yes, I understand what you are saying and I wondered if it would work for the same reason.

    Fortunately for me, the linker pulls explicitly stated sections from wildcard groups. Must have been a design decision made by the linker author.

  • When you have PK51, you can select the LX51 Linker/Locater under Options for Target - Device.