diff -r 00b2b287d132 Obj/ethernet_bootloader.map
--- a/Obj/ethernet_bootloader.map	Tue Mar 08 13:35:51 2016 -0800
+++ b/Obj/ethernet_bootloader.map	Tue Jun 14 10:31:05 2016 -0700
@@ -26,6 +26,7 @@
     isp_iap.o(.text) refers to isp_iap.o(.emb_text) for boot_jump
     isp_iap.o(.text) refers to sbl_main.o(.ARM.__at_0x2FC) for crp
     emac.o(.text) refers to mdio.o(.text) for mdio_write
+    emac.o(.text) refers to uart.o(.text) for print
     emac.o(.text) refers to isp_iap.o(.text) for is_LPC175x
     emac.o(.text) refers to emac.o(.data) for MYMAC_6
     emac.o(.text) refers to emac.o(.bss) for rxbuffer
@@ -150,53 +151,53 @@
     Symbol Name                              Value     Ov Type        Size  Object(Section)
 
     RESET                                    0x00000000   Section      196  startup_lpc17xx.o(RESET)
-    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardshut.o ABSOLUTE
-    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit1.o ABSOLUTE
     ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit2.o ABSOLUTE
     ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit3.o ABSOLUTE
+    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardinit1.o ABSOLUTE
+    ../clib/angel/boardlib.s                 0x00000000   Number         0  boardshut.o ABSOLUTE
     ../clib/angel/handlers.s                 0x00000000   Number         0  __scatter_copy.o ABSOLUTE
     ../clib/angel/handlers.s                 0x00000000   Number         0  __scatter_zi.o ABSOLUTE
+    ../clib/angel/kernel.s                   0x00000000   Number         0  rtexit.o ABSOLUTE
+    ../clib/angel/kernel.s                   0x00000000   Number         0  rtexit2.o ABSOLUTE
     ../clib/angel/kernel.s                   0x00000000   Number         0  __rtentry2.o ABSOLUTE
     ../clib/angel/kernel.s                   0x00000000   Number         0  __rtentry.o ABSOLUTE
     ../clib/angel/kernel.s                   0x00000000   Number         0  __rtentry4.o ABSOLUTE
-    ../clib/angel/kernel.s                   0x00000000   Number         0  rtexit2.o ABSOLUTE
-    ../clib/angel/kernel.s                   0x00000000   Number         0  rtexit.o ABSOLUTE
     ../clib/angel/rt.s                       0x00000000   Number         0  rt_raise.o ABSOLUTE
     ../clib/angel/scatter.s                  0x00000000   Number         0  __scatter.o ABSOLUTE
     ../clib/angel/startup.s                  0x00000000   Number         0  __main.o ABSOLUTE
     ../clib/angel/sys.s                      0x00000000   Number         0  indicate_semi.o ABSOLUTE
     ../clib/angel/sys.s                      0x00000000   Number         0  use_no_semi.o ABSOLUTE
+    ../clib/angel/sys.s                      0x00000000   Number         0  sys_stackheap_outer.o ABSOLUTE
     ../clib/angel/sys.s                      0x00000000   Number         0  libspace.o ABSOLUTE
-    ../clib/angel/sys.s                      0x00000000   Number         0  sys_stackheap_outer.o ABSOLUTE
     ../clib/angel/sysapp.c                   0x00000000   Number         0  sys_command.o ABSOLUTE
     ../clib/angel/sysapp.c                   0x00000000   Number         0  sys_wrch.o ABSOLUTE
     ../clib/angel/sysapp.c                   0x00000000   Number         0  sys_exit.o ABSOLUTE
     ../clib/armsys.c                         0x00000000   Number         0  no_argv.o ABSOLUTE
+    ../clib/armsys.c                         0x00000000   Number         0  argv_veneer.o ABSOLUTE
     ../clib/armsys.c                         0x00000000   Number         0  _get_argv_nomalloc.o ABSOLUTE
     ../clib/armsys.c                         0x00000000   Number         0  argv_veneer.o ABSOLUTE
-    ../clib/armsys.c                         0x00000000   Number         0  argv_veneer.o ABSOLUTE
     ../clib/heapalloc.c                      0x00000000   Number         0  hrguard.o ABSOLUTE
     ../clib/heapaux.c                        0x00000000   Number         0  heapauxi.o ABSOLUTE
+    ../clib/libinit.s                        0x00000000   Number         0  libinit2.o ABSOLUTE
     ../clib/libinit.s                        0x00000000   Number         0  libinit.o ABSOLUTE
     ../clib/libinit.s                        0x00000000   Number         0  libshutdown.o ABSOLUTE
     ../clib/libinit.s                        0x00000000   Number         0  libshutdown2.o ABSOLUTE
-    ../clib/libinit.s                        0x00000000   Number         0  libinit2.o ABSOLUTE
     ../clib/memcpset.s                       0x00000000   Number         0  rt_memcpy_v6.o ABSOLUTE
     ../clib/memcpset.s                       0x00000000   Number         0  rt_memcpy_w.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_rtmem_outer.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_rtmem_formal.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_fpe_inner.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_pvfn_inner.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_cppl_inner.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_segv_inner.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_other.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_exit.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_pvfn_inner.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  __raise.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_stak_inner.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_general.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_rtmem_formal.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_rtmem_inner.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_abrt_inner.o ABSOLUTE
     ../clib/signal.c                         0x00000000   Number         0  defsig_rtred_inner.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_stak_inner.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_rtmem_inner.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_cppl_inner.o ABSOLUTE
-    ../clib/signal.c                         0x00000000   Number         0  defsig_segv_inner.o ABSOLUTE
+    ../clib/signal.c                         0x00000000   Number         0  defsig_fpe_inner.o ABSOLUTE
     ../clib/signal.s                         0x00000000   Number         0  defsig.o ABSOLUTE
     ../clib/stdlib.c                         0x00000000   Number         0  exit.o ABSOLUTE
     ../fplib/fpinit.s                        0x00000000   Number         0  fpinit.o ABSOLUTE
@@ -268,22 +269,23 @@
     .ARM.__at_0x2FC                          0x000002fc   Section        4  sbl_main.o(.ARM.__at_0x2FC)
     .text                                    0x00000300   Section        0  isp_iap.o(.text)
     .text                                    0x00001010   Section        0  emac.o(.text)
-    load_mac_from_flash                      0x00001011   Thumb Code   140  emac.o(.text)
-    .text                                    0x0000190c   Section        0  mdio.o(.text)
-    delay                                    0x0000190d   Thumb Code     2  mdio.o(.text)
-    output_MDIO                              0x0000190f   Thumb Code    72  mdio.o(.text)
-    turnaround_MDIO                          0x00001957   Thumb Code    36  mdio.o(.text)
-    input_MDIO                               0x0000197b   Thumb Code    54  mdio.o(.text)
-    .text                                    0x00001a44   Section        0  timer.o(.text)
-    .text                                    0x00001ae0   Section      138  rt_memcpy_v6.o(.text)
-    .text                                    0x00001b6a   Section      100  rt_memcpy_w.o(.text)
-    .text                                    0x00001bce   Section       74  sys_stackheap_outer.o(.text)
-    .text                                    0x00001c18   Section        0  exit.o(.text)
-    .text                                    0x00001c2c   Section        0  sys_exit.o(.text)
-    .text                                    0x00001c38   Section        2  use_no_semi.o(.text)
-    .text                                    0x00001c3a   Section        0  indicate_semi.o(.text)
-    .constdata                               0x00001c3c   Section       27  isp_iap.o(.constdata)
-    .constdata                               0x00001c57   Section       16  emac.o(.constdata)
+    load_mac_from_flash                      0x00001011   Thumb Code    94  emac.o(.text)
+    .text                                    0x00001bb8   Section        0  mdio.o(.text)
+    delay                                    0x00001bb9   Thumb Code     2  mdio.o(.text)
+    output_MDIO                              0x00001bbb   Thumb Code    72  mdio.o(.text)
+    turnaround_MDIO                          0x00001c03   Thumb Code    36  mdio.o(.text)
+    input_MDIO                               0x00001c27   Thumb Code    54  mdio.o(.text)
+    .text                                    0x00001cf0   Section        0  uart.o(.text)
+    .text                                    0x00001df8   Section        0  timer.o(.text)
+    .text                                    0x00001e94   Section      138  rt_memcpy_v6.o(.text)
+    .text                                    0x00001f1e   Section      100  rt_memcpy_w.o(.text)
+    .text                                    0x00001f82   Section       74  sys_stackheap_outer.o(.text)
+    .text                                    0x00001fcc   Section        0  exit.o(.text)
+    .text                                    0x00001fe0   Section        0  sys_exit.o(.text)
+    .text                                    0x00001fec   Section        2  use_no_semi.o(.text)
+    .text                                    0x00001fee   Section        0  indicate_semi.o(.text)
+    .constdata                               0x00001ff0   Section       27  isp_iap.o(.constdata)
+    .constdata                               0x0000200b   Section       16  emac.o(.constdata)
     .data                                    0x10001000   Section        8  isp_iap.o(.data)
     .data                                    0x10001008   Section       46  emac.o(.data)
     rxptr                                    0x10001024   Data           4  emac.o(.data)
@@ -474,47 +476,54 @@
     reset_mcu                                0x00000cf9   Thumb Code    24  isp_iap.o(.text)
     exec_isp_cmd                             0x00000d11   Thumb Code   386  isp_iap.o(.text)
     isp_cmd_loop                             0x00000e93   Thumb Code   318  isp_iap.o(.text)
