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

C51: L48: IGNORED RECURSIVE CALL

I just migrated a project from Keil 3 to Keil 5 (C51 = V9.56.0.0 & LX51 4.66.66.0

I get the following (new) warnings:

*** WARNING L48: IGNORED RECURSIVE CALL CALLED: _SMBUS_SET_PACKET_DATA/SMBUS CALLER: SMBUS
*** WARNING L48: IGNORED RECURSIVE CALL CALLED: SMBUS CALLER: _SMBUS_SET_PACKET_DATA/SMBUS

puzzle is that while there is a routine called smbus_set_packet_data there is no routine called smbus. In fact the routine is reproduced below:

static void smbus_set_packet_data(uint8_t pos, uint8_t val,uint8_t info) { smbus_packet[pos] = val; smbus_packet_info[pos] = info;
}

What does the above warning indicate?

What exactly did the linker ignore? (Any calling sequence not included in the final binary?

thanks for the clarifications.

Parents
  • ... not to bother with learning what 'embedded' means

    But the problem here has nothing specifically to do with "embedded" as such.

    Nor even "small microcontrollers" in general.

    The problem here is very specific to Keil's particular proprietary implementation in C51 - which, itself, is severely constrained by the limitations of the underlying 8051 hardware architecture.

    In general, there is nothing specifically wrong with calling a function "recursively" from both mainline & interrupt code; provided due care is taken.
    It's only the C51 implementation that makes it a Really Bad Thing.

    I don't know if any other implementations have any better solution to this problem.

Reply
  • ... not to bother with learning what 'embedded' means

    But the problem here has nothing specifically to do with "embedded" as such.

    Nor even "small microcontrollers" in general.

    The problem here is very specific to Keil's particular proprietary implementation in C51 - which, itself, is severely constrained by the limitations of the underlying 8051 hardware architecture.

    In general, there is nothing specifically wrong with calling a function "recursively" from both mainline & interrupt code; provided due care is taken.
    It's only the C51 implementation that makes it a Really Bad Thing.

    I don't know if any other implementations have any better solution to this problem.

Children