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

Multiple call to segment warning

I am seeing this warning when I try to compile my code

Warning L15: multiple call to segment
segment: ?pr?_nvmwrit?nvmem_cc
caller1: ?pr?spicommisr?spi_com_cc
caller2: ?c_c51startup

I looked through my code, I don't call nvmwrite in spicommisr routine. And what is this c51startup file?

thanks,
DG

Parents Reply Children
  • Simply add the function called via pointer into the call tree where it belongs.

    What do you mean by that? Is that also through linker settings in Keil?

    what I have in my code is this, I define typedef struct:

    typedef struct {
            UINT8 Num_Input_Byte;
            void (*cmdFunc)(void);
    } cSpiInputStruct_T;
    

    After I receive information from SPI, I check the header then in my super loop, I have this:

    void SPIProcess(void)
    {
            if (SpiCmdReady)
            {
                    cSpiInputTbl[SpiCmdIdx].cmdFunc();
                    SpiCmdReady = FALSE;
            }
    }
    

    I am using similar method to handle UART command too and never have any problem there.

  • What do you mean by that? Is that also through linker settings in Keil?

    Yes. Take a look at the linker manual. There is an entire chapter devoted to this topic.

    www.keil.com/.../bl51_ol_manipulations.htm

    Jon