-    write_PHY                                0x0000109d   Thumb Code    74  emac.o(.text)
-    read_PHY                                 0x000010e7   Thumb Code    84  emac.o(.text)
-    ReadFrame_EMAC                           0x0000113b   Thumb Code    18  emac.o(.text)
-    CopyFromFrame_EMAC                       0x0000114d   Thumb Code    36  emac.o(.text)
-    same_mac                                 0x00001171   Thumb Code    32  emac.o(.text)
-    filter_pass                              0x00001191   Thumb Code    66  emac.o(.text)
-    WriteFrame_EMAC                          0x000011d3   Thumb Code    18  emac.o(.text)
-    CopyToFrame_EMAC                         0x000011e5   Thumb Code    36  emac.o(.text)
-    chksum16                                 0x00001209   Thumb Code    52  emac.o(.text)
-    init_emac                                0x0000123d   Thumb Code   884  emac.o(.text)
-    emac_getline                             0x000015b1   Thumb Code   326  emac.o(.text)
-    emac_sendline_crlf                       0x000016f7   Thumb Code   276  emac.o(.text)
-    emac_handshake                           0x0000180b   Thumb Code   248  emac.o(.text)
-    mdio_read                                0x000019b1   Thumb Code    68  mdio.o(.text)
-    mdio_write                               0x000019f5   Thumb Code    74  mdio.o(.text)
-    Timer_init                               0x00001a45   Thumb Code    52  timer.o(.text)
-    Timer_DeInit                             0x00001a79   Thumb Code    20  timer.o(.text)
-    Timer_GetTimestamp                       0x00001a8d   Thumb Code     8  timer.o(.text)
-    Timer_HasTimestampExpired                0x00001a95   Thumb Code    44  timer.o(.text)
-    Timer_Delay                              0x00001ac1   Thumb Code    24  timer.o(.text)
-    __aeabi_memcpy                           0x00001ae1   Thumb Code     0  rt_memcpy_v6.o(.text)
-    __rt_memcpy                              0x00001ae1   Thumb Code   138  rt_memcpy_v6.o(.text)
-    _memcpy_lastbytes                        0x00001b47   Thumb Code     0  rt_memcpy_v6.o(.text)
-    __aeabi_memcpy4                          0x00001b6b   Thumb Code     0  rt_memcpy_w.o(.text)
-    __aeabi_memcpy8                          0x00001b6b   Thumb Code     0  rt_memcpy_w.o(.text)
-    __rt_memcpy_w                            0x00001b6b   Thumb Code   100  rt_memcpy_w.o(.text)
-    _memcpy_lastbytes_aligned                0x00001bb3   Thumb Code     0  rt_memcpy_w.o(.text)
-    __user_setup_stackheap                   0x00001bcf   Thumb Code    74  sys_stackheap_outer.o(.text)
-    exit                                     0x00001c19   Thumb Code    18  exit.o(.text)
-    _sys_exit                                0x00001c2d   Thumb Code     8  sys_exit.o(.text)
-    __I$use$semihosting                      0x00001c39   Thumb Code     0  use_no_semi.o(.text)
-    __use_no_semihosting_swi                 0x00001c39   Thumb Code     2  use_no_semi.o(.text)
-    __semihosting_library_function           0x00001c3b   Thumb Code     0  indicate_semi.o(.text)
-    unlock_code                              0x00001c3c   Data           4  isp_iap.o(.constdata)
-    sync_str                                 0x00001c40   Data          13  isp_iap.o(.constdata)
-    ok                                       0x00001c4d   Data           3  isp_iap.o(.constdata)
-    resend                                   0x00001c50   Data           7  isp_iap.o(.constdata)
-    sync                                     0x00001c57   Data          13  emac.o(.constdata)
-    Ok                                       0x00001c64   Data           3  emac.o(.constdata)
-    Region$$Table$$Base                      0x00001c68   Number         0  anon$$obj.o(Region$$Table)
-    Region$$Table$$Limit                     0x00001c88   Number         0  anon$$obj.o(Region$$Table)
+    write_PHY                                0x0000106f   Thumb Code    74  emac.o(.text)
+    read_PHY                                 0x000010b9   Thumb Code    84  emac.o(.text)
+    ReadFrame_EMAC                           0x0000110d   Thumb Code    18  emac.o(.text)
+    CopyFromFrame_EMAC                       0x0000111f   Thumb Code    36  emac.o(.text)
+    same_mac                                 0x00001143   Thumb Code    32  emac.o(.text)
+    filter_pass                              0x00001163   Thumb Code    84  emac.o(.text)
+    WriteFrame_EMAC                          0x000011b7   Thumb Code    18  emac.o(.text)
+    CopyToFrame_EMAC                         0x000011c9   Thumb Code    36  emac.o(.text)
+    chksum16                                 0x000011ed   Thumb Code    52  emac.o(.text)
+    init_emac                                0x00001221   Thumb Code  1170  emac.o(.text)
+    emac_getline                             0x000016b3   Thumb Code   404  emac.o(.text)
+    emac_sendline_crlf                       0x00001847   Thumb Code   552  emac.o(.text)
+    emac_handshake                           0x00001a6f   Thumb Code   254  emac.o(.text)
+    mdio_read                                0x00001c5d   Thumb Code    68  mdio.o(.text)
+    mdio_write                               0x00001ca1   Thumb Code    74  mdio.o(.text)
+    conv                                     0x00001cf1   Thumb Code    20  uart.o(.text)
+    UART_init                                0x00001d05   Thumb Code    76  uart.o(.text)
+    getchar                                  0x00001d51   Thumb Code    22  uart.o(.text)
+    putchar                                  0x00001d67   Thumb Code    48  uart.o(.text)
+    print                                    0x00001d97   Thumb Code    28  uart.o(.text)
+    printhexa                                0x00001db3   Thumb Code    38  uart.o(.text)
+    printascii                               0x00001dd9   Thumb Code    12  uart.o(.text)
+    Timer_init                               0x00001df9   Thumb Code    52  timer.o(.text)
+    Timer_DeInit                             0x00001e2d   Thumb Code    20  timer.o(.text)
+    Timer_GetTimestamp                       0x00001e41   Thumb Code     8  timer.o(.text)
+    Timer_HasTimestampExpired                0x00001e49   Thumb Code    44  timer.o(.text)
+    Timer_Delay                              0x00001e75   Thumb Code    24  timer.o(.text)
+    __aeabi_memcpy                           0x00001e95   Thumb Code     0  rt_memcpy_v6.o(.text)
+    __rt_memcpy                              0x00001e95   Thumb Code   138  rt_memcpy_v6.o(.text)
+    _memcpy_lastbytes                        0x00001efb   Thumb Code     0  rt_memcpy_v6.o(.text)
+    __aeabi_memcpy4                          0x00001f1f   Thumb Code     0  rt_memcpy_w.o(.text)
+    __aeabi_memcpy8                          0x00001f1f   Thumb Code     0  rt_memcpy_w.o(.text)
+    __rt_memcpy_w                            0x00001f1f   Thumb Code   100  rt_memcpy_w.o(.text)
+    _memcpy_lastbytes_aligned                0x00001f67   Thumb Code     0  rt_memcpy_w.o(.text)
+    __user_setup_stackheap                   0x00001f83   Thumb Code    74  sys_stackheap_outer.o(.text)
+    exit                                     0x00001fcd   Thumb Code    18  exit.o(.text)
+    _sys_exit                                0x00001fe1   Thumb Code     8  sys_exit.o(.text)
+    __I$use$semihosting                      0x00001fed   Thumb Code     0  use_no_semi.o(.text)
+    __use_no_semihosting_swi                 0x00001fed   Thumb Code     2  use_no_semi.o(.text)
+    __semihosting_library_function           0x00001fef   Thumb Code     0  indicate_semi.o(.text)
+    unlock_code                              0x00001ff0   Data           4  isp_iap.o(.constdata)
+    sync_str                                 0x00001ff4   Data          13  isp_iap.o(.constdata)
+    ok                                       0x00002001   Data           3  isp_iap.o(.constdata)
+    resend                                   0x00002004   Data           7  isp_iap.o(.constdata)
+    sync                                     0x0000200b   Data          13  emac.o(.constdata)
+    Ok                                       0x00002018   Data           3  emac.o(.constdata)
+    Region$$Table$$Base                      0x0000201c   Number         0  anon$$obj.o(Region$$Table)
+    Region$$Table$$Limit                     0x0000203c   Number         0  anon$$obj.o(Region$$Table)
     lock                                     0x10001000   Data           4  isp_iap.o(.data)
     crp_after_reset                          0x10001004   Data           4  isp_iap.o(.data)
     synchro                                  0x10001008   Data           1  emac.o(.data)
