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 @@ - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - +