Hi all,<br><div>My arm cortex A7 board has run RTEMS successfully now :)</div><div>There is a exception or a bug I find.</div><div>When using the rtems networking protocol, it's very easy to occur a data align exception like this,</div><div>---------------------------------------------------</div><div><div>*** FATAL ***</div><div>fatal source: 9 (RTEMS_FATAL_SOURCE_EXCEPTION)</div><div><br></div><div>R0   = 0x8d0c3380 R8  = 0x00000000</div><div>R1   = 0x00000014 R9  = 0x00000000</div><div>R2   = 0x0000003a R10 = 0x00000000</div><div>R3   = 0x0000003a R11 = 0x00000000</div><div>R4   = 0x8d1c4a1c R12 = 0x8d03f00e</div><div>R5   = 0x8d03f00e SP  = 0x8d1c49e8</div><div>R6   = 0x8d03f022 LR  = 0x802338fd</div><div>R7   = 0x8d1c49f0 PC  = 0x8023beea</div><div>CPSR = 0x60010173 VEC = 0x00000004</div><div>FPEXC = 0x40000000</div><div>FPSCR = 0x00000000</div><div>D00 = 0x600d0d06deadf00d</div><div>D01 = 0x0000000000000000</div><div>D02 = 0xfeaffcd61efcc7e8</div><div>D03 = 0xf55cbf675f9ed7ef</div><div>D04 = 0xf510b614876e87fe</div><div>D05 = 0x9c207dc5d1bff378</div><div>D06 = 0xffe3ffbfb3de176f</div><div>D07 = 0x856e2fff4bffdcf3</div><div>D08 = 0x0000000000000000</div><div>D09 = 0x0000000000000000</div><div>D10 = 0x0000000000000000</div><div>D11 = 0x0000000000000000</div><div>D12 = 0x0000000000000000</div><div>D13 = 0x0000000000000000</div><div>D14 = 0x0000000000000000</div><div>D15 = 0x0000000000000000</div><div>D16 = 0x0000000000004723</div><div>D17 = 0x48df800000000000</div><div>D18 = 0xae83ffc300000028</div><div>D19 = 0x7fbabb7bad21efbf</div><div>D20 = 0x08f6267cbc97ffe7</div><div>D21 = 0x7efeb9d0dfd3f6ad</div><div>D22 = 0x28e9be4f3ade887a</div><div>D23 = 0xb3fed9ab4edf7d59</div><div>D24 = 0x59f7f83df75bff56</div><div>D25 = 0x2cfdff5fadd6afdf</div><div>D26 = 0x737bf82beb84b8fa</div><div>D27 = 0xdfaf32b3fbf2d63f</div><div>D28 = 0xfcc7fe7e75f97ef5</div><div>D29 = 0xe3f3b3ebdff55d5f</div><div>D30 = 0x7d6c9c7bf8f27f6f</div><div>D31 = 0x9bfdb513aff9d2fc</div><div>RTEMS version: 5.0.0.67df1a5dfaf345cfa9101c42ba05174a41f3eaa5-modified</div><div>RTEMS tools: 7.3.0 20180125 (RTEMS 5, RSB 77a00753035cd1f5ce224a2ae3afb27ea5a1bad8, Newlib 2ab57ad59bc35dafffa69cd4da5e228971de069f)</div><div>executing thread ID: 0x08a010003</div><div>executing thread name: ntwk</div></div><div>---------------------------------------------------</div><div><br></div><div>The disassemble code near the exception place is this</div><div>---------------------------------------------------</div><div><div>8023beca:<span style="white-space:pre">    </span>e224      <span style="white-space:pre">    </span>b.n<span style="white-space:pre">  </span>8023c316 <udp_input+0x502></div><div>8023becc:<span style="white-space:pre">     </span>886b      <span style="white-space:pre">    </span>ldrh<span style="white-space:pre"> </span>r3, [r5, #2]</div><div>8023bece:<span style="white-space:pre"> </span>461a      <span style="white-space:pre">    </span>mov<span style="white-space:pre">  </span>r2, r3</div><div>8023bed0:<span style="white-space:pre">       </span>6cbb      <span style="white-space:pre">    </span>ldr<span style="white-space:pre">  </span>r3, [r7, #72]<span style="white-space:pre">        </span>; 0x48</div><div>8023bed2:<span style="white-space:pre">       </span>1a9b      <span style="white-space:pre">    </span>subs<span style="white-space:pre"> </span>r3, r3, r2</div><div>8023bed4:<span style="white-space:pre">   </span>4619      <span style="white-space:pre">    </span>mov<span style="white-space:pre">  </span>r1, r3</div><div>8023bed6:<span style="white-space:pre">       </span>6878      <span style="white-space:pre">    </span>ldr<span style="white-space:pre">  </span>r0, [r7, #4]</div><div>8023bed8:<span style="white-space:pre"> </span>f7f2 f915 <span style="white-space:pre">   </span>bl<span style="white-space:pre">   </span>8022e106 <m_adj></div><div>8023bedc:<span style="white-space:pre">       </span>f107 042c <span style="white-space:pre">   </span>add.w<span style="white-space:pre">        </span>r4, r7, #44<span style="white-space:pre">  </span>; 0x2c</div><div>8023bee0:<span style="white-space:pre">       </span>46ac      <span style="white-space:pre">    </span>mov<span style="white-space:pre">  </span>r12, r5</div><div>8023bee2:<span style="white-space:pre">      </span>e8bc 000f <span style="white-space:pre">   </span>ldmia.w<span style="white-space:pre">      </span>r12!, {r0, r1, r2, r3}</div><div>8023bee6:<span style="white-space:pre">       </span>c40f      <span style="white-space:pre">    </span>stmia<span style="white-space:pre">        </span>r4!, {r0, r1, r2, r3}</div><div>8023bee8:<span style="white-space:pre">        </span>f8dc 3000 <span style="white-space:pre">   </span>ldr.w<span style="white-space:pre">        </span>r3, [r12]</div></div><div>---------------------------------------------------</div><div><br></div><div>The exception is caused by "8023bee2:<span style="white-space: pre;">  </span>e8bc 000f <span style="white-space: pre;"> </span>ldmia.w<span style="white-space: pre;">    </span>r12!, {r0, r1, r2, r3}",</div><div>because the arm instruction "ldmia.w" needs the src address must be 4 byte aligned, </div><div>but the exception context show the value of r12 is 0x8d03f00e, not 4 byte aligned.</div><div><span style="  ;; font-size: medium; "></span></div><div><br></div><div>The C code location is at cpukit/libnetworking/netinet/udp_usrreq.c, line 162</div><div><pre style="padding: 0px; margin-top: 0px; margin-bottom: 0px; font-size: 13.3333px;"><code>       /*
         * Save a copy of the IP header in case we want restore it
         * for sending an ICMP error message in response.
         */
        save_ip = *ip;</code></pre></div><div><br></div><div>I think the root cause is the mbuf space is not 4 byte aligned, </div><div>or by the reason of 14 bytes  ethernet header length that making "ip" is not 4 byte aligned.</div><div><br></div><div>The exception can suppressed by memcpy, but it's not a good method.</div><div><span style="font-size: medium;"></span></div><div><div style="color:#909090;font-family:Arial Narrow;font-size:12px">------------------</div><div style="font-size:14px;font-family:Verdana;color:#000;"><div><span style="   ;;  ">Thanks & Best regards,</span><br style="   ;;  "><span style="   ;;  ">Rui Zhengxin</span></div></div></div>