@@ -554,85 +563,86 @@
 
   Image Entry point : 0x000000c5
 
-  Load Region LR_IROM1 (Base: 0x00000000, Size: 0x00001cc0, Max: 0x00002000, ABSOLUTE)
+  Load Region LR_IROM1 (Base: 0x00000000, Size: 0x00002074, Max: 0x00002000, ABSOLUTE)
 
-    Execution Region ER_IROM1 (Base: 0x00000000, Size: 0x00001c88, Max: 0x00002000, ABSOLUTE)
+    Execution Region ER_IROM1 (Base: 0x00000000, Size: 0x0000203c, Max: 0x00002000, ABSOLUTE)
 
     Base Addr    Size         Type   Attr      Idx    E Section Name        Object
 
     0x00000000   0x000000c4   Data   RO            3    RESET               startup_lpc17xx.o
-    0x000000c4   0x00000008   Code   RO          234  * !!!main             c_w.l(__main.o)
-    0x000000cc   0x00000034   Code   RO          393    !!!scatter          c_w.l(__scatter.o)
-    0x00000100   0x0000001a   Code   RO          395    !!handler_copy      c_w.l(__scatter_copy.o)
+    0x000000c4   0x00000008   Code   RO          243  * !!!main             c_w.l(__main.o)
+    0x000000cc   0x00000034   Code   RO          402    !!!scatter          c_w.l(__scatter.o)
+    0x00000100   0x0000001a   Code   RO          404    !!handler_copy      c_w.l(__scatter_copy.o)
     0x0000011a   0x00000002   PAD
-    0x0000011c   0x0000001c   Code   RO          397    !!handler_zi        c_w.l(__scatter_zi.o)
-    0x00000138   0x00000002   Code   RO          263    .ARM.Collect$$libinit$$00000000  c_w.l(libinit.o)
-    0x0000013a   0x00000000   Code   RO          270    .ARM.Collect$$libinit$$00000002  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          272    .ARM.Collect$$libinit$$00000004  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          275    .ARM.Collect$$libinit$$0000000A  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          277    .ARM.Collect$$libinit$$0000000C  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          279    .ARM.Collect$$libinit$$0000000E  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          282    .ARM.Collect$$libinit$$00000011  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          284    .ARM.Collect$$libinit$$00000013  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          286    .ARM.Collect$$libinit$$00000015  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          288    .ARM.Collect$$libinit$$00000017  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          290    .ARM.Collect$$libinit$$00000019  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          292    .ARM.Collect$$libinit$$0000001B  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          294    .ARM.Collect$$libinit$$0000001D  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          296    .ARM.Collect$$libinit$$0000001F  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          298    .ARM.Collect$$libinit$$00000021  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          300    .ARM.Collect$$libinit$$00000023  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          302    .ARM.Collect$$libinit$$00000025  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          306    .ARM.Collect$$libinit$$0000002C  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          308    .ARM.Collect$$libinit$$0000002E  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          310    .ARM.Collect$$libinit$$00000030  c_w.l(libinit2.o)
-    0x0000013a   0x00000000   Code   RO          312    .ARM.Collect$$libinit$$00000032  c_w.l(libinit2.o)
-    0x0000013a   0x00000002   Code   RO          313    .ARM.Collect$$libinit$$00000033  c_w.l(libinit2.o)
-    0x0000013c   0x00000002   Code   RO          333    .ARM.Collect$$libshutdown$$00000000  c_w.l(libshutdown.o)
-    0x0000013e   0x00000000   Code   RO          346    .ARM.Collect$$libshutdown$$00000002  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000000   Code   RO          348    .ARM.Collect$$libshutdown$$00000004  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000000   Code   RO          351    .ARM.Collect$$libshutdown$$00000007  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000000   Code   RO          354    .ARM.Collect$$libshutdown$$0000000A  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000000   Code   RO          356    .ARM.Collect$$libshutdown$$0000000C  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000000   Code   RO          359    .ARM.Collect$$libshutdown$$0000000F  c_w.l(libshutdown2.o)
-    0x0000013e   0x00000002   Code   RO          360    .ARM.Collect$$libshutdown$$00000010  c_w.l(libshutdown2.o)
-    0x00000140   0x00000000   Code   RO          236    .ARM.Collect$$rtentry$$00000000  c_w.l(__rtentry.o)
-    0x00000140   0x00000000   Code   RO          240    .ARM.Collect$$rtentry$$00000002  c_w.l(__rtentry2.o)
-    0x00000140   0x00000006   Code   RO          252    .ARM.Collect$$rtentry$$00000004  c_w.l(__rtentry4.o)
-    0x00000146   0x00000000   Code   RO          242    .ARM.Collect$$rtentry$$00000009  c_w.l(__rtentry2.o)
-    0x00000146   0x00000004   Code   RO          243    .ARM.Collect$$rtentry$$0000000A  c_w.l(__rtentry2.o)
-    0x0000014a   0x00000000   Code   RO          245    .ARM.Collect$$rtentry$$0000000C  c_w.l(__rtentry2.o)
-    0x0000014a   0x00000008   Code   RO          246    .ARM.Collect$$rtentry$$0000000D  c_w.l(__rtentry2.o)
-    0x00000152   0x00000002   Code   RO          267    .ARM.Collect$$rtexit$$00000000  c_w.l(rtexit.o)
-    0x00000154   0x00000000   Code   RO          315    .ARM.Collect$$rtexit$$00000002  c_w.l(rtexit2.o)
-    0x00000154   0x00000004   Code   RO          316    .ARM.Collect$$rtexit$$00000003  c_w.l(rtexit2.o)
-    0x00000158   0x00000006   Code   RO          317    .ARM.Collect$$rtexit$$00000004  c_w.l(rtexit2.o)
+    0x0000011c   0x0000001c   Code   RO          406    !!handler_zi        c_w.l(__scatter_zi.o)
+    0x00000138   0x00000002   Code   RO          272    .ARM.Collect$$libinit$$00000000  c_w.l(libinit.o)
+    0x0000013a   0x00000000   Code   RO          279    .ARM.Collect$$libinit$$00000002  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          281    .ARM.Collect$$libinit$$00000004  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          284    .ARM.Collect$$libinit$$0000000A  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          286    .ARM.Collect$$libinit$$0000000C  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          288    .ARM.Collect$$libinit$$0000000E  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          291    .ARM.Collect$$libinit$$00000011  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          293    .ARM.Collect$$libinit$$00000013  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          295    .ARM.Collect$$libinit$$00000015  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          297    .ARM.Collect$$libinit$$00000017  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          299    .ARM.Collect$$libinit$$00000019  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          301    .ARM.Collect$$libinit$$0000001B  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          303    .ARM.Collect$$libinit$$0000001D  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          305    .ARM.Collect$$libinit$$0000001F  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          307    .ARM.Collect$$libinit$$00000021  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          309    .ARM.Collect$$libinit$$00000023  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          311    .ARM.Collect$$libinit$$00000025  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          315    .ARM.Collect$$libinit$$0000002C  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          317    .ARM.Collect$$libinit$$0000002E  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          319    .ARM.Collect$$libinit$$00000030  c_w.l(libinit2.o)
+    0x0000013a   0x00000000   Code   RO          321    .ARM.Collect$$libinit$$00000032  c_w.l(libinit2.o)
+    0x0000013a   0x00000002   Code   RO          322    .ARM.Collect$$libinit$$00000033  c_w.l(libinit2.o)
+    0x0000013c   0x00000002   Code   RO          342    .ARM.Collect$$libshutdown$$00000000  c_w.l(libshutdown.o)
+    0x0000013e   0x00000000   Code   RO          355    .ARM.Collect$$libshutdown$$00000002  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000000   Code   RO          357    .ARM.Collect$$libshutdown$$00000004  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000000   Code   RO          360    .ARM.Collect$$libshutdown$$00000007  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000000   Code   RO          363    .ARM.Collect$$libshutdown$$0000000A  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000000   Code   RO          365    .ARM.Collect$$libshutdown$$0000000C  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000000   Code   RO          368    .ARM.Collect$$libshutdown$$0000000F  c_w.l(libshutdown2.o)
+    0x0000013e   0x00000002   Code   RO          369    .ARM.Collect$$libshutdown$$00000010  c_w.l(libshutdown2.o)
+    0x00000140   0x00000000   Code   RO          245    .ARM.Collect$$rtentry$$00000000  c_w.l(__rtentry.o)
+    0x00000140   0x00000000   Code   RO          249    .ARM.Collect$$rtentry$$00000002  c_w.l(__rtentry2.o)
+    0x00000140   0x00000006   Code   RO          261    .ARM.Collect$$rtentry$$00000004  c_w.l(__rtentry4.o)
+    0x00000146   0x00000000   Code   RO          251    .ARM.Collect$$rtentry$$00000009  c_w.l(__rtentry2.o)
+    0x00000146   0x00000004   Code   RO          252    .ARM.Collect$$rtentry$$0000000A  c_w.l(__rtentry2.o)
+    0x0000014a   0x00000000   Code   RO          254    .ARM.Collect$$rtentry$$0000000C  c_w.l(__rtentry2.o)
+    0x0000014a   0x00000008   Code   RO          255    .ARM.Collect$$rtentry$$0000000D  c_w.l(__rtentry2.o)
+    0x00000152   0x00000002   Code   RO          276    .ARM.Collect$$rtexit$$00000000  c_w.l(rtexit.o)
+    0x00000154   0x00000000   Code   RO          324    .ARM.Collect$$rtexit$$00000002  c_w.l(rtexit2.o)
+    0x00000154   0x00000004   Code   RO          325    .ARM.Collect$$rtexit$$00000003  c_w.l(rtexit2.o)
+    0x00000158   0x00000006   Code   RO          326    .ARM.Collect$$rtexit$$00000004  c_w.l(rtexit2.o)
     0x0000015e   0x00000002   PAD
     0x00000160   0x00000008   Code   RO           99    .emb_text           isp_iap.o
     0x00000168   0x00000034   Code   RO            4    .text               startup_lpc17xx.o
     0x0000019c   0x000000e8   Code   RO           24    .text               board_init.o
     0x00000284   0x00000036   Code   RO           52    .text               sbl_main.o
     0x000002ba   0x00000034   Code   RO           80    .text               comms.o
