hello all,

following a discussion on the updated STM8 SPL license (see https://github.com/gicking/STM8-SPL_SDCC_patch/issues/1 ) I happened to notice something strange:

1) build example including all SPL modules, where a pin toggles every 500ms

    - code adress range is 0x8000 to 0x1000c, i.e. >16-bit address range

    - according to map file, the topmost function starts at 0xFFE3, i.e. within 16bit address range

    -> code works as expected

2) build example including all SPL modules, where byte is sent via UART every 500ms

    - code adress range is 0x8000 to 0x10009, i.e. >16-bit address range

    - according to map file, the topmost function starts at 0xFFE0, i.e. within 16bit address range

    -> code works as expected

3) add pin toggling from 1) to 2)

    - code adress range is 0x8000 to 0x1002c, i.e. >16-bit address range

    - according to map file, the topmost function starts at 0x10003, i.e. outside 16bit address range

    -> no pin toggle, no UART output


I am using SDCC 3.6.0 #9615 (Linux)

It appears to me as if code with function start addresses >16b fail, while relative calls inside functions can exceed the 16b address range...?

Is this just a mistake on my side (e.g. missing SDCC parameter), a known limitation, or a bug? I know that the 8051 (w/o long calls) works around this using code banking. From hardware side this is not required on the STM8, but what about SDCC (coming from 8051)...?

For your feedback thanks a lot in advance!

Regards,
Georg


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to