This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294KCPDT: Issue with File Inclusion for Ethernet interface

Part Number: TM4C1294KCPDT

HI

WE are facing issue with LWIP file while compiling code. it shows error

Description Resource Path Location Type
unresolved symbol lwIPInit, first referenced in ./main.obj TRY C/C++ Problem

#include <stdbool.h>
#include <stdint.h>

#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_adc.h"
#include "inc/hw_types.h"
#include "inc/hw_udma.h"
#include "inc/hw_emac.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/adc.h"
#include "driverlib/udma.h"
#include "driverlib/emac.h"
#include "driverlib/flash.h"
//#define TARGET_IS_BLIZZARD_RB1
#include "driverlib/rom.h"
//#include "eth_client.h"
//#include "utils/lwiplib.h"



#define IPADDR_USE_STATIC       0
#define IPADDR_USE_DHCP         1
#define IPADDR_USE_AUTOIP       2


//#define FLASH_BASE_ADDR         ((volatile uint32_t*)0x00020000)
#define FLASH_BASE_ADDR         ((uint32_t*)0x00020000)

#define ADC_SAMPLE_BUF_SIZE (128)

uint32_t udmaCtrlTable[1024] __attribute__ ((aligned(1024)));
uint32_t ADC_OUT_1[8],ADC_OUT_2[8];

uint32_t pui32Data[2];
//uint32_t ui32SysClock,ui32Config,ui32ClockDiv ;

void UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count);
void InitUART0();
void initEthernet();
int i;

  void ADCSeq0Handler(void)
  {
      //
      // Clear the Interrupt Flag.
      //
      ADCIntClear(ADC0_BASE, 0);
   //   uint32_t ui32Mode = uDMAChannelModeGet(UDMA_CHANNEL_ADC0);
      if(  uDMAChannelModeGet(UDMA_CHANNEL_ADC0|UDMA_PRI_SELECT) == 0)
      {
          uDMAChannelTransferSet(UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT,UDMA_MODE_PINGPONG,(void *)(ADC0_BASE + ADC_O_SSFIFO0), ADC_OUT_1,8);
          //uDMAChannelTransferSet(UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT, UDMA_MODE_PINGPONG,(void *)(ADC0_BASE + ADC_O_SSFIFO0), ADC_OUT_1, 8);
          uDMAChannelEnable(UDMA_CHANNEL_ADC0|UDMA_PRI_SELECT);
      }
      if(  uDMAChannelModeGet(UDMA_CHANNEL_ADC0|UDMA_ALT_SELECT) == 0)
      {
          uDMAChannelTransferSet(UDMA_CHANNEL_ADC0 | UDMA_ALT_SELECT, UDMA_MODE_PINGPONG,(void *)(ADC0_BASE + ADC_O_SSFIFO0),ADC_OUT_2,8);
          uDMAChannelEnable(UDMA_CHANNEL_ADC0|UDMA_ALT_SELECT);
      }


      //uDMAChannelEnable(UDMA_CHANNEL_ADC0);
     //uDMAChannelRequest(UDMA_CHANNEL_ADC0);
  }

  void InitUDMA(void)
  {


          uDMAEnable(); // Enables uDMA
          uDMAControlBaseSet(udmaCtrlTable);
          //IntEnable(INT_UDMA);
          uDMAChannelAttributeDisable(UDMA_CHANNEL_ADC0, UDMA_ATTR_ALL);

          // Configures the base address of the channel control table. Table resides in system memory and holds control
              //     information for each uDMA channel. Table must be aligned on a 1024-byte boundary. Base address must be
              //     configured before any of the channel functions can be used
          uDMAChannelAttributeEnable(UDMA_CHANNEL_ADC0, UDMA_ATTR_USEBURST );


         uDMAChannelControlSet(UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT, UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 | UDMA_NEXT_USEBURST |UDMA_CHCTL_ARBSIZE_1);
         uDMAChannelControlSet(UDMA_CHANNEL_ADC0 | UDMA_ALT_SELECT, UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 | UDMA_NEXT_USEBURST |UDMA_CHCTL_ARBSIZE_1);

         uDMAChannelTransferSet(UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT, UDMA_MODE_PINGPONG,(void *)(ADC0_BASE + ADC_O_SSFIFO0), ADC_OUT_1, 8);
         uDMAChannelTransferSet(UDMA_CHANNEL_ADC0 | UDMA_ALT_SELECT, UDMA_MODE_PINGPONG,(void *)(ADC0_BASE + ADC_O_SSFIFO0),ADC_OUT_2,8);

         // uDMAChannelEnable(UDMA_CHANNEL_ADC0); // Enables DMA channel so it can perform transfers
         uDMAChannelEnable(UDMA_CHANNEL_ADC0);
         uDMAChannelRequest(UDMA_CHANNEL_ADC0);

         //IntEnable(INT_UDMA);
         //uDMAIntRegister(INT_UDMA,uDMAIntHandler);
         //IntMasterEnable();

         ADCIntEnableEx(ADC0_BASE, ADC_INT_DMA_SS0); // Enables ADC interrupt source due to DMA on ADC sample sequence 0
         IntEnable(INT_ADC0SS0);
         ADCIntRegister(ADC0_BASE,0,ADCSeq0Handler);
         IntMasterEnable();


  }

  void InitConsole(void)
  {
         SysCtlPeripheralReset(SYSCTL_PERIPH_ADC0);
         SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
         //SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);
         SysCtlPeripheralReset(SYSCTL_PERIPH_UDMA);
         SysCtlPeripheralEnable(SYSCTL_PERIPH_UDMA);

         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
         GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
         GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2);
         GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_1);
         GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_0);

         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
         GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_0);
         GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_1);

         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
         GPIOPinTypeADC(GPIO_PORTK_BASE, GPIO_PIN_0);
         GPIOPinTypeADC(GPIO_PORTK_BASE, GPIO_PIN_1);


         ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL, 1);

         IntDisable(INT_ADC0SS0);
         ADCIntDisable(ADC0_BASE, 0);
         ADCSequenceDisable(ADC0_BASE, 0);

         //ADCIntClearEx(ADC0_BASE, ADC_INT_DMA_SS0);
         ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_ALWAYS, 0);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH1);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH2);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 3, ADC_CTL_CH3);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 4, ADC_CTL_CH14);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 5, ADC_CTL_CH15);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 6, ADC_CTL_CH16);
         ADCSequenceStepConfigure(ADC0_BASE, 0, 7, ADC_CTL_CH17|ADC_CTL_END);

         ADCHardwareOversampleConfigure(ADC0_BASE, 64);
         ADCSequenceDMAEnable(ADC0_BASE, 0);
         ADCSequenceEnable(ADC0_BASE, 0);



  }

