[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lwip-users] LWIP client code causes hard fault error
From: |
shettys |
Subject: |
Re: [lwip-users] LWIP client code causes hard fault error |
Date: |
Tue, 26 Jun 2012 06:39:46 -0700 (PDT) |
Thanks for this sanchayan. went through this article but cannot pin point
where the fault lies
Sanchayan wrote:
>
> Hello,
>
> Yes, i did get such faults. To trace the cause of a hard fault, refer to
> the Technical Reference Manual.
>
> Here is a link for some help.
> http://coherentmusings.wordpress.com/2012/06/11/debugging-a-hard-fault-in-arm-cortex-m3s/
>
> I use to get a bus fault generally once in a few hours or so. But, my
> problem started occurring after i incorporated firmware update over
> Ethernet functionality in my code. I had no problems with sending or
> receiving data. I wrote a bus fault handler in which i do a software
> reset of the system.
>
>
> On 26-06-2012 17:14, shettys wrote:
>> Yes i am using the arm cortex m3. Did you have such problems ?
>>
>>
>> Sanchayan wrote:
>>> Hello,
>>>
>>> Which processor are you using?
>>>
>>> Are you using ARM Cortex M3?
>>>
>>>
>>> On 26-06-2012 16:23, shettys wrote:
>>>> Hello,
>>>>
>>>> Could somebody please help me with my problem in setting up a TCP
>>>> client.
>>>> The code is as posted below.
>>>> I call the TCPConnection_start before i go into the main loop, which
>>>> initializes the connection. Then i call the TCP_send periodically( to
>>>> send
>>>> some ADC values).
>>>> When my server opens a connection on Port 7 and I run my program it
>>>> works
>>>> fine and the ADC values are sent. However sometimes it just goes into a
>>>> hard
>>>> fault handler. Could someone please let me know where i am wrong?
>>>>
>>>> void TCPConnection_start(void)
>>>> {
>>>> struct ip_addr DestIPaddr;
>>>>
>>>> /* create new tcp pcb */
>>>> pcb = tcp_new();
>>>> if (pcb != NULL)
>>>> {
>>>> IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1,
>>>> DEST_IP_ADDR2,
>>>> DEST_IP_ADDR3 );
>>>>
>>>> /* connect to destination address/port */
>>>> tcp_connect(pcb,&DestIPaddr,DEST_PORT,TCPConnection_Established);
>>>> }
>>>> }
>>>>
>>>> /**
>>>> * @brief Function called when TCP connection established
>>>> * @param tpcb: pointer on the connection contol block
>>>> * @param err: when connection correctly established err should be
>>>> ERR_OK
>>>> * @retval err_t: returned error
>>>> */
>>>> static err_t TCPConnection_Established(void *arg, struct tcp_pcb *pcb,
>>>> err_t
>>>> err)
>>>> {
>>>> if (err == ERR_OK)
>>>> {
>>>> /* allocate structure es to maintain tcp connection informations */
>>>> es = (struct echoclient *)mem_malloc(sizeof(struct echoclient));
>>>>
>>>> if (es != NULL)
>>>> {
>>>> es->state = ES_CONNECTED;
>>>> es->pcb = pcb;
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>> void TCP_send(void)
>>>> {
>>>> uint32_t (*ptr)[3]; // pointer to the ADC_TDstamped_SRAM
>>>> array.
>>>> #ifdef UserButton_InteruptFor_ADCConversion
>>>> sprintf((char*)data, "Potentiometer value is, %d\n",
>>>> ADC3ConvertedValue);
>>>>
>>>> /* allocate pbuf */
>>>> es->p_tx = pbuf_alloc(PBUF_TRANSPORT, strlen((char*)data) ,
>>>> PBUF_POOL);
>>>>
>>>> if (es->p_tx)
>>>> {
>>>>
>>>> /* copy data to pbuf */
>>>> pbuf_take(es->p_tx, (char*)data, strlen((char*)data));
>>>>
>>>> /* send data */
>>>> TCPData_send(pcb,es);
>>>> }
>>>> }
>>>>
>>>>
>>>> /**
>>>> * @brief function used to send data
>>>> * @param tpcb: tcp control block
>>>> * @param es: pointer on structure of type echoclient containing
>>>> info
>>>> on
>>>> data
>>>> * to be sent
>>>> * @retval None
>>>> */
>>>> static void TCPData_send(struct tcp_pcb *pcb, struct echoclient * es)
>>>> {
>>>> struct pbuf *ptr;
>>>> err_t wr_err = ERR_OK;
>>>>
>>>> while ((wr_err == ERR_OK) &&
>>>> (es->p_tx != NULL) &&
>>>> (es->p_tx->len <= tcp_sndbuf(pcb)))
>>>> {
>>>>
>>>> /* get pointer on pbuf from es structure */
>>>> ptr = es->p_tx;
>>>>
>>>> /* enqueue data for transmission */
>>>> wr_err = tcp_write(pcb, ptr->payload, ptr->len, 1);
>>>>
>>>> if (wr_err == ERR_OK)
>>>> {
>>>> /* continue with next pbuf in chain (if any) */
>>>> es->p_tx = ptr->next;
>>>>
>>>> if(es->p_tx != NULL)
>>>> {
>>>> /* increment reference count for es->p */
>>>> pbuf_ref(es->p_tx);
>>>> }
>>>>
>>>> /* free pbuf: will free pbufs up to es->p (because es->p has a
>>>> reference count > 0) */
>>>> pbuf_free(ptr);
>>>> }
>>>> else if(wr_err == ERR_MEM)
>>>> {
>>>> /* we are low on memory, try later, defer to poll */
>>>> es->p_tx = ptr;
>>>> }
>>>> else
>>>> {
>>>> }
>>>> }
>>>> }
>>>
>>>
>>>
>>> Disclaimer: This message (including any attachments) contains
>>> confidential
>>> information and is intended solely for the use of the individual or
>>> entity
>>> to whom they are addressed. If you are not the intended recipient you
>>> are
>>> notified that disclosing, copying, distributing or taking any action
>>> based
>>> on the contents of this information is strictly prohibited. If you have
>>> received this email in error please notify address@hidden Please
>>> note
>>> that any views or opinions presented in this email are solely those of
>>> the
>>> author and do not necessarily represent those of Godrej & Boyce Mfg. Co.
>>> Ltd. group of companies. The recipient should check this email and any
>>> attachments for the presence of viruses. Godrej & Boyce Mfg. Co. Ltd.
>>> group of companies accepts no liability for any damage caused by any
>>> virus
>>> transmitted by this email.
>>>
>>>
>>> _______________________________________________
>>> lwip-users mailing list
>>> address@hidden
>>> https://lists.nongnu.org/mailman/listinfo/lwip-users
>>>
>>>
>
>
>
>
> Disclaimer: This message (including any attachments) contains confidential
> information and is intended solely for the use of the individual or entity
> to whom they are addressed. If you are not the intended recipient you are
> notified that disclosing, copying, distributing or taking any action based
> on the contents of this information is strictly prohibited. If you have
> received this email in error please notify address@hidden Please note
> that any views or opinions presented in this email are solely those of the
> author and do not necessarily represent those of Godrej & Boyce Mfg. Co.
> Ltd. group of companies. The recipient should check this email and any
> attachments for the presence of viruses. Godrej & Boyce Mfg. Co. Ltd.
> group of companies accepts no liability for any damage caused by any virus
> transmitted by this email.
>
>
> _______________________________________________
> lwip-users mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
>
--
View this message in context:
http://old.nabble.com/LWIP-client-code-causes-hard-fault-error-tp34071696p34072407.html
Sent from the lwip-users mailing list archive at Nabble.com.
- [lwip-users] LWIP client code causes hard fault error, shettys, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, Sanchayan, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, shettys, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, shettys, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, Sanchayan, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, Funk, Artur, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, shettys, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, Funk, Artur, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error, shettys, 2012/06/26
- Re: [lwip-users] LWIP client code causes hard fault error,
shettys <=