Index: /webserver/example/EasyWEB/ARM Flash Release/EasyWeb.ld
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/EasyWeb.ld (revision 10)
+++ /webserver/example/EasyWEB/ARM Flash Release/EasyWeb.ld (revision 37)
@@ -38,5 +38,5 @@
__vectors_ram_load_start__ = __SRAM_segment_start__;
- .vectors_ram __SRAM_segment_start__ (NOLOAD) :
+ .vectors_ram __SRAM_segment_start__ (NOLOAD) : AT(__SRAM_segment_start__)
{
__vectors_ram_start__ = .;
@@ -49,5 +49,5 @@
__vectors_load_start__ = __FLASH_segment_start__;
- .vectors __FLASH_segment_start__ :
+ .vectors __FLASH_segment_start__ : AT(__FLASH_segment_start__)
{
__vectors_start__ = .;
@@ -59,5 +59,5 @@
__init_load_start__ = ALIGN(__vectors_end__ , 4);
- .init ALIGN(__vectors_end__ , 4) :
+ .init ALIGN(__vectors_end__ , 4) : AT(ALIGN(__vectors_end__ , 4))
{
__init_start__ = .;
@@ -69,5 +69,5 @@
__text_load_start__ = ALIGN(__init_end__ , 4);
- .text ALIGN(__init_end__ , 4) :
+ .text ALIGN(__init_end__ , 4) : AT(ALIGN(__init_end__ , 4))
{
__text_start__ = .;
@@ -79,5 +79,5 @@
__dtors_load_start__ = ALIGN(__text_end__ , 4);
- .dtors ALIGN(__text_end__ , 4) :
+ .dtors ALIGN(__text_end__ , 4) : AT(ALIGN(__text_end__ , 4))
{
__dtors_start__ = .;
@@ -89,5 +89,5 @@
__ctors_load_start__ = ALIGN(__dtors_end__ , 4);
- .ctors ALIGN(__dtors_end__ , 4) :
+ .ctors ALIGN(__dtors_end__ , 4) : AT(ALIGN(__dtors_end__ , 4))
{
__ctors_start__ = .;
@@ -99,5 +99,5 @@
__rodata_load_start__ = ALIGN(__ctors_end__ , 4);
- .rodata ALIGN(__ctors_end__ , 4) :
+ .rodata ALIGN(__ctors_end__ , 4) : AT(ALIGN(__ctors_end__ , 4))
{
__rodata_start__ = .;
@@ -153,5 +153,5 @@
__bss_load_start__ = ALIGN(__data_run_end__ , 4);
- .bss ALIGN(__data_run_end__ , 4) (NOLOAD) :
+ .bss ALIGN(__data_run_end__ , 4) (NOLOAD) : AT(ALIGN(__data_run_end__ , 4))
{
__bss_start__ = .;
@@ -163,5 +163,5 @@
__non_init_load_start__ = ALIGN(__bss_end__ , 4);
- .non_init ALIGN(__bss_end__ , 4) (NOLOAD) :
+ .non_init ALIGN(__bss_end__ , 4) (NOLOAD) : AT(ALIGN(__bss_end__ , 4))
{
__non_init_start__ = .;
@@ -173,5 +173,5 @@
__heap_load_start__ = ALIGN(__non_init_end__ , 4);
- .heap ALIGN(__non_init_end__ , 4) (NOLOAD) :
+ .heap ALIGN(__non_init_end__ , 4) (NOLOAD) : AT(ALIGN(__non_init_end__ , 4))
{
__heap_start__ = .;
@@ -184,5 +184,5 @@
__stack_load_start__ = ALIGN(__heap_end__ , 4);
- .stack ALIGN(__heap_end__ , 4) (NOLOAD) :
+ .stack ALIGN(__heap_end__ , 4) (NOLOAD) : AT(ALIGN(__heap_end__ , 4))
{
__stack_start__ = .;
@@ -195,5 +195,5 @@
__stack_irq_load_start__ = ALIGN(__stack_end__ , 4);
- .stack_irq ALIGN(__stack_end__ , 4) (NOLOAD) :
+ .stack_irq ALIGN(__stack_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_end__ , 4))
{
__stack_irq_start__ = .;
@@ -206,5 +206,5 @@
__stack_fiq_load_start__ = ALIGN(__stack_irq_end__ , 4);
- .stack_fiq ALIGN(__stack_irq_end__ , 4) (NOLOAD) :
+ .stack_fiq ALIGN(__stack_irq_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_irq_end__ , 4))
{
__stack_fiq_start__ = .;
@@ -217,5 +217,5 @@
__stack_svc_load_start__ = ALIGN(__stack_fiq_end__ , 4);
- .stack_svc ALIGN(__stack_fiq_end__ , 4) (NOLOAD) :
+ .stack_svc ALIGN(__stack_fiq_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_fiq_end__ , 4))
{
__stack_svc_start__ = .;
@@ -228,5 +228,5 @@
__stack_abt_load_start__ = ALIGN(__stack_svc_end__ , 4);
- .stack_abt ALIGN(__stack_svc_end__ , 4) (NOLOAD) :
+ .stack_abt ALIGN(__stack_svc_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_svc_end__ , 4))
{
__stack_abt_start__ = .;
@@ -239,5 +239,5 @@
__stack_und_load_start__ = ALIGN(__stack_abt_end__ , 4);
- .stack_und ALIGN(__stack_abt_end__ , 4) (NOLOAD) :
+ .stack_und ALIGN(__stack_abt_end__ , 4) (NOLOAD) : AT(ALIGN(__stack_abt_end__ , 4))
{
__stack_und_start__ = .;
Index: /bserver/example/EasyWEB/ARM Flash Release/Retarget.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/Retarget.d (revision 12)
+++ (revision )
@@ -1,2 +1,0 @@
-ARM\ Flash\ Release/Retarget.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/Retarget.c
Index: /bserver/example/EasyWEB/ARM Flash Release/easyweb.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/easyweb.d (revision 12)
+++ (revision )
@@ -1,11 +1,0 @@
-ARM\ Flash\ Release/easyweb.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/easyweb.c \
- /home/phil/CrossWorks_ARM_1_7/include/stdlib.h \
- /home/phil/CrossWorks_ARM_1_7/include/__crossworks.h \
- /home/phil/CrossWorks_ARM_1_7/include/stdio.h \
- /home/phil/CrossWorks_ARM_1_7/include/string.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/easyweb.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/EMAC.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/tcpip.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/LPC23xx.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/webpage.h
Index: /bserver/example/EasyWEB/ARM Flash Release/tcpip.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/tcpip.d (revision 12)
+++ (revision )
@@ -1,6 +1,0 @@
-ARM\ Flash\ Release/tcpip.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/tcpip.c \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/tcpip.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/EMAC.h \
- /home/phil/CrossWorks_ARM_1_7/include/string.h \
- /home/phil/CrossWorks_ARM_1_7/include/__crossworks.h LPC23xx.h
Index: /bserver/example/EasyWEB/ARM Flash Release/VIC_PL192_irq_handler.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/VIC_PL192_irq_handler.d (revision 12)
+++ (revision )
@@ -1,3 +1,0 @@
-ARM\ Flash\ Release/VIC_PL192_irq_handler.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/targets/Philips_LPC210X/VIC_PL192_irq_handler.s \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/targets/Philips_LPC210X/VIC_irq_handler.s
Index: /bserver/example/EasyWEB/ARM Flash Release/EMAC.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/EMAC.d (revision 12)
+++ (revision )
@@ -1,5 +1,0 @@
-ARM\ Flash\ Release/EMAC.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/EMAC.c \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/EMAC.h \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/tcpip.h \
- LPC23xx.h
Index: /bserver/example/EasyWEB/ARM Flash Release/Philips_LPC230X_Startup.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/Philips_LPC230X_Startup.d (revision 12)
+++ (revision )
@@ -1,4 +1,0 @@
-ARM\ Flash\ Release/Philips_LPC230X_Startup.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/targets/Philips_LPC210X/Philips_LPC230X_Startup.s \
- /home/phil/CrossWorks_ARM_1_7/include/targets/LPC2000.h \
- /home/phil/CrossWorks_ARM_1_7/include/targets/LPC2368.h
Index: /bserver/example/EasyWEB/ARM Flash Release/VIC_PL192.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/VIC_PL192.d (revision 12)
+++ (revision )
@@ -1,6 +1,0 @@
-ARM\ Flash\ Release/VIC_PL192.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/targets/Philips_LPC210X/VIC_PL192.c \
- /home/phil/CrossWorks_ARM_1_7/include/ctl_api.h \
- /home/phil/CrossWorks_ARM_1_7/include/libarm.h \
- /home/phil/CrossWorks_ARM_1_7/include/stdlib.h \
- /home/phil/CrossWorks_ARM_1_7/include/__crossworks.h
Index: /bserver/example/EasyWEB/ARM Flash Release/crt0.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/crt0.d (revision 12)
+++ (revision )
@@ -1,2 +1,0 @@
-ARM\ Flash\ Release/crt0.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/source/crt0.s
Index: /bserver/example/EasyWEB/ARM Flash Release/EasyWeb.map
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/EasyWeb.map (revision 12)
+++ (revision )
@@ -1,586 +1,0 @@
-Archive member included because of file (symbol)
-
-/home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- ARM Flash Release/LPC230x.o (liblpc2000_lpc23xx_get_cclk)
-/home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- ARM Flash Release/tcpip.o (__ARMLIB_enableIRQ)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o) (__udivsi3)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- ARM Flash Release/easyweb.o (memcpy)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- ARM Flash Release/tcpip.o (memset)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- ARM Flash Release/tcpip.o (memcmp)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- ARM Flash Release/easyweb.o (sprintf)
-/home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o) (__vfprintf)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o) (strlen)
-/home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o) (__hex_uc)
-
-Allocating common symbols
-Common symbol size file
-
-TCPTimer 0x1 ARM Flash Release/easyweb.o
-HTTPBytesToSend 0x4 ARM Flash Release/easyweb.o
-TCPRxDataCount 0x2 ARM Flash Release/easyweb.o
-HTTPStatus 0x1 ARM Flash Release/easyweb.o
-TCPTxDataCount 0x2 ARM Flash Release/easyweb.o
-RecdFrameIP 0x4 ARM Flash Release/easyweb.o
-RemoteMAC 0x6 ARM Flash Release/easyweb.o
-TCPStateMachine 0x4 ARM Flash Release/easyweb.o
-TCPUNASeqNr 0x4 ARM Flash Release/easyweb.o
-TCPLocalPort 0x2 ARM Flash Release/easyweb.o
-_RxTCPBuffer 0x100 ARM Flash Release/easyweb.o
-TCPFlags 0x1 ARM Flash Release/easyweb.o
-RecdFrameMAC 0x6 ARM Flash Release/easyweb.o
-RecdIPFrameLength 0x2 ARM Flash Release/easyweb.o
-PWebSide 0x4 ARM Flash Release/easyweb.o
-RemoteIP 0x4 ARM Flash Release/easyweb.o
-LastFrameSent 0x4 ARM Flash Release/easyweb.o
-TCPRemotePort 0x2 ARM Flash Release/easyweb.o
-TxFrame2Size 0x1 ARM Flash Release/easyweb.o
-TCPAckNr 0x4 ARM Flash Release/easyweb.o
-TransmitControl 0x1 ARM Flash Release/easyweb.o
-TxFrame1Size 0x2 ARM Flash Release/easyweb.o
-ISNGenHigh 0x2 ARM Flash Release/easyweb.o
-_TxFrame2 0x4a ARM Flash Release/easyweb.o
-RecdFrameLength 0x2 ARM Flash Release/easyweb.o
-_TxFrame1 0x236 ARM Flash Release/easyweb.o
-TCPSeqNr 0x4 ARM Flash Release/easyweb.o
-RetryCounter 0x1 ARM Flash Release/easyweb.o
-SocketStatus 0x1 ARM Flash Release/easyweb.o
-
-Memory Configuration
-
-Name Origin Length Attributes
-UNPLACED_SECTIONS 0xffffffff 0x00000000 xw
-AHB_Peripherals 0xffe00000 0x00200000 xw
-Battery_RAM 0xe0084000 0x00000800 xw
-APB_Peripherals 0xe0000000 0x00200000 xw
-USB_RAM 0x7fd00000 0x00002000 xw
-Ethernet_RAM 0x7fe00000 0x00004000 xw
-SRAM 0x40000000 0x00008000 xw
-FLASH 0x00000000 0x00080000 xr
-*default* 0x00000000 0xffffffff
-
-Linker script and memory map
-
- 0xffe00000 __AHB_Peripherals_segment_start__ = 0xffe00000
- 0x00000000 __AHB_Peripherals_segment_end__ = 0x0
- 0xe0084000 __Battery_RAM_segment_start__ = 0xe0084000
- 0xe0084800 __Battery_RAM_segment_end__ = 0xe0084800
- 0xe0000000 __APB_Peripherals_segment_start__ = 0xe0000000
- 0xe0200000 __APB_Peripherals_segment_end__ = 0xe0200000
- 0x7fd00000 __USB_RAM_segment_start__ = 0x7fd00000
- 0x7fd02000 __USB_RAM_segment_end__ = 0x7fd02000
- 0x7fe00000 __Ethernet_RAM_segment_start__ = 0x7fe00000
- 0x7fe04000 __Ethernet_RAM_segment_end__ = 0x7fe04000
- 0x40000000 __SRAM_segment_start__ = 0x40000000
- 0x40008000 __SRAM_segment_end__ = 0x40008000
- 0x00000000 __FLASH_segment_start__ = 0x0
- 0x00080000 __FLASH_segment_end__ = 0x80000
- 0x00000400 __STACKSIZE__ = 0x400
- 0x00000100 __STACKSIZE_IRQ__ = 0x100
- 0x00000100 __STACKSIZE_FIQ__ = 0x100
- 0x00000000 __STACKSIZE_SVC__ = 0x0
- 0x00000000 __STACKSIZE_ABT__ = 0x0
- 0x00000000 __STACKSIZE_UND__ = 0x0
- 0x00000400 __HEAPSIZE__ = 0x400
- 0x40000000 __vectors_ram_load_start__ = __SRAM_segment_start__
-
-.vectors_ram 0x40000000 0x3c
- 0x40000000 __vectors_ram_start__ = .
- *(.vectors_ram)
- 0x4000003c . = ((__vectors_ram_start__ + 0x3c) MAX_K .)
- *fill* 0x40000000 0x3c 00
- 0x4000003c __vectors_ram_end__ = (__vectors_ram_start__ + SIZEOF (.vectors_ram))
- 0x00000001 . = ASSERT (((__vectors_ram_end__ >= __SRAM_segment_start__) && (__vectors_ram_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .vectors_ram is too large to fit in SRAM memory segment)
- 0x00000000 __vectors_load_start__ = __FLASH_segment_start__
-
-.vectors 0x00000000 0x38
- 0x00000000 __vectors_start__ = .
- *(.vectors .vectors.*)
- .vectors 0x00000000 0x38 ARM Flash Release/Philips_LPC230X_Startup.o
- 0x00000000 _vectors
- 0x00000038 __vectors_end__ = (__vectors_start__ + SIZEOF (.vectors))
- 0x00000001 . = ASSERT (((__vectors_end__ >= __FLASH_segment_start__) && (__vectors_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .vectors is too large to fit in FLASH memory segment)
- 0x00000038 __init_load_start__ = (__vectors_end__ ALIGN 0x4)
-
-.init 0x00000038 0x2e0
- 0x00000038 __init_start__ = .
- *(.init .init.*)
- *fill* 0x00000038 0x8 00
- .init 0x00000040 0x1d0 ARM Flash Release/crt0.o
- 0x00000040 __start
- 0x00000040 _start
- .init 0x00000210 0x108 ARM Flash Release/Philips_LPC230X_Startup.o
- 0x00000210 reset_handler
- 0x000002fc undef_handler
- 0x00000304 pabort_handler
- 0x00000308 dabort_handler
- 0x00000300 swi_handler
- 0x0000030c fiq_handler
- 0x00000318 __init_end__ = (__init_start__ + SIZEOF (.init))
- 0x00000001 . = ASSERT (((__init_end__ >= __FLASH_segment_start__) && (__init_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .init is too large to fit in FLASH memory segment)
- 0x00000318 __text_load_start__ = (__init_end__ ALIGN 0x4)
-
-.text 0x00000318 0x2d58
- 0x00000318 __text_start__ = .
- *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table)
- .text 0x00000318 0x2f4 ARM Flash Release/easyweb.o
- 0x00000374 InsertDynamicValues
- 0x00000318 GetAD0Val
- 0x00000420 HTTPServer
- 0x00000594 main
- .glue_7 0x0000060c 0x0 ARM Flash Release/easyweb.o
- .glue_7t 0x0000060c 0x0 ARM Flash Release/easyweb.o
- .text 0x0000060c 0x610 ARM Flash Release/EMAC.o
- 0x00000b80 WriteFrame_EMAC
- 0x00000a98 StartReadFrame
- 0x00000a00 ReadFrame_EMAC
- 0x0000060c write_PHY
- 0x00000a18 CopyFromFrame_EMAC
- 0x00000650 read_PHY
- 0x00000ae0 EndReadFrame
- 0x00000bf8 ReadFrameBE_EMAC
- 0x00000b78 Rdy4Tx
- 0x000006bc rx_descr_init
- 0x00000a64 DummyReadFrame_EMAC
- 0x00000b98 CopyToFrame_EMAC
- 0x00000728 tx_descr_init
- 0x0000079c Init_EMAC
- 0x00000b10 CheckFrameReceived
- 0x00000b30 RequestSend
- .glue_7 0x00000c1c 0x0 ARM Flash Release/EMAC.o
- .glue_7t 0x00000c1c 0x0 ARM Flash Release/EMAC.o
- .text 0x00000c1c 0x0 ARM Flash Release/Retarget.o
- .glue_7 0x00000c1c 0x0 ARM Flash Release/Retarget.o
- .glue_7t 0x00000c1c 0x0 ARM Flash Release/Retarget.o
- .text 0x00000c1c 0x1748 ARM Flash Release/tcpip.o
- 0x00001644 TCPHandleRetransmission
- 0x00000e54 TCPClockHandler
- 0x00000dec TCPStopTimer
- 0x00001e7c ProcessEthBroadcastFrame
- 0x00001f28 IsBroadcast
- 0x00000c1c TCPPassiveOpen
- 0x00000ef8 CalcChecksum
- 0x00001fa0 DoNetworkStuff
- 0x00000c5c TCPClose
- 0x00000e04 TCPHandleTimeout
- 0x00000d14 TCPTransmitTxBuffer
- 0x0000114c PrepareTCP_FRAME
- 0x00000ffc PrepareTCP_DATA_FRAME
- 0x00001744 ProcessTCPFrame
- 0x000013e8 PrepareICMP_ECHO_REPLY
- 0x00001308 PrepareARP_ANSWER
- 0x00001d34 ProcessEthIAFrame
- 0x000016bc TCPActiveOpen
- 0x00000dac TCPStartTimeWaitTimer
- 0x00000ebc WriteDWBE
- 0x00000ea4 WriteWBE
- 0x00000ee0 SwapBytes
- 0x00000dd8 TCPRestartTimer
- 0x00000fb4 SendFrame2
- 0x00000cdc TCPStartRetryTimer
- 0x000022e0 TCPLowLevelInit
- 0x0000171c ProcessICMPFrame
- 0x00000cc4 TCPReleaseRxBuffer
- 0x00000fd8 SendFrame1
- 0x00001518 PrepareARP_REQUEST
- .glue_7 0x00002364 0x0 ARM Flash Release/tcpip.o
- .glue_7t 0x00002364 0x0 ARM Flash Release/tcpip.o
- .text 0x00002364 0x10 ARM Flash Release/catch_irqs.o
- 0x00002364 irq_handler()
- 0x0000236c swi_handler()
- 0x00002368 fiq_handler()
- 0x00002370 undef_handler()
- .glue_7 0x00002374 0x0 ARM Flash Release/catch_irqs.o
- .glue_7t 0x00002374 0x0 ARM Flash Release/catch_irqs.o
- .text 0x00002374 0x0 ARM Flash Release/crt0.o
- .glue_7 0x00002374 0x0 ARM Flash Release/crt0.o
- .glue_7t 0x00002374 0x0 ARM Flash Release/crt0.o
- .text 0x00002374 0x0 ARM Flash Release/Philips_LPC230X_Startup.o
- .glue_7 0x00002374 0x0 ARM Flash Release/Philips_LPC230X_Startup.o
- .glue_7t 0x00002374 0x0 ARM Flash Release/Philips_LPC230X_Startup.o
- .text 0x00002374 0x1a4 ARM Flash Release/LPC230x.o
- 0x000023c8 ctl_get_ticks_per_second
- 0x00002478 ctl_start_timer
- 0x000023d0 get_uart_clk
- .glue_7 0x00002518 0x0 ARM Flash Release/LPC230x.o
- .glue_7t 0x00002518 0x0 ARM Flash Release/LPC230x.o
- .text 0x00002518 0xa0 ARM Flash Release/VIC_PL192.o
- 0x00002588 ctl_unmask_isr
- 0x00002518 ctl_set_isr
- 0x000025a0 ctl_mask_isr
- .glue_7 0x000025b8 0x0 ARM Flash Release/VIC_PL192.o
- .glue_7t 0x000025b8 0x0 ARM Flash Release/VIC_PL192.o
- .text 0x000025b8 0x44 ARM Flash Release/VIC_PL192_irq_handler.o
- 0x000025b8 irq_handler
- .glue_7 0x000025fc 0x0 ARM Flash Release/VIC_PL192_irq_handler.o
- .glue_7t 0x000025fc 0x0 ARM Flash Release/VIC_PL192_irq_handler.o
- .text 0x000025fc 0x0 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .text.liblpc2000
- 0x000025fc 0x98 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- 0x000025fc liblpc2000_lpc23xx_get_cclk
- .glue_7 0x00002694 0x0 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .glue_7t 0x00002694 0x0 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .text 0x00002694 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- *fill* 0x00002694 0xc 00
- .text.libc 0x000026a0 0x10 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- 0x000026a0 __ARMLIB_enableIRQ
- 0x000026a0 libarm_enable_irq
- .glue_7 0x000026b0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- .glue_7t 0x000026b0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- .text 0x000026b0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .text.libc 0x000026b0 0x30 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- 0x000026b0 __int32_udiv
- 0x000026b0 __int32_udivmod
- 0x000026b0 __udivsi3
- .glue_7 0x000026e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .glue_7t 0x000026e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .text 0x000026e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .text.libc 0x000026e0 0x60 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- 0x000026e0 memcpy
- .glue_7 0x00002740 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .glue_7t 0x00002740 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .text 0x00002740 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .text.libc 0x00002740 0xa0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- 0x00002740 memset
- .glue_7 0x000027e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .glue_7t 0x000027e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .text 0x000027e0 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .text.libc 0x000027e0 0x68 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- 0x000027e0 memcmp
- .glue_7 0x00002848 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .glue_7t 0x00002848 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .text 0x00002848 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .text.libc 0x00002848 0x44 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- 0x00002848 sprintf
- .glue_7 0x0000288c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .glue_7t 0x0000288c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .text 0x0000288c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .text.libc 0x0000288c 0x780 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- 0x00002948 __vfprintf
- .glue_7 0x0000300c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .glue_7t 0x0000300c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .text 0x0000300c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- *fill* 0x0000300c 0x4 00
- .text.libc 0x00003010 0x60 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- 0x00003010 strlen
- .glue_7 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- .glue_7t 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- .text 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- .text.libc 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- .glue_7 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- .glue_7t 0x00003070 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- 0x00003070 __text_end__ = (__text_start__ + SIZEOF (.text))
- 0x00000001 . = ASSERT (((__text_end__ >= __FLASH_segment_start__) && (__text_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .text is too large to fit in FLASH memory segment)
- 0x00003070 __dtors_load_start__ = (__text_end__ ALIGN 0x4)
-
-.dtors 0x00003070 0x0
- 0x00003070 __dtors_start__ = .
- *(SORT(.dtors.*))
- *(.dtors)
- 0x00003070 __dtors_end__ = (__dtors_start__ + SIZEOF (.dtors))
- 0x00000001 . = ASSERT (((__dtors_end__ >= __FLASH_segment_start__) && (__dtors_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .dtors is too large to fit in FLASH memory segment)
- 0x00003070 __ctors_load_start__ = (__dtors_end__ ALIGN 0x4)
-
-.ctors 0x00003070 0x0
- 0x00003070 __ctors_start__ = .
- *(SORT(.ctors.*))
- *(.ctors)
- 0x00003070 __ctors_end__ = (__ctors_start__ + SIZEOF (.ctors))
- 0x00000001 . = ASSERT (((__ctors_end__ >= __FLASH_segment_start__) && (__ctors_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .ctors is too large to fit in FLASH memory segment)
- 0x00003070 __rodata_load_start__ = (__ctors_end__ ALIGN 0x4)
-
-.rodata 0x00003070 0x4bc
- 0x00003070 __rodata_start__ = .
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- .rodata.str1.4
- 0x00003070 0x4 ARM Flash Release/easyweb.o
- .rodata 0x00003074 0x490 ARM Flash Release/easyweb.o
- 0x00003074 GetResponse
- 0x000030a6 SubnetMask
- 0x000030aa GatewayIP
- 0x000030b0 WebSide
- 0x000030a2 MyIP
- .rodata 0x00003504 0x6 ARM Flash Release/tcpip.o
- 0x00003504 MyMAC
- *fill* 0x0000350a 0x2 00
- .rodata.libc 0x0000350c 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- 0x0000350c __hex_uc
- 0x0000351c __hex_lc
- 0x0000352c __rodata_end__ = (__rodata_start__ + SIZEOF (.rodata))
- 0x00000001 . = ASSERT (((__rodata_end__ >= __FLASH_segment_start__) && (__rodata_end__ <= (__FLASH_segment_start__ + 0x80000))), error: .rodata is too large to fit in FLASH memory segment)
- 0x0000352c __fast_load_start__ = (__rodata_end__ ALIGN 0x4)
-
-.fast 0x4000003c 0x0 load address 0x0000352c
- 0x4000003c __fast_start__ = .
- *(.fast .fast.*)
- 0x4000003c __fast_end__ = (__fast_start__ + SIZEOF (.fast))
- 0x0000352c __fast_load_end__ = (__fast_load_start__ + SIZEOF (.fast))
- 0x00000001 . = ASSERT ((((__fast_load_start__ + SIZEOF (.fast)) >= __FLASH_segment_start__) && ((__fast_load_start__ + SIZEOF (.fast)) <= (__FLASH_segment_start__ + 0x80000))), error: .fast is too large to fit in FLASH memory segment)
-
-.fast_run 0x4000003c 0x0
- 0x4000003c __fast_run_start__ = .
- 0x4000003c . = ((__fast_run_start__ + SIZEOF (.fast)) MAX_K .)
- 0x4000003c __fast_run_end__ = (__fast_run_start__ + SIZEOF (.fast_run))
- 0x00000001 . = ASSERT (((__fast_run_end__ >= __SRAM_segment_start__) && (__fast_run_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .fast_run is too large to fit in SRAM memory segment)
- 0x0000352c __data_load_start__ = ((__fast_load_start__ + SIZEOF (.fast)) ALIGN 0x4)
-
-.data 0x4000003c 0x0 load address 0x0000352c
- 0x4000003c __data_start__ = .
- *(.data .data.* .gnu.linkonce.d.*)
- .data 0x4000003c 0x0 ARM Flash Release/easyweb.o
- .data 0x4000003c 0x0 ARM Flash Release/EMAC.o
- .data 0x4000003c 0x0 ARM Flash Release/Retarget.o
- .data 0x4000003c 0x0 ARM Flash Release/tcpip.o
- .data 0x4000003c 0x0 ARM Flash Release/catch_irqs.o
- .data 0x4000003c 0x0 ARM Flash Release/crt0.o
- .data 0x4000003c 0x0 ARM Flash Release/Philips_LPC230X_Startup.o
- .data 0x4000003c 0x0 ARM Flash Release/LPC230x.o
- .data 0x4000003c 0x0 ARM Flash Release/VIC_PL192.o
- .data 0x4000003c 0x0 ARM Flash Release/VIC_PL192_irq_handler.o
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- .data 0x4000003c 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- 0x4000003c __data_end__ = (__data_start__ + SIZEOF (.data))
- 0x0000352c __data_load_end__ = (__data_load_start__ + SIZEOF (.data))
- 0x0000352c __FLASH_segment_used_end__ = (((__fast_load_start__ + SIZEOF (.fast)) ALIGN 0x4) + SIZEOF (.data))
- 0x00000001 . = ASSERT ((((__data_load_start__ + SIZEOF (.data)) >= __FLASH_segment_start__) && ((__data_load_start__ + SIZEOF (.data)) <= (__FLASH_segment_start__ + 0x80000))), error: .data is too large to fit in FLASH memory segment)
-
-.data_run 0x4000003c 0x0
- 0x4000003c __data_run_start__ = .
- 0x4000003c . = ((__data_run_start__ + SIZEOF (.data)) MAX_K .)
- 0x4000003c __data_run_end__ = (__data_run_start__ + SIZEOF (.data_run))
- 0x00000001 . = ASSERT (((__data_run_end__ >= __SRAM_segment_start__) && (__data_run_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .data_run is too large to fit in SRAM memory segment)
- 0x4000003c __bss_load_start__ = (__data_run_end__ ALIGN 0x4)
-
-.bss 0x4000003c 0x3da
- 0x4000003c __bss_start__ = .
- *(.bss .bss.* .gnu.linkonce.b.*)
- .bss 0x4000003c 0x0 ARM Flash Release/easyweb.o
- .bss 0x4000003c 0x8 ARM Flash Release/EMAC.o
- .bss 0x40000044 0x0 ARM Flash Release/Retarget.o
- .bss 0x40000044 0x0 ARM Flash Release/tcpip.o
- .bss 0x40000044 0x0 ARM Flash Release/catch_irqs.o
- .bss 0x40000044 0x0 ARM Flash Release/crt0.o
- .bss 0x40000044 0x0 ARM Flash Release/Philips_LPC230X_Startup.o
- .bss 0x40000044 0x4 ARM Flash Release/LPC230x.o
- .bss 0x40000048 0x0 ARM Flash Release/VIC_PL192.o
- .bss 0x40000048 0x0 ARM Flash Release/VIC_PL192_irq_handler.o
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
- .bss 0x40000048 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
- *(COMMON)
- COMMON 0x40000048 0x3ce ARM Flash Release/easyweb.o
- 0x40000048 TCPTimer
- 0x4000004c HTTPBytesToSend
- 0x40000050 TCPRxDataCount
- 0x40000052 HTTPStatus
- 0x40000054 TCPTxDataCount
- 0x40000056 RecdFrameIP
- 0x4000005a RemoteMAC
- 0x40000060 TCPStateMachine
- 0x40000064 TCPUNASeqNr
- 0x40000068 TCPLocalPort
- 0x4000006a _RxTCPBuffer
- 0x4000016a TCPFlags
- 0x4000016c RecdFrameMAC
- 0x40000172 RecdIPFrameLength
- 0x40000174 PWebSide
- 0x40000178 RemoteIP
- 0x4000017c LastFrameSent
- 0x40000180 TCPRemotePort
- 0x40000182 TxFrame2Size
- 0x40000184 TCPAckNr
- 0x40000188 TransmitControl
- 0x4000018a TxFrame1Size
- 0x4000018c ISNGenHigh
- 0x4000018e _TxFrame2
- 0x400001d8 RecdFrameLength
- 0x400001da _TxFrame1
- 0x40000410 TCPSeqNr
- 0x40000414 RetryCounter
- 0x40000415 SocketStatus
- 0x40000416 __bss_end__ = (__bss_start__ + SIZEOF (.bss))
- 0x00000001 . = ASSERT (((__bss_end__ >= __SRAM_segment_start__) && (__bss_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .bss is too large to fit in SRAM memory segment)
- 0x40000418 __non_init_load_start__ = (__bss_end__ ALIGN 0x4)
-
-.non_init 0x40000418 0x0
- 0x40000418 __non_init_start__ = .
- *(.non_init .non_init.*)
- 0x40000418 __non_init_end__ = (__non_init_start__ + SIZEOF (.non_init))
- 0x00000001 . = ASSERT (((__non_init_end__ >= __SRAM_segment_start__) && (__non_init_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .non_init is too large to fit in SRAM memory segment)
- 0x40000418 __heap_load_start__ = (__non_init_end__ ALIGN 0x4)
-
-.heap 0x40000418 0x400
- 0x40000418 __heap_start__ = .
- *(.heap)
- 0x40000818 . = (((__heap_start__ + __HEAPSIZE__) MAX_K .) ALIGN 0x4)
- *fill* 0x40000418 0x400 00
- 0x40000818 __heap_end__ = (__heap_start__ + SIZEOF (.heap))
- 0x00000001 . = ASSERT (((__heap_end__ >= __SRAM_segment_start__) && (__heap_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .heap is too large to fit in SRAM memory segment)
- 0x40000818 __stack_load_start__ = (__heap_end__ ALIGN 0x4)
-
-.stack 0x40000818 0x400
- 0x40000818 __stack_start__ = .
- *(.stack)
- 0x40000c18 . = (((__stack_start__ + __STACKSIZE__) MAX_K .) ALIGN 0x4)
- *fill* 0x40000818 0x400 00
- 0x40000c18 __stack_end__ = (__stack_start__ + SIZEOF (.stack))
- 0x00000001 . = ASSERT (((__stack_end__ >= __SRAM_segment_start__) && (__stack_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack is too large to fit in SRAM memory segment)
- 0x40000c18 __stack_irq_load_start__ = (__stack_end__ ALIGN 0x4)
-
-.stack_irq 0x40000c18 0x100
- 0x40000c18 __stack_irq_start__ = .
- *(.stack_irq)
- 0x40000d18 . = (((__stack_irq_start__ + __STACKSIZE_IRQ__) MAX_K .) ALIGN 0x4)
- *fill* 0x40000c18 0x100 00
- 0x40000d18 __stack_irq_end__ = (__stack_irq_start__ + SIZEOF (.stack_irq))
- 0x00000001 . = ASSERT (((__stack_irq_end__ >= __SRAM_segment_start__) && (__stack_irq_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack_irq is too large to fit in SRAM memory segment)
- 0x40000d18 __stack_fiq_load_start__ = (__stack_irq_end__ ALIGN 0x4)
-
-.stack_fiq 0x40000d18 0x100
- 0x40000d18 __stack_fiq_start__ = .
- *(.stack_fiq)
- 0x40000e18 . = (((__stack_fiq_start__ + __STACKSIZE_FIQ__) MAX_K .) ALIGN 0x4)
- *fill* 0x40000d18 0x100 00
- 0x40000e18 __stack_fiq_end__ = (__stack_fiq_start__ + SIZEOF (.stack_fiq))
- 0x00000001 . = ASSERT (((__stack_fiq_end__ >= __SRAM_segment_start__) && (__stack_fiq_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack_fiq is too large to fit in SRAM memory segment)
- 0x40000e18 __stack_svc_load_start__ = (__stack_fiq_end__ ALIGN 0x4)
-
-.stack_svc 0x40000e18 0x0
- 0x40000e18 __stack_svc_start__ = .
- *(.stack_svc)
- 0x40000e1c . = (((__stack_svc_start__ + __STACKSIZE_SVC__) MAX_K .) ALIGN 0x4)
- 0x40000e18 __stack_svc_end__ = (__stack_svc_start__ + SIZEOF (.stack_svc))
- 0x00000001 . = ASSERT (((__stack_svc_end__ >= __SRAM_segment_start__) && (__stack_svc_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack_svc is too large to fit in SRAM memory segment)
- 0x40000e18 __stack_abt_load_start__ = (__stack_svc_end__ ALIGN 0x4)
-
-.stack_abt 0x40000e18 0x0
- 0x40000e18 __stack_abt_start__ = .
- *(.stack_abt)
- 0x40000e1c . = (((__stack_abt_start__ + __STACKSIZE_ABT__) MAX_K .) ALIGN 0x4)
- 0x40000e18 __stack_abt_end__ = (__stack_abt_start__ + SIZEOF (.stack_abt))
- 0x00000001 . = ASSERT (((__stack_abt_end__ >= __SRAM_segment_start__) && (__stack_abt_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack_abt is too large to fit in SRAM memory segment)
- 0x40000e18 __stack_und_load_start__ = (__stack_abt_end__ ALIGN 0x4)
-
-.stack_und 0x40000e18 0x0
- 0x40000e18 __stack_und_start__ = .
- *(.stack_und)
- 0x40000e1c . = (((__stack_und_start__ + __STACKSIZE_UND__) MAX_K .) ALIGN 0x4)
- 0x40000e18 __stack_und_end__ = (__stack_und_start__ + SIZEOF (.stack_und))
- 0x40000e18 __SRAM_segment_used_end__ = ((__stack_abt_end__ ALIGN 0x4) + SIZEOF (.stack_und))
- 0x00000001 . = ASSERT (((__stack_und_end__ >= __SRAM_segment_start__) && (__stack_und_end__ <= (__SRAM_segment_start__ + 0x8000))), error: .stack_und is too large to fit in SRAM memory segment)
-START GROUP
-LOAD ARM Flash Release/easyweb.o
-LOAD ARM Flash Release/EMAC.o
-LOAD ARM Flash Release/Retarget.o
-LOAD ARM Flash Release/tcpip.o
-LOAD ARM Flash Release/catch_irqs.o
-LOAD ARM Flash Release/crt0.o
-LOAD ARM Flash Release/Philips_LPC230X_Startup.o
-LOAD ARM Flash Release/LPC230x.o
-LOAD ARM Flash Release/VIC_PL192.o
-LOAD ARM Flash Release/VIC_PL192_irq_handler.o
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libm_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libcpp_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libdebugio_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/libc_targetio_impl_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a
-LOAD /home/phil/CrossWorks_ARM_1_7/lib/lib_vfscanf_long_v4t_a_le.a
-END GROUP
-OUTPUT(ARM Flash Release/EasyWeb.elf elf32-littlearm)
-
-.comment 0x00000000 0xd8
- .comment 0x00000000 0x12 ARM Flash Release/easyweb.o
- .comment 0x00000012 0x12 ARM Flash Release/EMAC.o
- .comment 0x00000024 0x12 ARM Flash Release/Retarget.o
- .comment 0x00000036 0x12 ARM Flash Release/tcpip.o
- .comment 0x00000048 0x12 ARM Flash Release/catch_irqs.o
- .comment 0x0000005a 0x12 ARM Flash Release/LPC230x.o
- .comment 0x0000006c 0x12 ARM Flash Release/VIC_PL192.o
- .comment 0x0000007e 0x12 /home/phil/CrossWorks_ARM_1_7/lib/liblpc2000_v4t_a_le.a(liblpc2000_lpc23xx_get_cclk.o)
- .comment 0x00000090 0x12 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .comment 0x000000a2 0x12 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .comment 0x000000b4 0x12 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .comment 0x000000c6 0x12 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
-
-.debug_frame 0x00000000 0x1a8
- .debug_frame 0x00000000 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libarmdi_v4t_a_le.a(libarm_enable_irq.o)
- .debug_frame 0x00000020 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__int32_udivmod.o)
- .debug_frame 0x00000040 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcpy.o)
- .debug_frame 0x00000060 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memset.o)
- .debug_frame 0x00000080 0x2c /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_frame 0x000000ac 0x40 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_frame 0x000000ec 0x9c /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .debug_frame 0x00000188 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(strlen.o)
-
-.debug_abbrev 0x00000000 0x7b
- .debug_abbrev 0x00000000 0x23 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_abbrev 0x00000023 0x23 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_abbrev 0x00000046 0x34 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .debug_abbrev 0x0000007a 0x1 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
-
-.debug_info 0x00000000 0xcf
- .debug_info 0x00000000 0x32 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_info 0x00000032 0x32 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_info 0x00000064 0x6b /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .debug_info 0x000000cf 0x0 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
-
-.debug_line 0x00000000 0x15a
- .debug_line 0x00000000 0x68 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_line 0x00000068 0x69 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_line 0x000000d1 0x6c /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- .debug_line 0x0000013d 0x1d /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(__hex_lc_uc.o)
-
-.debug_loc 0x00000000 0xde
- .debug_loc 0x00000000 0x1f /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_loc 0x0000001f 0x37 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_loc 0x00000056 0x88 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
-
-.debug_pubnames
- 0x00000000 0x5c
- .debug_pubnames
- 0x00000000 0x1d /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_pubnames
- 0x0000001d 0x1e /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_pubnames
- 0x0000003b 0x21 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
-
-.debug_aranges 0x00000000 0x60
- .debug_aranges
- 0x00000000 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_aranges
- 0x00000020 0x20 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- .debug_aranges
- 0x00000040 0x20 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
-
-.debug_str 0x00000000 0x121
- .debug_str 0x00000000 0x5b /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(memcmp.o)
- .debug_str 0x0000005b 0x51 /home/phil/CrossWorks_ARM_1_7/lib/libc_v4t_a_le.a(sprintf.o)
- 0x5d (size before relaxing)
- .debug_str 0x000000ac 0x75 /home/phil/CrossWorks_ARM_1_7/lib/lib_vfprintf_long_v4t_a_le.a(__vfprintf_long.o)
- 0x81 (size before relaxing)
Index: /bserver/example/EasyWEB/ARM Flash Release/LPC230x.d
===================================================================
--- /webserver/example/EasyWEB/ARM Flash Release/LPC230x.d (revision 12)
+++ (revision )
@@ -1,9 +1,0 @@
-ARM\ Flash\ Release/LPC230x.o: \
- /home/phil/Desktop/SVN/philsvn/webserver/example/EasyWEB/../../../../../../CrossWorks_ARM_1_7/targets/Philips_LPC210X/LPC230x.c \
- /home/phil/CrossWorks_ARM_1_7/include/ctl_api.h \
- /home/phil/CrossWorks_ARM_1_7/include/libarm.h \
- /home/phil/CrossWorks_ARM_1_7/include/stdlib.h \
- /home/phil/CrossWorks_ARM_1_7/include/__crossworks.h \
- /home/phil/CrossWorks_ARM_1_7/include/targets/LPC2000.h \
- /home/phil/CrossWorks_ARM_1_7/include/targets/LPC2368.h \
- /home/phil/CrossWorks_ARM_1_7/include/targets/liblpc2000.h
Index: /webserver/example/EasyWEB/EasyWeb.hzs
===================================================================
--- /webserver/example/EasyWEB/EasyWeb.hzs (revision 12)
+++ /webserver/example/EasyWEB/EasyWeb.hzs (revision 37)
@@ -1,35 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -46,15 +29,8 @@
-
-
-
-
-
-
-
@@ -70,10 +46,10 @@
-
+
-
+
-
+
@@ -82,26 +58,17 @@
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
+
Index: /webserver/example/Crossworks_taskinglib/CrossWorks_TaskingLib_Test.hzs
===================================================================
--- /webserver/example/Crossworks_taskinglib/CrossWorks_TaskingLib_Test.hzs (revision 13)
+++ /webserver/example/Crossworks_taskinglib/CrossWorks_TaskingLib_Test.hzs (revision 37)
@@ -1,25 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -35,10 +16,4 @@
-
-
-
-
-
-
@@ -59,27 +34,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+
+
Index: /webserver/example/EnergyMeters/Source/serial.c
===================================================================
--- /webserver/example/EnergyMeters/Source/serial.c (revision 37)
+++ /webserver/example/EnergyMeters/Source/serial.c (revision 37)
@@ -0,0 +1,381 @@
+/*
+ FreeRTOS.org V5.0.2 - Copyright (C) 2003-2008 Richard Barry.
+
+ This file is part of the FreeRTOS.org distribution.
+
+ FreeRTOS.org is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ FreeRTOS.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with FreeRTOS.org; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ A special exception to the GPL can be applied should you wish to distribute
+ a combined work that includes FreeRTOS.org, without being obliged to provide
+ the source code for any proprietary components. See the licensing section
+ of http://www.FreeRTOS.org for full details of how and when the exception
+ can be applied.
+
+ ***************************************************************************
+ ***************************************************************************
+ * *
+ * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, *
+ * and even write all or part of your application on your behalf. *
+ * See http://www.OpenRTOS.com for details of the services we provide to *
+ * expedite your project. *
+ * *
+ ***************************************************************************
+ ***************************************************************************
+
+ Please ensure to read the configuration and relevant port sections of the
+ online documentation.
+
+ http://www.FreeRTOS.org - Documentation, latest information, license and
+ contact details.
+
+ http://www.SafeRTOS.com - A version that is certified for use in safety
+ critical systems.
+
+ http://www.OpenRTOS.com - Commercial support, development, porting,
+ licensing and training services.
+*/
+
+
+/*
+ BASIC INTERRUPT DRIVEN SERIAL PORT DRIVER FOR UART0.
+*/
+
+/* Standard includes. */
+#include
+
+/* Scheduler includes. */
+#include "FreeRTOS.h"
+#include "queue.h"
+#include "task.h"
+
+#include "semphr.h"
+
+/* Demo application includes. */
+#include "serial.h"
+
+
+/*-----------------------------------------------------------*/
+
+/* Constants to setup and access the UART. */
+#define serDLAB ( ( unsigned portCHAR ) 0x80 )
+#define serENABLE_INTERRUPTS ( ( unsigned portCHAR ) 0x03 )
+#define serNO_PARITY ( ( unsigned portCHAR ) 0x00 )
+#define ser1_STOP_BIT ( ( unsigned portCHAR ) 0x00 )
+#define ser8_BIT_CHARS ( ( unsigned portCHAR ) 0x03 )
+#define serFIFO_ON ( ( unsigned portCHAR ) 0x01 )
+#define serCLEAR_FIFO ( ( unsigned portCHAR ) 0x06 )
+#define serWANTED_CLOCK_SCALING ( ( unsigned portLONG ) 16 )
+
+/* Constants to setup and access the VIC. */
+#define serU3VIC_CHANNEL ( ( unsigned portLONG ) 0x0006 )
+#define serU3VIC_CHANNEL_BIT ( ( unsigned portLONG ) 0x0040 )
+#define serU3VIC_ENABLE ( ( unsigned portLONG ) 0x0020 )
+#define serCLEAR_VIC_INTERRUPT ( ( unsigned portLONG ) 0 )
+
+/* Constants to determine the ISR source. */
+#define serSOURCE_THRE ( ( unsigned portCHAR ) 0x02 )
+#define serSOURCE_RX_TIMEOUT ( ( unsigned portCHAR ) 0x0c )
+#define serSOURCE_ERROR ( ( unsigned portCHAR ) 0x06 )
+#define serSOURCE_RX ( ( unsigned portCHAR ) 0x04 )
+#define serINTERRUPT_SOURCE_MASK ( ( unsigned portCHAR ) 0x0f )
+
+/* Misc. */
+#define serINVALID_QUEUE ( ( xQueueHandle ) 0 )
+#define serHANDLE ( ( xComPortHandle ) 1 )
+#define serNO_BLOCK ( ( portTickType ) 0 )
+
+/*-----------------------------------------------------------*/
+
+/* Queues used to hold received characters, and characters waiting to be
+transmitted. */
+static xQueueHandle xRxedChars;
+static xQueueHandle xCharsForTx;
+static volatile portLONG lTHREEmpty = pdFALSE;
+
+/*-----------------------------------------------------------*/
+
+/* The ISR. Note that this is called by a wrapper written in the file
+SerialISR.s79. See the WEB documentation for this port for further
+information. */
+void vSerialISR( void );
+
+
+extern void ( vUART3_ISR_Wrapper )( void );
+extern unsigned int uart3TxRunning;
+
+
+
+
+/* The interrupt entry point. */
+void vUART3_ISR_Wrapper( void ) __attribute__((naked));
+
+/* The function that actually performs the interrupt processing. This must be
+separate to the wrapper to ensure the correct stack frame is set up. */
+void vSerialISR( void );
+
+
+void vSerialISR( void )
+{
+signed portCHAR cChar;
+portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+ /* What caused the interrupt? */
+ switch( U3IIR & serINTERRUPT_SOURCE_MASK )
+ {
+ case serSOURCE_ERROR : /* Not handling this, but clear the interrupt. */
+ cChar = U3LSR;
+ break;
+
+ case serSOURCE_THRE : /* The THRE is empty. If there is another
+ character in the Tx queue, send it now. */
+
+ if (uart3TxRunning == 0)
+ {
+ RXD_RS485(); /* we are done sending, we have to receive now. */
+ }
+ else
+ {
+ TXD_RS485(); /* we are still sending */
+ }
+#if 0
+ if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
+ {
+ //TXD_RS485(); /* send */
+ U3THR = cChar;
+ RXD_RS485();
+ }
+ else
+ {
+ /* There are no further characters
+ queued to send so we can indicate
+ that the THRE is available. */
+ lTHREEmpty = pdTRUE;
+
+ /* the queue is empty, the FIFO is empty. switch to RXD,
+ * so we can receive the response from the network.
+ */
+ RXD_RS485();
+
+ }
+ break;
+
+#endif
+
+
+ case serSOURCE_RX_TIMEOUT :
+ case serSOURCE_RX : /* A character was received. Place it in
+ the queue of received characters. */
+ cChar = U3RBR;
+ xQueueSendFromISR( xRxedChars, &cChar, &xHigherPriorityTaskWoken );
+ break;
+
+ default : /* There is nothing to do, leave the ISR. */
+ break;
+ }
+
+
+ /* Clear the ISR in the VIC. */
+ VICVectAddr = serCLEAR_VIC_INTERRUPT;
+
+
+ /* Exit the ISR. If a task was woken by either a character being received
+ or transmitted then a context switch will occur. */
+
+ portYIELD_FROM_ISR();
+ //portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
+
+
+}
+/*-----------------------------------------------------------*/
+
+void vUART3_ISR_Wrapper( void )
+{
+ /* Save the context of the interrupted task. */
+ portSAVE_CONTEXT();
+
+ /* Call the handler function. This must be separate from the wrapper
+ function to ensure the correct stack frame is set up. */
+ vSerialISR();
+
+ /* Restore the context of whichever task is going to run next. */
+ portRESTORE_CONTEXT();
+}
+
+
+
+
+
+/*-----------------------------------------------------------*/
+
+xComPortHandle xSerialPortInitMinimal( unsigned portLONG ulWantedBaud, unsigned portBASE_TYPE uxQueueLength )
+{
+
+
+ unsigned int baud = 57600;
+ unsigned int divisor = get_uart_clk(3, OSCILLATOR_CLOCK_FREQUENCY) / (16 * baud);
+
+
+
+unsigned portLONG ulDivisor, ulWantedClock;
+xComPortHandle xReturn = serHANDLE;
+extern void ( vSerialISREntry) ( void );
+
+ /* Create the queues used to hold Rx and Tx characters. */
+ xRxedChars = xQueueCreate( uxQueueLength, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
+ xCharsForTx = xQueueCreate( uxQueueLength + 1, ( unsigned portBASE_TYPE ) sizeof( signed portCHAR ) );
+
+ /* Initialise the THRE empty flag. */
+ lTHREEmpty = pdTRUE;
+
+ if(
+ ( xRxedChars != serINVALID_QUEUE ) &&
+ ( xCharsForTx != serINVALID_QUEUE ) &&
+ ( ulWantedBaud != ( unsigned portLONG ) 0 )
+ )
+ {
+ portENTER_CRITICAL();
+ {
+ /* Setup the baud rate: Calculate the divisor value. */
+ ulWantedClock = ulWantedBaud * serWANTED_CLOCK_SCALING;
+ ulDivisor = configCPU_CLOCK_HZ / ulWantedClock;
+
+
+ // xxxx xx1x xxxx xxxx xxxx xxxx xxxx xxxx
+ PCONP |= 0x02000000; // UART3 Power-ON
+
+
+
+ /* Configure UART */
+
+
+ U3LCR = 0x83; // 8 bits, no Parity, 1 Stop bit
+
+ U3DLL = divisor & 0xFF;
+
+ U3DLM = (divisor >> 8) & 0xFF;
+
+ /* Turn on the FIFO's and clear the buffers. */
+ U3FCR = ( serFIFO_ON | serCLEAR_FIFO );
+
+
+ U3LCR = 0x03;
+
+ /* Setup the VIC for the UART. */
+ VICVectAddr29 = (portLONG) vUART3_ISR_Wrapper; /* UART3 interrupt handler */
+ VICIntEnable |= (1<<29); /* Enable VIC index-29 (sUART3) */
+
+ /* Enable UART3 interrupts. */
+ U3IER |= serENABLE_INTERRUPTS;
+ }
+ portEXIT_CRITICAL();
+
+ xReturn = ( xComPortHandle ) 1;
+ }
+ else
+ {
+ xReturn = ( xComPortHandle ) 0;
+ }
+
+ return xReturn;
+}
+/*-----------------------------------------------------------*/
+
+signed portBASE_TYPE xSerialGetChar( xComPortHandle pxPort, signed portCHAR *pcRxedChar, portTickType xBlockTime )
+{
+ /* The port handle is not required as this driver only supports UART3. */
+ ( void ) pxPort;
+
+ /* Get the next character from the buffer. Return false if no characters
+ are available, or arrive before xBlockTime expires. */
+ if( xQueueReceive( xRxedChars, pcRxedChar, xBlockTime ) )
+ {
+ return pdTRUE;
+ }
+ else
+ {
+ return pdFALSE;
+ }
+}
+/*-----------------------------------------------------------*/
+
+void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength )
+{
+signed portCHAR *pxNext;
+
+ /* NOTE: This implementation does not handle the queue being full as no
+ block time is used! */
+
+ /* The port handle is not required as this driver only supports UART0. */
+ ( void ) pxPort;
+ ( void ) usStringLength;
+
+ /* Send each character in the string, one at a time. */
+ pxNext = ( signed portCHAR * ) pcString;
+ while( *pxNext )
+ {
+ xSerialPutChar( pxPort, *pxNext, serNO_BLOCK );
+ pxNext++;
+ }
+}
+/*-----------------------------------------------------------*/
+
+signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime )
+{
+signed portBASE_TYPE xReturn;
+
+ /* The port handle is not required as this driver only supports UART3. */
+ ( void ) pxPort;
+
+ portENTER_CRITICAL();
+ {
+ /* Is there space to write directly to the UART? */
+ if( lTHREEmpty == ( portLONG ) pdTRUE )
+ {
+ /* We wrote the character directly to the UART, so was
+ successful. */
+ lTHREEmpty = pdFALSE;
+ //TXD_RS485();
+ U3THR = cOutChar;
+ //RXD_RS485();
+ xReturn = pdPASS;
+ }
+ else
+ {
+ /* We cannot write directly to the UART, so queue the character.
+ Block for a maximum of xBlockTime if there is no space in the
+ queue. It is ok to block within a critical section as each
+ task has it's own critical section management. */
+ xReturn = xQueueSend( xCharsForTx, &cOutChar, xBlockTime );
+
+ /* Depending on queue sizing and task prioritisation: While we
+ were blocked waiting to post interrupts were not disabled. It is
+ possible that the serial ISR has emptied the Tx queue, in which
+ case we need to start the Tx off again. */
+ if( lTHREEmpty == ( portLONG ) pdTRUE )
+ {
+ xQueueReceive( xCharsForTx, &cOutChar, serNO_BLOCK );
+ lTHREEmpty = pdFALSE;
+ //TXD_RS485();
+ U3THR = cOutChar;
+ //RXD_RS485();
+ }
+ }
+ }
+ portEXIT_CRITICAL();
+
+ return xReturn;
+}
+/*-----------------------------------------------------------*/
+
Index: /webserver/example/EnergyMeters/Source/EnergyMeters/Meters.c
===================================================================
--- /webserver/example/EnergyMeters/Source/EnergyMeters/Meters.c (revision 30)
+++ /webserver/example/EnergyMeters/Source/EnergyMeters/Meters.c (revision 37)
@@ -36,13 +36,22 @@
vSemaphoreCreateBinary( xMetersSemaphore );
- Init_P2_0(); /* init GPIO for meters */
+ //Init_P2_0(); /* init GPIO for meters */
+ // TODO: put this in again, right now it interferes with Solar UART3!
+
for( ;; )
{
+ /* this runs every 1000 ms */
+
basementGasCalculation();
+
+
+
portENTER_CRITICAL();
// example: do stuff
+
+
portEXIT_CRITICAL();
@@ -79,7 +88,4 @@
void vP2_0_ISR_Wrapper( void );
-
-// configure port-pins for use with LAN-controller,
-// reset it and send the configuration-sequence
portBASE_TYPE Init_P2_0(void)
Index: /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c
===================================================================
--- /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c (revision 35)
+++ /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c (revision 37)
@@ -2,4 +2,14 @@
#include "LPC23xx.h"
+
+
+#include "FreeRTOS.h"
+#include "semphr.h"
+#include "task.h"
+#include "serial.h"
+
+#define solarSTACK_SIZE configMINIMAL_STACK_SIZE+200
+
+#define SOLAR_READ_DELAY 500
// Pin I/O LED Control Maskbit
@@ -17,9 +27,26 @@
#define SOL_CHAN 2 /* querying channel currentChannel */
#define SOL_CHAN_WAIT_REPLY 3 /* waiting for reply on channel currentChannel = 0; */
-#define SOL_FINISHED 10 /* finished */
+#define SOL_FINISHED 0xA /* finished */
//#define SOL_
//#define SOL_
+// UART/FIFO Register Bit Masks
+
+#define UIIR_PEND 1U
+#define UIIR_RLS_INT (3U << 1)
+#define UIIR_RDA_INT (2U << 1)
+#define UIIR_CTI_INT (6U << 1)
+#define UIIR_THRE_INT (1U << 1)
+
+#define ULSR_RDR 1U
+
+
+/* Handle to the com port (UART3) */
+ xComPortHandle xPort;
+
+unsigned int uart3TxRunning = 0; /* flag to tell if we are currently sending a datagram */
+
+
unsigned int rxBuf3NextFreeRxPos = 0;
@@ -27,4 +54,7 @@
static int solarState = SOL_NO_INIT; /* state of the SolarCount communication state machine */
+
+
+portTickType xReadRate, xLastReadTime;
@@ -97,31 +127,17 @@
void TXD_RS485(void)
{
- delay(500000);
+ //delay(500000);
IOSET1 = DIR_RS485; // RS485 Direction = 1 (Transmit)
} /* TXD_RS485 */
-
-void testUART3(void)
-{
- int k;
- int RxBuf; // one rx char
- int uart_data; // Character Receive Buffer
- k = 0;
-
-
+void initSolarFSM(void)
+{
+ xLastReadTime = xTaskGetTickCount();
solarState = SOL_NO_INIT;
- while (1)
- {
-
- solarFSM();
-
- if (solarState == SOL_FINISHED)
- {
- solarState = SOL_NO_INIT;
- } /* if */
- } /* while */
-
-}
+ init_serial3();
+} /* initSolarFSM */
+
+
/* Clear Uart3 RxBuf and pointer to next Rx element */
@@ -140,14 +156,25 @@
void getUart3RxData(void)
{
-
+ signed portBASE_TYPE byteReceived; /* did we receive a byte? */
+
+ const portTickType xBlockTime = ( portTickType ) 0; /* ( portTickType ) 0xffff / portTICK_RATE_MS; */
unsigned char RxBuf; // one rx char, or 0x100 if no data
- unsigned char rxTrue; // did we receive a byte?
+ //unsigned char rxTrue; // did we receive a byte?
while (rxBuf3NextFreeRxPos + 1 < RX_UART3_BUF_SIZE)
{
- /* while not overran */
-
- RxBuf = getchar3(&rxTrue);
- if (rxTrue == 1)
+ /* while not overrun */
+
+ //RxBuf = getchar3(&rxTrue);
+
+ byteReceived = xSerialGetChar( xPort, &RxBuf, xBlockTime );
+
+
+ if ((rxBuf3NextFreeRxPos == 0) && (byteReceived == pdTRUE) && (RxBuf == 0x00))
+ {
+ /* we are at position 0, and we have received a 0x00 byte. ignore this leading 0. */
+ ; /* do nothing */
+ }
+ else if (byteReceived == pdTRUE)
{
// if data available
@@ -168,31 +195,52 @@
int i;
- if (n > RX_UART3_BUF_SIZE)
- {
- /* n too large */
- resetUart3RxBuf ();
- return;
- }
+ // for now, clear the whole buffer
+ resetUart3RxBuf();
+
+
+ // begin quickfix (TODO)
+
+
+
+ //if (n > RX_UART3_BUF_SIZE)
+ //{
+ // /* n too large */
+
+
+ //resetUart3RxBuf ();
+
+
+
+ // return;
+ //}
/* move end part of the buffer (after n) to front */
- for (i = 0; i < n; i++)
- {
- rxUART3[i] = rxUART3[i+n]; // move byte
- }
+ //for (i = 0; i < n; i++)
+ //{
+ // rxUART3[i] = rxUART3[i+n]; // move byte
+ //}
/* write 0 to now unused elements */
- for (i = n; i < RX_UART3_BUF_SIZE; i++)
- {
- rxUART3[i] = 0; // clear byte
- }
+ //for (i = n; i < RX_UART3_BUF_SIZE; i++)
+ //{
+ // rxUART3[i] = 0; // clear byte
+ //}
+
+ /* clear all elements */
+
+
+
+
/* adjust rxBuf3NextFreeRxPos */
- if (n >= rxBuf3NextFreeRxPos)
- {
- /* remove more elements than are in the buffer */
- rxBuf3NextFreeRxPos = 0; // buffer empty
- }
- else
- {
- rxBuf3NextFreeRxPos -= n;
- }
-} /* chopUart3RxBuf */
+ //if (n >= rxBuf3NextFreeRxPos)
+ //{
+ // /* remove more elements than are in the buffer */
+ // rxBuf3NextFreeRxPos = 0; // buffer empty
+ //}
+ //else
+ //{
+ // rxBuf3NextFreeRxPos -= n;
+ //}
+ // end quickfix (TODO)
+
+}/* chopUart3RxBuf */
@@ -263,4 +311,5 @@
int cmpResult;
+
/* always get Rx data */
getUart3RxData();
@@ -269,14 +318,9 @@
{
case SOL_NO_INIT:
- delay(500000);
- init_serial3();
resetUart3RxBuf(); /* init */
currentChannel = 0; /* the channel we query first */
- TXD_RS485();
- delay(500000);
/* send init 1 */
send_uart3((unsigned char *)init1, sizeof(init1));
- RXD_RS485();
solarState = SOL_SENT_INIT; /* now wait for reply */
break;
@@ -310,5 +354,5 @@
/* send query for channel number currentChannel */
- TXD_RS485();
+ vTaskDelayUntil( &xLastReadTime, SOLAR_READ_DELAY );
switch ( currentChannel )
{
@@ -338,5 +382,4 @@
; /* do nothing */
} /* switch */
- RXD_RS485();
if (solarState != SOL_FINISHED)
{
@@ -395,5 +438,5 @@
/* finally, discard data from buffer */
- resetUart3RxBuf();
+
/* switch to next channel */
@@ -408,4 +451,6 @@
}
+ resetUart3RxBuf();
+
}
else
@@ -425,13 +470,11 @@
-/********************************/
-/* Initial UART3 = 115200,N,8,1 */
-/********************************/
+
void init_serial3 (void)
{
+
unsigned int baud = 57600;
unsigned int divisor = get_uart_clk(3, OSCILLATOR_CLOCK_FREQUENCY) / (16 * baud);
-
int i;
@@ -441,4 +484,7 @@
}
+ /* init serial port */
+ xPort = xSerialPortInitMinimal( baud /* baud rate */, 80 /* buffer length */ );
+//vStartComTestTasks();
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx 1010
@@ -453,5 +499,5 @@
PINSEL3 &= 0xFFFF3FFF; // P1.19 = GPIO
IODIR1 = DIR_RS485; // Pin Control Direction RS485 = Output
- RXD_RS485(); // Default RS485 Direction
+ //RXD_RS485(); // Default RS485 Direction
//PCLKSEL1 = 0; /* UART3 frequency */
@@ -474,14 +520,4 @@
// Baud Rate Calculator: http://prototalk.net/forums/showthread.php?t=11
-
-#if 0
- U3LCR = 0x83; // 8 bits, no Parity, 1 Stop bit
- U3DLL = 0x0C; // Baud 57600BPS for 12MHz PCLK Clock
- U3FDR = 0xC1; // Fractional Divider (0x67 = 115200 , 0xCE = 57600 ????),
- U3DLM = 0;
-
- U3LCR = 0x03; // DLAB = 0
-#endif
-
@@ -496,18 +532,24 @@
void send_uart3(char * data, int length)
{
- int i = 0; // Pointer Buffer
-
- TXD_RS485(); // Swap RS485 Direction = Transmit
- delay(50000);
-
-
- for (i = 0; i < length-1; i++) // Get char & Print Until null
- {
+
+
+ int i = 0; // Pointer Buffer
+
+ TXD_RS485();
+ //delay(50000);
+
+ uart3TxRunning = 1; // sending in progress
+ for (i = 0; i < length-1; i++) // Get char & Print Until null
+ {
+
/* go only through length-1 because we do not send the terminating \x00 of the c-string in data */
- putchar3(data[i]); // Write char to UART // Next char
+ putchar3(data[i]); // Write char to UART
}
-
- delay(50000);
- RXD_RS485(); // Swap RS485 Direction = Receive
+ uart3TxRunning = 0; // done sending this datagram. The UART interrupt can switch to Rx as soon as FIFO is empty
+
+
+ // we send directly. unused.
+ // vSerialPutString( xPort, &(data[0]), length-1 );
+
return;
@@ -555,2 +597,39 @@
}
+
+
+static portTASK_FUNCTION( vSolar_Task, pvParameters )
+{
+
+
+ initSolarFSM();
+
+ for( ;; )
+ {
+
+
+
+ //portENTER_CRITICAL();
+
+ solarFSM();
+
+ //portEXIT_CRITICAL();
+
+
+ if (solarState == SOL_FINISHED)
+ {
+ solarState = SOL_NO_INIT;
+ } /* if */
+
+ }
+}
+
+
+
+void vStartSolarTask( unsigned portBASE_TYPE uxPriority )
+{
+
+ /* Spawn the task. */
+ xTaskCreate( vSolar_Task, ( signed portCHAR * ) "Solar", solarSTACK_SIZE, NULL, uxPriority, ( xTaskHandle * ) NULL );
+}
+
Index: /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/main.c
===================================================================
--- /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/main.c (revision 34)
+++ /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/main.c (revision 37)
@@ -118,9 +118,9 @@
vParTestInitialise();
- testUART3();
+ //testUART3();
/* Create the queue used by the LCD task. Messages for display on the LCD
are received via this queue. */
- xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) );
+ //xLCDQueue = xQueueCreate( mainQUEUE_SIZE, sizeof( xLCDMessage ) );
/* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/
@@ -128,5 +128,7 @@
// vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
- vStartMetersTask( mainFLASH_PRIORITY );
+//* vStartMetersTask( mainFLASH_PRIORITY );
+
+ vStartSolarTask( mainFLASH_PRIORITY );
/* Start the standard demo tasks. */
// vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
@@ -139,5 +141,9 @@
/* Start the tasks defined within this file/specific to this demo. */
// xTaskCreate( vCheckTask, ( signed portCHAR * ) "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
- xTaskCreate( vLCDTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
+
+
+
+ // LCD task still interferes with UART3 (due to PINSEL3 and SCS setting in LCD_init */
+ // xTaskCreate( vLCDTask, ( signed portCHAR * ) "LCD", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
/* The suicide tasks must be created last as they need to know how many
Index: /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzp
===================================================================
--- /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzp (revision 34)
+++ /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzp (revision 37)
@@ -54,4 +54,5 @@
+
Index: /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs
===================================================================
--- /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs (revision 35)
+++ /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs (revision 37)
@@ -2,7 +2,5 @@
-
-
-
+
@@ -16,5 +14,5 @@
-
+
@@ -22,5 +20,4 @@
-
@@ -42,8 +39,8 @@
+
+
-
-
-
+
@@ -57,22 +54,37 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+