From eb5e940df5bfe0869e2b4918e705566a90eeb6ee Mon Sep 17 00:00:00 2001 From: "magicoe@163.com" Date: Wed, 5 Jan 2011 06:23:40 +0000 Subject: [PATCH] added bsp/lpc122x & libcpu/arm/lpc122x git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1234 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- bsp/lpc122x/FLASH.ini | 28 + bsp/lpc122x/application.c | 82 + bsp/lpc122x/board.c | 67 + bsp/lpc122x/board.h | 20 + bsp/lpc122x/lpc122x.uvopt | 3195 ++++++++++++++++++++ bsp/lpc122x/lpc122x.uvproj | 564 ++++ bsp/lpc122x/lpc122x_RT-Thread LPC122x.dep | 32 + bsp/lpc122x/lpc122x_uvopt.bak | 3195 ++++++++++++++++++++ bsp/lpc122x/obj/ExtDll.iex | 2 + bsp/lpc122x/obj/lpc122x.plg | 9 + bsp/lpc122x/obj/lpc122x.sct | 15 + bsp/lpc122x/obj/lpc122x.tra | 47 + bsp/lpc122x/obj/lpc122x_uart.__i | 1 + bsp/lpc122x/obj/lpc122x_uart.crf | Bin 0 -> 51544 bytes bsp/lpc122x/obj/lpc122x_uart.d | 11 + bsp/lpc122x/rtconfig.h | 67 + bsp/lpc122x/startup.c | 116 + bsp/lpc122x/tc_comm.c | 171 ++ bsp/lpc122x/tc_comm.h | 43 + bsp/lpc122x/uart.c | 295 ++ bsp/lpc122x/uart.h | 6 + libcpu/arm/lpc122x/CMSIS/LPC122x.h | 668 ++++ libcpu/arm/lpc122x/CMSIS/core_cm0.c | 455 +++ libcpu/arm/lpc122x/CMSIS/core_cm0.h | 960 ++++++ libcpu/arm/lpc122x/CMSIS/startup_LPC122x.s | 254 ++ libcpu/arm/lpc122x/CMSIS/system_LPC122x.c | 213 ++ libcpu/arm/lpc122x/CMSIS/system_LPC122x.h | 45 + libcpu/arm/lpc122x/context_rvds.S | 175 ++ libcpu/arm/lpc122x/cpu.c | 42 + libcpu/arm/lpc122x/fault.c | 47 + libcpu/arm/lpc122x/fault_rvds.S | 32 + libcpu/arm/lpc122x/interrupt.c | 21 + libcpu/arm/lpc122x/stack.c | 54 + libcpu/arm/lpc122x/start_rvds.S | 254 ++ 34 files changed, 11186 insertions(+) create mode 100644 bsp/lpc122x/FLASH.ini create mode 100644 bsp/lpc122x/application.c create mode 100644 bsp/lpc122x/board.c create mode 100644 bsp/lpc122x/board.h create mode 100644 bsp/lpc122x/lpc122x.uvopt create mode 100644 bsp/lpc122x/lpc122x.uvproj create mode 100644 bsp/lpc122x/lpc122x_RT-Thread LPC122x.dep create mode 100644 bsp/lpc122x/lpc122x_uvopt.bak create mode 100644 bsp/lpc122x/obj/ExtDll.iex create mode 100644 bsp/lpc122x/obj/lpc122x.plg create mode 100644 bsp/lpc122x/obj/lpc122x.sct create mode 100644 bsp/lpc122x/obj/lpc122x.tra create mode 100644 bsp/lpc122x/obj/lpc122x_uart.__i create mode 100644 bsp/lpc122x/obj/lpc122x_uart.crf create mode 100644 bsp/lpc122x/obj/lpc122x_uart.d create mode 100644 bsp/lpc122x/rtconfig.h create mode 100644 bsp/lpc122x/startup.c create mode 100644 bsp/lpc122x/tc_comm.c create mode 100644 bsp/lpc122x/tc_comm.h create mode 100644 bsp/lpc122x/uart.c create mode 100644 bsp/lpc122x/uart.h create mode 100644 libcpu/arm/lpc122x/CMSIS/LPC122x.h create mode 100644 libcpu/arm/lpc122x/CMSIS/core_cm0.c create mode 100644 libcpu/arm/lpc122x/CMSIS/core_cm0.h create mode 100644 libcpu/arm/lpc122x/CMSIS/startup_LPC122x.s create mode 100644 libcpu/arm/lpc122x/CMSIS/system_LPC122x.c create mode 100644 libcpu/arm/lpc122x/CMSIS/system_LPC122x.h create mode 100644 libcpu/arm/lpc122x/context_rvds.S create mode 100644 libcpu/arm/lpc122x/cpu.c create mode 100644 libcpu/arm/lpc122x/fault.c create mode 100644 libcpu/arm/lpc122x/fault_rvds.S create mode 100644 libcpu/arm/lpc122x/interrupt.c create mode 100644 libcpu/arm/lpc122x/stack.c create mode 100644 libcpu/arm/lpc122x/start_rvds.S diff --git a/bsp/lpc122x/FLASH.ini b/bsp/lpc122x/FLASH.ini new file mode 100644 index 0000000000..bf88b04f64 --- /dev/null +++ b/bsp/lpc122x/FLASH.ini @@ -0,0 +1,28 @@ +/***********************************************************************/ +/* This file is part of the ARM Compiler package */ +/* Copyright KEIL ELEKTRONIK GmbH 1992-2004 */ +/***********************************************************************/ +/* */ +/* RAM.INI: RAM Initialization File */ +/* */ +/***********************************************************************/ + + +//*** <<< Use Configuration Wizard in Context Menu >>> *** + +FUNC void Pre_Setup (void) { + _WDWORD(0x40048000, 0x00000002); // MEMMAP = 2 +} + +FUNC void Setup (void) { + SP = _RDWORD(0x00000000); + PC = _RDWORD(0x00000004); +} + +Pre_Setup(); + +LOAD .\Obj\gpiotest.axf INCREMENTAL // Download + +Setup(); // Setup for Running + +// g, main diff --git a/bsp/lpc122x/application.c b/bsp/lpc122x/application.c new file mode 100644 index 0000000000..dd14624de4 --- /dev/null +++ b/bsp/lpc122x/application.c @@ -0,0 +1,82 @@ +/* + * File : app.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * + */ + +/** + * @addtogroup LPC122x + */ +/*@{*/ +#include +#include "tc_comm.h" + +/* + * This is an example for delay thread + */ +static struct rt_thread thread; +static char thread_stack[THREAD_STACK_SIZE]; +static void thread_entry(void* parameter) +{ + rt_tick_t tick; + rt_kprintf("thread inited ok\n"); + + tick = rt_tick_get(); + rt_kprintf("thread tick %d\n", tick); + rt_kprintf("thread delay 10 tick\n"); + rt_thread_delay(10); + + if (rt_tick_get() - tick > 10) + { + tc_done(TC_STAT_FAILED); + return; + } + + tick = rt_tick_get(); + rt_kprintf("thread delay 15 tick\n"); + rt_thread_delay(15); + if (rt_tick_get() - tick > 15) + { + tc_done(TC_STAT_FAILED); + return; + } + + rt_kprintf("thread exit\n"); + + tc_done(TC_STAT_PASSED); +} + +rt_err_t thread_delay_init() +{ + rt_err_t result; + + result = rt_thread_init(&thread, + "test", + thread_entry, RT_NULL, + &thread_stack[0], sizeof(thread_stack), + THREAD_PRIORITY, 10); + + if (result == RT_EOK) + rt_thread_startup(&thread); + else + tc_stat(TC_STAT_END | TC_STAT_FAILED); + + return result; +} + +int rt_application_init() +{ + thread_delay_init(); + + return 0; +} + +/*@}*/ diff --git a/bsp/lpc122x/board.c b/bsp/lpc122x/board.c new file mode 100644 index 0000000000..9738281f80 --- /dev/null +++ b/bsp/lpc122x/board.c @@ -0,0 +1,67 @@ +/* + * File : board.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006, RT-Thread Develop Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ + +#include +#include + +#include "board.h" +#include "uart.h" + +#include +#include + +#define SYSTICK_DELAY 0x0007A11F + +/** + * @addtogroup LPC122x + */ +/*@{*/ + +/** + * This is the timer interrupt service routine. + */ +void rt_hw_timer_handler() +{ + /* enter interrupt */ + rt_interrupt_enter(); + + rt_tick_increase(); + + /* leave interrupt */ + rt_interrupt_leave(); +} + +/** + * This function will initial sam7s64 board. + */ +void rt_hw_board_init() +{ + SystemInit(); + + /* init systick */ + SysTick_Config( SYSTICK_DELAY ); + + /* set pend exception priority */ + NVIC_SetPriority(PendSV_IRQn, (1<<__NVIC_PRIO_BITS) - 1); + +#ifdef RT_USING_UART + /* init hardware UART device */ + rt_hw_uart_init(); +#endif +#ifdef RT_USING_CONSOLE + /* set console device */ + rt_console_set_device("uart0"); +#endif +} +/*@}*/ diff --git a/bsp/lpc122x/board.h b/bsp/lpc122x/board.h new file mode 100644 index 0000000000..a8f6dd9f87 --- /dev/null +++ b/bsp/lpc122x/board.h @@ -0,0 +1,20 @@ +/* + * File : board.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006, RT-Thread Develop Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +void rt_hw_board_init(void); + +#endif diff --git a/bsp/lpc122x/lpc122x.uvopt b/bsp/lpc122x/lpc122x.uvopt new file mode 100644 index 0000000000..4a6cfc4481 --- /dev/null +++ b/bsp/lpc122x/lpc122x.uvopt @@ -0,0 +1,3195 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + RT-Thread LPC122x + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DARMCM1.DLL + + SARMCM3.DLL + + TARMCM1.DLL + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 1 + + + + + + + + + + .\FLASH.ini + BIN\UL2CM3.DLL + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=234,124,600,353,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) + + + 0 + UL2CM3 + -UV1498UAE -O494 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FD10000000 -FC800 -FN1 -FF0LPC115x_128 -FS00 -FL020000 + + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Startup + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 55 + 0 + 61 + 61 + 0 + .\application.c + application.c + + + 1 + 2 + 1 + 0 + 0 + 45 + 0 + 7 + 12 + 0 + .\board.c + board.c + + + 1 + 3 + 1 + 0 + 0 + 22 + 0 + 51 + 57 + 0 + .\startup.c + startup.c + + + 1 + 4 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\board.h + board.h + + + 1 + 5 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\rtconfig.h + rtconfig.h + + + 1 + 6 + 1 + 0 + 0 + 11 + 0 + 67 + 67 + 0 + .\uart.c + uart.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\tc_comm.c + tc_comm.c + + + + + Kernel + 1 + 0 + 0 + + 2 + 8 + 1 + 0 + 0 + 15 + 0 + 48 + 51 + 0 + ..\..\src\clock.c + clock.c + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\device.c + device.c + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\idle.c + idle.c + + + 2 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\ipc.c + ipc.c + + + 2 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\irq.c + irq.c + + + 2 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\kservice.c + kservice.c + + + 2 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\mem.c + mem.c + + + 2 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\mempool.c + mempool.c + + + 2 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\module.c + module.c + + + 2 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\object.c + object.c + + + 2 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\rtm.c + rtm.c + + + 2 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\scheduler.c + scheduler.c + + + 2 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\slab.c + slab.c + + + 2 + 21 + 1 + 0 + 0 + 28 + 0 + 445 + 453 + 0 + ..\..\src\thread.c + thread.c + + + 2 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\timer.c + timer.c + + + + + LPC122x + 1 + 0 + 0 + + 3 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\cpu.c + cpu.c + + + 3 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\fault.c + fault.c + + + 3 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\interrupt.c + interrupt.c + + + 3 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\stack.c + stack.c + + + 3 + 27 + 2 + 0 + 0 + 17 + 0 + 97 + 104 + 0 + ..\..\libcpu\arm\lpc122x\context_rvds.S + context_rvds.S + + + 3 + 28 + 2 + 0 + 0 + 36 + 0 + 12 + 15 + 0 + ..\..\libcpu\arm\lpc122x\fault_rvds.S + fault_rvds.S + + + 3 + 29 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\start_rvds.S + start_rvds.S + + + + + CMSIS + 1 + 0 + 0 + + 4 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\CMSIS\system_LPC122x.c + system_LPC122x.c + + + 4 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\CMSIS\core_cm0.c + core_cm0.c + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 318 + 114 + 1074 + 868 + + + + 0 + + 658 + 01000000040000000100000001000000010000000100000001000000FFFFFFFF000000000100000001000000000000002800000028000000010000000600000005000000010000003C453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6C69626370755C61726D5C6C7063313232785C6661756C745F727664732E53000000000C6661756C745F727664732E5300000000C5D4F200FFFFFFFF3E453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6C69626370755C61726D5C6C7063313232785C636F6E746578745F727664732E53000000000E636F6E746578745F727664732E5300000000FFDC7800FFFFFFFF36453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C6170706C69636174696F6E2E63000000000D6170706C69636174696F6E2E6300000000BECEA100FFFFFFFF30453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C626F6172642E630000000007626F6172642E6300000000F0A0A100FFFFFFFF30453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C626F6172642E680000000007626F6172642E6800000000BCA8E100FFFFFFFF2F453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C756172742E630000000006756172742E63000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000001000000020000000C010000650000000005000002020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8A0000004F00000026030000B5000000 + + + 16 + 410100001C010000DD03000082010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 1507 + 1507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1944 + 1944 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007301000000050000CF020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 38007 + 38007 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 473 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000CF02000000050000E2020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59398 + 59398 + 1 + 0 + 0 + 0 + 231 + 0 + 8192 + 1 + + 16 + 000000001C0000009201000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593980 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593981b4 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593987a06 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 337 + 0 + 8192 + 2 + + 16 + 00000000380000009C02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2485 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF8A000000B500000026030000B9000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000410100001C010000DD030000820100008A0000004F00000026030000B50000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF260300004F0000002A030000ED010000000000000200000004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000E10300001C01000067040000BA0200002A0300004F000000B0030000ED0100000000000040410046160000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF080100004F0000000C010000EC01000001000000020000100400000001000000FAFEFFFFA7020000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000B70000001C010000BF010000B9020000000000004F00000008010000EC0100000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000006F010000B00300007301000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0900000098070000E30500008F0700009007000091070000B9050000BA050000BB050000BC05000001800080000000000000B70000004002000067040000BA0200000000000073010000B0030000ED0100000000000040820046090000000A43616C6C20537461636B000000009807000001000000FFFFFFFFFFFFFFFF0A43616C6C20537461636B00000000E305000001000000FFFFFFFFFFFFFFFF064C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD801000073010000DC010000ED01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF9807000001000000FFFFFFFF9807000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000EC01000000050000F00100000100000001000010040000000100000029FEFFFFA6000000FFFFFFFF07000000C5000000C7000000779400009307000094070000950700009607000001800080000001000000B7000000BD020000B70500009C03000000000000F001000000050000CF0200000000000040820056070000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2002 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000020000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65D9010000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59398 + Build + + 591 + 00200000010000000D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000004001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001152542D546872656164204C504331323278960000000000000001001152542D546872656164204C504331323278000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A0000000004002400000000000000000000000000000000010000000100000000000000054275696C64E7000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A00000000000009000000000000000000000000000000000100000001000000 + + + + 59399 + Debug + + 2582 + 00200000000000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380DB8B00000000000031000000064C6F63616C73000000000000000000000000010000000100000000000000000000000100000000001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138046010000000000004900000013446562756720526573746F72652056696577730000000000000000000000000100000001000000000000000000000001000000030013802C8C000000000000FFFFFFFF1A446562756720526573746F726520566965777320416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013802B8C000000000000FFFFFFFF17265265736574205669657720746F2044656661756C7473010000000000000001000000000000000100000000000000000000000100000000000000000005446562756751010000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180DB8B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804601000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180DB8B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018001890000000000001300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000014000000000000000000000000000000000100000001000000 + + + + 0 + 1280 + 800 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FC0000004B00000074040000B2000000 + + + 16 + 8C0000006500000074040000CC000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000F50000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1506 + 1506 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 780400005D0000000005000056020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 1507 + 1507 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1944 + 1944 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000005A02000080020000D3020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + FC0000005D00000074040000B2000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000F50000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 882 + 0 + 8192 + 0 + + 16 + 00000000000000007D0300001A000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000D302000000050000E4020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59398 + 59398 + 0 + 0 + 0 + 0 + 373 + 0 + 8192 + 1 + + 16 + 000000001A0000008001000034000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593980 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593981b4 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593987a06 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 615 + 0 + 8192 + 2 + + 16 + 000000001A0000007202000034000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2484 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFFC000000B200000074040000B6000000010000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000010000008C0000006500000074040000CC000000FC0000004B00000074040000B20000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF740400004B0000007804000056020000010000000200001004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C00000180004000000100000078040000650000000005000070020000780400004B00000000050000560200000000000040410056160000000753796D626F6C7301000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80000004B000000FC00000056020000010000000200001004000000010000007AFFFFFFE3030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000650000008800000070020000000000004B000000F8000000560200000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000056020000000500005A02000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0900000098070000E30500008F0700009007000091070000B9050000BA050000BB050000BC05000001800080000001000000840200007402000000050000ED020000840200005A02000000050000D30200000000000040820056090000000A43616C6C20537461636B000000009807000001000000FFFFFFFFFFFFFFFF0A43616C6C20537461636B01000000E305000001000000FFFFFFFFFFFFFFFF064C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF020000000000000001000000000000000100000001000000FFFFFFFF800200005A02000084020000D302000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF9807000001000000FFFFFFFF9807000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000089010000B80300008D010000000000000100000004000000010000000000000000000000FFFFFFFF07000000C5000000C700000077940000930700009407000095070000960700000180008000000000000000000000A7010000B80300000E020000000000008D010000B8030000F40100000000000040820046070000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2002 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000020001001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59398 + Build + + 552 + 00200000000000000D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A0000000000002400000000000000000000000000000000010000000100000000000000054275696C6475010000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A00000000000009000000000000000000000000000000000100000001000000 + + + + 59399 + Debug + + 2582 + 00200000010000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020001003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380DB8B00000000000031000000064C6F63616C73000000000000000000000000010000000100000000000000000000000100000000001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000002000100320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000020000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138046010000000004004900000013446562756720526573746F72652056696577730000000000000000000000000100000001000000000000000000000001000000030013802C8C000000000000FFFFFFFF1A446562756720526573746F726520566965777320416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013802B8C000000000000FFFFFFFF17265265736574205669657720746F2044656661756C7473010000000000000001000000000000000100000000000000000000000100000000000000000005446562756767020000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180DB8B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804601000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180DB8B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018001890000000000001300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000014000000000000000000000000000000000100000001000000 + + + + 0 + 1280 + 800 + + + + + + 1 + 0 + + 100 + 5 + + + ..\..\libcpu\arm\lpc122x\fault_rvds.S + 36 + 12 + 15 + + + ..\..\libcpu\arm\lpc122x\context_rvds.S + 17 + 97 + 104 + + + .\application.c + 55 + 61 + 61 + + + .\board.c + 45 + 7 + 12 + + + .\board.h + 46 + 1 + 14 + + + .\uart.c + 11 + 67 + 67 + + + + + +
diff --git a/bsp/lpc122x/lpc122x.uvproj b/bsp/lpc122x/lpc122x.uvproj new file mode 100644 index 0000000000..3d16657571 --- /dev/null +++ b/bsp/lpc122x/lpc122x.uvproj @@ -0,0 +1,564 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + + RT-Thread LPC122x + 0x4 + ARM-ADS + + + Cortex-M0 + ARM + CLOCK(12000000) CPUTYPE("Cortex-M0") ESEL ELITTLE + + + + 4803 + + + + + + + + + + + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + .\obj\ + lpc122x + 1 + 0 + 1 + 1 + 1 + .\lst\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DARMCM1.DLL + + SARMCM3.DLL + + TARMCM1.DLL + + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + + 0 + 1 + + + + + + + + + + + + + .\FLASH.ini + BIN\UL2CM3.DLL + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + BIN\UL2CM3.DLL + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M0" + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 1 + 0 + 3 + 5 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x8000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x10000000 + 0x2000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + .;..\..\include;..\..\libcpu\arm\lpc122x; + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x00000000 + + + + + + + + + + + + Startup + + + application.c + 1 + .\application.c + + + board.c + 1 + .\board.c + + + startup.c + 1 + .\startup.c + + + board.h + 5 + .\board.h + + + rtconfig.h + 5 + .\rtconfig.h + + + uart.c + 1 + .\uart.c + + + tc_comm.c + 1 + .\tc_comm.c + + + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + module.c + 1 + ..\..\src\module.c + + + object.c + 1 + ..\..\src\object.c + + + rtm.c + 1 + ..\..\src\rtm.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + slab.c + 1 + ..\..\src\slab.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + + + LPC122x + + + cpu.c + 1 + ..\..\libcpu\arm\lpc122x\cpu.c + + + fault.c + 1 + ..\..\libcpu\arm\lpc122x\fault.c + + + interrupt.c + 1 + ..\..\libcpu\arm\lpc122x\interrupt.c + + + stack.c + 1 + ..\..\libcpu\arm\lpc122x\stack.c + + + context_rvds.S + 2 + ..\..\libcpu\arm\lpc122x\context_rvds.S + + + fault_rvds.S + 2 + ..\..\libcpu\arm\lpc122x\fault_rvds.S + + + start_rvds.S + 2 + ..\..\libcpu\arm\lpc122x\start_rvds.S + + + + + CMSIS + + + system_LPC122x.c + 1 + ..\..\libcpu\arm\lpc122x\CMSIS\system_LPC122x.c + + + core_cm0.c + 1 + ..\..\libcpu\arm\lpc122x\CMSIS\core_cm0.c + + + + + + + +
diff --git a/bsp/lpc122x/lpc122x_RT-Thread LPC122x.dep b/bsp/lpc122x/lpc122x_RT-Thread LPC122x.dep new file mode 100644 index 0000000000..90a8784db1 --- /dev/null +++ b/bsp/lpc122x/lpc122x_RT-Thread LPC122x.dep @@ -0,0 +1,32 @@ +Dependencies for Project 'lpc122x', Target 'RT-Thread LPC122x': (DO NOT MODIFY !) +F (.\application.c)(0x4D1946C4)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\application.o" --omf_browse ".\obj\application.crf" --depend ".\obj\application.d") +F (.\board.c)(0x4D0D98D5)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\board.o" --omf_browse ".\obj\board.crf" --depend ".\obj\board.d") +F (.\startup.c)(0x4D0AFB31)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\startup.o" --omf_browse ".\obj\startup.crf" --depend ".\obj\startup.d") +F (.\board.h)(0x4C68E915)() +F (.\rtconfig.h)(0x4C68E915)() +F (.\uart.c)(0x4D0AFCCD)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\uart.o" --omf_browse ".\obj\uart.crf" --depend ".\obj\uart.d") +F (.\tc_comm.c)(0x4D0B09A8)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\tc_comm.o" --omf_browse ".\obj\tc_comm.crf" --depend ".\obj\tc_comm.d") +F (..\..\src\clock.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\clock.o" --omf_browse ".\obj\clock.crf" --depend ".\obj\clock.d") +F (..\..\src\device.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\device.o" --omf_browse ".\obj\device.crf" --depend ".\obj\device.d") +F (..\..\src\idle.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\idle.o" --omf_browse ".\obj\idle.crf" --depend ".\obj\idle.d") +F (..\..\src\ipc.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\ipc.o" --omf_browse ".\obj\ipc.crf" --depend ".\obj\ipc.d") +F (..\..\src\irq.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\irq.o" --omf_browse ".\obj\irq.crf" --depend ".\obj\irq.d") +F (..\..\src\kservice.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\kservice.o" --omf_browse ".\obj\kservice.crf" --depend ".\obj\kservice.d") +F (..\..\src\mem.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\mem.o" --omf_browse ".\obj\mem.crf" --depend ".\obj\mem.d") +F (..\..\src\mempool.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\mempool.o" --omf_browse ".\obj\mempool.crf" --depend ".\obj\mempool.d") +F (..\..\src\module.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\module.o" --omf_browse ".\obj\module.crf" --depend ".\obj\module.d") +F (..\..\src\object.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\object.o" --omf_browse ".\obj\object.crf" --depend ".\obj\object.d") +F (..\..\src\rtm.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\rtm.o" --omf_browse ".\obj\rtm.crf" --depend ".\obj\rtm.d") +F (..\..\src\scheduler.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\scheduler.o" --omf_browse ".\obj\scheduler.crf" --depend ".\obj\scheduler.d") +F (..\..\src\slab.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\slab.o" --omf_browse ".\obj\slab.crf" --depend ".\obj\slab.d") +F (..\..\src\thread.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\thread.o" --omf_browse ".\obj\thread.crf" --depend ".\obj\thread.d") +F (..\..\src\timer.c)(0x00000000)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\timer.o" --omf_browse ".\obj\timer.crf" --depend ".\obj\timer.d") +F (..\..\libcpu\arm\lpc122x\cpu.c)(0x4C68E9AB)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\cpu.o" --omf_browse ".\obj\cpu.crf" --depend ".\obj\cpu.d") +F (..\..\libcpu\arm\lpc122x\fault.c)(0x4C68E9AB)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\fault.o" --omf_browse ".\obj\fault.crf" --depend ".\obj\fault.d") +F (..\..\libcpu\arm\lpc122x\interrupt.c)(0x4C68E9AB)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\interrupt.o" --omf_browse ".\obj\interrupt.crf" --depend ".\obj\interrupt.d") +F (..\..\libcpu\arm\lpc122x\stack.c)(0x4C68E9AB)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\stack.o" --omf_browse ".\obj\stack.crf" --depend ".\obj\stack.d") +F (..\..\libcpu\arm\lpc122x\context_rvds.S)(0x4C68E9AB)(--cpu Cortex-M0 --li -g --apcs=interwork --pd "__MICROLIB SETA 1" -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" --list ".\lst\context_rvds.lst" --xref -o ".\obj\context_rvds.o" --depend ".\obj\context_rvds.d") +F (..\..\libcpu\arm\lpc122x\fault_rvds.S)(0x4C68E9AB)(--cpu Cortex-M0 --li -g --apcs=interwork --pd "__MICROLIB SETA 1" -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" --list ".\lst\fault_rvds.lst" --xref -o ".\obj\fault_rvds.o" --depend ".\obj\fault_rvds.d") +F (..\..\libcpu\arm\lpc122x\start_rvds.S)(0x4D0B0B6D)(--cpu Cortex-M0 --li -g --apcs=interwork --pd "__MICROLIB SETA 1" -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" --list ".\lst\start_rvds.lst" --xref -o ".\obj\start_rvds.o" --depend ".\obj\start_rvds.d") +F (..\..\libcpu\arm\lpc122x\CMSIS\system_LPC122x.c)(0x4CEE18A0)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\system_lpc122x.o" --omf_browse ".\obj\system_lpc122x.crf" --depend ".\obj\system_lpc122x.d") +F (..\..\libcpu\arm\lpc122x\CMSIS\core_cm0.c)(0x4C68E9AB)(-c --cpu Cortex-M0 -D__MICROLIB --li -g -O1 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\core_cm0.o" --omf_browse ".\obj\core_cm0.crf" --depend ".\obj\core_cm0.d") diff --git a/bsp/lpc122x/lpc122x_uvopt.bak b/bsp/lpc122x/lpc122x_uvopt.bak new file mode 100644 index 0000000000..6413ad43db --- /dev/null +++ b/bsp/lpc122x/lpc122x_uvopt.bak @@ -0,0 +1,3195 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + RT-Thread LPC122x + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + .\lst\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + SARMCM3.DLL + + DARMCM1.DLL + + SARMCM3.DLL + + TARMCM1.DLL + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 1 + + + + + + + + + + .\FLASH.ini + BIN\UL2CM3.DLL + + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=234,124,600,353,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0) + + + 0 + UL2CM3 + -UV1498UAE -O494 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO11 -FD10000000 -FC800 -FN1 -FF0LPC115x_128 -FS00 -FL020000 + + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Startup + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 55 + 0 + 61 + 61 + 0 + .\application.c + application.c + + + 1 + 2 + 1 + 0 + 0 + 45 + 0 + 7 + 12 + 0 + .\board.c + board.c + + + 1 + 3 + 1 + 0 + 0 + 22 + 0 + 51 + 57 + 0 + .\startup.c + startup.c + + + 1 + 4 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\board.h + board.h + + + 1 + 5 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\rtconfig.h + rtconfig.h + + + 1 + 6 + 1 + 0 + 0 + 11 + 0 + 67 + 67 + 0 + .\uart.c + uart.c + + + 1 + 7 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\tc_comm.c + tc_comm.c + + + + + Kernel + 1 + 0 + 0 + + 2 + 8 + 1 + 0 + 0 + 15 + 0 + 48 + 51 + 0 + ..\..\src\clock.c + clock.c + + + 2 + 9 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\device.c + device.c + + + 2 + 10 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\idle.c + idle.c + + + 2 + 11 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\ipc.c + ipc.c + + + 2 + 12 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\irq.c + irq.c + + + 2 + 13 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\kservice.c + kservice.c + + + 2 + 14 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\mem.c + mem.c + + + 2 + 15 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\mempool.c + mempool.c + + + 2 + 16 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\module.c + module.c + + + 2 + 17 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\object.c + object.c + + + 2 + 18 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\rtm.c + rtm.c + + + 2 + 19 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\scheduler.c + scheduler.c + + + 2 + 20 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\slab.c + slab.c + + + 2 + 21 + 1 + 0 + 0 + 28 + 0 + 445 + 453 + 0 + ..\..\src\thread.c + thread.c + + + 2 + 22 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\src\timer.c + timer.c + + + + + LPC122x + 1 + 0 + 0 + + 3 + 23 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\cpu.c + cpu.c + + + 3 + 24 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\fault.c + fault.c + + + 3 + 25 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\interrupt.c + interrupt.c + + + 3 + 26 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\stack.c + stack.c + + + 3 + 27 + 2 + 0 + 0 + 17 + 0 + 85 + 104 + 0 + ..\..\libcpu\arm\lpc122x\context_rvds.S + context_rvds.S + + + 3 + 28 + 2 + 0 + 0 + 36 + 0 + 12 + 15 + 0 + ..\..\libcpu\arm\lpc122x\fault_rvds.S + fault_rvds.S + + + 3 + 29 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\start_rvds.S + start_rvds.S + + + + + CMSIS + 1 + 0 + 0 + + 4 + 30 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\CMSIS\system_LPC122x.c + system_LPC122x.c + + + 4 + 31 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + ..\..\libcpu\arm\lpc122x\CMSIS\core_cm0.c + core_cm0.c + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + 318 + 114 + 1074 + 868 + + + + 0 + + 658 + 01000000040000000100000001000000010000000100000001000000FFFFFFFF000000000100000001000000000000002800000028000000010000000600000004000000010000002F453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C756172742E630000000006756172742E6300000000C5D4F200FFFFFFFF30453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C626F6172642E680000000007626F6172642E6800000000FFDC7800FFFFFFFF30453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C626F6172642E630000000007626F6172642E6300000000BECEA100FFFFFFFF36453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6273705C6C7063313232785C6170706C69636174696F6E2E63000000000D6170706C69636174696F6E2E6300000000F0A0A100FFFFFFFF3E453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6C69626370755C61726D5C6C7063313232785C636F6E746578745F727664732E53000000000E636F6E746578745F727664732E5300000000BCA8E100FFFFFFFF3C453A5C53564ECFEEC4BF5C72745F7468726561645F6C7063313232375C6C69626370755C61726D5C6C7063313232785C6661756C745F727664732E53000000000C6661756C745F727664732E53000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000001000000020000000C010000650000000005000002020000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8A0000004F00000026030000B5000000 + + + 16 + F6000000D10000009203000037010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 1507 + 1507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 1944 + 1944 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000008A010000AD030000D4010000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007301000000050000CF020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 199 + 199 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 8D00000066000000230300009C000000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 2D03000066000000AD030000D4010000 + + + 16 + 9E000000B40000002E02000044020000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006600000005010000D3010000 + + + 16 + 9E000000B4000000240100004E020000 + + + + 38007 + 38007 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0300000007020000FD040000B6020000 + + + 16 + 9E000000B4000000760200001A010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 473 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000CF02000000050000E2020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59398 + 59398 + 1 + 0 + 0 + 0 + 231 + 0 + 8192 + 1 + + 16 + 000000001C0000009201000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593980 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000105000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593981b4 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593987a06 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 337 + 0 + 8192 + 2 + + 16 + 00000000380000009C02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2485 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF8A000000B500000026030000B9000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000F6000000D100000092030000370100008A0000004F00000026030000B50000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF260300004F0000002A030000ED010000000000000200000004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C00000180004000000000000096030000D10000001C0400006F0200002A0300004F000000B0030000ED0100000000000040410046160000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF080100004F0000000C010000EC01000001000000020000100400000001000000FAFEFFFFA7020000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000006C000000D1000000740100006E020000000000004F00000008010000EC0100000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000006F010000B00300007301000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0900000098070000E30500008F0700009007000091070000B9050000BA050000BB050000BC050000018000800000000000006C000000F50100001C0400006F0200000000000073010000B0030000ED0100000000000040820046090000000A43616C6C20537461636B000000009807000001000000FFFFFFFFFFFFFFFF0A43616C6C20537461636B00000000E305000001000000FFFFFFFFFFFFFFFF064C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD801000073010000DC010000ED01000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF9807000001000000FFFFFFFF9807000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000EC01000000050000F00100000100000001000010040000000100000029FEFFFFA6000000FFFFFFFF07000000C5000000C70000007794000093070000940700009507000096070000018000800000010000006C000000720200006C0500005103000000000000F001000000050000CF0200000000000040820056070000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2002 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000020004001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65D9010000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59398 + Build + + 591 + 00200000010000000D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000004001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000001152542D546872656164204C504331323278960000000000000001001152542D546872656164204C504331323278000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A0000000004002400000000000000000000000000000000010000000100000000000000054275696C64E7000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A00000000000009000000000000000000000000000000000100000001000000 + + + + 59399 + Debug + + 2582 + 00200000000000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380DB8B00000000000031000000064C6F63616C73000000000000000000000000010000000100000000000000000000000100000000001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138046010000000000004900000013446562756720526573746F72652056696577730000000000000000000000000100000001000000000000000000000001000000030013802C8C000000000000FFFFFFFF1A446562756720526573746F726520566965777320416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013802B8C000000000000FFFFFFFF17265265736574205669657720746F2044656661756C7473000000000000000001000000000000000100000000000000000000000100000000000000000005446562756751010000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180DB8B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804601000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180DB8B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018001890000000000001300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000014000000000000000000000000000000000100000001000000 + + + + 0 + 1280 + 800 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FC0000004B00000074040000B2000000 + + + 16 + 8C0000006500000074040000CC000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000F50000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1506 + 1506 + 1 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + 780400005D0000000005000056020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 1507 + 1507 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 1944 + 1944 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 870200006F020000FD040000BA020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000850000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000005A02000080020000D3020000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + FC0000005D00000074040000B2000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + FF00000060000000E104000099000000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 7B04000060000000FD0400003D020000 + + + 16 + 1A0000003B000000AA010000CB010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000060000000F50000003D020000 + + + 16 + 1A0000003B000000A2000000D9010000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000A2010000B5030000DB010000 + + + 16 + 1A0000003B000000F6010000A2000000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 882 + 0 + 8192 + 0 + + 16 + 00000000000000007D0300001A000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000D302000000050000E4020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59398 + 59398 + 0 + 0 + 0 + 0 + 373 + 0 + 8192 + 1 + + 16 + 000000001A0000008001000034000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593980 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593981b4 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 593987a06 + 59398 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000005000017000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 615 + 0 + 8192 + 2 + + 16 + 000000001A0000007202000034000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2484 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFFC000000B200000074040000B6000000010000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000010000008C0000006500000074040000CC000000FC0000004B00000074040000B20000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF740400004B0000007804000056020000010000000200001004000000010000000000000000000000FFFFFFFF16000000E20500002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C00000180004000000100000078040000650000000005000070020000780400004B00000000050000560200000000000040410056160000000753796D626F6C7301000000E205000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80000004B000000FC00000056020000010000000200001004000000010000007AFFFFFFE3030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000650000008800000070020000000000004B000000F8000000560200000000000040140056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000056020000000500005A02000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0900000098070000E30500008F0700009007000091070000B9050000BA050000BB050000BC05000001800080000001000000840200007402000000050000ED020000840200005A02000000050000D30200000000000040820056090000000A43616C6C20537461636B000000009807000001000000FFFFFFFFFFFFFFFF0A43616C6C20537461636B01000000E305000001000000FFFFFFFFFFFFFFFF064C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF020000000000000001000000000000000100000001000000FFFFFFFF800200005A02000084020000D302000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF9807000001000000FFFFFFFF9807000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000089010000B80300008D010000000000000100000004000000010000000000000000000000FFFFFFFF07000000C5000000C700000077940000930700009407000095070000960700000180008000000000000000000000A7010000B80300000E020000000000008D010000B8030000F40100000000000040820046070000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2002 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000020001001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020003001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C6572030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59398 + Build + + 552 + 00200000000000000D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A0000000000002400000000000000000000000000000000010000000100000000000000054275696C6475010000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 478 + 0D00FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A00000000000009000000000000000000000000000000000100000001000000 + + + + 59399 + Debug + + 2582 + 00200000010000001B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020001003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380DB8B00000000000031000000064C6F63616C73000000000000000000000000010000000100000000000000000000000100000000001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000002000100320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000020000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138046010000000004004900000013446562756720526573746F72652056696577730000000000000000000000000100000001000000000000000000000001000000030013802C8C000000000000FFFFFFFF1A446562756720526573746F726520566965777320416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013802B8C000000000000FFFFFFFF17265265736574205669657720746F2044656661756C7473010000000000000001000000000000000100000000000000000000000100000000000000000005446562756767020000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180DB8B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804601000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 968 + 1B00FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180DB8B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018001890000000000001300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180460100000000000014000000000000000000000000000000000100000001000000 + + + + 0 + 1280 + 800 + + + + + + 1 + 0 + + 100 + 4 + + + .\uart.c + 11 + 67 + 67 + + + .\board.h + 46 + 1 + 14 + + + .\board.c + 45 + 7 + 12 + + + .\application.c + 55 + 61 + 61 + + + ..\..\libcpu\arm\lpc122x\context_rvds.S + 17 + 85 + 104 + + + ..\..\libcpu\arm\lpc122x\fault_rvds.S + 36 + 12 + 15 + + + + + +
diff --git a/bsp/lpc122x/obj/ExtDll.iex b/bsp/lpc122x/obj/ExtDll.iex new file mode 100644 index 0000000000..b661f48f48 --- /dev/null +++ b/bsp/lpc122x/obj/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/bsp/lpc122x/obj/lpc122x.plg b/bsp/lpc122x/obj/lpc122x.plg new file mode 100644 index 0000000000..32b60f7080 --- /dev/null +++ b/bsp/lpc122x/obj/lpc122x.plg @@ -0,0 +1,9 @@ + + +
+

µVision Build Log

+

Project:

+E:\SVNÏîÄ¿\rt_thread_lpc1227\bsp\lpc122x\lpc122x.uvproj +Project File Date: 12/17/2010 + +

Output:

diff --git a/bsp/lpc122x/obj/lpc122x.sct b/bsp/lpc122x/obj/lpc122x.sct new file mode 100644 index 0000000000..c8ae0debdf --- /dev/null +++ b/bsp/lpc122x/obj/lpc122x.sct @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x00000000 0x00008000 { ; load region size_region + ER_IROM1 0x00000000 0x00008000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x10000000 UNINIT 0x00002000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/bsp/lpc122x/obj/lpc122x.tra b/bsp/lpc122x/obj/lpc122x.tra new file mode 100644 index 0000000000..f38c5b8db6 --- /dev/null +++ b/bsp/lpc122x/obj/lpc122x.tra @@ -0,0 +1,47 @@ +*** Creating Trace Output File '.\obj\lpc122x.tra' Ok. +### Preparing for ADS-LD. +### Creating ADS-LD Command Line +### List of Objects: adding '".\obj\application.o"' +### List of Objects: adding '".\obj\board.o"' +### List of Objects: adding '".\obj\startup.o"' +### List of Objects: adding '".\obj\uart.o"' +### List of Objects: adding '".\obj\tc_comm.o"' +### List of Objects: adding '".\obj\clock.o"' +### List of Objects: adding '".\obj\device.o"' +### List of Objects: adding '".\obj\idle.o"' +### List of Objects: adding '".\obj\ipc.o"' +### List of Objects: adding '".\obj\irq.o"' +### List of Objects: adding '".\obj\kservice.o"' +### List of Objects: adding '".\obj\mem.o"' +### List of Objects: adding '".\obj\mempool.o"' +### List of Objects: adding '".\obj\module.o"' +### List of Objects: adding '".\obj\object.o"' +### List of Objects: adding '".\obj\rtm.o"' +### List of Objects: adding '".\obj\scheduler.o"' +### List of Objects: adding '".\obj\slab.o"' +### List of Objects: adding '".\obj\thread.o"' +### List of Objects: adding '".\obj\timer.o"' +### List of Objects: adding '".\obj\cpu.o"' +### List of Objects: adding '".\obj\fault.o"' +### List of Objects: adding '".\obj\interrupt.o"' +### List of Objects: adding '".\obj\stack.o"' +### List of Objects: adding '".\obj\context_rvds.o"' +### List of Objects: adding '".\obj\fault_rvds.o"' +### List of Objects: adding '".\obj\start_rvds.o"' +### List of Objects: adding '".\obj\system_lpc122x.o"' +### List of Objects: adding '".\obj\core_cm0.o"' +### ADS-LD Command completed: +--cpu Cortex-M0 ".\obj\application.o" ".\obj\board.o" ".\obj\startup.o" ".\obj\uart.o" ".\obj\tc_comm.o" ".\obj\clock.o" ".\obj\device.o" ".\obj\idle.o" ".\obj\ipc.o" ".\obj\irq.o" ".\obj\kservice.o" ".\obj\mem.o" ".\obj\mempool.o" ".\obj\module.o" ".\obj\object.o" ".\obj\rtm.o" ".\obj\scheduler.o" ".\obj\slab.o" ".\obj\thread.o" ".\obj\timer.o" ".\obj\cpu.o" ".\obj\fault.o" ".\obj\interrupt.o" ".\obj\stack.o" ".\obj\context_rvds.o" ".\obj\fault_rvds.o" ".\obj\start_rvds.o" ".\obj\system_lpc122x.o" ".\obj\core_cm0.o" --library_type=microlib --strict --scatter ".\obj\lpc122x.sct" +--autoat --summary_stderr --info summarysizes --map --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers + --list ".\lst\lpc122x.map" -o ".\obj\lpc122x.axf"### Preparing Environment (PrepEnvAds) +### ADS-LD Output File: '.\obj\lpc122x.axf' +### ADS-LD Command File: '.\obj\lpc122x.lnp' +### Checking for dirty Components... +### Creating CmdFile '.\obj\lpc122x.lnp', Handle=0x000002B4 +### Writing '.lnp' file +### ADS-LD Command file '.\obj\lpc122x.lnp' is ready. +### ADS-LD: About to start ADS-LD Thread. +### ADS-LD: executed with 0 errors +### Updating obj list +### LDADS_file() completed. diff --git a/bsp/lpc122x/obj/lpc122x_uart.__i b/bsp/lpc122x/obj/lpc122x_uart.__i new file mode 100644 index 0000000000..df56a49aa2 --- /dev/null +++ b/bsp/lpc122x/obj/lpc122x_uart.__i @@ -0,0 +1 @@ +-c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork -I. -I..\..\include -I..\..\libcpu\arm\lpc122x -I.\peripheral -I "F:\Program Files\KEIL\ARM\INC" -I "F:\Program Files\KEIL\ARM\INC\ARM" -o ".\obj\lpc122x_uart.o" --omf_browse ".\obj\lpc122x_uart.crf" --depend ".\obj\lpc122x_uart.d" "peripheral\lpc122x_uart.c" \ No newline at end of file diff --git a/bsp/lpc122x/obj/lpc122x_uart.crf b/bsp/lpc122x/obj/lpc122x_uart.crf new file mode 100644 index 0000000000000000000000000000000000000000..2706ae5534c3a3f6f327dc4e084639675ad754b8 GIT binary patch literal 51544 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 +#include + +#include "board.h" +#ifdef RT_USING_UART +#include "uart.h" +#endif + +/** + * @addtogroup sam7s + */ + +/*@{*/ +#ifdef __CC_ARM +extern int Image$$RW_IRAM1$$ZI$$Limit; +#endif + +#ifdef __GNUC__ +extern unsigned char __bss_start; +extern unsigned char __bss_end; +#endif + +extern void rt_hw_interrupt_init(void); +extern int rt_application_init(void); +#ifdef RT_USING_DEVICE +extern rt_err_t rt_hw_serial_init(void); +#endif + +/** + * This function will startup RT-Thread RTOS. + */ +void rtthread_startup(void) +{ + /* init kernel object */ + rt_system_object_init(); + + /* init board */ + rt_hw_board_init(); + rt_show_version(); + + /* init tick */ + rt_system_tick_init(); + + /* init timer system */ + rt_system_timer_init(); + +#ifdef RT_USING_HEAP +#ifdef __CC_ARM + rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)0x204000); +#elif __ICCARM__ + rt_system_heap_init(__segment_end("HEAP"), (void*)0x204000); +#else + rt_system_heap_init((void*)&__bss_end, (void*)0x204000); +#endif +#endif + + /* init scheduler system */ + rt_system_scheduler_init(); + +#ifdef RT_USING_HOOK /* if the hook is used */ + /* set idle thread hook */ + rt_thread_idle_sethook(rt_hw_led_flash); +#endif + +#ifdef RT_USING_DEVICE + /* init all device */ + rt_device_init_all(); +#endif + + /* init application */ + rt_application_init(); + +#ifdef RT_USING_FINSH + /* init finsh */ + finsh_system_init(); + finsh_set_device("uart1"); +#endif + + /* init idle thread */ + rt_thread_idle_init(); + + /* start scheduler */ + rt_system_scheduler_start(); + + /* never reach here */ + return ; +} + +int main (void) +{ + rt_uint32_t UNUSED level; + + /* disable interrupt first */ + level = rt_hw_interrupt_disable(); + + /* invoke rtthread_startup */ + rtthread_startup(); + + return 0; +} + +/*@}*/ diff --git a/bsp/lpc122x/tc_comm.c b/bsp/lpc122x/tc_comm.c new file mode 100644 index 0000000000..450efe5de2 --- /dev/null +++ b/bsp/lpc122x/tc_comm.c @@ -0,0 +1,171 @@ +#include "tc_comm.h" + +#ifdef RT_USING_TC +#define TC_PRIORITY 25 +#define TC_STACK_SIZE 0x400 + +static rt_uint8_t _tc_stat; +static struct rt_semaphore _tc_sem; +static struct rt_thread _tc_thread; +static rt_uint8_t _tc_stack[TC_STACK_SIZE]; +static char _tc_prefix[64]; +static const char* _tc_current; +static void (*_tc_cleanup)(void) = RT_NULL; + +static rt_uint32_t _tc_scale = 1; +FINSH_VAR_EXPORT(_tc_scale, finsh_type_int, the testcase timer timeout scale) + +void tc_thread_entry(void* parameter) +{ + struct finsh_syscall* index; + + /* create tc semaphore */ + rt_sem_init(&_tc_sem, "tc", 0, RT_IPC_FLAG_FIFO); + + while (_tc_stat & TC_STAT_RUNNING) + { + for (index = _syscall_table_begin; index < _syscall_table_end; index ++) + { + /* search testcase */ + if (rt_strstr(index->name, _tc_prefix) == index->name) + { + long tick; + + _tc_current = index->name + 4; + rt_kprintf("Run TestCase: %s\n", _tc_current); + _tc_stat = TC_STAT_PASSED | TC_STAT_RUNNING; + tick = index->func(); + if (tick > 0) + { + rt_sem_take(&_tc_sem, tick * _tc_scale); + + if (_tc_cleanup != RT_NULL) + { + /* perform testcase cleanup */ + _tc_cleanup(); + _tc_cleanup = RT_NULL; + } + + if (_tc_stat & TC_STAT_FAILED) + rt_kprintf("TestCase[%s] failed\n", _tc_current); + else + rt_kprintf("TestCase[%s] passed\n", _tc_current); + } + else + { + if (_tc_cleanup != RT_NULL) + { + /* perform testcase cleanup */ + _tc_cleanup(); + _tc_cleanup = RT_NULL; + } + } + } + } + } + + /* detach tc semaphore */ + rt_sem_detach(&_tc_sem); +} + +void tc_stop() +{ + _tc_stat &= ~TC_STAT_RUNNING; + + rt_thread_delay(RT_TICK_PER_SECOND/2); + if (_tc_thread.stat != RT_THREAD_INIT) + { + /* lock scheduler */ + rt_enter_critical(); + + /* detach old tc thread */ + rt_thread_detach(&_tc_thread); + rt_sem_detach(&_tc_sem); + + /* unlock scheduler */ + rt_exit_critical(); + } + rt_thread_delay(RT_TICK_PER_SECOND/2); +} +FINSH_FUNCTION_EXPORT(tc_stop, stop testcase thread); + +void tc_done(rt_uint8_t stat) +{ + _tc_stat |= stat; + _tc_stat &= ~TC_STAT_RUNNING; + + /* release semaphore */ + rt_sem_release(&_tc_sem); +} + +void tc_stat(rt_uint8_t stat) +{ + if (stat & TC_STAT_FAILED) + { + rt_kprintf("TestCases[%s] failed\n", _tc_current); + } + _tc_stat |= stat; +} + +void tc_cleanup(void (*cleanup)()) +{ + _tc_cleanup = cleanup; +} + +void tc_start(const char* tc_prefix) +{ + rt_err_t result; + + /* tesecase prefix is null */ + if (tc_prefix == RT_NULL) + { + rt_kprintf("TestCase Usage: tc_start(prefix)\n\n"); + rt_kprintf("list_tc() can list all testcases.\n"); + return ; + } + + /* init tc thread */ + if (_tc_stat & TC_STAT_RUNNING) + { + /* stop old tc thread */ + tc_stop(); + } + + rt_memset(_tc_prefix, 0, sizeof(_tc_prefix)); + rt_snprintf(_tc_prefix, sizeof(_tc_prefix), + "_tc_%s", tc_prefix); + + result = rt_thread_init(&_tc_thread, "tc", + tc_thread_entry, RT_NULL, + &_tc_stack[0], sizeof(_tc_stack), + TC_PRIORITY - 3, 5); + + /* set tc stat */ + _tc_stat = TC_STAT_RUNNING | TC_STAT_FAILED; + + if (result == RT_EOK) + rt_thread_startup(&_tc_thread); +} +FINSH_FUNCTION_EXPORT(tc_start, start testcase with testcase prefix or name); + +void list_tc() +{ + struct finsh_syscall* index; + + rt_kprintf("TestCases List:\n"); + for (index = _syscall_table_begin; index < _syscall_table_end; index ++) + { + /* search testcase */ + if (rt_strstr(index->name, "_tc_") == index->name) + { +#ifdef FINSH_USING_DESCRIPTION + rt_kprintf("%-16s -- %s\n", index->name + 4, index->desc); +#else + rt_kprintf("%s\n", index->name + 4); +#endif + } + } +} +FINSH_FUNCTION_EXPORT(list_tc, list all testcases); +#endif + diff --git a/bsp/lpc122x/tc_comm.h b/bsp/lpc122x/tc_comm.h new file mode 100644 index 0000000000..9333b96815 --- /dev/null +++ b/bsp/lpc122x/tc_comm.h @@ -0,0 +1,43 @@ +#ifndef __TC_COMM_H__ +#define __TC_COMM_H__ + +/* + * RT-Thread TestCase + * + */ +#include +#ifdef RT_USING_FINSH +#include +#endif + +#if RT_THREAD_PRIORITY_MAX == 8 +#define THREAD_PRIORITY 6 +#elif RT_THREAD_PRIORITY_MAX == 32 +#define THREAD_PRIORITY 25 +#elif RT_THREAD_PRIORITY_MAX == 256 +#define THREAD_PRIORITY 200 +#endif +#define THREAD_STACK_SIZE 512 +#define THREAD_TIMESLICE 5 + +#define TC_STAT_END 0x00 +#define TC_STAT_RUNNING 0x01 +#define TC_STAT_FAILED 0x10 +#define TC_STAT_PASSED 0x00 + +#ifdef RT_USING_TC +void tc_start(const char* tc_prefix); +void tc_stop(void); +void tc_done(rt_uint8_t state); +void tc_stat(rt_uint8_t state); +void tc_cleanup(void (*cleanup)(void)); +#else +#define tc_start(x) +#define tc_stop() +#define tc_done(s) +#define tc_stat(s) +#define tc_cleanup(c) +#endif + +#endif + diff --git a/bsp/lpc122x/uart.c b/bsp/lpc122x/uart.c new file mode 100644 index 0000000000..dbe4c5a215 --- /dev/null +++ b/bsp/lpc122x/uart.c @@ -0,0 +1,295 @@ +/**************************************************************************** + * $Id:: uart.c 3736 2010-06-24 02:07:03Z usb00423 $ + * Project: NXP LPC122x UART example + * + * Description: + * This file contains UART code example which include UART + * initialization, UART interrupt handler, and related APIs for + * UART access. + * + **************************************************************************** + * Software that is described herein is for illustrative purposes only + * which provides customers with programming information regarding the + * products. This software is supplied "AS IS" without any warranties. + * NXP Semiconductors assumes no responsibility or liability for the + * use of the software, conveys no license or title under any patent, + * copyright, or mask work right to the product. NXP Semiconductors + * reserves the right to make changes in the software without + * notification. NXP Semiconductors also make no representation or + * warranty that such application will be suitable for the specified + * use without further testing or modification. +****************************************************************************/ +#include +#include +#include + +#include "uart.h" + +#define IER_RBR 0x01 +#define IER_THRE 0x02 +#define IER_RLS 0x04 + +#define IIR_PEND 0x01 +#define IIR_RLS 0x03 +#define IIR_RDA 0x02 +#define IIR_CTI 0x06 +#define IIR_THRE 0x01 + +#define LSR_RDR 0x01 +#define LSR_OE 0x02 +#define LSR_PE 0x04 +#define LSR_FE 0x08 +#define LSR_BI 0x10 +#define LSR_THRE 0x20 +#define LSR_TEMT 0x40 +#define LSR_RXFE 0x80 + +/** + * @addtogroup LPC11xx + */ + +/*@{*/ +#if defined(RT_USING_UART) && defined(RT_USING_DEVICE) + +#define UART_BAUDRATE 115200 + +struct rt_uart_lpc +{ + struct rt_device parent; + + /* buffer for reception */ + rt_uint8_t read_index, save_index; + rt_uint8_t rx_buffer[RT_UART_RX_BUFFER_SIZE]; +}uart_device; + +void UART0_IRQHandler(void) +{ + rt_ubase_t level, iir; + struct rt_uart_lpc* uart = &uart_device; + + /* read IIR and clear it */ + iir = LPC_UART0->IIR; + + iir >>= 0x01; /* skip pending bit in IIR */ + iir &= 0x07; /* check bit 1~3, interrupt identification */ + + if (iir == IIR_RDA) /* Receive Line Status */ + { + /* If no error on RLS, normal ready, save into the data buffer. */ + /* Note: read RBR will clear the interrupt */ + uart->rx_buffer[uart->save_index] = LPC_UART0->RBR; + level = rt_hw_interrupt_disable(); + uart->save_index ++; + if (uart->save_index >= RT_UART_RX_BUFFER_SIZE) + uart->save_index = 0; + rt_hw_interrupt_enable(level); + /* invoke callback */ + if(uart->parent.rx_indicate != RT_NULL) + { + rt_size_t length; + if (uart->read_index > uart->save_index) + length = RT_UART_RX_BUFFER_SIZE - uart->read_index + uart->save_index; + else + length = uart->save_index - uart->read_index; + + uart->parent.rx_indicate(&uart->parent, length); + } + } + return; +} + +/***************************************************************************** +** Function name: rt_uart_init +** Descriptions: +** parameters: dev +** Returned value: None +*****************************************************************************/ +static rt_err_t rt_uart_init(rt_device_t dev) +{ + rt_uint32_t Fdiv; + rt_uint32_t regVal; + + NVIC_DisableIRQ(UART0_IRQn); + + /* Init UART Hardware */ + LPC_IOCON->PIO0_1 &= ~0x07; /* UART I/O config */ + LPC_IOCON->PIO0_1 |= 0x02; /* UART RXD */ + LPC_IOCON->PIO0_2 &= ~0x07; + LPC_IOCON->PIO0_2 |= 0x02; /* UART TXD */ + + /* Enable UART clock */ + LPC_SYSCON->PRESETCTRL |= (0x1<<2); + LPC_SYSCON->SYSAHBCLKCTRL |= (0x1<<12); + LPC_SYSCON->UART0CLKDIV = 0x1; /* divided by 1 */ + + LPC_UART0->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ + regVal = LPC_SYSCON->UART0CLKDIV; + Fdiv = ((SystemAHBFrequency/regVal)/16)/UART_BAUDRATE ; /*baud rate */ + + LPC_UART0->DLM = Fdiv / 256; + LPC_UART0->DLL = Fdiv % 256; + LPC_UART0->LCR = 0x03; /* DLAB = 0 */ + LPC_UART0->FCR = 0x07; /* Enable and reset TX and RX FIFO. */ + + /* Read to clear the line status. */ + regVal = LPC_UART0->LSR; + + /* Ensure a clean start, no data in either TX or RX FIFO. */ + while ( LPC_UART0->LSR & (LSR_THRE|LSR_TEMT) != (LSR_THRE|LSR_TEMT) ); + while ( LPC_UART0->LSR & LSR_RDR ) + { + regVal = LPC_UART0->RBR; /* Dump data from RX FIFO */ + } + + /* Enable the UART Interrupt */ + NVIC_EnableIRQ(UART0_IRQn); + + LPC_UART0->IER = IER_RBR | IER_THRE | IER_RLS; /* Enable UART interrupt */ + + return RT_EOK; +} + +static rt_err_t rt_uart_open(rt_device_t dev, rt_uint16_t oflag) +{ + RT_ASSERT(dev != RT_NULL); + if(dev->flag & RT_DEVICE_FLAG_INT_RX) + { + /* Enable the UART Interrupt */ + NVIC_EnableIRQ(UART0_IRQn); + } + return RT_EOK; +} + +static rt_err_t rt_uart_close(rt_device_t dev) +{ + RT_ASSERT(dev != RT_NULL); + if (dev->flag & RT_DEVICE_FLAG_INT_RX) + { + /* Disable the UART Interrupt */ + NVIC_DisableIRQ(UART0_IRQn); + } + + return RT_EOK; +} +static rt_size_t rt_uart_read(rt_device_t dev, rt_off_t pos, void* buffer, rt_size_t size) +{ + rt_uint8_t* ptr; + struct rt_uart_lpc *uart = (struct rt_uart_lpc*)dev; + RT_ASSERT(uart != RT_NULL); + + /* point to buffer */ + ptr = (rt_uint8_t*) buffer; + if (dev->flag & RT_DEVICE_FLAG_INT_RX) + { + while (size) + { + /* interrupt receive */ + rt_base_t level; + + /* disable interrupt */ + level = rt_hw_interrupt_disable(); + if (uart->read_index != uart->save_index) + { + *ptr = uart->rx_buffer[uart->read_index]; + + uart->read_index ++; + if (uart->read_index >= RT_UART_RX_BUFFER_SIZE) + uart->read_index = 0; + } + else + { + /* no data in rx buffer */ + + /* enable interrupt */ + rt_hw_interrupt_enable(level); + break; + } + + /* enable interrupt */ + rt_hw_interrupt_enable(level); + + ptr ++; + size --; + } + + return (rt_uint32_t)ptr - (rt_uint32_t)buffer; + } + + return 0; +} + +static rt_size_t rt_uart_write(rt_device_t dev, rt_off_t pos, const void* buffer, rt_size_t size) +{ + char *ptr; + ptr = (char*)buffer; + + if (dev->flag & RT_DEVICE_FLAG_STREAM) + { + /* stream mode */ + while (size) + { + if (*ptr == '\n') + { + /* THRE status, contain valid data */ + while ( !(LPC_UART0->LSR & LSR_THRE) ); + /* write data */ + LPC_UART0->THR = '\r'; + } + + /* THRE status, contain valid data */ + while ( !(LPC_UART0->LSR & LSR_THRE) ); + /* write data */ + LPC_UART0->THR = *ptr; + + ptr ++; + size --; + } + } + else + { + while ( size != 0 ) + { + /* THRE status, contain valid data */ + while ( !(LPC_UART0->LSR & LSR_THRE) ); + + /* write data */ + LPC_UART0->THR = *ptr; + + ptr++; + size--; + } + } + + return (rt_size_t) ptr - (rt_size_t) buffer; +} + +void rt_hw_uart_init(void) +{ + struct rt_uart_lpc* uart; + + /* get uart device */ + uart = &uart_device; + + /* device initialization */ + uart->parent.type = RT_Device_Class_Char; + rt_memset(uart->rx_buffer, 0, sizeof(uart->rx_buffer)); + uart->read_index = uart->save_index = 0; + + /* device interface */ + uart->parent.init = rt_uart_init; + uart->parent.open = rt_uart_open; + uart->parent.close = rt_uart_close; + uart->parent.read = rt_uart_read; + uart->parent.write = rt_uart_write; + uart->parent.control = RT_NULL; + uart->parent.user_data = RT_NULL; + + rt_device_register(&uart->parent, + "uart", RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STREAM | RT_DEVICE_FLAG_INT_RX); +} + +#endif + +/****************************************************************************** +** End Of File +******************************************************************************/ diff --git a/bsp/lpc122x/uart.h b/bsp/lpc122x/uart.h new file mode 100644 index 0000000000..7b4663aa3d --- /dev/null +++ b/bsp/lpc122x/uart.h @@ -0,0 +1,6 @@ +#ifndef __UART_H__ +#define __UART_H__ + +void rt_hw_uart_init(void); + +#endif diff --git a/libcpu/arm/lpc122x/CMSIS/LPC122x.h b/libcpu/arm/lpc122x/CMSIS/LPC122x.h new file mode 100644 index 0000000000..f09dc379e6 --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/LPC122x.h @@ -0,0 +1,668 @@ +/**************************************************************************** + * $Id:: LPC122x.h 5637 2010-11-18 00:02:05Z nxp28433 $ + * Project: NXP LPC122x software example + * + * Description: + * CMSIS Cortex-M0 Core Peripheral Access Layer Header File for + * NXP LPC122x Device Series + * + **************************************************************************** + * Software that is described herein is for illustrative purposes only + * which provides customers with programming information regarding the + * products. This software is supplied "AS IS" without any warranties. + * NXP Semiconductors assumes no responsibility or liability for the + * use of the software, conveys no license or title under any patent, + * copyright, or mask work right to the product. NXP Semiconductors + * reserves the right to make changes in the software without + * notification. NXP Semiconductors also make no representation or + * warranty that such application will be suitable for the specified + * use without further testing or modification. +****************************************************************************/ +#ifndef __LPC122x_H__ +#define __LPC122x_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup LPC122x_Definitions LPC122x Definitions + This file defines all structures and symbols for LPC122x: + - Registers and bitfields + - peripheral base address + - peripheral ID + - PIO definitions + @{ +*/ + + +/******************************************************************************/ +/* Processor and Core Peripherals */ +/******************************************************************************/ +/** @addtogroup LPC122x_CMSIS LPC122x CMSIS Definitions + Configuration of the Cortex-M0 Processor and Core Peripherals + @{ +*/ + +/* + * ========================================================================== + * ---------- Interrupt Number Definition ----------------------------------- + * ========================================================================== + */ + +typedef enum IRQn +{ +/****** Cortex-M0 Processor Exceptions Numbers ***************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M0 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M0 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M0 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M0 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */ + +/****** LPC122x Specific Interrupt Numbers *******************************************************/ + WAKEUP0_IRQn = 0, /*!< The I/O pins can be used as wakeup source. */ + WAKEUP1_IRQn = 1, + WAKEUP2_IRQn = 2, + WAKEUP3_IRQn = 3, + WAKEUP4_IRQn = 4, + WAKEUP5_IRQn = 5, + WAKEUP6_IRQn = 6, + WAKEUP7_IRQn = 7, + WAKEUP8_IRQn = 8, + WAKEUP9_IRQn = 9, + WAKEUP10_IRQn = 10, + WAKEUP11_IRQn = 11, /*!< 0 through 11 are WAKEUP interrupts */ + I2C_IRQn = 12, /*!< I2C Interrupt */ + TIMER_16_0_IRQn = 13, /*!< 16-bit Timer0 Interrupt */ + TIMER_16_1_IRQn = 14, /*!< 16-bit Timer1 Interrupt */ + TIMER_32_0_IRQn = 15, /*!< 32-bit Timer0 Interrupt */ + TIMER_32_1_IRQn = 16, /*!< 32-bit Timer1 Interrupt */ + SSP_IRQn = 17, /*!< SSP Interrupt */ + UART0_IRQn = 18, /*!< UART0 Interrupt */ + UART1_IRQn = 19, /*!< UART1 Interrupt */ + CMP_IRQn = 20, /*!< Comparator Interrupt */ + ADC_IRQn = 21, /*!< A/D Converter Interrupt */ + WDT_IRQn = 22, /*!< Watchdog timer Interrupt */ + BOD_IRQn = 23, /*!< Brown Out Detect(BOD) Interrupt */ + FLASH_IRQn = 24, /*!< Flash Interrupt */ + EINT0_IRQn = 25, /*!< External Interrupt 0 Interrupt */ + EINT1_IRQn = 26, /*!< External Interrupt 1 Interrupt */ + EINT2_IRQn = 27, /*!< External Interrupt 2 Interrupt */ + PMU_IRQn = 28, /*!< PMU Interrupt */ + DMA_IRQn = 29, /*!< DMA Interrupt */ + RTC_IRQn = 30, /*!< RTC Interrupt */ + EDM_IRQn = 31, /*!< EDT Interrupt */ +} IRQn_Type; + + +/* + * ========================================================================== + * ----------- Processor and Core Peripheral Section ------------------------ + * ========================================================================== + */ + +/* Configuration of the Cortex-M3 Processor and Core Peripherals */ +#define __MPU_PRESENT 1 /*!< MPU present or not */ +#define __NVIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ + +/*@}*/ /* end of group LPC122x_CMSIS */ + + +#include "core_cm0.h" /* Cortex-M0 processor and core peripherals */ +#include "system_LPC122x.h" /* System Header */ + + +/******************************************************************************/ +/* Device Specific Peripheral Registers structures */ +/******************************************************************************/ + +#if defined ( __CC_ARM ) +#pragma anon_unions +#endif + +/*------------- System Control (SYSCON) --------------------------------------*/ +/** @addtogroup LPC122x_SYSCON LPC122x System Control Block + @{ +*/ +typedef struct +{ + __IO uint32_t SYSMEMREMAP; /* Sys mem. Remap, Offset 0x0 */ + __IO uint32_t PRESETCTRL; + __IO uint32_t SYSPLLCTRL; /* Sys PLL control */ + __IO uint32_t SYSPLLSTAT; + uint32_t RESERVED0[4]; + + __IO uint32_t SYSOSCCTRL; /* Offset 0x20 */ + __IO uint32_t WDTOSCCTRL; + __IO uint32_t IRCCTRL; + uint32_t RESERVED0b; + __IO uint32_t SYSRESSTAT; /* Offset 0x30 */ + uint32_t RESERVED1[3]; + __IO uint32_t SYSPLLCLKSEL; /* Offset 0x40 */ + __IO uint32_t SYSPLLCLKUEN; + uint32_t RESERVED2[10]; + + __IO uint32_t MAINCLKSEL; /* Offset 0x70 */ + __IO uint32_t MAINCLKUEN; + __IO uint32_t SYSAHBCLKDIV; + uint32_t RESERVED3[1]; + + __IO uint32_t SYSAHBCLKCTRL; /* Offset 0x80 */ + uint32_t RESERVED4[4]; + __IO uint32_t SSPCLKDIV; + __IO uint32_t UART0CLKDIV; + __IO uint32_t UART1CLKDIV; + __IO uint32_t RTCCLKDIV; + uint32_t RESERVED5[2]; + __IO uint32_t TRACECLKDIV; + + __IO uint32_t SYSTICKCLKDIV; /* Offset 0xB0 */ + __IO uint32_t I2CCLKDIV; + uint32_t RESERVED6[10]; + + __IO uint32_t CLKOUTCLKSEL; /* Offset 0xE0 */ + __IO uint32_t CLKOUTUEN; + __IO uint32_t CLKOUTDIV; + uint32_t RESERVED7[5]; + + __IO uint32_t PIOPORCAP0; /* Offset 0x100 */ + __IO uint32_t PIOPORCAP1; + uint32_t RESERVED8[11]; + __IO uint32_t FILTERCLKCFG6; + __IO uint32_t FILTERCLKCFG5; + __IO uint32_t FILTERCLKCFG4; + __IO uint32_t FILTERCLKCFG3; /* Offset 0x140 */ + __IO uint32_t FILTERCLKCFG2; + __IO uint32_t FILTERCLKCFG1; + __IO uint32_t FILTERCLKCFG0; + __IO uint32_t BODCTRL; /* Offset 0x150 */ + uint32_t RESERVED9[1]; + __IO uint32_t SYSTCKCAL; + uint32_t RESERVED10[5]; + __IO uint32_t INT_IRQ_LATENCY; /* Offset 0x170 */ + __IO uint32_t INTNMI; + uint32_t RESERVED11[34]; + + __IO uint32_t STARTAPRP0; /* Offset 0x200 */ + __IO uint32_t STARTERP0; + __IO uint32_t STARTRSRP0CLR; + __IO uint32_t STARTSRP0; + __IO uint32_t STARTAPRP1; + __IO uint32_t STARTERP1; + __IO uint32_t STARTRSRP1CLR; + __IO uint32_t STARTSRP1; + uint32_t RESERVED12[4]; + + __IO uint32_t PDSLEEPCFG; /* Offset 0x230 */ + __IO uint32_t PDAWAKECFG; + __IO uint32_t PDRUNCFG; + uint32_t RESERVED13; + __IO uint32_t EZHBOOT; + __IO uint32_t EZHCTRL; + __IO uint32_t EZHMUXSEL; + __IO uint32_t EZHARM2EZH; + __IO uint32_t EZHEZH2ARM; + __IO uint32_t EZHEZHPC; + __IO uint32_t EZHEZHSP; + __IO uint32_t EZHINTERRUPT; + uint32_t RESERVED14[101]; + + __I uint32_t DEVICE_ID; +} LPC_SYSCON_TypeDef; + + +/*------------- Pin Connect Block (IOCON) --------------------------------*/ +/** @addtogroup LPC122x_IOCON LPC122x I/O Configuration Block + @{ +*/ +typedef struct +{ + __IO uint32_t PIO2_28; /* 0x00 */ + __IO uint32_t PIO2_29; + __IO uint32_t PIO0_19; + __IO uint32_t PIO0_20; + __IO uint32_t PIO0_21; + __IO uint32_t PIO0_22; + __IO uint32_t PIO0_23; + __IO uint32_t PIO0_24; + + __IO uint32_t SWDIO_PIO0_25; /* 0x20 */ + __IO uint32_t SWCLK_PIO0_26; + __IO uint32_t PIO0_27; + __IO uint32_t PIO2_12; + __IO uint32_t PIO2_13; + __IO uint32_t PIO2_14; + __IO uint32_t PIO2_15; + __IO uint32_t PIO0_28; + + __IO uint32_t PIO0_29; /* 0x40 */ + __IO uint32_t PIO0_0; + __IO uint32_t PIO0_1; + __IO uint32_t PIO0_2; + uint32_t RESERVED0; + __IO uint32_t PIO0_3; + __IO uint32_t PIO0_4; + __IO uint32_t PIO0_5; + + __IO uint32_t PIO0_6; /* 0x60 */ + __IO uint32_t PIO0_7; + __IO uint32_t PIO0_8; + __IO uint32_t PIO0_9; + __IO uint32_t PIO2_0; + __IO uint32_t PIO2_1; + __IO uint32_t PIO2_2; + __IO uint32_t PIO2_3; + + __IO uint32_t PIO2_4; /* 0x80 */ + __IO uint32_t PIO2_5; + __IO uint32_t PIO2_6; + __IO uint32_t PIO2_7; + __IO uint32_t PIO0_10; + __IO uint32_t PIO0_11; + __IO uint32_t PIO0_12; + __IO uint32_t RESET_P0_13; + + __IO uint32_t PIO0_14; /* 0xA0 */ + __IO uint32_t PIO0_15; + __IO uint32_t PIO0_16; + __IO uint32_t PIO0_17; + __IO uint32_t PIO0_18; + __IO uint32_t PIO0_30; + __IO uint32_t PIO0_31; + __IO uint32_t PIO1_0; + + __IO uint32_t PIO1_1; /* 0xC0 */ + __IO uint32_t PIO1_2; + __IO uint32_t PIO1_3; + __IO uint32_t PIO1_4; + __IO uint32_t PIO1_5; + __IO uint32_t PIO1_6; + uint32_t RESERVED1[2]; + + __IO uint32_t PIO2_8; /* 0xE0 */ + __IO uint32_t PIO2_9; + __IO uint32_t PIO2_10; + __IO uint32_t PIO2_11; +#if 0 + /* LOC registers are no longer needed on LPC122x V1. */ + __IO uint32_t EZH0_LOC; + __IO uint32_t EZH1_LOC; + __IO uint32_t CT32B0_0_LOC; + __IO uint32_t EZH2_LOC; + + __IO uint32_t CT32B0_1_LOC; /* 0x100 */ + __IO uint32_t EZH3_LOC; + __IO uint32_t CT32B0_2_LOC; + __IO uint32_t EZH4_LOC; + __IO uint32_t CT32B0_3_LOC; + __IO uint32_t EZH5_LOC; + __IO uint32_t EZH6_LOC; + __IO uint32_t CT32B1_0_LOC; + + __IO uint32_t EZH7_LOC; /* 0x120 */ + __IO uint32_t CT32B1_1_LOC; + __IO uint32_t EZH8_LOC; + __IO uint32_t CT32B1_2_LOC; + __IO uint32_t EZH9_LOC; + __IO uint32_t CT32B1_3_LOC; + __IO uint32_t EZH10_LOC; + __IO uint32_t EZH11_LOC; + + __IO uint32_t CT16B0_0_LOC; /* 0x140 */ + __IO uint32_t EZH12_LOC; + __IO uint32_t CT16B0_1_LOC; + __IO uint32_t EZH13_LOC; + __IO uint32_t EZH14_LOC; + __IO uint32_t EZH15_LOC; + __IO uint32_t CT16B1_0_LOC; + __IO uint32_t CT16B1_1_LOC; +#endif +} LPC_IOCON_TypeDef; + +/*------------- microDMA (DMA) --------------------------*/ +/** @addtogroup LPC122x_DMA LPC122x microDMA + @{ +*/ +typedef struct +{ + __I uint32_t STATUS; + __O uint32_t CFG; + __IO uint32_t CTRL_BASE_PTR; + __I uint32_t ALT_CTRL_BASE_PTR; + __I uint32_t WAITONREQ_STATUS; + __O uint32_t CHNL_SW_REQUEST; + __IO uint32_t CHNL_USEBURST_SET; + __O uint32_t CHNL_USEBURST_CLR; + __IO uint32_t CHNL_REQ_MASK_SET; + __O uint32_t CHNL_REQ_MASK_CLR; + __IO uint32_t CHNL_ENABLE_SET; + __O uint32_t CHNL_ENABLE_CLR; + __IO uint32_t CHNL_PRI_ALT_SET; + __O uint32_t CHNL_PRI_ALT_CLR; + __IO uint32_t CHNL_PRIORITY_SET; + __O uint32_t CHNL_PRIORITY_CLR; + uint32_t RESERVE0[3]; + __IO uint32_t ERR_CLR; /* 0x4C */ + uint32_t RESERVE1[12]; + __IO uint32_t CHNL_IRQ_STATUS; /* 0x80 */ + __IO uint32_t IRQ_ERR_ENABLE; + __IO uint32_t CHNL_IRQ_ENABLE; +} LPC_DMA_TypeDef; +/*@}*/ /* end of group LPC122x_DMA */ + +/*------------- Comparator (CMP) --------------------------------*/ +/** @addtogroup LPC122x_CMD LPC122x Comparator + @{ +*/ +typedef struct +{ + __IO uint32_t CMP; + __IO uint32_t VLAD; +} LPC_COMP_TypeDef; +/*@}*/ /* end of group LPC122x_CMD */ + +/*------------- Real Timer Clock (RTC) --------------------------*/ +/** @addtogroup LPC122x_RTC LPC122x Real-time Clock + @{ +*/ +typedef struct +{ + __I uint32_t DR; + __IO uint32_t MR; + __IO uint32_t LR; + __IO uint32_t CR; + __IO uint32_t IMSC; + __I uint32_t IRS; + __I uint32_t MIS; + __IO uint32_t ICR; +} LPC_RTC_TypeDef; +/*@}*/ /* end of group LPC122x_RTC */ + +/*------------- Power Management Unit (PMU) --------------------------*/ +/** @addtogroup LPC122x_PMU LPC122x Power Management Unit + @{ +*/ +typedef struct +{ + __IO uint32_t PCON; + __IO uint32_t GPREG0; + __IO uint32_t GPREG1; + __IO uint32_t GPREG2; + __IO uint32_t GPREG3; + __IO uint32_t GPREG4; +} LPC_PMU_TypeDef; +/*@}*/ /* end of group LPC122x_PMU */ + +/*------------- General Purpose Input/Output (GPIO) --------------------------*/ +/** @addtogroup LPC122x_GPIO LPC122x General Purpose Input/Output + @{ +*/ +typedef struct +{ + __IO uint32_t MASK; + __I uint32_t PIN; + __IO uint32_t OUT; + __O uint32_t SET; + __O uint32_t CLR; + __O uint32_t NOT; + uint32_t RESERVE[2]; + __IO uint32_t DIR; + __IO uint32_t IS; + __IO uint32_t IBE; + __IO uint32_t IEV; + __IO uint32_t IE; + __I uint32_t RIS; + __I uint32_t MIS; + __O uint32_t IC; +} LPC_GPIO_TypeDef; +/*@}*/ /* end of group LPC122x_GPIO */ + + +/*------------- Timer (TMR) --------------------------------------------------*/ +/** @addtogroup LPC122x_TMR LPC122x 16/32-bit Counter/Timer + @{ +*/ +typedef struct +{ + __IO uint32_t IR; + __IO uint32_t TCR; + __IO uint32_t TC; + __IO uint32_t PR; + __IO uint32_t PC; + __IO uint32_t MCR; + __IO uint32_t MR0; + __IO uint32_t MR1; + __IO uint32_t MR2; + __IO uint32_t MR3; + __IO uint32_t CCR; + __I uint32_t CR0; + __I uint32_t CR1; + __I uint32_t CR2; + __I uint32_t CR3; + __IO uint32_t EMR; + uint32_t RESERVED2[12]; + __IO uint32_t CTCR; + __IO uint32_t PWMC; +} LPC_TMR_TypeDef; +/*@}*/ /* end of group LPC122x_TMR */ + +/*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ +/** @addtogroup LPC122x_UART LPC122x Universal Asynchronous Receiver/Transmitter + @{ +*/ +typedef struct +{ + union { + __I uint32_t RBR; + __O uint32_t THR; + __IO uint32_t DLL; + }; + union { + __IO uint32_t DLM; + __IO uint32_t IER; + }; + union { + __I uint32_t IIR; + __O uint32_t FCR; + }; + __IO uint32_t LCR; + __IO uint32_t MCR; + __I uint32_t LSR; + __I uint32_t MSR; + __IO uint32_t SCR; + __IO uint32_t ACR; + __IO uint32_t ICR; + __IO uint32_t FDR; + uint32_t RESERVED0; + __IO uint32_t TER; + uint32_t RESERVED1[6]; + __IO uint32_t RS485CTRL; + __IO uint32_t ADRMATCH; + __IO uint32_t RS485DLY; + __I uint32_t FIFOLVL; +} LPC_UART_TypeDef; +/*@}*/ /* end of group LPC122x_UART */ + +/*------------- Synchronous Serial Communication (SSP) -----------------------*/ +/** @addtogroup LPC122x_SSP LPC122x Synchronous Serial Port + @{ +*/ +typedef struct +{ + __IO uint32_t CR0; + __IO uint32_t CR1; + __IO uint32_t DR; + __I uint32_t SR; + __IO uint32_t CPSR; + __IO uint32_t IMSC; + __IO uint32_t RIS; + __IO uint32_t MIS; + __IO uint32_t ICR; +} LPC_SSP_TypeDef; +/*@}*/ /* end of group LPC122x_SSP */ + +/*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ +/** @addtogroup LPC122x_I2C LPC122x I2C-Bus Interface + @{ +*/ +typedef struct +{ + __IO uint32_t CONSET; + __I uint32_t STAT; + __IO uint32_t DAT; + __IO uint32_t ADR0; + __IO uint32_t SCLH; + __IO uint32_t SCLL; + __O uint32_t CONCLR; + __IO uint32_t MMCTRL; + __IO uint32_t ADR1; + __IO uint32_t ADR2; + __IO uint32_t ADR3; + __I uint32_t DATA_BUFFER; + __IO uint32_t MASK0; + __IO uint32_t MASK1; + __IO uint32_t MASK2; + __IO uint32_t MASK3; +} LPC_I2C_TypeDef; +/*@}*/ /* end of group LPC122x_I2C */ + +/*------------- Watchdog Timer (WDT) -----------------------------------------*/ +/** @addtogroup LPC122x_WDT LPC122x WatchDog Timer + @{ +*/ +typedef struct +{ + __IO uint32_t MOD; + __IO uint32_t TC; + __O uint32_t FEED; + __I uint32_t TV; + __IO uint32_t CLKSEL; + __IO uint32_t WARNINT; + __IO uint32_t WINDOW; +} LPC_WDT_TypeDef; +/*@}*/ /* end of group LPC122x_WDT */ + +/*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ +/** @addtogroup LPC122x_ADC LPC122x Analog-to-Digital Converter + @{ +*/ +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t GDR; + uint32_t RESERVED0; + __IO uint32_t INTEN; + __IO uint32_t DR[8]; + __I uint32_t STAT; +} LPC_ADC_TypeDef; +/*@}*/ /* end of group LPC122x_ADC */ + +/*------------- Flash Memory Controller (FMC) -----------------------------------*/ +typedef struct +{ + __IO uint32_t TBCFG; /* Time Base Config register */ + __IO uint32_t FINSTR; /* Flash Instruction register */ + __I uint32_t INSSTA; /* Raw Instruction Status register */ + __IO uint32_t INSSCLR; /* Raw Instruction Clear register */ + __IO uint32_t INT_EN; /* Interrupt Enable register */ + __I uint32_t INT_STA; /* Interrupt Status register */ + uint32_t RESERVED0; + __IO uint32_t ADDRLAT; /* Address Latch registers */ + __IO uint32_t DATALAT; /* Data Latch register */ + __IO uint32_t FIMC; /* Flash Manaul Operation register */ + __IO uint32_t RDCFG; /* Read Configuration register */ + __IO uint32_t EPPCFG; /* Flash Programming Permission Cofig register */ + __IO uint32_t EPPAA; /* Flash Programming Permission Address A register */ + __IO uint32_t EPPAB; /* Flash Programming Permission Address B register */ +} LPC_FMC_TypeDef; + +/*------------- CRC Engine (CRC) -----------------------------------------*/ +typedef struct +{ + __IO uint32_t MODE; + __IO uint32_t SEED; + union { + __I uint32_t SUM; + __O uint32_t WR_DATA_DWORD; + __O uint16_t WR_DATA_WORD; + uint16_t RESERVED_WORD; + __O uint8_t WR_DATA_BYTE; + uint8_t RESERVED_BYTE[3]; + }; + __I uint32_t ID; +} LPC_CRC_TypeDef; + +#if defined ( __CC_ARM ) +#pragma no_anon_unions +#endif + +/******************************************************************************/ +/* Peripheral memory map */ +/******************************************************************************/ +/* Base addresses */ +#define LPC_FLASH_BASE (0x00000000) +#define LPC_RAM_BASE (0x10000000) +#define LPC_APB0_BASE (0x40000000) +#define LPC_AHB_BASE (0x50000000) + +/* APB0 peripherals */ +#define LPC_I2C_BASE (LPC_APB0_BASE + 0x00000) +#define LPC_WDT_BASE (LPC_APB0_BASE + 0x04000) +#define LPC_UART0_BASE (LPC_APB0_BASE + 0x08000) +#define LPC_UART1_BASE (LPC_APB0_BASE + 0x0C000) +#define LPC_CT16B0_BASE (LPC_APB0_BASE + 0x10000) +#define LPC_CT16B1_BASE (LPC_APB0_BASE + 0x14000) +#define LPC_CT32B0_BASE (LPC_APB0_BASE + 0x18000) +#define LPC_CT32B1_BASE (LPC_APB0_BASE + 0x1C000) +#define LPC_ADC_BASE (LPC_APB0_BASE + 0x20000) + +#define LPC_PMU_BASE (LPC_APB0_BASE + 0x38000) +#define LPC_SSP_BASE (LPC_APB0_BASE + 0x40000) +#define LPC_IOCON_BASE (LPC_APB0_BASE + 0x44000) +#define LPC_SYSCON_BASE (LPC_APB0_BASE + 0x48000) +#define LPC_DMA_BASE (LPC_APB0_BASE + 0x4C000) +#define LPC_RTC_BASE (LPC_APB0_BASE + 0x50000) +#define LPC_COMP_BASE (LPC_APB0_BASE + 0x54000) + +/* AHB peripherals */ +#define LPC_GPIO_BASE (LPC_AHB_BASE + 0x00000) +#define LPC_GPIO0_BASE (LPC_AHB_BASE + 0x00000) +#define LPC_GPIO1_BASE (LPC_AHB_BASE + 0x10000) +#define LPC_GPIO2_BASE (LPC_AHB_BASE + 0x20000) +#define LPC_FMC_BASE (LPC_AHB_BASE + 0x60000) +#define LPC_CRC_BASE (LPC_AHB_BASE + 0x70000) + +/******************************************************************************/ +/* Peripheral declaration */ +/******************************************************************************/ +#define LPC_I2C ((LPC_I2C_TypeDef *) LPC_I2C_BASE ) +#define LPC_WDT ((LPC_WDT_TypeDef *) LPC_WDT_BASE ) +#define LPC_UART0 ((LPC_UART_TypeDef *) LPC_UART0_BASE ) +#define LPC_UART1 ((LPC_UART_TypeDef *) LPC_UART1_BASE ) +#define LPC_TMR16B0 ((LPC_TMR_TypeDef *) LPC_CT16B0_BASE) +#define LPC_TMR16B1 ((LPC_TMR_TypeDef *) LPC_CT16B1_BASE) +#define LPC_TMR32B0 ((LPC_TMR_TypeDef *) LPC_CT32B0_BASE) +#define LPC_TMR32B1 ((LPC_TMR_TypeDef *) LPC_CT32B1_BASE) +#define LPC_ADC ((LPC_ADC_TypeDef *) LPC_ADC_BASE ) +#define LPC_PMU ((LPC_PMU_TypeDef *) LPC_PMU_BASE ) +#define LPC_SSP ((LPC_SSP_TypeDef *) LPC_SSP_BASE ) +#define LPC_IOCON ((LPC_IOCON_TypeDef *) LPC_IOCON_BASE ) +#define LPC_SYSCON ((LPC_SYSCON_TypeDef *) LPC_SYSCON_BASE) +#define LPC_DMA ((LPC_DMA_TypeDef *) LPC_DMA_BASE ) +#define LPC_RTC ((LPC_RTC_TypeDef *) LPC_RTC_BASE ) +#define LPC_COMP ((LPC_COMP_TypeDef *) LPC_COMP_BASE ) + +#define LPC_GPIO0 ((LPC_GPIO_TypeDef *) LPC_GPIO0_BASE ) +#define LPC_GPIO1 ((LPC_GPIO_TypeDef *) LPC_GPIO1_BASE ) +#define LPC_GPIO2 ((LPC_GPIO_TypeDef *) LPC_GPIO2_BASE ) +#define LPC_FMC ((LPC_FMC_TypeDef *) LPC_FMC_BASE ) +#define LPC_CRC ((LPC_CRC_TypeDef *) LPC_CRC_BASE ) + +#ifdef __cplusplus + } +#endif + +#endif // __LPC122x_H__ diff --git a/libcpu/arm/lpc122x/CMSIS/core_cm0.c b/libcpu/arm/lpc122x/CMSIS/core_cm0.c new file mode 100644 index 0000000000..c08a7b6c6e --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/core_cm0.c @@ -0,0 +1,455 @@ +/**************************************************************************//** + * @file core_cm0.c + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Source File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include + +/* define compiler specific symbols */ +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +__ASM uint32_t __get_PSP(void) +{ + mrs r0, psp + bx lr +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +__ASM void __set_PSP(uint32_t topOfProcStack) +{ + msr psp, r0 + bx lr +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +__ASM uint32_t __get_MSP(void) +{ + mrs r0, msp + bx lr +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +__ASM void __set_MSP(uint32_t mainStackPointer) +{ + msr msp, r0 + bx lr +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +__ASM uint32_t __REV16(uint16_t value) +{ + rev16 r0, r0 + bx lr +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +__ASM int32_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} + + +#if (__ARMCC_VERSION < 400000) + + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +__ASM uint32_t __get_PRIMASK(void) +{ + mrs r0, primask + bx lr +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +__ASM void __set_PRIMASK(uint32_t priMask) +{ + msr primask, r0 + bx lr +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +__ASM uint32_t __get_CONTROL(void) +{ + mrs r0, control + bx lr +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +__ASM void __set_CONTROL(uint32_t control) +{ + msr control, r0 + bx lr +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ +#pragma diag_suppress=Pe940 + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) +{ + __ASM("mrs r0, psp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM("msr psp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) +{ + __ASM("mrs r0, msp"); + __ASM("bx lr"); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM("msr msp, r0"); + __ASM("bx lr"); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + __ASM("rev16 r0, r0"); + __ASM("bx lr"); +} + + +#pragma diag_default=Pe940 + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +uint32_t __get_PSP(void) __attribute__( ( naked ) ); +uint32_t __get_PSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, psp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +void __set_PSP(uint32_t topOfProcStack) __attribute__( ( naked ) ); +void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0\n\t" + "BX lr \n\t" : : "r" (topOfProcStack) ); +} + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +uint32_t __get_MSP(void) __attribute__( ( naked ) ); +uint32_t __get_MSP(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, msp\n\t" + "MOV r0, %0 \n\t" + "BX lr \n\t" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +void __set_MSP(uint32_t topOfMainStack) __attribute__( ( naked ) ); +void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0\n\t" + "BX lr \n\t" : : "r" (topOfMainStack) ); +} + + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +uint32_t __get_PRIMASK(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +void __set_PRIMASK(uint32_t priMask) +{ + __ASM volatile ("MSR primask, %0" : : "r" (priMask) ); +} + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +uint32_t __get_CONTROL(void) +{ + uint32_t result=0; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) ); +} + + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +uint32_t __REV(uint32_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +uint32_t __REV16(uint16_t value) +{ + uint32_t result=0; + + __ASM volatile ("rev16 %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +int32_t __REVSH(int16_t value) +{ + uint32_t result=0; + + __ASM volatile ("revsh %0, %1" : "=r" (result) : "r" (value) ); + return(result); +} + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif diff --git a/libcpu/arm/lpc122x/CMSIS/core_cm0.h b/libcpu/arm/lpc122x/CMSIS/core_cm0.h new file mode 100644 index 0000000000..f148b8fad5 --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/core_cm0.h @@ -0,0 +1,960 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V1.30 + * @date 30. October 2009 + * + * @note + * Copyright (C) 2009 ARM Limited. All rights reserved. + * + * @par + * ARM Limited (ARM) is supplying this software for use with Cortex-M + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * @par + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#ifndef __CM0_CORE_H__ +#define __CM0_CORE_H__ + +/** @addtogroup CMSIS_CM0_core_LintCinfiguration CMSIS CM0 Core Lint Configuration + * + * List of Lint messages which will be suppressed and not shown: + * - not yet checked + * . + * Note: To re-enable a Message, insert a space before 'lint' * + * + */ + + +/** @addtogroup CMSIS_CM0_core_definitions CM0 Core Definitions + This file defines all structures and symbols for CMSIS core: + - CMSIS version number + - Cortex-M core registers and bitfields + - Cortex-M core peripheral base address + @{ + */ + +#ifdef __cplusplus + extern "C" { +#endif + +#define __CM0_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (0x30) /*!< [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16) | __CM0_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */ + +#define __CORTEX_M (0x00) /*!< Cortex core */ + +#include /* Include standard types */ + +#if defined (__ICCARM__) + #include /* IAR Intrinsics */ +#endif + + +#ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2 /*!< standard definition for NVIC Priority Bits */ +#endif + + + + +/** + * IO definitions + * + * define access restrictions to peripheral registers + */ + +#ifdef __cplusplus + #define __I volatile /*!< defines 'read only' permissions */ +#else + #define __I volatile const /*!< defines 'read only' permissions */ +#endif +#define __O volatile /*!< defines 'write only' permissions */ +#define __IO volatile /*!< defines 'read / write' permissions */ + + + +/******************************************************************************* + * Register Abstraction + ******************************************************************************/ +/** @addtogroup CMSIS_CM0_core_register CMSIS CM0 Core Register + @{ +*/ + + +/** @addtogroup CMSIS_CM0_NVIC CMSIS CM0 NVIC + memory mapped structure for Nested Vectored Interrupt Controller (NVIC) + @{ + */ +typedef struct +{ + __IO uint32_t ISER[1]; /*!< (Offset: 0x000) Interrupt Set Enable Register */ + uint32_t RESERVED0[31]; + __IO uint32_t ICER[1]; /*!< (Offset: 0x080) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31]; + __IO uint32_t ISPR[1]; /*!< (Offset: 0x100) Interrupt Set Pending Register */ + uint32_t RESERVED2[31]; + __IO uint32_t ICPR[1]; /*!< (Offset: 0x180) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31]; + uint32_t RESERVED4[64]; + __IO uint32_t IPR[8]; /*!< (Offset: 0x3EC) Interrupt Priority Register */ +} NVIC_Type; +/*@}*/ /* end of group CMSIS_CM0_NVIC */ + + +/** @addtogroup CMSIS_CM0_SCB CMSIS CM0 SCB + memory mapped structure for System Control Block (SCB) + @{ + */ +typedef struct +{ + __I uint32_t CPUID; /*!< Offset: 0x00 CPU ID Base Register */ + __IO uint32_t ICSR; /*!< Offset: 0x04 Interrupt Control State Register */ + uint32_t RESERVED0; + __IO uint32_t AIRCR; /*!< Offset: 0x0C Application Interrupt / Reset Control Register */ + __IO uint32_t SCR; /*!< Offset: 0x10 System Control Register */ + __IO uint32_t CCR; /*!< Offset: 0x14 Configuration Control Register */ + uint32_t RESERVED1; + __IO uint32_t SHP[2]; /*!< Offset: 0x1C System Handlers Priority Registers. [0] is RESERVED */ + __IO uint32_t SHCSR; /*!< Offset: 0x24 System Handler Control and State Register */ + uint32_t RESERVED2[2]; + __IO uint32_t DFSR; /*!< Offset: 0x30 Debug Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24 /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFul << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20 /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFul << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16 /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFul << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4 /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFul << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0 /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFul << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31 /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1ul << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28 /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1ul << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27 /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1ul << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26 /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1ul << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25 /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1ul << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23 /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1ul << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22 /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1ul << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12 /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFul << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0 /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFul << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16 /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFul << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16 /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFul << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15 /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1ul << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2 /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1ul << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1 /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1ul << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4 /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1ul << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2 /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1ul << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1 /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1ul << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9 /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1ul << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3 /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1ul << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15 /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1ul << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4 /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1ul << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3 /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1ul << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2 /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1ul << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1 /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1ul << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0 /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1ul << SCB_DFSR_HALTED_Pos) /*!< SCB DFSR: HALTED Mask */ +/*@}*/ /* end of group CMSIS_CM0_SCB */ + + +/** @addtogroup CMSIS_CM0_SysTick CMSIS CM0 SysTick + memory mapped structure for SysTick + @{ + */ +typedef struct +{ + __IO uint32_t CTRL; /*!< Offset: 0x00 SysTick Control and Status Register */ + __IO uint32_t LOAD; /*!< Offset: 0x04 SysTick Reload Value Register */ + __IO uint32_t VAL; /*!< Offset: 0x08 SysTick Current Value Register */ + __I uint32_t CALIB; /*!< Offset: 0x0C SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31 /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1ul << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30 /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1ul << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0 /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */ +/*@}*/ /* end of group CMSIS_CM0_SysTick */ + + +/** @addtogroup CMSIS_CM0_CoreDebug CMSIS CM0 Core Debug + memory mapped structure for Core Debug Register + @{ + */ +typedef struct +{ + __IO uint32_t DHCSR; /*!< Offset: 0x00 Debug Halting Control and Status Register */ + __O uint32_t DCRSR; /*!< Offset: 0x04 Debug Core Register Selector Register */ + __IO uint32_t DCRDR; /*!< Offset: 0x08 Debug Core Register Data Register */ + __IO uint32_t DEMCR; /*!< Offset: 0x0C Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16 /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFul << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25 /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1ul << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24 /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1ul << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19 /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1ul << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18 /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1ul << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17 /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1ul << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16 /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1ul << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3 /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1ul << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2 /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1ul << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1 /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1ul << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0 /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1ul << CoreDebug_DHCSR_C_DEBUGEN_Pos) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register */ +#define CoreDebug_DCRSR_REGWnR_Pos 16 /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1ul << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0 /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1Ful << CoreDebug_DCRSR_REGSEL_Pos) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24 /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1ul << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10 /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1ul << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0 /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1ul << CoreDebug_DEMCR_VC_CORERESET_Pos) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ +/*@}*/ /* end of group CMSIS_CM0_CoreDebug */ + + +/* Memory mapping of Cortex-M0 Hardware */ +#define SCS_BASE (0xE000E000) /*!< System Control Space Base Address */ +#define CoreDebug_BASE (0xE000EDF0) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE) /*!< NVIC configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +/*@}*/ /* end of group CMSIS_CM0_core_register */ + + +/******************************************************************************* + * Hardware Abstraction Layer + ******************************************************************************/ + +#if defined ( __CC_ARM ) + #define __ASM __asm /*!< asm keyword for ARM Compiler */ + #define __INLINE __inline /*!< inline keyword for ARM Compiler */ + +#elif defined ( __ICCARM__ ) + #define __ASM __asm /*!< asm keyword for IAR Compiler */ + #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ + +#elif defined ( __GNUC__ ) + #define __ASM __asm /*!< asm keyword for GNU Compiler */ + #define __INLINE inline /*!< inline keyword for GNU Compiler */ + +#elif defined ( __TASKING__ ) + #define __ASM __asm /*!< asm keyword for TASKING Compiler */ + #define __INLINE inline /*!< inline keyword for TASKING Compiler */ + +#endif + + +/* ################### Compiler specific Intrinsics ########################### */ + +#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/ +/* ARM armcc specific functions */ + +#define __enable_fault_irq __enable_fiq +#define __disable_fault_irq __disable_fiq + +#define __NOP __nop +#define __WFI __wfi +#define __WFE __wfe +#define __SEV __sev +#define __ISB() __isb(0) +#define __DSB() __dsb(0) +#define __DMB() __dmb(0) +#define __REV __rev + + +/* intrinsic void __enable_irq(); */ +/* intrinsic void __disable_irq(); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + + +#if (__ARMCC_VERSION < 400000) + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +#else /* (__ARMCC_VERSION >= 400000) */ + + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +static __INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +static __INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + +/** + * @brief Return the Control Register value + * + * @return Control value + * + * Return the content of the control register + */ +static __INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +static __INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + +#endif /* __ARMCC_VERSION */ + + + +#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/ +/* IAR iccarm specific functions */ + +#define __enable_irq __enable_interrupt /*!< global Interrupt enable */ +#define __disable_irq __disable_interrupt /*!< global Interrupt disable */ + +static __INLINE void __enable_fault_irq() { __ASM ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM ("cpsid f"); } + +#define __NOP __no_operation /*!< no operation intrinsic in IAR Compiler */ +static __INLINE void __WFI() { __ASM ("wfi"); } +static __INLINE void __WFE() { __ASM ("wfe"); } +static __INLINE void __SEV() { __ASM ("sev"); } + +/* intrinsic void __ISB(void) */ +/* intrinsic void __DSB(void) */ +/* intrinsic void __DMB(void) */ +/* intrinsic void __set_PRIMASK(); */ +/* intrinsic void __get_PRIMASK(); */ + + +/* intrinsic uint32_t __REV(uint32_t value); */ +/* intrinsic uint32_t __REVSH(uint32_t value); */ + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + + + + + +#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/ +/* GNU gcc specific functions */ + +static __INLINE void __enable_irq() { __ASM volatile ("cpsie i"); } +static __INLINE void __disable_irq() { __ASM volatile ("cpsid i"); } + +static __INLINE void __enable_fault_irq() { __ASM volatile ("cpsie f"); } +static __INLINE void __disable_fault_irq() { __ASM volatile ("cpsid f"); } + +static __INLINE void __NOP() { __ASM volatile ("nop"); } +static __INLINE void __WFI() { __ASM volatile ("wfi"); } +static __INLINE void __WFE() { __ASM volatile ("wfe"); } +static __INLINE void __SEV() { __ASM volatile ("sev"); } +static __INLINE void __ISB() { __ASM volatile ("isb"); } +static __INLINE void __DSB() { __ASM volatile ("dsb"); } +static __INLINE void __DMB() { __ASM volatile ("dmb"); } + + +/** + * @brief Return the Process Stack Pointer + * + * @return ProcessStackPointer + * + * Return the actual process stack pointer + */ +extern uint32_t __get_PSP(void); + +/** + * @brief Set the Process Stack Pointer + * + * @param topOfProcStack Process Stack Pointer + * + * Assign the value ProcessStackPointer to the MSP + * (process stack pointer) Cortex processor register + */ +extern void __set_PSP(uint32_t topOfProcStack); + +/** + * @brief Return the Main Stack Pointer + * + * @return Main Stack Pointer + * + * Return the current value of the MSP (main stack pointer) + * Cortex processor register + */ +extern uint32_t __get_MSP(void); + +/** + * @brief Set the Main Stack Pointer + * + * @param topOfMainStack Main Stack Pointer + * + * Assign the value mainStackPointer to the MSP + * (main stack pointer) Cortex processor register + */ +extern void __set_MSP(uint32_t topOfMainStack); + +/** + * @brief Return the Priority Mask value + * + * @return PriMask + * + * Return state of the priority mask bit from the priority mask register + */ +extern uint32_t __get_PRIMASK(void); + +/** + * @brief Set the Priority Mask value + * + * @param priMask PriMask + * + * Set the priority mask bit in the priority mask register + */ +extern void __set_PRIMASK(uint32_t priMask); + +/** + * @brief Return the Control Register value +* +* @return Control value + * + * Return the content of the control register + */ +extern uint32_t __get_CONTROL(void); + +/** + * @brief Set the Control Register value + * + * @param control Control value + * + * Set the control register + */ +extern void __set_CONTROL(uint32_t control); + +/** + * @brief Reverse byte order in integer value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in integer value + */ +extern uint32_t __REV(uint32_t value); + +/** + * @brief Reverse byte order in unsigned short value + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in unsigned short value + */ +extern uint32_t __REV16(uint16_t value); + +/** + * @brief Reverse byte order in signed short value with sign extension to integer + * + * @param value value to reverse + * @return reversed value + * + * Reverse byte order in signed short value with sign extension to integer + */ +extern int32_t __REVSH(int16_t value); + + +#elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/ +/* TASKING carm specific functions */ + +/* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all instrinsics, + * Including the CMSIS ones. + */ + +#endif + + +/** @addtogroup CMSIS_CM0_Core_FunctionInterface CMSIS CM0 Core Function Interface + Core Function Interface containing: + - Core NVIC Functions + - Core SysTick Functions + - Core Reset Functions +*/ +/*@{*/ + +/* ########################## NVIC functions #################################### */ + +/* Interrupt Priorities are WORD accessible only under ARMv6M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( (((uint32_t)(IRQn) ) & 0x03) * 8 ) +#define _SHP_IDX(IRQn) ( ((((uint32_t)(IRQn) & 0x0F)-8) >> 2) ) +#define _IP_IDX(IRQn) ( ((uint32_t)(IRQn) >> 2) ) + + +/** + * @brief Enable Interrupt in NVIC Interrupt Controller + * + * @param IRQn The positive number of the external interrupt to enable + * + * Enable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn) +{ + NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */ +} + +/** + * @brief Disable the interrupt line for external interrupt specified + * + * @param IRQn The positive number of the external interrupt to disable + * + * Disable a device specific interupt in the NVIC interrupt controller. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_DisableIRQ(IRQn_Type IRQn) +{ + NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */ +} + +/** + * @brief Read the interrupt pending bit for a device specific interrupt source + * + * @param IRQn The number of the device specifc interrupt + * @return 1 = interrupt pending, 0 = interrupt not pending + * + * Read the pending register in NVIC and return 1 if its status is pending, + * otherwise it returns 0 + */ +static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */ +} + +/** + * @brief Set the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for set pending + * + * Set the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */ +} + +/** + * @brief Clear the pending bit for an external interrupt + * + * @param IRQn The number of the interrupt for clear pending + * + * Clear the pending bit for the specified interrupt. + * The interrupt number cannot be a negative value. + */ +static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ +} + +/** + * @brief Set the priority for an interrupt + * + * @param IRQn The number of the interrupt for set priority + * @param priority The priority to set + * + * Set the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + if(IRQn < 0) { + SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } + else { + NVIC->IPR[_IP_IDX(IRQn)] = (NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) | + (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); } +} + +/** + * @brief Read the priority for an interrupt + * + * @param IRQn The number of the interrupt for get priority + * @return The priority for the interrupt + * + * Read the priority for the specified interrupt. The interrupt + * number can be positive to specify an external (device specific) + * interrupt, or negative to specify an internal (core) interrupt. + * + * The returned priority value is automatically aligned to the implemented + * priority bits of the microcontroller. + * + * Note: The priority cannot be set for every core interrupt. + */ +static __INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn) +{ + + if(IRQn < 0) { + return((uint32_t)((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for Cortex-M0 system interrupts */ + else { + return((uint32_t)((NVIC->IPR[_IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) >> (8 - __NVIC_PRIO_BITS))); } /* get priority for device specific interrupts */ +} + + + +/* ################################## SysTick function ############################################ */ + +#if (!defined (__Vendor_SysTickConfig)) || (__Vendor_SysTickConfig == 0) + +/** + * @brief Initialize and start the SysTick counter and its interrupt. + * + * @param ticks number of ticks between two interrupts + * @return 1 = failed, 0 = successful + * + * Initialise the system tick timer and its interrupt and start the + * system tick timer / counter in free running mode to generate + * periodical interrupts. + */ +static __INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ + + SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ + SysTick->VAL = 0; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0); /* Function successful */ +} + +#endif + + + + +/* ################################## Reset function ############################################ */ + +/** + * @brief Initiate a system reset request. + * + * Initiate a system reset request to reset the MCU + */ +static __INLINE void NVIC_SystemReset(void) +{ + SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + while(1); /* wait until reset */ +} + +/*@}*/ /* end of group CMSIS_CM0_Core_FunctionInterface */ + +#ifdef __cplusplus +} +#endif + +/*@}*/ /* end of group CMSIS_CM0_core_definitions */ + +#endif /* __CM0_CORE_H__ */ + +/*lint -restore */ diff --git a/libcpu/arm/lpc122x/CMSIS/startup_LPC122x.s b/libcpu/arm/lpc122x/CMSIS/startup_LPC122x.s new file mode 100644 index 0000000000..fe2fdee3ef --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/startup_LPC122x.s @@ -0,0 +1,254 @@ +;/***************************************************************************** +; * @file: startup_LPC122x.s +; * @purpose: CMSIS Cortex-M0 Core Device Startup File +; * for the NXP LPC122x Device Series +; * @version: V1.0 +; * @date: 25. Nov. 2008 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; * Copyright (C) 2008 ARM Limited. All rights reserved. +; * ARM Limited (ARM) is supplying this software for use with Cortex-M0 +; * processor based microcontrollers. This file can be freely distributed +; * within development tools that are supporting such ARM based processors. +; * +; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED +; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF +; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. +; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR +; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. +; * +; *****************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000200 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WAKEUP_IRQHandler ; 12 wakeup sources for all the + DCD WAKEUP_IRQHandler ; I/O pins starting from PIO0 (0:11) + DCD WAKEUP_IRQHandler ; all 40 are routed to the same ISR + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD I2C_IRQHandler ; I2C + DCD TIMER16_0_IRQHandler ; 16-bit Timer0 + DCD TIMER16_1_IRQHandler ; 16-bit Timer1 + DCD TIMER32_0_IRQHandler ; 32-bit Timer0 + DCD TIMER32_1_IRQHandler ; 32-bit Timer1 + DCD SSP_IRQHandler ; SSP + DCD UART0_IRQHandler ; UART0 + DCD UART1_IRQHandler ; UART1 + DCD COMP_IRQHandler ; Comparator + DCD ADC_IRQHandler ; A/D Converter + DCD WDT_IRQHandler ; Watchdog timer + DCD BOD_IRQHandler ; Brown Out Detect + DCD FMC_IRQHandler ; IP2111 Flash Memory Controller + DCD PIOINT0_IRQHandler ; PIO INT0 + DCD PIOINT1_IRQHandler ; PIO INT1 + DCD PIOINT2_IRQHandler ; PIO INT2 + DCD PMU_IRQHandler ; PMU/Wakeup + DCD DMA_IRQHandler ; DMA + DCD RTC_IRQHandler ; RTC + DCD EDM_IRQHandler ; Event Driven Micro + + + IF :LNOT::DEF:NO_CRP + AREA |.ARM.__at_0x02FC|, CODE, READONLY +CRP_Key DCD 0xFFFFFFFF + ENDIF + + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +; now, under COMMON NMI.c and NMI.h, a real NMI handler is created if NMI is enabled +; for particular peripheral. +;NMI_Handler PROC +; EXPORT NMI_Handler [WEAK] +; B . +; ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT NMI_Handler [WEAK] + EXPORT WAKEUP_IRQHandler [WEAK] + EXPORT I2C_IRQHandler [WEAK] + EXPORT TIMER16_0_IRQHandler [WEAK] + EXPORT TIMER16_1_IRQHandler [WEAK] + EXPORT TIMER32_0_IRQHandler [WEAK] + EXPORT TIMER32_1_IRQHandler [WEAK] + EXPORT SSP_IRQHandler [WEAK] + EXPORT UART0_IRQHandler [WEAK] + EXPORT UART1_IRQHandler [WEAK] + + EXPORT COMP_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT WDT_IRQHandler [WEAK] + EXPORT BOD_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT PIOINT0_IRQHandler [WEAK] + EXPORT PIOINT1_IRQHandler [WEAK] + EXPORT PIOINT2_IRQHandler [WEAK] + EXPORT PMU_IRQHandler [WEAK] + EXPORT DMA_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT EDM_IRQHandler [WEAK] + +NMI_Handler +WAKEUP_IRQHandler +I2C_IRQHandler +TIMER16_0_IRQHandler +TIMER16_1_IRQHandler +TIMER32_0_IRQHandler +TIMER32_1_IRQHandler +SSP_IRQHandler +UART0_IRQHandler +UART1_IRQHandler +COMP_IRQHandler +ADC_IRQHandler +WDT_IRQHandler +BOD_IRQHandler +FMC_IRQHandler +PIOINT0_IRQHandler +PIOINT1_IRQHandler +PIOINT2_IRQHandler +PMU_IRQHandler +DMA_IRQHandler +RTC_IRQHandler +EDM_IRQHandler + + B . + + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END diff --git a/libcpu/arm/lpc122x/CMSIS/system_LPC122x.c b/libcpu/arm/lpc122x/CMSIS/system_LPC122x.c new file mode 100644 index 0000000000..9e9a210709 --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/system_LPC122x.c @@ -0,0 +1,213 @@ +/****************************************************************************** + * @file: system_LPC122x.c + * @purpose: CMSIS Cortex-M0 Device Peripheral Access Layer Source File + * for the NXP LPC122x Device Series + * @version: V1.0 + * @date: 26. Nov. 2008 + *---------------------------------------------------------------------------- + * + * Copyright (C) 2008 ARM Limited. All rights reserved. + * + * ARM Limited (ARM) is supplying this software for use with Cortex-M3 + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ +#include +#include "LPC122x.h" + +/* +//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +*/ + +/*--------------------- Clock Configuration ---------------------------------- +// +// Clock Configuration +// System Controls and Status Register (SCS) +// OSCRANGE: Main Oscillator Range Select +// <0=> 1 MHz to 20 MHz +// <1=> 15 MHz to 24 MHz +// OSCEN: Main Oscillator Enable +// +// +// +// Clock Source Select Register (CLKSRCSEL) +// CLKSRC: PLL Clock Source Selection +// <0=> Internal RC oscillator +// <1=> Main oscillator +// <2=> RTC oscillator +// +// +// PLL0 Configuration (Main PLL) +// PLL0 Configuration Register (PLL0CFG) +// F_cco0 = (2 * M * F_in) / N +// F_in must be in the range of 32 kHz to 50 MHz +// F_cco0 must be in the range of 275 MHz to 550 MHz +// MSEL: PLL Multiplier Selection +// <6-32768><#-1> +// M Value +// NSEL: PLL Divider Selection +// <1-256><#-1> +// N Value +// +// +// +// +// CPU Clock Configuration Register (CCLKCFG) +// CCLKSEL: Divide Value for CPU Clock from PLL0 +// <0-255> +// Divide is CCLKSEL + 1. Only 0 and odd values are valid. +// +// +// +// +*/ +#define CLOCK_SETUP 1 + +#define SYS_PLL_SETUP 1 +#define SYS_PLLSRCSEL_Val 0x00000001 +#define SYS_PLL_M_Val 0x00000003 +#define SYS_PLL_P_Val 0x00000001 +#define MAIN_CLKSRCSEL_Val 0x00000003 +#define SYS_AHB_DIV_Val 0x01 /* 1 through 255, 0 will disable the output. */ + +/* +//-------- <<< end of configuration section >>> ------------------------------ +*/ + +/*---------------------------------------------------------------------------- + DEFINES + *----------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL (12000000UL) /* Oscillator frequency */ +#define OSC_CLK ( XTAL) /* Main oscillator frequency */ +#define IRC_OSC ( 4000000UL) /* Internal RC oscillator frequency */ +#define WDT_OSC ( 250000UL) /* WDT oscillator frequency */ + +/*---------------------------------------------------------------------------- + Clock Variable definitions + *----------------------------------------------------------------------------*/ +uint32_t ClockSource = IRC_OSC; +uint32_t SystemFrequency = IRC_OSC; /*!< System Clock Frequency (Core Clock) */ +uint32_t SystemAHBFrequency = IRC_OSC; + +/** + * Misc. clock generation modules + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemPLL_Setup ( void ) +{ + uint32_t regVal; + + LPC_SYSCON->PRESETCTRL &= ~0x00008000; /* Disable 1-Cycle Read Mode */ + + ClockSource = OSC_CLK; + LPC_SYSCON->SYSPLLCLKSEL = SYS_PLLSRCSEL_Val; /* Select system OSC */ + LPC_SYSCON->SYSPLLCLKUEN = 0x01; /* Update clock source */ + LPC_SYSCON->SYSPLLCLKUEN = 0x00; /* toggle Update register once */ + LPC_SYSCON->SYSPLLCLKUEN = 0x01; + while ( !(LPC_SYSCON->SYSPLLCLKUEN & 0x01) ); /* Wait until updated */ + + regVal = LPC_SYSCON->SYSPLLCTRL; + regVal &= ~0x1FF; + LPC_SYSCON->SYSPLLCTRL = (regVal | (SYS_PLL_P_Val<<5) | SYS_PLL_M_Val); + + /* Enable main system clock, main system clock bit 7 in PDRUNCFG. */ + LPC_SYSCON->PDRUNCFG &= ~(0x1<<7); + while ( !(LPC_SYSCON->SYSPLLSTAT & 0x01) ); /* Wait until it's locked */ + + LPC_SYSCON->MAINCLKSEL = MAIN_CLKSRCSEL_Val; /* Select PLL clock output */ + LPC_SYSCON->MAINCLKUEN = 0x01; /* Update MCLK clock source */ + LPC_SYSCON->MAINCLKUEN = 0x00; /* Toggle update register once */ + LPC_SYSCON->MAINCLKUEN = 0x01; + while ( !(LPC_SYSCON->MAINCLKUEN & 0x01) ); /* Wait until updated */ + + LPC_SYSCON->SYSAHBCLKDIV = SYS_AHB_DIV_Val; /* SYS AHB clock, 0 will disable output */ + +#if SYS_PLL_SETUP + /* If the SYS PLL output is selected as the main clock. Even if SYS PLL is + configured and enabled, it doesn't mean it will be selected as the MAIN clock + source. Be careful with MAINCLKSEL value. If SYS PLL is not selected, System + Frequence should be the same as either IRC, external OSC(SYS), or WDT OSC clock. */ + SystemFrequency = ClockSource * (SYS_PLL_M_Val+1); +#else + SystemFrequency = ClockSource; +#endif + SystemAHBFrequency = (uint32_t)(SystemFrequency/SYS_AHB_DIV_Val); + return; +} + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +void SystemInit (void) +{ + uint32_t i; + +#ifdef __DEBUG_RAM + LPC_SYSCON->SYSMEMREMAP = 0x1; /* remap to internal RAM */ +#else +#ifdef __DEBUG_FLASH + LPC_SYSCON->SYSMEMREMAP = 0x2; /* remap to internal flash */ +#endif +#endif + +#if 1 + /* First, below lines are for debugging only. For future release, WDT is + enabled by bootrom, thus, unless a feed to WDT continuously, or WDT timeout + will occur. If it's happen, WDT interrupt will be pending until a INT_CLEAR + is applied. Below logic is to prevent system from going to the WDT interrupt + during debugging. + Second, all the peripheral clocks seem to be enabled by bootrom, it's + not consistent with the UM. In below lines, only SYS, ROM, RAM, FLASHREG, + FLASHARRAY, and I2C are enabled per UM dated July 14th. */ + LPC_WDT->MOD = 0x00; + LPC_WDT->FEED = 0xAA; /* Feeding sequence */ + LPC_WDT->FEED = 0x55; + + NVIC->ICPR[0] |= 0xFFFFFFFF; + LPC_SYSCON->SYSAHBCLKCTRL = 0x00000001F; +#endif + +#if (CLOCK_SETUP) /* Clock Setup */ + /* bit 0 default is crystal bypass, + bit1 0=0~20Mhz crystal input, 1=15~50Mhz crystal input. */ + LPC_SYSCON->SYSOSCCTRL = 0x00; + + /* main system OSC run is cleared, bit 5 in PDRUNCFG register */ + LPC_SYSCON->PDRUNCFG &= ~(0x1<<5); + /* Wait 200us for OSC to be stablized, no status + indication, dummy wait. */ + for ( i = 0; i < 0x100; i++ ); + +#if (SYS_PLL_SETUP) + SystemPLL_Setup(); +#endif + +#endif /* endif CLOCK_SETUP */ + + /* System clock to the IOCON needs to be enabled or + most of the I/O related peripherals won't work. */ + LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); + return; +} diff --git a/libcpu/arm/lpc122x/CMSIS/system_LPC122x.h b/libcpu/arm/lpc122x/CMSIS/system_LPC122x.h new file mode 100644 index 0000000000..38c6d84e4a --- /dev/null +++ b/libcpu/arm/lpc122x/CMSIS/system_LPC122x.h @@ -0,0 +1,45 @@ +/****************************************************************************** + * @file: system_LPC122x.h + * @purpose: CMSIS Cortex-M0 Device Peripheral Access Layer Header File + * for the NXP LPC122x Device Series + * @version: V1.0 + * @date: 25. Nov. 2008 + *---------------------------------------------------------------------------- + * + * Copyright (C) 2008 ARM Limited. All rights reserved. + * + * ARM Limited (ARM) is supplying this software for use with Cortex-M0 + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + + +#ifndef __SYSTEM_LPC122x_H +#define __SYSTEM_LPC122x_H + +/* Vector Table Base ---------------------------------------------------------*/ +#define NVIC_VectTab_RAM (0x10000000) +#define NVIC_VectTab_FLASH (0x00000000) + +extern uint32_t ClockSource; +extern uint32_t SystemFrequency; /*!< System Clock Frequency (Core Clock) */ +extern uint32_t SystemAHBFrequency; + +/** + * Initialize the system + * + * @param none + * @return none + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemFrequency variable. + */ +extern void SystemInit (void); +#endif diff --git a/libcpu/arm/lpc122x/context_rvds.S b/libcpu/arm/lpc122x/context_rvds.S new file mode 100644 index 0000000000..9eb913f27a --- /dev/null +++ b/libcpu/arm/lpc122x/context_rvds.S @@ -0,0 +1,175 @@ +;/* +; * File : context_rvds.S +; * This file is part of RT-Thread RTOS +; * COPYRIGHT (C) 2009, RT-Thread Development Team +; * +; * The license and distribution terms for this file may be +; * found in the file LICENSE in this distribution or at +; * http://www.rt-thread.org/license/LICENSE +; * +; * Change Logs: +; * Date Author Notes +; * 2010-01-25 Bernard first version +; */ + +;/** +; * @addtogroup LPC1100 +; */ +;/*@{*/ + +NVIC_INT_CTRL EQU 0xE000ED04 ; interrupt control state register +NVIC_SYSPRI2 EQU 0xE000ED20 ; system priority register (2) +NVIC_PENDSV_PRI EQU 0x00FF0000 ; PendSV priority value (lowest) +NVIC_PENDSVSET EQU 0x10000000 ; value to trigger PendSV exception + + AREA |.text|, CODE, READONLY, ALIGN=2 + THUMB + REQUIRE8 + PRESERVE8 + + IMPORT rt_thread_switch_interrput_flag + IMPORT rt_interrupt_from_thread + IMPORT rt_interrupt_to_thread + +;/* +; * rt_base_t rt_hw_interrupt_disable(); +; */ +rt_hw_interrupt_disable PROC + EXPORT rt_hw_interrupt_disable + MRS r0, PRIMASK + CPSID I + BX LR + ENDP + +;/* +; * void rt_hw_interrupt_enable(rt_base_t level); +; */ +rt_hw_interrupt_enable PROC + EXPORT rt_hw_interrupt_enable + MSR PRIMASK, r0 + BX LR + ENDP + +;/* +; * void rt_hw_context_switch(rt_uint32 from, rt_uint32 to); +; * r0 --> from +; * r1 --> to +; */ +rt_hw_context_switch_interrupt + EXPORT rt_hw_context_switch_interrupt +rt_hw_context_switch PROC + EXPORT rt_hw_context_switch + + ; set rt_thread_switch_interrput_flag to 1 + LDR r2, =rt_thread_switch_interrput_flag + LDR r3, [r2] + CMP r3, #1 + BEQ _reswitch + MOVS r3, #0x1 + STR r3, [r2] + + LDR r2, =rt_interrupt_from_thread ; set rt_interrupt_from_thread + STR r0, [r2] + +_reswitch + LDR r2, =rt_interrupt_to_thread ; set rt_interrupt_to_thread + STR r1, [r2] + + LDR r0, =NVIC_INT_CTRL ; trigger the PendSV exception (causes context switch) + LDR r1, =NVIC_PENDSVSET + STR r1, [r0] + BX LR + ENDP + +; r0 --> swith from thread stack +; r1 --> swith to thread stack +; psr, pc, lr, r12, r3, r2, r1, r0 are pushed into [from] stack +rt_hw_pend_sv PROC + EXPORT rt_hw_pend_sv + + ; disable interrupt to protect context switch + MRS r2, PRIMASK + CPSID I + + ; get rt_thread_switch_interrupt_flag + LDR r0, =rt_thread_switch_interrput_flag + LDR r1, [r0] + CMP r1, #0x00 + BEQ pendsv_exit ; pendsv already handled + + ; clear rt_thread_switch_interrput_flag to 0 + MOVS r1, #0x00 + STR r1, [r0] + + LDR r0, =rt_interrupt_from_thread + LDR r1, [r0] + CMP r1, #0x00 + BEQ swtich_to_thread ; skip register save at the first time + + MRS r1, psp ; get from thread stack pointer + SUBS r1, r1, #0x10 + LDR r0, [r0] + STR r1, [r0] ; update from thread stack pointer + STMIA r1!, {r4 - r7} ; push r4 - r7 register + +swtich_to_thread + LDR r1, =rt_interrupt_to_thread + LDR r1, [r1] + LDR r1, [r1] ; load thread stack pointer + + LDMIA r1!, {r4 - r7} ; pop r4 - r7 register + MSR psp, r1 ; update stack pointer + +pendsv_exit + ; restore interrupt + MSR PRIMASK, r2 + + MOVS r0, #0x04 + RSBS r0, #0 + BX r0 + ENDP + +;/* +; * void rt_hw_context_switch_to(rt_uint32 to); +; * r0 --> to +; * this fucntion is used to perform the first thread switch +; */ +rt_hw_context_switch_to PROC + EXPORT rt_hw_context_switch_to + ; set to thread + LDR r1, =rt_interrupt_to_thread + STR r0, [r1] + + ; set from thread to 0 + LDR r1, =rt_interrupt_from_thread + MOVS r0, #0x0 + STR r0, [r1] + + ; set interrupt flag to 1 + LDR r1, =rt_thread_switch_interrput_flag + MOVS r0, #1 + STR r0, [r1] + + ; set the PendSV exception priority + ; LDR r0, =NVIC_SYSPRI2 + ; LDR r1, =NVIC_PENDSV_PRI + ; STR r1, [r0] + + ; trigger the PendSV exception (causes context switch) + LDR r0, =NVIC_INT_CTRL + LDR r1, =NVIC_PENDSVSET + STR r1, [r0] + + ; enable interrupts at processor level + CPSIE I + + ; never reach here! + ENDP + +; compatible with old version +rt_hw_interrupt_thread_switch PROC + EXPORT rt_hw_interrupt_thread_switch + BX lr + ENDP + + END diff --git a/libcpu/arm/lpc122x/cpu.c b/libcpu/arm/lpc122x/cpu.c new file mode 100644 index 0000000000..7efd166a3f --- /dev/null +++ b/libcpu/arm/lpc122x/cpu.c @@ -0,0 +1,42 @@ +/* + * File : cpu.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2009, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ + +#include + +/** + * @addtogroup LPC1100 + */ +/*@{*/ + +/** + * reset cpu by dog's time-out + * + */ +void rt_hw_cpu_reset() +{ + /*NOTREACHED*/ +} + +/** + * shutdown CPU + * + */ +void rt_hw_cpu_shutdown() +{ + rt_kprintf("shutdown...\n"); + + RT_ASSERT(0); +} + +/*@}*/ diff --git a/libcpu/arm/lpc122x/fault.c b/libcpu/arm/lpc122x/fault.c new file mode 100644 index 0000000000..5b8dc6b62f --- /dev/null +++ b/libcpu/arm/lpc122x/fault.c @@ -0,0 +1,47 @@ +/* + * File : fault.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2009, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ +#include + +struct stack_contex +{ + rt_uint32_t r0; + rt_uint32_t r1; + rt_uint32_t r2; + rt_uint32_t r3; + rt_uint32_t r12; + rt_uint32_t lr; + rt_uint32_t pc; + rt_uint32_t psr; +}; + +extern void rt_hw_interrupt_thread_switch(void); +extern void list_thread(void); +extern rt_thread_t rt_current_thread; +void rt_hw_hard_fault_exception(struct stack_contex* contex) +{ + rt_kprintf("psr: 0x%08x\n", contex->psr); + rt_kprintf(" pc: 0x%08x\n", contex->pc); + rt_kprintf(" lr: 0x%08x\n", contex->lr); + rt_kprintf("r12: 0x%08x\n", contex->r12); + rt_kprintf("r03: 0x%08x\n", contex->r3); + rt_kprintf("r02: 0x%08x\n", contex->r2); + rt_kprintf("r01: 0x%08x\n", contex->r1); + rt_kprintf("r00: 0x%08x\n", contex->r0); + + rt_kprintf("hard fault on thread: %s\n", rt_current_thread->name); +#ifdef RT_USING_FINSH + list_thread(); +#endif + while (1); +} diff --git a/libcpu/arm/lpc122x/fault_rvds.S b/libcpu/arm/lpc122x/fault_rvds.S new file mode 100644 index 0000000000..4029306400 --- /dev/null +++ b/libcpu/arm/lpc122x/fault_rvds.S @@ -0,0 +1,32 @@ +;/* +; * File : fault_rvds.S +; * This file is part of RT-Thread RTOS +; * COPYRIGHT (C) 2006, RT-Thread Development Team +; * +; * The license and distribution terms for this file may be +; * found in the file LICENSE in this distribution or at +; * http://www.rt-thread.org/license/LICENSE +; * +; * Change Logs: +; * Date Author Notes +; * 2010-01-25 Bernard first version +; */ + + AREA |.text|, CODE, READONLY, ALIGN=2 + THUMB + REQUIRE8 + PRESERVE8 + + IMPORT rt_hw_hard_fault_exception + +rt_hw_hard_fault PROC + EXPORT rt_hw_hard_fault + + ; get current context + MRS r0, psp ; get fault thread stack pointer + PUSH {lr} + BL rt_hw_hard_fault_exception + POP {pc} + ENDP + + END diff --git a/libcpu/arm/lpc122x/interrupt.c b/libcpu/arm/lpc122x/interrupt.c new file mode 100644 index 0000000000..a1a3eb2441 --- /dev/null +++ b/libcpu/arm/lpc122x/interrupt.c @@ -0,0 +1,21 @@ +/* + * File : interrupt.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2009, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ + +#include + +/* exception and interrupt handler table */ +rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread; +rt_uint8_t rt_thread_switch_interrput_flag; + +/*@}*/ diff --git a/libcpu/arm/lpc122x/stack.c b/libcpu/arm/lpc122x/stack.c new file mode 100644 index 0000000000..6bfa26b08a --- /dev/null +++ b/libcpu/arm/lpc122x/stack.c @@ -0,0 +1,54 @@ +/* + * File : stack.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2009, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-01-25 Bernard first version + */ +#include + +/** + * @addtogroup LPC1100 + */ +/*@{*/ + +/** + * This function will initialize thread stack + * + * @param tentry the entry of thread + * @param parameter the parameter of entry + * @param stack_addr the beginning stack address + * @param texit the function will be called when thread exit + * + * @return stack address + */ +rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, + rt_uint8_t *stack_addr, void *texit) +{ + unsigned long *stk; + + stk = (unsigned long *)stack_addr; + *(stk) = 0x01000000L; /* PSR */ + *(--stk) = (unsigned long)tentry; /* entry point, pc */ + *(--stk) = (unsigned long)texit; /* lr */ + *(--stk) = 0; /* r12 */ + *(--stk) = 0; /* r3 */ + *(--stk) = 0; /* r2 */ + *(--stk) = 0; /* r1 */ + *(--stk) = (unsigned long)parameter; /* r0 : argument */ + *(--stk) = 0; /* r7 */ + *(--stk) = 0; /* r6 */ + *(--stk) = 0; /* r5 */ + *(--stk) = 0; /* r4 */ + + /* return task's current stack address */ + return (rt_uint8_t *)stk; +} + +/*@}*/ diff --git a/libcpu/arm/lpc122x/start_rvds.S b/libcpu/arm/lpc122x/start_rvds.S new file mode 100644 index 0000000000..de4cc263eb --- /dev/null +++ b/libcpu/arm/lpc122x/start_rvds.S @@ -0,0 +1,254 @@ +;/***************************************************************************** +; * @file: startup_LPC11xx.s +; * @purpose: CMSIS Cortex-M0 Core Device Startup File +; * for the NXP LPC11xx Device Series +; * @version: V1.0 +; * @date: 25. Nov. 2008 +; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +; * +; * Copyright (C) 2008 ARM Limited. All rights reserved. +; * ARM Limited (ARM) is supplying this software for use with Cortex-M0 +; * processor based microcontrollers. This file can be freely distributed +; * within development tools that are supporting such ARM based processors. +; * +; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED +; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF +; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. +; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR +; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. +; * +; *****************************************************************************/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000200 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + IMPORT rt_hw_hard_fault + IMPORT rt_hw_pend_sv + IMPORT rt_hw_timer_handler + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD rt_hw_hard_fault ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD rt_hw_pend_sv ; PendSV Handler + DCD rt_hw_timer_handler ; SysTick Handler + + ; External Interrupts + DCD WAKEUP_IRQHandler ; 12 wakeup sources for all the + DCD WAKEUP_IRQHandler ; I/O pins starting from PIO0 (0:11) + DCD WAKEUP_IRQHandler ; all 40 are routed to the same ISR + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD WAKEUP_IRQHandler + DCD I2C_IRQHandler ; I2C + DCD TIMER16_0_IRQHandler ; 16-bit Timer0 + DCD TIMER16_1_IRQHandler ; 16-bit Timer1 + DCD TIMER32_0_IRQHandler ; 32-bit Timer0 + DCD TIMER32_1_IRQHandler ; 32-bit Timer1 + DCD SSP_IRQHandler ; SSP + DCD UART0_IRQHandler ; UART0 + DCD UART1_IRQHandler ; UART1 + DCD COMP_IRQHandler ; Comparator + DCD ADC_IRQHandler ; A/D Converter + DCD WDT_IRQHandler ; Watchdog timer + DCD BOD_IRQHandler ; Brown Out Detect + DCD FMC_IRQHandler ; IP2111 Flash Memory Controller + DCD PIOINT0_IRQHandler ; PIO INT0 + DCD PIOINT1_IRQHandler ; PIO INT1 + DCD PIOINT2_IRQHandler ; PIO INT2 + DCD PMU_IRQHandler ; PMU/Wakeup + DCD DMA_IRQHandler ; DMA + DCD RTC_IRQHandler ; RTC + DCD EDM_IRQHandler ; Event Driven Micro + + IF :LNOT::DEF:NO_CRP + AREA |.ARM.__at_0x02FC|, CODE, READONLY +CRP_Key DCD 0xFFFFFFFF + ENDIF + + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT NMI_Handler [WEAK] + EXPORT WAKEUP_IRQHandler [WEAK] + EXPORT I2C_IRQHandler [WEAK] + EXPORT TIMER16_0_IRQHandler [WEAK] + EXPORT TIMER16_1_IRQHandler [WEAK] + EXPORT TIMER32_0_IRQHandler [WEAK] + EXPORT TIMER32_1_IRQHandler [WEAK] + EXPORT SSP_IRQHandler [WEAK] + EXPORT UART0_IRQHandler [WEAK] + EXPORT UART1_IRQHandler [WEAK] + + EXPORT COMP_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT WDT_IRQHandler [WEAK] + EXPORT BOD_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT PIOINT0_IRQHandler [WEAK] + EXPORT PIOINT1_IRQHandler [WEAK] + EXPORT PIOINT2_IRQHandler [WEAK] + EXPORT PMU_IRQHandler [WEAK] + EXPORT DMA_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT EDM_IRQHandler [WEAK] + + +WAKEUP_IRQHandler +I2C_IRQHandler +TIMER16_0_IRQHandler +TIMER16_1_IRQHandler +TIMER32_0_IRQHandler +TIMER32_1_IRQHandler +SSP_IRQHandler +UART0_IRQHandler +UART1_IRQHandler +COMP_IRQHandler +ADC_IRQHandler +WDT_IRQHandler +BOD_IRQHandler +FMC_IRQHandler +PIOINT0_IRQHandler +PIOINT1_IRQHandler +PIOINT2_IRQHandler +PMU_IRQHandler +DMA_IRQHandler +RTC_IRQHandler +EDM_IRQHandler + + B . + + ENDP + + + ALIGN + + +; User Initial Stack & Heap + + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + + END -- GitLab