Fixed Function Locations

Help
robert
2009-01-09
2013-03-12
  • robert
    robert
    2009-01-09

    How do i or is their an easy way to fix the location of a function?  I was thinking their might be some linker command (as is apparently the case with Keil), but looking at the linker documentation, I didn't really see any help with this type of thing.

     
    • Patryk
      Patryk
      2009-01-12

      Look for codeseg (pragma and command line option) in SDCC manual. You need to:
      - put your function in separate file,
      - use --codeseg MY_FUNC in command line to compile that file or put codeseg pragma at begin of it:
        #pragma codeseg MY_FUNC
      - pass option to linker:
        directly: -b MY_FUNC=0x1000
        or indirectly through SDCC: -Wl-bMY_FUNC=0x1000 or "-Wl -bMY_FUNC=0x1000"

       
    • Maarten Brock
      Maarten Brock
      2009-01-16

      But why would you want this?

      If you really need something like this I think it's better to create a jump-table in asm.

       
    • GrahamNZ
      GrahamNZ
      2009-01-19

      To Maarten, and all SDCC users,
      Many newer processors have embedded firmware that allows writing to their Flash code memory. An example of this is the LPC9xx family from NXP.

      There are two supporting entry points:
      1) Supports programming through serial download
      2) Lower level support for erasing and writing blocks of Flash.

      The entry points are fixed in (high) memory, typically 0xFF03.

      Of the suggested methods I would use the asm jump table approach as I feel it is a more robust option than specifying a raft of command line parameters.

      Comments and working code samples welcome,
      Graham

       
      • Maarten Brock
        Maarten Brock
        2009-01-19

        Isn't this the opposite of the original question? That was about putting your own function at a fixed address. For that I recommend to use a jumptable.

        But jumping to (prefab) functions at fixed addresses can easily be done with function pointers (as also recently discussed on the user mailing list).

        Maarten