Hi Caglar and everyone else :)
 
I am using FreeRTOS v4.1.3 + lwip 1.2.0 + Rowley CrossWorks.
 
Upon further investigation, it actually seems to be a stack overflow, which is 
the root for my problem.
 
I have increased the value for lwipTCP_STACK_SIZE from 600 to 800,
and now the application has run straight for over an hour.
 
I read up on the undef exception handling in the ARM archtecture reference 
manual.
Which says that the instruction pointed to by LR is the instruction after the 
instruction that caused
the exception.
I thought as per the Atmel datasheet that the failing address would be present 
in the MC_AASR,
but the value in LR - offset, doesn't match the value in MC_AASR.
 
The LR register point to an instruction, where we enter the tcp_input function.
Where the values for pbuf pointer and netif pointer is initialized.
 
While writing this mail, another undef exception occured :(
 
here is the callstack:
 
tcp_next_iss()
tcp_input()
undef_handler()
 
if i look closer at where the execution of each the above functions ended i get 
this result:
 
tcp_next_iss(void){    B580       push {r7, lr}    AF02       add r7, sp, 
#0x008  static u32_t iss = 6510;    iss += tcp_ticks;       /* XXX */    4B07   
    ldr r3, [pc, #0x01c]    681A       ldr r2, [r3, #0x00]    4B07       ldr 
r3, [pc, #0x01c]    681B       ldr r3, [r3, #0x00]    18D2       adds r2, r2, 
r3    4B05       ldr r3, [pc, #0x014]    601A       str r2, [r3, #0x00]  return 
iss;    4B04       ldr r3, [pc, #0x010]    681B       ldr r3, [r3, #0x00]}    
1C18       adds r0, r3, #0x0    46BD       mov sp, r7
        got to this line: B082       sub sp, #0x008
 
 the below wasn't executed    BC80       pop {r7}    BC02       pop {r1}    
4708       bx r1    0000       lsls r0, r0, #0x00    0074       lsls r4, r6, 
#0x01    0020       lsls r0, r4, #0x00    EB880020   ????.w r0, r8, r0, asr 
#0x20    4710       bx r2
 
 
tcp_input(struct pbuf *p, struct netif *inp){    B5F0       push {r4-r7, lr}    
B08A       sub sp, #0x028    AF02       add r7, sp, #0x008
    got to this line: 1C3B       adds r3, r7, #0x0 
 
jump to undef_handler occured here.
 
the below wasn't executed    330C       adds r3, #0x0c    6018       str r0, 
[r3, #0x00]    1C3B       adds r3, r7, #0x0    3308       adds r3, #0x08    
6019       str r1, [r3, #0x00]hope someone can help my out here, since i might 
be on the wrong track.
And if anyone has some insights into what the MC_AASR really represents, let me 
know.
 
ty all for your help so far.
 
regards,
Martin



> Date: Wed, 14 Feb 2007 15:47:32 +0200> From: [EMAIL PROTECTED]> To: 
> [email protected]> Subject: Re: [lwip-users] lwip + sam7x = udef 
> exception> > B B wrote:> >> > Hi again,> > > > correction to the below, the 
> address calculated> > is resulting in a 2 byte aligned value and not 4 byte 
> as required.> > > > (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 
> 4) = 0x0020b1fa> > How about compiling all your source code into ARM mode and 
> trying to > re-generate the problem? Maybe it can> give a clue. Moreover 
> "adds r4,r4,#00" doesn't look like it can generate > a data abort. Maybe 
> pipelening can be affecting> PC value. A whole code segment dissassembly can 
> give more detailed info > about the error.> > By the way, you didn't mention 
> about your environment. OS,compiler?> > I use SAM7X+LWIP+FREERTOS combination 
> with GCC compiler and I'm quite > happy with it.> > > 
> _______________________________________________> lwip-users mailing list> 
> [email protected]> http://lists.nongnu.org/mailman/listinfo/lwip-users
_________________________________________________________________
Get the new Windows Live Messenger!
http://get.live.com/messenger/overview
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to