-    0x000002ee   0x00000006   Code   RO          232    .text               c_w.l(heapauxi.o)
-    0x000002f4   0x00000008   Code   RO          264    .text               c_w.l(libspace.o)
+    0x000002ee   0x00000006   Code   RO          241    .text               c_w.l(heapauxi.o)
+    0x000002f4   0x00000008   Code   RO          273    .text               c_w.l(libspace.o)
     0x000002fc   0x00000004   Data   RO           53    .ARM.__at_0x2FC     sbl_main.o
     0x00000300   0x00000d10   Code   RO          100    .text               isp_iap.o
-    0x00001010   0x000008fc   Code   RO          133    .text               emac.o
-    0x0000190c   0x00000138   Code   RO          172    .text               mdio.o
-    0x00001a44   0x0000009c   Code   RO          213    .text               timer.o
-    0x00001ae0   0x0000008a   Code   RO          230    .text               c_w.l(rt_memcpy_v6.o)
-    0x00001b6a   0x00000064   Code   RO          237    .text               c_w.l(rt_memcpy_w.o)
-    0x00001bce   0x0000004a   Code   RO          254    .text               c_w.l(sys_stackheap_outer.o)
-    0x00001c18   0x00000012   Code   RO          256    .text               c_w.l(exit.o)
-    0x00001c2a   0x00000002   PAD
-    0x00001c2c   0x0000000c   Code   RO          325    .text               c_w.l(sys_exit.o)
-    0x00001c38   0x00000002   Code   RO          336    .text               c_w.l(use_no_semi.o)
-    0x00001c3a   0x00000000   Code   RO          338    .text               c_w.l(indicate_semi.o)
-    0x00001c3a   0x00000002   PAD
-    0x00001c3c   0x0000001b   Data   RO          102    .constdata          isp_iap.o
-    0x00001c57   0x00000010   Data   RO          135    .constdata          emac.o
-    0x00001c67   0x00000001   PAD
-    0x00001c68   0x00000020   Data   RO          391    Region$$Table       anon$$obj.o
+    0x00001010   0x00000ba8   Code   RO          133    .text               emac.o
+    0x00001bb8   0x00000138   Code   RO          175    .text               mdio.o
+    0x00001cf0   0x00000108   Code   RO          200    .text               uart.o
+    0x00001df8   0x0000009c   Code   RO          222    .text               timer.o
+    0x00001e94   0x0000008a   Code   RO          239    .text               c_w.l(rt_memcpy_v6.o)
+    0x00001f1e   0x00000064   Code   RO          246    .text               c_w.l(rt_memcpy_w.o)
+    0x00001f82   0x0000004a   Code   RO          263    .text               c_w.l(sys_stackheap_outer.o)
+    0x00001fcc   0x00000012   Code   RO          265    .text               c_w.l(exit.o)
+    0x00001fde   0x00000002   PAD
+    0x00001fe0   0x0000000c   Code   RO          334    .text               c_w.l(sys_exit.o)
+    0x00001fec   0x00000002   Code   RO          345    .text               c_w.l(use_no_semi.o)
+    0x00001fee   0x00000000   Code   RO          347    .text               c_w.l(indicate_semi.o)
+    0x00001fee   0x00000002   PAD
+    0x00001ff0   0x0000001b   Data   RO          102    .constdata          isp_iap.o
+    0x0000200b   0x00000010   Data   RO          135    .constdata          emac.o
+    0x0000201b   0x00000001   PAD
+    0x0000201c   0x00000020   Data   RO          400    Region$$Table       anon$$obj.o
 
 
     Execution Region RW_IRAM1 (Base: 0x10001000, Size: 0x00000458, Max: 0x00007000, ABSOLUTE)
@@ -644,89 +654,12 @@
     0x10001036   0x00000002   PAD
     0x10001038   0x000000d0   Zero   RW          101    .bss                isp_iap.o
     0x10001108   0x000000f0   Zero   RW          134    .bss                emac.o
-    0x100011f8   0x00000060   Zero   RW          265    .bss                c_w.l(libspace.o)
+    0x100011f8   0x00000060   Zero   RW          274    .bss                c_w.l(libspace.o)
     0x10001258   0x00000000   Zero   RW            2    HEAP                startup_lpc17xx.o
     0x10001258   0x00000200   Zero   RW            1    STACK               startup_lpc17xx.o
 
 
-==============================================================================
+    Execution Region RW_IRAM2 (Base: 0x20083000, Size: 0x00000000, Max: 0x00001000, ABSOLUTE)
 
-Image component sizes
+    **** No section assigned to this execution region ****
 
-
-      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Object Name
-
-       232         12          0          0          0        969   board_init.o
-        52          0          0          0          0       1070   comms.o
-         0          0          0          0          0       4520   core_cm3.o
-      2300        212         16         46        240       7979   emac.o
-      3352        170         27          8        208      10666   isp_iap.o
-       312          6          0          0          0       1795   mdio.o
-        54          0          4          0          0        767   sbl_main.o
-        52         18        196          0        512        796   startup_lpc17xx.o
-       156          8          0          0          0       1287   timer.o
-
-    ----------------------------------------------------------------------
-      6510        426        276         56        960      29849   Object Totals
-         0          0         32          0          0          0   (incl. Generated)
-         0          0          1          2          0          0   (incl. Padding)
-
-    ----------------------------------------------------------------------
-
-      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Member Name
-
-         8          0          0          0          0         68   __main.o
-         0          0          0          0          0          0   __rtentry.o
-        12          0          0          0          0          0   __rtentry2.o
-         6          0          0          0          0          0   __rtentry4.o
-        52          8          0          0          0          0   __scatter.o
-        26          0          0          0          0          0   __scatter_copy.o
-        28          0          0          0          0          0   __scatter_zi.o
-        18          0          0          0          0         80   exit.o
-         6          0          0          0          0        152   heapauxi.o
-         0          0          0          0          0          0   indicate_semi.o
-         2          0          0          0          0          0   libinit.o
-         2          0          0          0          0          0   libinit2.o
-         2          0          0          0          0          0   libshutdown.o
-         2          0          0          0          0          0   libshutdown2.o
-         8          4          0          0         96         68   libspace.o
-       138          0          0          0          0         68   rt_memcpy_v6.o
-       100          0          0          0          0         80   rt_memcpy_w.o
-         2          0          0          0          0          0   rtexit.o
-        10          0          0          0          0          0   rtexit2.o
-        12          4          0          0          0         68   sys_exit.o
-        74          0          0          0          0         80   sys_stackheap_outer.o
-         2          0          0          0          0         68   use_no_semi.o
-
-    ----------------------------------------------------------------------
-       518         16          0          0         96        732   Library Totals
-         8          0          0          0          0          0   (incl. Padding)
-
-    ----------------------------------------------------------------------
-
-      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   Library Name
-
-       510         16          0          0         96        732   c_w.l
-
-    ----------------------------------------------------------------------
-       518         16          0          0         96        732   Library Totals
-
-    ----------------------------------------------------------------------
-
-==============================================================================
-
-
-      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
-
-      7028        442        276         56       1056      29641   Grand Totals
-      7028        442        276         56       1056      29641   ELF Image Totals
-      7028        442        276         56          0          0   ROM Totals
-
-==============================================================================
-
-    Total RO  Size (Code + RO Data)                 7304 (   7.13kB)
-    Total RW  Size (RW Data + ZI Data)              1112 (   1.09kB)
-    Total ROM Size (Code + RO Data + RW Data)       7360 (   7.19kB)
-
-==============================================================================
-
diff -r 00b2b287d132 Obj/ethernet_bootloader.sct
--- a/Obj/ethernet_bootloader.sct	Tue Mar 08 13:35:51 2016 -0800
+++ b/Obj/ethernet_bootloader.sct	Tue Jun 14 10:31:05 2016 -0700
@@ -11,5 +11,8 @@
   RW_IRAM1 0x10001000 0x00007000  {  ; RW data
    .ANY (+RW +ZI)
   }