int main(void)
{

    uint32_t ui32SysClock;
   // ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |SYSCTL_OSC_MAIN|SYSCTL_USE_OSC ), 25000000);

    ui32SysClock = SysCtlClockFreqSet(SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_320,32000000);
    //uint32_t ui32Mode = uDMAChannelModeGet(UDMA_CHANNEL_ADC0);


    InitConsole();
   // ui32Config = ADCClockConfigGet(ADC0_BASE, &ui32ClockDiv);
    InitUDMA();
    InitUART0(ui32SysClock);

    pui32Data[0]=FLASH_BASE_ADDR[0];
    pui32Data[1]=FLASH_BASE_ADDR[1];
   // FlashErase(0x20000);


    initEthernet(ui32SysClock);

    while(1)
    {
        for(i=0;i<5;i++)
        {
            //UARTSend((uint8_t *)"1", 1);
           SysCtlDelay(ui32SysClock / 12);
           pui32Data[0] = 0x00000008;
           pui32Data[1] = 0x56789def;
           FlashProgram(pui32Data,(uint32_t)FLASH_BASE_ADDR,sizeof(pui32Data));
        }
        //ADCProcessorTrigger(ADC0_BASE, 0);
        //ADCIntClear(ADC0_BASE, 1);
        //ADCSequenceDataGet(ADC0_BASE, 0, pui32ADC0Value);
        //ADCSequenceDataGet(ADC1_BASE, 2, pui32ADC1Value);

        //uint32_t ui32Mode = uDMAChannelModeGet(UDMA_CHANNEL_ADC0);

    }
}


void UARTSend(const uint8_t *pui8Buffer, uint32_t ui32Count)
{
    //
    // Loop while there are more characters to send.
    //
    while(ui32Count--)
    {
        //
        // Write the next character to the UART.
        //
        UARTCharPutNonBlocking(UART0_BASE, *pui8Buffer++);
    }
}


void InitUART0(uint32_t clock)
{

    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
    UARTClockSourceSet(UART0_BASE,UART_CLOCK_SYSTEM);
    UARTConfigSetExpClk(UART0_BASE, clock, 115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));

}


void initEthernet(uint32_t sysclk)
{
    uint8_t pui8MACArray[8];
    uint32_t IpArray[4],subnet[4],Gateway[4];
          GPIOPinConfigure(GPIO_PF0_EN0LED0);
          GPIOPinConfigure(GPIO_PF4_EN0LED1);

          GPIOPinTypeEthernetLED(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_4);

             pui8MACArray[0] = 0x01;
             pui8MACArray[1] = 0x02;
             pui8MACArray[2] = 0x03;
             pui8MACArray[3] = 0x01;
             pui8MACArray[4] = 0x02;
             pui8MACArray[5] = 0x03;


             IpArray[0]=192;
             IpArray[1]=168;
             IpArray[2]=5;
             IpArray[3]=5;

             subnet[0]=255;
             subnet[1]=255;
             subnet[2]=255;
             subnet[3]=0;

             Gateway[0]=192;
             Gateway[1]=168;
             Gateway[2]=5;
             Gateway[3]=1;


            lwIPInit(sysclk,pui8MACArray,(uint32_t)IpArray,(uint32_t)subnet,(uint32_t)Gateway,(uint32_t)IPADDR_USE_STATIC);
}

Please Help

Regards

Khodidas