+  RW_IRAM2 0x20083000 0x00001000  {
+   .ANY (+RW +ZI)
+  }
 }
 
diff -r 00b2b287d132 ethernet/emac.c
--- a/ethernet/emac.c	Tue Mar 08 13:35:51 2016 -0800
+++ b/ethernet/emac.c	Tue Jun 14 10:31:05 2016 -0700
@@ -109,7 +109,8 @@
 	sum = (sum - fcfg->chksum) % 256;
 	sum &= 0xff;
 	
-	if (sum == fcfg->chksum) {
+	if (0) {
+//	if (sum == fcfg->chksum) {
 		MYMAC_6 = fcfg->macaddr[0];
 		MYMAC_5 = fcfg->macaddr[1];
 		MYMAC_4 = fcfg->macaddr[2];
@@ -280,6 +281,8 @@
 #if LED_ENABLED
   /* configure activity LED pin as output */
   LPC_GPIO3->FIODIR |= (1UL << PORT3_PIN);
+  LPC_GPIO2->FIODIR |= (1UL << 4);
+	
 #endif
 
 #if ETHERNET_DEBUG
@@ -358,10 +361,11 @@
      *
      * There seem to be random packets going missing with 100 FDX, so use HDX.
      */
-    write_PHY (PHY_REG_BMCR, PHY_SET_100 | PHY_AUTO_NEG);
+//    write_PHY (PHY_REG_BMCR, PHY_SET_100 | PHY_AUTO_NEG);
+    write_PHY (PHY_REG_BMCR, 0);//PHY_SET_FDPLX);
   } else if (((id1 << 16) | (id2 & 0xFFF0)) == LAN8720A_ID) {
     /* This is a LAN8720A PHY */
-    write_PHY (PHY_REG_BMCR, PHY_SET_FDPLX | PHY_SET_100 | PHY_AUTO_NEG);
+    write_PHY (PHY_REG_BMCR, PHY_SET_FDPLX);
   } else {
     /* unsupported PHY */
     for (;;);
@@ -502,10 +506,14 @@
 	  if (k++ > 200000) {
 	     k=0;
 		   /* toogle the LED           */
-	     if (LPC_GPIO3->FIOPIN & (1<<PORT3_PIN))
-	       LPC_GPIO3->FIOCLR |= (1<<PORT3_PIN);
+//	     if (LPC_GPIO3->FIOPIN & (1<<PORT3_PIN))
+//	       LPC_GPIO3->FIOCLR |= (1<<PORT3_PIN);
+//	     else
+//	       LPC_GPIO3->FIOSET |= (1<<PORT3_PIN);
+	     if (LPC_GPIO2->FIOPIN & (1<<4))
+	       LPC_GPIO2->FIOCLR |= (1<<4);
 	     else
-	       LPC_GPIO3->FIOSET |= (1<<PORT3_PIN);
+	       LPC_GPIO2->FIOSET |= (1<<4);
 	  }
 #endif
 
@@ -639,6 +647,7 @@
   CopyToFrame_EMAC(&txbuffer[0], FrameSize);
   if (++idx == NUM_TX_FRAG) idx = 0;
   LPC_EMAC->TxProduceIndex = idx;
+  Timer_Delay(100);
   return (1);
 }
 
diff -r 00b2b287d132 ethernet_bootloader.uvoptx
--- a/ethernet_bootloader.uvoptx	Tue Mar 08 13:35:51 2016 -0800
+++ b/ethernet_bootloader.uvoptx	Tue Jun 14 10:31:05 2016 -0700
@@ -177,7 +177,40 @@
           <Name>-UV0887A9E -O41 -S2 -C0 -N00("ARM7TDMI-S Core") -D00(4F1F0F0F) -L00(4) -FO7 -FD40000000 -FC800 -FN1 -FF0LPC_IAP2_512 -FS00 -FL07D000</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>345</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>4900</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>.\ethernet\emac.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\ethernet_bootloader\ethernet/emac.c\345</Expression>
+        </Bp>
+        <Bp>
+          <Number>1</Number>
+          <Type>0</Type>
+          <LineNumber>380</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>5018</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>.\ethernet\emac.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\ethernet_bootloader\ethernet/emac.c\380</Expression>
+        </Bp>
+      </Breakpoint>
       <WatchWindow1>
         <Ww>
           <count>0</count>
@@ -239,6 +272,11 @@
           <WinNumber>1</WinNumber>
           <ItemText>MYMAC_6</ItemText>
         </Ww>
+        <Ww>
+          <count>12</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>txbuffer[0]</ItemText>
+        </Ww>
       </WatchWindow1>
       <MemoryWindow1>
         <Mm>
diff -r 00b2b287d132 sbl_config.h
--- a/sbl_config.h	Tue Mar 08 13:35:51 2016 -0800
+++ b/sbl_config.h	Tue Jun 14 10:31:05 2016 -0700
@@ -93,7 +93,7 @@
 //   <o8> MAC_Address_1 <0x00-0xFF>  
 // </h>
 */
-#define ETHERNET_DEBUG 	0			/* Use Debug */
+#define ETHERNET_DEBUG 	1			/* Use Debug */
 #define PHY_CHIP		1			/* PHY chip */
 #define PHY_ADDRESS		1			/* PHY address */
 //#define MYMAC_6         0x0C		/* MAC_6 */
