From 2c80fc7f3c5c77ae6183e5cd51811c9ea061cdc1 Mon Sep 17 00:00:00 2001 From: "chao1.wang" Date: Wed, 12 Jul 2023 14:14:31 +0800 Subject: [PATCH] First commit --- .gitmodules | 6 + app/inc/mem_sections.h | 52 + app/inc/msg_transfer_layer.h | 81 ++ app/inc/msg_transfer_mbuffer.h | 37 + app/inc/msg_transfer_mem.h | 26 + app/inc/msg_transfer_queue.h | 88 ++ app/inc/pet_sm_mgt.h | 34 + app/inc/typedef.h | 31 + app/inc/ucp_handshake.h | 38 + app/inc/ucp_printf.h | 74 + app/inc/ucp_utility.h | 41 + app/src/main.c | 83 ++ app/src/mem_sections.c | 127 ++ app/src/msg_transfer_layer.c | 277 ++++ app/src/msg_transfer_mem.c | 50 + app/src/msg_transfer_queue.c | 277 ++++ app/src/pet_sm_mgt.s.c | 60 + app/src/ucp_handshake.c | 44 + app/src/ucp_utility.c | 65 + build.sh | 54 + driver/arm_csu/inc/arm_csu.h | 73 + driver/arm_csu/inc/memcpy_csu.h | 29 + driver/arm_csu/inc/ucp_csu.h | 203 +++ driver/arm_csu/src/arm_csu.c | 230 ++++ driver/arm_csu/src/memcpy_csu.c | 68 + driver/cache/Makefile | 25 + driver/cache/cache.S | 78 ++ driver/cache/osp_sm_ddr.c | 532 ++++++++ driver/init/inc/drv_init.h | 17 + driver/init/src/drv_init.s.c | 75 + driver/ioreg/Makefile | 20 + driver/ioreg/ioreg.c | 182 +++ driver/mem_dump/mem_dump.c | 288 ++++ driver/rfic | 1 + driver/stc-dev/Makefile | 25 + driver/stc-dev/stc-dev.c | 357 +++++ driver/stc-dev/stc_def.h | 69 + driver/tfu | 1 + driver/tsc/Makefile | 18 + driver/tsc/tsc.c | 67 + driver/ucp_2_revmem/Makefile | 12 + driver/ucp_2_revmem/build_env.sh | 3 + driver/ucp_2_revmem/ucp_2_revmem.c | 325 +++++ driver/ucp_2_revmem/ucp_2_revmem.h | 24 + interface/arm_interface.h | 108 ++ interface/memcpy_csu.h | 59 + interface/msg_transfer_layer.h | 81 ++ interface/ospHeap.h | 109 ++ interface/typedef.h | 31 + kernel/dts/ucp4008-evb.dts | 1589 +++++++++++++++++++++ lib/.gitignore | 0 makefile | 167 +++ osp/inc/OspMutProcess.h | 23 + osp/inc/crc32.h | 6 + osp/inc/osp.h | 66 + osp/inc/ospAtomicOp.h | 31 + osp/inc/ospBuf.h | 100 ++ osp/inc/ospCfgToBin.h | 34 + osp/inc/ospDbg.h | 79 ++ osp/inc/ospDelay.h | 23 + osp/inc/ospDiag.h | 98 ++ osp/inc/ospDump.h | 47 + osp/inc/ospFile.h | 36 + osp/inc/ospHeap.h | 57 + osp/inc/ospHeartbeat.h | 14 + osp/inc/ospList.h | 810 +++++++++++ osp/inc/ospLog.h | 112 ++ osp/inc/ospMem.h | 22 + osp/inc/ospMsg.h | 130 ++ osp/inc/ospNetShell.h | 26 + osp/inc/ospOtherMsg.h | 20 + osp/inc/ospRtc.h | 31 + osp/inc/ospSem.h | 59 + osp/inc/ospShell.h | 119 ++ osp/inc/ospSoftQue.h | 63 + osp/inc/ospSwQueue.h | 133 ++ osp/inc/ospSwTimer.h | 66 + osp/inc/ospTask.h | 187 +++ osp/inc/ospTcp.h | 18 + osp/inc/ospTest.h | 19 + osp/inc/ospTimer.h | 80 ++ osp/inc/ospTypes.h | 23 + osp/inc/ospUdp.h | 46 + osp/inc/ospUtil.h | 123 ++ osp/src/OspMutProcess.c | 46 + osp/src/crc32.c | 237 ++++ osp/src/osp.c | 200 +++ osp/src/ospAtomicOp.c | 127 ++ osp/src/ospBuf.c | 373 +++++ osp/src/ospCfgToBin.c | 655 +++++++++ osp/src/ospDbg.c | 627 +++++++++ osp/src/ospDelay.c | 57 + osp/src/ospDiag.c | 163 +++ osp/src/ospDump.c | 713 ++++++++++ osp/src/ospFile.c | 146 ++ osp/src/ospHeap.c | 655 +++++++++ osp/src/ospHeartbeat.c | 350 +++++ osp/src/ospList.c | 57 + osp/src/ospLog.c | 1305 ++++++++++++++++++ osp/src/ospMem.c | 72 + osp/src/ospMsg.c | 360 +++++ osp/src/ospNetShell.c | 277 ++++ osp/src/ospOtherMsg.c | 56 + osp/src/ospRtc.c | 73 + osp/src/ospSem.c | 351 +++++ osp/src/ospShell.c | 1821 +++++++++++++++++++++++++ osp/src/ospSoftQue.c | 209 +++ osp/src/ospSwQueue.c | 170 +++ osp/src/ospSwTimer.c | 189 +++ osp/src/ospTask.c | 534 ++++++++ osp/src/ospTcp.c | 153 +++ osp/src/ospTest.c | 47 + osp/src/ospTimer.c | 529 +++++++ osp/src/ospUdp.c | 365 +++++ test/case0/src/testcase.c | 369 +++++ test/case1/src/testcase.c | 279 ++++ test/case2/src/testcase.c | 592 ++++++++ test/case3/src/testcase.c | 169 +++ test/case30/src/testcase30.c | 233 ++++ test/case4/src/testcase.c | 448 ++++++ test/case40/inc/ucp_api_clockGen.h | 33 + test/case40/inc/ucp_api_jesd.h | 47 + test/case40/inc/ucp_api_transceiver.h | 50 + test/case40/src/testcase.c | 49 + test/case41/inc/ucp_api_clockGen.h | 33 + test/case41/inc/ucp_api_jesd.h | 47 + test/case41/inc/ucp_api_transceiver.h | 50 + test/case41/src/testcase.c | 45 + test/case42/inc/ucp_api_clockGen.h | 33 + test/case42/inc/ucp_api_jesd.h | 47 + test/case42/inc/ucp_api_transceiver.h | 50 + test/case42/src/testcase.c | 46 + tool/libncurses.tar.gz | Bin 0 -> 462815 bytes tool/readme.txt | 11 + tool/terminfo.tar.gz | Bin 0 -> 452729 bytes tool/tmux | Bin 0 -> 9145384 bytes tool/tmux-3.2.tar.gz | Bin 0 -> 4673407 bytes 137 files changed, 22660 insertions(+) create mode 100644 .gitmodules create mode 100644 app/inc/mem_sections.h create mode 100644 app/inc/msg_transfer_layer.h create mode 100644 app/inc/msg_transfer_mbuffer.h create mode 100644 app/inc/msg_transfer_mem.h create mode 100644 app/inc/msg_transfer_queue.h create mode 100644 app/inc/pet_sm_mgt.h create mode 100644 app/inc/typedef.h create mode 100644 app/inc/ucp_handshake.h create mode 100644 app/inc/ucp_printf.h create mode 100644 app/inc/ucp_utility.h create mode 100644 app/src/main.c create mode 100644 app/src/mem_sections.c create mode 100644 app/src/msg_transfer_layer.c create mode 100644 app/src/msg_transfer_mem.c create mode 100644 app/src/msg_transfer_queue.c create mode 100644 app/src/pet_sm_mgt.s.c create mode 100644 app/src/ucp_handshake.c create mode 100644 app/src/ucp_utility.c create mode 100755 build.sh create mode 100644 driver/arm_csu/inc/arm_csu.h create mode 100644 driver/arm_csu/inc/memcpy_csu.h create mode 100644 driver/arm_csu/inc/ucp_csu.h create mode 100644 driver/arm_csu/src/arm_csu.c create mode 100644 driver/arm_csu/src/memcpy_csu.c create mode 100644 driver/cache/Makefile create mode 100644 driver/cache/cache.S create mode 100644 driver/cache/osp_sm_ddr.c create mode 100644 driver/init/inc/drv_init.h create mode 100644 driver/init/src/drv_init.s.c create mode 100644 driver/ioreg/Makefile create mode 100644 driver/ioreg/ioreg.c create mode 100644 driver/mem_dump/mem_dump.c create mode 160000 driver/rfic create mode 100644 driver/stc-dev/Makefile create mode 100644 driver/stc-dev/stc-dev.c create mode 100644 driver/stc-dev/stc_def.h create mode 160000 driver/tfu create mode 100644 driver/tsc/Makefile create mode 100644 driver/tsc/tsc.c create mode 100644 driver/ucp_2_revmem/Makefile create mode 100644 driver/ucp_2_revmem/build_env.sh create mode 100644 driver/ucp_2_revmem/ucp_2_revmem.c create mode 100644 driver/ucp_2_revmem/ucp_2_revmem.h create mode 100644 interface/arm_interface.h create mode 100644 interface/memcpy_csu.h create mode 100644 interface/msg_transfer_layer.h create mode 100644 interface/ospHeap.h create mode 100644 interface/typedef.h create mode 100644 kernel/dts/ucp4008-evb.dts create mode 100644 lib/.gitignore create mode 100644 makefile create mode 100644 osp/inc/OspMutProcess.h create mode 100644 osp/inc/crc32.h create mode 100644 osp/inc/osp.h create mode 100644 osp/inc/ospAtomicOp.h create mode 100644 osp/inc/ospBuf.h create mode 100644 osp/inc/ospCfgToBin.h create mode 100644 osp/inc/ospDbg.h create mode 100644 osp/inc/ospDelay.h create mode 100644 osp/inc/ospDiag.h create mode 100644 osp/inc/ospDump.h create mode 100644 osp/inc/ospFile.h create mode 100644 osp/inc/ospHeap.h create mode 100644 osp/inc/ospHeartbeat.h create mode 100644 osp/inc/ospList.h create mode 100644 osp/inc/ospLog.h create mode 100644 osp/inc/ospMem.h create mode 100644 osp/inc/ospMsg.h create mode 100644 osp/inc/ospNetShell.h create mode 100644 osp/inc/ospOtherMsg.h create mode 100644 osp/inc/ospRtc.h create mode 100644 osp/inc/ospSem.h create mode 100644 osp/inc/ospShell.h create mode 100644 osp/inc/ospSoftQue.h create mode 100644 osp/inc/ospSwQueue.h create mode 100644 osp/inc/ospSwTimer.h create mode 100644 osp/inc/ospTask.h create mode 100644 osp/inc/ospTcp.h create mode 100644 osp/inc/ospTest.h create mode 100644 osp/inc/ospTimer.h create mode 100644 osp/inc/ospTypes.h create mode 100644 osp/inc/ospUdp.h create mode 100644 osp/inc/ospUtil.h create mode 100644 osp/src/OspMutProcess.c create mode 100644 osp/src/crc32.c create mode 100644 osp/src/osp.c create mode 100644 osp/src/ospAtomicOp.c create mode 100644 osp/src/ospBuf.c create mode 100644 osp/src/ospCfgToBin.c create mode 100644 osp/src/ospDbg.c create mode 100644 osp/src/ospDelay.c create mode 100644 osp/src/ospDiag.c create mode 100644 osp/src/ospDump.c create mode 100644 osp/src/ospFile.c create mode 100644 osp/src/ospHeap.c create mode 100644 osp/src/ospHeartbeat.c create mode 100644 osp/src/ospList.c create mode 100644 osp/src/ospLog.c create mode 100644 osp/src/ospMem.c create mode 100644 osp/src/ospMsg.c create mode 100644 osp/src/ospNetShell.c create mode 100644 osp/src/ospOtherMsg.c create mode 100644 osp/src/ospRtc.c create mode 100644 osp/src/ospSem.c create mode 100644 osp/src/ospShell.c create mode 100644 osp/src/ospSoftQue.c create mode 100644 osp/src/ospSwQueue.c create mode 100644 osp/src/ospSwTimer.c create mode 100644 osp/src/ospTask.c create mode 100644 osp/src/ospTcp.c create mode 100644 osp/src/ospTest.c create mode 100644 osp/src/ospTimer.c create mode 100644 osp/src/ospUdp.c create mode 100644 test/case0/src/testcase.c create mode 100644 test/case1/src/testcase.c create mode 100644 test/case2/src/testcase.c create mode 100644 test/case3/src/testcase.c create mode 100644 test/case30/src/testcase30.c create mode 100644 test/case4/src/testcase.c create mode 100644 test/case40/inc/ucp_api_clockGen.h create mode 100644 test/case40/inc/ucp_api_jesd.h create mode 100644 test/case40/inc/ucp_api_transceiver.h create mode 100644 test/case40/src/testcase.c create mode 100644 test/case41/inc/ucp_api_clockGen.h create mode 100644 test/case41/inc/ucp_api_jesd.h create mode 100644 test/case41/inc/ucp_api_transceiver.h create mode 100644 test/case41/src/testcase.c create mode 100644 test/case42/inc/ucp_api_clockGen.h create mode 100644 test/case42/inc/ucp_api_jesd.h create mode 100644 test/case42/inc/ucp_api_transceiver.h create mode 100644 test/case42/src/testcase.c create mode 100644 tool/libncurses.tar.gz create mode 100644 tool/readme.txt create mode 100644 tool/terminfo.tar.gz create mode 100644 tool/tmux create mode 100644 tool/tmux-3.2.tar.gz diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..dba3a55 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "driver/rfic"] + path = driver/rfic + url = http://gitlab.smartlogictech.com/ucp/driver/ucp4008_rfic.git +[submodule "driver/tfu"] + path = driver/tfu + url = http://gitlab.smartlogictech.com/ucp/driver/ucp4008_tfu.git diff --git a/app/inc/mem_sections.h b/app/inc/mem_sections.h new file mode 100644 index 0000000..e738daf --- /dev/null +++ b/app/inc/mem_sections.h @@ -0,0 +1,52 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : mem_section.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + + +#ifndef __MEM_SECTIONS_H__ +#define __MEM_SECTIONS_H__ + +#include "typedef.h" + +#define MEM_ALIGNED_4BYTES 4 +#define MEM_ALIGNED_64BYTES 64 +#define RFM_IM_SECTION __attribute__((aligned(MEM_ALIGNED_4BYTES))) + +#define PET_SRAM_BASE_ADDR 0x08700000 +#define PET_SRAM_SIZE 0x20000//128KBytes + +#define ECS_SRAM_BASE_ADDR 0x07200000 +#define ECS_SRAM_SIZE (0x20000 - 0x2000)//128KBytes,reserved 8KBytes for CPRI CSU + +#define UCP_MSG_MEM_BASE_ADDR (0xA0000000) +#define UCP_MSG_MEM_SIZE (128*1024*1024)//128MBytes + +typedef struct +{ + uint64_t baseAddr; + uint64_t currAddr; + uint32_t maxSize; + + char* memSectionName; +} MEM_SECTION_INFO; + +void memSectionInit(MEM_SECTION_INFO* memSecInfo, uint64_t baseAddr, uint32_t maxSize, char* memSectionName); +void memSectionReset(MEM_SECTION_INFO* memSecInfo); +void* memSectionAlloc(MEM_SECTION_INFO* memSecInfo, uint32_t allocSize, uint32_t allocAlign, char* varString); +//void memSectionAllocPrint(MEM_SECTION_INFO* memSecInfo, uint32_t allocSize, char* varString); + +//MEM_SECTION_INFO* GetEcsSramSection(); +MEM_SECTION_INFO* GetPetSramSection(); +MEM_SECTION_INFO* GetMsgDdrSection(); + +#endif diff --git a/app/inc/msg_transfer_layer.h b/app/inc/msg_transfer_layer.h new file mode 100644 index 0000000..72cbac7 --- /dev/null +++ b/app/inc/msg_transfer_layer.h @@ -0,0 +1,81 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#include "typedef.h" + +#define MAX_INSTANCE_NUM (2) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + msg_transfer_callback tx_callback; + msg_transfer_callback rx_callback; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/app/inc/msg_transfer_mbuffer.h b/app/inc/msg_transfer_mbuffer.h new file mode 100644 index 0000000..499813e --- /dev/null +++ b/app/inc/msg_transfer_mbuffer.h @@ -0,0 +1,37 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_mbuffer.h +// Author : xianfeng.du +// Created On : 2022-12-21 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_MEM_BUFFER_H__ +#define __MSG_TRANSFER_MEM_BUFFER_H__ + +#include "typedef.h" + +typedef union tMsgMemBufAttribute{ + uint32_t ele[4]; //aligned + struct { + uint32_t msgSize; // in bytes + uint8_t qNo; + uint8_t state; + uint16_t idx; + //uint8_t msgType; // 0=data, 1=control + //uint8_t eop; + //uint8_t nSegs; + }; +} MsgMemBufAttr_t; + +#define MSG_MBUF_HEAD_SIZE (sizeof(MsgMemBufAttr_t)) +#define MSG_MBUF_ATTR(pBuf) ((MsgMemBufAttr_t *)((uint8_t *)pBuf - MSG_MBUF_HEAD_SIZE)) + +#endif + diff --git a/app/inc/msg_transfer_mem.h b/app/inc/msg_transfer_mem.h new file mode 100644 index 0000000..e8a255d --- /dev/null +++ b/app/inc/msg_transfer_mem.h @@ -0,0 +1,26 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_mem.h +// Author : xianfeng.du +// Created On : 2022-12-21 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_MEM_H__ +#define __MSG_TRANSFER_MEM_H__ + +#include "msg_transfer_queue.h" + +MsgQueueLocalMgt_t* get_msg_queue_local_mgt(void); + +void msg_transfer_mem_init(void); + +#endif + + diff --git a/app/inc/msg_transfer_queue.h b/app/inc/msg_transfer_queue.h new file mode 100644 index 0000000..4774369 --- /dev/null +++ b/app/inc/msg_transfer_queue.h @@ -0,0 +1,88 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_queue.h +// Author : xianfeng.du +// Created On : 2022-12-21 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_QUEUE_H__ +#define __MSG_TRANSFER_QUEUE_H__ + +#include "typedef.h" +#include "msg_transfer_layer.h" + +#define MAX_M_BUFFER_NUM 128 + +typedef enum eMsgQueueType { + UCP4008_TRAFFIC_NR_eMBB_DATA, + UCP4008_TRAFFIC_NR_eMBB_CTRL, + UCP4008_TRAFFIC_OAM, + UCP4008_TRAFFIC_MAX_NUM +} MsgQueueType_e; + +typedef struct tQueueCfg { + uint32_t block_size; + uint16_t block_num; + uint16_t rsv; + //msg_transfer_callback* tx_callback; + msg_transfer_callback rx_callback; +} QueueCfg_t; + +typedef struct tMsgQueueCfg { + HandleId_t handler; + QueueCfg_t tx_queue; + QueueCfg_t rx_queue; +} MsgQueueCfg_t; + +typedef struct tMsgQueueCommonInfo{ + uint32_t alloc; + uint32_t in; + uint32_t out; + uint32_t free; + + uint16_t ringSize; + uint16_t ringMask; + uint32_t bufBase; + uint32_t bufSize; + uint32_t bufIdxBase; +} MsgQueueCommonInfo_t; + +typedef struct tMsgQueueLocalInfo{ + uint8_t* bufBase; + uint8_t* bufIdxBase; + uint64_t bufAddr; + uint32_t availableSize; + uint32_t offset; + uint16_t idx; + uint16_t msgCnt; + uint8_t rsv[4]; +} MsgQueueLocalInfo_t; + +typedef struct tSyncInfo { + uint8_t queueCfgFlag; + uint8_t rsv[15]; +} SyncInfo_t; + +typedef struct tMsgQueueLocalMgt { + SyncInfo_t localSyncInfo; + MsgQueueCfg_t localQueueCfg[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM];//local + MsgQueueLocalInfo_t localDlQueue[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM]; //local + MsgQueueLocalInfo_t localUlQueue[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM]; //local +} MsgQueueLocalMgt_t; + +int32_t msg_queue_dl_block_init(uint8_t inst_id, uint8_t que_id); +int32_t msg_queue_dl_alloc_buf(uint8_t inst_id, uint8_t que_id); +int32_t msg_queue_dl_put_buf(uint8_t inst_id, uint8_t que_id); +uint8_t* msg_queue_ul_get_buf(uint8_t inst_id, uint8_t que_id); +void msg_transfer_queue_setup(uint8_t inst_id, uint8_t que_id); +void msg_transfer_queue_free(uint8_t inst_id, uint8_t que_id); + +#endif + diff --git a/app/inc/pet_sm_mgt.h b/app/inc/pet_sm_mgt.h new file mode 100644 index 0000000..27ad2e6 --- /dev/null +++ b/app/inc/pet_sm_mgt.h @@ -0,0 +1,34 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : pet_sm_mgt.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __PET_SHARE_MEM_MGT_H__ +#define __PET_SHARE_MEM_MGT_H__ + +#include "ucp_handshake.h" +#include "msg_transfer_queue.h" + +typedef struct tPetSmLocalMgt { + UcpHandshake_t* pHandshake;//common + SyncInfo_t* pSyncInfo;//common + uint16_t* pBufIdxBase;//common + MsgQueueCfg_t* pQueueCfg[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM];//common + MsgQueueCommonInfo_t* pDlQueue[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM];//common + MsgQueueCommonInfo_t* pUlQueue[MAX_INSTANCE_NUM][UCP4008_TRAFFIC_MAX_NUM];//common +} PetSmLocalMgt_t; + +void pet_sm_alloc(void); +PetSmLocalMgt_t* get_pet_sm_local_mgt(void); + +#endif + diff --git a/app/inc/typedef.h b/app/inc/typedef.h new file mode 100644 index 0000000..74b4889 --- /dev/null +++ b/app/inc/typedef.h @@ -0,0 +1,31 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : typedef.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __TYPEDEF_H__ +#define __TYPEDEF_H__ + +//Types definitions +//typedef unsigned char bool; +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef short int int16_t; +typedef unsigned short int uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long int int64_t; +typedef unsigned long int uint64_t; +//typedef long long int int64_t; +//typedef unsigned long long int uint64_t; + +#endif diff --git a/app/inc/ucp_handshake.h b/app/inc/ucp_handshake.h new file mode 100644 index 0000000..8eb9eb0 --- /dev/null +++ b/app/inc/ucp_handshake.h @@ -0,0 +1,38 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_handshake.h +// Author : xianfeng.du +// Created On : 2022-07-22 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __UCP_HANDSHAKE_H__ +#define __UCP_HANDSHAKE_H__ + +#include "typedef.h" + +#define MAX_NUM_SPU 12 +#define MAX_NUM_CORE (MAX_NUM_SPU+1) +#define NPU_CORE_ID MAX_NUM_SPU + +#define HANDSHKAE_REQ_VALUE 0x5A5A5A5A +#define HANDSHKAE_RESP_VALUE 0xA5A5A5A5 + +typedef struct tUcpHandshake{ + volatile uint32_t request[MAX_NUM_CORE]; + volatile uint32_t response[MAX_NUM_CORE]; + volatile uint32_t heartbeat[MAX_NUM_CORE]; +} UcpHandshake_t; + +void ucp_handshake(void); + +#endif + + + diff --git a/app/inc/ucp_printf.h b/app/inc/ucp_printf.h new file mode 100644 index 0000000..2d2fc20 --- /dev/null +++ b/app/inc/ucp_printf.h @@ -0,0 +1,74 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_printf.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + + +#ifndef __UCP_RINTF_H__ +#define __UCP_RINTF_H__ + +#include +//#include + + +#define PRINT_OFF 0x00000000 // close all PRINT +#define PRINT_ERROR 0x00000001 +#define PRINT_WARN 0x00000002 +#define PRINT_DEBUG 0x00000004 +#define PRINT_LOG 0x00000008 +#define PRINT_TICK 0x00000010 + +//#define UCP_PRINT_LEVEL (PRINT_OFF) +#define UCP_PRINT_LEVEL (PRINT_ERROR | PRINT_WARN |PRINT_DEBUG|PRINT_LOG | PRINT_TICK) +//#define UCP_PRINT_LEVEL (PRINT_ERROR |PRINT_DEBUG| PRINT_SHELL) + +#if (UCP_PRINT_LEVEL & PRINT_ERROR) +//#define UCP_PRINT_ERROR(fmt, args...) printf(__FILE__ ": [ERROR]: %d: %s():" fmt "\n", __LINE__, __func__, ##args) +#define UCP_PRINT_ERROR(fmt, args...) osp_log_output(PRINT_ERROR, "[ERROR]:" fmt "\n", ##args) +#else +#define UCP_PRINT_ERROR(fmt, args...) +#endif + +#if (UCP_PRINT_LEVEL & PRINT_WARN) +//#define UCP_PRINT_WARN(fmt, args...) printf(__FILE__ ": [WARN]: %d: %s():" fmt "\n", __LINE__, __func__, ##args) +#define UCP_PRINT_WARN(fmt, args...) osp_log_output(PRINT_WARN, "[WARN]:" fmt "\n", ##args) +#else +#define UCP_PRINT_WARN(fmt, args...) +#endif + +#if (UCP_PRINT_LEVEL & PRINT_LOG) +//#define UCP_PRINT_LOG(fmt, args...) printf(__FILE__ ": [LOG]: %d: %s():" fmt "\n", __LINE__, __func__, ##args) +#define UCP_PRINT_LOG(fmt, args...) osp_log_output(PRINT_LOG, "[LOG]:" fmt "\n", ##args) +#else +#define UCP_PRINT_LOG(fmt, args...) +#endif + +#if (UCP_PRINT_LEVEL & PRINT_DEBUG) +//#define UCP_PRINT_LOG(fmt, args...) printf(__FILE__ ": [LOG]: %d: %s():" fmt "\n", __LINE__, __func__, ##args) +#define UCP_PRINT_DEBUG(fmt, args...) osp_log_output(PRINT_DEBUG, "[DEBUG]:" fmt "\n", ##args) +#else +#define UCP_PRINT_DEBUG(fmt, args...) +#endif + +#if (UCP_PRINT_LEVEL & PRINT_TICK) +//#define UCP_PRINT_TICK(fmt, args...) printf(__FILE__ ": [TICK]: %d: %s():" fmt "\n", __LINE__, __func__, ##args) +#define UCP_PRINT_TICK(fmt, args...) osp_log_output(PRINT_TICK, "[TICK]:" fmt "\n", ##args) +#else +#define UCP_PRINT_TICK(fmt, args...) +#endif + +#define UCP_PRINT_SHELL(fmt, args...) printf("[SHELL:]" fmt, ##args) + +extern void osp_log_output(unsigned char level, const char *fmt, ...); + + +#endif diff --git a/app/inc/ucp_utility.h b/app/inc/ucp_utility.h new file mode 100644 index 0000000..50dc98f --- /dev/null +++ b/app/inc/ucp_utility.h @@ -0,0 +1,41 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_utility.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + + +#ifndef __UCP_UTILITY_H__ +#define __UCP_UTILITY_H__ + +#include "typedef.h" +#include "ospHeap.h" + +#ifdef UCP_SPIN_LOCK +#include +#define ucp_spin_lock(x) pthread_spin_lock((pthread_spinlock_t *)x) +#define ucp_spin_unlock(x) pthread_spin_unlock((pthread_spinlock_t *)x) +extern pthread_spinlock_t lock_dl_tx_alloc; +extern pthread_spinlock_t lock_dl_tx_put; +#else +#define ucp_spin_lock(x) +#define ucp_spin_unlock(x) +#endif +void ucp_spinlock_init(); + +int32_t isPowerOf2(uint32_t n); + +//cache +void ucp_cache_writeback(uint8_t* buf, uint32_t length); +void ucp_cache_invalid(uint8_t* buf, uint32_t length); +void ucp_cache_flush(uint8_t* buf, uint32_t length); + +#endif diff --git a/app/src/main.c b/app/src/main.c new file mode 100644 index 0000000..071d4ae --- /dev/null +++ b/app/src/main.c @@ -0,0 +1,83 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : main.c +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +#include "ospLog.h" +#include "ospShell.h" +#include "ucp_printf.h" +#include "drv_init.h" + +#ifdef ENABLE_JESD_TEST +extern int32_t UCP_API_JESD_PlatformSetup (void); +extern int32_t UCP_API_TRANSCEIVER_Init(uint64_t txLo, uint64_t rxLo, uint64_t bw, uint16_t initAtt); +#endif + +int32_t test_case(uint32_t argc, int32_t* argvp); + +extern OSP_STATUS osp_init(); +extern uint8_t osp_sw_queue_init(); + + +#define MAX_PARA_NUM 4 +int32_t main(int32_t argc, char* argvp[]) +{ + //uint32_t stc_cnt = 0, stc_cnt1 = 0; + + UCP_PRINT_DEBUG("Hello world from A72."); + + cpu_set_t mask; + CPU_ZERO(&mask); + CPU_SET(4,&mask); + sched_setaffinity(0,sizeof(cpu_set_t),&mask); + +#ifdef ENABLE_JESD_TEST + UCP_API_JESD_PlatformSetup(); + UCP_API_TRANSCEIVER_Init(2575770000u, 2575770000u, 100000000u, 0); + usleep(100000); +#endif + + osp_init(); + drv_init(); + +#ifdef PALLADIUM_TEST + UCP_PRINT_DEBUG("entered testmode."); + + int32_t args[MAX_PARA_NUM]; + uint32_t count = argc - 1; + if(count > MAX_PARA_NUM) { + UCP_PRINT_ERROR("parameter number[%d] error",count); + return -1; + } + + for (uint32_t i=0; ibaseAddr = baseAddr; + memSecInfo->maxSize = maxSize; + memSecInfo->memSectionName = memSectionName; + + memSecInfo->currAddr = baseAddr; +} + +void memSectionReset(MEM_SECTION_INFO* memSecInfo) +{ + memSecInfo->currAddr = memSecInfo->baseAddr; +} + +void memSectionAllocPrint(MEM_SECTION_INFO* memSecInfo, uint32_t allocSize, char* varString) +{ +#if (UCP_PRINT_LEVEL & PRINT_DEBUG) + char* pMemSectionName = (char*)&memSecInfo->memSectionName[0]; +#endif + + UCP_PRINT_DEBUG("Memory Section - [%s]: Base Address: [0x%lx]; Maximum Size: [%8u]\n", + pMemSectionName, + memSecInfo->baseAddr, + memSecInfo->maxSize); + UCP_PRINT_DEBUG("Memory Section - [%s]: Variable Name: [%s]; Allocated Address: [0x%lx]; Allocated Size: [%6u]\n", + pMemSectionName, + varString, + memSecInfo->currAddr, + allocSize); +} + +void* memSectionAlloc(MEM_SECTION_INFO* memSecInfo, uint32_t allocSize, uint32_t allocAlign, char* varString) +{ + void* ret; + + uint64_t baseAddr = memSecInfo->baseAddr; + uint64_t currAddr = ((memSecInfo->currAddr + (allocAlign - 1)) / allocAlign) * allocAlign; + uint32_t maxSize = memSecInfo->maxSize; + + uint8_t* p = (uint8_t *)baseAddr; + uint32_t offset = currAddr - baseAddr; + + if ((offset + allocSize) <= maxSize) { + ret = (void*)&p[offset]; + + memSecInfo->currAddr = currAddr; + + /* disable as default since it cost much time. Could be enabled when needed. */ + memSectionAllocPrint(memSecInfo, allocSize, varString); + + memSecInfo->currAddr = currAddr + allocSize; + } else { + UCP_PRINT_ERROR("Memory Section - [%s]: Base Address: [0x%lx]; Maximum Size: [%8u]", + memSecInfo->memSectionName, + baseAddr, + maxSize); + + UCP_PRINT_ERROR("Memory Section - [%s]: Variable Name: [%s]; Allocated Address: [0x%lx]; Allocated Size: [%6u]", + memSecInfo->memSectionName, + varString, + currAddr, + allocSize); + + UCP_PRINT_ERROR("Can't allocate %u bytes in Memory Section - [%s] for Variable - [%s]!", allocSize, memSecInfo->memSectionName, varString); + ret = NULL; + } + + return ret; +} + +/*MEM_SECTION_INFO* GetEcsSramSection() +{ + return (MEM_SECTION_INFO*)&EcsSram; +}*/ + +MEM_SECTION_INFO* GetPetSramSection() +{ + return (MEM_SECTION_INFO*)&PetSram; +} + +MEM_SECTION_INFO* GetMsgDdrSection() +{ + return (MEM_SECTION_INFO*)&MsgDdrMem; +} + + diff --git a/app/src/msg_transfer_layer.c b/app/src/msg_transfer_layer.c new file mode 100644 index 0000000..8a65d84 --- /dev/null +++ b/app/src/msg_transfer_layer.c @@ -0,0 +1,277 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.c +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include "mem_sections.h" +#include "ucp_printf.h" +#include "pet_sm_mgt.h" +#include "msg_transfer_mem.h" +#include "msg_transfer_mbuffer.h" + +static inline int8_t get_queue_id(uint16_t type_id, uint16_t cu_flag) +{ + int8_t que_id = -1; + + switch (type_id) + { + case CU_SPLIT: + if (cu_flag == U_PLANE) { + que_id = UCP4008_TRAFFIC_NR_eMBB_DATA; + } else { + que_id = UCP4008_TRAFFIC_NR_eMBB_CTRL; + } + break; + case OAM: + que_id = UCP4008_TRAFFIC_OAM; + break; + default: + UCP_PRINT_ERROR("get_queue_id doesn't support transfer_type[%d] .",type_id); + break; + } + + return que_id; +} + +static inline void get_queue_info(uint16_t inst_id, uint16_t que_id, uint32_t handle_id, queue_info_s* queue_info) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueCfg_t* pLocalQueueCfg = (MsgQueueCfg_t *)&pMsgQueueLocalMgt->localQueueCfg[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCfg_t* pCommonQueueCfg = pPetSmLocalMgt->pQueueCfg[inst_id][que_id]; + + pLocalQueueCfg->handler.value = handle_id; + pLocalQueueCfg->tx_queue.block_num = queue_info->tx_block_num; + pLocalQueueCfg->tx_queue.block_size = queue_info->tx_block_size; + pLocalQueueCfg->rx_queue.block_num = queue_info->rx_block_num; + pLocalQueueCfg->rx_queue.block_size = queue_info->rx_block_size; + pLocalQueueCfg->rx_queue.rx_callback = queue_info->rx_callback; + memcpy((void *)&pCommonQueueCfg->handler, (void *)&pLocalQueueCfg->handler, sizeof(HandleId_t)); + memcpy((void *)&pCommonQueueCfg->tx_queue, (void *)&pLocalQueueCfg->rx_queue, sizeof(QueueCfg_t)); + memcpy((void *)&pCommonQueueCfg->rx_queue, (void *)&pLocalQueueCfg->tx_queue, sizeof(QueueCfg_t)); + + msg_transfer_queue_setup(inst_id, que_id); + + return; +} + +int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info) +{ + if (port_index >= MAX_PORT_NUM) + { + UCP_PRINT_ERROR("msg_transfer_init port_index[%d] error.",port_index); + return FAILURE; + } + + if (transfer_type > OAM) + { + UCP_PRINT_ERROR("msg_transfer_init transfer_type[%d] error.",transfer_type); + return FAILURE; + } + + if (inst_id >= MAX_INSTANCE_NUM) + { + UCP_PRINT_ERROR("msg_transfer_init inst_id[%d] error.",inst_id); + return FAILURE; + } + + uint16_t que_id; + HandleId_t handler; + + handler.port_id = (uint8_t)port_index; + handler.inst_id = (uint8_t)inst_id; + handler.type_id = (uint8_t)transfer_type; + + switch (transfer_type) + { + case CU_SPLIT: + que_id = UCP4008_TRAFFIC_NR_eMBB_DATA; + get_queue_info(inst_id, que_id, handler.value, (queue_info_s *)&transfer_type_info->queue_uplane_info); + + que_id = UCP4008_TRAFFIC_NR_eMBB_CTRL; + get_queue_info(inst_id, que_id, handler.value, (queue_info_s *)&transfer_type_info->queue_cplane_info); + break; + case OAM: + que_id = UCP4008_TRAFFIC_OAM; + get_queue_info(inst_id, que_id, handler.value, (queue_info_s *)&transfer_type_info->queue_cplane_info); + break; + default: + UCP_PRINT_ERROR("msg_transfer_init doesn't support transfer_type[%d] .",transfer_type); + //break; + return FAILURE; + } + + return (int32_t)handler.value; +} + +int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag) +{ + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + + int8_t que_id = get_queue_id(type_id, cu_flag); + if (que_id < 0) + { + UCP_PRINT_ERROR("msg_transfer_send_start,UNINITIALIZED_QUEUE"); + return UNINITIALIZED_QUEUE; + } + msg_queue_dl_block_init(inst_id,que_id); + + return SUCCESS; +} + + +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset) +{ + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + int8_t que_id = get_queue_id(type_id, cu_flag); + + if (que_id < 0) + { + *(uint64_t *)buf = 0; + *availableSize = 0; + *offset = 0; + UCP_PRINT_ERROR("msg_transfer_alloc_msg,UNINITIALIZED_QUEUE"); + return UNINITIALIZED_QUEUE; + } + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + + if (0 == ch->msgCnt) + { + msg_queue_dl_alloc_buf(inst_id,que_id); + } + *(uint64_t *)buf = ch->bufAddr + ch->offset; + *availableSize = ch->availableSize; + *offset = ch->offset; + ch->msgCnt++; + + UCP_PRINT_LOG("msg_transfer_alloc_msg,buf:0x%lx,availableSize:0x%08x,offset:0x%08x", *(uint64_t *)buf, ch->availableSize, ch->offset); + + return SUCCESS; +} + +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len) +{ + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + int8_t que_id = get_queue_id(type_id, cu_flag); + if (que_id < 0) { + UCP_PRINT_ERROR("msg_transfer_alloc_msg,UNINITIALIZED_QUEUE"); + return UNINITIALIZED_QUEUE; + } + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + ch->availableSize -= msg_len; + ch->offset += msg_len; + + UCP_PRINT_LOG("msg_transfer_send_msg,buf:0x%lx,availableSize:0x%08x,offset:0x%08x", (ch->bufAddr+ch->offset), ch->availableSize, ch->offset); + + return SUCCESS; +} + +int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag) +{ + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + + int8_t que_id = get_queue_id(type_id, cu_flag); + if (que_id < 0) + { + UCP_PRINT_ERROR("msg_transfer_send_end,UNINITIALIZED_QUEUE"); + return UNINITIALIZED_QUEUE; + } + msg_queue_dl_put_buf(inst_id,que_id); + + return SUCCESS; +} + +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr) +{ + uint32_t handledLength = 0; + int32_t remainedLength = 0; + uint8_t *buf, *temp; + MsgMemBufAttr_t* mbuf; + + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + int8_t que_id = get_queue_id(type_id, cu_flag); + if (que_id < 0) + { + return UNINITIALIZED_QUEUE; + } + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueCfg_t* pQueueCfg = (MsgQueueCfg_t *)&pMsgQueueLocalMgt->localQueueCfg[inst_id][que_id]; + + buf = msg_queue_ul_get_buf(inst_id,que_id); + if (buf == NULL) + { + return EMPTY_QUEUE; + } + + //*msg_ptr = buf; + mbuf = MSG_MBUF_ATTR(buf); + remainedLength = mbuf->msgSize; + temp = buf; + do + { + handledLength = pQueueCfg->rx_queue.rx_callback((char *)temp, remainedLength); + remainedLength -= handledLength; + temp += handledLength; + } while(remainedLength > 0); + + return SUCCESS; +} + +int32_t msg_transfer_close(int32_t handle_id) +{ + HandleId_t handler; + handler.value= (uint32_t)handle_id; + //uint8_t port_id = handler.port_id; + uint8_t inst_id = handler.inst_id; + uint8_t type_id = handler.type_id; + + if (type_id == CU_SPLIT) + { + msg_transfer_queue_free(inst_id, UCP4008_TRAFFIC_NR_eMBB_DATA); + msg_transfer_queue_free(inst_id, UCP4008_TRAFFIC_NR_eMBB_CTRL); + } + else + { + msg_transfer_queue_free(inst_id, UCP4008_TRAFFIC_OAM); + } + + return SUCCESS; +} + diff --git a/app/src/msg_transfer_mem.c b/app/src/msg_transfer_mem.c new file mode 100644 index 0000000..bac8353 --- /dev/null +++ b/app/src/msg_transfer_mem.c @@ -0,0 +1,50 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : .c +// Author : xianfeng.du +// Created On : 2022-07-22 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include "mem_sections.h" +#include "msg_transfer_queue.h" +#include "ucp_printf.h" +#include "ucp_utility.h" +#include "ucp_handshake.h" +#include "ospHeap.h" +#include "pet_sm_mgt.h" + +MsgQueueLocalMgt_t gMsgQueueLocalMgt; +MsgQueueLocalMgt_t* get_msg_queue_local_mgt(void) +{ + return (MsgQueueLocalMgt_t *)&gMsgQueueLocalMgt; +} + +void msg_transfer_mem_init(void) +{ + UCP_PRINT_LOG("start initializing memory,limit[%lu]",sizeof(MsgQueueLocalMgt_t)); + + uint64_t length; + uint8_t* ptr = (uint8_t *)get_static_mem(ARM_APE_MSG,(uint64_t *)&length); + MEM_SECTION_INFO* pMemSection = GetMsgDdrSection(); + memSectionInit(pMemSection, (uint64_t)ptr, (uint32_t)length, pMemSection->memSectionName); + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + memset((void *)pMsgQueueLocalMgt,0,sizeof(MsgQueueLocalMgt_t)); + + pet_sm_alloc(); + + return; +} + + + + + diff --git a/app/src/msg_transfer_queue.c b/app/src/msg_transfer_queue.c new file mode 100644 index 0000000..a8ca707 --- /dev/null +++ b/app/src/msg_transfer_queue.c @@ -0,0 +1,277 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_queue_common.c +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include +#include "ospHeap.h" +#include "mem_sections.h" +#include "ucp_printf.h" +#include "ucp_utility.h" +#include "pet_sm_mgt.h" +#include "msg_transfer_mem.h" +#include "msg_transfer_mbuffer.h" + +static inline void* get_mbuf_ptr(uint8_t* base, uint32_t size, uint16_t idx) +{ + void *mbuf = (void *)(base + (size * idx)); + return mbuf; +} + +static inline void msg_queue_dl_setup(uint32_t instId, uint32_t qNo, uint8_t* bufBase, uint32_t bufSize, uint32_t numOfBufs) +{ + assert(isPowerOf2(numOfBufs)); + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t *)&pMsgQueueLocalMgt->localDlQueue[instId][qNo]; + ch->bufBase = bufBase; + uint64_t phy_addr; + osp_virt_to_phy(ARM_APE_MSG, (uint64_t)bufBase, (uint64_t *)&phy_addr); + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pDlQueue[instId][qNo]; + memset((void *)chCommon, 0, sizeof(MsgQueueCommonInfo_t)); + chCommon->ringSize = (uint16_t)numOfBufs; + chCommon->ringMask = (uint16_t)(numOfBufs - 1); + chCommon->bufBase = (uint32_t)phy_addr; + chCommon->bufSize = bufSize; + + uint8_t *m = bufBase; + MsgMemBufAttr_t *mbuf; + for (uint32_t k = 0; k < numOfBufs; k++) + { + mbuf = (MsgMemBufAttr_t *)m; + mbuf->qNo = (uint8_t)qNo; + mbuf->state = 1; + mbuf->idx = k; + m += bufSize; + } + + UCP_PRINT_LOG("Setup DL Queue[0x%08x] ch = 0x%lx", qNo, (uint64_t)chCommon); + UCP_PRINT_LOG("qNo = 0x%08x bufBase = 0x%lx bufSize = 0x%08x numOfBufs = 0x%08x",qNo, (uint64_t)bufBase, bufSize, numOfBufs); + + return; +} + +int32_t msg_queue_dl_block_init(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pDlQueue[inst_id][que_id]; + + ch->availableSize = chCommon->bufSize - MSG_MBUF_HEAD_SIZE; + ch->offset = 0; + ch->msgCnt = 0; + + return SUCCESS; +} + +int32_t msg_queue_dl_alloc_buf(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pDlQueue[inst_id][que_id]; + +#if 0 + ucp_spin_lock(&lock_dl_tx_alloc); + ch->idx = chCommon->alloc & chCommon->ringMask; + chCommon->alloc++; + ucp_spin_unlock(&lock_dl_tx_alloc); +#else + ch->idx = atomic_fetch_add(&chCommon->alloc,1) & chCommon->ringMask; +#endif + + MsgMemBufAttr_t *mbuf = (MsgMemBufAttr_t *)get_mbuf_ptr(ch->bufBase, chCommon->bufSize, ch->idx); + ch->bufAddr = (uint64_t)&mbuf[1]; + + UCP_PRINT_LOG("msg_queue_dl_alloc_buf,buf:0x%lx,availableSize:0x%08x,offset:0x%08x", ch->bufAddr, ch->availableSize, ch->offset); + + return SUCCESS; +} + +int32_t msg_queue_dl_put_buf(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + if (ch->msgCnt == 0) + { + //ch->offset + return SUCCESS; + } + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pDlQueue[inst_id][que_id]; + + MsgMemBufAttr_t *mbuf = (MsgMemBufAttr_t *)get_mbuf_ptr(ch->bufBase, chCommon->bufSize, ch->idx); + mbuf->msgSize = ch->offset; + +#if 0 + ucp_spin_lock(&lock_dl_tx_put); + chCommon->in++; + ucp_spin_unlock(&lock_dl_tx_put); +#else + atomic_fetch_add(&chCommon->in,1); +#endif + + UCP_PRINT_LOG("msg_queue_dl_put_buf[%d] chCommon info alloc[%d],in[%d],out[%d]",que_id,chCommon->alloc,chCommon->in,chCommon->out); + + return SUCCESS; +} + +static inline void msg_queue_dl_free(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t *)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pDlQueue[inst_id][que_id]; + + memset((void *)ch, 0, sizeof(MsgQueueLocalInfo_t)); + memset((void *)chCommon, 0, sizeof(MsgQueueCommonInfo_t)); + + return; +} + +static inline void msg_queue_ul_setup(uint32_t instId, uint32_t qNo, uint8_t* bufBase, uint32_t bufSize, uint32_t numOfBufs) +{ + assert(isPowerOf2(numOfBufs)); + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t *)&pMsgQueueLocalMgt->localUlQueue[instId][qNo]; + ch->bufBase = bufBase; + uint64_t phy_addr; + osp_virt_to_phy(ARM_APE_MSG, (uint64_t)bufBase, (uint64_t *)&phy_addr); + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pUlQueue[instId][qNo]; + memset((void *)chCommon, 0, sizeof(MsgQueueCommonInfo_t)); + chCommon->ringSize = (uint16_t)numOfBufs; + chCommon->ringMask = (uint16_t)(numOfBufs - 1); + chCommon->bufBase = (uint32_t)phy_addr; + chCommon->bufSize = bufSize; + + osp_virt_to_phy(ECS_SM, (uint64_t)ch->bufIdxBase, (uint64_t *)&phy_addr); + chCommon->bufIdxBase = (uint32_t)phy_addr; + + uint8_t *m = bufBase; + MsgMemBufAttr_t *mbuf; + for (uint32_t k = 0; k < numOfBufs; k++) + { + mbuf = (MsgMemBufAttr_t *)m; + mbuf->qNo = (uint8_t)qNo; + mbuf->state = 1; + mbuf->idx = k; + m += bufSize; + } + + UCP_PRINT_LOG("Setup UL Queue[0x%08x] ch = 0x%lx", qNo, (uint64_t)chCommon); + UCP_PRINT_LOG("qNo = 0x%08x bufBase = 0x%lx bufSize = 0x%08x numOfBufs = 0x%08x",qNo, (uint64_t)bufBase, bufSize, numOfBufs); + + return; +} + + +uint8_t* msg_queue_ul_get_buf(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t*)&pMsgQueueLocalMgt->localUlQueue[inst_id][que_id]; + uint16_t* pIdxBase = (uint16_t *)ch->bufIdxBase; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pUlQueue[inst_id][que_id]; + + uint32_t avail = chCommon->in - chCommon->out; + if (0 == avail) + { + return NULL; + } + + uint16_t idx = chCommon->out & chCommon->ringMask; + uint16_t bufIdx = pIdxBase[idx]; + + MsgMemBufAttr_t *mbuf = (MsgMemBufAttr_t *)get_mbuf_ptr(ch->bufBase, chCommon->bufSize, bufIdx); + uint8_t *buf = (uint8_t *)&mbuf[1]; + chCommon->out++; + + return buf; +} + +static inline void msg_queue_ul_free(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueLocalInfo_t* ch = (MsgQueueLocalInfo_t *)&pMsgQueueLocalMgt->localUlQueue[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pPetSmLocalMgt->pUlQueue[inst_id][que_id]; + + memset((void *)ch, 0, sizeof(MsgQueueLocalInfo_t)); + memset((void *)chCommon, 0, sizeof(MsgQueueCommonInfo_t)); + + return; +} + +void msg_transfer_queue_setup(uint8_t inst_id, uint8_t que_id) +{ + MEM_SECTION_INFO* pMemSection = GetMsgDdrSection(); + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueCfg_t* pQueueCfg = (MsgQueueCfg_t *)&pMsgQueueLocalMgt->localQueueCfg[inst_id][que_id]; + memset((void *)&pMsgQueueLocalMgt->localDlQueue[inst_id][que_id],0,sizeof(MsgQueueLocalInfo_t)); + memset((void *)&pMsgQueueLocalMgt->localUlQueue[inst_id][que_id],0,sizeof(MsgQueueLocalInfo_t)); + + uint16_t block_num; + uint32_t block_size; + uint8_t* ptr; + + block_num = pQueueCfg->tx_queue.block_num; + block_size = pQueueCfg->tx_queue.block_size; + ptr = (uint8_t *)memSectionAlloc(pMemSection, block_num*block_size, MEM_ALIGNED_4BYTES, "dlAddr"); + msg_queue_dl_setup(inst_id, que_id, ptr, block_size, block_num); + + block_num = pQueueCfg->rx_queue.block_num; + block_size = pQueueCfg->rx_queue.block_size; + memset((void *)pPetSmLocalMgt->pBufIdxBase, 0, (block_num*sizeof(uint16_t))); + pMsgQueueLocalMgt->localUlQueue[inst_id][que_id].bufIdxBase = (uint8_t *)pPetSmLocalMgt->pBufIdxBase; + pPetSmLocalMgt->pBufIdxBase += block_num; + ptr = (uint8_t *)memSectionAlloc(pMemSection, block_num*block_size, MEM_ALIGNED_4BYTES, "ulAddr"); + msg_queue_ul_setup(inst_id, que_id, (uint8_t *)ptr, block_size, block_num); + + return; +} + + +void msg_transfer_queue_free(uint8_t inst_id, uint8_t que_id) +{ + MsgQueueLocalMgt_t* pMsgQueueLocalMgt = get_msg_queue_local_mgt(); + MsgQueueCfg_t* pLocalQueueCfg = (MsgQueueCfg_t *)&pMsgQueueLocalMgt->localQueueCfg[inst_id][que_id]; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + MsgQueueCfg_t* pCommonQueueCfg = pPetSmLocalMgt->pQueueCfg[inst_id][que_id]; + + memset((void *)pLocalQueueCfg, 0, sizeof(MsgQueueCfg_t)); + memset((void *)pCommonQueueCfg, 0, sizeof(MsgQueueCfg_t)); + + msg_queue_dl_free(inst_id,que_id); + msg_queue_ul_free(inst_id,que_id); + + return; +} + + diff --git a/app/src/pet_sm_mgt.s.c b/app/src/pet_sm_mgt.s.c new file mode 100644 index 0000000..dd8234e --- /dev/null +++ b/app/src/pet_sm_mgt.s.c @@ -0,0 +1,60 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2020 PicocomTech. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ecs_sm_mgt.c +// Author : xianfeng.du +// Created On : 2022-06-27 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include "ucp_printf.h" +#include "mem_sections.h" +#include "ucp_utility.h" +#include "pet_sm_mgt.h" +#include "ospHeap.h" + +PetSmLocalMgt_t gPetSmLocalMgt; +PetSmLocalMgt_t* get_pet_sm_local_mgt(void) +{ + return (PetSmLocalMgt_t *)&gPetSmLocalMgt; +} + +void pet_sm_alloc(void) +{ + UCP_PRINT_LOG("start allocating pet share memory"); + uint32_t i,j; + uint64_t length; + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + + uint8_t* ptr = (uint8_t *)get_static_mem(PET_SM,(uint64_t *)&length); + MEM_SECTION_INFO* pMemSection = GetPetSramSection(); + length = PET_SRAM_SIZE; + memSectionInit(pMemSection, (uint64_t)ptr, (uint32_t)length, pMemSection->memSectionName); + + pPetSmLocalMgt->pHandshake = (UcpHandshake_t *)memSectionAlloc(pMemSection, sizeof(UcpHandshake_t), MEM_ALIGNED_4BYTES, "pHandshake"); + pPetSmLocalMgt->pSyncInfo = (SyncInfo_t *)memSectionAlloc(pMemSection, sizeof(SyncInfo_t), MEM_ALIGNED_4BYTES, "pSyncInfo"); + pPetSmLocalMgt->pBufIdxBase = (uint16_t *)memSectionAlloc(pMemSection, MAX_INSTANCE_NUM*UCP4008_TRAFFIC_MAX_NUM*MAX_M_BUFFER_NUM*sizeof(uint16_t), MEM_ALIGNED_4BYTES, "pBufIdxBase"); + + for (i = 0; i < MAX_INSTANCE_NUM; i++) { + for (j = 0; j < UCP4008_TRAFFIC_MAX_NUM; j++) { + pPetSmLocalMgt->pQueueCfg[i][j] = (MsgQueueCfg_t *)memSectionAlloc(pMemSection, sizeof(MsgQueueCfg_t), MEM_ALIGNED_4BYTES, "pQueueCfg"); + } + } + + for (i = 0; i < MAX_INSTANCE_NUM; i++) { + for (j = 0; j < UCP4008_TRAFFIC_MAX_NUM; j++) { + pPetSmLocalMgt->pDlQueue[i][j] = (MsgQueueCommonInfo_t *)memSectionAlloc(pMemSection, sizeof(MsgQueueCommonInfo_t), MEM_ALIGNED_64BYTES, "pDlQueue"); + pPetSmLocalMgt->pUlQueue[i][j] = (MsgQueueCommonInfo_t *)memSectionAlloc(pMemSection, sizeof(MsgQueueCommonInfo_t), MEM_ALIGNED_64BYTES, "pUlQueue"); + } + } + + return; +} + + + diff --git a/app/src/ucp_handshake.c b/app/src/ucp_handshake.c new file mode 100644 index 0000000..3161086 --- /dev/null +++ b/app/src/ucp_handshake.c @@ -0,0 +1,44 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_handshake.c +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include "ucp_printf.h" +#include "ucp_utility.h" +#include "ucp_handshake.h" +#include "msg_transfer_mem.h" +#include "pet_sm_mgt.h" + +//master is the core which controlled the handshake flow +void ucp_handshake(void) +{ + uint32_t core_id = NPU_CORE_ID; + uint32_t request= (core_id + HANDSHKAE_REQ_VALUE); + volatile uint32_t response; + + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + UcpHandshake_t* pHandshake = pPetSmLocalMgt->pHandshake; + + pHandshake->request[core_id] = request; + UCP_PRINT_DEBUG("core[0x%08x] sent handshake request message,value[0x%08x].",core_id,request); + + while(1) { + response = pHandshake->response[core_id]; + if (response == (core_id + HANDSHKAE_RESP_VALUE)) { + UCP_PRINT_DEBUG("core[0x%08x] recieved handshake response message,value[0x%08x].",core_id,response); + break; + } + } + + return; +} + diff --git a/app/src/ucp_utility.c b/app/src/ucp_utility.c new file mode 100644 index 0000000..c5e7e31 --- /dev/null +++ b/app/src/ucp_utility.c @@ -0,0 +1,65 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_utility.c +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include "typedef.h" +#include "mem_sections.h" +#include "ucp_utility.h" +#include "ospHeap.h" + +#ifdef UCP_SPIN_LOCK +pthread_spinlock_t lock_dl_tx_alloc; +pthread_spinlock_t lock_dl_tx_put; +void ucp_spinlock_init() +{ + pthread_spin_init((pthread_spinlock_t *)&lock_dl_tx_alloc,PTHREAD_PROCESS_PRIVATE);//PTHREAD_PROCESS_SHARED + pthread_spin_init((pthread_spinlock_t *)&lock_dl_tx_put,PTHREAD_PROCESS_PRIVATE);// + return; +} +#else +void ucp_spinlock_init() +{ + return; +} +#endif + +int32_t isPowerOf2(uint32_t n) +{ + return n && !(n & (n - 1)); +} + +void ucp_cache_writeback(uint8_t* buf, uint32_t length) +{ +#ifdef CACHE_ENABLE + osp_clean_dcache_area((void*)buf, length); +#endif + return; +} + +void ucp_cache_invalid(uint8_t* buf, uint32_t length) +{ +#ifdef CACHE_ENABLE + osp_invalid_dcache_area(ARM_APE_MSG,(uint64_t)buf,length); +#endif + return; +} + +void ucp_cache_flush(uint8_t* buf, uint32_t length) +{ +#ifdef CACHE_ENABLE + osp_flush_dcache_area((void*)buf, length); +#endif + return; +} + + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..82808db --- /dev/null +++ b/build.sh @@ -0,0 +1,54 @@ +set -e + +usage() { + echo "usage: $0 [variants] [--cache] [--jesd] [--test caseid] " 1>&2 + msg=${1:-} + if [ ! -z "${msg}" ]; then + echo "error:$1" + fi + exit 1 +} + +variants= +fronthaul_option="cpri" +cache_option="no" +test_option="no" +case_id=0 + +while [[ "$#" > 0 ]]; do + case $1 in + --cache) cache_option="yes"; shift;; + + --cpri) fronthaul_option="cpri"; shift;; + --jesd) fronthaul_option="jesd"; shift;; + + --test) test_option="yes"; + if [[ ! -z "$2" ]] && [[ -n "$(echo $2 | sed -n " /^[0-9]\+$/p")" ]]; then + case_id=$2; shift; + fi + shift;; + + --*| -*) usage "unknown option $1"; exit 1;; + *) variants+=" $1"; shift;; + esac; +done + +export DIR_ROOT=$(cd `dirname "$0"`;pwd) +#echo "# script_dir:${DIR_ROOT}" +export RFIC_DIR=${DIR_ROOT}/driver/rfic +export BUILD_DIR=${DIR_ROOT}/build + +if [ -d ${BUILD_DIR} ]; then + rm -rf ${BUILD_DIR} +fi + +if [[ "${fronthaul_option}" == "jesd" ]]; then + cd ${RFIC_DIR}/ + make clean + make lib CROSS_CC=aarch64-linux-gnu- + cp ${RFIC_DIR}/librfic.a ${DIR_ROOT}/lib +fi + +cd ${DIR_ROOT}/ +make cache_option=${cache_option} fronthaul_option=${fronthaul_option} test_option=${test_option} test_id=${case_id} + diff --git a/driver/arm_csu/inc/arm_csu.h b/driver/arm_csu/inc/arm_csu.h new file mode 100644 index 0000000..01b4c4f --- /dev/null +++ b/driver/arm_csu/inc/arm_csu.h @@ -0,0 +1,73 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : arm_csu.h +// Author : xinxin.li +// Created On : 2022-11-23 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#ifndef _ARM_CSU_H_ +#define _ARM_CSU_H_ + +#include "typedef.h" + +#define CSU_DEV_MAP_LEN 0xA00 + +#define VIR_ADDR_VAL(base, offset) (*((volatile uint32_t*)(base+offset))) + +typedef struct _tagCsuDmaReg +{ + uint32_t dmaAddrL; + uint32_t dmaAddrH; + uint32_t dmaYStepL; + uint32_t dmaYStepH; + uint32_t dmaZStepL; + uint32_t dmaZStepH; + uint32_t dmaXNum; + uint32_t dmaYNum; + uint32_t dmaAllNum : 24; + uint32_t dmaGran : 4; + uint32_t dmaSize : 4; +}stCsuDmaReg; + +typedef struct _tagCsuDmaCmdL +{ + uint32_t rCmd : 2; + uint32_t wCmd : 2; + uint32_t dmaType : 1; + uint32_t cacheMode : 1; + uint32_t continueNext : 1; + uint32_t continueLast : 1; + uint32_t idSrc : 5; + uint32_t idDst : 5; + uint32_t dmaTag : 5; + uint32_t flush : 1; + uint32_t ecpriEnd : 3; + uint32_t zNumValid : 1; + uint32_t allOrYNum : 2; + uint32_t allNumSel : 1; + uint32_t stall : 1; +}stCsuDmaCmdL; + +int arm_csu_init(); + +// 0: not finished, 1: finished +int get_arm_csu_status(uint8_t tag); + +int arm_csu_wait_done(uint8_t tag); + +int arm_csu_wait_all_done(void); + +int get_free_reg_group(uint8_t tag); + +int get_free_channel(); + +int arm_csu_dma_1D_transfer(uint64_t addrSrc, uint64_t addrDst, uint32_t dataLen); + +#endif + diff --git a/driver/arm_csu/inc/memcpy_csu.h b/driver/arm_csu/inc/memcpy_csu.h new file mode 100644 index 0000000..9fc7822 --- /dev/null +++ b/driver/arm_csu/inc/memcpy_csu.h @@ -0,0 +1,29 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : memcpy_csu.h +// Author : xianfeng.du +// Created On : 2022-12-1 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#ifndef _MEMCPY_CSU_H_ +#define _MEMCPY_CSU_H_ + +#include "typedef.h" + +typedef enum eUcpMemCpyCsuType { + STACK2MSG, + MSG2STACK, + STACK2STACK +} UcpMemcpyCsuType_e; + +void memcpy_csu_stack2stack(uint64_t dst_phy_addr, uint64_t src_phy_addr, uint32_t size,uint8_t check_flag); +void memcpy_csu_stack_and_msg(uint64_t stack_phy_addr, uint64_t msg_virt_addr, uint32_t size,UcpMemcpyCsuType_e type, uint8_t check_flag); + +#endif + diff --git a/driver/arm_csu/inc/ucp_csu.h b/driver/arm_csu/inc/ucp_csu.h new file mode 100644 index 0000000..1cedc2b --- /dev/null +++ b/driver/arm_csu/inc/ucp_csu.h @@ -0,0 +1,203 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ucp_csu.h +// Author : xinxin.li +// Created On : 2022-11-23 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef _UCP_CSU_H_ +#define _UCP_CSU_H_ + +#define AP_CSU_BASE 0x04258000 + +#define AP_CSU_ALLPENDEVENTMASK (0x0*4) +#define AP_CSU_EVENTMASK (0x2*4) +#define AP_CSU_INTMASK (0x4*4) +#define AP_CSU_ELEVELMASK (0x5*4) +#define AP_CSU_TAGMASK0 (0x6*4) +#define AP_CSU_TAGMASK1 (0x7*4) +#define AP_CSU_TAGMASK2 (0x8*4) +#define AP_CSU_TAGMASK3 (0x9*4) +#define AP_CSU_ARMCMDRECV (0xA*4) +#define AP_CSU_FETCHMODE_CACHEMODE (0xB*4) +#define AP_CSU_ALLPENDEVENT0 (0xC*4) +#define AP_CSU_ALLPENDEVENT1 (0xD*4) +#define AP_CSU_EM_BS_SMSEL_PREDATANUM (0x10*4) +#define AP_CSU_FINDDMATAG (0x14*4) +#define AP_CSU_CMDFIFO0_CMD (0x18*4) +#define AP_CSU_CMDFIFO1_CMD (0x19*4) +#define AP_CSU_CMDFIFO2_CMD (0x1A*4) +#define AP_CSU_CMDFIFO3_CMD (0x1B*4) +#define AP_CSU_CMDFIFO0_NUM (0x1C*4) +#define AP_CSU_CMDFIFO1_NUM (0x1D*4) +#define AP_CSU_CMDFIFO2_NUM (0x1E*4) +#define AP_CSU_CMDFIFO3_NUM (0x1F*4) +#define AP_CSU_PRICMDVALID0 (0x20*4) +#define AP_CSU_PRICMDVALID1 (0x21*4) +#define AP_CSU_CMDECODATAL32BIT0 (0x24*4) +#define AP_CSU_CMDECODATAL32BIT1 (0x25*4) +#define AP_CSU_CMDHIGHDATA (0x28*4) +#define AP_CSU_CMDFIFO0 (0x2C*4) +#define AP_CSU_CMDFIFO1 (0x2D*4) +#define AP_CSU_CMDFIFO2 (0x2E*4) +#define AP_CSU_CMDFIFO3 (0x2F*4) +#define AP_CSU_CMDFIFO0_TAGNUM (0x34*4) +#define AP_CSU_CMDFIFO1_TAGNUM (0x35*4) +#define AP_CSU_CMDFIFO2_TAGNUM (0x36*4) +#define AP_CSU_CMDFIFO3_TAGNUM (0x37*4) +#define AP_CSU_DMASTATUS (0x38*4) + +#define AP_CSU_DMAADDRL0 (0x200*4) +#define AP_CSU_DMAADDRH0 (0x201*4) +#define AP_CSU_DMAYSTEPL0 (0x202*4) +#define AP_CSU_DMAYSTEPH0 (0x203*4) +#define AP_CSU_DMAZSTEPL0 (0x204*4) +#define AP_CSU_DMAZSTEPH0 (0x205*4) +#define AP_CSU_DMAYNUMXNUM0 (0x206*4) +#define AP_CSU_DMASIZEGRANALLNUM0 (0x207*4) + +#define AP_CSU_DMAADDRL1 (0x208*4) +#define AP_CSU_DMAADDRH1 (0x209*4) +#define AP_CSU_DMAYSTEPL1 (0x20A*4) +#define AP_CSU_DMAYSTEPH1 (0x20B*4) +#define AP_CSU_DMAZSTEPL1 (0x20C*4) +#define AP_CSU_DMAZSTEPH1 (0x20D*4) +#define AP_CSU_DMAYNUMXNUM1 (0x20E*4) +#define AP_CSU_DMASIZEGRANALLNUM1 (0x20F*4) + +#define AP_CSU_DMAADDRL2 (0x210*4) +#define AP_CSU_DMAADDRH2 (0x211*4) +#define AP_CSU_DMAYSTEPL2 (0x212*4) +#define AP_CSU_DMAYSTEPH2 (0x213*4) +#define AP_CSU_DMAZSTEPL2 (0x214*4) +#define AP_CSU_DMAZSTEPH2 (0x215*4) +#define AP_CSU_DMAYNUMXNUM2 (0x216*4) +#define AP_CSU_DMASIZEGRANALLNUM2 (0x217*4) + +#define AP_CSU_DMAADDRL3 (0x218*4) +#define AP_CSU_DMAADDRH3 (0x219*4) +#define AP_CSU_DMAYSTEPL3 (0x21A*4) +#define AP_CSU_DMAYSTEPH3 (0x21B*4) +#define AP_CSU_DMAZSTEPL3 (0x21C*4) +#define AP_CSU_DMAZSTEPH3 (0x21D*4) +#define AP_CSU_DMAYNUMXNUM3 (0x21E*4) +#define AP_CSU_DMASIZEGRANALLNUM3 (0x21F*4) + +#define AP_CSU_DMAADDRL4 (0x220*4) +#define AP_CSU_DMAADDRH4 (0x221*4) +#define AP_CSU_DMAYSTEPL4 (0x222*4) +#define AP_CSU_DMAYSTEPH4 (0x223*4) +#define AP_CSU_DMAZSTEPL4 (0x224*4) +#define AP_CSU_DMAZSTEPH4 (0x225*4) +#define AP_CSU_DMAYNUMXNUM4 (0x226*4) +#define AP_CSU_DMASIZEGRANALLNUM4 (0x227*4) + +#define AP_CSU_DMAADDRL5 (0x228*4) +#define AP_CSU_DMAADDRH5 (0x229*4) +#define AP_CSU_DMAYSTEPL5 (0x22A*4) +#define AP_CSU_DMAYSTEPH5 (0x22B*4) +#define AP_CSU_DMAZSTEPL5 (0x22C*4) +#define AP_CSU_DMAZSTEPH5 (0x22D*4) +#define AP_CSU_DMAYNUMXNUM5 (0x22E*4) +#define AP_CSU_DMASIZEGRANALLNUM5 (0x22F*4) + +#define AP_CSU_DMAADDRL6 (0x230*4) +#define AP_CSU_DMAADDRH6 (0x231*4) +#define AP_CSU_DMAYSTEPL6 (0x232*4) +#define AP_CSU_DMAYSTEPH6 (0x233*4) +#define AP_CSU_DMAZSTEPL6 (0x234*4) +#define AP_CSU_DMAZSTEPH6 (0x235*4) +#define AP_CSU_DMAYNUMXNUM6 (0x236*4) +#define AP_CSU_DMASIZEGRANALLNUM6 (0x237*4) + +#define AP_CSU_DMAADDRL7 (0x238*4) +#define AP_CSU_DMAADDRH7 (0x239*4) +#define AP_CSU_DMAYSTEPL7 (0x23A*4) +#define AP_CSU_DMAYSTEPH7 (0x23B*4) +#define AP_CSU_DMAZSTEPL7 (0x23C*4) +#define AP_CSU_DMAZSTEPH7 (0x23D*4) +#define AP_CSU_DMAYNUMXNUM7 (0x23E*4) +#define AP_CSU_DMASIZEGRANALLNUM7 (0x23F*4) + +#define AP_CSU_DMAADDRL8 (0x240*4) +#define AP_CSU_DMAADDRH8 (0x241*4) +#define AP_CSU_DMAYSTEPL8 (0x242*4) +#define AP_CSU_DMAYSTEPH8 (0x243*4) +#define AP_CSU_DMAZSTEPL8 (0x244*4) +#define AP_CSU_DMAZSTEPH8 (0x245*4) +#define AP_CSU_DMAYNUMXNUM8 (0x246*4) +#define AP_CSU_DMASIZEGRANALLNUM8 (0x247*4) + +#define AP_CSU_DMAADDRL9 (0x248*4) +#define AP_CSU_DMAADDRH9 (0x249*4) +#define AP_CSU_DMAYSTEPL9 (0x24A*4) +#define AP_CSU_DMAYSTEPH9 (0x24B*4) +#define AP_CSU_DMAZSTEPL9 (0x24C*4) +#define AP_CSU_DMAZSTEPH9 (0x24D*4) +#define AP_CSU_DMAYNUMXNUM9 (0x24E*4) +#define AP_CSU_DMASIZEGRANALLNUM9 (0x24F*4) + +#define AP_CSU_DMAADDRL10 (0x250*4) +#define AP_CSU_DMAADDRH10 (0x251*4) +#define AP_CSU_DMAYSTEPL10 (0x252*4) +#define AP_CSU_DMAYSTEPH10 (0x253*4) +#define AP_CSU_DMAZSTEPL10 (0x254*4) +#define AP_CSU_DMAZSTEPH10 (0x255*4) +#define AP_CSU_DMAYNUMXNUM10 (0x256*4) +#define AP_CSU_DMASIZEGRANALLNUM10 (0x257*4) + +#define AP_CSU_DMAADDRL11 (0x258*4) +#define AP_CSU_DMAADDRH11 (0x259*4) +#define AP_CSU_DMAYSTEPL11 (0x25A*4) +#define AP_CSU_DMAYSTEPH11 (0x25B*4) +#define AP_CSU_DMAZSTEPL11 (0x25C*4) +#define AP_CSU_DMAZSTEPH11 (0x25D*4) +#define AP_CSU_DMAYNUMXNUM11 (0x25E*4) +#define AP_CSU_DMASIZEGRANALLNUM11 (0x25F*4) + +#define AP_CSU_DMAADDRL12 (0x260*4) +#define AP_CSU_DMAADDRH12 (0x261*4) +#define AP_CSU_DMAYSTEPL12 (0x262*4) +#define AP_CSU_DMAYSTEPH12 (0x263*4) +#define AP_CSU_DMAZSTEPL12 (0x264*4) +#define AP_CSU_DMAZSTEPH12 (0x265*4) +#define AP_CSU_DMAYNUMXNUM12 (0x266*4) +#define AP_CSU_DMASIZEGRANALLNUM12 (0x267*4) + +#define AP_CSU_DMAADDRL13 (0x268*4) +#define AP_CSU_DMAADDRH13 (0x269*4) +#define AP_CSU_DMAYSTEPL13 (0x26A*4) +#define AP_CSU_DMAYSTEPH13 (0x26B*4) +#define AP_CSU_DMAZSTEPL13 (0x26C*4) +#define AP_CSU_DMAZSTEPH13 (0x26D*4) +#define AP_CSU_DMAYNUMXNUM13 (0x26E*4) +#define AP_CSU_DMASIZEGRANALLNUM13 (0x26F*4) + +#define AP_CSU_DMAADDRL14 (0x270*4) +#define AP_CSU_DMAADDRH14 (0x271*4) +#define AP_CSU_DMAYSTEPL14 (0x272*4) +#define AP_CSU_DMAYSTEPH14 (0x273*4) +#define AP_CSU_DMAZSTEPL14 (0x274*4) +#define AP_CSU_DMAZSTEPH14 (0x275*4) +#define AP_CSU_DMAYNUMXNUM14 (0x276*4) +#define AP_CSU_DMASIZEGRANALLNUM14 (0x277*4) + +#define AP_CSU_DMAADDRL15 (0x278*4) +#define AP_CSU_DMAADDRH15 (0x279*4) +#define AP_CSU_DMAYSTEPL15 (0x27A*4) +#define AP_CSU_DMAYSTEPH15 (0x27B*4) +#define AP_CSU_DMAZSTEPL15 (0x27C*4) +#define AP_CSU_DMAZSTEPH15 (0x27D*4) +#define AP_CSU_DMAYNUMXNUM15 (0x27E*4) +#define AP_CSU_DMASIZEGRANALLNUM15 (0x27F*4) + + + +#endif diff --git a/driver/arm_csu/src/arm_csu.c b/driver/arm_csu/src/arm_csu.c new file mode 100644 index 0000000..2c70797 --- /dev/null +++ b/driver/arm_csu/src/arm_csu.c @@ -0,0 +1,230 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : arm_csu.c +// Author : xinxin.li +// Created On : 2022-11-23 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "ucp_csu.h" +#include "arm_csu.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ucp_utility.h" +#include "ucp_printf.h" +#include "drv_init.h" + + +uint8_t* virMemAddr = NULL; +int arm_csu_init() +{ + if (-1 == g_drv_mem_fd) + { +// printf("open dev mem. \r\n"); + g_drv_mem_fd = open("/dev/mem", O_RDWR|O_SYNC); + if (0 > g_drv_mem_fd) + { + UCP_PRINT_ERROR("open /dev/mem error\n"); + return -1; + } + } + +// printf("start mmap. \r\n"); + virMemAddr = (uint8_t*)mmap(NULL, CSU_DEV_MAP_LEN, PROT_READ|PROT_WRITE, MAP_SHARED, g_drv_mem_fd, AP_CSU_BASE); + if ((uint8_t*)(-1) == virMemAddr) + { + UCP_PRINT_ERROR("mmap error!!"); + return -1; + } + +// printf("csu init. \r\n"); + int i; + for (i = 0; i < 16; i++) + { + *((volatile uint32_t*)(virMemAddr+AP_CSU_DMAYNUMXNUM0) + (i<<3)) = ((4<<16)|1024); + *((volatile uint32_t*)(virMemAddr+AP_CSU_DMAYSTEPL0) + (i<<3)) = 1024; + *((volatile uint32_t*)(virMemAddr+AP_CSU_DMAYSTEPH0) + (i<<3)) = 0; + *((volatile uint32_t*)(virMemAddr+AP_CSU_DMAZSTEPL0) + (i<<3)) = 4096; + *((volatile uint32_t*)(virMemAddr+AP_CSU_DMAZSTEPH0) + (i<<3)) = 0; + } + + *((volatile uint32_t*)(virMemAddr+AP_CSU_EM_BS_SMSEL_PREDATANUM)) = (0x2A<<16) | (0x0<<14) | (0x5<<5) | 0x9; // (0x3F<<16); + *((volatile uint32_t*)(virMemAddr+AP_CSU_EM_BS_SMSEL_PREDATANUM)) = (0x2A<<16) | (0x1<<14) | (0x5<<5) | 0x9; + *((volatile uint32_t*)(virMemAddr+AP_CSU_EM_BS_SMSEL_PREDATANUM)) = (0x2A<<16) | (0x2<<14) | (0x5<<5) | 0x9; + *((volatile uint32_t*)(virMemAddr+AP_CSU_EM_BS_SMSEL_PREDATANUM)) = (0x2A<<16) | (0x3<<14) | (0x5<<5) | 0x9; + + *((volatile uint32_t*)(virMemAddr+AP_CSU_FINDDMATAG)) = 0x60; + *((volatile uint32_t*)(virMemAddr+AP_CSU_TAGMASK0)) = 0xFFFFFFFF; + *((volatile uint32_t*)(virMemAddr+AP_CSU_TAGMASK1)) = 0xFFFFFFFF; + *((volatile uint32_t*)(virMemAddr+AP_CSU_TAGMASK2)) = 0xFFFFFFFF; + *((volatile uint32_t*)(virMemAddr+AP_CSU_TAGMASK3)) = 0xFFFFFFFF; + + return 0; +} + +int get_arm_csu_status(uint8_t tag) +{ + if (31 < tag) + { + UCP_PRINT_ERROR("input para error! tag = %d. \r\n", tag); + return -1; + } + + uint32_t status = VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASTATUS); + return (status&(1<1) +//tag 4 5 6 7 1(2->3) +//tag 8 9 10 11 2(4->5) +//tag 12 13 14 15 3(6->7) +//tag 16 17 18 19 4(8->9) +//tag 20 21 22 23 5(10->11) +//tag 24 25 26 27 6(12->13) +//tag 28 29 30 31 7(14->15) + +// get unused register group according to tag number +int get_free_reg_group(uint8_t tag) +{ + if (31 < tag) + { + return -1; + } + + uint32_t dmaStatus = VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASTATUS); + uint8_t fifoNum = tag % 4; + uint8_t regGroup = tag / 4; + if (0 == (dmaStatus & (0xF<>16) & 0xFF; + int ret = regGroup | (fifoNum<<8) | (tag<<16); + return ret; + } + } + } + } +} + +int arm_csu_dma_1D_transfer(uint64_t addrSrc, uint64_t addrDst, uint32_t dataLen) +{ + uint8_t regGroup = 0; + uint8_t fifoNum = 0; + uint8_t tag = 0; + uint32_t temp = get_free_channel(); +// printf("get free channle: 0x%x. \r\n", temp); + + regGroup = temp & 0xFF; + fifoNum = (temp>>8) & 0xFF; + tag = (temp>>16)&0xFF; + + uint8_t offset = regGroup << 6; + // src reg + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRL0 + offset) = addrSrc & 0xFFFFFFFF; + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRH0 + offset) = addrSrc >> 32; + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASIZEGRANALLNUM0 + offset) = (0xF<<28) | dataLen; + // dst reg + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRL1 + offset) = addrDst & 0xFFFFFFFF; + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRH1 + offset) = addrDst >> 32; + VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASIZEGRANALLNUM1 + offset) = (0xE<<24) | dataLen; // write global, size=0 + + VIR_ADDR_VAL(virMemAddr, AP_CSU_CMDHIGHDATA) = 0; + stCsuDmaCmdL dmaCmdL; + dmaCmdL.dmaType = 1; + dmaCmdL.idSrc = 0 + (regGroup<<1); + dmaCmdL.idDst = 1 + (regGroup<<1); + dmaCmdL.dmaTag = tag; + //(uint32_t)(VIR_ADDR_VAL(virMemAddr, AP_CSU_CMDFIFO0+(fifoNum<<2))) = (uint32_t)(*((uint32_t*)(&dmaCmdL))); + memcpy((uint32_t*)(virMemAddr+AP_CSU_CMDFIFO0+(fifoNum<<2)), (uint32_t*)(&dmaCmdL), 4); + + return tag; +} + + + diff --git a/driver/arm_csu/src/memcpy_csu.c b/driver/arm_csu/src/memcpy_csu.c new file mode 100644 index 0000000..b9866ab --- /dev/null +++ b/driver/arm_csu/src/memcpy_csu.c @@ -0,0 +1,68 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : arm_csu.c +// Author : xiafeng.du +// Created On : 2022-11-23 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "typedef.h" +#include "arm_csu.h" +#include "ospHeap.h" +#include "ucp_printf.h" +#include "memcpy_csu.h" + +//STACK mem type:cacheable, MSG mem type:non-cacheable, +//the function only works for the transfer between cacheable STACK mem and MSG non-cacheable mem +void memcpy_csu_stack2stack(uint64_t dst_phy_addr, uint64_t src_phy_addr, uint32_t size,uint8_t check_flag) +{ + uint8_t tag = arm_csu_dma_1D_transfer(src_phy_addr, dst_phy_addr, size); + + if (check_flag) + { + arm_csu_wait_done(tag); + } + return; +} + + +void memcpy_csu_stack_and_msg(uint64_t stack_phy_addr, uint64_t msg_virt_addr, uint32_t size,UcpMemcpyCsuType_e type, uint8_t check_flag) +{ + uint64_t msg_phy_addr = 0; + uint64_t src_phy_addr = 0; + uint64_t dst_phy_addr = 0; + uint8_t tag = 0; + + osp_virt_to_phy(ARM_APE_MSG, msg_virt_addr, &msg_phy_addr); + + switch(type) + { + case STACK2MSG: + src_phy_addr = stack_phy_addr; + dst_phy_addr = msg_phy_addr; + break; + case MSG2STACK: + src_phy_addr = msg_phy_addr; + dst_phy_addr = stack_phy_addr; + break; + default: + UCP_PRINT_ERROR("memcpy_csu type[%d] error.",type); + return; + //break; + } + tag = arm_csu_dma_1D_transfer(src_phy_addr, dst_phy_addr, size); + + if (check_flag) { + arm_csu_wait_done(tag); + } + return; +} + + + + diff --git a/driver/cache/Makefile b/driver/cache/Makefile new file mode 100644 index 0000000..01ade28 --- /dev/null +++ b/driver/cache/Makefile @@ -0,0 +1,25 @@ +export ARCH=arm64 +export CROSS_COMPILE=aarch64-linux-gnu- +#KERNELDIR = /public/liweihua/workspace/linux-5.15.40 +KERNELDIR = /public/liweihua/workspace/linux-5.10.165 +OBJ = SM_DDR + +PWD = $(shell pwd) +# Kernel modules +ifeq ($(OBJ),SM_DDR) + obj-m=ucp4008cache.o + #ucp4008cache-objs=osp_sm_ddr.o + #ucp4008cache-objs = cache.o osp_sm_ddr.o + ucp4008cache-y:=osp_sm_ddr.o cache.o +endif + +# Specify flags for the module compilation. +ccflags-y = -g -O0 +#INCLUDE += -l./../../common/ +build: kernel_modules +kernel_modules: + make -C $(KERNELDIR) M=$(PWD) modules +clean: + make -C $(KERNELDIR) M=$(PWD) clean + + diff --git a/driver/cache/cache.S b/driver/cache/cache.S new file mode 100644 index 0000000..833a460 --- /dev/null +++ b/driver/cache/cache.S @@ -0,0 +1,78 @@ +/* + * Cache maintenance + * + * Copyright (C) 2001 Deep Blue Solutions Ltd. + * Copyright (C) 2012 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +//#include +#include +#include + +/* + * dcache_line_size - get the safe D-cache line size across all CPUs + */ + .macro mydcache_line_size, reg, tmp + //read_ctr \tmp + mrs \tmp, ctr_el0 + ubfm \tmp, \tmp, #16, #19 // cache line size encoding + mov \reg, #4 // bytes per word + lsl \reg, \reg, \tmp // actual cache line size + .endm + +/* + * __inval_dcache_area(kaddr, size) + * + * Ensure that any D-cache lines for the interval [kaddr, kaddr+size) + * are invalidated. Any partial lines at the ends of the interval are + * also cleaned to PoC to prevent data loss. + * + * - kaddr - kernel address + * - size - size in question + */ +SYM_FUNC_START(__myinval_dcache_area) + /* FALLTHROUGH */ +/* + * __dma_inv_area(start, size) + * - start - virtual start address of region + * - size - size in question + */ +__mydma_inv_area: + add x1, x1, x0 + mydcache_line_size x2, x3 + sub x3, x2, #1 + tst x1, x3 // end cache line aligned? + bic x1, x1, x3 + b.eq 1f + dc civac, x1 // clean & invalidate D / U line +1: tst x0, x3 // start cache line aligned? + bic x0, x0, x3 + b.eq 2f + dc civac, x0 // clean & invalidate D / U line + b 3f +2: dc ivac, x0 // invalidate D / U line +3: add x0, x0, x2 + cmp x0, x1 + b.lo 2b + dsb sy + ret +//ENDPIPROC(__myinval_dcache_area) +//SYM_FUNC_END(__mydma_inv_area) +SYM_FUNC_END(__myinval_dcache_area) + + diff --git a/driver/cache/osp_sm_ddr.c b/driver/cache/osp_sm_ddr.c new file mode 100644 index 0000000..e193a17 --- /dev/null +++ b/driver/cache/osp_sm_ddr.c @@ -0,0 +1,532 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/*º¯ÊýÔ­ÐÍ*/ +static int __init ucp_sm_ddr_module_init(void); +int ucp_sm_ddr_cache_open(struct inode *inode, struct file *filp); +int ucp_sm_ddr_noncache_open(struct inode *inode, struct file *filp); + +int ucp_sm_ddr_cache_release(struct inode *inode, struct file *filp); +int ucp_sm_ddr_noncache_release(struct inode *inode, struct file *filp); + +ssize_t ucp_sm_ddr_cache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos); +ssize_t ucp_sm_ddr_noncache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos); + +ssize_t ucp_sm_ddr_cache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos); +ssize_t ucp_sm_ddr_noncache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos); + +static long ucp_sm_ddr_cache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); +static long ucp_sm_ddr_noncache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); + +static int ucp_sm_ddr_cache_mmap(struct file *filp, struct vm_area_struct *vma); +static int ucp_sm_ddr_noncache_mmap(struct file *filp, struct vm_area_struct *vma); + +static ssize_t ucp_mem_show(struct device *dev,struct device_attribute *attr, char *buf); +static void __exit ucp_sm_ddr_module_exit(void); + +extern void __myinval_dcache_area(unsigned long vir_cache_add, unsigned long len); + + + +static const struct vm_operations_struct osp_mmap_mem_ops = { +#ifdef CONFIG_HAVE_IOREMAP_PROT + .access = generic_access_phys +#endif +}; + + + +/*ÉêÇëÉ豸Ãû³Æ*/ +#define DEVICE_NAME_SM_DDR_CACHE "ucp_sm_ddr_cache" +#define DEVICE_NAME_SM_DDR_NONCACHE "ucp_sm_ddr_noncache" + + +/*É豸ÎïÀíµØÖ·*/ +#if 1 //4008 add +#define ECS_SM_BASE 0x07200000ul +#define PET_SM_BASE 0x08700000ul +#define SHARE_SM_BASE 0x09d00000ul +#define DDR_BASE 0x10000000ul +#define ARM_APE_MSG_BASE_PHY_ADDR 0x0A0000000UL +#define ARM_STACK_BASE_PHY_ADDR 0x100000000UL //0x0B8000000UL + + + + + +/*size num*/ +#define S128KB 0x00020000ul // 128K +#define S8MB 0x00800000ul // 8M +#define S16GB 0x1F0000000ul //0x400000000ul // 16G +#define LEN_OF_ARM_STACK 0x100000000UL +#define LEN_OF_ARM_APE_MSG 0x008000000UL + + +/*É豸¿Õ¼ä´óС*/ +#define ECS_SM_SIZE 0x000060000UL +#define ECS_SM_MAX 0x00725fffful + +#define PET_SM_SIZE 0x000060000UL +#define PET_SM_MAX 0x00875fffful + +#define SHARE_SM_SIZE S8MB +#define SHARE_SM_MAX 0x0a4ffffful + + +#define DDR_SIZE S16GB +#define DDR_MAX 0x1fffffffful + + +#endif + + +#if 0 //1002 add +#define ECS_SM_BASE 0x02360000ul +#define PET_SM_BASE 0x03860000ul + +#define SHARE_SM_BASE 0x04e60000ul +#define DDR_BASE 0x10000000ul + +#define S128KB 0x00020000ul // 128K +#define S8MB 0x00800000ul // 8M +#define S16GB 0x400000000ul // 16G + +#define ECS_SM_SIZE S128KB +#define ECS_SM_MAX 0x0237fffful + +#define PET_SM_SIZE S128KB +#define PET_SM_MAX 0x0387fffful + +#define SHARE_SM_SIZE S8MB +#define SHARE_SM_MAX 0x0565fffful + +#define DDR_SIZE S16GB + +#define DDR_MAX 0x40ffffffful + +#endif + + + +/*error num*/ +#define EINVAL 22 /* Invalid argument */ + + +/*È«¾Ö±äÁ¿ÉùÃ÷³õʼ»¯*/ + +/*file operation structure*/ +static const struct file_operations ucp_sm_ddr_cache_fops = +{ + .owner = THIS_MODULE, + .open = ucp_sm_ddr_cache_open, + .unlocked_ioctl = ucp_sm_ddr_cache_ioctl, + .mmap = ucp_sm_ddr_cache_mmap, + .release = ucp_sm_ddr_cache_release, +}; + +static const struct file_operations ucp_sm_ddr_noncache_fops = +{ + .owner = THIS_MODULE, + .open = ucp_sm_ddr_noncache_open, + .unlocked_ioctl = ucp_sm_ddr_noncache_ioctl, + .mmap = ucp_sm_ddr_noncache_mmap, + .release = ucp_sm_ddr_noncache_release, +}; + + + +static struct miscdevice ucp_sm_ddr_cache_miscdev = { + .minor = MISC_DYNAMIC_MINOR, + .name = DEVICE_NAME_SM_DDR_CACHE, + .fops = &ucp_sm_ddr_cache_fops, +}; + +static struct miscdevice ucp_sm_ddr_noncache_miscdev = { + .minor = MISC_DYNAMIC_MINOR, + .name = DEVICE_NAME_SM_DDR_NONCACHE, + .fops = &ucp_sm_ddr_noncache_fops, +}; + + +void __iomem * g_vir_ecs_sm_cache_add = NULL; +void __iomem * g_vir_pet_sm_cache_add = NULL; +void __iomem * g_vir_share_sm_cache_add = NULL; +void __iomem * g_vir_ddr_cache_add = NULL; +void __iomem * g_vir_msg_cache_add = NULL; +void __iomem * g_vir_stack_cache_add = NULL; + + + +static DEVICE_ATTR(ucp_sm_ddr_cache, S_IRUGO, ucp_mem_show, NULL); +static DEVICE_ATTR(ucp_sm_ddr_noncache, S_IRUGO, ucp_mem_show, NULL); + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver init function********************/ +/********************************************************************/ +static int __init ucp_sm_ddr_module_init(void) +{ + int iRet=0; + + /*×¢²á É豸Çý¶¯*/ + iRet = misc_register(&ucp_sm_ddr_cache_miscdev); + if(iRet) + { + goto sm_ddr_misc_err; + } + iRet = misc_register(&ucp_sm_ddr_noncache_miscdev); + if(iRet) + { + goto sm_ddr_misc_err; + } + + /*ÔÚ/sys/class Ŀ¼Ï´´½¨¶ÔÓ¦µÄÊôÐÔÎļþ*/ + iRet = device_create_file(ucp_sm_ddr_cache_miscdev.this_device, &dev_attr_ucp_sm_ddr_cache); + if (iRet) + { + goto sm_ddr_cache_attr_err; + printk(KERN_EMERG "ucp_sm_ddr_cache_module_init failed \r\n"); + + } + + printk(KERN_EMERG "ucp_sm_ddr_cache_module_init ok cat /sys/devices/virtual/misc/ucp_sm_ddr_cache\r\n"); + + iRet = device_create_file(ucp_sm_ddr_noncache_miscdev.this_device, &dev_attr_ucp_sm_ddr_noncache); + if (iRet) + { + goto sm_ddr_noncache_attr_err; + printk(KERN_EMERG "ucp_sm_ddr_noncache_module_init failed \r\n"); + + } + + printk(KERN_EMERG "ucp_sm_ddr_noncache_module_init ok cat /sys/devices/virtual/misc/ucp_sm_ddr_noncache\r\n"); + + g_vir_ecs_sm_cache_add = ioremap(ECS_SM_BASE, ECS_SM_SIZE); + + g_vir_pet_sm_cache_add = ioremap(PET_SM_BASE, PET_SM_SIZE); + + g_vir_share_sm_cache_add = ioremap(SHARE_SM_BASE, SHARE_SM_SIZE); + + g_vir_msg_cache_add = ioremap(ARM_APE_MSG_BASE_PHY_ADDR, LEN_OF_ARM_APE_MSG); + g_vir_stack_cache_add = ioremap(ARM_STACK_BASE_PHY_ADDR, LEN_OF_ARM_STACK); + + + printk(KERN_EMERG "globle g_vir_ecs_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_ecs_sm_cache_add); + + printk(KERN_EMERG "globle g_vir_pet_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_pet_sm_cache_add); + + printk(KERN_EMERG "globle g_vir_share_sm_cache_add = 0x%lx \n ",(uint64_t)g_vir_share_sm_cache_add); + + //printk(KERN_EMERG "globle g_vir_ddr_cache_add = 0x%lx \n ",g_vir_ddr_cache_add); + + printk(KERN_EMERG "globle g_vir_msg_cache_add = 0x%lx \n ",(uint64_t)g_vir_msg_cache_add); + + printk(KERN_EMERG "globle g_vir_stack_cache_add = 0x%lx \n ",(uint64_t)g_vir_stack_cache_add); + + return 0; + +sm_ddr_cache_attr_err: + misc_deregister(&ucp_sm_ddr_cache_miscdev); +sm_ddr_noncache_attr_err: + misc_deregister(&ucp_sm_ddr_noncache_miscdev); +sm_ddr_misc_err: + return -EINVAL; +} +/********************************************************************/ +/********************************************************************/ + + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver open function********************/ +/********************************************************************/ +int ucp_sm_ddr_cache_open(struct inode *inode, struct file *filp) +{ + /* device structure pointer assgined to file private data pointer */ + printk("enter %s\n",__func__); + return 0; +} +int ucp_sm_ddr_noncache_open(struct inode *inode, struct file *filp) +{ + /* device structure pointer assgined to file private data pointer */ + printk("enter %s\n",__func__); + return 0; +} + +/********************************************************************/ +/********************************************************************/ + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver release function*******************/ +/********************************************************************/ +int ucp_sm_ddr_cache_release(struct inode *inode, struct file *filp) +{ + return 0; +} +int ucp_sm_ddr_noncache_release(struct inode *inode, struct file *filp) +{ + return 0; +} + +/********************************************************************/ +/********************************************************************/ + + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver read function*******************/ +/********************************************************************/ +ssize_t ucp_sm_ddr_cache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos) +{ + return 0; +} +ssize_t ucp_sm_ddr_noncache_read(struct file *filp, char __user *buf, size_t size_in, loff_t *ppos) +{ + return 0; +} + +/********************************************************************/ +/********************************************************************/ + + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver write function*******************/ +/********************************************************************/ +ssize_t ucp_sm_ddr_cache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos) +{ + return 0; +} +ssize_t ucp_sm_ddr_noncache_write(struct file *filp, char __user *buf, size_t size, loff_t *ppos) +{ + return 0; +} + +/********************************************************************/ +/********************************************************************/ + + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver ioctl function*******************/ +/********************************************************************/ +static long ucp_sm_ddr_cache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + + void __iomem *vir_cache_add = NULL; + + unsigned long uiOffset= 0, addr = arg, len = cmd; + + + //printk("enter %s\n\n",__func__); + + //printk("addr = %#lx len = %#lx\n\n",cmd,arg); + + if(addr >= ECS_SM_BASE && addr <= ECS_SM_MAX) + { + + uiOffset = addr - ECS_SM_BASE; + + vir_cache_add = g_vir_ecs_sm_cache_add + uiOffset ; + + } + else if(addr >= PET_SM_BASE && addr <= PET_SM_MAX) + { + + uiOffset = addr - PET_SM_BASE; + + vir_cache_add = g_vir_pet_sm_cache_add + uiOffset ; + + } + else if(addr >= SHARE_SM_BASE && addr <= SHARE_SM_MAX) + { + + uiOffset = addr - SHARE_SM_BASE; + + vir_cache_add = g_vir_share_sm_cache_add + uiOffset ; + + } + else if(addr >= ARM_APE_MSG_BASE_PHY_ADDR && addr < ARM_APE_MSG_BASE_PHY_ADDR + LEN_OF_ARM_APE_MSG) + { + + uiOffset = addr - ARM_APE_MSG_BASE_PHY_ADDR; + + vir_cache_add = g_vir_msg_cache_add + uiOffset ; + } + else if(addr >= ARM_STACK_BASE_PHY_ADDR && addr < ARM_STACK_BASE_PHY_ADDR + LEN_OF_ARM_STACK) + { + + uiOffset = addr - ARM_STACK_BASE_PHY_ADDR; + + vir_cache_add = g_vir_stack_cache_add + uiOffset ; + } + else + { + + printk("ucp_sm_ddr_cache_ioctl phy add out of range \n "); + + return -1; + } + + //__mydma_inv_area(vir_cache_add, arg); + __myinval_dcache_area((unsigned long)vir_cache_add, len); + + + return 0; +} + +static long ucp_sm_ddr_noncache_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + return 0; +} + +/********************************************************************/ +/********************************************************************/ + + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver mmap function*******************/ +/********************************************************************/ +static int ucp_sm_ddr_cache_mmap(struct file *filp, struct vm_area_struct *vma) +{ + + unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; + unsigned long vmsize = vma->vm_end - vma->vm_start; + unsigned long psize = PAGE_SIZE - offset; + pgprot_t prot = vma->vm_page_prot; + + /* ÉèÖÃIO±êÖ¾ */ + + /*if(vmsize > psize) { + + return -ENXIO; + }*/ + printk("enter %s,phyaddr = %#lx,vm_start = %#lx\n",__func__,offset,vma->vm_start); + //printk(KERN_EMERG "titan : cached mode is cache \n"); + //printk(KERN_EMERG "titan : vma->vm_pgoff = 0x%x \n",offset); + + vma->vm_ops = &osp_mmap_mem_ops; + + if(remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, vmsize, prot) != 0) { + + return -EAGAIN; + } + + //printk(KERN_EMERG "titan : vma->vm_start = 0x%x \n",vma->vm_start); + + return 0; + + +} + +static int ucp_sm_ddr_noncache_mmap(struct file *filp, struct vm_area_struct *vma) +{ + + unsigned long offset = vma->vm_pgoff << PAGE_SHIFT; + unsigned long vmsize = vma->vm_end - vma->vm_start; + unsigned long psize = PAGE_SIZE - offset; + pgprot_t prot = vma->vm_page_prot; + + /* ÉèÖÃIO±êÖ¾ */ + +// vir_sm_noncache_add = ioremap_nocache(SM_BASE, SM_SIZE); + +// vir_ddr_noncache_add = ioremap_nocache(DDR_BASE, DDR_SIZE); + + + /*if(vmsize > psize) { + + return -ENXIO; + } */ + printk("enter %s,phyaddr = %#lx,vm_start = %#lx\n",__func__,offset,vma->vm_start); + + //printk(KERN_EMERG "titan : vma->vm_pgoff = 0x%x \n",offset); + + prot = pgprot_writecombine(prot); + + vma->vm_ops = &osp_mmap_mem_ops; + + //printk(KERN_EMERG "titan : cached mode is non cache \n"); + + if(remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, vmsize, prot) != 0) { + + return -EAGAIN; + } + + return 0; +} + + +/********************************************************************/ +/********************************************************************/ +static ssize_t ucp_mem_show(struct device *dev,struct device_attribute *attr, char *buf) +{ + return 0; +} + +/********************************************************************/ +/*********************sm0~sm5 & ddr driver exit function*******************/ +/********************************************************************/ +/* module unload function*/ +static void __exit ucp_sm_ddr_module_exit(void) +{ + + iounmap(g_vir_ecs_sm_cache_add); + iounmap(g_vir_pet_sm_cache_add); + iounmap(g_vir_share_sm_cache_add); + iounmap(g_vir_ddr_cache_add); + + + device_remove_file(ucp_sm_ddr_cache_miscdev.this_device, &dev_attr_ucp_sm_ddr_cache); + device_remove_file(ucp_sm_ddr_noncache_miscdev.this_device, &dev_attr_ucp_sm_ddr_noncache); + + + misc_deregister(&ucp_sm_ddr_cache_miscdev); + misc_deregister(&ucp_sm_ddr_noncache_miscdev); + + + +} +/********************************************************************/ +/********************************************************************/ + + +/* + * a simple char device driver: ExtInt without mutex + * + * Copyright (C) 2014 Barry Song (baohua@kernel.org) + * + * Licensed under GPLv2 or later. + */ + + +MODULE_AUTHOR ("lte team"); +MODULE_DESCRIPTION ("ucp_sm_ddr driver module" ); +MODULE_LICENSE ("GPL"); +module_init(ucp_sm_ddr_module_init); +module_exit(ucp_sm_ddr_module_exit); +MODULE_INFO(intree, "Y"); + + + + + + + + diff --git a/driver/init/inc/drv_init.h b/driver/init/inc/drv_init.h new file mode 100644 index 0000000..380e58a --- /dev/null +++ b/driver/init/inc/drv_init.h @@ -0,0 +1,17 @@ +#ifndef _DRV_INIT_H_ +#define _DRV_INIT_H_ + +#include "typedef.h" + +extern int32_t g_drv_mem_fd; + +#define STC_REG_BASE_ADDR (0x08568000) +#define STC_REG_LEN (0x08000) +#define STC_LTBG_REG_OFFSET 0x1005 + +int32_t drv_init(void); +uint64_t get_arm_cycle(); +uint32_t read_stc_local_timer(); + +#endif + diff --git a/driver/init/src/drv_init.s.c b/driver/init/src/drv_init.s.c new file mode 100644 index 0000000..73a0574 --- /dev/null +++ b/driver/init/src/drv_init.s.c @@ -0,0 +1,75 @@ +#include +#include +#include +#include +//#include +#include +#include +#include "drv_init.h" +#include "arm_csu.h" +#include "ucp_printf.h" + +#ifdef ENABLE_JESD_TEST + +#endif + +int32_t g_drv_mem_fd = -1; +uint32_t *g_stc_regs_ptr = NULL; //0x08568000 + +uint64_t get_arm_cycle() +{ + uint64_t cycle; + + asm volatile("mrs %0, pmccntr_el0" : "=r" (cycle)); + + return cycle; +} + +uint32_t read_stc_local_timer() +{ + return *(g_stc_regs_ptr + STC_LTBG_REG_OFFSET); +} + +int32_t init_stc() +{ + if(g_drv_mem_fd < 0) + { + g_drv_mem_fd = open("/dev/mem", O_RDWR|O_SYNC); + if(g_drv_mem_fd < 0) + { + UCP_PRINT_ERROR("open /dev/mem error"); + return -1; + } + } + + if(g_stc_regs_ptr == NULL) + { + g_stc_regs_ptr = mmap(NULL, STC_REG_LEN, PROT_READ|PROT_WRITE, MAP_SHARED, + g_drv_mem_fd, STC_REG_BASE_ADDR); + if(-1 == (int64_t)g_stc_regs_ptr) + { + UCP_PRINT_ERROR("mmap stc regs error!! return = %ld\n",(uint64_t)g_stc_regs_ptr); + return -2; + } + } + + return 0; +} + +int32_t drv_init(void) +{ + if(0 != arm_csu_init()) + { + UCP_PRINT_ERROR("Init arm csu error!!"); + return -1; + } + + if(0 != init_stc()) + { + UCP_PRINT_ERROR("Init stc error!!"); + return -3; + } + + return 0; +} + diff --git a/driver/ioreg/Makefile b/driver/ioreg/Makefile new file mode 100644 index 0000000..67219d6 --- /dev/null +++ b/driver/ioreg/Makefile @@ -0,0 +1,20 @@ +export ARCH = arm64 +export CROSS_COMPILE = aarch64-linux-gnu- + +ARCH=arm64 +CROSS_COMPILE = aarch64-linux-gnu- + +KERNELDIR ?= /public/linboheng/workspace/ucp4008_nr_integrated_small_cell_new_kernel/kernel/linux-5.10.165 +PWD = $(shell pwd) +obj-m := ioreg.o + +# Specify flags for the module compilation. +ccflags-y = -g -O0 + +build: kernel_modules +kernel_modules: + make -C $(KERNELDIR) M=$(PWD) modules +clean: + make -C $(KERNELDIR) M=$(PWD) clean + + diff --git a/driver/ioreg/ioreg.c b/driver/ioreg/ioreg.c new file mode 100644 index 0000000..4064b76 --- /dev/null +++ b/driver/ioreg/ioreg.c @@ -0,0 +1,182 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +#define IOCTL_MMAPREG _IO('k',0x20) + + +#define DEVICE_NAME "ioreg" + +void __iomem * addr; + +/*file open function*/ +int ioreg_open(struct inode *inode, struct file *filp) +{ + /* device structure pointer assgined to file private data pointer */ + return 0; +} + +/*file release function*/ +int ioreg_release(struct inode *inode, struct file *filp) +{ + return 0; +} + +/* ioctl device control function */ +static long ioreg_ioctl(struct file *filp, u32 cmd, unsigned long arg) +{ + + u32 val; + + + switch ((int)cmd) + { + + case IOCTL_MMAPREG: + get_user(val, (unsigned long *)arg); + addr = ioremap(val, 4096); + + break; + + + + default: + return - EINVAL; + } + + return 0; +} + +ssize_t ioreg_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos) +{ + + if (copy_to_user(buf, (void *)(addr), size)) + { + + return -EFAULT; + } + iounmap(addr); + return 0; +} + +ssize_t ioreg_write(struct file *filp,const char __user *buf, size_t size, loff_t *ppos) +{ + if(copy_from_user((void *)(addr), buf, size)) + { + + return -EFAULT; + } + + + iounmap(addr); + return 0; +} + +/*file operation structure*/ +static const struct file_operations ioreg_fops = +{ + .owner = THIS_MODULE, + .open = ioreg_open, + .read = ioreg_read, + .write = ioreg_write, + .unlocked_ioctl = ioreg_ioctl, + .release = ioreg_release, +}; + + + + +static struct miscdevice ioreg_miscdev = { + .minor = MISC_DYNAMIC_MINOR, + .name = DEVICE_NAME, + .fops = &ioreg_fops, +}; + + + + + + +static int __init ioreg_module_init(void) +{ + + struct device_node *np; + int ret; + + + ret = misc_register(&ioreg_miscdev); + if(ret) + { + return -1; + + } + + + printk(KERN_EMERG "ioreg_module_init ok "); + + return 0; + +} + +/* module unload function*/ +static void __exit ioreg_module_exit(void) +{ + + misc_deregister(&ioreg_miscdev); + +} + + + + + + +/* + * a simple char device driver: ExtInt without mutex + * + * Copyright (C) 2014 Barry Song (baohua@kernel.org) + * + * Licensed under GPLv2 or later. + */ + + +MODULE_AUTHOR ("lte team"); +MODULE_DESCRIPTION ("FRAME_SYNC driver module" ); +MODULE_LICENSE ("GPL"); +module_init(ioreg_module_init); +module_exit(ioreg_module_exit); + + + + + + + + + diff --git a/driver/mem_dump/mem_dump.c b/driver/mem_dump/mem_dump.c new file mode 100644 index 0000000..565f601 --- /dev/null +++ b/driver/mem_dump/mem_dump.c @@ -0,0 +1,288 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include //remap_pfn_range + +/* Ö÷É豸ºÅ */ +#define BSP_DEV_MAJOR 0 +/* Ö÷É豸Ãû */ +#define BSP_DEV_NAME "mem_dump" + +/* Ä£¿é¼ÓÔØº¯Êý */ +static int osp_mem_init(void); +/* Ä£¿éÐ¶ÔØº¯Êý */ +static void osp_mem_exit(void); +/* ´ò¿ªÉ豸º¯Êý */ +int mem_bsp_open(struct inode *inode, struct file *filp); +/* ÊÍ·ÅÉ豸º¯Êý */ +int mem_bsp_release(struct inode *inode, struct file *filp); +/* ¶Áº¯Êý */ +static ssize_t mem_bsp_read (struct file *filp, __user char *buf, size_t count, loff_t *f_pos); +/* ioctlº¯Êý */ +long mem_bsp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); +/* mmapº¯Êý */ +int mem_bsp_mmap(struct file *filp, struct vm_area_struct *vma); +/* дº¯Êý */ +ssize_t mem_bsp_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos); + + + +/******************************* ¾Ö²¿ºê¶¨Òå ***********************************/ +/* bsp Ö÷É豸ºÅ */ + + +typedef struct mem_struct{ + int g_s32BspDevMajor ; + unsigned int g_u32CacheCoherent; + struct cdev g_struBspDev; + struct class *cls; + dev_t g_devno; + struct device *parent; + struct device *this_device; + +}mem_st; + + +/******************************* º¯ÊýʵÏÖ *************************************/ +/******************************************************************************* +* º¯ÊýÃû: mem_init +* ÃèÊö: Ä£¿é¼ÓÔØÊ±µÄÈë¿Úº¯Êý +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:int +* ²ÎÊý: ÎÞ +* ·µ»ØÖµ: +* 0 ³É¹¦ +* <0 ʧ°Ü +* ˵Ã÷£º¾ßÌåʧ°Ü²Î¿¼Linux´íÎóÐÅϢͷÎļþ +*******************************************************************************/ + +static mem_st mem_dev ={ + .g_s32BspDevMajor = 0, + .g_u32CacheCoherent = 0, + .g_devno = 0, + + +}; + +static struct file_operations g_struBspOp = { + .owner = THIS_MODULE, + .read = mem_bsp_read, + .write = mem_bsp_write, + .open = mem_bsp_open, + .release = mem_bsp_release, + .mmap = mem_bsp_mmap, + .unlocked_ioctl = mem_bsp_ioctl, +}; + +static int osp_mem_init(void) +{ + /*º¯Êýµ÷Óýá¹û*/ + int result; + /*É豸±àºÅ*/ + dev_t devno; + + printk("bsp_init.\n"); + + /* »ñÈ¡É豸ºÅ */ + if (0 == mem_dev.g_s32BspDevMajor) + { + /* ·ÖÅäÉè±¸ÇøÓò */ + result = alloc_chrdev_region(&devno, 0, 1, BSP_DEV_NAME); + + /* ÅжϷµ»ØÖµ */ + if (result < 0) + { + printk(KERN_WARNING "bsp: alloc_chrdev_region error! errno = %d\n", result); + return result; + } + mem_dev.g_devno = devno; + /* ±£´æÖ÷É豸ºÅÐÅÏ¢ */ + mem_dev.g_s32BspDevMajor = MAJOR(devno); + + /* ³õʼ»¯dev±äÁ¿ */ + cdev_init(&(mem_dev.g_struBspDev), &g_struBspOp); + /* É豸devÏàÓ¦±äÁ¿Öµ */ + mem_dev.g_struBspDev.owner = THIS_MODULE; + mem_dev.g_struBspDev.ops = &g_struBspOp; + /* ÏòϵͳÔö¼ÓdevÉ豸 */ + result = cdev_add(&mem_dev.g_struBspDev, devno, 1); + if (result < 0) + { + printk ("cdev_add error!errno = %d", result); + } + + // ret = device_create_file(ucp_smem_miscdev.this_device, &dev_attr_ucp_smem); + mem_dev.cls = class_create(THIS_MODULE, "mem_dump"); + device_create(mem_dev.cls, NULL, devno, NULL, "mem_dump"); + + printk("bsp module init success!\n"); + /* ·µ»Ø³É¹¦ */ + return 0; + } + else + { + printk("bsp module already init!\n"); + /* ·µ»Ø */ + return -EBUSY; + } +} + +/******************************************************************************* +* º¯ÊýÃû: ad9371_exit +* ÃèÊö: Ä£¿éÐ¶ÔØº¯Êý +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:void +* ²ÎÊý: ÎÞ +* ·µ»ØÖµ: ÎÞ +* ˵Ã÷£º +*******************************************************************************/ +static void osp_mem_exit(void) +{ + /* ÅжÏÊÇ·ñÖ´ÐйýÄ£¿é¼ÓÔØ */ + if(mem_dev.g_s32BspDevMajor > 0) + { + /* ɾ³ý¸Ã×Ö·ûÉ豸 */ + device_destroy(mem_dev.cls, mem_dev.g_devno); + class_destroy(mem_dev.cls); + cdev_del(&(mem_dev.g_struBspDev)); + /* ÊÍ·ÅÒÑ·ÖÅäµÄ¿Õ¼ä */ + unregister_chrdev_region(MKDEV(mem_dev.g_s32BspDevMajor, 0), 1); + /* Çå¿ÕÖ÷É豸ºÅ */ + mem_dev.g_s32BspDevMajor = 0; + /* µ÷ÊÔÐÅÏ¢Êä³ö */ + printk("bsp module cleanup success!\n"); + + } + return; +} + +/******************************************************************************* +* º¯ÊýÃû: ad9731_bsp_open +* ÃèÊö: ´ò¿ªÎļþ +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:int +* ²ÎÊý: +* +* ²ÎÊýÃû ÀàÐÍ ÊäÈë/Êä³ö ÃèÊö +* -------- ---- --- ----------- +* inode struct inode* input Îļþ½Úµã½á¹¹ +* filp struct file* input Îļþ½á¹¹ +* ·µ»ØÖµ: +* 0 ³É¹¦ +* ˵Ã÷£º +*******************************************************************************/ +int mem_bsp_open(struct inode *inode, struct file *filp) +{ + return 0; +} + +/******************************************************************************* +* º¯ÊýÃû: ad9731_bsp_release +* ÃèÊö: ¹Ø±ÕÎļþ +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:int +* ²ÎÊý: +* +* ²ÎÊýÃû ÀàÐÍ ÊäÈë/Êä³ö ÃèÊö +* -------- ---- --- ----------- +* inode struct inode* input Îļþ½Úµã½á¹¹ +* filp struct file* input Îļþ½á¹¹ +* ·µ»ØÖµ: +* 0 ³É¹¦ +* ˵Ã÷£º +*******************************************************************************/ +int mem_bsp_release(struct inode *inode, struct file *filp) +{ + /* ²Ù×÷³É¹¦ */ + return 0; +} + +/******************************************************************************* +* º¯ÊýÃû: ad9731_bsp_read () +* +* ÃèÊö: ¶Á²Ù×÷¡£ +* Ïà¹ØÎĵµ: <ÃèÊö´Ëº¯ÊýµÄÏà¹ØÐ­ÒéÃû³Æ¡¢°æ±¾¼°ÔÚЭÒéÖеÄλÖÃ> +* º¯Êý´æ´¢ÀàÐÍ: + +*******************************************************************************/ +static ssize_t mem_bsp_read (struct file *filp, char *buf, size_t count, loff_t *f_pos) +{ + return 0; +} + +/******************************************************************************* +* º¯ÊýÃû: ad9731_bsp_write () +* +* ÃèÊö: д²Ù×÷¡£ +* Ïà¹ØÎĵµ: <ÃèÊö´Ëº¯ÊýµÄÏà¹ØÐ­ÒéÃû³Æ¡¢°æ±¾¼°ÔÚЭÒéÖеÄλÖÃ> +* º¯Êý´æ´¢ÀàÐÍ: + +*******************************************************************************/ +ssize_t mem_bsp_write(struct file *filp, const char *buf, size_t count, loff_t *f_pos) +{ + return 0; +} + +/******************************************************************************* +* º¯ÊýÃû: ad9731_bsp_ioctl +* ÃèÊö: IO¿ØÖÆ +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:int +* ²ÎÊý: + +*******************************************************************************/ +long mem_bsp_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + return 0; +} + +/******************************************************************************* +* º¯ÊýÃû: mem_bsp_mmap +* ÃèÊö: IOÄÚ´æÓ³Éä +* Ïà¹ØÎĵµ: +* º¯Êý´æ´¢ÀàÐÍ:int +* ²ÎÊý: +* +*******************************************************************************/ + +int mem_bsp_mmap(struct file *filp, struct vm_area_struct *vma) +{ + /* ÉèÖÃIO±êÖ¾ */ + + vma->vm_flags |= VM_IO; + + + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + printk("mmap start\n\r"); + + /* ½¨Á¢Ó³Éä */ + if (remap_pfn_range(vma, + vma->vm_start, + vma->vm_pgoff, + vma->vm_end-vma->vm_start, + vma->vm_page_prot) < 0) + { + return -EAGAIN; + } + + return 0; +} + + +MODULE_AUTHOR ("mr yang"); +MODULE_DESCRIPTION ("mem_dump" ); +MODULE_LICENSE ("GPL"); +module_init(osp_mem_init); +module_exit(osp_mem_exit); + +/******************************* Ô´Îļþ½áÊø ***********************************/ + diff --git a/driver/rfic b/driver/rfic new file mode 160000 index 0000000..1f8aef0 --- /dev/null +++ b/driver/rfic @@ -0,0 +1 @@ +Subproject commit 1f8aef08469197a952e766f439fc0bfbc9a28ea5 diff --git a/driver/stc-dev/Makefile b/driver/stc-dev/Makefile new file mode 100644 index 0000000..6cb9c08 --- /dev/null +++ b/driver/stc-dev/Makefile @@ -0,0 +1,25 @@ +export ARCH=arm64 +export CROSS_COMPILE=aarch64-linux-gnu- +#KERNELDIR = /public/liweihua/workspace/linux-5.0.21 +KERNELDIR = /public/liweihua/workspace/linux-5.10.165 + +OBJ = ARM_STC + +PWD = $(shell pwd) +# Kernel modules +ifeq ($(OBJ),ARM_STC) + obj-m = stc.o + #mycache-objs = osp_sm_ddr.o cache.o + stc-y := stc-dev.o +endif + +# Specify flags for the module compilation. +ccflags-y = -g -O2 +#INCLUDE += -l./../../common/ +build: kernel_modules +kernel_modules: + make -C $(KERNELDIR) M=$(PWD) modules +clean: + make -C $(KERNELDIR) M=$(PWD) clean + + diff --git a/driver/stc-dev/stc-dev.c b/driver/stc-dev/stc-dev.c new file mode 100644 index 0000000..acbf6c4 --- /dev/null +++ b/driver/stc-dev/stc-dev.c @@ -0,0 +1,357 @@ +/* + * Driver for stc module. + * + * Copyright (C) 2022, liweihua@smartlogictech.com + * Copyright 2022 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "stc_def.h" + +#define UCP4008_STC_MODULE_VERSION ("V1.0") +#define UCP4008_STC_DEVICE_NAME "stc_irq" + +struct stc_driver g_stc_drv; + +static irqreturn_t stc_tod_1pps_handler(int irqid, void *param) +{ + struct stc_driver *pirqstc = param; + + __raw_writel(0x1,pirqstc->io_base_addr + 4); //clear int + pirqstc->irq_1pps_tod_cnt++; + pirqstc->cond_1pps_tod = STC_TOD_1PPS; + //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond); + wake_up_interruptible(&pirqstc->pp1s_tod_queue); + + return IRQ_HANDLED; +} + +static irqreturn_t stc_1pps_in_handler(int irqid, void *param) +{ + struct stc_driver *pirqstc = param; + + __raw_writel(0x2,pirqstc->io_base_addr + 4); //clear int + pirqstc->irq_1pps_in_cnt++; + pirqstc->cond_1pps_in = STC_EX_1PPS_IN; + //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond); + wake_up_interruptible(&pirqstc->pp1s_in_queue); + + return IRQ_HANDLED; +} + +static irqreturn_t stc_hscc_dump_handler(int irqid, void *param) +{ + struct stc_driver *pirqstc = param; + + __raw_writel(0x4,pirqstc->io_base_addr + 4); //clear int + pirqstc->irq_hscc_dump_cnt++; + pirqstc->cond_hscc_dump = STC_HSCC_DUMP; + //printk("enter:%s,complete_cond = %d,\n",__func__,pirqstc->complete_cond); + wake_up_interruptible(&pirqstc->hscc_dump_queue); + + return IRQ_HANDLED; +} + +static int stc_open(struct inode* inode, struct file* file) +{ + printk(KERN_INFO "[%s]\n", __func__); + return 0; +} + +static ssize_t stc_read(struct file* file, char __user* buf, size_t size, loff_t* pos) +{ + sint32 ret; + uint32 cond_value; + + if(STC_TOD_1PPS == size) + { + ret = wait_event_interruptible(g_stc_drv.pp1s_tod_queue, g_stc_drv.cond_1pps_tod); + cond_value = g_stc_drv.irq_1pps_tod_cnt; + g_stc_drv.cond_1pps_tod = STC_INT_RESERVED; + } + else if(STC_EX_1PPS_IN == size) + { + ret = wait_event_interruptible(g_stc_drv.pp1s_in_queue, g_stc_drv.cond_1pps_in); + cond_value = g_stc_drv.irq_1pps_in_cnt; + g_stc_drv.cond_1pps_in = STC_INT_RESERVED; + } + else if(STC_HSCC_DUMP == size) + { + ret = wait_event_interruptible(g_stc_drv.hscc_dump_queue, g_stc_drv.cond_hscc_dump); + cond_value = g_stc_drv.irq_hscc_dump_cnt; + g_stc_drv.cond_hscc_dump = STC_INT_RESERVED; + } + else + { + return FAILURE; + } + + if(ret != 0) + { + printk("exe:%s error!\n",__func__); + return FAILURE; + } + ret = copy_to_user(buf, &cond_value, sizeof(uint32)); + + return ret; +} + +static ssize_t stc_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt) +{ + return 0; +} + +static sint64 stc_ioctl(struct file* file, unsigned int cmd, unsigned long arg) +{ + sint32 s32Ret = SUCCESS; + stc_int_type_e int_type; + struct stc_driver *stc_drv = &g_stc_drv; + uint32 irq_enable = __raw_readl(g_stc_drv.io_base_addr + 8); + + printk("enter:%s\n",__func__); + + switch(cmd) + { + case STC_INT_CFG: + { + s32Ret = copy_from_user(&int_type, (void __user*)arg, sizeof(stc_int_type_e)); + if(s32Ret != 0) + { + printk(KERN_INFO "[%s]Copy user data failed!\n", __func__); + return FAILURE; + } + + switch(int_type) + { + case STC_TOD_1PPS: + { + s32Ret = request_irq(stc_drv->irq_1pps_tod, stc_tod_1pps_handler, IRQF_SHARED, "tod_1pps", (void *)stc_drv); + if(s32Ret != SUCCESS) + { + free_irq(stc_drv->irq_1pps_tod, stc_drv); + printk(KERN_INFO "[%s]irq_ipps_tod request error!\n", __func__); + return FAILURE; + } + + irq_enable |= 1; + __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); // + break; + } + case STC_EX_1PPS_IN: + { + s32Ret = request_irq(stc_drv->irq_1pps_in, stc_1pps_in_handler, IRQF_SHARED, "1pps_in", (void *)stc_drv); + if(s32Ret != SUCCESS) + { + free_irq(stc_drv->irq_1pps_in, stc_drv); + printk(KERN_INFO "[%s]irq_ipps_in request error!\n", __func__); + return FAILURE; + } + printk(KERN_INFO "[%s]enable irq_ipps_in int!\n", __func__); + irq_enable |= 2; + __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); // + break; + } + case STC_HSCC_DUMP: + { + s32Ret = request_irq(stc_drv->irq_hscc_dump, stc_hscc_dump_handler, IRQF_SHARED,"hscc_dump" ,(void *)stc_drv); + if(s32Ret != SUCCESS) + { + free_irq(stc_drv->irq_hscc_dump, stc_drv); + printk(KERN_INFO "[%s]irq_hscc_dump request error!\n", __func__); + return FAILURE; + } + irq_enable |= 4; + __raw_writel(irq_enable,g_stc_drv.io_base_addr + 8); // + break; + } + default:break; + } + break; + } + default: + { + s32Ret = FAILURE; + break; + } + } + + return s32Ret; +} + +static int stc_release(struct inode* inode, struct file* file) +{ + printk(KERN_INFO "[%s]realease \n", __func__); + return 0; +} + +static struct file_operations stc_fops = { + .owner = THIS_MODULE, + .open = stc_open, + .read = stc_read, + .write = stc_write, + .release = stc_release, + .unlocked_ioctl = stc_ioctl, +}; + +static struct miscdevice g_stc_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = "stc_dev", + .fops = &stc_fops, +}; + +#if 0 +static int stc_module_init(void) +{ + sint32 iRet; + uint32 u32idx; + + iRet = misc_register(&g_stc_dev); + if(iRet != SUCCESS) + { + printk("misc_register error! iRet = %d\n", iRet); + return -1; + } + + memset(&g_stc_drv, 0, sizeof(struct stc_driver)); + + g_stc_drv.irq_ipps_in = UCP4008_IRQ_1PPS_IN; + g_stc_drv.irq_hscc_dump = UCP4008_IRQ_HSCC_DUMP; + g_stc_drv.irq_ipps_tod = UCP4008_IRQ_1PPS_TOD; + g_stc_drv.irq_ipps_in_cnt = 0; + g_stc_drv.irq_hscc_dump_cnt = 0; + g_stc_drv.irq_ipps_tod_cnt = 0; + + init_waitqueue_head(&g_stc_drv.complete_queue); + g_stc_drv.complete_cond = STC_INT_RESERVED; + + g_stc_drv.io_base_addr = ioremap(STC_REG_BASE_ADDR,STC_REG_LEN); + + //init timer + #if 0 + init_timer(&g_stc_drv.avcn_timer_list); + + setup_timer(&g_stc_drv.avcn_timer_list, avcn_debounce_timer, GPIO_INT_FUNC_RESET); + #else + //timer_setup(&g_stc_drv.avcn_timer_list, avcn_debounce_timer, 0); + #endif + printk(KERN_INFO "[%s] module version %s init...\n", __func__, UCP4008_STC_MODULE_VERSION); + return 0; +} + +static void stc_module_exit(void) +{ + misc_deregister(&g_stc_dev); + + free_irq(g_stc_drv.irq_ipps_in , &g_stc_drv); + free_irq(g_stc_drv.irq_ipps_tod , &g_stc_drv); + free_irq(g_stc_drv.irq_hscc_dump , &g_stc_drv); + + printk(KERN_INFO "[%s] module version %s exit...\n", __func__, UCP4008_STC_MODULE_VERSION); +} +#endif + +static int smartlogic_stc_probe(struct platform_device *pdev) +{ + struct resource *res_common; + struct device *dev = &pdev->dev; + int i, irq, iRet; + int irq_no[3]; + + printk("enter:%s\n",__func__); + + iRet = misc_register(&g_stc_dev); + if(iRet != SUCCESS) + { + printk("misc_register error! iRet = %d\n", iRet); + return -1; + } + + for (i = 0; i < 3; ++i) + { + irq = platform_get_irq(pdev, i); + if (irq < 0) { + dev_err(dev, "failed to get irq index %d\n", i); + return -ENODEV; + } + irq_no[i] = irq; + } + + g_stc_drv.irq_1pps_tod = irq_no[0]; + g_stc_drv.irq_1pps_in = irq_no[1]; + g_stc_drv.irq_hscc_dump = irq_no[2]; + + res_common = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res_common) + { + dev_err(&pdev->dev, "memory resource not found"); + return -EINVAL; + } + + g_stc_drv.io_base_addr = devm_ioremap_resource(dev, res_common); + if (IS_ERR(g_stc_drv.io_base_addr)) + { + return PTR_ERR(g_stc_drv.io_base_addr); + } + + init_waitqueue_head(&g_stc_drv.pp1s_tod_queue); + init_waitqueue_head(&g_stc_drv.pp1s_in_queue); + init_waitqueue_head(&g_stc_drv.hscc_dump_queue); + g_stc_drv.cond_1pps_tod = STC_INT_RESERVED; + g_stc_drv.cond_1pps_in = STC_INT_RESERVED; + g_stc_drv.cond_hscc_dump = STC_INT_RESERVED; + g_stc_drv.irq_1pps_tod_cnt = 0; + g_stc_drv.irq_1pps_in_cnt = 0; + g_stc_drv.irq_hscc_dump_cnt = 0; + + return 0; +} + +static int smartlogic_stc_remove(struct platform_device *pdev) +{ + misc_deregister(&g_stc_dev); + + free_irq(g_stc_drv.irq_1pps_in , &g_stc_drv); + free_irq(g_stc_drv.irq_1pps_tod , &g_stc_drv); + free_irq(g_stc_drv.irq_hscc_dump , &g_stc_drv); + + printk(KERN_INFO "[%s] module version %s exit...\n", __func__, UCP4008_STC_MODULE_VERSION); + + return 0; +} + +static const struct of_device_id smartlogic_stc_match[] = { + { .compatible = "smartlogic,stc" }, + {}, +}; +MODULE_DEVICE_TABLE(of, smartlogic_stc_match); + +static struct platform_driver smartlogic_stc_driver = { + .driver = { + .name = "smartlogic_stc", + .of_match_table = smartlogic_stc_match, + }, + .probe = smartlogic_stc_probe, + .remove = smartlogic_stc_remove, +}; +module_platform_driver(smartlogic_stc_driver); + +MODULE_AUTHOR("liweihua@smartlogictech.com"); +MODULE_DESCRIPTION ("Smartlogictech STC module driver!"); +MODULE_LICENSE ("GPL"); + diff --git a/driver/stc-dev/stc_def.h b/driver/stc-dev/stc_def.h new file mode 100644 index 0000000..35ffa9b --- /dev/null +++ b/driver/stc-dev/stc_def.h @@ -0,0 +1,69 @@ +#ifndef _STC_DEF_H_ +#define _STC_DEF_H_ + +#include +#include /*ÉùÃ÷printk()Õâ¸öÄÚºË̬µÄº¯Êý*/ +#include /*ÎļþϵͳÓйصģ¬½á¹¹Ìåfile_operationsÒ²ÔÚfsÍ·Îļþ¶¨Òå*/ +#include /*initºÍexitÏà¹Øºê*/ +#include +#include +#include /*linuxÖж϶¨Òå*/ +#include +#include /*°üº¬ÓëÖжÏÏà¹ØµÄ´ó²¿·Öºê¼°½á¹¹ÌåµÄ¶¨Ò壬request_irq()µÈ*/ +#include /*linuxÖеÄÓû§Ì¬ÄÚ´æ½»»¥º¯Êý£¬copy_from_user(),copy_to_user()µÈ*/ +#include +#include +#include /*misc»ìºÏÉ豸ע²áÓë×¢Ïú*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef char sint8; +typedef unsigned char uint8; +typedef int sint32; +typedef unsigned int uint32; +typedef long sint64; +typedef unsigned long uint64; + + +#define SUCCESS (0) +#define FAILURE (-1) +#define IRQ_EXCEPTION (0xFFFFFF) + +#define STC_MODULE_MAGIC 'g' +#define STC_INT_CFG _IOWR(STC_MODULE_MAGIC, 0x01, uint32) + +#define STC_REG_BASE_ADDR (0x08568000ull) //STCåŸºåœ°å€ +#define STC_REG_LEN (0x08000) + +typedef enum +{ + STC_INT_RESERVED = 0, /* Reserved*/ /* Reserved*/ + STC_TOD_1PPS, /* stc 1pps*/ + STC_EX_1PPS_IN, /* external 1pps */ + STC_HSCC_DUMP = 4 /* HSCC_DUMP */ +} stc_int_type_e; + +struct stc_driver{ + sint32 irq_1pps_tod; + sint32 irq_1pps_in; + sint32 irq_hscc_dump; + uint32 irq_1pps_tod_cnt; + uint32 irq_1pps_in_cnt; + uint32 irq_hscc_dump_cnt; + stc_int_type_e cond_1pps_tod; + stc_int_type_e cond_1pps_in; + stc_int_type_e cond_hscc_dump; + wait_queue_head_t pp1s_tod_queue; + wait_queue_head_t pp1s_in_queue; + wait_queue_head_t hscc_dump_queue; + void __iomem *io_base_addr; +}; + +#endif diff --git a/driver/tfu b/driver/tfu new file mode 160000 index 0000000..7908793 --- /dev/null +++ b/driver/tfu @@ -0,0 +1 @@ +Subproject commit 7908793098da2a3fcc5da3f3f2831c84fe4947f7 diff --git a/driver/tsc/Makefile b/driver/tsc/Makefile new file mode 100644 index 0000000..c67d1ba --- /dev/null +++ b/driver/tsc/Makefile @@ -0,0 +1,18 @@ +PWD := $(shell pwd) + +#KERNELDIR := /public/liweihua/workspace/linux-5.0.21 +KERNELDIR := /public/liweihua/workspace/linux-5.10.165 + +obj-m := tsc.o + +modules: + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules + +modules_install: + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install + +clean: + rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *.order irq-test + +.PHONY: modules modules_install clean + diff --git a/driver/tsc/tsc.c b/driver/tsc/tsc.c new file mode 100644 index 0000000..3926405 --- /dev/null +++ b/driver/tsc/tsc.c @@ -0,0 +1,67 @@ +#include +#include +#include + +#define ARMV8_PMCR_MASK 0x3f +#define ARMV8_PMCR_E (1 << 0) +#define ARMV8_PMCR_LC (1 << 6) + +static inline u32 armv8pmu_pmcr_read(void) +{ + u64 val = 0; + asm volatile("mrs %0, pmcr_el0" : "=r" (val)); + return (u32)val; +} +static inline void armv8pmu_pmcr_write(u32 val) +{ + val &= ARMV8_PMCR_MASK; + isb(); + asm volatile("msr pmcr_el0, %0" : : "r" ((u64)val)); +} + +static inline long long armv8_read_CNTPCT_EL0(void) +{ + long long val; + asm volatile("mrs %0, CNTVCT_EL0" : "=r" (val)); + return val; +} + +static void +enable_cpu_counters(void* data) +{ + asm volatile("msr pmuserenr_el0, %0" : : "r"(0xf)); + armv8pmu_pmcr_write(ARMV8_PMCR_LC|ARMV8_PMCR_E); + asm volatile("msr PMCNTENSET_EL0, %0" :: "r" ((u32)(1<<31))); + armv8pmu_pmcr_write(armv8pmu_pmcr_read() | ARMV8_PMCR_E|ARMV8_PMCR_LC); + printk("\nCPU:%d ", smp_processor_id()); +} + +static void +disable_cpu_counters(void* data) +{ + printk(KERN_INFO "\ndisabling user-mode PMU access on CPU #%d", + smp_processor_id()); + + armv8pmu_pmcr_write(armv8pmu_pmcr_read() |~ARMV8_PMCR_E); + asm volatile("msr pmuserenr_el0, %0" : : "r"((u64)0)); +} + +static int __init init(void) +{ + on_each_cpu(enable_cpu_counters, NULL, 1); + printk(KERN_INFO "Enable Access PMU Initialized"); + return 0; +} + +static void __exit fini(void) +{ + on_each_cpu(disable_cpu_counters, NULL, 1); + printk(KERN_INFO "Access PMU Disabled"); +} + +module_init(init); +module_exit(fini); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("titan"); + + diff --git a/driver/ucp_2_revmem/Makefile b/driver/ucp_2_revmem/Makefile new file mode 100644 index 0000000..f37efb0 --- /dev/null +++ b/driver/ucp_2_revmem/Makefile @@ -0,0 +1,12 @@ + +KERN_DIR = /public/liweihua/workspace/linux-5.0.21 + +all: + make -C ${KERN_DIR} M=`pwd` modules + +clean: + make -C ${KERN_DIR} M=`pwd` modules clean + rm -rf modules.order + +obj-m += ucp_2_revmem.o + diff --git a/driver/ucp_2_revmem/build_env.sh b/driver/ucp_2_revmem/build_env.sh new file mode 100644 index 0000000..f27456d --- /dev/null +++ b/driver/ucp_2_revmem/build_env.sh @@ -0,0 +1,3 @@ +export ARCH=arm64 +export CROSS_COMPILE=/public/liweihua/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- +make diff --git a/driver/ucp_2_revmem/ucp_2_revmem.c b/driver/ucp_2_revmem/ucp_2_revmem.c new file mode 100644 index 0000000..42778a0 --- /dev/null +++ b/driver/ucp_2_revmem/ucp_2_revmem.c @@ -0,0 +1,325 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "ucp_2_revmem.h" + +/*暂时将ucp_mem的主设备å·å®šä¹‰ä¸º10 */ + +typedef struct tag_OSP_CACHE_REV +{ + unsigned int phy_addr; + unsigned int len; +}OSP_CACHE_REV; + +struct ucp_2_rev_device{ + struct device *dev; + struct miscdevice *miscdev; + void __iomem *vir_head; + unsigned int phy_head; +}; + +struct ucp_2_rev_device *ucp_2_rev_dev; + +#define DEVICE_NAME "ucp_2_revmem" +//#define DEVICE_NAME "ucp_2_mmap" + + +#define IOCTL_CACHE_INVALID _IO('k',0x10) +#define IOCTL_CACHE_FLUSH _IO('k',0x20) +#define IOCTL_SET_CACHE _IO('k',0x30) +#define IOCTL_SET_NOCACHE _IO('k',0x40) + +#define UP_ALIGNED(num, n) (((num) + (n) - 1) & (~((n) - 1))) + +#define REV_WITH_CACHE 2 +#define REV_WITH_NOCACHE 3 + +int is_cached=0; + +extern void arch_sync_dma_for_device_p(struct device *dev, void *addr, + size_t size, enum dma_data_direction dir); +extern void arch_sync_dma_for_cpu_p(struct device *dev, void *addr, + size_t size, enum dma_data_direction dir); + +/*file open function*/ +int ucp_2_revmem_open(struct inode *inode, struct file *filp) +{ + /* device structure pointer assgined to file private data pointer */ + printk("enter %s !!!\n",__func__); + return 0; +} + +ssize_t ucp_2_revmem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos) +{ + + return 0; +} + + +/*file release function*/ +int ucp_2_revmem_release(struct inode *inode, struct file *filp) +{ + return 0; +} + +/* ioctl device control function */ +static long ucp_2_revmem_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + OSP_CACHE_REV operation; + void __iomem *vir; + struct ucp_2_rev_device *rev_dev = ucp_2_rev_dev; + struct miscdevice *miscdev = rev_dev->miscdev; + +// printk("%s\n",miscdev->name); + + switch(cmd) + { + case IOCTL_SET_CACHE: + is_cached = REV_WITH_CACHE; +// dev_info(rev_dev->dev,"ioctl set with cache"); + break; + case IOCTL_SET_NOCACHE: + is_cached = REV_WITH_NOCACHE; +// dev_info(rev_dev->dev,"ioctl set no cache"); + break; + case IOCTL_CACHE_FLUSH: + if(copy_from_user((void *)(&operation), (char *)arg, sizeof(OSP_CACHE_REV))) + { + dev_info(rev_dev->dev,"ioctl copy_from_user error"); + return - EINVAL; + } + + if(operation.phy_addr<=0 || operation.len <=0) + { + dev_info(rev_dev->dev,"ioctl user arg error"); + return - EINVAL; + } + + operation.len = UP_ALIGNED(operation.len,4); + +// vir = ioremap_cache(operation.phy_addr,operation.len); + vir = rev_dev->vir_head + (operation.phy_addr - rev_dev->phy_head); + if(vir == NULL) + { + dev_info(rev_dev->dev,"ioctl vir error"); + return - EINVAL; + } + arch_sync_dma_for_device_p(rev_dev->dev, vir, operation.len, DMA_TO_DEVICE); + break; + + case IOCTL_CACHE_INVALID: + if(copy_from_user((void *)(&operation), (char *)arg, sizeof(OSP_CACHE_REV))) + { + dev_info(rev_dev->dev,"ioctl copy_from_user error"); + return - EINVAL; + } + + if(operation.phy_addr<=0 || operation.len <=0) + { + dev_info(rev_dev->dev,"ioctl user arg error"); + return - EINVAL; + } + + operation.len = UP_ALIGNED(operation.len,4); + +// vir = ioremap_cache(operation.phy_addr,operation.len); + vir = rev_dev->vir_head + (operation.phy_addr - rev_dev->phy_head); + if(vir == NULL) + { + dev_info(rev_dev->dev,"ioctl vir error"); + return - EINVAL; + } + arch_sync_dma_for_cpu_p(rev_dev->dev, vir, operation.len, DMA_FROM_DEVICE); + break; + + + default: + return - EINVAL; + } +// iounmap(vir); + return 0; +} + + +static int ucp_2_revmem_mmap(struct file *filp, struct vm_area_struct *vma) +{ + struct ucp_2_rev_device *rev_dev = ucp_2_rev_dev; + struct miscdevice *miscdev = rev_dev->miscdev; + uint64_t offset = vma->vm_pgoff << PAGE_SHIFT; + + printk("enter %s !!!\n",__func__); + + printk("ucp_revmem_mmap offset = %#llx,start = %#llx\n",offset,vma->vm_start); + + + vma->vm_flags |= VM_IO | VM_LOCKED; + + if(offset < ARM_STACK_BASE_PHY_ADDR) + { + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); + } +#if 0 + if(is_cached == REV_WITH_NOCACHE) + { + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + } + else if(is_cached == REV_WITH_CACHE) + { + + } + else + { + dev_info(rev_dev->dev,"flag is_cached is error %d\n",is_cached); + return -EAGAIN; + } + + + vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); +#endif + if (remap_pfn_range(vma, + vma->vm_start, + vma->vm_pgoff, + vma->vm_end-vma->vm_start, + vma->vm_page_prot) < 0) + { + return -EAGAIN; + } +// dev_info(rev_dev->dev,"ucp_revmem_mmap:%d ok\n",is_cached); + printk("leave %s !!!\n",__func__); + + is_cached = 0; + return 0; +} + + +/*file operation structure*/ +static const struct file_operations ucp_2_revmem_fops = +{ + .owner = THIS_MODULE, + .open = ucp_2_revmem_open, + .unlocked_ioctl = ucp_2_revmem_ioctl, + .mmap = ucp_2_revmem_mmap, + .release = ucp_2_revmem_release, +}; + +static ssize_t ucp_2_revmem_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int len=0; + + len += sprintf(buf+len, "%s\r\n", "ucp_2_mem attribute OK!"); + + return len; +} + +static DEVICE_ATTR(ucp_2_revmem, S_IRUGO, ucp_2_revmem_show, NULL); + +static struct miscdevice ucp_2_revmem_miscdev = { + .minor = MISC_DYNAMIC_MINOR, + .name = DEVICE_NAME, + .fops = &ucp_2_revmem_fops, +}; + +static int __init ucp_2_revmem_module_init(void) +{ + int ret; + struct miscdevice *misc_device; + void __iomem * vir_addr; + dma_addr_t phy_addr; + int i; + + ucp_2_rev_dev = (struct ucp_2_rev_device *)kzalloc(sizeof(*ucp_2_rev_dev), GFP_KERNEL); + if (!ucp_2_rev_dev) + return -ENOMEM; + + misc_device = &ucp_2_revmem_miscdev; + ret = misc_register(&ucp_2_revmem_miscdev); + if(ret) + { + goto misc_err; + } + + ret = device_create_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem); + if (ret) + { + goto attr_err; + } + ucp_2_rev_dev->dev = ucp_2_revmem_miscdev.this_device; + ucp_2_rev_dev->miscdev = &ucp_2_revmem_miscdev; + dev_set_drvdata(ucp_2_revmem_miscdev.this_device, ucp_2_rev_dev); + + ucp_2_rev_dev->phy_head = UCP_2_APE_REV_MEM_START; + ucp_2_rev_dev->vir_head = ioremap_cache(UCP_2_APE_REV_MEM_START,UCP_2_APE_REM_MEM_LEN); + + dma_coerce_mask_and_coherent(ucp_2_rev_dev->dev, DMA_BIT_MASK(32)); + +/* + for(i = 0; i< 100; i++) + { //GFP_ATOMIC,GFP_KERNEL + vir_addr = dma_alloc_coherent(ucp_2_rev_dev->dev, 0x64000, (dma_addr_t *)&phy_addr, GFP_ATOMIC); + if(vir_addr == NULL) + { + printk("revmem dma_alloc_coherent error:%d\n",i); + } + } +*/ + + dev_info(ucp_2_rev_dev->dev,"ucp_2_revem_module_init ok\n"); + return 0; +misc_err: + device_remove_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem); +attr_err: + misc_deregister(&ucp_2_revmem_miscdev); + return -1; + +} + +/* module unload function*/ +static void __exit ucp_2_revmem_module_exit(void) +{ + device_remove_file(ucp_2_revmem_miscdev.this_device, &dev_attr_ucp_2_revmem); + misc_deregister(&ucp_2_revmem_miscdev); +} + + + + + + +/* + * a simple char device driver: ExtInt without mutex + * + * Copyright (C) 2014 Barry Song (baohua@kernel.org) + * + * Licensed under GPLv2 or later. + */ + + +MODULE_AUTHOR ("lte team"); +MODULE_DESCRIPTION ("ucp_mem driver module" ); +MODULE_LICENSE ("GPL"); +module_init(ucp_2_revmem_module_init); +module_exit(ucp_2_revmem_module_exit); + + + + + + + + + diff --git a/driver/ucp_2_revmem/ucp_2_revmem.h b/driver/ucp_2_revmem/ucp_2_revmem.h new file mode 100644 index 0000000..be36ef3 --- /dev/null +++ b/driver/ucp_2_revmem/ucp_2_revmem.h @@ -0,0 +1,24 @@ +#ifndef __HPP_REVMEM_H__ +#define __HPP_REVMEM_H__ + + + + +#define UCP_2_APE_REV_MEM_START 0x90000000 +#define UCP_2_APE_REV_MEM_BLOCK_SIZE 0x100000 +#define UCP_2_APE_REV_MEM_BLOCK_NUM 18 +/*#define HPP_APE_REM_MEM_LEN (HPP_APE_REV_MEM_BLOCK_NUM * HPP_APE_REV_MEM_BLOCK_SIZE)*/ +#define UCP_2_APE_REM_MEM_LEN 0x20000000 + +#define SHARE_MEM_BASE_PHY_ADDR 0x009D00000UL +#define LEN_OF_SHARE_MEM 0x000800000UL +#define SHARE_MEM_END_PHY_ADDR (SHARE_MEM_BASE_PHY_ADDR + LEN_OF_SHARE_MEM) + +#define ARM_STACK_BASE_PHY_ADDR 0x0B8000000UL +// + + + + + +#endif \ No newline at end of file diff --git a/interface/arm_interface.h b/interface/arm_interface.h new file mode 100644 index 0000000..066c642 --- /dev/null +++ b/interface/arm_interface.h @@ -0,0 +1,108 @@ +#ifndef __ARM_INTERFACE_H__ +#define __ARM_INTERFACE_H__ + +typedef int OSP_STATUS; + +/********************** header files **********************/ +#include "msg_transfer_layer.h" +#include "ospHeap.h" + +typedef enum +{ + ZERO_FLAG = 0, /*0标志*/ + TRUE_FLAG /*1 标志*/ +}clk_flag_e; + +typedef enum +{ + CLK_DISABLE = 0, /* clock unuseable status */ + CLK_WARM_UP = 1, /* warm up status */ + CLK_TRACKING, /* tracking status */ + CLK_HOLD_OVER /* hold over status */ +}clk_sync_state_e; + +typedef struct +{ + uint32_t common_alarm; + uint32_t hold_over_time; + clk_sync_state_e status; +}clock_module_status_s; + +/****************** Msg_transfer function *****************/ +/* +name: msg_transfer_mem_init +para: null +brief: msg_transfer memory init(before call msg_transfer_init) +*/ +void msg_transfer_mem_init(void); + +/* +name: ucp_handshake +para: null +brief: handshake with host(after call msg_transfer_init) +*/ +void ucp_handshake(void); + +/* +name: rx_callback_oam +para: Input: buf: the address of the data +para: Input: payloadSize: the length of the data +brief: ape/rfm log receive callback +*/ +uint32_t rx_callback_oam(const char* buf,uint32_t payloadSize); + +/********************** Init function *********************/ +/* +name: osp_init +para: null +brief: osp function init +*/ +OSP_STATUS osp_init(); + +uint32_t read_stc_local_timer(void); + +/* +name: drv_init +para: null +brief: drv function init +*/ +int32_t drv_init(void); + +/**********************************************************************************************/ +/* testmac interface */ + +/********************** Init function *********************/ +/* +name: osp_arm_log_proc +para: Input: pbuf: the log's address +para: Input: len: the log's length +para: Input: logid: the log's id +para: Input: msg_type: the log's type +brief: arm log output +*/ +OSP_STATUS osp_arm_log_proc(char *pbuf, uint32_t len ,uint32_t logid, uint32_t msg_type); + +/********************** Osp function *********************/ +/* +name: osp_read_spe_cfg_file +para: Input: path: the config file's path +brief: load the spe config file by the path +*/ +int32_t osp_read_spe_cfg_file(char* path); + +/* +name: osp_get_cfg_file +para: Input: name: the config file's name +para: Output: paddr: the config file's address +para: Output: psize: the config file's size +brief: get a config file's address and size +*/ +int32_t osp_get_cfg_file(char* name, uint64_t *paddr, uint32_t *psize); + +int32_t get_clock_module_status(volatile clock_module_status_s* clk_module_status_ptr); +int32_t set_clk_mode(clk_flag_e pseudo_flag); + + + +#endif /* __ARM_INTERFACE_H__ */ + diff --git a/interface/memcpy_csu.h b/interface/memcpy_csu.h new file mode 100644 index 0000000..2dc6166 --- /dev/null +++ b/interface/memcpy_csu.h @@ -0,0 +1,59 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : memcpy_csu.h +// Author : xianfeng.du +// Created On : 2022-12-1 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#ifndef _MEMCPY_CSU_H_ +#define _MEMCPY_CSU_H_ + +#include "typedef.h" + +typedef enum eUcpMemCpyCsuType { + STACK2MSG, + MSG2STACK, + STACK2STACK +} UcpMemcpyCsuType_e; + +/****************************************************************** +* description:åè®®æ ˆå†…å­˜ä¹‹é—´æ•°æ®æ¬ç§» +* Input(s): +* dst_phy_addr:目的地å€(物ç†åœ°å€) +* src_phy_addr:æºåœ°å€(物ç†åœ°å€) +* size:æ¬ç§»é•¿åº¦ï¼Œå•ä½:字节 +* check_flag:是å¦ç­‰å¾…æ¬ç§»ç»“æŸ 1:等待,0:ä¸ç­‰å¾… +* +* Output(s): +* æ—  +* +* Returns: +* æ—  +********************************************************************/ +void memcpy_csu_stack2stack(uint64_t dst_phy_addr, uint64_t src_phy_addr, uint32_t size,uint8_t check_flag); + + +/****************************************************************** +* description:å议栈内存与fapi消æ¯å†…å­˜ä¹‹é—´æ•°æ®æ¬ç§» +* Input(s): +* stack_phy_addr:å议栈内存地å€(物ç†åœ°å€) +* msg_virt_addr:fapi消æ¯å†…存地å€(虚拟地å€) +* size:æ¬ç§»é•¿åº¦ï¼Œå•ä½:字节 +* type:æ¬ç§»ç±»åž‹ï¼šSTACK2MSG/MSG2STACK +* check_flag:是å¦ç­‰å¾…æ¬ç§»ç»“æŸ 1:等待,0:ä¸ç­‰å¾… +* Output(s): +* æ—  +* Returns: +* æ—  +********************************************************************/ + +void memcpy_csu_stack_and_msg(uint64_t stack_phy_addr, uint64_t msg_virt_addr, uint32_t size,UcpMemcpyCsuType_e type, uint8_t check_flag); + +#endif + diff --git a/interface/msg_transfer_layer.h b/interface/msg_transfer_layer.h new file mode 100644 index 0000000..72cbac7 --- /dev/null +++ b/interface/msg_transfer_layer.h @@ -0,0 +1,81 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#include "typedef.h" + +#define MAX_INSTANCE_NUM (2) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + msg_transfer_callback tx_callback; + msg_transfer_callback rx_callback; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/interface/ospHeap.h b/interface/ospHeap.h new file mode 100644 index 0000000..fd355a6 --- /dev/null +++ b/interface/ospHeap.h @@ -0,0 +1,109 @@ +#ifndef __OSPHEAP__ +#define __OSPHEAP__ + +#define ECS_SM_DM_BASE_PHY_ADDR 0x007200000UL +#define PET_SM_DM_BASE_PHY_ADDR 0x008700000UL +#define APE_DM_BASE_PHY_ADDR 0x009400000UL //APCx(x:0-3):0x009400000+x*0x200000,2M per APC +#define SHARE_MEM_BASE_PHY_ADDR 0x009D00000UL +#define APE_PHY_BASE_PHY_ADDR 0x010000000UL +#define APE_TEXT_BASE_PHY_ADDR 0x090000000UL +#define ARM_APE_MSG_BASE_PHY_ADDR 0x0A0000000UL +#define APE_LOG_BASE_PHY_ADDR 0x0A8000000UL +#define RESERVED_BASE_PHY_ADDR 0x100000000UL +#define ARM_STACK_BASE_PHY_ADDR 0x100000000UL + +#define LEN_OF_ECS_SM_DM 0x000060000UL //sm(0x20000) + dm(0x40000) +#define LEN_OF_PET_SM_DM 0x000060000UL //sm(0x20000) + dm(0x40000) +#define LEN_OF_APE_DM 0x000800000UL +#define LEN_OF_SHARE_MEM 0x000800000UL +#define LEN_OF_APE_PHY 0x080000000UL +#define LEN_OF_APE_TEXT 0x010000000UL +#define LEN_OF_ARM_APE_MSG 0x008000000UL +#define LEN_OF_APE_LOG 0x010000000UL +#define LEN_OF_ARM_STACK 0x100000000UL + +#define OSP_DISPLAY_MAX_LEN 0x400 +#define OSP_DISPLAY_PAGE_LEN 0x1000 + +typedef enum +{ + ECS_SM = 0, //actual ECS_SM_DM 384 total SM:128KB:0x007200000UL,DM:256KB:0x007220000UL + PET_SM, //actual PET_SM_DM 384 total SM:128KB:0x008700000UL,DM:256KB:0x008720000UL + APE_DM, + SHARE_MEM, + APE_PHY, + APE_TEXT, + ARM_APE_MSG, + APE_LOG, + ARM_STACK, + MEM_RESERVE +}module_type_e; + +/****************************************************************** +* Input(s): +* module:module_type_e类型枚举值,FAPI消æ¯ç±»åž‹ä¸ºARM_APE_MSGï¼› +* virt_addr:待转æ¢çš„虚拟地å€ã€‚ +* +* Output(s): +* phy_addr:物ç†åœ°å€ +* +* Returns: +* 0:æˆåŠŸ +* éž0:失败 +********************************************************************/ +int32_t osp_virt_to_phy(module_type_e module, uint64_t virt_addr, uint64_t *phy_addr); + +/****************************************************************** +* Input(s): +* module:module_type_e类型枚举值,FAPI消æ¯ç±»åž‹ä¸ºARM_APE_MSGï¼› +* phy_addr:待转æ¢çš„物ç†åœ°å€ã€‚ +* +* Output(s): +* virt_addrï¼šè™šæ‹Ÿåœ°å€ +* +* Returns: +* 0:æˆåŠŸ +* éž0:失败 +********************************************************************/ +int32_t osp_phy_to_virt(module_type_e module, uint64_t phy_addr, uint64_t *virt_addr); + +/****************************************************************** +* Input(s): +* addr:虚拟地å€ï¼› +* len:长度。 +* +* Output(s): +* +* +* Returns: +* +********************************************************************/ +void osp_flush_dcache_area(void * volatile addr, uint64_t volatile len); +void osp_clean_dcache_area(void * volatile addr, uint64_t volatile len); + +/****************************************************************** +* Input(s): +* module:module_type_e类型枚举值,FAPI消æ¯ç±»åž‹ä¸ºARM_APE_MSGï¼› +* addr:虚拟地å€ï¼› +* len:长度。 +* +* Output(s): +* +* +* Returns: +* 0:æˆåŠŸ +* éž0:失败 +********************************************************************/ +int32_t osp_invalid_dcache_area(module_type_e module, uint64_t virt_addr, uint64_t len); + +/**********************************************************************************************/ +/* testmac interface */ +void *get_static_mem(module_type_e module, uint64_t *len); +void *osp_heap_mem_init(char *pbuf, uint64_t size,void *head_of_static_mem,module_type_e module); +int8_t *osp_alloc_heap_mem(void *heap, uint32_t size); +int32_t osp_free_heap_mem(void *heap, char *pbuf); +int32_t osp_show_heap_mem(void *heap); +int32_t osp_display_phy_mem(uint64_t phy_addr, uint32_t len); + +#endif + diff --git a/interface/typedef.h b/interface/typedef.h new file mode 100644 index 0000000..74b4889 --- /dev/null +++ b/interface/typedef.h @@ -0,0 +1,31 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : typedef.h +// Author : xianfeng.du +// Created On : 2022-06-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __TYPEDEF_H__ +#define __TYPEDEF_H__ + +//Types definitions +//typedef unsigned char bool; +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef short int int16_t; +typedef unsigned short int uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long int int64_t; +typedef unsigned long int uint64_t; +//typedef long long int int64_t; +//typedef unsigned long long int uint64_t; + +#endif diff --git a/kernel/dts/ucp4008-evb.dts b/kernel/dts/ucp4008-evb.dts new file mode 100644 index 0000000..5062c98 --- /dev/null +++ b/kernel/dts/ucp4008-evb.dts @@ -0,0 +1,1589 @@ +/dts-v1/; + +#include +#include +#include +#include +#include +#include +#include +#include + +/ { + compatible = "smartlogic,ucp2"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + serial0 = &serial_0; + serial1 = &serial_1; + serial2 = &serial_2; + serial3 = &serial_3; + }; + chosen { + stdout-path = &serial_0; + }; + + soc: soc { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + //dma-ranges = <0xe0000000 0 0 0x10000000>; + //ranges = <0 0xe0000000 0 0x10000000>; + apb-pclk{ + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + clock-output-names = "apb-pclk"; + }; + + gic: interrupt-controller@02181000 { + compatible = "arm,gic-v3"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0x01800000 0x10000>, /* GICD */ + <0x01900000 0x00F60000>, /* GICR */ + <0x04200000 0x00010000>, /* GICC */ + <0x01820000 0x00010000>, /* GICH */ + <0x01830000 0x00010000>; /* GICV */ + interrupt-parent = <&gic>; + }; + + serial_0: serial@04440000 { + compatible = "snps,dw-apb-uart"; + reg = <0x04440000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "baudclk"; + clocks = <&clock_reset UART0_SCLK>; + reg-io-width = <4>; + reg-shift = <2>; + status = "okay"; + }; + serial_1: serial@04448000 { + compatible = "snps,dw-apb-uart"; + reg = <0x04448000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "baudclk"; + clocks = <&clock_reset UART1_SCLK>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + serial_2: serial@04d00000 { + compatible = "snps,dw-apb-uart"; + reg = <0x04d00000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "baudclk"; + clocks = <&clock_reset UART2_SCLK>; + reg-io-width = <4>; + reg-shift = <2>; + status = "okay"; + }; + serial_3: serial@04d08000 { + compatible = "snps,dw-apb-uart"; + reg = <0x04d08000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "baudclk"; + clocks = <&clock_reset UART3_SCLK>; + reg-io-width = <4>; + reg-shift = <2>; + status = "disabled"; + }; + stc: stc-controller@08568000 { + compatible = "smartlogic,stc"; + reg = <0x08568000 0x8000>; + interrupt-parent = <&gic>; + interrupts = , + , + ; + status = "okay"; + }; + timer { + compatible = "arm,armv8-timer"; + interrupts =, + , + , + ; +// clock-frequency = <50000000>; /* 50M */ + }; + +// pet:pet@{ +// compatible = "smartlogic,pet"; +// reg = <0x091d0000 0x10000>, +// <0x091f0000 0x10000>; +// +// }; + + smmu: mmu@042b8000 { + compatible = "arm,mmu-500"; + reg = <0x042b8000 0x20000>; + #global-interrupts = <1>; + #iommu-cells = <1>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + }; + + clock_reset: clock-controller@04550000 { + compatible = "smartlogic,ucp2-clock"; + reg = <0x04550000 0x10000>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + + pcie: pcie@091e0000 { + compatible = "smartlogic,pcie-ucp4008evb"; + interrupts = , + ; + interrupt-names = "sys", "perst"; + reg = <0x091e0000 0x10000>, /* pcie-app */ + <0x0c000000 0x500000>, /* pcie-dbi */ + <0x04550000 0x1000>, /* pcie-crg */ + <0x04560000 0x1000>, /* pcie-syscfg */ + <0x091d0000 0x1000>, /* pet-ctrl */ + <0x091f0000 0x1000>, /* pet-crg */ + <0x09204000 0x100000>; /* pet-pma3 */ + reg-names = "pcie-app", "pcie-dbi", "pcie-crg", "pcie-syscfg", "pet-ctrl", "pet-crg", "pet-pma3"; + ep-id = <0>; + status = "disabled"; + }; + + pvt: pvt@4708000 { + compatible = "ucp4008pvt"; + reg = <0x4708000 0x1000>; + interrupts = ; + status = "okay"; + + tsa_hytrs = <0>; + tsa_alarm = <100000>; + + tsb_hytrs = <0>; + tsb_alarm = <95000>; + + vma_hytrs = <700>; + vma_alarm = <850>; + + vmb_hytrs = <690>; + vmb_alarm = <870>; + }; + + i2c_0: i2c@04420000{ /* AT24CM01 */ + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,designware-i2c"; + reg = <0x04420000 0x8000>; + interrupts = ; + clock-frequency = <400000>; + clocks = <&clock_reset I2C0_CLK>; + status = "okay"; + eeprom@50 { + compatible = "atmel,24c1024"; + reg = <0x50>; + }; + }; + + i2c_1: i2c@04428000{ /* i2c switch */ + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,designware-i2c"; + reg = <0x04428000 0x8000>; + interrupts = ; + clock-frequency = <100000>; //400000 + clocks = <&clock_reset I2C1_CLK>; + status = "okay"; + + i2c-switch@70 { + compatible = "nxp,pca9548"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x70>; + + sfp0_i2c: i2c@3 { /* TMAC SFP */ + #address-cells = <1>; + #size-cells = <0>; + reg = <0x3>; + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0x4>; + + sensor@49 { + compatible = "ti,tmp468"; + reg = <0x49>; + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0x0>; + label = "local"; + }; + channel@1 { + reg = <0x1>; + label = "external-ch1"; + }; + channel@2 { + reg = <0x2>; + label = "external-ch2"; + }; + channel@3 { + reg = <0x3>; + label = "external-ch3"; + }; + channel@4 { + reg = <0x4>; + label = "external-ch4"; + }; + channel@5 { + reg = <0x5>; + label = "external-ch5"; + }; + channel@6 { + reg = <0x6>; + label = "external-ch6"; + }; + channel@7 { + reg = <0x7>; + label = "external-ch7"; + }; + channel@8 { + reg = <0x8>; + label = "external-ch8"; + }; + }; + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0x5>; + ltm4677@40{ + compatible = "lltc,ltm4677"; + reg = <0x40>; + }; + ltm4677@42{ + compatible = "lltc,ltm4677"; + reg = <0x42>; + }; + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0x6>; + ltm4675@42{ + compatible = "lltc,ltm4675"; + reg = <0x42>; + }; + }; + + }; + + }; + + sfp0: sfp-0 { + compatible = "sff,sfp"; + i2c-bus = <&sfp0_i2c>; + maximum-power-milliwatt = <2000>; + }; + + pinctrl: pinctrl@04458000 { + compatible = "ucp2,pinctrl"; + + leds_gpio: leds_gpio { + ucp2,pins = ; /* GPIO0B18 */ + ucp2,pull = ; + ucp2,function = ; + }; + phy0_reset_gpio:phy0_reset_gpio{ + ucp2,pins = ; /* GPIO1B5 */ + ucp2,pull = ; + ucp2,function = ; + }; + phy1_reset_gpio:phy1_reset_gpio{ + ucp2,pins = ; /* GPIO1B4 */ + ucp2,pull = ; + ucp2,function = ; + }; + usb_reset_gpio:usb_reset_gpio{ + ucp2,pins = ; /* GPIO1B7 */ + ucp2,pull = ; + ucp2,function = ; + }; + i2c_mux_reset_gpio:i2c_mux_reset_gpio{ + ucp2,pins = ; /* GPIO1B6 */ + ucp2,pull = ; + ucp2,function = ; + }; + reset_8A34002_gpio:reset_8A34002_gpio{ + ucp2,pins = ; /* GPIO1B8 */ + ucp2,pull = ; + ucp2,function = ; + }; + pcie_reset_gpio:pcie_reset_gpio{ + ucp2,pins = ; /* input ??? GPIO0B13 */ + ucp2,pull = ; + ucp2,function = ; + }; + gps_reset_gpio:gps_reset_gpio{ + ucp2,pins = ; /* GPIO1-B29 */ + ucp2,pull = ; + ucp2,function = ; + }; + + qspi0_cs_gpio:qspi0_cs_gpio{ + ucp2,pins = ; /* GPIO0-B23 */ + ucp2,pull = ; + ucp2,function = ; + }; + qspi0_gpios:qspi0_gpios{ + ucp2,pins = ; + ucp2,pull = ; + ucp2,function = ; + }; + + spi1_gpios:spi1_gpios{ + ucp2,pins = ; + ucp2,pull = ; + ucp2,function = ; + }; + spi2_gpios:spi2_gpios{ + ucp2,pins = ; + ucp2,pull = ; + ucp2,function = ; + }; + spi2_cs_8A34002:spi2_cs_8A34002{ + ucp2,pins = ; /* GPIO0A11 */ + ucp2,pull = ; + ucp2,function = ; + }; + + // by daya 1 + AD9026_reset_gpio:AD9026_reset_gpio{ + ucp2,pins = ; /* GPIO1B9 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_tx1_gpio:AD9026_tx1_gpio{ + ucp2,pins = ; /* GPIO1B13 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_tx2_gpio:AD9026_tx2_gpio{ + ucp2,pins = ; /* GPIO1B12 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_tx3_gpio:AD9026_tx3_gpio{ + ucp2,pins = ; /* GPIO1B15 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_tx4_gpio:AD9026_tx4_gpio{ + ucp2,pins = ; /* GPIO1B14 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_rx1_gpio:AD9026_rx1_gpio{ + ucp2,pins = ; /* GPIO1B17 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_rx2_gpio:AD9026_rx2_gpio{ + ucp2,pins = ; /* GPIO1B16 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_rx3_gpio:AD9026_rx3_gpio{ + ucp2,pins = ; /* GPIO1B19 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9026_rx4_gpio:AD9026_rx4_gpio{ + ucp2,pins = ; /* GPIO1B18 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9528_reset_gpio:AD9528_reset_gpio{ + ucp2,pins = ; /* GPIO1B11 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9528_sysrefRequest_gpio:AD9528_sysrefRequest_gpio{ + ucp2,pins = ; /* GPIO1B10 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9528_status0_gpio:AD9528_status0_gpio{ + ucp2,pins = ; /* GPIO1B27 */ + ucp2,pull = ; + ucp2,function = ; + }; + AD9528_status1_gpio:AD9528_status1_gpio{ + ucp2,pins = ; /* GPIO1B26 */ + ucp2,pull = ; + ucp2,function = ; + }; + spi1_cs_AD9026:spi1_cs_AD9026{ + ucp2,pins = ; /* GPIO0A6 */ + ucp2,pull = ; + ucp2,function = ; + }; + spi1_cs_AD9528:spi1_cs_AD9528{ + ucp2,pins = ; /* GPIO0B19 */ + ucp2,pull = ; + ucp2,function = ; + }; + // end 1 + + }; + + gpio0: gpio@04450000 { + compatible = "snps,dw-apb-gpio"; + reg = <0x04450000 0x8000>; + #address-cells = <1>; + #size-cells = <0>; + port0a: gpio@0 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <2>; + snps,nr-gpios = <32>; + reg = <0>; +// interrupt-controller; +// interrupt-parent = <&gic>; +// interrupts = ; + }; + port0b: gpio@1 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <2>; + snps,nr-gpios = <32>; + reg = <1>; + }; + }; + + gpio1: gpio@04D10000 { + compatible = "snps,dw-apb-gpio"; + reg = <0x04D10000 0x8000>; + #address-cells = <1>; + #size-cells = <0>; + port1a: gpio@0 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <2>; + snps,nr-gpios = <15>; /* GPIO1A0-GPIO1A14 */ + reg = <0>; +// interrupt-controller; +// interrupt-parent = <&gic>; +// interrupts = ; + }; + port1b: gpio@1 { + compatible = "snps,dw-apb-gpio-port"; + gpio-controller; + #gpio-cells = <2>; + snps,nr-gpios = <32>; /* GPIO1B0-GPIO1B31 */ + reg = <1>; + }; + + /* GPIO1A17-GPIO1A31 only used in LVDS mode disable */ + }; + + leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&leds_gpio>; + status = "okay"; + heartbeat { + label = "Heartbeat"; + gpios = <&port0b 18 GPIO_ACTIVE_LOW>; /* GPIO0B18 */ + linux,default-trigger = "heartbeat"; + }; + }; + + usbphy_reset { + compatible = "smartlogic,usbphy_reset"; + pinctrl-names = "default"; + pinctrl-0 = <&usb_reset_gpio>; + status = "okay"; + pin = <&port1b 7 GPIO_ACTIVE_LOW>; /* GPIO1B7 */ + }; + i2c_reset { + compatible = "smartlogic,i2c_reset"; + pinctrl-names = "default"; + pinctrl-0 = <&i2c_mux_reset_gpio>; + status = "okay"; + pin = <&port1b 6 GPIO_ACTIVE_LOW>; /* GPIO1B6 */ + }; + ad9026_reset { + compatible = "smartlogic,ad9026_reset"; + pinctrl-names = "default"; + pinctrl-0 = <&AD9026_reset_gpio>; + status = "okay"; + pin = <&port1b 9 GPIO_ACTIVE_LOW>; /* GPIO1B9 */ + }; + reset_8A34002 { + compatible = "smartlogic,reset_8A34002"; + pinctrl-names = "default"; + pinctrl-0 = <&reset_8A34002_gpio>; + status = "okay"; + pin = <&port1b 8 GPIO_ACTIVE_LOW>; /* GPIO1B8 */ + }; + ad9528_reset { + compatible = "smartlogic,AD9528_reset"; + pinctrl-names = "default"; + pinctrl-0 = <&AD9528_reset_gpio>; + status = "okay"; + pin = <&port1b 11 GPIO_ACTIVE_LOW>; /* GPIO1B11 */ + }; + + ethernet0: ethernet0@01a40000 { + compatible = "smartlogic,dwmac-5.10a"; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "tx", "ptp_ref"; + clocks = <&clock_reset GMAC0_TX_CLK>, + <&clock_reset GMAC0_PTP_REF_CLK>; + reg = <0x01a40000 0x4000>; + phy-handle = <ðphy0>; + phy-mode = "rgmii"; + ethernet= <0>; + snps,en-tx-lpi-clockgating; + snps,en-lpi; + snps,write-requests = <4>; + snps,read-requests = <4>; + snps,burst-map = <0x4>; + snps,txpbl = <16>; + snps,rxpbl = <16>; + snps,aal; + snps,tso; + sph_disable; + smartlogic,mac-delay = <0x0303>; + status = "okay"; + + mdio0: mdio0 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "snps,dwmac-mdio"; + }; + }; + + ethernet1: ethernet1@01a50000 { + compatible = "smartlogic,dwmac-5.10a"; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "tx", "ptp_ref"; + clocks = <&clock_reset GMAC1_TX_CLK>, + <&clock_reset GMAC1_PTP_REF_CLK>; + reg = <0x01a50000 0x4000>; + phy-handle = <ðphy1>; + phy-mode = "rgmii"; + ethernet= <1>; + snps,en-tx-lpi-clockgating; + snps,en-lpi; + snps,write-requests = <4>; + snps,read-requests = <4>; + snps,burst-map = <0x4>; + snps,txpbl = <16>; + snps,rxpbl = <16>; + snps,aal; + snps,tso; + sph_disable; + smartlogic,mac-delay = <0x0303>; + status = "okay"; + + /*fixed-link { + speed = <1000>; + full-duplex; + };*/ + + mdio1: mdio1 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "snps,dwmac-mdio"; + }; + }; + + ethernet2: ethernet2@08524000 { + compatible = "smartlogic,dwmac-5.10a"; + interrupt-parent = <&gic>; + interrupts = ; +// clock-names = "tx"; +// clocks = <&clock_reset GMAC2_TX_CLK>; + reg = <0x08524000 0x1FFFF>; +// phy-handle = <ðphy0>; + phy-mode = "gmii"; + ethernet= <2>; + snps,en-tx-lpi-clockgating; + snps,en-lpi; + snps,write-requests = <4>; + snps,read-requests = <4>; + snps,burst-map = <0x4>; + snps,txpbl = <16>; + snps,rxpbl = <16>; + snps,aal; + snps,tso; + sph_disable; + smartlogic,mac-delay = <0x0101>; + status = "okay"; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + ethernet3: ethernet3@09090000 { + compatible = "smartlogic,dwxgmac"; + interrupt-parent = <&gic>; + interrupts = ; + clock-names = "tx", "ptp_ref"; + clocks = <&clock_reset TMAC_PTP_REF_CLK>, + <&clock_reset TMAC_PTP_REF_CLK>; + reg = <0x09090000 0x100000>; +// phy-handle = <ðphy0>; + phy-mode = "xlgmii"; + sfp = <&sfp0>; + ethernet= <3>; + snps,en-tx-lpi-clockgating; + snps,en-lpi; + snps,write-requests = <4>; + snps,read-requests = <4>; + snps,burst-map = <0x4>; + snps,txpbl = <16>; + snps,rxpbl = <16>; + max-frame-size = <16368>; + snps,multicast-filter-bins = <256>; + snps,perfect-filter-entries = <128>; + snps,axi-config = <&stmmac_axi_setup>; + snps,mtl-rx-config = <&mtl_rx_setup>; + snps,mtl-tx-config = <&mtl_tx_setup>; + rx-fifo-depth = <16384>; + tx-fifo-depth = <16384>; + snps,aal; + snps,tso; + sph_disable; +// smartlogic,mac-delay = <0x0101>; + //max-speed = <10000>; + sfp-max-speed = <10000>; + managed = "in-band-status"; + status = "okay"; + /*fixed-link { + speed = <10000>; + full-duplex; + };*/ + + }; + + stmmac_axi_setup: stmmac-axi-config { + snps,wr_osr_lmt = <0xf>; + snps,rd_osr_lmt = <0xf>; + snps,blen = <256 128 64 32 0 0 0>; + }; + + mtl_rx_setup: rx-queues-config { + snps,rx-queues-to-use = <1>; + snps,rx-sched-sp; + queue0 { + snps,dcb-algorithm; + snps,map-to-dma-channel = <0x0>; + snps,priority = <0x0>; + }; + }; + + mtl_tx_setup: tx-queues-config { + snps,tx-queues-to-use = <1>; + snps,tx-sched-wrr; + queue0 { + snps,weight = <0x10>; + snps,dcb-algorithm; + snps,priority = <0x0>; + }; + /*queue1 { + snps,avb-algorithm; + snps,send_slope = <0x1000>; + snps,idle_slope = <0x1000>; + snps,high_credit = <0x3E800>; + snps,low_credit = <0xFFC18000>; + snps,priority = <0x1>; + };*/ + }; + +// sysctrl: sysctrl@04560000 { +// compatible = "smartlogic,ucp4008-sysctrl"; +// reg = <0x04560000 0x10000>; +// #reset-cells = <1>; +// }; + + usb: usb@045c0000 { + compatible = "smartlogic,ucp4008-usb", "snps,dwc2"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x045c0000 0x40000>; + interrupts = ; + + pinctrl-names = "default"; + pinctrl-0 = <&usb_reset_gpio>; + reset-gpios = <&port1b 7 GPIO_ACTIVE_HIGH>; + + dr_mode = "host"; + //dr_mode = "peripheral"; + //dr_mode = "otg"; + + status = "disable"; + }; + + mmcsd: mmcsd@01a60000 { + compatible = "snps,dw-mshc"; + reg = <0x01a60000 0x1000>; + interrupts = ; + clocks = <&clock_reset CIU_CCLK>,<&clock_reset CIU_CCLK_DIV>,<&clock_reset SDIO_TUNING_CLK_DIV>; + clock-names = "biu","ciu","ciu_div1"; + fifo-depth = <512>; + card-detect-delay = <200>; + bus-width = <8>; + max-frequency = <40000000>; /* 40M */ + clock-frequency = <62500000>; /* 62.5M */ + smartlogic,clock-frequency-div1 = <250000000>; /* 250M */ + status = "okay"; + cap-mmc-highspeed; + cap-sd-highspeed; + non-removable; + }; + + eip0: eip@01060000 { + #adress-cells = <1>; + #size-cells = <1>; + compatible = "smartlogic, eip-197"; + interrupt-parent = <&gic>; + interrupts = , + , + , + , + ; + reg = <0x01060000 0x200000>; + }; + + eip1: eip@01260000 { + #adress-cells = <1>; + #size-cells = <1>; + compatible = "smartlogic, eip-197-pdcp"; + interrupt-parent = <&gic>; + interrupts = , + , + , + , + ; + reg = <0x01260000 0x200000>; + }; + + com_module{ + compatible = "smartlogic,com"; + status = "okay"; + //reg = <0x30000000 0x1fb0>; + //mem_block_size = <4096>; + com_header_addr = <0x931fc00>; + }; + + qspi_0: spi@04430000 { /* spi0 MT25QU02G */ + compatible = "snps,dw-apb-ssi"; + reg = <0x04430000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clocks = <&clock_reset SSI0_CLK>; + pinctrl-names = "default"; + pinctrl-0 = <&qspi0_cs_gpio &qspi0_gpios>; +// resets = <&clock_reset SSI1_DEV_SWRSTREQ>; + reset-names = "spi0"; + bus-num = <0x0>; + reg-io-width = <4>; + num-cs = <1>; + cs-gpios = <&port0b 23 GPIO_ACTIVE_HIGH>; + reg-shift = <2>; + status = "okay"; + }; + + // by daya 2 + spi_1: spi@04438000 { /* spi1 ADRV9026 AD9528 */ + compatible = "snps,dw-apb-ssi"; + reg = <0x04438000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; + clocks = <&clock_reset SSI1_CLK>; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_cs_AD9026>,<&AD9026_reset_gpio>,<&spi1_cs_AD9528>,<&AD9528_reset_gpio>,<&AD9528_sysrefRequest_gpio>, + <&AD9026_tx1_gpio>,<&AD9026_tx2_gpio>,<&AD9026_tx3_gpio>,<&AD9026_tx4_gpio>, + <&AD9026_rx1_gpio>,<&AD9026_rx2_gpio>,<&AD9026_rx3_gpio>,<&AD9026_rx4_gpio>, + <&leds_gpio>,<&AD9528_status0_gpio>,<&AD9528_status1_gpio>; +// resets = <&clock_reset SSI1_DEV_SWRSTREQ>; + reset-names = "spi1"; + bus-num = <1>; + reg-io-width = <4>; + // daya num-cs = <2>; + // daya cs-gpios = <&port0a 6 GPIO_ACTIVE_HIGH>, <&port0b 19 GPIO_ACTIVE_HIGH>; + reg-shift = <2>; + status = "okay"; + }; + + spi2: spi@04d18000 { /* spi2 8A34002 */ +// compatible = "snps,dwc-ssi-1.01a"; + compatible = "snps,dw-apb-ssi"; + reg = <0x04d18000 0x8000>; + interrupt-parent = <&gic>; + interrupts = ; +// clocks = <&clock_reset SSI2_CLK>, +// <&clock_reset SSI2_CLK_DIV>; + clocks = <&clock_reset SSI2_CLK>; + clock-names = "ssi_clk","pclk"; + pinctrl-names = "default"; + pinctrl-0 = <&spi2_cs_8A34002>,<&spi2_gpios>; + //resets = <&clock_reset SSI2_DEV_SWRSTREQ>; + reset-names = "spi"; + bus-num = <0x2>; + /* Could possibly go up to 200 MHz */ + spi-max-frequency = <100000000>; /* 100M */ + num-cs = <1>; + cs-gpios = <&port0a 11 GPIO_ACTIVE_HIGH>; + reg-io-width = <4>; + status = "okay"; + }; + +// dma_test { +// compatible = "smartlogic,dma_test"; +// status = "okay"; +// iommus = <&smmu>; +// dma-ranges; +// memory-region = <&cdsp_fw_mem1>; +// }; + +// smmu_test { +// compatible = "smartlogic,smmu_test"; +// status = "okay"; +// iommus = <&smmu UCP4008_SID_SMMU_TEST>; +// }; + timer00: timer@04418000 { + compatible = "snps,dw-apb-timer"; + reg = <0x004418000 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + clocks = <&clock_reset TIMER00_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER00_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer01: timer@04418014 { + compatible = "snps,dw-apb-timer"; + reg = <0x004418014 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER01_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER01_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer02: timer@04418028 { + compatible = "snps,dw-apb-timer"; + reg = <0x04418028 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER02_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER02_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer03: timer@0441803c { + compatible = "snps,dw-apb-timer"; + reg = <0x0441803c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER03_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER03_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer04: timer@04418050 { + compatible = "snps,dw-apb-timer"; + reg = <0x0441805 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER04_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER04_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer05: timer@04418064 { + compatible = "snps,dw-apb-timer"; + reg = <0x04418064 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER05_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER05_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer06: timer@04418078 { + compatible = "snps,dw-apb-timer"; + reg = <0x04418078 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER06_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER06_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer07: timer@0441808c { + compatible = "snps,dw-apb-timer"; + reg = <0x0441808c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER07_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER07_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer10: timer@04D28000 { + compatible = "snps,dw-apb-timer"; + reg = <0x004D28000 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + clocks = <&clock_reset TIMER10_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER10_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer11: timer@04D28014 { + compatible = "snps,dw-apb-timer"; + reg = <0x004D28014 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER11_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER11_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer12: timer@04D28028 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D28028 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER12_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER12_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer13: timer@04D2803c { + compatible = "snps,dw-apb-timer"; + reg = <0x04D2803c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER13_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER13_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer14: timer@04D28050 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D2805 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER14_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER14_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer15: timer@04D28064 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D28064 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER15_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER15_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer16: timer@04D28078 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D28078 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER16_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER16_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer17: timer@04D2808c { + compatible = "snps,dw-apb-timer"; + reg = <0x04D2808c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER17_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER17_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer20: timer@04D38000 { + compatible = "snps,dw-apb-timer"; + reg = <0x004D38000 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + clocks = <&clock_reset TIMER20_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER20_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer21: timer@04D38014 { + compatible = "snps,dw-apb-timer"; + reg = <0x004D38014 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER21_CLK>; + clock-names = "timer"; + +// resets = <&clock_reset TIMER21_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer22: timer@04D38028 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D38028 0x14>; + interrupt-parent = <&gic>; + interrupts = ; + + clocks = <&clock_reset TIMER22_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER22_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer23: timer@04D3803c { + compatible = "snps,dw-apb-timer"; + reg = <0x04D3803c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER23_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER23_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer24: timer@04D38050 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D3805 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER24_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER24_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + timer25: timer@04D38064 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D38064 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER25_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER25_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer26: timer@04D38078 { + compatible = "snps,dw-apb-timer"; + reg = <0x04D38078 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER26_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER26_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + timer27: timer@04D3808c { + compatible = "snps,dw-apb-timer"; + reg = <0x04D3808c 0x14>; + interrupts = ; + + clocks = <&clock_reset TIMER27_CLK>; + clock-names = "timer"; +// resets = <&clock_reset TIMER27_DEV_SWRSTREQ>; +// reset-names = "timer"; + status = "okay"; + }; + + test_dma: test { + compatible = "smartlogic,dma_test"; + status = "okay"; + }; + + dmac: dma-controller@04540000 { + #dma-cells = <1>; + compatible = "snps,axi-dma-1.01a"; + reg = <0x04540000 0x400>; + clocks = <&clock_reset DMAS0_CORE_CLK_DIV>, <&clock_reset DMAS0_CORE_CLK>; + clock-names = "core-clk", "cfgr-clk"; + interrupt-parent = <&gic>; + interrupts = ; + dma-channels = <8>; + snps,dma-masters = <1>; + snps,data-width = <4>; + snps,block-size = <512 512 512 512 512 512 512 512>; + snps,priority = <0 1 2 3 4 5 6 7>; + snps,axi-max-burst-len = <8>; + }; + dmas1: dma-controller@04d38000 { + #dma-cells = <1>; + compatible = "snps,axi-dma-1.01a"; + reg = <0x04d38000 0x400>; + /*clocks = <&core_clk>, <&cfgr_clk>; + clock-names = "core-clk", "cfgr-clk"; */ + interrupt-parent = <&gic>; + interrupts = ; + dma-channels = <8>; + snps,dma-masters = <1>; + snps,data-width = <4>; + snps,block-size = <512 512 512 512 512 512 512 512>; + snps,priority = <0 1 2 3 4 5 6 7>; + snps,axi-max-burst-len = <8>; +// resets = <&clock_reset DMAS1_DEV_SWRSTREQ>; +// reset-names = "DMAS1"; + }; + + wdt: watchdog@04400000 { + compatible = "snps,dw-wdt"; + reg = <0x04400000 0x100>; + clock-names = "tclk"; + clocks = <&clock_reset MAIN_PCLK_DIV>; + interrupts = ; + status = "okay"; + }; + + wdt1: watchdog@04408000 { + compatible = "snps,dw-wdt"; + reg = <0x04408000 0x100>; + clock-names = "tclk"; + clocks = <&clock_reset MAIN_PCLK_DIV>; + interrupts = ; + status = "okay"; + }; + + rtc: rtc@04410000 { + compatible = "apm,xgene-rtc"; + reg = <0x04410000 0x8000>; + interrupts = ; + #clock-cells = <1>; + clocks = <&clock_reset RTC_CLK>; + }; + }; +}; + +&qspi_0 { + #address-cells = <1>; + #size-cells = <0>; + + flash0: n25q00@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; + reg = <0>; /* chip select */ + spi-tx-bus-width= <0x1>; + spi-rx-bus-width= <0x1>; + // spi-max-frequency = <100000000>; + spi-max-frequency = <40000000>; + m25p,fast-read; + cdns,page-size = <256>; + cdns,block-size = <16>; + cdns,read-delay = <4>; + cdns,tshsl-ns = <50>; + cdns,tsd2d-ns = <50>; + cdns,tchsh-ns = <4>; + cdns,tslch-ns = <4>; + status = "okay"; + + partition@qspi-boot { + /* 8MB for raw data. */ + label = "Flash 0 Raw Data"; + reg = <0x0 0x800000>; + }; + + partition@qspi-rootfs { + /* 120MB for jffs2 data. */ + label = "Flash 0 jffs2 Filesystem"; + reg = <0x800000 0x7800000>; + }; + }; +}; + +// by daya 3 +&spi_1 { + #address-cells = <1>; + #size-cells = <0>; + + spidev0: spidev@0 { + compatible = "rohm,dh2228fv"; + spi-max-frequency = <8000000>; + reg = <0>; + bus-width = <4>; + device-width = <1>; + }; +}; + +&spi2 { + #address-cells = <1>; + #size-cells = <0>; + + phc@0 { /* Clock Matrix */ + compatible = "idt,8a34000"; + spi-max-frequency = <1000000>; + reg = <0>; + }; +}; + +&mdio0 { + ethphy0: ethernet-phy@0 { +// compatible = "ethernet-phy-ieee802.3-c22"; + compatible = "marvell,88E1510"; + reg = <1>; + device_type = "ethernet-phy"; +// marvell,reg-init = <0x12 0x14 0 0x4>; + pinctrl-names = "default"; + pinctrl-0 = <&phy0_reset_gpio>; + reset-assert-us = <10000>; + reset-deassert-us = <50000>; + reset-gpios = <&port1b 5 GPIO_ACTIVE_LOW>; /* GPIO1B5 */ + }; +}; + +&mdio1 { + status = "okay"; + ethphy1: ethernet-phy@1 { +// compatible = "ethernet-phy-ieee802.3-c22"; + compatible = "marvell,88E1510"; + reg = <1>; + device_type = "ethernet-phy"; +// marvell,reg-init = <0x12 0x14 0 0x4>; + pinctrl-names = "default"; + pinctrl-0 = <&phy1_reset_gpio>; + reset-assert-us = <10000>; + reset-deassert-us = <50000>; + reset-gpios = <&port1b 4 GPIO_ACTIVE_LOW>; /* GPIO1B4 */ + }; +}; + +/{ + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu-map { + cluster0 { + core0 { + cpu = <&cpu0>; + }; + + core1 { + cpu = <&cpu1>; + }; + core2 { + cpu = <&cpu2>; + }; + core3 { + cpu = <&cpu3>; + }; + + }; + + cluster1 { + core0 { + cpu = <&cpu4>; + }; + core1 { + cpu = <&cpu5>; + }; + core2 { + cpu = <&cpu6>; + }; + core3 { + cpu = <&cpu7>; + }; + }; + + }; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x0>; + enable-method = "spin-table"; + cpu-release-addr = <0x00 0x00>; + next-level-cache = <&cluster0_l2>; + numa-node-id = <0>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu1: cpu@1 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x1>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster0_l2>; + numa-node-id = <0>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu2: cpu@2 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x2>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster0_l2>; + numa-node-id = <0>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu3: cpu@3 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x3>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster0_l2>; + numa-node-id = <0>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu4: cpu@100 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x100>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster1_l2>; + numa-node-id = <1>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu5: cpu@101 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x101>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster1_l2>; + numa-node-id = <1>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu6: cpu@102 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x102>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster1_l2>; + numa-node-id = <1>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cpu7: cpu@103 { + device_type = "cpu"; + compatible = "arm,cortex-a72", "arm,armv8"; + reg = <0x103>; + enable-method = "spin-table"; +// cpu-release-addr = <0x00 0x0a200000>; + cpu-release-addr = <0x00 0x045602c0>; + next-level-cache = <&cluster1_l2>; + numa-node-id = <1>; + operating-points-v2 = <&cpu0_opp_table>; + clocks = <&clock_reset A72CORE_SRCCLK_0>; + + }; + + cluster0_l2: l2-cache0 { + compatible = "cache"; + }; + + cluster1_l2: l2-cache1 { + compatible = "cache"; + }; + }; +}; + +/ { +cpu0_opp_table: opp_table0 { + compatible = "operating-points-v2"; + opp-shared; + + + opp-1500000000 { + opp-hz = /bits/ 64 <1500000000>; + clock-latency-ns = <40000>; + opp-suspend; + }; + + opp-1600000000 { + opp-hz = /bits/ 64 <1600000000>; + clock-latency-ns = <40000>; + opp-suspend; + }; + + opp-1800000000 { + opp-hz = /bits/ 64 <1800000000>; + clock-latency-ns = <40000>; + opp-suspend; + }; + }; +}; + + +/ { + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + reserved: test@10000000 { + no-map; + reg = <0 0x10000000 0x0 0xA8000000>; + }; + + /*reserved2: test2@10000000 { + no-map; + reg = <0x1 0x00000000 0x1 0x00000000>; + };*/ + + cdsp_fw_mem: memory@0xb0000000 { + compatible = "shared-dma-pool"; + reg = <0x0 0xF0000000 0 0x0C000000>; /*CMA (128+64)M*/ + reusable; + linux,cma-default; + }; + + + }; +}; + + +/ { + + fixed-rate-clocks { + xtal0 { + compatible = "smartlogic,clock-xtal0"; + clock-frequency = <20000000>; /* 20M */ +// clock-frequency = <1000000000>; /* 1000M */ + + }; + xtal1 { + compatible = "smartlogic,clock-xtal1"; + clock-frequency = <20000000>; + }; + + sfp_eth_clk { + compatible = "smartlogic,sfp_eth_clk"; + clock-frequency = <125000000>; + }; + pet_eth_ref_clk { + compatible = "smartlogic,pet_eth_ref_clk"; + clock-frequency = <20000000>; + }; + es_eth_ref_clk { + compatible = "smartlogic,es_eth_ref_clk"; + clock-frequency = <20000000>; + }; + + js_jesd_dev_clk { + compatible = "smartlogic,js_jesd_dev_clk"; + clock-frequency = <20000000>; + }; + + gmac1_ptp_pps { + compatible = "smartlogic,gmac1_ptp_pps"; + clock-frequency = <20000000>; + }; + gmac0_ptp_pps { + compatible = "smartlogic,gmac0_ptp_pps"; + clock-frequency = <20000000>; + }; + tmac_ptp_pps { + compatible = "smartlogic,tmac_ptp_pps"; + clock-frequency = <20000000>; + }; + }; +}; diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/makefile b/makefile new file mode 100644 index 0000000..293d6a9 --- /dev/null +++ b/makefile @@ -0,0 +1,167 @@ +#======================================================================================================== +# platform makefile +#FileName: makefile +#Author: xianfeng.du +#Data: 2022-08-10 +#Description: top makefile +#======================================================================================================== +VERSION = 1.00 + +OPTION ?= +ifeq ($(OPTION),GCC) + CROSS_CC ?= +else +# TOOLS ?= /opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin +# CROSS_CC ?= $(TOOLS)/aarch64-linux-gnu- + CROSS_CC ?= aarch64-linux-gnu- +endif + +AR = ar +CC = $(CROSS_CC)gcc +#$(info "CC=" $(CC)) + +DEFINES ?= +#DEFINES ?= UBLOX_ENABLE + +ifeq ($(fronthaul_option),jesd) +DEFINES += ENABLE_JESD_TEST +endif + +#optimization level -O2 +C_OPT_FLAGS ?= -O2 + +CC_FLAGS ?= $(C_OPT_FLAGS) -Wall -g +CC_FLAGS += -Werror -Wno-unused-function +CC_FLAGS += $(foreach d,$(DEFINES),-D$(d)) +CC_FLAGS += -fPIC + +LIB_DIRS ?= ./lib + +SRC_DIRS ?= ./app/src +SRC_DIRS += ./osp/src +SRC_DIRS += ./driver/arm_csu/src +SRC_DIRS += ./driver/init/src + +INCLUDE_DIRS ?= ./app/inc +INCLUDE_DIRS += ./osp/inc +INCLUDE_DIRS += ./driver/arm_csu/inc +INCLUDE_DIRS += ./driver/init/inc +test ?= $(test_option) +case ?= $(test_id) +ifeq ($(test),yes) + DEFINES += PALLADIUM_TEST +#testbench + CASE_ID := $(case) + TEST_DIR := ./test/case$(CASE_ID) + SRC_DIRS += $(TEST_DIR)/src + INCLUDE_DIRS += $(TEST_DIR)/inc +endif + +cache ?= $(cache_option) +ifeq ($(cache),yes) + DEFINES += CACHE_ENABLE +endif + +LD_FLAGS ?= -lgcc -lc +LD_FLAGS += -lm -ldl -Wl,-rpath=./ +LD_FLAGS += -lpthread +LD_FLAGS += -rdynamic -funwind-tables -ffunction-sections +ifeq ($(fronthaul_option),jesd) +LD_FLAGS += -lrfic +endif +$(info "DEFINES=" $(DEFINES)) + +#Flatten files and remove the duplicate by sort +ABS_SRC_DIRS := $(foreach d,$(SRC_DIRS),$(abspath $(d))) + +SRC_FILES := $(foreach d,$(ABS_SRC_DIRS),$(wildcard $(d)/*.c)) + +#main.c +MAIN_DIR := ./app/src +MAIN_FILE := ./app/src/main.c + +# Allow certain files to be excluded from the build +EXCL_SRCS ?= $(MAIN_FILE) +#EXCL_SRCS += ./app/src/main.c + +# Filter source files (allow files to be excluded) +FINAL_SRCS_FILES += $(foreach f,$(SRC_FILES),$(if $(findstring $(abspath $(f)),$(abspath $(EXCL_SRCS))),,$(f))) +#$(info "FINAL_SRCS_FILES=" $(FINAL_SRCS_FILES)) + +# ============================================================================== +# Variables: Output Files +# ============================================================================== +BUILD_DIR := ./build +OBJ_MAIN_DIR := $(BUILD_DIR)/main +OBJ_DIR := $(BUILD_DIR)/obj +#BIN_DIR := $(BUILD_DIR)/bin +#LIB_DIR := $(BUILD_DIR)/lib +#ELF_FILE := $(BIN_DIR)/test.elf +BIN_FILE := $(BUILD_DIR)/msgtransfer.out +LIB_FILE := $(BUILD_DIR)/libmsgtransfer.a + +OBJ_FILES += $(foreach f,$(FINAL_SRCS_FILES),$(OBJ_DIR)/$(patsubst %.c,%.o,$(notdir $(f)))) +OBJ_MAIN_FILES += $(foreach f,$(MAIN_FILE),$(OBJ_MAIN_DIR)/$(patsubst %.c,%.o,$(notdir $(f)))) + +ifeq ($(fronthaul_option),jesd) +#OBJ_FILES += $(wildcard $(RFIC_DIR)/*.o) +RFIC_OBJ_DIR := $(BUILD_DIR)/rfic_obj +RFIC_OBJ_FILES := $(wildcard $(RFIC_OBJ_DIR)/*.o) +else +RFIC_OBJ_FILES := +endif + +# ============================================================================== +# Rules: Compilation +# ============================================================================== +define DO_BUILD_OBJ +$(2)/%.o: $(1)/%.c | $(2) + @echo "# Compiling $$< -> $$@" + $(CC) $(CC_FLAGS) -o $$@ -c $$< $(patsubst %,-I %,$(INCLUDE_DIRS)) +#OBJ_TGTS += $(foreach f,$(wildcard $(1)/*.c),$(OBJ_DIR)/$(notdir $(basename $(1)))/$(patsubst %.c,%.o,$(notdir $(f)))) +endef + +define DO_BUILD_DIR +$(1): + @echo "# Creating directory $$@" + mkdir -p $$@ +endef + +define DO_BUILD + $(eval $(call DO_BUILD_DIR,$(1))) + $(foreach d,$(sort $(2)),$(eval $(call DO_BUILD_OBJ,$(d),$(1)))) +endef + +$(eval $(call DO_BUILD,$(OBJ_DIR),$(ABS_SRC_DIRS))) +$(eval $(call DO_BUILD,$(OBJ_MAIN_DIR), $(abspath $(MAIN_DIR)))) + +$(BIN_FILE):$(OBJ_FILES) $(OBJ_MAIN_FILES) +# @echo "# Creating bin directory $(BIN_DIR)" +# mkdir -p $(BIN_DIR) + + @echo "# Linking objects to form $@" + $(CC) -o $@ $^ $(LD_FLAGS) $(patsubst %,-L %,$(LIB_DIRS)) +# $(CC) -o $@ $^ $(LD_FLAGS) -T$(LINK_FILE) + +$(LIB_FILE):$(OBJ_FILES) $(RFIC_OBJ_FILES) +# @echo "# Creating lib directory $(LIB_DIR)" +# mkdir -p $(LIB_DIR) + + @echo "# Linking objects to form $@" + $(AR) -rcs $@ $^ +# $(CC) -shared -o $@ $^ $(LD_FLAGS) + +# ============================================================================== +# Rules: Targets +# ============================================================================== +.DEFAULT_GOAL := all +.PHONY: build lib clean +all: build lib + +build: $(BIN_FILE) + +lib: $(LIB_FILE) + +clean: + @echo "deleted all files" + rm -rf $(BUILD_DIR) diff --git a/osp/inc/OspMutProcess.h b/osp/inc/OspMutProcess.h new file mode 100644 index 0000000..903d919 --- /dev/null +++ b/osp/inc/OspMutProcess.h @@ -0,0 +1,23 @@ +#ifndef __OSPMUTPROCESSH__ + +#define __OSPMUTPROCESSH__ + + + +#ifdef __cplusplus + +extern "C" { + +#endif + +int32_t osp_mut_process_init(void); +int32_t osp_get_mut_process_id(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPRESHELLH__ */ + + diff --git a/osp/inc/crc32.h b/osp/inc/crc32.h new file mode 100644 index 0000000..1d1cb3d --- /dev/null +++ b/osp/inc/crc32.h @@ -0,0 +1,6 @@ +#ifndef __CRC32H__ +#define __CRC32H__ + +uint32_t osp_crc32(uint32_t crc, const unsigned char *p, uint32_t len); + +#endif \ No newline at end of file diff --git a/osp/inc/osp.h b/osp/inc/osp.h new file mode 100644 index 0000000..7aa53b2 --- /dev/null +++ b/osp/inc/osp.h @@ -0,0 +1,66 @@ +#ifndef __OSPH__ +#define __OSPH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ospTypes.h" +//#include "ospDllLib.h" +//#include "ospSllLib.h" + + +#include "ospDelay.h" + +//#include "ospQFifoLib.h" +//#include "ospQJob.h" +//#include "ospQLib.h" +//#include "ospQPriLib.h" + +#include "ospSem.h" +#include "ospUtil.h" +#include "ospTimer.h" + +#include "ospAtomicOp.h" +#include "ospSoftQue.h" +#include "ospBuf.h" +#include "ospMsg.h" +#include "ospDbg.h" + +#include "ospTask.h" +#include "ospRtc.h" +#include "ospUdp.h" +#include "ospLog.h" +#include "ospDiag.h" +#include "ospMem.h" +#include "ospTest.h" +#include "ospShell.h" + +#include "ospTcp.h" +#include "ospHeap.h" +#include "ospSoftQue.h" +#include "OspMutProcess.h" +#include "ospOtherMsg.h" +#include "ospNetShell.h" +#include "ospFile.h" + +#undef LITTLE_ENDIAN + +#define OSP_VERSION "OSP-1.0.0" +extern int32_t g_ProcessId; + +//INT32 ospgdb; + +/* function prototype */ + +extern void osp_version(void); + +int32_t osp_init_done(); +int32_t osp_is_init_done(); + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPH__ */ + diff --git a/osp/inc/ospAtomicOp.h b/osp/inc/ospAtomicOp.h new file mode 100644 index 0000000..ebc279a --- /dev/null +++ b/osp/inc/ospAtomicOp.h @@ -0,0 +1,31 @@ +#ifndef __OSPATOMOPTH__ +#define __OSPATOMOPTH__ + +#ifdef __cplusplus +extern "C" { +#endif +typedef struct { + int32_t counter; +} OSP_atomic_t; +#define atomic_read(v) (*(volatile int32_t *)&(v)->counter) +#define atomic_set(v, i) (((v)->counter) = (i)) + +/* function prototype */ +extern void osp_atomic_inc(int32_t *pVar); +extern void osp_atomic_dec(int32_t *pVar); +extern int32_t osp_atomic_get(int32_t *pVar); +extern void osp_atomic_set(int32_t *pVar, int32_t val); +extern void osp_atomic64_inc(int64_t *pVar); +extern void osp_atomic64_dec(int64_t *pVar); +extern int64_t osp_atomic64_get(int64_t *pVar); +extern void osp_atomic64_set(int64_t *pVar, int64_t val); + + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPATOMOPTH__ */ + + diff --git a/osp/inc/ospBuf.h b/osp/inc/ospBuf.h new file mode 100644 index 0000000..0ccca2b --- /dev/null +++ b/osp/inc/ospBuf.h @@ -0,0 +1,100 @@ +#ifndef __OSPBUFH__ +#define __OSPBUFH__ + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define OSPBUF_SIZE (6*1024*1024UL) //(577*1024*1024UL) /* 512M->1G */ + +#define MAX_BLOCK_NUM 512 /*256*/ /* 1024->512 */ +#define MIN_SIZE_ORDER 6 +#define MAX_SIZE_ORDER 12/* 21 */ /* 16->19 64K->512K */ +#define MAX_OSPBUF_LEN (1 << MAX_SIZE_ORDER) + + +/*when mem is empty , we should make sure cmd is OK*/ +#define SIZE_ORDER_SHELL 10 // origin: 16 +#define SHELL_BUF_SIZE 1024 // origin: 1665535 + +#define SIZE_ORDER_PRINT_LOG SIZE_ORDER_SHELL +/*change with SIZE_ORDER_PRINT_LOG*/ +#define PRINT_LOG_BUF_SIZE SHELL_BUF_SIZE + + + +#define BUF_FOR_MEMORY 0 +#define BUF_FOR_MSG 1 + +typedef struct tag_Osp_BufQ_Tcb +{ + Osp_SoftQue soft_que; + uint64_t data[MAX_BLOCK_NUM]; + int32_t order; +}Osp_BufQ_Tcb; + + +#define OSP_BUFQ_TCBSIZE (sizeof(Osp_BufQ_Tcb)) + +#define OSP_BUFQ_ENCNT(que) que->soft_que.EnCnt +#define OSP_BUFQ_DECNT(que) que->soft_que.DeCnt +#define OSP_BUFQ_CUR(que) que->soft_que.CurNum +#define OSP_BUFQ_DEP(que) que->soft_que.Dep +#define OSP_BUFQ_ORDER(que) que->order +#define OSP_BUFQ_QUE(que) que->soft_que + +typedef struct tag_Osp_Block_Head +{ + uint32_t UserId; /*0x55aa???? */ + uint16_t RelaOrder; /*for TCB*/ + uint16_t UseType; /*memory or msg */ + uint16_t rev[2]; + uint32_t MagicOffset; /*for dect write over*/ + uint32_t idx; /*idx of this pool*/ + uint32_t NormalFlag; /*1: norbuffer 0: Pribuffer*/ + uint32_t Rev[2]; +}Osp_Block_Head; +extern char *OspBufferBase; + +#define BUFFER_BASE OspBufferBase + +#define BUFFERQUE_BASE_PRINT_LOG OspBufferqueBasePrintLog +#define BUFFERDATA_BASE_PRINT_LOG OspBufferDataBasePrintLog +#define BUFFERQUE_BASE_SHELL OspBufferqueBaseShell +#define BUFFERDATA_BASE_SHELL OspBufferDataBaseShell +#define BUFFERQUE_BASE_NOR OspBufferQueBaseNor +#define BUFFERDATA_BASE_NOR OspBufferDataBaseNor + +#define BUFFER_NORMAL_LEVEL 0 +#define BUFFER_SHELL_LEVEL 1 +#define BUFFER_PRINTLOG_LEVEL 2 + + + + + +#define VALIDIDMASK 0x55aa0000 +#define FREEUSERID 0x0000FFFF +#define BUF_MAGIC_NUM (0x12348765) + +#define OSP_BLOCK_HEAD_SIZE ((uint32_t)(sizeof(Osp_Block_Head))) +#define OSP_BUF_MAGICDATA_SIZE ((uint32_t)(sizeof(uint32_t))) + + +extern void *osp_get_buffer(uint32_t size, uint16_t UseType, uint16_t PriLevel); +extern OSP_STATUS osp_free_buffer(void *pBuffer); +extern void osp_show_buf_count(void); + + +extern OSP_STATUS osp_buf_init(void); + + + +#ifdef __cplusplus +} +#endif + +#endif /*__OSPBUFH__ */ + diff --git a/osp/inc/ospCfgToBin.h b/osp/inc/ospCfgToBin.h new file mode 100644 index 0000000..d6e9ad9 --- /dev/null +++ b/osp/inc/ospCfgToBin.h @@ -0,0 +1,34 @@ +#ifndef __OSP_CFG_TO_BIN_H__ +#define __OSP_CFG_TO_BIN_H__ + +#define APE_CFG_FILE_NAME_LEN (64) +#define APE_CFG_FILE_NUM (64) + +typedef struct OSP_CFG_FILE_REG +{ + char name[APE_CFG_FILE_NAME_LEN]; + uint32_t phy_addr; + uint32_t len; +}osp_cfg_file_reg; + + +typedef struct OSP_SPE_CFG_FILE_REG +{ + char name[APE_CFG_FILE_NAME_LEN]; + uint64_t vir_addr; + uint32_t len; +}osp_spe_cfg_file_reg; + +extern int32_t osp_read_cfg_file(void); + + +/* TestMac interface */ +extern int32_t osp_read_spe_cfg_file(char* path); +extern int32_t osp_get_cfg_file(char* name, uint64_t *paddr, uint32_t *psize); + +#ifdef HEARTBEAT_ENABLE +extern int8_t osp_get_im2ddr_to_file(uint8_t u8CoreId); +#endif + +#endif /* __OSP_CFG_TO_BIN_H__ */ + diff --git a/osp/inc/ospDbg.h b/osp/inc/ospDbg.h new file mode 100644 index 0000000..db26d3e --- /dev/null +++ b/osp/inc/ospDbg.h @@ -0,0 +1,79 @@ +#ifndef __OSPDBGH__ + +#define __OSPDBGH__ + + + +#ifdef __cplusplus + +extern "C" { + +#endif +#include + +#define MAX_DBGINFO_LEN (SHELL_BUF_SIZE-64) + + +#define CMD_DEBUG_LEVEL 0 +#define ERR_DEBUG_LEVEL 1 +#define WARNING_DEBUG_LEVEL 2 +#define RUN_DEBUG_LEVEL 3 +#define DBG_DEBUG_LEVEL 4 + +#define DeadFuncNum 64 + +OSP_STATUS osp_debug_out(int32_t level, char *fmt,...); +OSP_STATUS osp_debug_out_with_time(int32_t level, char *fmt,...); +void osp_local_shell_out_main(Osp_Msg_Head *pMsg); +OSP_STATUS osp_print(char *pbuf, uint32_t len); +int32_t osp_local_shell_in_main(); +void osp_debug_init(void); +void osp_show_msg_que_info(); +int32_t osp_trace_task(uint32_t Id); +int32_t osp_suspend_task(uint32_t Id); +int32_t osp_resume_task(uint32_t Id); +int32_t sinal_init(void); +void SetTimerParAll(char*pa, uint32_t val); +Osp_Msg_Head *osp_alloc_msg_print_log(void); + + + +#define OSP_TASK_SIGNAL_SUSPEND (SIGRTMIN + 1) +#define OSP_TASK_SIGNAL_RESUME (SIGRTMIN + 2) +#define OSP_TASK_SIGNAL_TRACE (SIGRTMIN + 3) +#define OSP_TASK_SIGNAL_RMSHELL (SIGINT) +#define OSP_TASK_SIGNAL_SEGV (SIGSEGV) +#define OSP_TASK_SIGNAL_BUSSERR (SIGBUS) + +void osp_debug_out_set_level(int32_t level); +int32_t osp_shell_dis_mem(int32_t num, uint64_t addr); +int32_t osp_shell_set_mem(int32_t val, uint64_t addr); +void osp_set_dbg_cmdlev(void); +void osp_set_dbg_errlev(void); +void osp_set_dbg_crunlev(void); +void osp_set_dbg_cwarlev(void); + +int32_t osp_task_dbg_out_enable_all(void); +int32_t osp_task_dbg_out_enable(uint32_t taskid); +int32_t osp_task_dbg_out_disable_all(void); +int32_t osp_task_dbg_out_disable(uint32_t taskid); +int32_t osp_task_dbg_out2log_disable_all(void); +int32_t osp_task_dbg_out2log_disable(uint32_t taskid); +int32_t osp_task_dbg_out2log_enable_all(void); +int32_t osp_task_dbg_out2log_enable(uint32_t taskid); + +void osp_assert(int32_t val); +int32_t osp_reg_dead_func(OSP_FUNCPTR pfunc); + + +#ifdef __cplusplus + +} + +#endif + + + +#endif /*__OSPDBGH__ */ + + diff --git a/osp/inc/ospDelay.h b/osp/inc/ospDelay.h new file mode 100644 index 0000000..6341b52 --- /dev/null +++ b/osp/inc/ospDelay.h @@ -0,0 +1,23 @@ +#ifndef __OSPDELAYH__ +#define __OSPDELAYH__ + + +#ifdef __cplusplus +extern "C" { +#endif + + + + + +/* function prototype */ + +extern OSP_STATUS osp_delay(uint32_t delay); +void osp_delay_while(uint64_t ns); + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPDELAYH__ */ + diff --git a/osp/inc/ospDiag.h b/osp/inc/ospDiag.h new file mode 100644 index 0000000..2bae196 --- /dev/null +++ b/osp/inc/ospDiag.h @@ -0,0 +1,98 @@ +#ifndef __OSPDIAGCH__ +#define __OSPDIAGCH__ + +#include "ospTypes.h" + +#ifdef __cplusplus +extern "C" { +#endif +#define DIAG_CNTID0 0 +#define DIAG_CNTID1 1 +#define DIAG_CNTID2 2 +#define DIAG_CNTID3 3 +#define DIAG_CNTID4 4 +#define DIAG_CNTID5 5 +#define DIAG_CNTID6 6 +#define DIAG_CNTID7 7 +#define DIAG_CNTID8 8 +#define DIAG_CNTID9 9 +#define DIAG_CNTID10 10 +#define DIAG_CNTID11 11 +#define DIAG_CNTID12 12 +#define DIAG_CNTID13 13 +#define DIAG_CNTID14 14 +#define DIAG_CNTID15 15 +#define DIAG_CNTID16 16 +#define DIAG_CNTID17 17 +#define DIAG_CNTID18 18 +#define DIAG_CNTID19 19 +#define DIAG_CNTID20 20 +#define DIAG_CNTID21 21 +#define DIAG_CNTID22 22 +#define DIAG_CNTID23 23 +#define DIAG_CNTID24 24 +#define DIAG_CNTID25 25 +#define DIAG_CNTID26 26 +#define DIAG_CNTID27 27 +#define DIAG_CNTID28 28 +#define DIAG_CNTID29 29 +#define DIAG_CNTID30 30 +#define DIAG_CNTID31 31 +#define DIAG_CNTID32 32 +#define DIAG_CNTID33 33 +#define DIAG_CNTID34 34 +#define DIAG_CNTID35 35 +#define DIAG_CNTID36 36 +#define DIAG_CNTID37 37 +#define DIAG_CNTID38 38 +#define DIAG_CNTID39 39 +#define DIAG_CNTID40 40 +#define DIAG_CNTID41 41 +#define DIAG_CNTID42 42 +#define DIAG_CNTID43 43 +#define DIAG_CNTID44 44 +#define DIAG_CNTID45 45 +#define DIAG_CNTID46 46 +#define DIAG_CNTID47 47 +#define DIAG_CNTID48 48 +#define DIAG_CNTID49 49 +#define DIAG_CNTID50 50 +#define DIAG_CNTID51 51 +#define DIAG_CNTID52 52 +#define DIAG_CNTID53 53 +#define DIAG_CNTID54 54 +#define DIAG_CNTID55 55 +#define DIAG_CNTID56 56 +#define DIAG_CNTID57 57 +#define DIAG_CNTID58 58 +#define DIAG_CNTID59 59 +#define DIAG_CNTID60 60 +#define DIAG_CNTID61 61 +#define DIAG_CNTID62 62 +#define DIAG_CNTID63 63 + + + +#define CNT_NUM_PER_TASK 64 +extern uint64_t *g_DiagCntBase; +#define TASK_CNT_ADD(TaskId, CntId) osp_atomic64_inc((int64_t *)(g_DiagCntBase + TaskId *CNT_NUM_PER_TASK + CntId)) +#define TASK_CNT_SET(TaskId, CntId, Val) osp_atomic64_set((int64_t *)(g_DiagCntBase + TaskId *CNT_NUM_PER_TASK + CntId), Val) +#define TASK_CNT_GET(TaskId, CntId) osp_atomic64_get((int64_t *)(g_DiagCntBase + TaskId *CNT_NUM_PER_TASK + CntId)) + +int32_t osp_diag_init(void); +OSP_STATUS OspCntAdd(uint32_t TaskId, uint32_t CntId); +OSP_STATUS OspCntSet(uint32_t TaskId, uint32_t CntId, uint64_t Val); +uint32_t osp_diag_cnt_str(uint32_t TaskId, char *pstr, uint32_t inlen); +int32_t osp_diag_cnt_init(void); +OSP_STATUS osp_show_tsk_diag_cnt(uint32_t TaskId); +OSP_STATUS osp_diag_cnt_add(uint32_t TaskId, uint32_t CntId); + + + + +#ifdef __cplusplus +} +#endif + +#endif /*__OSPRTCH__ */ + diff --git a/osp/inc/ospDump.h b/osp/inc/ospDump.h new file mode 100644 index 0000000..20402d6 --- /dev/null +++ b/osp/inc/ospDump.h @@ -0,0 +1,47 @@ +#ifndef __OSPDUMPH__ + +#define __OSPDUMPH__ + + + +#ifdef __cplusplus + +extern "C" { + +#endif + +#include "ospShell.h" +#include "ospHeap.h" + +#define APC_DM_LEN 0x200000 +#define MAX_DUMP_DIS_SIZE (6*1024*1024) +#define MAX_DUMP_LEN (1*1024*1024) + +void osp_dump_init(void); +void osp_dump_dis_mem(char* addr, uint32_t ulLen); +void osp_mem_print(char *addr , uint32_t ulLen); +void osp_dump_dm_test(uint8_t ucApcId, uint64_t ullAddr, uint32_t ullen); +OSP_STATUS osp_dump_proc(char *pName, module_type_e module, uint64_t phy_addr, uint64_t ulLen); +void osp_dump_dm(char *pName, uint32_t ulLen); +void osp_dump_sm(char *pName, uint32_t ulLen); +OSP_STATUS osp_dump_len_is_ok(module_type_e module, uint64_t ulLen); +int8_t osp_show_dm_by_apcid(uint8_t ucApcId, uint64_t phy_addr, uint32_t ulLen); +int8_t osp_dump_dm_by_apcid(char *pName, uint8_t ucApcId, uint64_t phy_addr, uint32_t ulLen); +int32_t osp_dump_phy_mem(uint64_t phy_addr, uint32_t len, uint64_t tmp_addr); + +#ifdef HEARTBEAT_ENABLE +int8_t osp_dump_dm_by_coreid(uint8_t coreid); +#endif + + +#ifdef __cplusplus + +} + +#endif + + + +#endif + + diff --git a/osp/inc/ospFile.h b/osp/inc/ospFile.h new file mode 100644 index 0000000..b3b7efc --- /dev/null +++ b/osp/inc/ospFile.h @@ -0,0 +1,36 @@ +#ifndef _FILE_H_ +#define _FILE_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef struct +{ + char filepath[128]; + int32_t flag; + mode_t mode; + int32_t fd; + pthread_mutex_t mutex; +} file_t; + +int32_t osp_file_init(file_t *file); + +int32_t osp_file_read(char *buffer, int32_t size, file_t *file); + +int32_t osp_file_write(file_t *file, char *buffer, int32_t size); +int32_t osp_mkdirs(char *path, mode_t mode); +int32_t osp_get_file_path(char *name, char *path); +int32_t osp_file_is_exist(char *file); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/osp/inc/ospHeap.h b/osp/inc/ospHeap.h new file mode 100644 index 0000000..acac3c2 --- /dev/null +++ b/osp/inc/ospHeap.h @@ -0,0 +1,57 @@ +#ifndef __OSPHEAP__ +#define __OSPHEAP__ + +#include "typedef.h" + +#define ECS_SM_DM_BASE_PHY_ADDR 0x007200000UL +#define PET_SM_DM_BASE_PHY_ADDR 0x008700000UL +#define APE_DM_BASE_PHY_ADDR 0x009400000UL //APCx(x:0-3):0x009400000+x*0x200000,2M per APC +#define SHARE_MEM_BASE_PHY_ADDR 0x009D00000UL +#define APE_PHY_BASE_PHY_ADDR 0x010000000UL +#define APE_TEXT_BASE_PHY_ADDR 0x090000000UL +#define ARM_APE_MSG_BASE_PHY_ADDR 0x0A0000000UL +#define APE_LOG_BASE_PHY_ADDR 0x0A8000000UL +#define RESERVED_BASE_PHY_ADDR 0x100000000UL +#define ARM_STACK_BASE_PHY_ADDR 0x100000000UL + + +#define LEN_OF_ECS_SM_DM 0x000060000UL //sm(0x20000) + dm(0x40000) +#define LEN_OF_PET_SM_DM 0x000060000UL //sm(0x20000) + dm(0x40000) +#define LEN_OF_APE_DM 0x000800000UL +#define LEN_OF_SHARE_MEM 0x000800000UL +#define LEN_OF_APE_PHY 0x080000000UL +#define LEN_OF_APE_TEXT 0x010000000UL +#define LEN_OF_ARM_APE_MSG 0x008000000UL +#define LEN_OF_APE_LOG 0x010000000UL +#define LEN_OF_ARM_STACK 0x100000000UL + +#define OSP_DISPLAY_MAX_LEN 0x400 +#define OSP_DISPLAY_PAGE_LEN 0x1000 + +typedef enum +{ + ECS_SM = 0, //actual ECS_SM_DM 384 total SM:128KB:0x007200000UL,DM:256KB:0x007220000UL + PET_SM, //actual PET_SM_DM 384 total SM:128KB:0x008700000UL,DM:256KB:0x008720000UL + APE_DM, + SHARE_MEM, + APE_PHY, + APE_TEXT, + ARM_APE_MSG, + APE_LOG, + ARM_STACK, + MEM_RESERVE +}module_type_e; + +void *get_static_mem(module_type_e module, uint64_t *len); +void *osp_heap_mem_init(char *pbuf, uint64_t size,void *head_of_static_mem,module_type_e module); +int8_t *osp_alloc_heap_mem(void *heap, uint32_t size); +int32_t osp_free_heap_mem(void *heap, char *pbuf); +int32_t osp_show_heap_mem(void *heap); +int32_t osp_virt_to_phy(module_type_e module, uint64_t virt_addr, uint64_t *phy_addr); +int32_t osp_phy_to_virt(module_type_e module, uint64_t phy_addr, uint64_t *virt_addr); +void osp_flush_dcache_area(void * volatile addr, uint64_t volatile len); +void osp_clean_dcache_area(void * volatile addr, uint64_t volatile len); +int32_t osp_invalid_dcache_area(module_type_e module, uint64_t virt_addr, uint64_t len); +int32_t osp_display_phy_mem(uint64_t phy_addr, uint32_t len); +#endif + diff --git a/osp/inc/ospHeartbeat.h b/osp/inc/ospHeartbeat.h new file mode 100644 index 0000000..7251e2a --- /dev/null +++ b/osp/inc/ospHeartbeat.h @@ -0,0 +1,14 @@ +#ifndef __OSP_HEARTBEAT__ +#define __OSP_HEARTBEAT__ + +typedef struct __OspHeartBeatInfo_t +{ + uint32_t u32CheckFlag; /* 0: check; 1: no check */ + uint32_t u32LastCounter; /* 上次心跳计数 */ + uint32_t u32LossCounter; /* 失信计数 */ +}OspHeartbeatInfo_t; + +int8_t OspHeartbeatPro(void); + +#endif /* __OSP_HEARTBEAT__ */ + diff --git a/osp/inc/ospList.h b/osp/inc/ospList.h new file mode 100644 index 0000000..846a072 --- /dev/null +++ b/osp/inc/ospList.h @@ -0,0 +1,810 @@ +#ifndef __HPP_LIST_H__ +#define __HPP_LIST_H__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +#undef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL (void *)0 +#endif + +#define LIST_POISON1 NULL +#define LIST_POISON2 NULL + +#define offset(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) +/** + * container_of - cast a member of a structure out to the containing structure + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof(((type *)0)->member)*__mptr = (ptr); \ + (type *)((char *)__mptr - offset(type, member)); }) + +#define WRITE_ONCE(var, val) \ + (*((volatile typeof(val) *)(&(var))) = (val)) + +#define READ_ONCE(var) (*((volatile typeof(var) *)(&(var)))) + +struct list_head { + struct list_head *next, *prev; +}__attribute__((packed)); + +/* + * Simple doubly linked list implementation. + * + * Some of the internal functions ("__xxx") are useful when + * manipulating whole lists rather than single entries, as + * sometimes we already know the next/prev entries and we can + * generate better code by using them directly rather than + * using the generic single-entry routines. + */ + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +static inline void INIT_LIST_HEAD(struct list_head *list) +{ + WRITE_ONCE(list->next, list); + list->prev = list; +} + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +#ifndef CONFIG_DEBUG_LIST +static inline void __list_add(struct list_head *new_node, + struct list_head *prev, + struct list_head *next) +{ + next->prev = new_node; + new_node->next = next; + new_node->prev = prev; + WRITE_ONCE(prev->next, new_node); +} +#else +extern void __list_add(struct list_head *new_node, + struct list_head *prev, + struct list_head *next); +#endif + +/** + * list_add - add a new entry + * @new_node: new entry to be added + * @head: list head to add it after + * + * Insert a new entry after the specified head. + * This is good for implementing stacks. + */ +static inline void list_add(struct list_head *new_node, struct list_head *head) +{ + __list_add(new_node, head, head->next); +} + + +/** + * list_add_tail - add a new entry + * @new_node: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *new_node, struct list_head *head) +{ + __list_add(new_node, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head * prev, struct list_head * next) +{ + next->prev = prev; + WRITE_ONCE(prev->next, next); +} + +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty() on entry does not return true after this, the entry is + * in an undefined state. + */ +#ifndef CONFIG_DEBUG_LIST +static inline void __list_del_entry(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); +} + +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = LIST_POISON1; + entry->prev = LIST_POISON2; +} +#else +extern void __list_del_entry(struct list_head *entry); +extern void list_del(struct list_head *entry); +#endif + +/** + * list_replace - replace old entry by new one + * @old : the element to be replaced + * @new_node : the new element to insert + * + * If @old was empty, it will be overwritten. + */ +static inline void list_replace(struct list_head *old, + struct list_head *new_node) +{ + new_node->next = old->next; + new_node->next->prev = new_node; + new_node->prev = old->prev; + new_node->prev->next = new_node; +} + +static inline void list_replace_init(struct list_head *old, + struct list_head *new_node) +{ + list_replace(old, new_node); + INIT_LIST_HEAD(old); +} + +/** + * list_del_init - deletes entry from list and reinitialize it. + * @entry: the element to delete from the list. + */ +static inline void list_del_init(struct list_head *entry) +{ + __list_del_entry(entry); + INIT_LIST_HEAD(entry); +} + +/** + * list_move - delete from one list and add as another's head + * @list: the entry to move + * @head: the head that will precede our entry + */ +static inline void list_move(struct list_head *list, struct list_head *head) +{ + __list_del_entry(list); + list_add(list, head); +} + +/** + * list_move_tail - delete from one list and add as another's tail + * @list: the entry to move + * @head: the head that will follow our entry + */ +static inline void list_move_tail(struct list_head *list, + struct list_head *head) +{ + __list_del_entry(list); + list_add_tail(list, head); +} + +/** + * list_is_last - tests whether @list is the last entry in list @head + * @list: the entry to test + * @head: the head of the list + */ +static inline int32_t list_is_last(const struct list_head *list, + const struct list_head *head) +{ + return list->next == head; +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int32_t list_empty(const struct list_head *head) +{ + return READ_ONCE(head->next) == head || READ_ONCE(head->next) == NULL; +} + +/** + * list_empty_careful - tests whether a list is empty and not being modified + * @head: the list to test + * + * Description: + * tests whether a list is empty _and_ checks that no other CPU might be + * in the process of modifying either member (next or prev) + * + * NOTE: using list_empty_careful() without synchronization + * can only be safe if the only activity that can happen + * to the list entry is list_del_init(). Eg. it cannot be used + * if another CPU could re-list_add() it. + */ +static inline int32_t list_empty_careful(const struct list_head *head) +{ + struct list_head *next = head->next; + return (next == head) && (next == head->prev); +} + +/** + * list_rotate_left - rotate the list to the left + * @head: the head of the list + */ +static inline void list_rotate_left(struct list_head *head) +{ + struct list_head *first; + + if (!list_empty(head)) { + first = head->next; + list_move_tail(first, head); + } +} + +/** + * list_is_singular - tests whether a list has just one entry. + * @head: the list to test. + */ +static inline int32_t list_is_singular(const struct list_head *head) +{ + return !list_empty(head) && (head->next == head->prev); +} + +static inline void __list_cut_position(struct list_head *list, + struct list_head *head, struct list_head *entry) +{ + struct list_head *new_first = entry->next; + list->next = head->next; + list->next->prev = list; + list->prev = entry; + entry->next = list; + head->next = new_first; + new_first->prev = head; +} + +/** + * list_cut_position - cut a list into two + * @list: a new list to add all removed entries + * @head: a list with entries + * @entry: an entry within head, could be the head itself + * and if so we won't cut the list + * + * This helper moves the initial part of @head, up to and + * including @entry, from @head to @list. You should + * pass on @entry an element you know is on @head. @list + * should be an empty list or a list you do not care about + * losing its data. + * + */ +static inline void list_cut_position(struct list_head *list, + struct list_head *head, struct list_head *entry) +{ + if (list_empty(head)) + return; + if (list_is_singular(head) && + (head->next != entry && head != entry)) + return; + if (entry == head) + INIT_LIST_HEAD(list); + else + __list_cut_position(list, head, entry); +} + +static inline void __list_splice(const struct list_head *list, + struct list_head *prev, + struct list_head *next) +{ + struct list_head *first = list->next; + struct list_head *last = list->prev; + + first->prev = prev; + prev->next = first; + + last->next = next; + next->prev = last; +} + +/** + * list_splice - join two lists, this is designed for stacks + * @list: the new list to add. + * @head: the place to add it in the first list. + */ +static inline void list_splice(const struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) + __list_splice(list, head, head->next); +} + +/** + * list_splice_tail - join two lists, each list being a queue + * @list: the new list to add. + * @head: the place to add it in the first list. + */ +static inline void list_splice_tail(struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) + __list_splice(list, head->prev, head); +} + +/** + * list_splice_init - join two lists and reinitialise the emptied list. + * @list: the new list to add. + * @head: the place to add it in the first list. + * + * The list at @list is reinitialised + */ +static inline void list_splice_init(struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) { + __list_splice(list, head, head->next); + INIT_LIST_HEAD(list); + } +} + +/** + * list_splice_tail_init - join two lists and reinitialise the emptied list + * @list: the new list to add. + * @head: the place to add it in the first list. + * + * Each of the lists is a queue. + * The list at @list is reinitialised + */ +static inline void list_splice_tail_init(struct list_head *list, + struct list_head *head) +{ + if (!list_empty(list)) { + __list_splice(list, head->prev, head); + INIT_LIST_HEAD(list); + } +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_first_entry - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) + +/** + * list_last_entry - get the last element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note, that list is expected to be not empty. + */ +#define list_last_entry(ptr, type, member) \ + list_entry((ptr)->prev, type, member) + +/** + * list_first_entry_or_null - get the first element from a list + * @ptr: the list head to take the element from. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_head within the struct. + * + * Note that if the list is empty, it returns NULL. + */ +#define list_first_entry_or_null(ptr, type, member) ({ \ + struct list_head *head__ = (ptr); \ + struct list_head *pos__ = READ_ONCE(head__->next); \ + pos__ != head__ ? list_entry(pos__, type, member) : NULL; \ +}) + +/** + * list_next_entry - get the next element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) + +/** + * list_prev_entry - get the prev element in list + * @pos: the type * to cursor + * @member: the name of the list_head within the struct. + */ +#define list_prev_entry(pos, member) \ + list_entry((pos)->member.prev, typeof(*(pos)), member) + +/** + * list_for_each - iterate over a list + * @pos: the &struct list_head to use as a loop cursor. + * @head: the head for your list. + */ +#define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + +/** + * list_for_each_prev - iterate over a list backwards + * @pos: the &struct list_head to use as a loop cursor. + * @head: the head for your list. + */ +#define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + +/** + * list_for_each_safe - iterate over a list safe against removal of list entry + * @pos: the &struct list_head to use as a loop cursor. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + */ +#define list_for_each_safe(pos, n, head) \ + for (pos = (head)->next, n = pos->next; pos != (head); \ + pos = n, n = pos->next) + +/** + * list_for_each_prev_safe - iterate over a list backwards safe against removal of list entry + * @pos: the &struct list_head to use as a loop cursor. + * @n: another &struct list_head to use as temporary storage + * @head: the head for your list. + */ +#define list_for_each_prev_safe(pos, n, head) \ + for (pos = (head)->prev, n = pos->prev; \ + pos != (head); \ + pos = n, n = pos->prev) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_reverse - iterate backwards over list of given type. + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_reverse(pos, head, member) \ + for (pos = list_last_entry(head, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_prev_entry(pos, member)) + +/** + * list_prepare_entry - prepare a pos entry for use in list_for_each_entry_continue() + * @pos: the type * to use as a start point + * @head: the head of the list + * @member: the name of the list_head within the struct. + * + * Prepares a pos entry for use as a start point in list_for_each_entry_continue(). + */ +#define list_prepare_entry(pos, head, member) \ + ((pos) ? : list_entry(head, typeof(*pos), member)) + +/** + * list_for_each_entry_continue - continue iteration over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Continue to iterate over list of given type, continuing after + * the current position. + */ +#define list_for_each_entry_continue(pos, head, member) \ + for (pos = list_next_entry(pos, member); \ + &pos->member != (head); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_continue_reverse - iterate backwards from the given point + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Start to iterate over list of given type backwards, continuing after + * the current position. + */ +#define list_for_each_entry_continue_reverse(pos, head, member) \ + for (pos = list_prev_entry(pos, member); \ + &pos->member != (head); \ + pos = list_prev_entry(pos, member)) + +/** + * list_for_each_entry_from - iterate over list of given type from the current point + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Iterate over list of given type, continuing from current position. + */ +#define list_for_each_entry_from(pos, head, member) \ + for (; &pos->member != (head); \ + pos = list_next_entry(pos, member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_first_entry(head, typeof(*pos), member), \ + n = list_next_entry(pos, member); \ + &pos->member != (head); \ + pos = n, n = list_next_entry(n, member)) + +/** + * list_for_each_entry_safe_continue - continue list iteration safe against removal + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Iterate over list of given type, continuing after current point, + * safe against removal of list entry. + */ +#define list_for_each_entry_safe_continue(pos, n, head, member) \ + for (pos = list_next_entry(pos, member), \ + n = list_next_entry(pos, member); \ + &pos->member != (head); \ + pos = n, n = list_next_entry(n, member)) + +/** + * list_for_each_entry_safe_from - iterate over list from current point safe against removal + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Iterate over list of given type from current point, safe against + * removal of list entry. + */ +#define list_for_each_entry_safe_from(pos, n, head, member) \ + for (n = list_next_entry(pos, member); \ + &pos->member != (head); \ + pos = n, n = list_next_entry(n, member)) + +/** + * list_for_each_entry_safe_reverse - iterate backwards over list safe against removal + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_head within the struct. + * + * Iterate backwards over list of given type, safe against removal + * of list entry. + */ +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_last_entry(head, typeof(*pos), member), \ + n = list_prev_entry(pos, member); \ + &pos->member != (head); \ + pos = n, n = list_prev_entry(n, member)) + +/** + * list_safe_reset_next - reset a stale list_for_each_entry_safe loop + * @pos: the loop cursor used in the list_for_each_entry_safe loop + * @n: temporary storage used in list_for_each_entry_safe + * @member: the name of the list_head within the struct. + * + * list_safe_reset_next is not safe to use in general if the list may be + * modified concurrently (eg. the lock is dropped in the loop body). An + * exception to this is if the cursor element (pos) is pinned in the list, + * and list_safe_reset_next is called after re-taking the lock and before + * completing the current iteration of the loop body. + */ +#define list_safe_reset_next(pos, n, member) \ + n = list_next_entry(pos, member) + +/* + * Double linked lists with a single pointer list head. + * Mostly useful for hash tables where the two pointer list head is + * too wasteful. + * You lose the ability to access the tail in O(1). + */ + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + +#define HLIST_HEAD_INIT { .first = NULL } +#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } +#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) +static inline void INIT_HLIST_NODE(struct hlist_node *h) +{ + h->next = NULL; + h->pprev = NULL; +} + +static inline int32_t hlist_unhashed(const struct hlist_node *h) +{ + return !h->pprev; +} + +static inline int32_t hlist_empty(const struct hlist_head *h) +{ + return !READ_ONCE(h->first); +} + +static inline void __hlist_del(struct hlist_node *n) +{ + struct hlist_node *next = n->next; + struct hlist_node **pprev = n->pprev; + + WRITE_ONCE(*pprev, next); + if (next) + next->pprev = pprev; +} + +static inline void hlist_del(struct hlist_node *n) +{ + __hlist_del(n); + n->next = LIST_POISON1; + n->pprev = LIST_POISON2; +} + +static inline void hlist_del_init(struct hlist_node *n) +{ + if (!hlist_unhashed(n)) { + __hlist_del(n); + INIT_HLIST_NODE(n); + } +} + +static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) +{ + struct hlist_node *first = h->first; + n->next = first; + if (first) + first->pprev = &n->next; + WRITE_ONCE(h->first, n); + n->pprev = &h->first; +} + +/* next must be != NULL */ +static inline void hlist_add_before(struct hlist_node *n, + struct hlist_node *next) +{ + n->pprev = next->pprev; + n->next = next; + next->pprev = &n->next; + WRITE_ONCE(*(n->pprev), n); +} + +static inline void hlist_add_behind(struct hlist_node *n, + struct hlist_node *prev) +{ + n->next = prev->next; + WRITE_ONCE(prev->next, n); + n->pprev = &prev->next; + + if (n->next) + n->next->pprev = &n->next; +} + +/* after that we'll appear to be on some hlist and hlist_del will work */ +static inline void hlist_add_fake(struct hlist_node *n) +{ + n->pprev = &n->next; +} + +static inline bool hlist_fake(struct hlist_node *h) +{ + return h->pprev == &h->next; +} + +/* + * Check whether the node is the only node of the head without + * accessing head: + */ +static inline bool +hlist_is_singular_node(struct hlist_node *n, struct hlist_head *h) +{ + return !n->next && n->pprev == &h->first; +} + +/* + * Move a list from one list head to another. Fixup the pprev + * reference of the first entry if it exists. + */ +static inline void hlist_move_list(struct hlist_head *old, + struct hlist_head *new_node) +{ + new_node->first = old->first; + if (new_node->first) + new_node->first->pprev = &new_node->first; + old->first = NULL; +} + +#define hlist_entry(ptr, type, member) container_of(ptr,type,member) + +#define hlist_for_each(pos, head) \ + for (pos = (head)->first; pos ; pos = pos->next) + +#define hlist_for_each_safe(pos, n, head) \ + for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \ + pos = n) + +#define hlist_entry_safe(ptr, type, member) \ + ({ typeof(ptr) ____ptr = (ptr); \ + ____ptr ? hlist_entry(____ptr, type, member) : NULL; \ + }) + +/** + * hlist_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry(pos, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +/** + * hlist_for_each_entry_continue - iterate over a hlist continuing after current point + * @pos: the type * to use as a loop cursor. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_continue(pos, member) \ + for (pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member);\ + pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +/** + * hlist_for_each_entry_from - iterate over a hlist continuing from current point + * @pos: the type * to use as a loop cursor. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_from(pos, member) \ + for (; pos; \ + pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member)) + +/** + * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another &struct hlist_node to use as temporary storage + * @head: the head for your list. + * @member: the name of the hlist_node within the struct. + */ +#define hlist_for_each_entry_safe(pos, n, head, member) \ + for (pos = hlist_entry_safe((head)->first, typeof(*pos), member);\ + pos && ({ n = pos->member.next; 1; }); \ + pos = hlist_entry_safe(n, typeof(*pos), member)) + +#ifdef __cplusplus +} +#endif + +#endif + + + diff --git a/osp/inc/ospLog.h b/osp/inc/ospLog.h new file mode 100644 index 0000000..d736c63 --- /dev/null +++ b/osp/inc/ospLog.h @@ -0,0 +1,112 @@ +#ifndef __OSPLOGH__ +#define __OSPLOGH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "ospShell.h" + +#define LOG_MODE_PATH "./server/logmode" +#define MAX_FILE_SIZE (32*1024*1024) +#define MAX_FILE_NUM (8) +#define MAX_LOG_CFG_NUM (64) +#define FREE_RAM_SIZE (150*1024*1024) + +typedef struct tag_osp_log_file_cfg_obj{ + uint32_t valied; + char logname[64]; + uint32_t max_file_size_M; + uint32_t max_file_num; + uint32_t with_time; + uint32_t cur_sum_len; + FILE* file; + uint32_t cur_file_idx; + uint32_t key; + uint32_t msg_type; +}osp_log_file_cfg; + +#if 1 +typedef struct OSP_LOG_MSG_INFO +{ + int64_t i64msg_type; + uint8_t *pu8msg_addr; + uint32_t u32msg_size; +}osp_log_msg_info_t; +#endif + +typedef struct tMsgTransferHeader { + uint8_t numMsg; + uint8_t cellIndex; + uint16_t rsv; + uint32_t msgType; + uint32_t msgLen; + //uint16_t log_size; + //uint16_t rsv; + uint32_t log_size; + uint32_t log_data[0]; +} MsgTransferHeader_t; + +#define MSG_TRANSFER_LOG_MSG_TYPE (0x124) +#define MSG_TRANSFER_SHELL_MSG_TYPE (0x125) +#define SPU_LOG_CLIENT_BUF_SIZE (512) /* one log: 512Bytes */ + +#define SYS_LOG_MAX_LEN_OF_MESSAGE (1024) +#define SYS_LOG_UDP_PORT (514) + +#if 0 +/*SYSLOG_SERV */ +#define SYSLOG_SERV_FACILITY (23) +#define SYSLOG_SERV_LEVEL (7) +#endif +#define APE_MSG_LOG_HEAD_SIZE sizeof(osp_sw_msg_info_t) +#define APE_MSG_LOG_LEN(x) (x->u16DataLen - APE_MSG_LOG_HEAD_SIZE) +#define APE_MSG_LOG_HEAD_TO_COMM(x) (char *)((uint64_t)x + APE_MSG_LOG_HEAD_SIZE) + + +OSP_STATUS osp_dbg_log(char *pbuf, uint32_t buflen); +OSP_STATUS osp_dbg_log_ext(char *pbuf, uint32_t buflen, int32_t LogId); + +void osp_dbg_log_main(osp_sw_msg_info_t *pMsg); +OSP_STATUS osp_close_log_file(FILE *fd); +OSP_STATUS osp_write_diaglog(char *pbuf, uint32_t len, uint32_t logid, uint32_t msg_type); +void osp_log_init(void); +int32_t osp_fflush_all_logfile(void); +void osp_get_current_time(void); +void osp_get_msgtype_name(uint32_t msg_type, char *msg_name); + +/* change the log out mode: don't use pthread and msgQ */ +#if 1 +uint8_t osp_log_msg_create(void); +int32_t osp_log_msg_get_id(void); +int32_t osp_log_msg_send(int32_t i32que_id, uint8_t *pu8msg_add, uint32_t u32msg_size); +int32_t osp_log_msg_recv(int32_t i32que_id, uint8_t *pu8msg_add, uint32_t u32max_size); +int32_t osp_log_msg_proc(uint8_t *pu8msg_add, uint32_t u32msg_size); +uint64_t osp_oam_msg_proc_task(void); +#endif +int32_t osp_create_oam_msg_task(uint8_t cpu, uint8_t pri); + +uint32_t rx_callback_oam(const char* buf,uint32_t payloadSize); +uint32_t osp_get_ape_port(osp_sw_msg_info_t *pMsg); +int8_t osp_log_mode_init();/*init log out mode*/ +bool osp_ip_is_null(char *ip); +bool osp_path_is_null(char *path); +void osp_cfg_default_log_mode(void); +void osp_log_mode_get(); +void osp_log_cfg_reload(void); +OSP_STATUS osp_ape_log_proc(osp_sw_msg_info_t *pMsg); +OSP_STATUS osp_arm_log_proc(char *pbuf, uint32_t len ,uint32_t logid, uint32_t msg_type); +void osp_platform_log_proc(osp_sw_msg_info_t *pMsg); +void osp_net_log_proc(char *pMsg, uint32_t len, uint32_t port); +uint32_t osp_filter_char(char *str, char c); +int8_t osp_log_mode_cfg(void); +uint32_t osp_get_freeram(void); +void osp_log_output(unsigned char level, const char *fmt, ...); +void osp_log_print(osp_sw_msg_info_t *pMsg); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/osp/inc/ospMem.h b/osp/inc/ospMem.h new file mode 100644 index 0000000..b7026c8 --- /dev/null +++ b/osp/inc/ospMem.h @@ -0,0 +1,22 @@ +#ifndef __OSPMEMH__ +#define __OSPMEMH__ + + + +#ifdef __cplusplus +extern "C" { +#endif +#define OSP_MEM_SIZE (OSPBUF_SIZE + 1024*1024*6) + +extern OSP_STATUS osp_mem_init(void); +extern char *osp_alloc_mem(uint32_t Len); +extern void osp_free_mem(char *pbuf); +extern void osp_print_tatal_mem(void); +extern char *osp_get_init_mem(int32_t len); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/osp/inc/ospMsg.h b/osp/inc/ospMsg.h new file mode 100644 index 0000000..c567074 --- /dev/null +++ b/osp/inc/ospMsg.h @@ -0,0 +1,130 @@ +#ifndef __OSPMSGH__ +#define __OSPMSGH__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#define OSP_MEGQ_DEP 8192 + +#define OSP_MESSAGE_LEN sizeof(uint64_t) +extern char *gOspMsgQue; +#define IS_TIMER_MSG(pMsg)((pMsg->MsgType) == OSP_TIMER_TYPE) +#define OSP_MSG_QUE_SIZE (sizeof(Osp_MsgQ_Tcb)) + +typedef enum en_osp_msg_type +{ + OSP_TIMER_TYPE = 0x5555, + OSP_SHELL_TYPE, + + /*OSP_STR_LOG = 0x12350002, + OSP_BIN_LOG = 0x1234000a,*/ + OSP_STR_LOG = 0x60, + OSP_BIN_LOG = 0x61, + OSP_PLATFORM_LOG = 0x62, + OSP_MAX_TYPE, + +}EN_OSP_MSG_TYPE; + +typedef struct tag_Osp_Msg_Head +{ + uint32_t MsgType; + uint32_t MsgSize; /*is just msgdata len, not include Osp_Msg_Head*/ + uint32_t SrcId; + uint32_t DstId; + +}Osp_Msg_Head; + + +typedef enum OSP_MSG_TYPE +{ + UCP4008_KERNEL_INTER = 0, /* 核间通信 */ + UCP4008_OSP_HANDSHAKE = 7, /* æ¡æ‰‹æ¶ˆæ¯ */ + UCP4008_OSP_CFG_FILE, /* å¾®ç é…ç½®æ–‡ä»¶æ¶ˆæ¯ */ + UCP4008_OSP_DDR_INIT, /* DDRåˆå§‹åŒ–é…ç½®æ¶ˆæ¯ */ + UCP4008_OSP_DUMP, /* DUMPæ¶ˆæ¯ */ + UCP4008_OSP_LOG, /* LOGæ¶ˆæ¯ */ + UCP4008_OSP_SHELL, /* SHELLæ¶ˆæ¯ */ + UCP4008_OSP_SHELL_ECHO, /* SHELLå›žæ˜¾æ¶ˆæ¯ */ + UCP4008_KERNEL_INNER = 0XFF, /* æ ¸å†…é€šä¿¡æ¶ˆæ¯ */ +}osp_msg_type; + +#if 0 +typedef struct tag_Osp_Ape_Msg_Head +{ + U32 MsgType; + U8 MsgSize; + U8 Msg_Padding[3]; /*reserved*/ + + U8 Src_Core_Id; + U8 Dst_Core_Id; + U8 Src_Task_Id; + U8 Dst_Task_Id; + + U8 data[0]; +}Osp_Ape_Msg_Head; +#endif +typedef struct tag_Osp_Timer_Msg_Block +{ + Osp_Msg_Head osp_msg_head; + uint64_t data; +}Osp_Timer_Msg_Block; + + +#define APE_MSG_DADA_LEN(x) (x->msg_size - APE_MSG_HEAD_SIZE) +#define APE_MSG_HEAD_SIZE sizeof(Osp_Ape_Msg_Head) +#define APE_MSG_HEAD_TO_COMM(x) (char *)((uint64_t)x + APE_MSG_HEAD_SIZE) +#define MSG_HEAD_SIZE sizeof(Osp_Msg_Head) +#define MSG_HEAD_TO_COMM(x) (char *)((uint64_t)x + MSG_HEAD_SIZE) +#define MSG_DADA_LEN(x) (x->MsgSize) +#define MSG_TO_OFFSET(x) ((uint64_t)x - (uint64_t)gOspMsgQue) +#define OFFSET_TO_MSG(x) (Osp_Msg_Head *)((uint64_t)x + (uint64_t)gOspMsgQue) + + +typedef struct tag_Osp_MsgQ_Tcb +{ + Osp_SoftQue soft_que; + uint64_t data[OSP_MEGQ_DEP]; +}Osp_MsgQ_Tcb; + + +#define OSP_MSGQ_ENCNT(que) que->soft_que.EnCnt +#define OSP_MSGQ_DECNT(que) que->soft_que.DeCnt +#define OSP_MSGQ_CUR(que) que->soft_que.CurNum +#define OSP_MSGQ_DEP(que) que->soft_que.Dep +#define OSP_MSGQ_QUE(que) que->soft_que + + + +extern int osp_create_msgq(Osp_MsgQ_Tcb *, char *name); +extern Osp_Msg_Head *osp_alloc_msg(uint32_t Len); +Osp_Msg_Head *osp_alloc_msgTimer(void); +Osp_Msg_Head *osp_alloc_msgCmd(uint32_t Len); +extern OSP_STATUS osp_send_msg(Osp_Msg_Head *p_MsgHead); +extern Osp_Msg_Head *osp_rev_msg(void); +extern Osp_Msg_Head *osp_rev_msgtry(void); +Osp_Msg_Head *osp_rev_msg_timeout(uint32_t timeout); + +extern void osp_free_msg(Osp_Msg_Head *pHead); +extern OSP_STATUS osp_msg_que_init(void); + +extern int dequetry(uint64_t *pvalue, Osp_MsgQ_Tcb *que); +extern int dequetimeout(uint64_t *pvalue, Osp_MsgQ_Tcb *que, uint32_t timeout); +extern Osp_Msg_Head *osp_rev_msgid(int id); +extern Osp_Msg_Head *osp_alloc_msgId(uint32_t Len, int id); +extern OSP_STATUS osp_send_msgId(Osp_Msg_Head *p_MsgHead,int id); +extern int osp_free_msgid(Osp_Msg_Head *pHead,int id); +extern OSP_STATUS osp_send_por_msg(Osp_Msg_Head *p_MsgHead, Osp_MsgQ_Tcb *que); +extern Osp_Msg_Head *osp_rev_promsg(Osp_MsgQ_Tcb *que); + + + + + +#ifdef __cplusplus +} +#endif + +#endif /*__OSPMSGH__ */ + diff --git a/osp/inc/ospNetShell.h b/osp/inc/ospNetShell.h new file mode 100644 index 0000000..e7e0d64 --- /dev/null +++ b/osp/inc/ospNetShell.h @@ -0,0 +1,26 @@ +#ifndef __OSPRESHELLLOCALH__ + +#define __OSPRESHELLLOCALH__ + + + +#ifdef __cplusplus + +extern "C" { + +#endif + +int32_t serve_main(void); + +int32_t osp_net_shell_init(void); +int32_t osp_net_shell_main(Osp_Msg_Head *pMsg); +int32_t osp_net_shell_out(Osp_Msg_Head *pMsg); +int32_t osp_del_udp(int32_t udpid); +int32_t osp_net_msg_main(Osp_Msg_Head *pMsg); +#ifdef __cplusplus +} +#endif + +#endif /* __OSPRESHELLLOCALH__ */ + + diff --git a/osp/inc/ospOtherMsg.h b/osp/inc/ospOtherMsg.h new file mode 100644 index 0000000..b8b2d81 --- /dev/null +++ b/osp/inc/ospOtherMsg.h @@ -0,0 +1,20 @@ +#ifndef __OSPOTHERMSGH__ +#define __OSPOTHERMSGH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSP_MAX_OTHER_MSG_LEN (64*1024) + +int32_t osp_send_othermsg(Osp_Msg_Head *pMsg, uint64_t data); +Osp_Msg_Head *osp_rev_other_msg(uint64_t data); + + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPOTHERMSGH__ */ + diff --git a/osp/inc/ospRtc.h b/osp/inc/ospRtc.h new file mode 100644 index 0000000..8e6bd0a --- /dev/null +++ b/osp/inc/ospRtc.h @@ -0,0 +1,31 @@ +#ifndef __OSPRTCH__ +#define __OSPRTCH__ + +#include "ospTypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct tagRTC_DATE_TIME{ + uint32_t year; + uint32_t month; + uint32_t day; + uint32_t hour; + uint32_t minute; + uint32_t second; + uint32_t usecond; +} OSP_RTCTIME; + +/* function prototype */ + +extern OSP_STATUS osp_get_rtc_time(OSP_RTCTIME *pRtc); +extern void osp_show_rtc_time(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPRTCH__ */ + diff --git a/osp/inc/ospSem.h b/osp/inc/ospSem.h new file mode 100644 index 0000000..21712f9 --- /dev/null +++ b/osp/inc/ospSem.h @@ -0,0 +1,59 @@ +#ifndef __OSPSEMH__ +#define __OSPSEMH__ + +#ifdef __cplusplus +extern "C" { +#endif +#include "ospTypes.h" + +#include +#include +#include + + + +typedef enum /*SEM_B_STATE */ +{ + SEM_EMPTY, /* 0: semaphore not available */ + SEM_FULL /* 1: semaphore available */ +} SEM_B_STATE; + + + + +#define SEM_TYPE_MUTEX 0x1 +#define SEM_TYPE_COUNT 0x2 +#define SEM_TYPE_BINARY 0x3 + +typedef struct tag_lx_sem_t +{ + union + { + pthread_mutex_t sem_mutex; + sem_t sem_count; + } u; + + int32_t sem_type; +} lx_sem_t; + + +extern OSP_STATUS osp_sem_taketry(void *semId); +extern void *osp_semm_create(void); +extern void *osp_semsm_create(void *semId); +extern void *osp_semb_create(SEM_B_STATE initalState); +extern void *osp_semc_create(int32_t initCount); +extern OSP_STATUS osp_sem_take(void *semId, int32_t timeout); +extern OSP_STATUS osp_sem_give(void *semId); +extern OSP_STATUS osp_sem_delete(void *semId); + +extern OSP_STATUS osp_semr_take(void *semId, int32_t timeout); +extern OSP_STATUS osp_sem_wtake(void *semId, int32_t timeout); +extern OSP_STATUS osp_semrw_give(void *semId); +extern void *osp_semss_create(void *sem); + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPSEMH__ */ + diff --git a/osp/inc/ospShell.h b/osp/inc/ospShell.h new file mode 100644 index 0000000..d5643b6 --- /dev/null +++ b/osp/inc/ospShell.h @@ -0,0 +1,119 @@ +#ifndef _ospshelllxh +#define _ospshelllxh + + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "ospTypes.h" +#include "ospSwQueue.h" + + +#define UCP4008_OSP_SHELL_REG 0x16 + +#define SPU_SHELL_MSG_DADA_LEN(x) (x->u16DataLen - OSP_SW_MSG_INFO_SIZE) +#define SPU_SHELL_MSG_HEAD_TO_COMM(x) (char *)((uint64_t)x + OSP_SW_MSG_INFO_SIZE) +#define SPU_SHELL_DADA_LEN(x) (x->u16DataLen) + +typedef struct tag_Osp_Ape_Msg_Head +{ + uint32_t msg_size; /* 消æ¯é•¿åº¦ï¼ˆå•ä½ï¼šå­—节) */ + uint8_t msg_type; /* 消æ¯ç±»åž‹ */ + uint8_t msg_padding[3];/* ä¿ç•™å­—段 */ + + uint8_t src_core_id; /* æºæ ¸ID */ + uint8_t dst_core_id; /* 目的核ID */ + uint8_t src_task_id; /* æºä»»åŠ¡ID */ + uint8_t dst_task_id; /* 目的任务ID */ + + uint8_t data[0]; +}Osp_Ape_Msg_Head; + +typedef struct tag_Osp_Server_Head +{ + uint8_t ip[16]; + uint8_t path[128]; + uint32_t ulport; +}Osp_Server_Head; + +typedef struct tag_Osp_Ape_Send_Count +{ + uint32_t ulsendcount; + uint32_t irq_no; + uint32_t irq_num; + uint32_t irq_handle_count; +}Osp_Ape_Send_Count; + +typedef struct tagOspCmdRtn +{ + char cmd[64]; + OSP_FUNCPTR wrapper; + OSP_FUNCPTR routine; + char descption[128]; + uint32_t argnum; +}OSP_CMD_RTN; + +typedef struct tagOspCmdExt +{ + char cmd[32]; + // char desc[32]; + uint32_t argnum; + uint32_t num; +}OSP_CMD_EXT; + +extern int32_t osp_shell_main(); +extern int32_t osp_execcmd(void); +extern int32_t osp_getcmdarg(char *cmd); +extern void osp_set_prompt(); +extern int32_t osp_insert_cmd(char *name, OSP_FUNCPTR pfunc); +extern int32_t osp_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, int32_t argnum); +int32_t osp_shell_init(void); +bool osp_is_ape_cmd(char *pCmd); +void osp_get_ape_id(uint8_t ucApeid); +void osp_ape_msg_send(char *pCmd); +void osp_show_ape_taskinfo(void); +uint32_t rev_shell_log_data(uint32_t port_id,uint32_t queue_num,uint32_t el_ind,const char* buf,uint32_t remainedLength,uint32_t* handledLength); +uint32_t osp_ape_shell_wrapper(char **arg, uint32_t len, OSP_FUNCPTR func); +void osp_ape_set_log_level(uint8_t ucLevel); +void osp_show_print_level(void); +void osp_set_print_level(uint8_t ucLevel); +void osp_cmd_register(OSP_CMD_EXT *pCmdExt); +void osp_cmd_insert_proc(osp_sw_msg_info_t *pMsg); +void osp_reget_ape_cmd(void); +int32_t osp_shell_str_wrapper(char **arg, int32_t len, OSP_FUNCPTR func); +int32_t osp_shell_wrapper(char **arg, int32_t len, OSP_FUNCPTR func); +int32_t osp_shell_mem_wrapper(char **arg, int32_t len, OSP_FUNCPTR func); +void osp_ape_shell_out(Osp_Ape_Msg_Head *pMsg); +extern int32_t osp_display_phy_mem(uint64_t phy_addr, uint32_t len); +void osp_show_queue_ul_info(void); +void osp_show_queue_dl_info(void); +uint64_t osp_shell_task(void); +int8_t osp_server_cfg(uint8_t *ip, uint32_t ulport); +void osp_server_cfg_show(); +void osp_log_path_cfg(char *path); +void osp_server_get(); +void osp_set_platform_log_echo(uint8_t ucIsEcho); +void osp_set_ape_log_mode(uint8_t ucIsEcho); +void osp_set_platform_log_mode(uint8_t ucIsEcho); +void osp_set_arm_log_mode(uint8_t ucIsNet); +void osp_ape_csu_stop_cfg(uint8_t ucstop, uint8_t ucadvance); +void osp_ape_csu_int_cnt(); +/*void osp_get_tfu_location_info(void); +void osp_get_clock_tracking_state(void); +void osp_reset_clock_module(void); +void osp_set_clk_mode(clk_flag_e pseudo_flag);*/ +void osp_show_swqueue_info(); +void osp_show_info_by_coreid(osp_sw_msg_info_t *pMsg); +void osp_set_oam(uint8_t ucOam); + + +#ifdef __cplusplus +} +#endif + +#endif /*_ospshellh */ + diff --git a/osp/inc/ospSoftQue.h b/osp/inc/ospSoftQue.h new file mode 100644 index 0000000..d7ffb85 --- /dev/null +++ b/osp/inc/ospSoftQue.h @@ -0,0 +1,63 @@ +#ifndef __OSPSOFTH__ +#define __OSPSOFTH__ + +#ifdef __cplusplus +extern "C" { +#endif + + + +typedef struct tag_Osp_SoftQue +{ + lx_sem_t mutex; + lx_sem_t sem; + int32_t Id; //QUEUE ID + char Name[32]; + int32_t EnIdx; //Èë¶ÓË÷Òý + int32_t DeIdx; //³ö¶ÓË÷Òý + int32_t Dep; //¶ÓÁÐÉî¶È + int32_t CurNum; + uint64_t EnCnt; //Èë¶Óͳ¼Æ¼ÆÊý + uint64_t DeCnt; //³ö¶Óͳ¼Æ¼ÆÊý + uint64_t FullCnt; //¶ÓÁÐÂúͳ¼Æ¼ÆÊý + uint64_t EmptyCnt; //¶ÓÁпÕͳ¼Æ¼ÆÊý + uint32_t Mask; + uint64_t Buf[]; +}Osp_SoftQue; + + +#define QUE_NEED_WAKE 1 +#define QUE_NO_NEED_WAKE 0 + +#define QUE_ISBLOCK 1 +#define QUE_NOBLOCK 0 + + +int32_t osp_create_softque(Osp_SoftQue *que, int32_t Dep, char *name); +int32_t osp_soft_que_enque(uint64_t value, Osp_SoftQue *que, int32_t IsNeedWake); +int32_t osp_softque_deque(uint64_t *pvalue, Osp_SoftQue *que, int32_t IsBlock); +int32_t osp_softque_dequetry(uint64_t *pvalue, Osp_SoftQue *que); +int32_t osp_softque_dequeTimeOut(uint64_t *pvalue, Osp_SoftQue *que, uint32_t timeout); +int32_t osp_get_soft_que_info(Osp_SoftQue *que, char *pbuf); +int32_t osp_get_soft_que_desc(char *pbuf); + + + +#define OSP_SOFTQ_ENCNT(que) que->EnCnt +#define OSP_SOFTQ_DECNT(que) que->DeCnt +#define OSP_SOFTQ_CUR(que) que->CurNum +#define OSP_SOFTQ_DEP(que) que->Dep + + +#define OSP_SOFTQ_SIZE(dep) (sizeof(Osp_SoftQue) + sizeof(uint64_t) * dep) + + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPSOFTH__ */ + diff --git a/osp/inc/ospSwQueue.h b/osp/inc/ospSwQueue.h new file mode 100644 index 0000000..bc92d49 --- /dev/null +++ b/osp/inc/ospSwQueue.h @@ -0,0 +1,133 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ospSwQueue.h +// Author : +// Created On : 2023-01-19 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __OSP_SW_QUEUE_H__ +#define __OSP_SW_QUEUE_H__ + +#define SPU_APE_RFM_QUE_SIG_SIZE (512) /* 软件队列一个å•ä½çš„长度为512字节 */ +#define OSP_APE_RFM_SHELL_QUE_DEP (8) /* Shell软件队列的深度为8 */ +#define OSP_APE_RFM_QUE_DEP (256) +#define OSP_APE_RFM_MSG_QUE_DEP (128) + +#define OSP_APE_RFM_LOG_NUM (12) +#define OSP_APE_RFM_SHELL_NUM (24) + +typedef enum OSP_SW_QUEUE_INDEX +{ + SW_LOG_APE0 = 0, + SW_LOG_APE1, + SW_LOG_APE2, + SW_LOG_APE3, + SW_LOG_APE4, + SW_LOG_APE5, + SW_LOG_APE6, + SW_LOG_APE7, + SW_LOG_PET_RFM0, + SW_LOG_PET_RFM1, + SW_LOG_ECS_RFM0, + SW_LOG_ECS_RFM1, + + SW_SHELL_APE0, //12 + SW_SHELL_APE1, + SW_SHELL_APE2, + SW_SHELL_APE3, + SW_SHELL_APE4, + SW_SHELL_APE5, + SW_SHELL_APE6, + SW_SHELL_APE7, + SW_SHELL_PET_RFM0, + SW_SHELL_PET_RFM1, + SW_SHELL_ECS_RFM0, + SW_SHELL_ECS_RFM1, + + SW_SHELL_ECHO_APE0, //24 + SW_SHELL_ECHO_APE1, + SW_SHELL_ECHO_APE2, + SW_SHELL_ECHO_APE3, + SW_SHELL_ECHO_APE4, + SW_SHELL_ECHO_APE5, + SW_SHELL_ECHO_APE6, + SW_SHELL_ECHO_APE7, + SW_SHELL_ECHO_PET_RFM0, + SW_SHELL_ECHO_PET_RFM1, + SW_SHELL_ECHO_ECS_RFM0, + SW_SHELL_ECHO_ECS_RFM1, + + SW_QUEUE_MAX_INDEX, +}osp_sw_queue_index_e; + +typedef enum OSP_SW_QUEUE_TYPE +{ + OSP_SW_QUEUE_LOG, /* Log软件队列 */ + OSP_SW_QUEUE_SHELL, /* Shell软件队列 */ + OSP_SW_QUEUE_MAX, /* 软件队列最大类型 */ +}osp_sw_queue_type_e; + +typedef struct SPU_SW_QUEUE_MEM +{ + void* pvaddr; + uint16_t u16queue_id; + uint16_t u16queue_type; + uint8_t u8queue_offset; + uint8_t u8queue_padding; + uint16_t u16queue_mem_idx; + uint16_t u16queue_dep; + uint16_t u16queue_mask; + uint16_t u16queue_padding; + uint32_t u32queue_full_count; + uint32_t u32queue_empty_count; +}spu_sw_queue_mem_t; + +typedef struct SPU_SW_QUEUE_SHARE_INFO +{ + volatile uint16_t u16queue_deque_idx; + volatile uint16_t u16queue_enque_idx; + volatile uint16_t u16queue_alloc_idx; + volatile uint16_t u16queue_free_idx; + //volatile uint16_t u16queue_deque_count; + //volatile uint16_t u16queue_enque_count; + volatile uint16_t u16queue_msg[OSP_APE_RFM_QUE_DEP]; +}spu_sw_queue_share_info_t; + +#define SPU_SW_QUEUE_SHARE_INFO_SIZE (sizeof(spu_sw_queue_share_info_t)) + +typedef enum OSP_SW_MSG_PKT_TYPE +{ + PKT_TYPE_LOG = 0x60, + PKT_TYPE_STR_LOG = 0x61, +}osp_sw_msg_pkt_type_e; + +typedef struct OSP_SW_MSG_INFO +{ + uint8_t u8Head[2]; + uint16_t u16DataLen; + uint8_t u8PktType; + uint8_t u8CoreId; + uint16_t u16Tail; + int8_t i8Data[0]; +}osp_sw_msg_info_t; + +#define OSP_SW_MSG_INFO_HEAD1 (0xAB) +#define OSP_SW_MSG_INFO_HEAD2 (0xEF) +#define OSP_SW_MSG_INFO_SIZE sizeof(osp_sw_msg_info_t) + +uint8_t osp_sw_queue_init(void); + +uint8_t osp_sw_enque(osp_sw_queue_index_e emqueue_idx, int8_t *pi8addr); +uint8_t osp_sw_deque(osp_sw_queue_index_e emqueue_idx, osp_sw_msg_info_t **pstmsg_info); +int8_t *osp_sw_mem_malloc(osp_sw_queue_index_e emqueue_idx); + + +#endif /* __OSP_SW_QUEUE_H__ */ + diff --git a/osp/inc/ospSwTimer.h b/osp/inc/ospSwTimer.h new file mode 100644 index 0000000..47e4540 --- /dev/null +++ b/osp/inc/ospSwTimer.h @@ -0,0 +1,66 @@ +#ifndef __OSP_SW_TIMER__ +#define __OSP_SW_TIMER__ + +#define OSP_SW_TIMER_NAME_LEN (24) +#define OSP_SW_TIMER_NUM (4) + +#define OSP_GET_MIN(a, b) (((a) < (b)) ? (a) : (b)) + +/* 定时器回调函数 */ +typedef void (*OSP_CALLBACK)(void* pArg); + +/* 定时器类型 */ +typedef enum _OspTmrType +{ + OSP_TMR_ONESHOT = 0, /* 一次性定时器 */ + OSP_TMR_PERIODIC /* 周期性定时器 */ +}OspTmrType; + +/* å®šæ—¶å™¨çŠ¶æ€ */ +typedef enum _OspTmrStatus +{ + OSP_TMR_STOPED = 0, /* åœæ­¢ */ + OSP_TMR_RUNING /* è¿è¡Œ */ +}OspTmrStatus; + +typedef enum _OspTmrUsing +{ + OSP_TMR_FREE = 0, /* 定时点结点空闲 */ + OSP_TMR_BUSY /* 定时点结点忙 */ +}OspTmrUsing; + +/* 定时器结构体 */ +typedef struct _OspSwTimer +{ + uint8_t u8Using; /* 定时器是å¦å ç”¨ï¼š0-未å ç”¨ï¼›1-å·²å ç”¨ */ + uint8_t u8Padding[3]; + uint8_t u8TmrName[OSP_SW_TIMER_NAME_LEN]; /* 定时器åç§° */ + uint32_t u32TimeOut; /* 定时器超时时间 */ + uint32_t u32RealTime; /* 当å‰å‰©ä½™æ—¶é—´ */ + OspTmrType emTmrType; /* 定时器类型 */ + OSP_CALLBACK pfnTmrCallBack; /* 定时器回调函数 */ + void* pArg; /* å®šæ—¶å™¨å›žè°ƒå‡½æ•°å‚æ•° */ + OspTmrStatus emTmrStatus; /* å®šæ—¶å™¨çŠ¶æ€ */ +}OspSwTimer_t; + +/* 定时器åˆå§‹åŒ–函数 */ +int8_t OspTmrInit(); + +/* 创建定时器 */ +int8_t OspTmrCreate(const char* pu8Name, + uint32_t u32TimeOut, + OspTmrType emTmrType, + OSP_CALLBACK pfnTmrCallBack, + void* pArg); + +/* 删除定时器 */ +int8_t OspTmrDelete(uint8_t u8TmrIndex); + +/* å¯åŠ¨å®šæ—¶å™¨ */ +int8_t OspTmrStart(uint8_t u8TmrIndex); + +/* åœæ­¢å®šæ—¶å™¨ */ +int8_t OspTmrStop(uint8_t u8TmrIndex); + +#endif /* __OSP_SW_TIMER__ */ + diff --git a/osp/inc/ospTask.h b/osp/inc/ospTask.h new file mode 100644 index 0000000..ba51002 --- /dev/null +++ b/osp/inc/ospTask.h @@ -0,0 +1,187 @@ +#ifndef __OSPTASKMSG__ +#define __OSPTASKMSG__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "ospTypes.h" + +#define OSPTASK_MINID 1 +#define OSPTASK_MAXID 31 +#define OSP_MAX_TASK 64 //origin: 1024 + +#define OSP_TASK_STACK 16384 +#define OSP_CPU_NUM 8 + +#define OSP_NO_AFFIINITY (-1) + +#define OSP_PROCESS_MSG 0 +#define OSP_UDP_MSG 1 +#define OSP_OTHER_MSG 2 + +//#define OSP_UDP_MSG(x, ipaddr) (0x1234000000000000 |(x<<32) | inet_addr(ipaddr)) + + +typedef struct tag_OSP_UDP_TASK_DATA +{ + uint32_t port; + uint32_t IsRx; + char ip[32]; +}OSP_UDP_TASK_DATA; + + + + +typedef struct tag_OSP_TASKMSG_REG +{ + uint32_t TaskId; + uint8_t TaskName[32]; + uint32_t TaskPri; + OSP_FUNCPTR Init; + OSP_FUNCPTR MainLoop; + uint32_t Cpu; + uint32_t MsgType; + uint64_t MsgTypeData; +}OSP_TASKMSG_REG; + +typedef enum { + TASK_RUNNING = 1, + TASK_SUSPEND, + +}TaskState; + +typedef struct tag_OSP_TASKMSG +{ + OSP_TASKMSG_REG Osp_TaskMsg_Reg; + void *sem; + int32_t TId; + pthread_t PhreadId; + uint32_t Active; + uint32_t State; + uint64_t TaskRunCnt; + + uint32_t MsgQOffset; + uint32_t MsgQId; + uint32_t MsgRxCnt; + uint32_t MsgTxCnt; + uint32_t MsgAllocCnt; + uint32_t LogAllocCnt; + uint32_t MsgFreeCnt; + uint32_t MemAllocCnt; + uint32_t MemFreeCnt; + + uint32_t MsgFullCnt; + int32_t OsTaskPri; + uint32_t IsRt; + OSP_FUNCPTR send_msg_func; + OSP_FUNCPTR rev_msg_func; + uint64_t Msg_Que; + + uint32_t dbg_out_is_enable; + uint32_t dbg_out2log_is_enable; + uint32_t is_shell; + +}OSP_TASKCB; + +extern OSP_TASKCB *gOspTask; + +#define TASK_MSGQ(x) (Osp_MsgQ_Tcb *)(gOspTask[x].MsgQOffset + gOspMsgQue) +#define TASK_MSG_RXCNT(x) (gOspTask[x].MsgRxCnt) +#define TASK_MSG_TXCNT(x) (gOspTask[x].MsgTxCnt) +#define TASK_MSG_FULLCNT(x) (gOspTask[x].MsgFullCnt) +#define TASK_RUNCNT(x) (gOspTask[x].TaskRunCnt) +#define TASK_MSG_ALLOCCNT(x) (gOspTask[x].MsgAllocCnt) +#define TASK_LOGMSG_ALLOCCNT(x) (gOspTask[x].LogAllocCnt) +#define TASK_MSG_FREECNT(x) (gOspTask[x].MsgFreeCnt) + +#define TASK_MEM_ALLOCCNT(x) (gOspTask[x].MemAllocCnt) +#define TASK_MEM_FREECNT(x) (gOspTask[x].MemFreeCnt) +#define TASK_ACTIVE(x) (gOspTask[x].Active) +#define TASK_SYSID(x) (gOspTask[x].TId) +#define TASK_THREADID(x) (gOspTask[x].PhreadId) +#define TASK_STATE(x) (gOspTask[x].State) +#define TASK_TXMSG_HANDLE(x) (gOspTask[x].send_msg_func) +#define TASK_MSG_QUE(x) (gOspTask[x].Msg_Que) + +#define TASK_RXMSG_HANDLE(x) (gOspTask[x].rev_msg_func) + +#define OSP_INVALID_TASKID (-1) + + + +/*0 ~15 task ID belong to OSP*/ +typedef enum { + /*ID0 shoud rev means, ID1 is main_init*/ + OspTestTask = 1, + OspTestTask1, + OspTestTask2, + OspTestTask3, + OspTestTask4, + OspTestTask5, + OspTestTask6, + SysLogTask, + DbgLogTask, + DbgPriTask, + ShellTask, + RemShellTask, + OspTickLess, + localshellin, + localshellout, + remoteshellin, + remoteshellout, + remotelocalshellin, + ospnetshellrx, +#ifdef HEARTBEAT_ENABLE + OspTmrTask, +#endif + OspDbgLog, + CpriGmacTx, + CpriGmacRx, +}TaskId; +#define NOMSGTASK 0xaa000000 +#define MSGTASK 0x55000000 +#define MSGMASK 0xff000000 + +#define RTTASK 0x00aa0000 +#define NORMALTASK 0x00550000 +#define POLICYMASK 0x00ff0000 + +#define XXTASK 0x0000aa00 +#define XXMASK 0x0000ff00 + +#define PRIMASK 0x000000ff + + +#define RT_MSG_PRI(x) (x | MSGTASK | RTTASK) +#define RT_NOMSG_PRI(x) (x | NOMSGTASK | RTTASK) +#define XRT_MSG_PRI(x) (x | MSGTASK | RTTASK | XXTASK) + +#define IS_RT_PRI(x) ((x & POLICYMASK) == RTTASK) +#define NOMARL_MSG_PRI(x) (x | MSGTASK | NORMALTASK) +#define NOMARL_NOMSG_PRI(x) (x | NOMSGTASK | NORMALTASK) + + + +extern __thread __typeof__(uint32_t) thread_local_TaskId; +#define CURRENT_TASKID thread_local_TaskId + +extern OSP_STATUS osp_regtaskAll(void); +void *osp_find_sym(char *pName); +extern int32_t osp_get_task_num(void); +extern OSP_TASKCB *osp_get_taskcb_base(void); +extern OSP_STATUS osp_task_init(void); +extern void osp_show_task_info(void); +extern int32_t osp_task_is_shell(uint32_t taskid); +extern void osp_start_task_all(void); +extern int32_t osp_set_net_task_msg_que(int32_t taskid, int32_t txudpid, int32_t rxudpid); +extern int32_t osp_local_shell_task_is_reged(void); +extern OSP_STATUS osp_regtask(OSP_TASKMSG_REG *TaskRegTbl); + +#ifdef __cplusplus +} +#endif + +#endif /*__OSPSEMH__ */ + diff --git a/osp/inc/ospTcp.h b/osp/inc/ospTcp.h new file mode 100644 index 0000000..f907274 --- /dev/null +++ b/osp/inc/ospTcp.h @@ -0,0 +1,18 @@ +#ifndef __OSPTCPH__ +#define __OSPTCPH__ + +#ifdef __cplusplus +extern "C" { +#endif +int32_t osp_tcp_rev(int32_t socket_fd, char *pMsg, int32_t msgLen); +int32_t osp_tcp_send(int32_t socket_fd, char *pMsg, int32_t msgLen); +int32_t tcpSerCreat(int32_t port); +int32_t tcpCliCreat(int32_t port); +int32_t tcpAccept(int32_t socket_fd); +int32_t tcpConnet(int32_t socket_fd, char *targetIp, int32_t port); + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPTCH__ */ diff --git a/osp/inc/ospTest.h b/osp/inc/ospTest.h new file mode 100644 index 0000000..b2ffb3c --- /dev/null +++ b/osp/inc/ospTest.h @@ -0,0 +1,19 @@ +#ifndef __OSPTESTH__ +#define __OSPTESTH__ + +#ifdef __cplusplus +extern "C" { +#endif + +extern OSP_TASKMSG_REG g_TestRegTbl[]; + +//const U32 g_RegTestNum; + + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPH__ */ + diff --git a/osp/inc/ospTimer.h b/osp/inc/ospTimer.h new file mode 100644 index 0000000..fde58f5 --- /dev/null +++ b/osp/inc/ospTimer.h @@ -0,0 +1,80 @@ +#ifndef __OSPTIMERH__ +#define __OSPTIMERH__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* timer pool number define */ +#define OSP_TIMER_NUM (8) + + +typedef enum { + TIMER_RUNNING = 1, + TIMER_SUSPEND, + TIMER_READY, + +}TimerState; + + + + +typedef struct NODE{ + uint32_t TimerOff; + uint32_t NextNodeOff; +}Node; + +typedef struct tag_Osp_Timer_Tcb +{ + uint32_t Repeat; + uint32_t DstTaskId; + uint32_t Period; + int32_t TimeOut; + uint32_t Delay; + uint64_t RunCnt; + uint32_t State; + int32_t Fd; + + uint32_t MaxTimeOut; + uint32_t TimeOutCnt; + uint32_t Valid; + +}OSP_timer_Tcb; + +#define MSG_TO_PTIMER(msg) ((uint64_t)(msg) + MSG_HEAD_SIZE) + + + +extern OSP_STATUS osp_timer_pool_init(void); +extern void *osp_timer_create_sim(uint32_t DstTaskId, bool isRepeat, uint32_t timeout, uint32_t Delay); +extern void *OSP_timerCreate(uint32_t DstTaskId, uint64_t param1, uint64_t param2, bool isRepeat, uint32_t timeout, OSP_FUNCPTR timerCallback, uint32_t Delay); +extern OSP_STATUS osp_timer_start(void *pTimer); +extern OSP_STATUS OSP_timerDelete(void *pTimer); +extern void osp_timer_del_sim(void *timer); + +extern OSP_STATUS osp_timer_callback(uint64_t ospTaskId, uint64_t timer); +extern void osp_show_timer_count(void); +extern int32_t osp_clk_rate_get(void); +extern uint64_t osp_get_osp_ticks(void); +extern void osp_set_ticks(uint64_t ticks); +extern void showRunTimerInfo(void); +extern void showStopTimerInfo(void); +extern uint64_t OSP_getTimerRemainTime(void *pTimer); +extern uint32_t osp_get_systick(); +extern void osp_pridel_time(void); + +void osp_show_timer_info(void); +int32_t CreatFreSynFd(uint32_t pri, uint32_t offset); +void osp_timer_suspend_sim(void *timer); + + +void osp_tick_less(void); +uint64_t osp_get_cycel(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPTIMERH__ */ + diff --git a/osp/inc/ospTypes.h b/osp/inc/ospTypes.h new file mode 100644 index 0000000..9ca4ffb --- /dev/null +++ b/osp/inc/ospTypes.h @@ -0,0 +1,23 @@ +#ifndef __OSPTYPESH__ +#define __OSPTYPESH__ + +#include +#include "typedef.h" + +#define OSP_OK (0) /* 正常返回 */ +#define OSP_ERROR (-1) /* 错误返回 */ +#define OSP_PAR_ILL (-2) /* å…¥å‚错误 */ +#define OSP_FILE_ERROR (-3) /* 文件错误 */ +#define OSP_PAR_REP (-4) /* å…¥å‚é‡å¤ */ +#define OSP_QUE_FULL (-5) /* 软队列满 */ +#define OSP_QUE_EMPT (-6) /* 软队列空 */ +#define OSP_MEM_FULL (-7) /* 内存申请失败 */ + +typedef int32_t OSP_STATUS; +//typedef int32_t STATUS; + +typedef uint64_t (*OSP_FUNCPTR)(); + +#endif /* __OSPTYPESH__ */ + + diff --git a/osp/inc/ospUdp.h b/osp/inc/ospUdp.h new file mode 100644 index 0000000..0d378ea --- /dev/null +++ b/osp/inc/ospUdp.h @@ -0,0 +1,46 @@ +#ifndef __OSPUDPH__ +#define __OSPUDPH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define OSP_UDP_RX 0 +#define OSP_UDP_TX 1 + + +extern int32_t osp_create_rxucp(int32_t port); +extern int32_t osp_create_txucp(int32_t port, char *targetIp); +extern int32_t osp_udp_send(char *pMsg, int32_t msgLen, int32_t udp_id); +extern int32_t osp_udp_receive(char *pbuf, int32_t size ,int32_t udp_id); +extern int32_t osp_send_udpmsg(Osp_Msg_Head *pMsg, uint64_t udp_id); +extern Osp_Msg_Head *osp_rev_udpmsg(uint64_t udp_id); +extern void OSP_Udp_Test_Main(Osp_Msg_Head *pMsg); +extern int32_t osp_udp_init(void); +extern void osp_show_udp(void); +extern int32_t osp_set_udp_noblock(int32_t udpid); +extern uint32_t osp_get_udp_rx_addr(int32_t udpid); +extern int32_t osp_get_txudp(char *ip, int32_t port); +extern int32_t osp_get_rxudp(char *ip, int32_t port); + +extern int32_t osp_get_ip_port(int32_t udpid, char *ip, int32_t *port); +extern int32_t osp_check_udpid(int32_t udpid); + +/*udp port distribution*/ + + +#define OSP_NETSHELL_RX_PORT 10003 + + + +#define OSP_UDPID_TO_QUE(t, r) ((t) << 16 | (r)) +#define OSP_UDPID_TO_TX(x) ((x) >> 16) +#define OSP_UDPID_TO_RX(x) ((x) & 0xffff) + + +#ifdef __cplusplus +} +#endif + +#endif /*__OSPBUFH__ */ + diff --git a/osp/inc/ospUtil.h b/osp/inc/ospUtil.h new file mode 100644 index 0000000..2cfd71e --- /dev/null +++ b/osp/inc/ospUtil.h @@ -0,0 +1,123 @@ +/* ospUtil.h: OSP utility header file */ + +#ifndef __OSPUTILH__ + +#define __OSPUTILH__ + + + +#ifdef __cplusplus + +extern "C" { + +#endif + + +struct list_head { + struct list_head *next, *prev; +}; + +struct hlist_head { + struct hlist_node *first; +}; + +struct hlist_node { + struct hlist_node *next, **pprev; +}; + + + +#define OSP_NTOHL(x) (x) +#define OSP_NTOHS(x) (x) +#define OSP_HTONL(x) (x) +#define OSP_HTONS(x) (x) +#define OSP_NTOH64(x) (x) +#define OSP_HTON64(x) (x) + + + +#define OSP_OFFSET(structure, member) \ + ((uint64_t)&(((structure *)0)->member)) + + +#define __OSP_MEMBEROF(s, f, p) \ +((s *)((char *)(p) - OSP_OFFSET(s, f))) + +#define OSP_MEMBEROF(s, f, p) \ + (((p) ? __OSP_MEMBEROF(s, f, p) : ((s *)0))) + +#define OSP_MEMBER_SIZE(structure, member) \ + (sizeof (((structure *)0)->member)) + + +#define OSP_NELEMENTS(array) \ +((sizeof(array) / sizeof((array)[0]))) + + +#define OSP_ROUND_UP(x, align) \ +(((uint64_t) (x) + ((align) - 1)) & ~((align) - 1)) + + +#define OSP_ROUND_DOWN(x, align) \ +((uint64_t)(x) & ~((align) - 1)) + + + +/*32bit byte reversion */ + +#define OSP_LONGSWAP(x) \ +((((x) & 0xFF000000) >> 24) | \ + (((x) & 0x00FF0000) >> 8) | \ + (((x) & 0x0000FF00) << 8) | \ + (((x) & 0x000000FF) << 24) \ +) + +#define OSP_IS_POWEOF2(x) ((x & (x-1)) == 0) + + +/*reversing bit order*/ + + + + + + +#define OSP_SETBIT(x, pos) ((x) | (1<<(pos))) +#define OSP_CLEARBIT(x, pos) ((x) & (~(1 << (pos)))) +#define OSP_GET_BITS(x, start, len) (((x) >> (start)) & ((1 << (len)) - 1)) +#define OSP_SET_BITS(x, start, len, y) \ + (x) = (((x) & (~(((1 << (len)) - 1) << (start)))) | ((y) << (start))) + + + +/* reverse one specified bit: + + * a: U32/U16/U8 + + * pos: 0(lsb)~31(msb) + + */ + +#define OSP_REVERSE_BIT(a,pos) \ +(((((~(a)) >> (pos)) & 0x01) << (pos)) | ((a) & (~(1 << (pos))))) + + + +#ifndef min +#define min(a, b) (((a) < (b)) ? (a) : (b)) +#endif + + + +#ifndef max +#define max(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#define ISPOW2(x) ((x & x - 1) == 0) + +#ifdef __cplusplus +} +#endif + +#endif /* __OSPUTILH__ */ + + diff --git a/osp/src/OspMutProcess.c b/osp/src/OspMutProcess.c new file mode 100644 index 0000000..0566c68 --- /dev/null +++ b/osp/src/OspMutProcess.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "osp.h" + + +int32_t MutProcessId = 0; + + + + + +int32_t osp_mut_process_init(void) +{ + int32_t fd; + + fd = open("/dev/read_add", O_RDWR | O_SYNC); + + if (-1 == fd) + { + MutProcessId =0; + return 0; + } + + read(fd, &MutProcessId, 4); + + return 0; + + +} + +int32_t osp_get_mut_process_id(void) +{ + return MutProcessId; +} + diff --git a/osp/src/crc32.c b/osp/src/crc32.c new file mode 100644 index 0000000..df0eaaa --- /dev/null +++ b/osp/src/crc32.c @@ -0,0 +1,237 @@ +/* + *This file is derived from osp_crc32.c from the zlib-1.1.3 distribution + *by Jean-loup Gailly and Mark Adler. + */ + +/*osp_crc32.c -- compute the CRC-32 of a data stream + *Copyright (C) 1995-1998 Mark Adler + *For conditions of distribution and use, see copyright notice in zlib.h + */ +#include +#include +#include +#include "ospTypes.h" +//#define LITTLE_ENDIAN + + + + + +#define uswap_16(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) +#define uswap_32(x) \ + ((((x) & 0xff000000) >> 24) | \ + (((x) & 0x00ff0000) >> 8) | \ + (((x) & 0x0000ff00) << 8) | \ + (((x) & 0x000000ff) << 24)) +#define _uswap_64(x, sfx) \ + ((((x) & 0xff00000000000000##sfx) >> 56) | \ + (((x) & 0x00ff000000000000##sfx) >> 40) | \ + (((x) & 0x0000ff0000000000##sfx) >> 24) | \ + (((x) & 0x000000ff00000000##sfx) >> 8) | \ + (((x) & 0x00000000ff000000##sfx) << 8) | \ + (((x) & 0x0000000000ff0000##sfx) << 24) | \ + (((x) & 0x000000000000ff00##sfx) << 40) | \ + (((x) & 0x00000000000000ff##sfx) << 56)) + +#ifdef LITTLE_ENDIAN +# define cpu_to_le16(x) (x) +# define cpu_to_le32(x) (x) +# define cpu_to_le64(x) (x) +# define le16_to_cpu(x) (x) +# define le32_to_cpu(x) (x) +# define le64_to_cpu(x) (x) +# define cpu_to_be16(x) uswap_16(x) +# define cpu_to_be32(x) uswap_32(x) +# define cpu_to_be64(x) uswap_64(x) +# define be16_to_cpu(x) uswap_16(x) +# define be32_to_cpu(x) uswap_32(x) +# define be64_to_cpu(x) uswap_64(x) +#else +# define cpu_to_le16(x) uswap_16(x) +# define cpu_to_le32(x) uswap_32(x) +# define cpu_to_le64(x) uswap_64(x) +# define le16_to_cpu(x) uswap_16(x) +# define le32_to_cpu(x) uswap_32(x) +# define le64_to_cpu(x) uswap_64(x) +# define cpu_to_be16(x) (x) +# define cpu_to_be32(x) (x) +# define cpu_to_be64(x) (x) +# define be16_to_cpu(x) (x) +# define be32_to_cpu(x) (x) +# define be64_to_cpu(x) (x) +#endif + +# define __cpu_to_be32(x) cpu_to_be32(x) +# define __cpu_to_be16(x) cpu_to_be16(x) +# define __be32_to_cpu(x) be32_to_cpu(x) +# define __be16_to_cpu(x) be16_to_cpu(x) + +#define ___htonl(x) __cpu_to_be32(x) +#define ___htons(x) __cpu_to_be16(x) +#define ___ntohl(x) __be32_to_cpu(x) +#define ___ntohs(x) __be16_to_cpu(x) + +#define htonl(x) ___htonl(x) +#define ntohl(x) ___ntohl(x) +#define htons(x) ___htons(x) +#define ntohs(x) ___ntohs(x) + + +#define tole(x) cpu_to_le32(x) + + +/*======================================================================== + *Table of CRC-32's of all single-byte values (made by make_crc_table) + */ + +static const uint32_t crc_table[256] = { +tole(0x00000000L), tole(0x77073096L), tole(0xee0e612cL), tole(0x990951baL), +tole(0x076dc419L), tole(0x706af48fL), tole(0xe963a535L), tole(0x9e6495a3L), +tole(0x0edb8832L), tole(0x79dcb8a4L), tole(0xe0d5e91eL), tole(0x97d2d988L), +tole(0x09b64c2bL), tole(0x7eb17cbdL), tole(0xe7b82d07L), tole(0x90bf1d91L), +tole(0x1db71064L), tole(0x6ab020f2L), tole(0xf3b97148L), tole(0x84be41deL), +tole(0x1adad47dL), tole(0x6ddde4ebL), tole(0xf4d4b551L), tole(0x83d385c7L), +tole(0x136c9856L), tole(0x646ba8c0L), tole(0xfd62f97aL), tole(0x8a65c9ecL), +tole(0x14015c4fL), tole(0x63066cd9L), tole(0xfa0f3d63L), tole(0x8d080df5L), +tole(0x3b6e20c8L), tole(0x4c69105eL), tole(0xd56041e4L), tole(0xa2677172L), +tole(0x3c03e4d1L), tole(0x4b04d447L), tole(0xd20d85fdL), tole(0xa50ab56bL), +tole(0x35b5a8faL), tole(0x42b2986cL), tole(0xdbbbc9d6L), tole(0xacbcf940L), +tole(0x32d86ce3L), tole(0x45df5c75L), tole(0xdcd60dcfL), tole(0xabd13d59L), +tole(0x26d930acL), tole(0x51de003aL), tole(0xc8d75180L), tole(0xbfd06116L), +tole(0x21b4f4b5L), tole(0x56b3c423L), tole(0xcfba9599L), tole(0xb8bda50fL), +tole(0x2802b89eL), tole(0x5f058808L), tole(0xc60cd9b2L), tole(0xb10be924L), +tole(0x2f6f7c87L), tole(0x58684c11L), tole(0xc1611dabL), tole(0xb6662d3dL), +tole(0x76dc4190L), tole(0x01db7106L), tole(0x98d220bcL), tole(0xefd5102aL), +tole(0x71b18589L), tole(0x06b6b51fL), tole(0x9fbfe4a5L), tole(0xe8b8d433L), +tole(0x7807c9a2L), tole(0x0f00f934L), tole(0x9609a88eL), tole(0xe10e9818L), +tole(0x7f6a0dbbL), tole(0x086d3d2dL), tole(0x91646c97L), tole(0xe6635c01L), +tole(0x6b6b51f4L), tole(0x1c6c6162L), tole(0x856530d8L), tole(0xf262004eL), +tole(0x6c0695edL), tole(0x1b01a57bL), tole(0x8208f4c1L), tole(0xf50fc457L), +tole(0x65b0d9c6L), tole(0x12b7e950L), tole(0x8bbeb8eaL), tole(0xfcb9887cL), +tole(0x62dd1ddfL), tole(0x15da2d49L), tole(0x8cd37cf3L), tole(0xfbd44c65L), +tole(0x4db26158L), tole(0x3ab551ceL), tole(0xa3bc0074L), tole(0xd4bb30e2L), +tole(0x4adfa541L), tole(0x3dd895d7L), tole(0xa4d1c46dL), tole(0xd3d6f4fbL), +tole(0x4369e96aL), tole(0x346ed9fcL), tole(0xad678846L), tole(0xda60b8d0L), +tole(0x44042d73L), tole(0x33031de5L), tole(0xaa0a4c5fL), tole(0xdd0d7cc9L), +tole(0x5005713cL), tole(0x270241aaL), tole(0xbe0b1010L), tole(0xc90c2086L), +tole(0x5768b525L), tole(0x206f85b3L), tole(0xb966d409L), tole(0xce61e49fL), +tole(0x5edef90eL), tole(0x29d9c998L), tole(0xb0d09822L), tole(0xc7d7a8b4L), +tole(0x59b33d17L), tole(0x2eb40d81L), tole(0xb7bd5c3bL), tole(0xc0ba6cadL), +tole(0xedb88320L), tole(0x9abfb3b6L), tole(0x03b6e20cL), tole(0x74b1d29aL), +tole(0xead54739L), tole(0x9dd277afL), tole(0x04db2615L), tole(0x73dc1683L), +tole(0xe3630b12L), tole(0x94643b84L), tole(0x0d6d6a3eL), tole(0x7a6a5aa8L), +tole(0xe40ecf0bL), tole(0x9309ff9dL), tole(0x0a00ae27L), tole(0x7d079eb1L), +tole(0xf00f9344L), tole(0x8708a3d2L), tole(0x1e01f268L), tole(0x6906c2feL), +tole(0xf762575dL), tole(0x806567cbL), tole(0x196c3671L), tole(0x6e6b06e7L), +tole(0xfed41b76L), tole(0x89d32be0L), tole(0x10da7a5aL), tole(0x67dd4accL), +tole(0xf9b9df6fL), tole(0x8ebeeff9L), tole(0x17b7be43L), tole(0x60b08ed5L), +tole(0xd6d6a3e8L), tole(0xa1d1937eL), tole(0x38d8c2c4L), tole(0x4fdff252L), +tole(0xd1bb67f1L), tole(0xa6bc5767L), tole(0x3fb506ddL), tole(0x48b2364bL), +tole(0xd80d2bdaL), tole(0xaf0a1b4cL), tole(0x36034af6L), tole(0x41047a60L), +tole(0xdf60efc3L), tole(0xa867df55L), tole(0x316e8eefL), tole(0x4669be79L), +tole(0xcb61b38cL), tole(0xbc66831aL), tole(0x256fd2a0L), tole(0x5268e236L), +tole(0xcc0c7795L), tole(0xbb0b4703L), tole(0x220216b9L), tole(0x5505262fL), +tole(0xc5ba3bbeL), tole(0xb2bd0b28L), tole(0x2bb45a92L), tole(0x5cb36a04L), +tole(0xc2d7ffa7L), tole(0xb5d0cf31L), tole(0x2cd99e8bL), tole(0x5bdeae1dL), +tole(0x9b64c2b0L), tole(0xec63f226L), tole(0x756aa39cL), tole(0x026d930aL), +tole(0x9c0906a9L), tole(0xeb0e363fL), tole(0x72076785L), tole(0x05005713L), +tole(0x95bf4a82L), tole(0xe2b87a14L), tole(0x7bb12baeL), tole(0x0cb61b38L), +tole(0x92d28e9bL), tole(0xe5d5be0dL), tole(0x7cdcefb7L), tole(0x0bdbdf21L), +tole(0x86d3d2d4L), tole(0xf1d4e242L), tole(0x68ddb3f8L), tole(0x1fda836eL), +tole(0x81be16cdL), tole(0xf6b9265bL), tole(0x6fb077e1L), tole(0x18b74777L), +tole(0x88085ae6L), tole(0xff0f6a70L), tole(0x66063bcaL), tole(0x11010b5cL), +tole(0x8f659effL), tole(0xf862ae69L), tole(0x616bffd3L), tole(0x166ccf45L), +tole(0xa00ae278L), tole(0xd70dd2eeL), tole(0x4e048354L), tole(0x3903b3c2L), +tole(0xa7672661L), tole(0xd06016f7L), tole(0x4969474dL), tole(0x3e6e77dbL), +tole(0xaed16a4aL), tole(0xd9d65adcL), tole(0x40df0b66L), tole(0x37d83bf0L), +tole(0xa9bcae53L), tole(0xdebb9ec5L), tole(0x47b2cf7fL), tole(0x30b5ffe9L), +tole(0xbdbdf21cL), tole(0xcabac28aL), tole(0x53b39330L), tole(0x24b4a3a6L), +tole(0xbad03605L), tole(0xcdd70693L), tole(0x54de5729L), tole(0x23d967bfL), +tole(0xb3667a2eL), tole(0xc4614ab8L), tole(0x5d681b02L), tole(0x2a6f2b94L), +tole(0xb40bbe37L), tole(0xc30c8ea1L), tole(0x5a05df1bL), tole(0x2d02ef8dL) +}; + + + + +/*========================================================================= */ +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define DO_CRC(x) crc = tab[(crc ^ (x)) & 255] ^ (crc >> 8) +# else +# define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) +# endif + +/*========================================================================= */ + +/*No ones complement version. JFFS2 (and other things ?) + *don't use ones compliment in their CRC calculations. + */ +uint32_t osp_osp_crc32_no_comp(uint32_t crc, const unsigned char *buf, uint32_t len) +{ + const uint32_t *tab = crc_table; + const uint32_t *b = (const uint32_t *)buf; + size_t rem_len; + + crc = cpu_to_le32(crc); + /*Align it */ + if (((long)b) & 3 && len) { + unsigned char *p = (unsigned char *)b; + do { + DO_CRC(*p++); + } while ((--len) && ((long)p)&3); + b = (uint32_t *)p; + } + + rem_len = len & 3; + len = len >> 2; + for (--b; len; --len) { + /*load data 32 bits wide, xor data 32 bits wide. */ + crc ^= *++b; /*use pre increment for speed */ + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + DO_CRC(0); + } + len = rem_len; + /*And the last few bytes */ + if (len) { + unsigned char *p = (unsigned char *)(b + 1) - 1; + do { + DO_CRC(*++p); /*use pre increment for speed */ + } while (--len); + } + + return le32_to_cpu(crc); +} +#undef DO_CRC + +uint32_t osp_crc32(uint32_t crc, const unsigned char *p, uint32_t len) +{ + return osp_osp_crc32_no_comp(crc ^ 0xffffffffL, p, len) ^ 0xffffffffL; +} + +/* + *Calculate the osp_crc32 checksum triggering the watchdog every 'chunk_sz' bytes + *of input. + */ +uint32_t osp_osp_crc32_wd(uint32_t crc, const unsigned char *buf, uint32_t len, + uint32_t chunk_sz) +{ + + crc = osp_crc32 (crc, buf, len); + + return crc; +} + +void osp_osp_osp_crc32_wd_buf(const unsigned char *input, uint32_t ilen, + unsigned char *output, uint32_t chunk_sz) +{ + uint32_t crc; + + crc = osp_osp_crc32_wd(0, input, ilen, chunk_sz); + crc = htonl(crc); + memcpy(output, &crc, sizeof(crc)); +} + diff --git a/osp/src/osp.c b/osp/src/osp.c new file mode 100644 index 0000000..531dadf --- /dev/null +++ b/osp/src/osp.c @@ -0,0 +1,200 @@ +/* + * ospInit - Initailize OSP + * input: + * none + * return + * OSP_OK + */ +#define _GNU_SOURCE 1 +#define __USE_GNU 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "osp.h" +#include "ospCfgToBin.h" +#include "ucp_printf.h" +#include "ospSwTimer.h" +#include "ospDump.h" +#include "ospHeartbeat.h" +#include "ospLog.h" + +int32_t ospgdb = 1; +int32_t g_ProcessId = 0; + +#define MAX_ARGC_NUM 32 +#define MAX_ARGV_LEN 64 +int32_t parm_num; +char parm[MAX_ARGC_NUM][MAX_ARGV_LEN] = {0}; + +static int32_t g_osp_init_done = 0; + +int32_t osp_init_done() +{ + + g_osp_init_done = 1; + return 0; +} + +int32_t osp_is_init_done() +{ + return g_osp_init_done; +} + +/* + *osp_version - show OSP version + *input: + * none + *return + * none + */ + +void osp_version(void) +{ + osp_debug_out(CMD_DEBUG_LEVEL, "%s\n", OSP_VERSION" (" __DATE__ " - " __TIME__ ")"); +} + +void osp_exit(void) +{ + osp_debug_out(CMD_DEBUG_LEVEL, "osp exit ok!"); +} + +void osp_atexit(void) +{ + if (atexit(osp_exit) != 0) + osp_debug_out(CMD_DEBUG_LEVEL, "can't register ospExit"); +} + +int32_t osp_record_init_parm(int32_t argc, char *argv[]) +{ + int32_t i; + + if ((argc >= MAX_ARGC_NUM) || (NULL == argv)) + { + return -1; + } + parm_num = argc; + for (i = 0; i < argc; i++) + { + strcpy(parm[i], argv[i]); + } + + return 0; +} + +int32_t osp_get_init_parm(int32_t *argc, char *argv, int32_t size) +{ + int32_t i; + + if ((NULL == argc) || (NULL == argv)) + { + return -1; + } + + *argc = parm_num; + + for (i = 0; i < parm_num; i++) + { + strcpy(&argv[i*size], parm[i]); + } + return 0; +} +#if 0 +OSP_STATUS main(INT32 argc,char *argv[]) +{ + + osp_record_init_parm(argc, argv); + { + CURRENT_TASKID = 0; + + osp_debug_out_with_time(RUN_DEBUG_LEVEL, "starting OSP initializing...\n"); + + /*import all symbols for all so*/ + //osp_find_sym(""); + osp_mem_init(); + osp_mut_process_init(); + osp_sw_queue_init(); + osp_shell_init(); + osp_debug_init(); + osp_log_init(); + osp_msg_que_init(); + osp_buf_init(); + osp_udp_init(); + osp_timer_pool_init(); + osp_diag_init(); + test_main(); + osp_task_init(); + osp_delay(1000000);/*make sure all task start*/ + + osp_start_task_all(); + osp_init_done(); + osp_version(); + osp_atexit(); + osp_debug_out_with_time(RUN_DEBUG_LEVEL, "OSP initializing finished.\n"); + + while (1) + { + osp_delay(1000000); + } + } +} +#else +OSP_STATUS osp_init() +{ + printf("lib build: %s %s\n", __DATE__, __TIME__); + printf("---V1.3.SLEVMY.CK.202306122125_application_platform_2023_week28---\n"); + + UCP_PRINT_DEBUG("starting OSP initializing..."); + + osp_record_init_parm(0, NULL); + { + CURRENT_TASKID = 0; + + UCP_PRINT_DEBUG("starting OSP initializing...\n"); + + /*import all symbols for all so*/ + //osp_find_sym(""); + osp_mem_init(); + osp_mut_process_init(); + osp_sw_queue_init(); + osp_shell_init(); + osp_debug_init(); + osp_log_init(); + osp_dump_init(); + osp_msg_que_init(); + osp_buf_init(); + osp_udp_init(); + osp_timer_pool_init(); + osp_diag_init(); + osp_read_cfg_file(); + #ifdef HEARTBEAT_ENABLE + OspTmrInit(); + #endif + osp_task_init(); + osp_delay(1000);/*make sure all task start*/ + #ifdef HEARTBEAT_ENABLE + OspHeartbeatPro(); + #endif + UCP_PRINT_DEBUG("OSP initializing finished.\n"); + + osp_start_task_all(); + osp_init_done(); + osp_version(); + osp_atexit(); + UCP_PRINT_DEBUG("OSP initializing finished.\n"); + + /*while (1) + { + osp_delay(1000000); + }*/ + return OSP_OK; + } +} + +#endif diff --git a/osp/src/ospAtomicOp.c b/osp/src/ospAtomicOp.c new file mode 100644 index 0000000..4223578 --- /dev/null +++ b/osp/src/ospAtomicOp.c @@ -0,0 +1,127 @@ +#include +#include +#include +#include "osp.h" + + +/* function prototype */ +void osp_atomic_inc(int32_t *pVar) +{ + if (pVar == NULL) + { + return; + } + + if (((uint64_t)pVar & 3) != 0) + { + (*pVar)++; + } + else + { + __sync_add_and_fetch(pVar, 1); + } +} + +void osp_atomic_dec(int32_t*pVar) +{ + if (pVar == NULL) + { + return; + } + + if (((uint64_t)pVar & 3) != 0) + { + (*pVar)--; + } + else + { + + __sync_sub_and_fetch(pVar, 1); + } +} + +int32_t osp_atomic_get(int32_t*pVar) +{ + if (pVar == NULL) + { + return 0; + } + + if (((uint64_t)pVar & 3) != 0) + { + return *pVar; + } + else + { + + return __sync_sub_and_fetch(pVar, 0); + } +} + +void osp_atomic_set(int32_t *pVar, int32_t val) +{ + + + atomic_set((OSP_atomic_t *)pVar,val); +} + + void osp_atomic64_inc(int64_t *pVar) +{ + if (pVar == NULL) + { + return; + } + + if (((uint64_t)pVar & 7) != 0) + { + (*pVar)++; + } + else + { + + __sync_add_and_fetch(pVar, 1); + } +} + +void osp_atomic64_dec(int64_t*pVar) +{ + if (pVar == NULL) + { + return; + } + + if (((uint64_t)pVar & 7) != 0) + { + (*pVar)--; + } + else + { + __sync_sub_and_fetch(pVar, 1); + } +} + +int64_t osp_atomic64_get(int64_t*pVar) +{ + if (((uint64_t)pVar & 7) != 0) + { + return *pVar; + } + else + { + + return __sync_or_and_fetch(pVar, 0); + } +} + +void osp_atomic64_set(int64_t*pVar, int64_t val) +{ + if (((uint64_t)pVar & 7) != 0) + { + *pVar = val; + } + else + { + + __sync_lock_test_and_set(pVar, val); + } +} \ No newline at end of file diff --git a/osp/src/ospBuf.c b/osp/src/ospBuf.c new file mode 100644 index 0000000..2f8437b --- /dev/null +++ b/osp/src/ospBuf.c @@ -0,0 +1,373 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "osp.h" + +/*lint -e826*/ + +/* buffer configuration information, + * element size must be (N+1)*basesize, + * where N is element index, basesize is the size of first element + */ + +/*buffer address range */ +char *OspBufferBase = NULL; +char *OspBufferqueBasePrintLog = NULL; +char *OspBufferDataBasePrintLog = NULL; +char *OspBufferqueBaseShell = NULL; +char *OspBufferDataBaseShell = NULL; +char *OspBufferQueBaseNor = NULL; +char *OspBufferDataBaseNor = NULL; + +int32_t osp_create_bufq(Osp_BufQ_Tcb *que, char *name, int32_t order) +{ + OSP_BUFQ_ORDER(que) = order; + return osp_create_softque(&OSP_BUFQ_QUE(que), MAX_BLOCK_NUM, name); +} + + + +int32_t osp_buf_enque(uint64_t value, Osp_BufQ_Tcb *que) +{ + return osp_soft_que_enque(value, &OSP_BUFQ_QUE(que), QUE_NO_NEED_WAKE); + +} + +int32_t osp_buf_deque(uint64_t *pvalue, Osp_BufQ_Tcb *que) +{ + return osp_softque_deque(pvalue, &OSP_BUFQ_QUE(que), QUE_NOBLOCK); +} + +//INT32 bufgdb = 1; +int32_t osp_buf_cb_init(uint32_t *puiLen) +{ + Osp_BufQ_Tcb *que; + Osp_BufQ_Tcb *quebase; + Osp_Block_Head *phead; + uint32_t Offset; + uint32_t idx; + uint32_t buf_size = 0; + uint8_t order; + + /*timer buffer init*/ + quebase = (Osp_BufQ_Tcb *) BUFFERQUE_BASE_PRINT_LOG; + order = SIZE_ORDER_PRINT_LOG; + que = quebase; + + osp_create_bufq(que, "timer_buffer", order); + + Offset = 0; + for (idx = 0; idx < MAX_BLOCK_NUM; idx++) + { + phead = (Osp_Block_Head *)(Offset + (uint64_t)BUFFERDATA_BASE_PRINT_LOG); + phead->MagicOffset = (1 << order) - OSP_BUF_MAGICDATA_SIZE; + phead->RelaOrder = 0; + phead->idx = idx; + phead->UserId = VALIDIDMASK; + phead->NormalFlag = BUFFER_PRINTLOG_LEVEL; + *(uint32_t *)((uint64_t)phead + phead->MagicOffset) = BUF_MAGIC_NUM; + osp_buf_enque(Offset + (uint64_t)BUFFERDATA_BASE_PRINT_LOG - (uint64_t)BUFFER_BASE, que); + Offset += (1 << order); + } + + /*cmd buffer init*/ + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_SHELL; + order = SIZE_ORDER_SHELL; + que = quebase; + + osp_create_bufq(que, "cmd_buffer", order); + + Offset = 0; + for (idx = 0; idx < MAX_BLOCK_NUM; idx++) + { + phead = (Osp_Block_Head *)(Offset + (uint64_t)BUFFERDATA_BASE_SHELL); + phead->MagicOffset = (1 << order) - OSP_BUF_MAGICDATA_SIZE; + phead->RelaOrder = 0; + phead->idx = idx; + phead->UserId = VALIDIDMASK; + phead->NormalFlag = BUFFER_SHELL_LEVEL; + *(uint32_t *)((uint64_t)phead + phead->MagicOffset) = BUF_MAGIC_NUM; + osp_buf_enque(Offset + (uint64_t)BUFFERDATA_BASE_SHELL - (uint64_t)BUFFER_BASE, que); + Offset += (1 << order); + } + + /*normal buffer init*/ + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_NOR; + #if 0 + for (order = MIN_SIZE_ORDER; order <= MAX_SIZE_ORDER; order++) + { + que = &quebase[order - MIN_SIZE_ORDER]; + + osp_create_bufq(que, "normal_buffer", order); + } + + Offset = 0; + for (order = MIN_SIZE_ORDER; order <= MAX_SIZE_ORDER; order++) + { +// que = (Osp_BufQ_Tcb *)((UINTPTR)quebase + OSP_BUFQ_TCBSIZE * (order - MIN_SIZE_ORDER)); + que = &quebase[order - MIN_SIZE_ORDER]; + for (idx = 0; idx < MAX_BLOCK_NUM; idx++) + { + phead = (Osp_Block_Head *)(Offset + (UINTPTR)BUFFERDATA_BASE_NOR); + phead->MagicOffset = (1 << order) - OSP_BUF_MAGICDATA_SIZE; + phead->RelaOrder = order - MIN_SIZE_ORDER; + phead->idx = idx; + phead->UserId = VALIDIDMASK; + phead->NormalFlag = BUFFER_NORMAL_LEVEL; + *(U32 *)((UINTPTR)phead + phead->MagicOffset) = BUF_MAGIC_NUM; + osp_buf_enque(Offset + (UINTPTR)BUFFERDATA_BASE_NOR - (UINTPTR)BUFFER_BASE, que); + Offset += (1 << order); + } + } + #else + + Offset = 0; + for (order = MIN_SIZE_ORDER; order <= MAX_SIZE_ORDER; order++) + { + que = &quebase[order - MIN_SIZE_ORDER]; + osp_create_bufq(que, "normal_buffer", order); + + buf_size = 1 << order; + for (idx = 0; idx < MAX_BLOCK_NUM; idx++) + { + phead = (Osp_Block_Head *)(Offset + (uint64_t)BUFFERDATA_BASE_NOR); + phead->MagicOffset = buf_size - OSP_BUF_MAGICDATA_SIZE; + phead->RelaOrder = order - MIN_SIZE_ORDER; + phead->idx = idx; + phead->UserId = VALIDIDMASK; + phead->NormalFlag = BUFFER_NORMAL_LEVEL; + *(uint32_t *)((uint64_t)phead + phead->MagicOffset) = BUF_MAGIC_NUM; + osp_buf_enque(Offset + (uint64_t)BUFFERDATA_BASE_NOR - (uint64_t)BUFFER_BASE, que); + Offset += buf_size; + } + } + #endif + *puiLen = Offset + (uint64_t)BUFFERDATA_BASE_NOR - (uint64_t)BUFFER_BASE; + return OSP_OK; +} + + + +void *osp_get_buffer(uint32_t size, uint16_t UseType, uint16_t PriLevel) +{ + Osp_BufQ_Tcb *quebase; + uint64_t offset; + int32_t ret; + int32_t RelaOrder; + Osp_Block_Head *phead; + uint32_t bufSize; + int32_t order = 0; + + bufSize = size + OSP_BLOCK_HEAD_SIZE + OSP_BUF_MAGICDATA_SIZE; + if ((NULL == BUFFER_BASE) || (bufSize > MAX_OSPBUF_LEN)) + { + return NULL; + } + + /*shell will use itself buffer*/ + if (osp_task_is_shell(CURRENT_TASKID)) + { + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_SHELL; + osp_assert(bufSize <= (1 << (OSP_BUFQ_ORDER(quebase)))); + ret = osp_buf_deque(&offset, quebase); + if (-1 != ret) + { + phead = (Osp_Block_Head *)(offset + (uint64_t)BUFFER_BASE); + phead->UserId = (VALIDIDMASK | CURRENT_TASKID); + phead->UseType = UseType; + return (void *)((uint64_t)phead + OSP_BLOCK_HEAD_SIZE); + } + return NULL; + } + + switch (PriLevel) + { + case BUFFER_NORMAL_LEVEL: + + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_NOR; + + /*²éÕÒÂú×ãbufSizeµÄ×îСorder*/ + for(order = MIN_SIZE_ORDER; order <= MAX_SIZE_ORDER; order++) + { + if(bufSize < (1 << order)) + { + RelaOrder = order - MIN_SIZE_ORDER; + ret = osp_buf_deque(&offset, &quebase[RelaOrder]); + if (-1 != ret) //Èô×îСorderûÓÐbufÁË£¬¼ÌÐøÏòºóÃæµÄorderËÑË÷ + { + phead = (Osp_Block_Head *)(offset + (uint64_t)BUFFER_BASE); + phead->UserId = (VALIDIDMASK | CURRENT_TASKID); + phead->UseType = UseType; + return (void *)((uint64_t)phead + OSP_BLOCK_HEAD_SIZE); + } + } + } + + //ûÓÐÂú×ãÌõ¼þµÄbuf£¬·µ»Ø¿Õ + if(MAX_SIZE_ORDER == order) + { + return NULL; + } + case BUFFER_PRINTLOG_LEVEL: + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_PRINT_LOG; + osp_assert(bufSize <= (1 << (OSP_BUFQ_ORDER(quebase)))); + ret = osp_buf_deque(&offset, quebase); + if (-1 != ret) + { + phead = (Osp_Block_Head *)(offset + (uint64_t)BUFFER_BASE); + phead->UserId = (VALIDIDMASK | CURRENT_TASKID); + phead->UseType = UseType; + return (void *)((uint64_t)phead + OSP_BLOCK_HEAD_SIZE); + } + return NULL; + default : + return NULL; + } +} + +OSP_STATUS osp_free_buffer(void *pBuffer) +{ + uint32_t offset; + Osp_Block_Head *phead; + Osp_BufQ_Tcb *quebase; + + + osp_assert(pBuffer != NULL); + + phead = (Osp_Block_Head *)((uint64_t)pBuffer - OSP_BLOCK_HEAD_SIZE); + + osp_assert((phead->UserId & 0xffff0000) == VALIDIDMASK); + osp_assert((phead->UserId & 0x0000ffff) != FREEUSERID); + osp_assert(*(uint32_t *)((uint64_t)phead + phead->MagicOffset) == BUF_MAGIC_NUM); + + offset = (uint64_t)phead - (uint64_t)BUFFER_BASE; + + phead->UserId = VALIDIDMASK | FREEUSERID; + + switch (phead->NormalFlag) + { + case BUFFER_NORMAL_LEVEL: + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_NOR; + osp_buf_enque(offset, &quebase[phead->RelaOrder]); + break; + case BUFFER_SHELL_LEVEL: + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_SHELL; + osp_buf_enque(offset, quebase); + break; + case BUFFER_PRINTLOG_LEVEL: + quebase = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_PRINT_LOG; + osp_buf_enque(offset, quebase); + break; + } + return (OSP_OK); +} + + +void osp_show_buf_count(void) +{ + int32_t order; + char *pbuf; + char *p; + uint32_t len = 0; + Osp_BufQ_Tcb *quebase; + Osp_BufQ_Tcb *que; + + pbuf = malloc(10 * 1024); + osp_assert(pbuf != NULL); + + + len += sprintf(pbuf, "%-16s%-16s%-16s%-16s%-16s%-16s%-16s\n", "BlockSize", "MallocCnt", "FreeCnt", "UsedNum", + "TotalCnt", "UsedRate", "type"); + + + + que = (Osp_BufQ_Tcb *)BUFFERQUE_BASE_SHELL; + + len += sprintf(pbuf+len, "%-16d%-16ld%-16ld%-16d%-16d%d%%\t\t%s\n", (1< +#include +#include +#include "ospTypes.h" +#include "ospCfgToBin.h" +#include "ospHeap.h" +#include "ospSem.h" +#include "ospSoftQue.h" +#include "ospMsg.h" +#include "ucp_printf.h" + +/***************************************************************************/ +/* ARM <---> APE */ +#define ARM_READ_CFG_FILE_OK (0xA0A0A0A0) /* ARM侧与APE侧约定 */ +#define ARM_CFG_FILE_OFFSET (0x00400000) /* é…置文件起始地å€ç›¸å¯¹äºŽPHY空间,åç§»4MB */ + +#define ARM_CFG_PHY_ADDR (0x10400000) /* é…ç½®æ–‡ä»¶é¦–åœ°å€ */ +#define ARM_CFG_PHY_SIZE (0x4000000) /* é…置文件区域长度:64M */ +#define APE_CFG_INFO_ONE sizeof(osp_cfg_file_reg) + +#define ARM_CFG_INDXN (8) /* 4字节:FlAGï¼›4字节:NUM */ +#define ARM_CFG_FLAG (4) +#define ARM_CFG_NUM (4) + +#define ARM_CFG_INFO_ADDR (ARM_CFG_PHY_ADDR + ARM_CFG_INDXN) /* é…置文件头信æ¯åœ°å€ */ +#define ARM_CFG_INFO_SIZE (APE_CFG_INFO_ONE * APE_CFG_FILE_NUM) + +#define ARM_CFG_FILE_ADDR (ARM_CFG_INFO_ADDR + ARM_CFG_INFO_SIZE) /* é…置文件文件信æ¯åœ°å€ */ +#define ARM_CFG_FILE_SIZE (ARM_CFG_PHY_SIZE - ARM_CFG_INFO_SIZE -ARM_CFG_INDXN) /* é…置文件文件总长度 */ + +/***************************************************************************/ +/* ARM <---> ARM */ +#define ARM_SPE_CFG_PHY_SIZE (0x1400000) /* 约定在20M以内 */ +#define ARM_SPE_CFG_INFO_ONE sizeof(osp_spe_cfg_file_reg) +#define ARM_SPE_CFG_INFO_SIZE (ARM_SPE_CFG_INFO_ONE * APE_CFG_FILE_NUM) + +#if 0 +#define ARM_SPE_CFG_PHY_ADDR (0xB8000000) /* 指定é…ç½®æ–‡ä»¶é¦–åœ°å€ */ +#define ARM_SPE_CFG_PHY_SIZE (0x10000) /* 指定é…置文件区域长度:64K */ + +#define ARM_SPE_CFG_INFO_ADDR (ARM_SPE_CFG_PHY_ADDR + ARM_CFG_INDXN) /* 指定é…置文件头信æ¯åœ°å€ */ + +#define ARM_SPE_CFG_FILE_ADDR (ARM_SPE_CFG_INFO_ADDR + ARM_SPE_CFG_INFO_SIZE) /* 指定é…置文件文件信æ¯åœ°å€*/ +#endif +/***************************************************************************/ +/* ARM <---> APE */ +osp_cfg_file_reg g_osp_cfg_file_reg[APE_CFG_FILE_NUM]; +uint32_t g_osp_cfg_file_idx = 0; +void *g_ptr_static_mem = NULL; +uint64_t g_static_mem_size = 0; + +/***************************************************************************/ +/* ARM <---> ARM */ +osp_spe_cfg_file_reg g_spe_osp_cfg_file_reg[APE_CFG_FILE_NUM]; +uint32_t g_spe_osp_cfg_file_idx = 0; +void *g_spe_ptr_static_mem = NULL; +uint64_t g_spe_static_mem_size = 0; + +/***************************************************************************/ +/* ARM <---> APE */ +/* ARM侧,é…置文件模å—åˆå§‹åŒ– */ +int32_t osp_cfg_file_init() +{ + memset(&g_osp_cfg_file_reg, 0, sizeof(g_osp_cfg_file_reg)); + g_osp_cfg_file_idx = 0; + g_static_mem_size = 0; + + g_ptr_static_mem = get_static_mem(APE_PHY, &g_static_mem_size); + if (0 == g_static_mem_size) + { + UCP_PRINT_ERROR("get_static_mem(APE_PHY) error......\r\n"); + return OSP_ERROR; + } + g_ptr_static_mem += ARM_CFG_FILE_OFFSET; /* 在内存规划中,é…置文件的起始地å€éœ€è¦åç§» */ + + /* 先把NUMä½å†™æˆ0 */ + *(uint32_t*)(g_ptr_static_mem+ARM_CFG_NUM) = 0; + + return OSP_OK; +} + +/***********************************************************/ +/* 约定如下: + 1. 所有原始文件为文本文件 + 2. 所有原始文件存放在目录: /ramfs/cfgDat/ + 3. 所有原始文件都以.dat为åŽç¼€ + 4. 需è¦å°†æ–‡æœ¬æ–‡ä»¶è½¬åŒ–æˆäºŒè¿›åˆ¶æ–‡ä»¶ + 5. 所有二进制文件存放在目录: /ramfs/config/ +*/ + +/* 将所有文本文件转化æˆäºŒè¿›åˆ¶æ–‡ä»¶ */ +int32_t osp_cfg_file_to_bin() +{ + FILE *file = NULL; /* éåŽ†ä¸´æ—¶æ–‡ä»¶ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶å */ + FILE *read_file = NULL; /* 原始文件 */ + FILE *write_file = NULL; /* 目的文件 */ + uint8_t len = 0; + uint8_t osp_cfg_file_idx = 0; /* 文件个数 */ + uint32_t value = 0; + char *p_line_file_name = NULL; + char line_file_name_full[APE_CFG_FILE_NAME_LEN*2] = {0}; + char write_file_name[APE_CFG_FILE_NAME_LEN] = {0}; + char line_buf[100] = {0}; + + /* éåŽ†åŽŸå§‹ç›®å½•ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶çš„æ–‡ä»¶ååŠè·¯å¾„输出到:tmpfile */ + system("find /ramfs/cfgDat/* -name '*.dat' > tmpfile"); + + /* éåŽ†åŽŸå§‹ç›®å½•ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶çš„æ–‡ä»¶å输出到:tmpfilename */ + //system("find /ramfs/cfgDat/* -name '*.dat' | sed 's#.*/##' > tmpfilename"); + + /* 打开tmpfile内所有需è¦å¤„ç†çš„æ–‡ä»¶ */ + file = fopen("./tmpfile", "rb"); + if (NULL == file) + { + UCP_PRINT_ERROR("Open file(tmpfile) error.\r\n"); + return OSP_FILE_ERROR; + } + /* é€ä¸€è½¬åŒ–(文本文件 --> 二进制文件 */ + while(osp_cfg_file_idx < APE_CFG_FILE_NUM) + { + /* æ¯è¡Œæ˜¯åŽŸå§‹æ–‡ä»¶çš„å…¨è·¯å¾„ */ + if (NULL == fgets(line_file_name_full, sizeof(line_file_name_full), file)) + { + /* é历至最åŽç»“æŸ */ + break; + } + p_line_file_name = strrchr(line_file_name_full, '/'); + p_line_file_name++; + + len = strlen(line_file_name_full); + line_file_name_full[len - 1] = '\0'; + + read_file = fopen(line_file_name_full, "rb"); + if (NULL == read_file) + { + UCP_PRINT_ERROR("Can not open src file: %s \r\n", line_file_name_full); + fclose(file); + return OSP_FILE_ERROR; + } + + sprintf(write_file_name, "/ramfs/config/%s", p_line_file_name); + UCP_PRINT_DEBUG("dst file: %s \r\n", write_file_name); + + write_file = fopen(write_file_name, "wb+"); + if (NULL == write_file) + { + UCP_PRINT_ERROR("Can not open dst file: %s \r\n", write_file_name); + fclose(file); + fclose(read_file); + return OSP_FILE_ERROR; + } + + /* 开始转化 */ + while(fgets(line_buf, 100, read_file)) + { + sscanf(line_buf, "0x%x", &value); + fwrite(&value, sizeof(value), 1, write_file); + } + + osp_cfg_file_idx++; + + fflush(read_file); + fclose(read_file); + fflush(write_file); + fclose(write_file); + } + + fclose(file); + system("rm tmpfile"); + + return OSP_OK; +} + +/* 将二进制文件定入DDR */ +int32_t osp_bin_cfg_file_to_ddr() +{ + char *p_line_file_name = NULL; + char *p_line_file_name_begin = NULL; + char line_file_full_name[2*APE_CFG_FILE_NAME_LEN] = {0}; + char file_name[APE_CFG_FILE_NAME_LEN] = {0}; + + uint32_t len = 0; + uint32_t tmp_len = 0; + uint8_t osp_cfg_file_idx = 0; /* 文件个数 */ + uint32_t ret = 0; /* 返回值判断 */ + uint32_t file_len = 0; /* 文件长度 */ + uint32_t ddr_offset = 0; + + FILE *file = NULL; + FILE *read_file = NULL; + + /* 全路径文件å写入: tmpfile文件 */ + system("find /ramfs/config/* -name '*' > tmpfile"); + + /* é历 */ + file = fopen("./tmpfile", "rb"); + if (NULL == file) + { + UCP_PRINT_ERROR("[to_ddr]: Open file(tmpfile) error.\r\n"); + return OSP_FILE_ERROR; + } + + while(osp_cfg_file_idx < APE_CFG_FILE_NUM) + { + /* æ¯è¡Œæ˜¯åŽŸå§‹æ–‡ä»¶çš„å…¨è·¯å¾„ */ + if (NULL == fgets(line_file_full_name, sizeof(line_file_full_name), file)) + { + /* é历至最åŽç»“æŸ */ + break; + } + p_line_file_name = strrchr(line_file_full_name, '/'); + p_line_file_name++; + + len = strlen(line_file_full_name); + line_file_full_name[len - 1] = '\0'; + + p_line_file_name_begin = line_file_full_name; + memcpy(file_name, p_line_file_name, len-(p_line_file_name - p_line_file_name_begin)); + //UCP_PRINT_DEBUG("[to_ddr]: file name : %s \r\n", file_name); + + read_file = fopen(line_file_full_name, "rb"); + if (NULL == read_file) + { + UCP_PRINT_ERROR("[to_ddr]: Can not open src file: %s \r\n", line_file_full_name); + fclose(file); + return OSP_FILE_ERROR; + } + + /* 找到文件结æŸç¬¦ */ + ret = fseek(read_file, 0, SEEK_END); + if (ret) + { + UCP_PRINT_ERROR("[to_ddr]: Can not fseek: %s \r\n", line_file_full_name); + fclose(file); + fclose(read_file); + return OSP_FILE_ERROR; + } + + /* 计算文件长度 */ + file_len = (uint32_t)ftell(read_file); + UCP_PRINT_DEBUG("[to_ddr]: file: %s ,Size: %d\r\n", line_file_full_name, file_len); + + /* ä¿æŠ¤ï¼šæ–‡ä»¶å¤ªå¤šï¼Œç©ºé—´ä¸å¤Ÿ */ + if ((file_len + ddr_offset) > ARM_CFG_FILE_SIZE) + { + UCP_PRINT_ERROR("[to_ddr]: too much file, no space... \r\n"); + fclose(read_file); + fclose(file); + system("rm tmpfile"); + return OSP_ERROR; + } + + /* 回到文件头部 */ + ret = fseek(read_file, 0, SEEK_SET); + + /* 更新全局å˜é‡ */ + len = 0; + while(len < file_len) + { + tmp_len = fread((char*)(g_ptr_static_mem+ARM_CFG_INDXN+ARM_CFG_INFO_SIZE+ddr_offset+len), 1, file_len, read_file); + len += tmp_len; + } + + /* 更新全局å˜é‡ */ + g_osp_cfg_file_reg[g_osp_cfg_file_idx].len = file_len; + memcpy(g_osp_cfg_file_reg[g_osp_cfg_file_idx].name, file_name, strlen(file_name)); + g_osp_cfg_file_reg[g_osp_cfg_file_idx].phy_addr = ARM_CFG_FILE_ADDR+ddr_offset; + g_osp_cfg_file_idx++; + ddr_offset += file_len; + + osp_cfg_file_idx++; + fclose(read_file); + } + + /* æ›´æ–°é…ç½®æ–‡ä»¶å¤´ä¿¡æ¯ */ + *(uint32_t *)(g_ptr_static_mem + ARM_CFG_NUM) = g_osp_cfg_file_idx; + memcpy((g_ptr_static_mem+ARM_CFG_INDXN), g_osp_cfg_file_reg, APE_CFG_INFO_ONE*g_osp_cfg_file_idx); + *(uint32_t *)g_ptr_static_mem = ARM_READ_CFG_FILE_OK; + + fclose(file); + system("rm tmpfile"); + + return OSP_OK; +} + +int32_t osp_read_cfg_file(void) +{ + int32_t ret = -1; + + /* é…置文件åˆå§‹åŒ– */ + ret = osp_cfg_file_init(); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_cfg_file]: osp_cfg_file_init return error: %d\r\n", ret); + return ret; + } + + /* 读é…置文件 */ + ret = osp_cfg_file_to_bin(); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_cfg_file]: osp_cfg_file_to_bin return error: %d\r\n", ret); + return ret; + } + + /* 转化并写入 */ + ret = osp_bin_cfg_file_to_ddr(); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_cfg_file]: osp_bin_cfg_file_to_ddr return error: %d\r\n", ret); + return ret; + } + return OSP_OK; +} + +/***************************************************************************/ +/* ARM <---> ARM */ +int32_t osp_spe_cfg_file_init() +{ + memset(&g_spe_osp_cfg_file_reg, 0, sizeof(g_spe_osp_cfg_file_reg)); + g_spe_osp_cfg_file_idx = 0; + g_spe_static_mem_size = 0; + + g_spe_ptr_static_mem = malloc(ARM_SPE_CFG_PHY_SIZE); + if (NULL == g_spe_ptr_static_mem) + { + UCP_PRINT_ERROR("get_static_mem(ARM_STACK) error......\r\n"); + return OSP_ERROR; + } + return OSP_OK; + +#if 0 + g_spe_ptr_static_mem = get_static_mem(ARM_STACK, &g_spe_static_mem_size); + if (0 == g_spe_static_mem_size) + { + UCP_PRINT_ERROR("get_static_mem(ARM_STACK) error......\r\n"); + return OSP_ERROR; + } + + return OSP_OK; +#endif +} + +int32_t osp_read_spe_cfg_to_bin(char* in_path) +{ + FILE *file = NULL; /* éåŽ†ä¸´æ—¶æ–‡ä»¶ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶å */ + FILE *read_file = NULL; /* 原始文件 */ + FILE *write_file = NULL; /* 目的文件 */ + uint8_t len = 0; + uint8_t osp_cfg_file_idx = 0; /* 文件个数 */ + uint32_t value = 0; + char *p_line_file_name = NULL; + char line_file_name_full[APE_CFG_FILE_NAME_LEN*2] = {0}; + char write_file_name[APE_CFG_FILE_NAME_LEN] = {0}; + char line_buf[100] = {0}; + char cmd_string[APE_CFG_FILE_NAME_LEN*2] = {0}; + + if (NULL == in_path) + { + UCP_PRINT_ERROR("osp_read_spe_cfg_to_bin() in_path error......\r\n"); + return OSP_PAR_ILL; + } + + system("rm -rf /ramfs/config_bak/*.*"); + + /* éåŽ†åŽŸå§‹ç›®å½•ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶çš„æ–‡ä»¶ååŠè·¯å¾„输出到:tmpfile */ + sprintf(cmd_string, "find /%s/* -name '*.dat' > tmpfile", in_path); + system(cmd_string); + + /* éåŽ†åŽŸå§‹ç›®å½•ï¼ŒèŽ·å–æ‰€æœ‰æ–‡ä»¶çš„æ–‡ä»¶å输出到:tmpfilename */ + //system("find /ramfs/cfgDat/* -name '*.dat' | sed 's#.*/##' > tmpfilename"); + + /* 打开tmpfile内所有需è¦å¤„ç†çš„æ–‡ä»¶ */ + file = fopen("./tmpfile", "rb"); + if (NULL == file) + { + UCP_PRINT_ERROR("Open file(tmpfile) error.\r\n"); + return OSP_FILE_ERROR; + } + /* é€ä¸€è½¬åŒ–(文本文件 --> 二进制文件 */ + while(osp_cfg_file_idx < APE_CFG_FILE_NUM) + { + /* æ¯è¡Œæ˜¯åŽŸå§‹æ–‡ä»¶çš„å…¨è·¯å¾„ */ + if (NULL == fgets(line_file_name_full, sizeof(line_file_name_full), file)) + { + /* é历至最åŽç»“æŸ */ + break; + } + p_line_file_name = strrchr(line_file_name_full, '/'); + p_line_file_name++; + + len = strlen(line_file_name_full); + line_file_name_full[len - 1] = '\0'; + + read_file = fopen(line_file_name_full, "rb"); + if (NULL == read_file) + { + UCP_PRINT_ERROR("Can not open src file: %s \r\n", line_file_name_full); + fclose(file); + return OSP_FILE_ERROR; + } + + sprintf(write_file_name, "/ramfs/config_bak/%s", p_line_file_name); + //UCP_PRINT_DEBUG("dst file: %s \r\n", write_file_name); + + write_file = fopen(write_file_name, "wb+"); + if (NULL == write_file) + { + UCP_PRINT_ERROR("Can not open dst file: %s \r\n", write_file_name); + fclose(file); + fclose(read_file); + return OSP_FILE_ERROR; + } + + /* 开始转化 */ + while(fgets(line_buf, 100, read_file)) + { + sscanf(line_buf, "0x%x", &value); + fwrite(&value, sizeof(value), 1, write_file); + } + + osp_cfg_file_idx++; + + fflush(read_file); + fclose(read_file); + fflush(write_file); + fclose(write_file); + } + + fclose(file); + system("rm tmpfile"); + + return OSP_OK; +} + +int32_t osp_spe_bin_cfg_file_to_ddr() +{ + char *p_line_file_name = NULL; + char *p_line_file_name_begin = NULL; + char line_file_full_name[2*APE_CFG_FILE_NAME_LEN]={0}; + char file_name[APE_CFG_FILE_NAME_LEN] = {0}; + + uint32_t len = 0; + uint32_t tmp_len = 0; + uint8_t osp_cfg_file_idx = 0; /* 文件个数 */ + uint32_t ret = 0; /* 返回值判断 */ + uint32_t file_len = 0; /* 文件长度 */ + uint32_t ddr_offset = 0; + + FILE *file = NULL; + FILE *read_file = NULL; + + /* 全路径文件å写入: tmpfile文件 */ + system("find /ramfs/config_bak/* -name '*' > tmpfile"); + + /* é历 */ + file = fopen("./tmpfile", "rb"); + if (NULL == file) + { + UCP_PRINT_ERROR("[to_ddr]: Open file(tmpfile) error.\r\n"); + return OSP_FILE_ERROR; + } + + while(osp_cfg_file_idx < APE_CFG_FILE_NUM) + { + /* æ¯è¡Œæ˜¯åŽŸå§‹æ–‡ä»¶çš„å…¨è·¯å¾„ */ + if (NULL == fgets(line_file_full_name, sizeof(line_file_full_name), file)) + { + /* é历至最åŽç»“æŸ */ + break; + } + p_line_file_name = strrchr(line_file_full_name, '/'); + p_line_file_name++; + + len = strlen(line_file_full_name); + line_file_full_name[len - 1] = '\0'; + + p_line_file_name_begin = line_file_full_name; + memcpy(file_name, p_line_file_name, len-(p_line_file_name - p_line_file_name_begin)); + //UCP_PRINT_DEBUG("[to_ddr]: file name : %s \r\n", file_name); + + read_file = fopen(line_file_full_name, "rb"); + if (NULL == read_file) + { + UCP_PRINT_ERROR("[to_ddr]: Can not open src file: %s \r\n", line_file_full_name); + fclose(file); + return OSP_FILE_ERROR; + } + + /* 找到文件结æŸç¬¦ */ + ret = fseek(read_file, 0, SEEK_END); + if (ret) + { + UCP_PRINT_ERROR("[to_ddr]: Can not fseek: %s \r\n", line_file_full_name); + fclose(file); + fclose(read_file); + return OSP_FILE_ERROR; + } + + /* 计算文件长度 */ + file_len = (uint32_t)ftell(read_file); + UCP_PRINT_DEBUG("[to_ddr]: file: %s ,Size: %d\r\n", line_file_full_name, file_len); + + /* 回到文件头部 */ + ret = fseek(read_file, 0, SEEK_SET); + + /* 更新全局å˜é‡ */ + len = 0; + while(len < file_len) + { + tmp_len = fread((char*)(g_spe_ptr_static_mem+ARM_CFG_INDXN+ARM_SPE_CFG_INFO_SIZE+ddr_offset+len), 1, file_len, read_file); + len += tmp_len; + } + + /* 更新全局å˜é‡ */ + g_spe_osp_cfg_file_reg[g_spe_osp_cfg_file_idx].len = file_len; + memcpy(g_spe_osp_cfg_file_reg[g_spe_osp_cfg_file_idx].name, file_name, strlen(file_name)); + g_spe_osp_cfg_file_reg[g_spe_osp_cfg_file_idx].vir_addr = (uint64_t)(g_spe_ptr_static_mem + + ARM_CFG_INDXN + + ARM_SPE_CFG_INFO_SIZE + + ddr_offset); + g_spe_osp_cfg_file_idx++; + ddr_offset += file_len; + + osp_cfg_file_idx++; + fclose(read_file); + } + + /* æ›´æ–°é…ç½®æ–‡ä»¶å¤´ä¿¡æ¯ */ + *(uint32_t *)(g_spe_ptr_static_mem+ARM_CFG_NUM) = g_spe_osp_cfg_file_idx; + memcpy((g_spe_ptr_static_mem + ARM_CFG_INDXN), g_spe_osp_cfg_file_reg, ARM_SPE_CFG_INFO_ONE * g_spe_osp_cfg_file_idx); + *(uint32_t *)g_spe_ptr_static_mem = ARM_READ_CFG_FILE_OK; + + fclose(file); + system("rm tmpfile"); + + return OSP_OK; + +} + + +/********************************************************************/ +/* TestMac Interface */ +/********************************************************************/ +int32_t osp_read_spe_cfg_file(char* path) +{ + uint32_t ret = 0; + + /* æ¯æ¬¡è°ƒç”¨å‰ï¼Œæ¸…空全局å˜é‡ */ + ret = osp_spe_cfg_file_init(); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_spe_cfg_file]: osp_cfg_file_init return error: %d\r\n", ret); + return ret; + } + + /* 读文本é…置文件 */ + ret = osp_read_spe_cfg_to_bin(path); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_spe_cfg_file]: osp_read_spe_cfg_to_bin return error: %d\r\n", ret); + return ret; + } + + /* 转化 */ + ret = osp_spe_bin_cfg_file_to_ddr(); + if (OSP_OK != ret) + { + UCP_PRINT_ERROR("[osp_read_spe_cfg_file]: osp_spe_bin_cfg_file_to_ddr return error: %d\r\n", ret); + return ret; + } + return OSP_OK; +} + +int32_t osp_get_cfg_file(char* name, uint64_t *paddr, uint32_t *psize) +{ + uint16_t loop = 0; + osp_spe_cfg_file_reg *head = NULL; + if (strlen(name) > APE_CFG_FILE_NAME_LEN) + { + UCP_PRINT_ERROR("[osp_get_cfg_file]: name too long\r\n"); + return OSP_ERROR; + } + for (loop = 0; loop < APE_CFG_FILE_NUM; loop++) + { + head = g_spe_osp_cfg_file_reg + loop; + if (0 == memcmp(head->name, name, strlen(name))) + { + *paddr = head->vir_addr; + *psize = head->len; + return OSP_OK; + } + } + UCP_PRINT_DEBUG("[osp_get_cfg_file]: no this file(%s)\r\n", name); + return OSP_ERROR; +} + +#ifdef HEARTBEAT_ENABLE +#define OSP_IM2DDR_FLAG_OK (0x5a5a5a5a) +#define OSP_IM2DDR_SIZE (0x40000) /* 256k */ +#define DUMP_IM_CORE_FILE_NAME "./dump_im_core%02d_%04d%02d%02d_%02d%02d%02d" /* dump dm file */ +#define DUMP_IM_CORE_FILE_LEN (36) + +int8_t osp_get_im2ddr_to_file(uint8_t u8CoreId) +{ + int32_t ret = OSP_OK; + uint32_t u32_im2ddr_flag = 0; + char file_name[DUMP_IM_CORE_FILE_LEN]= {0}; + char *pbuf = g_ptr_static_mem; + FILE *fp = NULL; + struct tm *t; + time_t tt; + + time(&tt); + t = localtime(&tt); + + UCP_PRINT_DEBUG("[osp_get_im2ddr_to_file]: Start ... \r\n"); + + while(1) + { + u32_im2ddr_flag = *(uint32_t*)(g_ptr_static_mem); + if (OSP_IM2DDR_FLAG_OK == u32_im2ddr_flag) + { + UCP_PRINT_DEBUG("[osp_get_im2ddr_to_file]: ape write im2ddr ok\r\n"); + break; + } + } + + sprintf(file_name, DUMP_IM_CORE_FILE_NAME, u8CoreId, t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); + UCP_PRINT_DEBUG("[osp_get_im2ddr_to_file]: file_name = %s\r\n", file_name); + + fp = fopen(file_name, "wb+"); + if (fp < 0) + { + UCP_PRINT_ERROR("[osp_get_im2ddr_to_file]: file open failure \n"); + return OSP_ERROR; + } + + ret = fwrite((pbuf+4), sizeof(char), OSP_IM2DDR_SIZE, fp); + if(ret < 0) + { + UCP_PRINT_ERROR("[osp_get_im2ddr_to_file]: fwrite error ret:%d\n", ret); + fclose(fp); + return OSP_ERROR; + } + + fflush(fp); + fclose(fp); + + UCP_PRINT_DEBUG("[osp_get_im2ddr_to_file]: End ... \r\n"); + return OSP_OK; +} +#endif + + diff --git a/osp/src/ospDbg.c b/osp/src/ospDbg.c new file mode 100644 index 0000000..51c08ca --- /dev/null +++ b/osp/src/ospDbg.c @@ -0,0 +1,627 @@ +#include +#include +#include +#include + + + +#include +#include + +#define _GNU_SOURCE +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + + +#include "osp.h" + + + +#define IOSIZE (32*1024*1024) +void *g_SemDeadFunc; + +int32_t osp_signal_init(void); + +uint32_t *gOspPrintLevel = NULL; + + +/*keep DbgOut with order !*/ +void *g_DbgOutSem = 0; + +char DbgBuf[MAX_DBGINFO_LEN] = {0}; +static OSP_FUNCPTR gpfunc[DeadFuncNum] = {0}; + + + +int32_t osp_task_dbg_out_enable(uint32_t taskid) +{ + gOspTask[taskid].dbg_out_is_enable = 1; + + return 0; + +} + +int32_t osp_task_dbg_out_disable(uint32_t taskid) +{ + gOspTask[taskid].dbg_out_is_enable = 0; + return 0; +} + +int32_t osp_task_dbg_out_enable_all(void) +{ + int32_t i; + + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (gOspTask[i].Active) + { + osp_task_dbg_out_enable(i); + } + } + return OSP_OK; +} + +int32_t osp_task_dbg_out_disable_all(void) +{ + int32_t i; + + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (gOspTask[i].Active) + { + osp_task_dbg_out_disable(i); + } + } + return OSP_OK; +} + + + +int32_t osp_task_dbg_is_log(uint32_t taskid) +{ + return gOspTask[taskid].dbg_out2log_is_enable; +} +int32_t osp_task_dbg_out2log_disable_all(void) +{ + int32_t i; + + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (gOspTask[i].Active) + { + osp_task_dbg_out2log_disable(i); + } + } + return OSP_OK; + +} +int32_t osp_task_dbg_out2log_disable(uint32_t taskid) +{ + gOspTask[taskid].dbg_out2log_is_enable = 0; + + return 0; + +} +int32_t osp_task_dbg_out2log_enable_all(void) +{ + int32_t i; + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (!osp_task_is_shell(i)) + osp_task_dbg_out2log_enable(i); + } + return OSP_OK; + +} + +int32_t osp_task_dbg_out2log_enable(uint32_t taskid) +{ + gOspTask[taskid].dbg_out2log_is_enable = 1; + + return 0; +} + +int32_t osp_task_dbg_out_is_enable(uint32_t taskid) +{ + return gOspTask[taskid].dbg_out_is_enable; +} + + +void osp_local_shell_out_main(Osp_Msg_Head *pMsg) +{ + + + if (osp_local_shell_task_is_reged()) + { + osp_print(MSG_HEAD_TO_COMM(pMsg), MSG_DADA_LEN(pMsg)); + } + + osp_net_shell_out(pMsg); + + osp_free_msg(pMsg); +} + + +void osp_debug_out_set_level(int32_t level) +{ + *gOspPrintLevel = level; +} + + +OSP_STATUS osp_debug_out(int32_t level, char *fmt,...) +{ + va_list vl; + Osp_Msg_Head *pMsg; + int32_t buflen = 0; + + if (!osp_is_init_done()) + { + /*to makesure osp_debug_out can be useful anytime*/ + char *pbuf = malloc(MAX_DBGINFO_LEN); + if (NULL != pbuf) + { + + va_start(vl, fmt); + buflen = vsnprintf(pbuf + buflen, MAX_DBGINFO_LEN - buflen, fmt, vl); + va_end(vl); + printf("%s\n", pbuf); + free(pbuf); + } + return OSP_OK; + + } + + + if ((NULL == gOspPrintLevel) && (*gOspPrintLevel < level)) + return (OSP_ERROR); + if (!osp_task_dbg_out_is_enable(CURRENT_TASKID)) + return (OSP_ERROR); + + if (NULL == g_DbgOutSem) + { + return OSP_ERROR; + } + + osp_sem_take(g_DbgOutSem, -1); + if ((osp_task_dbg_is_log(CURRENT_TASKID)) && (CMD_DEBUG_LEVEL != level)) + { + char *pbuf = DbgBuf; + va_start(vl, fmt); + buflen = vsnprintf(pbuf, MAX_DBGINFO_LEN, fmt, vl); + va_end(vl); + pbuf[buflen] = '\0'; + osp_dbg_log(pbuf, buflen); + osp_sem_give(g_DbgOutSem); + return OSP_OK; + } + + pMsg = osp_alloc_msg_print_log(); + if (NULL == pMsg) + { + /*to makesure osp_debug_out can be useful anytime*/ + char *pbuf = DbgBuf; + + va_start(vl, fmt); + buflen = vsnprintf(pbuf, MAX_DBGINFO_LEN, fmt, vl); + va_end(vl); + printf("%s", pbuf); + + osp_sem_give(g_DbgOutSem); + return OSP_ERROR; + } + + va_start(vl, fmt); + buflen = vsnprintf(MSG_HEAD_TO_COMM(pMsg), MAX_DBGINFO_LEN, fmt, vl); + va_end(vl); + + + + + pMsg->DstId = localshellout; + pMsg->SrcId = CURRENT_TASKID; + + pMsg->MsgSize = buflen + MSG_HEAD_SIZE; + osp_send_msg(pMsg); + osp_sem_give(g_DbgOutSem); + + return (OSP_OK); +} +OSP_STATUS osp_debug_out_with_time(int32_t level, char *fmt,...) +{ + va_list vl; + Osp_Msg_Head *pMsg; + int32_t buflen = 0; + OSP_RTCTIME osptime; + + + + if (!osp_is_init_done()) + { + /*to makesure osp_debug_out can be useful anytime*/ + char *pbuf = malloc(MAX_DBGINFO_LEN); + if (NULL != pbuf) + { + osp_get_rtc_time(&osptime); + + buflen = snprintf((char *)pbuf, (size_t)(MAX_DBGINFO_LEN), \ + "[%04d/%02d/%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); + + va_start(vl, fmt); + buflen = vsnprintf(pbuf+buflen, MAX_DBGINFO_LEN-buflen, fmt, vl); + va_end(vl); + printf("%s", pbuf); + free(pbuf); + } + return OSP_OK; + + } + + + + if ((gOspPrintLevel) && (*gOspPrintLevel < level)) + { + return (OSP_ERROR); + } + if (!osp_task_dbg_out_is_enable(CURRENT_TASKID)) + { + return (OSP_ERROR); + } + if (NULL == g_DbgOutSem) + { + return OSP_ERROR; + } + + osp_sem_take(g_DbgOutSem, -1); + if (osp_task_dbg_is_log(CURRENT_TASKID)) + { + char *pbuf = DbgBuf; + + /*to makesure osp_debug_out_with_time can be useful anytime*/ + + + osp_get_rtc_time(&osptime); + + buflen = snprintf((char *)pbuf, (size_t)(MAX_DBGINFO_LEN), \ + "[%04d/%02d/%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); + va_start(vl, fmt); + buflen += vsnprintf(pbuf+buflen, MAX_DBGINFO_LEN, fmt, vl); + va_end(vl); + pbuf[buflen] = '\0'; + osp_dbg_log(pbuf, buflen); + + + osp_sem_give(g_DbgOutSem); + return OSP_OK; + + } + + pMsg = osp_alloc_msg_print_log(); + if (NULL == pMsg) + { + + /*to makesure osp_debug_out_with_time can be useful anytime*/ + char *pbuf = DbgBuf; + + osp_get_rtc_time(&osptime); + + buflen = snprintf((char *)pbuf, (size_t)(MAX_DBGINFO_LEN), \ + "[%04d/%02d/%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); + + va_start(vl, fmt); + buflen = vsnprintf(pbuf + buflen, MAX_DBGINFO_LEN, fmt, vl); + va_end(vl); + printf("%s",pbuf); + + + osp_sem_give(g_DbgOutSem); + return OSP_OK; + } + + + osp_get_rtc_time(&osptime); + buflen = snprintf((char *)MSG_HEAD_TO_COMM(pMsg), (size_t)(MAX_DBGINFO_LEN), \ + "[%04d/%02d/%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); + + + va_start(vl, fmt); + buflen += vsnprintf(MSG_HEAD_TO_COMM(pMsg) + buflen, MAX_DBGINFO_LEN - buflen, fmt, vl); + va_end(vl); + + + pMsg->DstId = localshellout; + pMsg->SrcId = CURRENT_TASKID; + + pMsg->MsgSize = buflen + MSG_HEAD_SIZE; + osp_send_msg(pMsg); + + osp_sem_give(g_DbgOutSem); + return (OSP_OK); +} + +OSP_STATUS osp_print(char *pbuf, uint32_t len) +{ + if ((NULL == pbuf) || (0 == len)) + { + return OSP_ERROR; + } + printf("%s", pbuf); + fflush(stdout); + + return OSP_OK; +} + +int32_t osp_shell_dis_mem(int32_t num, uint64_t addr) +{ + uint32_t *p = (uint32_t *)addr; + int32_t i; + char *pbuf; + int32_t len = 0; + + if (NULL == p) + { + return -1; + } + if ((num * 4) > MAX_DBGINFO_LEN) + { + osp_debug_out(CMD_DEBUG_LEVEL, "mux display memsize : %d\r\n", (MAX_DBGINFO_LEN / 4)); + return -1; + } + + pbuf = malloc(MAX_DBGINFO_LEN); + if (NULL == pbuf) + { + return -1; + } + + for (i = 0; i < num; i++) + { + if ((i & 0x3) == 0) + len += sprintf(pbuf + len, "%p : \t", p+i); + len += sprintf(pbuf + len, "0x%08x\t", p[i]); + + if ((i & 0x3) == 0x3) + len += sprintf(pbuf + len, "%c", '\n'); + } + pbuf[len] = '\0'; + osp_debug_out(CMD_DEBUG_LEVEL, "%s", pbuf); + free(pbuf); + + return OSP_OK; +} + + +int32_t osp_shell_set_mem(int32_t val, uint64_t addr) +{ + uint32_t *p = (uint32_t *)addr; + if (NULL == p) + return -1; + *p = val; + + return OSP_OK; +} + + + + +int32_t osp_local_shell_in_main() +{ + return OSP_OK; +} + + + + + +void osp_debug_init(void) +{ + + g_DbgOutSem = osp_get_init_mem(sizeof(lx_sem_t)); + gOspPrintLevel = (uint32_t *)osp_get_init_mem(sizeof(uint32_t)); + + + if (0 == g_ProcessId) + { + *gOspPrintLevel = DBG_DEBUG_LEVEL; + osp_semsm_create(g_DbgOutSem); + } + osp_signal_init(); + +} + +void osp_signal_action_trace(int32_t nr, siginfo_t *info, void *void_context) +{ + void *trace[100] = {0}; + int32_t trace_size = 0; + char **messages = NULL; + int32_t i; + + trace_size = backtrace(trace, 100); + messages = (char **)backtrace_symbols(trace, trace_size); + + for (i = 0; i < trace_size; ++i) + { + osp_debug_out(CMD_DEBUG_LEVEL, "[bt] %s\n", messages[i]); + } + return; +} +void osp_signal_action_suspend(int32_t nr, siginfo_t *info, void *void_context) +{ + sigset_t SigSet; + int32_t Sig; + + (void)sigemptyset(&SigSet); + (void)sigaddset(&SigSet,OSP_TASK_SIGNAL_RESUME); +// osp_debug_out(CMD_DEBUG_LEVEL, "task:%d suspend\n", CURRENT_TASKID); + TASK_STATE(CURRENT_TASKID)= TASK_SUSPEND; + (void)sigwait(&SigSet, &Sig); + TASK_STATE(CURRENT_TASKID)= TASK_RUNNING; +// osp_debug_out(CMD_DEBUG_LEVEL, "task:%d resume\n", CURRENT_TASKID); + +} +void osp_signal_action_resume(int32_t nr, siginfo_t *info, void *void_context) +{ +} +void osp_signal_action_except(int32_t nr, siginfo_t *info, void *void_context) +{ + osp_assert(0); +} + + +int32_t osp_signal_init(void) +{ + + struct sigaction act; + + act.sa_sigaction = &osp_signal_action_trace; + act.sa_flags = SA_SIGINFO; + + if (sigaction(OSP_TASK_SIGNAL_TRACE, &act, NULL) < 0) { + osp_assert(0); + } + + act.sa_sigaction = &osp_signal_action_suspend; + act.sa_flags = SA_SIGINFO; + + if (sigaction(OSP_TASK_SIGNAL_SUSPEND, &act, NULL) < 0) { + osp_assert(0); + } + act.sa_sigaction = &osp_signal_action_resume; + act.sa_flags = SA_SIGINFO; + + if (sigaction(OSP_TASK_SIGNAL_RESUME, &act, NULL) < 0) { + osp_assert(0); + } + + act.sa_sigaction = &osp_signal_action_except ; + act.sa_flags = SA_SIGINFO; + + if (sigaction(OSP_TASK_SIGNAL_SEGV, &act, NULL) < 0) { + osp_assert(0); + } + + act.sa_sigaction = &osp_signal_action_except ; + act.sa_flags = SA_SIGINFO; + + if (sigaction(OSP_TASK_SIGNAL_BUSSERR, &act, NULL) < 0) { + osp_assert(0); + } + + signal(SIGTTOU, SIG_IGN); + g_SemDeadFunc = osp_semm_create(); + + return OSP_OK; + +} +int32_t osp_trace_task(uint32_t Id) +{ + if (gOspTask[Id].PhreadId) + { + (void)pthread_kill(TASK_THREADID(Id),OSP_TASK_SIGNAL_TRACE); + } + return OSP_OK; +} +int32_t osp_suspend_task(uint32_t Id) +{ + if (gOspTask[Id].PhreadId) + { + (void)pthread_kill(TASK_THREADID(Id),OSP_TASK_SIGNAL_SUSPEND); + } + return OSP_ERROR; +} + +int32_t osp_resume_task(uint32_t Id) +{ + if (gOspTask[Id].PhreadId) + { + (void)pthread_kill(TASK_THREADID(Id),OSP_TASK_SIGNAL_RESUME); + } + return OSP_ERROR; +} + +void osp_set_dbg_cmdlev(void) +{ + osp_debug_out_set_level(CMD_DEBUG_LEVEL); +} + +void osp_set_dbg_errlev(void) +{ + osp_debug_out_set_level(ERR_DEBUG_LEVEL); +} + +void osp_set_dbg_crunlev(void) +{ + osp_debug_out_set_level(RUN_DEBUG_LEVEL); +} + +void osp_set_dbg_cwarlev(void) +{ + osp_debug_out_set_level(WARNING_DEBUG_LEVEL); +} + +int32_t osp_reg_dead_func(OSP_FUNCPTR pfunc) +{ + + osp_sem_take(g_SemDeadFunc, -1); + { + static int32_t num = 0; + + if ((NULL == pfunc)||(num == (DeadFuncNum-1))) + { + osp_sem_give(g_SemDeadFunc); + return OSP_ERROR; + } + + gpfunc[num++] = pfunc; + osp_sem_give(g_SemDeadFunc); + return 0 ; + } + +} +void osp_run_dead_func(void) +{ + int32_t i=0; + for (i = 0; i < DeadFuncNum; i++) + { + if (gpfunc[i]) + gpfunc[i](); + else + break; + } + osp_debug_out_with_time(CMD_DEBUG_LEVEL,"%d DeadFunc called!\r\n", i); +} +void osp_assert(int32_t val) +{ + + if (val == 0) + { + osp_run_dead_func(); + /*to make sure deadmsg has been recorded! anyway this shuld to change in reliable way,todoa*/ + usleep(100); + + + osp_trace_task(CURRENT_TASKID); + osp_fflush_all_logfile(); + osp_suspend_task(CURRENT_TASKID); + while (1); + } + +} + + diff --git a/osp/src/ospDelay.c b/osp/src/ospDelay.c new file mode 100644 index 0000000..d62c4c9 --- /dev/null +++ b/osp/src/ospDelay.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +#include "osp.h" +//////// +/* + *osp_delay - delay function + *input: + * delay (ms) + *return + * OSP_OK + */ +#if 0 +OSP_STATUS osp_delay(U32 delay) +{ + + struct timespec reqt; + struct timespec remt; + + reqt.tv_sec=delay/1000; + reqt.tv_nsec =(delay%1000) *1000000;/*1ms*/ + nanosleep(&reqt,&remt); + + return (OSP_OK); +} +#endif + +OSP_STATUS osp_delay(uint32_t delay) +{ + + struct timespec reqt; + struct timespec remt; + + reqt.tv_sec = delay / 1000000; + reqt.tv_nsec = (delay % 1000000) * 1000; /*1us*/ + nanosleep(&reqt, &remt); + + return (OSP_OK); +} + +void osp_delay_while(uint64_t ns) +{ + uint64_t org; + uint64_t ticks; + + org = osp_get_cycel(); + /* 50MHz for Cycel */ + ticks = (ns / 20); + + while (osp_get_cycel() <= (org + ticks)); + +} + + + diff --git a/osp/src/ospDiag.c b/osp/src/ospDiag.c new file mode 100644 index 0000000..ef6e0ee --- /dev/null +++ b/osp/src/ospDiag.c @@ -0,0 +1,163 @@ + +#include +#include +#include +#include +#include +#include "osp.h" + + + +uint64_t *g_DiagCntBase = 0; +#define OSP_DIAGCNT_LEN (10*1024) + +static OSP_TASKCB *TaskCBBase; + + +/************************************************************************** + + +**************************************************************************/ + +int32_t osp_diag_cnt_init(void) +{ + g_DiagCntBase = (uint64_t *)osp_get_init_mem(OSP_MAX_TASK * sizeof(uint64_t) * CNT_NUM_PER_TASK); + memset(g_DiagCntBase, 0, OSP_MAX_TASK * sizeof(uint64_t) * CNT_NUM_PER_TASK); + TaskCBBase = osp_get_taskcb_base(); + return OSP_OK; +} + +OSP_STATUS osp_diag_cnt_add(uint32_t TaskId, uint32_t CntId) +{ + TASK_CNT_ADD(TaskId, CntId); + return OSP_OK; +} + +OSP_STATUS osp_diag_cnt_set(uint32_t TaskId, uint32_t CntId, uint64_t Val) +{ + TASK_CNT_SET(TaskId, CntId,Val); + return OSP_OK; + +} +uint64_t osp_diag_cnt_get(uint32_t TaskId, uint32_t CntId) +{ + return TASK_CNT_GET(TaskId, CntId); +} + +OSP_STATUS osp_show_tsk_diag_cnt(uint32_t TaskId) +{ + char *pstr = NULL; + uint32_t len = OSP_DIAGCNT_LEN; + uint32_t tmplen = 0; +// OSP_STATUS ret; + + if (!TaskCBBase[TaskId].Active) + { + osp_debug_out(CMD_DEBUG_LEVEL, "Task:%d is not active\n", TaskId); + return OSP_ERROR; + } + + pstr = malloc(len); + osp_assert(NULL != pstr); + + tmplen = (uint32_t)sprintf(pstr, "%-16s%-16s%-16s\r\n", "OspTaskId", "OspCntIdx", "OspCntValue"); + tmplen += osp_diag_cnt_str(TaskId, pstr + tmplen, len - tmplen); + + + pstr[tmplen] = '\0'; + osp_debug_out(CMD_DEBUG_LEVEL, "%s", pstr); + free(pstr); + + return OSP_OK; +} +OSP_STATUS osp_show_all_diag_cnt(void) +{ + char *pstr = NULL; + uint32_t len = OSP_DIAGCNT_LEN; + uint32_t tmplen = 0; +// U32 outlen = 0; +// OSP_STATUS ret; + uint32_t TaskId; + + + + pstr = malloc(len); + osp_assert(NULL != pstr); + + tmplen = (uint32_t)sprintf(pstr, "%-16s%-16s%-16s\r\n", "OspTaskId", "OspCntIdx", "OspCntValue"); + for (TaskId = 0; TaskId < OSP_MAX_TASK; TaskId++) + { + if (!TaskCBBase[TaskId].Active) + { + continue; + } + tmplen += osp_diag_cnt_str(TaskId, pstr + tmplen, len - tmplen); + } + + + pstr[tmplen] = '\0'; + osp_debug_out(CMD_DEBUG_LEVEL, "%s", pstr); + free(pstr); + return OSP_OK; +} + + +uint32_t osp_diag_cnt_str(uint32_t TaskId, char *pstr, uint32_t inlen) +{ + uint32_t CntId = 0; + uint32_t len = 0; + uint64_t CntVal; + + if ((!TaskCBBase[TaskId].Active) || (NULL == pstr) || (0 == inlen)) + { + osp_assert(0); + } + + for (CntId = 0; CntId < CNT_NUM_PER_TASK; CntId++) + { + CntVal = TASK_CNT_GET(TaskId,CntId); + if (0 == CntVal) + { + continue; + } + if (inlen-len < 64) + { + osp_assert(0); + } + len += sprintf(pstr + len,"%-16d%-16d%-16lu\r\n", TaskId, CntId, CntVal); + + } + return len; +} + + +/************************************************************************** + + +**************************************************************************/ + +int32_t osp_diag_init(void) +{ + int32_t ret ; + ret = osp_diag_cnt_init(); + if (OSP_OK != ret) + { + return ret; + } + + return OSP_OK; +} +/************************************************************************** + +**************************************************************************/ + +int32_t osp_show_que_status(void) +{ + return OSP_OK; +} + + + + + + diff --git a/osp/src/ospDump.c b/osp/src/ospDump.c new file mode 100644 index 0000000..c36c64a --- /dev/null +++ b/osp/src/ospDump.c @@ -0,0 +1,713 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "osp.h" +#include "ospSoftQue.h" +#include "ospLog.h" +#include "ucp_printf.h" +#include "ospDump.h" +#include "ucp_handshake.h" + +#define SPU_DM_SIZE (0x200000) /* 2M */ +#define APE_CORE_ID_0 (0) +#define APE_CORE_ID_1 (1) +#define APE_CORE_ID_2 (2) +#define APE_CORE_ID_3 (3) +#define APE_CORE_ID_4 (4) +#define APE_CORE_ID_5 (5) +#define APE_CORE_ID_6 (6) +#define APE_CORE_ID_7 (7) +#define APC_CORE_ID_0 (0) +#define APC_CORE_ID_1 (1) +#define APC_CORE_ID_2 (2) +#define APC_CORE_ID_3 (3) + + +#define DUMP_DM_CORE_FILE_NAME "./dump_dm_core%02d_%04d%02d%02d_%02d%02d%02d" /* dump dm file */ +#define DUMP_DM_CORE_FILE_LEN (36) + + +void *gp_static_sm_mem = NULL; +void *gp_static_dm_mem = NULL; +void *gp_static_ecs_sm_mem = NULL; +void *gp_static_pet_sm_mem = NULL; +void *gp_static_ape_phy_mem = NULL; +void *gp_static_ape_text = NULL; +void *gp_static_arm_ape_msg = NULL; +void *gp_static_ape_log = NULL; +void *gp_static_arm_stack = NULL; + +uint64_t gp_static_sm_mem_size = 0; +uint64_t gp_static_dm_mem_size = 0; +uint64_t gp_static_ecs_sm_mem_size = 0; +uint64_t gp_static_pet_sm_mem_size = 0; +uint64_t gp_static_ape_phy_mem_size = 0; +uint64_t gp_static_ape_text_mem_size = 0; +uint64_t gp_static_arm_ape_msg_size = 0; +uint64_t gp_static_ape_log_size = 0; +uint64_t gp_static_arm_stack_size = 0; + +char *gp_dump_buf; + +extern uint8_t g_ucIsEcho; + +void osp_dump_init(void) +{ + + gp_static_sm_mem = get_static_mem(SHARE_MEM, &gp_static_sm_mem_size); + if (0 == gp_static_sm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(SHARE_MEM) error......\r\n"); + return ; + } + + gp_static_dm_mem = get_static_mem(APE_DM, &gp_static_dm_mem_size); + if (0 == gp_static_dm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(APE_DM) error......\r\n"); + return ; + } + + gp_static_ecs_sm_mem = get_static_mem(ECS_SM, &gp_static_ecs_sm_mem_size); + if (0 == gp_static_ecs_sm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(ECS_SM) error......\r\n"); + return ; + } + + gp_static_pet_sm_mem = get_static_mem(PET_SM, &gp_static_pet_sm_mem_size); + if (0 == gp_static_pet_sm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(PET_SM) error......\r\n"); + return ; + } + + gp_static_ape_phy_mem = get_static_mem(APE_PHY, &gp_static_ape_phy_mem_size); + if (0 == gp_static_ape_phy_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(APE_PHY) error......\r\n"); + return ; + } + + gp_static_ape_text = get_static_mem(APE_TEXT, &gp_static_ape_text_mem_size); + if (0 == gp_static_ape_text_mem_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(APE_TEXT) error......\r\n"); + return ; + } + + gp_static_arm_ape_msg = get_static_mem(ARM_APE_MSG, &gp_static_arm_ape_msg_size); + if (0 == gp_static_arm_ape_msg_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(ARM_APE_MSG) error......\r\n"); + return ; + } + + gp_static_ape_log = get_static_mem(APE_LOG, &gp_static_ape_log_size); + if (0 == gp_static_ape_log_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(APE_LOG) error......\r\n"); + return ; + } + + gp_static_arm_stack = get_static_mem(ARM_STACK, &gp_static_arm_stack_size); + if (0 == gp_static_arm_stack_size) + { + UCP_PRINT_ERROR("osp_dump_init get_static_mem(ARM_STACK) error......\r\n"); + return ; + } + + return; +} +#if 0 +void osp_dump_sm(char *pName, uint32_t ulLen) +{ + OSP_STATUS ret = OSP_OK; + + if(ulLen > gp_static_sm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_sm ulLen:%u > gp_static_sm_mem_size:%ld", ulLen, gp_static_sm_mem_size); + return ; + } + + if(NULL == pName) + { + UCP_PRINT_ERROR("osp_dump_sm pName is null\r\n"); + return ; + } + + ret = osp_dump_proc(pName, SHARE_MEM , ulLen); + if(OSP_OK != ret) + { + UCP_PRINT_ERROR("osp_dump_sm proc error\r\n"); + return; + } + + return; +} + +void osp_dump_dm(char *pName, uint32_t ulLen) +{ + OSP_STATUS ret = OSP_OK; + + if(ulLen > gp_static_dm_mem_size) + { + UCP_PRINT_ERROR("osp_dump_dm ulLen:%u > gp_static_dm_mem_size:%ld\r\n", ulLen, gp_static_sm_mem_size); + return ; + } + + if(NULL == pName) + { + UCP_PRINT_ERROR("osp_dump_dm pName is null\r\n"); + return ; + } + + ret = osp_dump_proc(pName, APE_DM , ulLen); + if(OSP_OK != ret) + { + UCP_PRINT_ERROR("osp_dump_dm proc error\r\n"); + return; + } + + return; +} +#endif + +#ifdef HEARTBEAT_ENABLE +int8_t osp_dump_dm_ape_by_coreid(uint8_t coreid) +{ + int32_t ret = OSP_OK; + char *pbuf = gp_static_dm_mem; + char file_name[DUMP_DM_CORE_FILE_LEN]= {0}; + static FILE *fp = NULL; + struct tm *t; + time_t tt; + uint64_t u64_start_offset = 0; + + time(&tt); + t = localtime(&tt); + + switch (coreid) + { + case APE_CORE_ID_0: + case APE_CORE_ID_1: + { + u64_start_offset = 0; + ret = OSP_OK; + break; + } + case APE_CORE_ID_2: + case APE_CORE_ID_3: + { + u64_start_offset = SPU_DM_SIZE; + ret = OSP_OK; + break; + } + case APE_CORE_ID_4: + case APE_CORE_ID_5: + { + u64_start_offset = SPU_DM_SIZE*2; + ret = OSP_OK; + break; + } + case APE_CORE_ID_6: + case APE_CORE_ID_7: + { + u64_start_offset = SPU_DM_SIZE*3; + ret = OSP_OK; + break; + } + default: + { + ret = OSP_ERROR; + UCP_PRINT_ERROR("osp_dump_dm_ape_by_coreid: input coreid(%d) error\r\n", coreid); + break; + } + } + + if (OSP_ERROR == ret) + { + return ret; + } + + sprintf(file_name, DUMP_DM_CORE_FILE_NAME, coreid, t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); + UCP_PRINT_ERROR("osp_dump_dm_ape_by_coreid: file_name = %s\r\n", file_name); + + fp = fopen(file_name, "wb+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_dump_dm_ape_by_coreid: file open failure \n"); + return OSP_ERROR; + } + + ret = fwrite((pbuf+u64_start_offset), sizeof(char), SPU_DM_SIZE, fp); + if(ret < 0) + { + UCP_PRINT_ERROR("osp_dump_dm_ape_by_coreid: fwrite error ret:%d\n", ret); + fclose(fp); + return OSP_ERROR; + } + + fflush(fp); + fclose(fp); + + return OSP_OK; +} + + +int8_t osp_dump_dm_rfm_by_coreid(uint8_t coreid) +{ + return OSP_OK; +} + +int8_t osp_dump_dm_by_coreid(uint8_t coreid) +{ + /* ???? */ + if (coreid > MAX_NUM_SPU) + { + UCP_PRINT_ERROR("osp_dump_dm_by_coreid: input parameter error\r\n"); + return OSP_ERROR; + } + + if (coreid <= APE_CORE_ID_7) + { + return osp_dump_dm_ape_by_coreid(coreid); + } + else if (coreid <= MAX_NUM_SPU) + { + return osp_dump_dm_rfm_by_coreid(coreid); + } + return OSP_ERROR; +} +#endif + + +OSP_STATUS osp_dump_len_is_ok(module_type_e module, uint64_t ulLen) +{ + uint64_t ulModuleLen = 0; + + switch(module) + { + case SHARE_MEM: + ulModuleLen = gp_static_sm_mem_size; + break; + case APE_DM: + ulModuleLen = gp_static_dm_mem_size; + break; + case ECS_SM: + ulModuleLen = gp_static_ecs_sm_mem_size; + break; + case PET_SM: + ulModuleLen = gp_static_pet_sm_mem_size; + break; + case APE_PHY: + ulModuleLen = gp_static_ape_phy_mem_size; + break; + case APE_TEXT: + ulModuleLen = gp_static_ape_text_mem_size; + break; + case ARM_APE_MSG: + ulModuleLen = gp_static_arm_ape_msg_size; + break; + case APE_LOG: + ulModuleLen = gp_static_ape_log_size; + break; + case ARM_STACK: + ulModuleLen = gp_static_arm_stack_size; + break; + default: + break; + + } + + if(ulLen > ulModuleLen) + { + UCP_PRINT_ERROR("osp_dump_len is error ulLen:%ld\n", ulLen); + return OSP_ERROR; + } + + return OSP_OK; +} + +OSP_STATUS osp_dump_apc_len_is_ok(uint8_t ucApcId, uint64_t phy_addr,uint64_t ulLen) +{ + uint64_t u64_start_offset = 0; + uint64_t virt_addr = 0; + int32_t ret = OSP_OK; + uint32_t ulTmp = 0; + + switch (ucApcId) + { + case APC_CORE_ID_0: + { + u64_start_offset = 0; + ret = OSP_OK; + break; + } + case APC_CORE_ID_1: + { + u64_start_offset = SPU_DM_SIZE; + ret = OSP_OK; + break; + } + case APC_CORE_ID_2: + { + u64_start_offset = SPU_DM_SIZE*2; + ret = OSP_OK; + break; + } + case APC_CORE_ID_3: + { + u64_start_offset = SPU_DM_SIZE*3; + ret = OSP_OK; + break; + } + default: + { + ret = OSP_ERROR; + UCP_PRINT_ERROR("osp_dump_apc_len_is_ok: ucApcId:%u error\r\n", ucApcId); + break; + } + } + + if (OSP_ERROR == ret) + { + return ret; + } + + ret = osp_phy_to_virt( APE_DM, phy_addr, &virt_addr); + if(ret != OSP_OK) + { + UCP_PRINT_ERROR("osp_dump_apc_len APE_DM phy_addr:0x%lx virt_addr:0x%lx\n", phy_addr, virt_addr); + return OSP_ERROR; + } + + ulTmp = virt_addr - (uint64_t)(gp_static_dm_mem + u64_start_offset); + if(ulTmp < ulLen) + { + UCP_PRINT_ERROR("osp_dump_apc_len APE_DM ulTmp:%u\n", ulTmp); + return OSP_ERROR; + } + + return OSP_OK; +} + + +/*0x9400000 + apcid*0x200000 +(phy_addr - 0x200000)*/ +int8_t osp_dump_dm_by_apcid(char *pName, uint8_t ucApcId, uint64_t phy_addr, uint32_t ulLen) +{ + int32_t ret = OSP_OK; + static FILE *fp = NULL; + uint64_t virt_addr = 0; + uint64_t tmp_phy_addr = 0; + + if(NULL == pName) + { + UCP_PRINT_ERROR("osp_dump_dm_by_apcid: pName is NULL\r\n"); + return OSP_ERROR; + } + + if(ulLen > SPU_DM_SIZE) + { + UCP_PRINT_ERROR("osp_dump_dm_by_apcid: ulLen:%u error\r\n", ulLen); + return OSP_ERROR; + } + + tmp_phy_addr = APE_DM_BASE_PHY_ADDR + ucApcId*APC_DM_LEN +(phy_addr - APC_DM_LEN); + + ret = osp_phy_to_virt( APE_DM, tmp_phy_addr, &virt_addr); + if(ret != OSP_OK) + { + UCP_PRINT_ERROR("osp_dump_proc APE_DM phy_addr:0x%lx virt_addr:0x%lx\n", phy_addr, virt_addr); + return OSP_ERROR; + } + + fp = fopen(pName, "wb+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_dump_dm_by_apcid: file open failure \n"); + return OSP_ERROR; + } + + ret = fwrite((char *)virt_addr, sizeof(char), ulLen, fp); + if(ret < 0) + { + UCP_PRINT_ERROR("osp_dump_dm_by_apcid: fwrite error ret:%d\n", ret); + fclose(fp); + return OSP_ERROR; + } + + fflush(fp); + fclose(fp); + + return OSP_OK; +} + +int8_t osp_show_dm_by_apcid(uint8_t ucApcId, uint64_t phy_addr, uint32_t ulLen) +{ + int32_t ret = OSP_OK; + uint64_t virt_addr = 0; + uint64_t tmp_phy_addr = 0; + + if(ulLen > SPU_DM_SIZE) + { + UCP_PRINT_ERROR("osp_show_dm_by_apcid: ulLen:%u error\r\n", ulLen); + return OSP_ERROR; + } + + tmp_phy_addr = APE_DM_BASE_PHY_ADDR + ucApcId*APC_DM_LEN +(phy_addr - APC_DM_LEN); + + ret = osp_phy_to_virt( APE_DM, tmp_phy_addr, &virt_addr); + if(ret != OSP_OK) + { + UCP_PRINT_ERROR("osp_dump_proc phy_addr:0x%lx virt_addr:0x%lx\n", phy_addr, virt_addr); + return OSP_ERROR; + } + + osp_dump_phy_mem(tmp_phy_addr, ulLen, phy_addr); + //osp_mem_print((char *)&temp_vir_addr, ulLen); + + return OSP_OK; +} + + +OSP_STATUS osp_dump_proc(char *pName, module_type_e module, uint64_t phy_addr, uint64_t ulLen) +{ + int32_t ret = 0; + uint64_t virt_addr = 0; + static FILE *fp = NULL; + + if ((NULL == pName) || (0 == ulLen) || (0 == phy_addr)) + { + UCP_PRINT_ERROR("osp_dump_proc pName:%s ulLen:%ld phy_addr:%ld\n", pName, ulLen, phy_addr); + return OSP_ERROR; + } + + ret = osp_dump_len_is_ok(module, ulLen); + if(ret != OSP_OK) + { + UCP_PRINT_ERROR("osp_dump_proc ulLen:%ld\n", ulLen); + return OSP_ERROR; + } + + ret = osp_phy_to_virt( module, phy_addr, &virt_addr); + if(ret != OSP_OK) + { + UCP_PRINT_ERROR("osp_dump_proc module:%d phy_addr:0x%lx virt_addr:0x%lx\n",module, phy_addr, virt_addr); + return OSP_ERROR; + } + + fp = fopen(pName, "wb+"); + if (fp < 0) + { + UCP_PRINT_ERROR(" file open failure \n"); + return OSP_ERROR; + } + + ret = fwrite((char *)virt_addr, sizeof(char), ulLen, fp); + if(ret < 0) + { + UCP_PRINT_ERROR("fwrite error ret:%d\n", ret); + fclose(fp); + return OSP_ERROR; + } + + fflush(fp); + fclose(fp); + + return OSP_OK; +} + +int32_t osp_dump_phy_mem(uint64_t phy_addr, uint32_t len, uint64_t tmp_addr) +{ + uint64_t addr_temp = OSP_ROUND_DOWN(phy_addr,OSP_DISPLAY_PAGE_LEN); + uint64_t addr_offset = phy_addr - addr_temp; + uint32_t *mem_vir_addr,*temp_vir_addr; + uint32_t i,j; + int32_t display_fd = 1; + + if(OSP_DISPLAY_MAX_LEN < len) + { + return OSP_ERROR; + } + + //printf("phy_addr=%#llx, mmap_addr=%#llx,virt_addr=%#llx,len = %d:\n",phy_addr,addr_temp,len); + //printf("phy_addr=%#lx, mmap_addr=%#lx,len = %d\n",phy_addr,addr_temp,len); + + + display_fd = open("/dev/mem", O_RDWR|O_SYNC); + if(display_fd < 0) + { + printf("open /dev/mem error\n"); + return OSP_ERROR; + } + + + mem_vir_addr = (uint32_t*)mmap(NULL, (OSP_DISPLAY_PAGE_LEN << 1), PROT_READ|PROT_WRITE, MAP_SHARED, display_fd, addr_temp); + if((uint32_t*)OSP_ERROR == mem_vir_addr) + { + printf("mmap error!! return value is %ld\n",(uint64_t)mem_vir_addr); + return OSP_ERROR; + } + + temp_vir_addr = mem_vir_addr + (addr_offset >> 2); + + for(i = 0; i < len; i += 16) + {//²»×ã16×Ö½ÚÒ²ÏÔʾ4¸ö×Ö + printf("0x%016lx: ",tmp_addr + i); + + for(j = 0; j < 4; j++) + { + printf("0x%08x ",*temp_vir_addr++); + } + + printf("\n"); + } + + munmap((void*)mem_vir_addr,(OSP_DISPLAY_PAGE_LEN << 1)); + close(display_fd); + + return OSP_OK; + +} + + +void osp_dump_dm_test(uint8_t ucApcId, uint64_t ullAddr, uint32_t ullen) +{ + char abuf[4096] = {0}; + uint32_t i = 0; + uint64_t u64_start_offset = 0; + char filename[36] = {0}; + + for(i =0; i 0x200000) + { + return; + } + + for (i = 0; i < ulLen; i++) + { + if ((i & 0x7) == 0) + { + printf("%p: ", addr+i); + } + + printf("%02x ", addr[i]); + + if ((i & 0x7) == 0x7) + { + printf("\n"); + } + } + + printf("\n"); + + return; +} + + +void osp_dump_dis_mem(char* addr, uint32_t ulLen) +{ + char *p = NULL; + uint32_t i = 0; + uint32_t len = 0; + + if (NULL == addr) + { + return; + } + + if (ulLen > 0x100000) + { + return; + } + + p = addr; + + for (i = 0; i < ulLen; i++) + { + if ((i & 0x7) == 0) + { + len += sprintf(gp_dump_buf + len, "%p : ", p+i); + } + len += sprintf(gp_dump_buf + len, "%02x ", p[i]); + + if ((i & 0x7) == 0x7) + len += sprintf(gp_dump_buf + len, "%c", '\n'); + } + + gp_dump_buf[len] = '\0'; + + return; +} + + + + + diff --git a/osp/src/ospFile.c b/osp/src/ospFile.c new file mode 100644 index 0000000..bb434e6 --- /dev/null +++ b/osp/src/ospFile.c @@ -0,0 +1,146 @@ +#include +#include +#include + +#include "ospTypes.h" +#include "ospFile.h" + + +int32_t osp_file_init(file_t *file) +{ + pthread_mutex_init(&file->mutex, NULL); + return 1; +} + +int32_t osp_file_read_tmp(char *buffer, int32_t size, file_t *file) +{ + int32_t fd = open(file->filepath, O_RDONLY); + if (fd < 0) + { + printf(" file open failure \n"); + return -1; + } + + int32_t result = read(fd, buffer, size); + if ((result > size) || (result < -1)) + { + printf(" file read failure \n"); + close(fd); + return -1; + } + + close(fd); + return result; +} + +int32_t osp_file_read(char *buffer, int32_t size, file_t *file) +{ + //pthread_mutex_lock(&file->mutex); + int32_t result = osp_file_read_tmp(buffer, size, file); + //pthread_mutex_unlock(&file->mutex); + return result; +} + +int32_t osp_file_write_tmp(file_t *file, char *buffer, int32_t size) +{ + int32_t fd = open(file->filepath, file->flag, file->mode); + if (fd < 0) + { + printf(" file open failure \n"); + return -1; + } + + int32_t result = write(fd, buffer, size); + if (result < -1) + { + printf(" file write failure \n"); + close(fd); + return -1; + } + + fsync(fd); + close(fd); + return result; +} + +int32_t osp_file_write(file_t *file, char *buffer, int32_t size) +{ + pthread_mutex_lock(&file->mutex); + int32_t result = osp_file_write_tmp(file, buffer, size); + pthread_mutex_unlock(&file->mutex); + return result; +} + +int32_t osp_mkdirs(char *path, mode_t mode) +{ + char str[512]; + strncpy(str, path, 512); + int32_t len = strlen(str); + int32_t i; + struct stat s; + + + for (i = 0; i < len; i++) + { + if (str[i] == '/') + { + str[i] = '\0'; + if (access(str, 0) != 0) + { + mkdir(str, mode); + } + str[i] = '/'; + } + } + if (len > 0 && access(str,0) != 0) + { + mkdir(str, mode); + } + stat(path, &s); + if (S_ISDIR(s.st_mode)) + return 0; + return 0; +} + +int32_t osp_file_is_exist(char *file) +{ + int32_t ret; + + ret = access(file, F_OK); + if (0 == ret) + { + ret = 1; + } + else + { + ret = 0; + } + + return ret; +} +int32_t osp_get_file_path(char *name, char *path) +{ + int32_t i; + int32_t len; + + if ((NULL == name) || (NULL == path)) + { + return -1; + } + + len = strlen(name); + + for (i = len-1; i >= 0; i--) + { + if (name[i] == '/') + { + break; + } + } + + memcpy(path, name, i); + + return 0; + +} + diff --git a/osp/src/ospHeap.c b/osp/src/ospHeap.c new file mode 100644 index 0000000..2451c22 --- /dev/null +++ b/osp/src/ospHeap.c @@ -0,0 +1,655 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "osp.h" + +#include "ucp_printf.h" + + +typedef struct DoubleLinkNode +{ + uint64_t len; + int32_t IsBusy; + int32_t rsv; + struct DoubleLinkNode *prev; + struct DoubleLinkNode *next; +}MemNode; +#define OSP_NODE_SIZE sizeof(MemNode) +#define OSP_HEAP_BUF_TO_HEAD(pbuf) (MemNode *)((uint64_t)pbuf - OSP_NODE_SIZE) + +typedef struct heap_mem +{ + MemNode *root; + MemNode *cur_avaliable; + lx_sem_t *heap_mutex; + uint64_t virt_base; + uint64_t phy_base; + char name[24]; +}Heap_Mem_CB; + +typedef struct static_mem +{ + uint64_t virt_base; + uint64_t phy_base; + uint64_t len; + uint32_t is_mapped; //ÊÇ·ñÒѾ­Ó³Éä 0£ºÎ´Ó³É䣻1£ºÒÑÓ³Éä + uint32_t rsv; +}Static_Mem_CB; + + +int32_t g_dev_mem_fd = -1; +int32_t g_dev_mem_noncache_fd = -1; + +Static_Mem_CB g_static_mem_cb[MEM_RESERVE] = +{ + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, + { + .is_mapped = 0, + }, +}; + +MemNode *osp_search_node(MemNode *head, uint32_t size) +{ + MemNode *node; + node = head; + + while (node) + { + if ((node->len > (size + OSP_NODE_SIZE)) && (!node->IsBusy)) + return node; + node = node->next; + } + return OSP_OK; +} + +MemNode *osp_split_node(MemNode *node, uint32_t size) +{ + MemNode *new; + MemNode *next; + uint32_t len; + + if (node->len-size < OSP_NODE_SIZE) + return node; + + len = node->len; + + node->len = size; + new = (MemNode *)((uint64_t)node + node->len + OSP_NODE_SIZE); + + new->len = len - size - OSP_NODE_SIZE; + new->IsBusy = 0; + + new->next = node->next; + next = new->next; + if (next) + next->prev = new; + new->prev = node; + node->next = new; + return new; +} +int32_t osp_set_node_busy(MemNode *node) +{ + node->IsBusy = 1; + return OSP_OK; +} +int32_t osp_clear_node_busy(MemNode *node) +{ + node->IsBusy = 0; + return OSP_OK; +} + +MemNode *osp_get_next_node(MemNode *node) +{ + return node->next; +} + +MemNode *osp_get_pre_node(MemNode *node) +{ + return node->prev; +} + + +int32_t osp_node_need_merge(MemNode *node, MemNode *nextnode) +{ + if ((0 == node->IsBusy)&&(0 == nextnode->IsBusy)) + return 1; + return 0; +} + +int32_t osp_node_merge(Heap_Mem_CB *heap_mem, MemNode *node, MemNode *nextnode) +{ + MemNode *nextnext; + + nextnext = nextnode->next; + + node->next = nextnext; + if (nextnext) + nextnext->prev = node; + + node->len += nextnode->len + OSP_NODE_SIZE; + + if(nextnode == heap_mem->cur_avaliable) + { + heap_mem->cur_avaliable = node; + } + + return OSP_OK; + +} + +static int32_t get_base_and_len(module_type_e module, uint64_t *base_addr,uint64_t *len) +{ + int32_t ret = OSP_OK; + + switch(module) + { + case ARM_STACK: + { + *base_addr = ARM_STACK_BASE_PHY_ADDR; + *len = LEN_OF_ARM_STACK; + break; + } + case APE_DM: + { + *base_addr = APE_DM_BASE_PHY_ADDR; + *len = LEN_OF_APE_DM; + break; + } + case APE_PHY: + { + *base_addr = APE_PHY_BASE_PHY_ADDR; + *len = LEN_OF_APE_PHY; + break; + } + case APE_TEXT: + { + *base_addr = APE_TEXT_BASE_PHY_ADDR; + *len = LEN_OF_APE_TEXT; + break; + } + case ARM_APE_MSG: + { + *base_addr = ARM_APE_MSG_BASE_PHY_ADDR; + *len = LEN_OF_ARM_APE_MSG; + break; + } + /*case ARM_LOG: + { + *base_addr = ARM_LOG_BASE_PHY_ADDR; + *len = LEN_OF_ARM_LOG; + break; + }*/ + case APE_LOG: + { + *base_addr = APE_LOG_BASE_PHY_ADDR; + *len = LEN_OF_APE_LOG; + break; + } + case SHARE_MEM: + { + *base_addr = SHARE_MEM_BASE_PHY_ADDR; + *len = LEN_OF_SHARE_MEM; + break; + } + case ECS_SM: + { + *base_addr = ECS_SM_DM_BASE_PHY_ADDR; + *len = LEN_OF_ECS_SM_DM; + break; + } + case PET_SM: + { + *base_addr = PET_SM_DM_BASE_PHY_ADDR; + *len = LEN_OF_PET_SM_DM; + break; + } + default: + { + *base_addr = 0; + *len = 0; + ret = OSP_ERROR; + break; + } + } + + return ret; +} + +void *get_static_mem(module_type_e module, uint64_t *len) +{ + void *mem_vir_addr; + uint64_t addr_offset = 0,mem_len = 0; + int32_t mem_temp_fd = -1; + + if(1 == g_static_mem_cb[module].is_mapped) //ÒÑÓ³Éä + { + *len = g_static_mem_cb[module].len; + return (void *)g_static_mem_cb[module].virt_base; + } + + +//#ifdef CACHE_ENABLE + switch(module) + { + case ARM_STACK: +#ifdef CACHE_ENABLE + case ARM_APE_MSG: +#endif + { + if(OSP_ERROR == g_dev_mem_fd) //打开mem设备 + { + g_dev_mem_fd = open("/dev/ucp_sm_ddr_cache", O_RDWR|O_SYNC); + } + + if(g_dev_mem_fd < 0) + { + UCP_PRINT_ERROR("open file failed,ucp_sm_ddr_cache < 0."); + return (void *)OSP_ERROR; + } + mem_temp_fd = g_dev_mem_fd; + break; + } +#ifndef CACHE_ENABLE + case ARM_APE_MSG: +#endif + case ECS_SM: + case PET_SM: + case APE_DM: + case SHARE_MEM: + case APE_PHY: + case APE_TEXT: + case APE_LOG: + { + //g_dev_mem_fd = open("/dev/ucp_2_revmem", O_RDWR|O_SYNC); + if(OSP_ERROR == g_dev_mem_noncache_fd) //打开mem设备 + { + g_dev_mem_noncache_fd = open("/dev/ucp_sm_ddr_noncache", O_RDWR|O_SYNC); + } + + if(g_dev_mem_noncache_fd < 0) + { + UCP_PRINT_ERROR("open file failed,ucp_sm_ddr_noncache < 0."); + return (void *)OSP_ERROR; + } + mem_temp_fd = g_dev_mem_noncache_fd; + break; + } + default: + UCP_PRINT_ERROR("memory type error. < 0."); + return (void *)OSP_ERROR; + } +/*#else + if(OSP_ERROR == g_dev_mem_fd) //´ò¿ªmemÉ豸 + { + //g_dev_mem_fd = open("/dev/mem", O_RDWR|O_SYNC); + g_dev_mem_fd = open("/dev/ucp_2_revmem", O_RDWR|O_SYNC); + if(g_dev_mem_fd < 0) + { + return (void *)OSP_ERROR; + } + } + mem_temp_fd = g_dev_mem_fd; +#endif*/ + /*ͨ¹ýÄ£¿éÀàÐÍ»ñÈ¡¶ÔÓ¦µÄµØÖ·Æ«Òƺͳ¤¶È,²¢½øÐеØÖ·Ó³Éä*/ + if(OSP_OK == get_base_and_len(module, &addr_offset, &mem_len)) + { + mem_vir_addr = mmap(NULL, mem_len, PROT_READ|PROT_WRITE, MAP_SHARED, mem_temp_fd, addr_offset); + if((void *)OSP_ERROR == mem_vir_addr) + { + UCP_PRINT_ERROR("get_base_and_len failed,%lx,%lx.",addr_offset,mem_len); + return (void *)OSP_ERROR; + } + else + { + *len = mem_len; + g_static_mem_cb[module].virt_base = (uint64_t)mem_vir_addr; + g_static_mem_cb[module].phy_base = addr_offset; + g_static_mem_cb[module].len = mem_len; + g_static_mem_cb[module].is_mapped = 1; + return mem_vir_addr; + } + } + else + { + UCP_PRINT_ERROR("get_base_and_len error,%lx,%lx.",addr_offset,mem_len); + return (void *)OSP_ERROR; + } +} + +void *osp_heap_mem_init(char *pbuf, uint64_t size,void *head_of_static_mem,module_type_e module) +{ + Heap_Mem_CB *heap_mem = NULL; + uint64_t addr_offset = 0,mem_len = 0; + + heap_mem = malloc(sizeof(Heap_Mem_CB)); + if(NULL == heap_mem) + { + return NULL; + } + + heap_mem->root = (MemNode *)pbuf; + if(size < OSP_NODE_SIZE) //³¤¶ÈСÓڽṹͷ³¤¶È + { + heap_mem->root->len = 0; + } + else + { + heap_mem->root->len = size - OSP_NODE_SIZE; + } + + heap_mem->root->IsBusy = 0; + heap_mem->root->next = NULL; + heap_mem->root->prev = NULL; + heap_mem->virt_base = (uint64_t)head_of_static_mem; + heap_mem->cur_avaliable = heap_mem->root; + + if(OSP_OK == get_base_and_len(module, &addr_offset, &mem_len)) + { + heap_mem->phy_base = addr_offset; + heap_mem->heap_mutex = osp_semm_create(); + return (void *)heap_mem; + } + else + { + return NULL; + } +} + +int8_t * osp_alloc_heap_mem(void *heap, uint32_t size) +{ + MemNode *node; + //MemNode *nextnode; + //MemNode *new; + Heap_Mem_CB *heap_mem = (Heap_Mem_CB *)heap; + + osp_sem_take(heap_mem->heap_mutex, -1); + + node = osp_search_node(heap_mem->cur_avaliable, size); + if (!node) + { + node = osp_search_node(heap_mem->root, size); + if (!node) + { + osp_sem_give(heap_mem->heap_mutex); + return NULL; + } + } + + //osp_set_node_busy(node); + node->IsBusy = 1; + + //new = osp_split_node(node, size); + heap_mem->cur_avaliable = osp_split_node(node, size); + + + //nextnode = osp_get_next_node(new); + /*nextnode = new->next; + if (NULL != nextnode) + if (osp_node_need_merge(new, nextnode)) + osp_node_merge(new, nextnode);*/ + + osp_sem_give(heap_mem->heap_mutex); + return (int8_t *)((uint64_t)node + OSP_NODE_SIZE); + +} + +int32_t osp_free_heap_mem(void *heap, char*pbuf) +{ + MemNode *node = OSP_HEAP_BUF_TO_HEAD(pbuf); + MemNode *nextnode; + MemNode *prenode; + Heap_Mem_CB *heap_mem = (Heap_Mem_CB *)heap; + + osp_sem_take(heap_mem->heap_mutex, -1); + //osp_clear_node_busy(node); + node->IsBusy = 0; + + //osp_debug_out(CMD_DEBUG_LEVEL, "node is %p, node->IsBusy is %d, node->len is %d\r\n", node, node->IsBusy, node->len); + //nextnode = osp_get_next_node(node); + nextnode = node->next; + + //prenode = osp_get_pre_node(node); + prenode = node->prev; + + if (nextnode) + { + if (osp_node_need_merge(node, nextnode)) + { + osp_node_merge(heap_mem, node, nextnode); + } + } + + if (prenode) + { + if (osp_node_need_merge(prenode, node)) + { + osp_node_merge(heap_mem, prenode, node); + } + } + osp_sem_give(heap_mem->heap_mutex); + + return 0; +} + +int32_t osp_show_heap_mem(void *heap) +{ + int32_t busynum = 0; + int32_t freenum = 0; + int32_t busymem = 0; + int32_t freemem = 0; + char buf[256] = {0}; + int32_t len = 0; + Heap_Mem_CB *heap_mem = (Heap_Mem_CB *)heap; + + MemNode *node = heap_mem->root; + osp_sem_take(heap_mem->heap_mutex, -1); + while (node) + { + osp_debug_out(CMD_DEBUG_LEVEL, "node is %p, node->IsBusy is %d, node->len is %d\r\n", node, node->IsBusy, node->len); + if (node->IsBusy) + { + busynum++; + busymem += node->len; + } + else + { + freenum++; + freemem += node->len; + } + node = node->next; + } + + osp_sem_give(heap_mem->heap_mutex); + len += sprintf(buf + len, "busynum\tbusymem\tfreenum\tfreemem\t\r\n"); + len += sprintf(buf + len, "%d\t%d\t%d\t%d\t\r\n", busynum, busymem, freenum, freemem); + osp_debug_out(CMD_DEBUG_LEVEL, "%s", buf); + + return OSP_OK; +} + +#if 0 +U64 osp_phy_to_virt(void *heap, U64 phy_addr) +{ + Heap_Mem_CB *heap_mem = (Heap_Mem_CB *)heap; + + return (heap_mem->virt_base + (phy_addr - heap_mem->phy_base)); +} + +U64 osp_virt_to_phy(void *heap, U64 virt_addr) +{ + Heap_Mem_CB *heap_mem = (Heap_Mem_CB *)heap; + + return (heap_mem->phy_base + (virt_addr - heap_mem->virt_base)); +} +#else +int32_t osp_phy_to_virt(module_type_e module, uint64_t phy_addr, uint64_t *virt_addr) +{ + if(1 == g_static_mem_cb[module].is_mapped) + { + *virt_addr = g_static_mem_cb[module].virt_base + (phy_addr - g_static_mem_cb[module].phy_base); + return OSP_OK; + } + else + { + UCP_PRINT_ERROR("osp_phy_to_virt %d error!!",module); + return OSP_ERROR; + } +} + +int32_t osp_virt_to_phy(module_type_e module, uint64_t virt_addr, uint64_t *phy_addr) +{ + if(1 == g_static_mem_cb[module].is_mapped) + { + *phy_addr = g_static_mem_cb[module].phy_base + (virt_addr - g_static_mem_cb[module].virt_base); + return OSP_OK; + } + else + { + UCP_PRINT_ERROR("osp_virt_to_phy %d error!!",module); + return OSP_ERROR; + } +} +#endif + +#if 1 +void osp_flush_dcache_area(void * volatile addr, uint64_t volatile len) +{ + +__asm volatile(" mrs x3, ctr_el0 \n" // read CTR + " ubfm x3, x3, #16, #19 \n" // cache line size encoding + " mov x2, #4 \n" // bytes per word + " lsl x2, x2, x3 \n" // actual cache line size + " add x1, x0, x1 \n" + " sub x3, x2, #1 \n" + " bic x0, x0, x3 \n" + " 9998: \n" + " dc civac, x0 \n" + " add x0, x0, x2 \n" + " cmp x0, x1 \n" + " b.lo 9998b \n" + " dsb sy \n"); + +} + +void osp_clean_dcache_area(void * volatile addr, uint64_t volatile len) +{ + +__asm volatile(" mrs x3, ctr_el0 \n" // read CTR + " ubfm x3, x3, #16, #19 \n" // cache line size encoding + " mov x2, #4 \n" // bytes per word + " lsl x2, x2, x3 \n" // actual cache line size + " add x1, x0, x1 \n" + " sub x3, x2, #1 \n" + " bic x0, x0, x3 \n" + " 9998: \n" + " dc cvac, x0 \n" + " add x0, x0, x2 \n" + " cmp x0, x1 \n" + " b.lo 9998b \n" + " dsb sy \n"); + +} +#endif + +int32_t osp_invalid_dcache_area(module_type_e module, uint64_t virt_addr, uint64_t len) +{ + int32_t iRet = 0; + uint64_t phy_addr = 0; + + if(g_dev_mem_fd < 0) + { + return OSP_ERROR; + } + + if(OSP_OK != osp_virt_to_phy(module, virt_addr, &phy_addr)) + { + return OSP_ERROR; + } + + iRet = ioctl(g_dev_mem_fd,len,phy_addr); + if(-1 == iRet) + { + printf("user_invalid_dcache_area phy add out of range \n "); + return OSP_ERROR; + } + + return OSP_OK; +} + +int32_t osp_display_phy_mem(uint64_t phy_addr, uint32_t len) +{ + uint64_t addr_temp = OSP_ROUND_DOWN(phy_addr,OSP_DISPLAY_PAGE_LEN); + uint64_t addr_offset = phy_addr - addr_temp; + uint32_t *mem_vir_addr,*temp_vir_addr; + uint32_t i,j; + int32_t display_fd = 1; + + if(OSP_DISPLAY_MAX_LEN < len) + { + return OSP_ERROR; + } + + //printf("phy_addr=%#llx, mmap_addr=%#llx,virt_addr=%#llx,len = %d:\n",phy_addr,addr_temp,len); + printf("phy_addr=%#lx, mmap_addr=%#lx,len = %d\n",phy_addr,addr_temp,len); + + + display_fd = open("/dev/mem", O_RDWR|O_SYNC); + if(display_fd < 0) + { + printf("open /dev/mem error\n"); + return OSP_ERROR; + } + + + mem_vir_addr = (uint32_t*)mmap(NULL, (OSP_DISPLAY_PAGE_LEN << 1), PROT_READ|PROT_WRITE, MAP_SHARED, display_fd, addr_temp); + if((uint32_t*)OSP_ERROR == mem_vir_addr) + { + printf("mmap error!! return value is %ld\n",(uint64_t)mem_vir_addr); + return OSP_ERROR; + } + + temp_vir_addr = mem_vir_addr + (addr_offset >> 2); + + for(i = 0; i < len; i += 16) + {//²»×ã16×Ö½ÚÒ²ÏÔʾ4¸ö×Ö + printf("0x%016lx: ",phy_addr + i); + + for(j = 0; j < 4; j++) + { + printf("0x%08x ",*temp_vir_addr++); + } + + printf("\n"); + } + + munmap((void*)mem_vir_addr,(OSP_DISPLAY_PAGE_LEN << 1)); + close(display_fd); + return OSP_OK; +} + diff --git a/osp/src/ospHeartbeat.c b/osp/src/ospHeartbeat.c new file mode 100644 index 0000000..4e37dd6 --- /dev/null +++ b/osp/src/ospHeartbeat.c @@ -0,0 +1,350 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "pet_sm_mgt.h" +#include "msg_transfer_mem.h" +#include "ospHeartbeat.h" +#include "ospSem.h" +//#include "ospSoftQue.h" +//#include "ospMsg.h" +//#include "ospDbg.h" +#include "ucp_printf.h" +#include "ospDelay.h" +#include "ospDump.h" +#include "ospCfgToBin.h" +#include "ospSwTimer.h" + +#define RESTART_REGISTER_LEN (0x1000) +#define RESTART_REGISTER_SUBCTRL0_BASE (0x04A88000) +#define RESTART_REGISTER_SUBCTRL1_BASE (0x04AD8000) +#define RESTART_REGISTER_SUBCTRL2_BASE (0x04B28000) +#define RESTART_REGISTER_SUBCTRL3_BASE (0x04B78000) +#define RESTART_REGISTER_RST_CFG_BASE (0x04550000) + + +#define OSP_HEARTBEAT_NAME "OspHeartbeatTimer" +#define OSP_HEARTBEAT_TMR_OUT (1000) /* 1000ms->1s */ +#define OSP_HB_MAX_CORE_NUM 2//(12) /* 监测的最多核数 */ +#define OSP_HB_MAX_COUNTER (3) /* 失信计数最大值 */ + +#define OSP_HEARTBEAT_OFF (1) /* 䏿£€æµ‹å¿ƒè·³ */ +#define OSP_HEARTBEAT_ON (0) /* 检测心跳 */ + +#define HB_NO_CHECK (1) /* ä¸å†è¢«æ£€æµ‹ */ +#define HB_CHECK (0) /* 被检测 */ + +static uint8_t gsu8OspHeartbeatSwitch = 0; /* 默认检测心跳 */ +static OspHeartbeatInfo_t gsstOspHeartbeatCounter[OSP_HB_MAX_CORE_NUM]; + +uint8_t* gu8virRegAddr = NULL; +uint8_t* gu8VirSubctrlAddr = NULL; +uint8_t* gu8VirRstCfgAddr = NULL; + +/* 获å–对应核的心跳计数 */ +uint32_t OspGetHeartbeat(uint8_t u8CoreId) +{ + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + UcpHandshake_t* pHandshake = pPetSmLocalMgt->pHandshake; + return pHandshake->heartbeat[u8CoreId]; +} + + +/* é‡å¯å¯„存器 */ +int8_t OspRestartRegister(uint8_t u8CoreId) +{ + uint64_t u64SubctrlAddr = 0; + int iOspRestartFd = -1; + int8_t i8ApcId = -1; + + switch(u8CoreId) + { + case 0: + case 1: + { + i8ApcId = 0; + u64SubctrlAddr = RESTART_REGISTER_SUBCTRL0_BASE; + break; + } + case 2: + case 3: + { + i8ApcId = 1; + u64SubctrlAddr = RESTART_REGISTER_SUBCTRL1_BASE; + break; + } + case 4: + case 5: + { + i8ApcId = 2; + u64SubctrlAddr = RESTART_REGISTER_SUBCTRL2_BASE; + break; + } + case 6: + case 7: + { + i8ApcId = 3; + u64SubctrlAddr = RESTART_REGISTER_SUBCTRL3_BASE; + break; + } + default: + { + i8ApcId = -1; + break; + } + } + + if (-1 == i8ApcId) + { + UCP_PRINT_ERROR("OspRestartRegister: coreid(%d) error.\r\n", u8CoreId); + return OSP_ERROR; + } + UCP_PRINT_DEBUG("OspRestartRegister: Start to restart register(coreid = %d).\r\n", u8CoreId); + + iOspRestartFd = open("/dev/mem", O_RDWR|O_SYNC); + if (0 > iOspRestartFd) + { + UCP_PRINT_ERROR("OspRestartRegister: open /dev/mem error.\r\n"); + return OSP_ERROR; + } + UCP_PRINT_DEBUG("OspRestartRegister: start mmap(subctrl).\r\n"); + + gu8VirSubctrlAddr = (uint8_t*)mmap(NULL, RESTART_REGISTER_LEN, PROT_READ|PROT_WRITE, MAP_SHARED, iOspRestartFd, u64SubctrlAddr); + if ((uint8_t*)(-1) == gu8VirSubctrlAddr) + { + UCP_PRINT_ERROR("OspRestartRegister: mmap error.\r\n"); + return OSP_ERROR; + } + UCP_PRINT_DEBUG("OspRestartRegister: start mmap(rst_cfg).\r\n"); + + gu8VirRstCfgAddr = (uint8_t*)mmap(NULL, RESTART_REGISTER_LEN, PROT_READ|PROT_WRITE, MAP_SHARED, iOspRestartFd, RESTART_REGISTER_RST_CFG_BASE); + if ((uint8_t*)(-1) == gu8VirRstCfgAddr) + { + UCP_PRINT_ERROR("OspRestartRegister: mmap error.\r\n"); + return OSP_ERROR; + } + UCP_PRINT_DEBUG("OspRestartRegister: Set register for restart.\r\n"); + + /* æ ¹æ®coreid设置对应寄存器 */ + + + *((volatile uint32_t*)(gu8VirSubctrlAddr)) |= 0xC; //enable ISO, set bit2,3 to 1 + *((volatile uint32_t*)(gu8VirSubctrlAddr)) &= 0xFFFFFFFD; //apc_arstn is valid, reset bus of apc0 + *((volatile uint32_t*)(gu8VirRstCfgAddr+0x274+i8ApcId*4)) = (0xFFFFFF & (*((volatile uint32_t*)(gu8VirRstCfgAddr+i8ApcId*4)))) | (4 << 24); //reset apc0 core, set bit24 to 0 + osp_delay(1000); + *((volatile uint32_t*)(gu8VirSubctrlAddr)) |= 0x2; //apc_arstn is invalid, dereset bus of apc0 + *((volatile uint32_t*)(gu8VirRstCfgAddr+0x274+i8ApcId*4)) = (0xFFFFFF & (*((volatile uint32_t*)(gu8VirRstCfgAddr+i8ApcId*4)))) | (5 << 24); //dereset apc0 core, set bit24 to 1 + *((volatile uint32_t*)(gu8VirSubctrlAddr)) &= 0xFFFFFFF3; //disable ISO, set bit2,3 to 0 + + return OSP_OK; +} + +/* DUMP DM内存 */ +int8_t OspDumpDm2Ddr(uint8_t u8CoreId) +{ +#ifdef HEARTBEAT_ENABLE + return osp_dump_dm_by_coreid(u8CoreId); +#else + return OSP_OK; +#endif +} + +#define OSP_LOAD_APE0_OUT "./loadelf_8g -ape dump_im.ape0.out %d 1" +#define OSP_LOAD_APE1_OUT "./loadelf_8g -ape dump_im.ape1.out %d 1" + +/* 二次加载 */ +int8_t Osp2Loader(uint8_t u8CoreId) +{ + char cmd[128] = {0}; + if (u8CoreId <= 7) + { + if (0 == u8CoreId%2) + { + sprintf(cmd, OSP_LOAD_APE0_OUT, u8CoreId); + } + else + { + sprintf(cmd, OSP_LOAD_APE1_OUT, u8CoreId); + } + UCP_PRINT_DEBUG("Osp2Loader: cmd = %s \r\n", cmd); + system(cmd); + return OSP_OK; + } + return OSP_ERROR; +} + +/* DUMP IM内存 */ +int8_t OspDumpIm2Ddr(uint8_t u8CoreId) +{ +#ifdef HEARTBEAT_ENABLE + return osp_get_im2ddr_to_file(u8CoreId); +#else + return OSP_OK; +#endif +} + +#define OSP_GET_DUMP_DM2TMP "./exp_file dump_dm_core* /tmp/dumpfile" +#define OSP_GET_DMMP_IM2TMP "./exp_file dump_im_core* /tmp/dumpfile" + +void OspGetFileOut(uint8_t u8CoreId) +{ + //UCP_PRINT_DEBUG("OspGetFileOut: cmd = %s \r\n", OSP_GET_DUMP_DM2TMP); + system(OSP_GET_DUMP_DM2TMP); + + //UCP_PRINT_DEBUG("OspGetFileOut: cmd = %s \r\n", OSP_GET_DMMP_IM2TMP); + system(OSP_GET_DMMP_IM2TMP); + + //UCP_PRINT_DEBUG("OspGetFileOut: OK \r\n"); + return ; +} + +/* é‡å¯ */ +void OspRestartPro(uint8_t u8CoreId) +{ + int8_t ret = 0; + + UCP_PRINT_DEBUG("OspRestartPro : u8CoreId = %d \r\n", u8CoreId); + + if (7 < u8CoreId) + { + UCP_PRINT_ERROR("OspRestartPro: core_id = %d(big).\r\n", u8CoreId); + return ; + } + + ret = OspRestartRegister(u8CoreId); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspRestartPro: Call OspRestartRegister return error.\r\n"); + return ; + } + + //UCP_PRINT_DEBUG("OspRestartPro : OspRestartRegister return ok \r\n"); + + ret = OspDumpDm2Ddr(u8CoreId); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspRestartPro: Call OspDumpDm2Ddr return error.\r\n"); + return ; + } + //UCP_PRINT_DEBUG("OspRestartPro : OspDumpDm2Ddr return ok \r\n"); + + ret = Osp2Loader(u8CoreId); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspRestartPro: Call Osp2Loader return error.\r\n"); + return ; + } + //UCP_PRINT_DEBUG("OspRestartPro : Osp2Loader return ok \r\n"); + + ret = OspDumpIm2Ddr(u8CoreId); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspRestartPro: Call OspDumpIm2Ddr return error.\r\n"); + return ; + } + //UCP_PRINT_DEBUG("OspRestartPro : OspDumpIm2Ddr return ok \r\n"); + + OspGetFileOut(u8CoreId); + + UCP_PRINT_DEBUG("****************************************************** \r\n"); + return ; +} + + +/* 心跳定时器超时处ç†å‡½æ•° +1. è‹¥ä¸éœ€è¦ç›‘测直接返回 +2. 监测æ¯ä¸ªæ ¸çš„心跳计数 + 2.1 与上次的对比,一致则看是å¦è¾¾åˆ°æœ€å¤§å¤±ä¿¡è®¡æ•°--é‡å¯ + 2.2 ä¸ä¸€è‡´ï¼Œæ›´æ–°ä¸Šæ¬¡è®¡æ•° +*/ +void OspHeartbeatTimeoutPro(void) +{ + static uint32_t su32Cnt = 0; + uint8_t u8CoreId = 0; + uint32_t u32HeartbeatCunt = 0; + su32Cnt++; + //UCP_PRINT_DEBUG("OspHeartbeatTimeoutPro: Enter >>> (%d)", su32Cnt); + + /* 若心跳监测关闭,则ä¸ç›‘æµ‹å„æ ¸å¿ƒè·³ */ + if (OSP_HEARTBEAT_OFF == gsu8OspHeartbeatSwitch) + { + UCP_PRINT_ERROR("OspHeartbeatTimeoutPro: .gsu8OspHeartbeatSwitch is OSP_HEARTBEAT_OFF.\r\n"); + return ; + } + + /* ç›‘æµ‹å„æ ¸å¿ƒè·³ */ + for( u8CoreId = 0; u8CoreId < OSP_HB_MAX_CORE_NUM; u8CoreId++) + { + if (HB_NO_CHECK == gsstOspHeartbeatCounter[u8CoreId].u32CheckFlag) + { + continue; + } + u32HeartbeatCunt = OspGetHeartbeat(u8CoreId); + UCP_PRINT_DEBUG("OspHeartbeatTimeoutPro: coreId(%d) LastBeat(%d) NowBeat(%d)\r\n", u8CoreId, gsstOspHeartbeatCounter[u8CoreId].u32LastCounter, u32HeartbeatCunt); + if (gsstOspHeartbeatCounter[u8CoreId].u32LastCounter == u32HeartbeatCunt) + { + gsstOspHeartbeatCounter[u8CoreId].u32LossCounter++; + + if (gsstOspHeartbeatCounter[u8CoreId].u32LossCounter > OSP_HB_MAX_COUNTER) + { + UCP_PRINT_ERROR("OspHeartbeatTimeoutPro: CoreID(%d) should be restart...\r\n", u8CoreId); + OspRestartPro(u8CoreId); + if (0 == u8CoreId%2) + { + gsstOspHeartbeatCounter[u8CoreId].u32CheckFlag = HB_NO_CHECK; + gsstOspHeartbeatCounter[u8CoreId+1].u32CheckFlag = HB_NO_CHECK; + } + else + { + gsstOspHeartbeatCounter[u8CoreId].u32CheckFlag = HB_NO_CHECK; + gsstOspHeartbeatCounter[u8CoreId-1].u32CheckFlag = HB_NO_CHECK; + } + return ; + } + } + else + { + gsstOspHeartbeatCounter[u8CoreId].u32LastCounter = u32HeartbeatCunt; + gsstOspHeartbeatCounter[u8CoreId].u32LossCounter = 0; + } + } + return ; +} + +/* 心跳处ç†å‡½æ•°ï¼š +1. 创建定时器 +2. å¯åŠ¨å®šæ—¶å™¨ +*/ +int8_t OspHeartbeatPro(void) +{ + int8_t ret = 0; + uint8_t u8TimerIndex = 0; + + memset(gsstOspHeartbeatCounter, 0, sizeof(gsstOspHeartbeatCounter)); + gsu8OspHeartbeatSwitch = OSP_HEARTBEAT_ON; + //return OSP_OK; + + /* 创建定时器 */ + ret = OspTmrCreate((const char*)OSP_HEARTBEAT_NAME, OSP_HEARTBEAT_TMR_OUT, OSP_TMR_PERIODIC, (OSP_CALLBACK)OspHeartbeatTimeoutPro, NULL); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspHeartbeatPro: OspTmrCreate return error.\r\n"); + return OSP_ERROR; + } + u8TimerIndex = ret; + + /* å¯åŠ¨å®šæ—¶å™¨ */ + ret = OspTmrStart(u8TimerIndex); + if (OSP_ERROR == ret) + { + UCP_PRINT_ERROR("OspHeartbeatPro: OspTmrStart return error.\r\n"); + return OSP_ERROR; + } + return OSP_OK; +} + + diff --git a/osp/src/ospList.c b/osp/src/ospList.c new file mode 100644 index 0000000..6a3cba4 --- /dev/null +++ b/osp/src/ospList.c @@ -0,0 +1,57 @@ +#include +#include +#include + +#include "osp.h" + + + +static void INIT_LIST_HEAD(struct list_head *list) +{ + list->next = list; + list->prev = list; +} + +static void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) +{ + + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + + +static void list_add(struct list_head *new, struct list_head *head) +{ + __list_add(new, head, head->next); +} + + +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +static inline void __list_del_entry(struct list_head *entry) +{ + + + __list_del(entry->prev, entry->next); +} + +static inline void list_del(struct list_head *entry) +{ + __list_del_entry(entry); + entry->next = NULL; + entry->prev = NULL; +} + + +#define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + + diff --git a/osp/src/ospLog.c b/osp/src/ospLog.c new file mode 100644 index 0000000..b76a319 --- /dev/null +++ b/osp/src/ospLog.c @@ -0,0 +1,1305 @@ +#define _GNU_SOURCE /*使用get_current_dir_name 编译告警,该å®çš„定义应该在unistd.h之å‰*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "osp.h" +#include "ospSoftQue.h" +#include "ospShell.h" +#include "ucp_printf.h" +#include "ospUdp.h" + + + +void *g_OspLogSem = NULL; + + +int32_t osp_base_logid; +uint32_t log_rand; +uint32_t g_ulApeLogMode = 0; /*0: ape log日志写入文件 1: 网å£è¾“出ape log 2:ape log日志shell打å°è¾“出*/ +uint32_t g_ulArmLogMode = 0; /*0: arm log日志写入文件 1: 网å£è¾“出arm log 2:arm log日志shell打å°è¾“出*/ +uint8_t g_ucPlatformMode = 0; /*0: platform log日志写入文件 1: 网å£è¾“出platform log 2:platform log日志shell打å°è¾“出*/ +uint8_t g_time_now[128]; +uint8_t g_ucFflushEnable = 0; +int32_t net_log_txudp_id = -1; /*å网å£log id*/ + +Osp_Server_Head gst_server_log; +extern uint8_t guc_print_level; +extern char *gp_dump_buf; +osp_log_file_cfg log_file_cfg_table[MAX_LOG_CFG_NUM][4]; + +void osp_get_current_time(void) +{ + OSP_RTCTIME osptime; + + osp_get_rtc_time(&osptime); + sprintf((char *)g_time_now, \ + "[%04d-%02d-%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); +} + +uint32_t osp_get_msgtype_id(uint32_t msg_type) +{ + uint32_t type = 0; + + switch(msg_type) + { + case 0x60: + type = 0; + break; + case 0x61: + type = 1; + break; + case 0x62: + type = 2; + break; + case 0x63: + type = 3; + break; + default: + type = 0; + break; + } + + return type; +} + +void osp_get_msgtype_name(uint32_t msg_type, char *msg_name) +{ + if(NULL == msg_name) + { + return; + } + + switch(msg_type) + { + case 0x60: + strcpy(msg_name,"str"); + break; + case 0x61: + strcpy(msg_name,"bin"); + break; + case 0x62: + strcpy(msg_name,"platform"); + break; + case 0x63: + strcpy(msg_name,"dm"); + break; + default: + strcpy(msg_name,"default"); + break; + } + + return; +} + + +int32_t osp_modify_log(uint32_t logid, uint32_t msg_type, uint32_t max_file_size, uint32_t max_file_num) +{ + uint32_t type = 0; + osp_log_file_cfg (*p_log_file_cfg)[4]; + + if (max_file_size > 100 || max_file_num > 100) + { + UCP_PRINT_ERROR("error:osp_modify_log max_file_szie:%d max_file_num:%d\n", max_file_size, max_file_num); + return OSP_ERROR; + } + + if (logid > 15) + { + UCP_PRINT_ERROR("error:osp_modify_log logid:%d\n", logid); + return OSP_ERROR; + } + + type = osp_get_msgtype_id(msg_type); + + p_log_file_cfg = log_file_cfg_table; + //p_log_file_cfg = (osp_log_file_cfg *)&log_file_cfg_table[0][0]; + if (p_log_file_cfg[logid][type].valied == 1) + { + p_log_file_cfg[logid][type].max_file_size_M = max_file_size; + p_log_file_cfg[logid][type].max_file_num = max_file_num; + } + else + { + UCP_PRINT_ERROR("error:osp_modify_log valied:%d\n", p_log_file_cfg[logid][type].valied); + return OSP_ERROR; + } + return OSP_OK; +} + +int32_t osp_create_log(char *name, uint32_t max_file_szie, uint32_t max_file_num, uint32_t with_time) +{ + uint32_t i; + uint32_t j; + osp_log_file_cfg (*p_log_file_cfg)[4]; + + if (NULL == g_OspLogSem) + { + return OSP_ERROR; + } + + if (name == NULL || max_file_szie < 0 || max_file_num < 0) + { + return OSP_ERROR; + } + + osp_sem_take(g_OspLogSem, -1); + + p_log_file_cfg = log_file_cfg_table; + // p_log_file_cfg = &log_file_cfg_table[0][0]; + + for (i = 0; i < MAX_LOG_CFG_NUM; i++) + { + for(j = 0; j< 4; j++) + { + if (p_log_file_cfg[i][j].valied == 0) + { + p_log_file_cfg[i][j].valied = 1; + p_log_file_cfg[i][j].max_file_size_M = max_file_szie; + p_log_file_cfg[i][j].max_file_num = max_file_num; + p_log_file_cfg[i][j].with_time = with_time; + p_log_file_cfg[i][j].key = log_rand; + + memcpy(p_log_file_cfg[i][j].logname, name, strlen(name)); + } + } + + } + + osp_sem_give(g_OspLogSem); + return OSP_OK; +} + + +FILE *osp_get_log_file(int32_t logid, uint32_t msg_type) +{ + uint32_t type =0; + + type = osp_get_msgtype_id(msg_type); + + return log_file_cfg_table[logid][type].file; +} + +OSP_STATUS osp_update_log(uint32_t len, uint32_t logid, uint32_t msg_type) +{ + osp_log_file_cfg (*p_log_file_cfg)[4]; + char name[150] = {0}; + char path[150] = {0}; + char msg_name[10] = {0}; + int32_t file_idx = 0; + uint32_t type = 0; + uint32_t ulfreeram = 0; + + if (logid >= MAX_LOG_CFG_NUM || logid < 0) + { + return OSP_ERROR; + } + + osp_get_msgtype_name(msg_type, msg_name); + type = osp_get_msgtype_id(msg_type); + if (log_file_cfg_table[logid][type].valied == 0) + { + return OSP_ERROR; + } + + p_log_file_cfg = log_file_cfg_table; + //p_log_file_cfg = &log_file_cfg_table[0][0]; + p_log_file_cfg[logid][type].cur_sum_len += len; + + osp_get_current_time(); + UCP_PRINT_LOG("osp_update_log logid:%d type:0x%x cur_sum_len:%u max_file_size_M:%u !\n", logid,type, p_log_file_cfg[logid][type].cur_sum_len, p_log_file_cfg[logid][type].max_file_size_M); + + /*判断当å‰ç³»ç»Ÿæ˜¯å¦è¿˜æœ‰è¶³å¤Ÿç©ºé—´*/ + ulfreeram = osp_get_freeram(); + if((ulfreeram <= FREE_RAM_SIZE) || (1 == g_ucFflushEnable)) + { + sprintf(name, "rm -rf %s%u-%u-%s.log", p_log_file_cfg[logid][type].logname, (p_log_file_cfg[logid][type].cur_file_idx & 0x7)+1, logid, msg_name); + system(name); + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x ulfreeram:%u g_ucFflushEnable:%u name:%s\n", __LINE__, logid, type, ulfreeram, g_ucFflushEnable, name); + osp_log_cfg_reload(); + } + + if (p_log_file_cfg[logid][type].cur_sum_len >= p_log_file_cfg[logid][type].max_file_size_M) + { + p_log_file_cfg[logid][type].cur_sum_len = 0; + p_log_file_cfg[logid][type].cur_file_idx++; + + file_idx = p_log_file_cfg[logid][type].cur_file_idx & 0x7; + if(p_log_file_cfg[logid][type].cur_file_idx >= p_log_file_cfg[logid][type].max_file_num) + { + sprintf(name, "rm -rf %s%u-%u-%s.log", p_log_file_cfg[logid][type].logname, file_idx, logid, msg_name); + //sprintf(name, "%s-%d-%s-%u-%u-%s.log", p_log_file_cfg[logid][type].logname, getpid(), g_time_now, p_log_file_cfg[logid][type].cur_file_idx, logid, msg_name); + system(name); + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x remove name:%s\n", __LINE__, logid, type, name); + } + + /*åˆ¤æ–­å½“å‰æ–‡ä»¶æ˜¯å¦åˆæ³•文件*/ + if(NULL == p_log_file_cfg[logid][type].file) + { + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:%d file:%p\n", __LINE__, logid, type, p_log_file_cfg[logid][type].file); + return OSP_ERROR; + } + + fclose(p_log_file_cfg[logid][type].file); + + osp_get_file_path(p_log_file_cfg[logid][type].logname, path); + + if (access(path, F_OK) != 0) + { + osp_mkdirs(path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + sprintf(name, "%s%u-%u-%s.log", p_log_file_cfg[logid][type].logname, file_idx, logid, msg_name); + //sprintf(name, "%s-%d-%s-%u-%u-%s.log", p_log_file_cfg[logid][type].logname, getpid(), g_time_now, p_log_file_cfg[logid][type].cur_file_idx, logid, msg_name); + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s\n", __LINE__, logid, type, name); + + /*二进制格å¼*/ + if(0x61 == msg_type) + { + p_log_file_cfg[logid][type].file = fopen(name, "wb+"); + /*判断文件是å¦åˆ›å»ºæˆåŠŸ*/ + if(p_log_file_cfg[logid][type].file <= 0) + { + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s file create fail!\n", __LINE__, logid, type, name); + return OSP_ERROR; + } + } + else + { + p_log_file_cfg[logid][type].file = fopen(name, "w+"); + /*判断文件是å¦åˆ›å»ºæˆåŠŸ*/ + if(p_log_file_cfg[logid][type].file <= 0) + { + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s file create fail!\n", __LINE__, logid, type, name); + return OSP_ERROR; + } + } + + } + else + { + if (NULL == p_log_file_cfg[logid][type].file) + { + osp_get_file_path(p_log_file_cfg[logid][type].logname, path); + + if (access(path, F_OK) != 0) + { + osp_mkdirs(path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + sprintf(name, "%s%u-%u-%s.log", p_log_file_cfg[logid][type].logname, p_log_file_cfg[logid][type].cur_file_idx, logid, msg_name); + //sprintf(name, "%s-%d-%s-%u-%u-%s.log", p_log_file_cfg[logid][type].logname, getpid(), g_time_now, p_log_file_cfg[logid][type].cur_file_idx, logid, msg_name); + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s\n", __LINE__, logid, type, name); + + /*二进制格å¼*/ + if(0x61 == msg_type) + { + p_log_file_cfg[logid][type].file = fopen(name, "wb+"); + /*判断文件是å¦åˆ›å»ºæˆåŠŸ*/ + if(p_log_file_cfg[logid][type].file <= 0) + { + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s file create fail!\n", __LINE__, logid, type, name); + return OSP_ERROR; + } + } + else + { + p_log_file_cfg[logid][type].file = fopen(name, "w+"); + /*判断文件是å¦åˆ›å»ºæˆåŠŸ*/ + if(p_log_file_cfg[logid][type].file <= 0) + { + UCP_PRINT_LOG("osp_update_log line:%d logid:%d type:0x%x name:%s file create fail!\n", __LINE__, logid, type, name); + return OSP_ERROR; + } + } + } + } + + return OSP_OK; +} + + +void osp_log_output(unsigned char level, const char *fmt, ...) +{ + char acstr[256] = {0}; + va_list st_va_list; + + if (level > guc_print_level) + { + return; + } + + va_start(st_va_list, fmt); + vsprintf((char *)acstr, fmt, st_va_list); + va_end(st_va_list); + + printf("%s", acstr); + + return; +} + + + +OSP_STATUS osp_dbg_log_ext(char *pbuf, uint32_t buflen, int32_t LogId) +{ +#if 0 + Osp_Msg_Head *pNMsg = NULL; + + OSP_RTCTIME osptime; + char datebuf[100] = {0}; + + if ((pbuf == NULL) || (buflen == 0) || (LogId < 0) || (LogId >= MAX_LOG_CFG_NUM) || + (log_file_cfg_table[LogId].valied == 0)) + { + osp_debug_out_with_time(RUN_DEBUG_LEVEL, "osp_dbg_log_ext arg err!\r\n"); + return -1; + } + + if (log_file_cfg_table[LogId].with_time) + { + osp_get_rtc_time(&osptime); + sprintf((char *)datebuf, \ + "[%04d/%02d/%02d-%02d:%02d:%02d:%02d]", \ + osptime.year, osptime.month, osptime.day, \ + osptime.hour, osptime.minute, osptime.second, osptime.usecond); + + pNMsg = osp_alloc_msg(strlen(datebuf) + buflen); + if (pNMsg == NULL) + { + return -1; + } + + pNMsg->MsgType = OSP_STR_LOG; + pNMsg->MsgSize = strlen(datebuf) + buflen; + pNMsg->SrcId = LogId; + pNMsg->DstId = DbgLogTask; + + memcpy(MSG_HEAD_TO_COMM(pNMsg), datebuf, strlen(datebuf)); + memcpy(MSG_HEAD_TO_COMM(pNMsg) + strlen(datebuf), pbuf, buflen); + + } + else + { + pNMsg = osp_alloc_msg(buflen); + if (pNMsg == NULL) + { + return -1; + } + + pNMsg->MsgType = OSP_STR_LOG; + pNMsg->MsgSize = buflen; + pNMsg->SrcId = LogId; + pNMsg->DstId = DbgLogTask; + + memcpy(MSG_HEAD_TO_COMM(pNMsg), pbuf, buflen); + + } + + osp_send_msg(pNMsg); +#endif + return 0; +} + +OSP_STATUS osp_dbg_log(char *pbuf, uint32_t buflen) +{ + return osp_dbg_log_ext(pbuf, buflen, osp_base_logid); +} + +OSP_STATUS osp_close_log_file(FILE *file) +{ + if (fclose(file)) + { + return OSP_ERROR; + } + + return OSP_OK; +} + +uint32_t osp_get_freeram(void) +{ + uint32_t ulfreeram = 0; + struct sysinfo st_info; + + if(0 == sysinfo(&st_info)) + { + ulfreeram = st_info.freeram; + } + + return ulfreeram; +} + + +/*默认起始端å£å·portIDStart=32768,二进制logçš„portID = portIDStart + core_id * 2;字符串logçš„portID = portIDStart + core_id * 2 + 1ï¼› + å¹³å°ç½‘å£log默认端å£å·ä¸º32800,ul_port = ul_platform_port + 2*uc_src_core_id;*/ +uint32_t osp_get_ape_port(osp_sw_msg_info_t *pMsg) +{ + uint32_t ul_port = 0; + uint32_t ul_start_port = 32768; + uint32_t ul_platform_port = 32800; + uint8_t uc_msg_type = 0; /* 消æ¯ç±»åž‹ */ + uint8_t uc_src_core_id = 0; /* æºæ ¸ID */ + + uc_src_core_id = pMsg->u8CoreId; + uc_msg_type = pMsg->u8PktType; + + switch (uc_msg_type) + { + case OSP_BIN_LOG: + ul_port = ul_start_port + 2*uc_src_core_id; + break; + case OSP_STR_LOG: + ul_port = ul_start_port + 2*uc_src_core_id + 1; + break; + case OSP_PLATFORM_LOG: + ul_port = ul_platform_port + 2*uc_src_core_id; + break; + default: + break; + } + + UCP_PRINT_LOG("osp_get_ape_port ul_port:%u uc_src_core_id:%u uc_msg_type:0x%x\n", ul_port, uc_src_core_id, uc_msg_type); + + return ul_port; +} + +void osp_net_log_proc(char *pMsg, uint32_t len, uint32_t port) +{ + int32_t udpid = 0; + + udpid = osp_get_txudp((char *)&gst_server_log.ip, port); + + if (osp_check_udpid(udpid)) + { + net_log_txudp_id = udpid; + //UCP_PRINT_LOG("osp_net_log_proc line:%d udpid:[%u] port:[%u]\n", __LINE__, udpid, port); + } + else + { + net_log_txudp_id = osp_create_txucp(port, (char *)&gst_server_log.ip); + //UCP_PRINT_LOG("osp_net_log_proc line:%d udpid:[%u] port:[%u]\n", __LINE__, net_log_txudp_id, port); + } + + //UCP_PRINT_LOG("osp_net_log_proc line:%d len[%u] udp_id[%u] ip[%s] port[%u]\n", __LINE__, len, net_log_txudp_id, gst_server_log.ip, port); + + osp_udp_send(pMsg, len, net_log_txudp_id); + + return; +} + +OSP_STATUS osp_write_diaglog(char *pbuf, uint32_t len ,uint32_t logid, uint32_t msg_type) +{ + + int32_t ret = 0; + static FILE *file = NULL; + uint32_t fd; + + if (NULL == g_OspLogSem) + { + return OSP_ERROR; + } + + if ((NULL == pbuf) || (0 == len)) + { + return OSP_ERROR; + } + + osp_sem_take(g_OspLogSem,-1); + + UCP_PRINT_LOG("osp_write_diaglog len[%u] logid[%u] msg_type[0x%x]\n", len, logid, msg_type); + + ret = osp_update_log(len, logid, msg_type); + if (ret < 0) + { + osp_sem_give(g_OspLogSem); + return OSP_ERROR; + } + + file = osp_get_log_file(logid, msg_type); + if (NULL == file) + { + osp_sem_give(g_OspLogSem); + return OSP_ERROR; + } + + ret = fwrite(pbuf, sizeof(char), len, file); + if(ret <= 0) + { + UCP_PRINT_LOG("fwrite error ret:%d\n", ret); + fclose(file); + osp_sem_give(g_OspLogSem); + return OSP_ERROR; + } + + ret = fflush(file); + if(OSP_OK != ret) + { + UCP_PRINT_LOG("fflush error ret:%d\n", ret); + g_ucFflushEnable = 1; + } + else + { + UCP_PRINT_LOG("fflush ok ret:%d\n", ret); + g_ucFflushEnable = 0; + } + + fd = fileno(file); + ret = fsync(fd); + if(OSP_OK != ret) + { + UCP_PRINT_LOG("fsync error ret:%d\n", ret); + fclose(file); + osp_sem_give(g_OspLogSem); + return OSP_ERROR; + } + + osp_sem_give(g_OspLogSem); + + return OSP_OK; +} + +OSP_STATUS osp_arm_net_log_proc(char *pbuf, uint32_t len ,uint32_t logid, uint32_t msg_type) +{ + Osp_Ape_Msg_Head *pmsg_head = NULL; + + if ((NULL == pbuf) || (0 == len)) + { + return OSP_ERROR; + } + + pmsg_head = (Osp_Ape_Msg_Head *)malloc(1024); + if(NULL == pmsg_head) + { + UCP_PRINT_ERROR("osp_arm_log_proc ptmp is null\n"); + return OSP_ERROR; + } + + pmsg_head->src_core_id = logid; + pmsg_head->msg_size = APE_MSG_HEAD_SIZE + len; + pmsg_head->msg_type = msg_type; + + memcpy((pmsg_head+APE_MSG_HEAD_SIZE), pbuf, len); + + //osp_net_log_proc(pmsg_head); + + free(pmsg_head); + + return OSP_OK; +} + +OSP_STATUS osp_arm_log_proc(char *pbuf, uint32_t len ,uint32_t logid, uint32_t msg_type) +{ + uint32_t ul_port = 0; + + if ((NULL == pbuf) || (0 == len)) + { + return OSP_ERROR; + } + + switch (msg_type) + { + case OSP_BIN_LOG: + ul_port = 32768 + 2*logid; + break; + case OSP_STR_LOG: + ul_port = 32768 + 2*logid + 1; + break; + default: + break; + } + + /*get default cfg from file*/ + //osp_log_mode_get(); + + switch(g_ulArmLogMode) + { + case 0: + osp_write_diaglog(pbuf, len, logid, msg_type); + break; + case 1: + //g_ulArmNetLogRxNum++; + osp_net_log_proc(pbuf, len, ul_port); + //g_ulArmNetLogTxNum++; + break; + case 2: + osp_log_print((osp_sw_msg_info_t *)pbuf);/*ape结果输出到å±å¹•*/ + break; + default: + break; + } + + return OSP_OK; +} + +OSP_STATUS osp_ape_log_proc(osp_sw_msg_info_t *pMsg) +{ + uint32_t port = 0; + + if (NULL == pMsg) + { + return OSP_ERROR; + } + + port = osp_get_ape_port(pMsg); + + switch(g_ulApeLogMode) + { + case 0: + osp_write_diaglog((char*)pMsg->i8Data, pMsg->u16DataLen, pMsg->u8CoreId, pMsg->u8PktType); + break; + case 1: + osp_net_log_proc((char*)pMsg->i8Data, pMsg->u16DataLen, port); + break; + case 2: + osp_log_print(pMsg);/*ape结果输出到å±å¹•*/ + break; + default: + break; + } + + return OSP_OK; +} + +void osp_platform_log_proc(osp_sw_msg_info_t *pMsg) +{ + uint32_t port = 0; + + if (NULL == pMsg) + { + return; + } + + port = osp_get_ape_port(pMsg); + + switch(g_ucPlatformMode) + { + case 0: + osp_write_diaglog((char*)pMsg->i8Data, pMsg->u16DataLen, pMsg->u8CoreId, pMsg->u8PktType); + break; + case 1: + osp_net_log_proc((char*)pMsg->i8Data, pMsg->u16DataLen, port); + break; + case 2: + osp_log_print(pMsg);/*ape结果输出到å±å¹•*/ + break; + default: + break; + + } + + return; +} + +void osp_log_print(osp_sw_msg_info_t *pMsg) +{ + uint32_t i = 0; + + if (NULL == pMsg) + { + return; + } + + if(OSP_BIN_LOG == pMsg->u8PktType) + { + for (i = 0; i < pMsg->u16DataLen ;i++) + { + printf("%02x ", (uint8_t)pMsg->i8Data[i]); + + if ((i & 0x7) == 0x7) + { + printf("\n"); + } + } + } + else + { + write(STDOUT_FILENO, (char*)pMsg->i8Data, pMsg->u16DataLen);/*ape结果输出到å±å¹•*/ + } + + return; +} + + +bool osp_ip_is_null(char *ip) +{ + if(NULL == ip) + { + strcpy((char *)&gst_server_log.ip, "192.168.20.18"); + return true; + } + + return false; +} + +bool osp_path_is_null(char *path) +{ + if(NULL == path) + { + strcpy((char *)&gst_server_log.path, "./log/"); + return true; + } + + return false; +} + + +int8_t osp_log_mode_init() +{ + int8_t ret = 0; + FILE *fp = NULL; + + if (access(LOG_MODE_PATH, F_OK) != 0) + { + osp_mkdirs("./server/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + osp_mkdirs("./log/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + + fp = fopen(LOG_MODE_PATH, "w+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_log_mode_init file open failure \n"); + return ret; + } + + memcpy(gst_server_log.ip, "192.168.20.18", 15); + strcpy((char *)gst_server_log.path, "./log/"); + gst_server_log.ulport = 32768; + + ret = fprintf(fp,"ip:%s\r\nport:%u\napelog:%u\narmlog:%u\nlogpath:%s", \ + gst_server_log.ip, gst_server_log.ulport, g_ulApeLogMode, g_ulArmLogMode, gst_server_log.path); + if(ret < 0) + { + UCP_PRINT_ERROR("fwrite error ret:%d\n", ret); + fclose(fp); + return ret; + } + + fflush(fp); + fclose(fp); + } + + return ret; +} + +int8_t osp_log_mode_cfg() +{ + int8_t ret = 0; + FILE *fp = NULL; + + if (access("./server", F_OK) != 0) + { + osp_mkdirs("./server", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + fp = fopen(LOG_MODE_PATH, "w+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_log_mode_cfg file open failure \n"); + return ret; + } + + ret = fprintf(fp,"ip:%s\r\nport:%u\napelog:%u\narmlog:%u\nlogpath:%s", \ + gst_server_log.ip, gst_server_log.ulport, g_ulApeLogMode, g_ulArmLogMode, \ + gst_server_log.path); + if(ret < 0) + { + UCP_PRINT_ERROR("osp_log_mode_cfg fprintf error ret:%d\n", ret); + fclose(fp); + return ret; + } + + fflush(fp); + fclose(fp); + + return ret; +} + + +void osp_cfg_default_log_mode() +{ + + memset(gst_server_log.ip, 0, 16); + memset(gst_server_log.path, 0, 128); + + strcpy((char *)gst_server_log.ip, "192.168.20.18"); + strcpy((char *)gst_server_log.path, "./log/"); + + gst_server_log.ulport = 32768; + g_ulApeLogMode = 0; + g_ulArmLogMode = 0; + + return; +} + + +void osp_log_mode_get() +{ + FILE *fp = NULL; + char *ip = NULL; + char *path = NULL; + char buf[128] = {0}; + + /*é…ç½®gst_server_log默认值*/ + osp_cfg_default_log_mode(); + + fp = fopen(LOG_MODE_PATH, "r"); + if (NULL == fp) + { + UCP_PRINT_ERROR("osp_log_mode_get file open failure \n"); + return; + } + + while(fgets(buf, 128, fp)) + { + if(strstr(buf, "ip:")) + { + memset(gst_server_log.ip, 0, 16); + ip = strtok((char *)(buf+3), "\r\n"); + if(false == osp_ip_is_null(ip)) + { + strcpy((char *)gst_server_log.ip, ip); + } + continue; + } + if(strstr(buf, "port:")) + { + gst_server_log.ulport = (uint32_t)atoi(buf+5); + //strncpy((char *)&gst_server_log.ulport, buf+5, 2); + continue; + } + if(strstr(buf, "apelog:")) + { + g_ulApeLogMode = (uint32_t)(buf[7] - '0'); + continue; + } + if(strstr(buf, "armlog:")) + { + g_ulArmLogMode = (uint32_t)(buf[7] - '0'); + continue; + } + if(strstr(buf, "logpath:")) + { + memset(gst_server_log.path, 0, 128); + path = strtok((char *)(buf+8), "\r\n"); + if(false == osp_path_is_null(path)) + { + strcpy((char *)gst_server_log.path, path); + } + continue; + } + } + + /*UCP_PRINT_ERROR("ip:%s port:%u g_ulApeLogMode:%u g_ulArmLogMode:%u\n",\ + gst_server_log.ip,gst_server_log.ulport,\ + g_ulApeLogMode, g_ulArmLogMode);*/ + + fclose(fp); + + return; +} + +uint32_t osp_filter_char(char *str, char c) +{ + uint8_t i = 0; + uint32_t ulret = 0; + + while(str[i] != '\0') + { + if(str[i] == c) + { + ulret = (uint32_t)(str[++i] - '0'); + printf("%d\n", ulret); + break; + } + i++; + } + + return ulret; +} + +void osp_dbg_log_main(osp_sw_msg_info_t *pMsg) +{ + if (NULL == pMsg) + { + return; + } + + switch (pMsg->u8PktType) + { + case OSP_STR_LOG: + case OSP_BIN_LOG: + osp_ape_log_proc(pMsg); + break; + case OSP_PLATFORM_LOG: + osp_platform_log_proc(pMsg); + break; + default: + break; + } + + return; +} + + +void osp_log_init(void) +{ + uint32_t i = 0; + uint32_t j = 0; + + /*create armã€ape log cfg file*/ + osp_log_mode_init(); + + /*get default cfg from cfg file*/ + osp_log_mode_get(); + + osp_log_msg_create(); + + g_OspLogSem = osp_get_init_mem(sizeof(lx_sem_t)); + osp_semsm_create(g_OspLogSem); + + srand(time(NULL)); + log_rand = rand(); + + for (i = 0; i < MAX_LOG_CFG_NUM; i++) + { + for(j = 0; j< 4; j++) + { + log_file_cfg_table[i][j].valied = 0; + log_file_cfg_table[i][j].max_file_size_M = 0; + log_file_cfg_table[i][j].max_file_num = 0; + log_file_cfg_table[i][j].with_time = 0; + log_file_cfg_table[i][j].key = 0; + } + + } + + osp_base_logid = osp_create_log((char *)gst_server_log.path, MAX_FILE_SIZE, MAX_FILE_NUM, 1); + + return; +} + +void osp_log_cfg_reload() +{ + uint32_t i = 0; + uint32_t j = 0; + + for (i = 0; i < MAX_LOG_CFG_NUM; i++) + { + for(j = 0; j< 4; j++) + { + log_file_cfg_table[i][j].valied = 1; + log_file_cfg_table[i][j].key = 0; + log_file_cfg_table[i][j].cur_sum_len = 0; + log_file_cfg_table[i][j].cur_file_idx = 0; + log_file_cfg_table[i][j].file = NULL; + } + + } + + return; +} + +int32_t osp_fflush_all_logfile(void) +{ + uint32_t i = 0; + uint32_t j = 0; + FILE *file; + uint32_t fd; + + for (i = 0; i < MAX_LOG_CFG_NUM; i++) + { + for(j=0; j<4; j++) + { + file = osp_get_log_file(i, j); + if (file) + { + fflush(file); + fd = fileno(file); + fsync(fd); + } + } + } + return 0; + +} + +/* æ ¹æ®æœ€æ–°éœ€æ±‚,Logçš„å¤„ç†æœºåˆ¶æ”¹å›ž1.0的状æ€ï¼Œåœ¨æŽ¥å—å›žè°ƒå‡½æ•°ä¸­ç›´æŽ¥å¤„ç† */ +#if 1 +#define OSP_LOG_MSG_Q_KEY (0x1011) +#define OSP_LOG_SEND_TYPE (0xFA) /* å‘逿¶ˆæ¯æ—¶çš„æ¶ˆæ¯ç±»åž‹ */ +int32_t gint_log_msg_id = -1; + +uint8_t osp_log_msg_create(void) +{ + gint_log_msg_id = msgget(OSP_LOG_MSG_Q_KEY, IPC_CREAT); + if (-1 == gint_log_msg_id) + { + UCP_PRINT_ERROR("[osp_log_msg_create]: msgget return error\r\n"); + return 1; + } + UCP_PRINT_LOG("[osp_log_msg_create]: gint_log_msg_id = %d\r\n", gint_log_msg_id); + return 0; +} + +int32_t osp_log_msg_get_id(void) +{ + return gint_log_msg_id; +} + +int32_t osp_log_msg_send(int32_t i32que_id, uint8_t *pu8msg_add, uint32_t u32msg_size) +{ + int32_t i32_ret = 0; + osp_log_msg_info_t* plog_msg = NULL; + + if (NULL == pu8msg_add) + { + UCP_PRINT_ERROR("[osp_log_msg_send]: buffer addr is NULL!!!\r\n"); + return -1; + } + //printf("send: que_id = %d, addr = %p, size = %d\r\n", i32que_id, pu8msg_add, u32msg_size); + + plog_msg = (osp_log_msg_info_t *)pu8msg_add; + plog_msg->i64msg_type = OSP_LOG_SEND_TYPE; + i32_ret = msgsnd(i32que_id, pu8msg_add, (u32msg_size - sizeof(int64_t)), IPC_NOWAIT); + if (0 != i32_ret) + { + UCP_PRINT_LOG("[osp_log_msg_send]: msgsnd return err(%d)\r\n", i32_ret); + } + return u32msg_size; +} + +int32_t osp_log_msg_recv(int32_t i32que_id, uint8_t *pu8msg_add, uint32_t u32max_size) +{ + int32_t i32_ret = 0; + osp_log_msg_info_t* plog_msg = NULL; + + if (NULL == pu8msg_add) + { + UCP_PRINT_ERROR("[osp_log_msg_recv]: buffer addr is NULL!!!\r\n"); + return -1; + } + + UCP_PRINT_LOG("[osp_log_msg_recv]: i32que_id(%d), size = %d\r\n", i32que_id, u32max_size); + + plog_msg = (osp_log_msg_info_t*)pu8msg_add; + i32_ret = msgrcv(i32que_id, pu8msg_add, (u32max_size-sizeof(uint64_t)), 0, 0); + if (-1 == i32_ret) + { + UCP_PRINT_LOG("[osp_log_msg_recv]: msgrcv return err(%d) %s\r\n", i32_ret, strerror(errno)); + return -2; + } + if (OSP_LOG_SEND_TYPE != plog_msg->i64msg_type) + { + UCP_PRINT_ERROR("[osp_log_msg_recv]: msg_type err(%ld)\r\n", plog_msg->i64msg_type); + return -3; + } + return (i32_ret + sizeof(int64_t)); +} + +int32_t osp_log_msg_proc(uint8_t *pu8msg_add, uint32_t u32msg_size) +{ + MsgTransferHeader_t *pmsg_transfer_header = NULL; + osp_sw_msg_info_t *pstsw_msg_info = NULL; + + uint8_t u8msg_num = 0; + uint32_t u32msg_type = 0; + uint32_t u32log_size = 0; + uint32_t u32log_num = 0; + uint32_t u32msg_cur_size = 0; + + if (NULL == pu8msg_add) + { + UCP_PRINT_ERROR("[osp_log_msg_proc]: msg_addr is NULL!!!\r\n"); + return -1; + } + + pmsg_transfer_header = (MsgTransferHeader_t*)pu8msg_add; + + u8msg_num = pmsg_transfer_header->numMsg; + u32msg_cur_size += 4; /* msgType */ + //printf("[osp_log_msg_proc]: u8msg_num = %d\r\n", u8msg_num); + + for (uint8_t u8msg_loop = 0; u8msg_loop < u8msg_num; u8msg_loop++) + { + u32msg_type = *(uint32_t*)(pu8msg_add+u32msg_cur_size); + //printf("[osp_log_msg_proc]: u32msg_type = 0x%x\r\n", u32msg_type); + + if (MSG_TRANSFER_LOG_MSG_TYPE == u32msg_type) + { + /* Log */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(pu8msg_add+u32msg_cur_size); + u32log_num = u32log_size/SPU_LOG_CLIENT_BUF_SIZE; + u32msg_cur_size += 4; + + for (uint16_t u16loop = 0; u16loop < u32log_num; u16loop++) + { + pstsw_msg_info = (osp_sw_msg_info_t *)(pu8msg_add + u32msg_cur_size + u16loop*SPU_LOG_CLIENT_BUF_SIZE); + + //printf("i8Data = %p, len = %d, coreid = %d, type = %d\r\n", pstsw_msg_info->i8Data, pstsw_msg_info->u16DataLen, pstsw_msg_info->u8CoreId, pstsw_msg_info->u8PktType); + //osp_write_diaglog((char*)pstsw_msg_info->i8Data, pstsw_msg_info->u16DataLen, pstsw_msg_info->u8CoreId, pstsw_msg_info->u8PktType); + osp_dbg_log_main(pstsw_msg_info); + } + u32msg_cur_size += u32log_size; + } + else if (MSG_TRANSFER_SHELL_MSG_TYPE == u32msg_type) + { + UCP_PRINT_LOG("SHELL \r\n"); + /* Shell */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(pu8msg_add+u32msg_cur_size); + u32msg_cur_size += 4; + u32msg_cur_size += u32log_size; + } + else + { + UCP_PRINT_LOG("OAM \r\n"); + /* OAM */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(pu8msg_add+u32msg_cur_size); + u32msg_cur_size += 4; + u32msg_cur_size += u32log_size; + } + } + return 0; +} + +uint32_t rx_callback_oam(const char* buf,uint32_t payloadSize) +{ + osp_log_msg_info_t stosp_log_msg; + int32_t i32log_que_id = osp_log_msg_get_id(); + + memset(&stosp_log_msg, 0, sizeof(stosp_log_msg)); + stosp_log_msg.pu8msg_addr = (uint8_t *)buf; + stosp_log_msg.u32msg_size = payloadSize; + + //UCP_PRINT_LOG("oam recv: buf = %p, size = %d\r\n", buf, payloadSize); + + osp_log_msg_send(i32log_que_id, (uint8_t*)&stosp_log_msg, sizeof(stosp_log_msg)); + + return payloadSize; +} + + +uint64_t osp_oam_msg_proc_task(void) +{ + osp_log_msg_info_t stosp_log_msg; + int32_t i32_msg_id = osp_log_msg_get_id(); + static uint32_t su32LogCnt = 0; + + ++su32LogCnt; + //printf("LogTask Enter >>> %d\r\n", su32LogCnt); + //while(1) + //{ + memset(&stosp_log_msg, 0, sizeof(stosp_log_msg)); + if (0 > osp_log_msg_recv(i32_msg_id, (uint8_t*)&stosp_log_msg, sizeof(stosp_log_msg))) + { + UCP_PRINT_ERROR("[osp_oam_msg_proc_task]: osp_log_msg_recv return err\r\n"); + //continue; + return OSP_ERROR; + } + UCP_PRINT_LOG("task: addr = %p ,size = %d\r\n", stosp_log_msg.pu8msg_addr, stosp_log_msg.u32msg_size); + osp_log_msg_proc(stosp_log_msg.pu8msg_addr, stosp_log_msg.u32msg_size); + //} + return OSP_OK; +} +#endif + +int32_t osp_create_oam_msg_task(uint8_t cpu, uint8_t pri) +{ + OSP_TASKMSG_REG task_reg_tabl; + + memset(&task_reg_tabl, 0, sizeof(task_reg_tabl)); + task_reg_tabl.TaskId = OspDbgLog; + task_reg_tabl.TaskPri = RT_NOMSG_PRI(pri); + task_reg_tabl.Init = NULL; + task_reg_tabl.MainLoop = (OSP_FUNCPTR)osp_oam_msg_proc_task; + task_reg_tabl.Cpu = cpu; + + return osp_regtask(&task_reg_tabl); +} + + +#if 0 +uint32_t rx_callback_oam(const char* buf,uint32_t payloadSize) +{ + MsgTransferHeader_t *pmsg_transfer_header = NULL; + osp_sw_msg_info_t *pstsw_msg_info = NULL; + + uint8_t u8msg_num = 0; + uint32_t u32msg_type = 0; + uint32_t u32log_size = 0; + uint32_t u32log_num = 0; + uint32_t u32msg_cur_size = 0; + + if (NULL == buf) + { + UCP_PRINT_ERROR("[osp_log_msg_proc]: msg_addr is NULL!!!\r\n"); + return -1; + } + + pmsg_transfer_header = (MsgTransferHeader_t*)buf; + + u8msg_num = pmsg_transfer_header->numMsg; + u32msg_cur_size += 4; /* msgType */ + //printf("[osp_log_msg_proc]: u8msg_num = %d\r\n", u8msg_num); + + for (uint8_t u8msg_loop = 0; u8msg_loop < u8msg_num; u8msg_loop++) + { + u32msg_type = *(uint32_t*)(buf+u32msg_cur_size); + //printf("[osp_log_msg_proc]: u32msg_type = 0x%x\r\n", u32msg_type); + + if (MSG_TRANSFER_LOG_MSG_TYPE == u32msg_type) + { + /* Log */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(buf+u32msg_cur_size); + u32log_num = u32log_size/SPU_LOG_CLIENT_BUF_SIZE; + u32msg_cur_size += 4; + + for (uint16_t u16loop = 0; u16loop < u32log_num; u16loop++) + { + pstsw_msg_info = (osp_sw_msg_info_t *)(buf + u32msg_cur_size + u16loop*SPU_LOG_CLIENT_BUF_SIZE); + + //printf("i8Data = %p, len = %d, coreid = %d, type = %d\r\n", pstsw_msg_info->i8Data, pstsw_msg_info->u16DataLen, pstsw_msg_info->u8CoreId, pstsw_msg_info->u8PktType); + //osp_write_diaglog((char*)pstsw_msg_info->i8Data, pstsw_msg_info->u16DataLen, pstsw_msg_info->u8CoreId, pstsw_msg_info->u8PktType); + osp_dbg_log_main(pstsw_msg_info); + } + u32msg_cur_size += u32log_size; + } + else if (MSG_TRANSFER_SHELL_MSG_TYPE == u32msg_type) + { + UCP_PRINT_LOG("SHELL \r\n"); + /* Shell */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(buf+u32msg_cur_size); + u32msg_cur_size += 4; + u32msg_cur_size += u32log_size; + } + else + { + UCP_PRINT_LOG("OAM \r\n"); + /* OAM */ + u32msg_cur_size += 8; /* log_size */ + u32log_size = *(uint32_t*)(buf+u32msg_cur_size); + u32msg_cur_size += 4; + u32msg_cur_size += u32log_size; + } + } + return u32msg_cur_size; +} +#endif + diff --git a/osp/src/ospMem.c b/osp/src/ospMem.c new file mode 100644 index 0000000..799ef08 --- /dev/null +++ b/osp/src/ospMem.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "osp.h" + +char *OspMemBaseOrg; +char *OspMemBase; +OSP_STATUS osp_mem_init(void) +{ +// int fd; +// fd=open("./ospmem",O_CREAT|O_RDWR, 0777); +// ftruncate(fd,OSP_MEM_SIZE); +// OspMemBase=mmap(0,OSP_MEM_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); + + OspMemBase = malloc(OSP_MEM_SIZE); + if (NULL == OspMemBase) + { + return OSP_ERROR; + } + + OspMemBaseOrg = OspMemBase; + OspMemBase = (char *)(OSP_ROUND_UP(OspMemBase, 32)); + + return OSP_OK; +} + +void osp_print_tatal_mem(void) +{ + osp_debug_out_with_time(RUN_DEBUG_LEVEL, "OspMemBase = %#lx,Osp Use Total Mem is %dKB\n", (uint64_t)OspMemBase,(OspMemBase - OspMemBaseOrg) >> 10); +} + +char *osp_alloc_mem(uint32_t Len) +{ + char *p = osp_get_buffer(Len, BUF_FOR_MEMORY, BUFFER_NORMAL_LEVEL); + if (NULL == p) + { + return NULL; + } + osp_atomic_inc((int32_t *)&TASK_MEM_ALLOCCNT(CURRENT_TASKID)); + return p; + +} + +void osp_free_mem(char *pbuf) +{ + osp_atomic_inc((int32_t *)&TASK_MEM_FREECNT(CURRENT_TASKID)); + osp_free_buffer(pbuf); +} + +char *osp_get_init_mem(int32_t len) +{ + char *p; + + p = OspMemBase; + OspMemBase += len; + OspMemBase = (char *)OSP_ROUND_UP(OspMemBase, 32); + + osp_assert((OspMemBase - OspMemBaseOrg) < OSP_MEM_SIZE); + + return p; +} + + + diff --git a/osp/src/ospMsg.c b/osp/src/ospMsg.c new file mode 100644 index 0000000..9e0a8b2 --- /dev/null +++ b/osp/src/ospMsg.c @@ -0,0 +1,360 @@ +#include +#include +#include + +#include + +#include "osp.h" +#include "ospMsg.h" + +#define TIME_MSG_NUM 512 //origin: 8192 +#define TIME_MSG_MSK 511 //origin: 8191 + + +#define TIMER_MSG_SIZE sizeof(Osp_Timer_Msg_Block) + +/*timer msg has msg_head only*/ +Osp_Timer_Msg_Block *TimerMsg[TIME_MSG_NUM] = {0}; + +char *gOspMsgQue = 0; + +OSP_STATUS osp_msg_que_init(void) +{ +// int ret; + int32_t tasknum = osp_get_task_num(); + int32_t i; +// int TaskId; + + gOspTask = (OSP_TASKCB *)osp_get_init_mem(OSP_ROUND_UP(sizeof(OSP_TASKCB), 32) * tasknum); + gOspMsgQue = osp_get_init_mem((OSP_ROUND_UP(OSP_MSG_QUE_SIZE, 32)) * tasknum); + TimerMsg[0] = (Osp_Timer_Msg_Block *)osp_get_init_mem(TIME_MSG_NUM * OSP_ROUND_UP(sizeof(TIMER_MSG_SIZE), 32)); + + + + for (i = 0; i < TIME_MSG_NUM; i++) + { + TimerMsg[i] = (Osp_Timer_Msg_Block *)((uint64_t)TimerMsg[0] + i * OSP_ROUND_UP(sizeof(TIMER_MSG_SIZE), 32)); + } + + + if (0 == g_ProcessId) + { + memset(gOspTask, 0, (OSP_ROUND_UP(sizeof(OSP_TASKCB), 32) * tasknum)); + for (i = 0; i < tasknum; i++) + { + gOspTask[i].MsgQOffset = OSP_ROUND_UP(OSP_MSG_QUE_SIZE, 32) * i; + } + } + return OSP_OK; +} + +int32_t osp_create_msgq(Osp_MsgQ_Tcb *que, char *name) +{ + return osp_create_softque(&OSP_MSGQ_QUE(que), OSP_MEGQ_DEP, name); +} + +int32_t osp_msg_enque(uint64_t value, Osp_MsgQ_Tcb *que) +{ + return osp_soft_que_enque(value, &OSP_MSGQ_QUE(que), QUE_NEED_WAKE); + +} + +int32_t osp_msg_deque(uint64_t *pvalue, Osp_MsgQ_Tcb *que) +{ + return osp_softque_deque(pvalue, &OSP_MSGQ_QUE(que), QUE_ISBLOCK); + +} + +int32_t osp_msg_dequetry(uint64_t *pvalue, Osp_MsgQ_Tcb *que) +{ + return osp_softque_dequetry(pvalue, &OSP_MSGQ_QUE(que)); +} + + +int32_t osp_msg_deque_timeout(uint64_t *pvalue, Osp_MsgQ_Tcb *que, uint32_t timeout) +{ + return osp_softque_dequeTimeOut(pvalue, &OSP_MSGQ_QUE(que), timeout); +} + + + + + +Osp_Msg_Head *osp_alloc_msg(uint32_t Len) +{ + Osp_Msg_Head *pMsg; + osp_assert(Len > 0); + pMsg = osp_get_buffer(Len + MSG_HEAD_SIZE, BUF_FOR_MSG, BUFFER_NORMAL_LEVEL); + if (pMsg) + { + TASK_MSG_ALLOCCNT(CURRENT_TASKID)++; + } + return pMsg; +} + +Osp_Msg_Head *osp_alloc_msgId(uint32_t Len, int32_t id) +{ + Osp_Msg_Head *pMsg; + osp_assert(Len > 0); + pMsg = osp_get_buffer(Len + MSG_HEAD_SIZE, BUF_FOR_MSG, BUFFER_NORMAL_LEVEL); + if (pMsg) + { + osp_atomic_inc((int32_t *) & TASK_MSG_ALLOCCNT(id)); + } + return pMsg; +} + + +Osp_Msg_Head *osp_alloc_msgTimer(void) +{ + static int32_t cnt = 0; + Osp_Msg_Head *pMsg = (Osp_Msg_Head *)TimerMsg[(cnt++) & TIME_MSG_MSK]; + return pMsg; + + +} +Osp_Msg_Head*osp_alloc_msg_print_log(void) +{ + + Osp_Msg_Head *pMsg = osp_get_buffer(0 + MSG_HEAD_SIZE, BUF_FOR_MSG, BUFFER_PRINTLOG_LEVEL); + if (pMsg) + { + osp_atomic_inc((int32_t *)&TASK_LOGMSG_ALLOCCNT(CURRENT_TASKID)); + } + return pMsg; +} + + + + + +void osp_free_msg(Osp_Msg_Head *pHead) +{ + osp_atomic_inc((int32_t *)&TASK_MSG_FREECNT(CURRENT_TASKID)); + if (IS_TIMER_MSG(pHead)) + return; + osp_free_buffer(pHead); +} +int32_t osp_free_msgid(Osp_Msg_Head *pHead, int32_t id) +{ + osp_atomic_inc((int32_t *)&TASK_MSG_FREECNT(id)); + if (IS_TIMER_MSG(pHead)) + return 0; + return osp_free_buffer(pHead); +} + +OSP_STATUS osp_send_msg(Osp_Msg_Head *p_MsgHead) +{ + OSP_STATUS ret; + // U8 *pComm; + uint32_t TaskId; +// Osp_Msg_Head *p_NMsgHead; + OSP_FUNCPTR func_handle; + uint64_t que; + + osp_assert(NULL != p_MsgHead); + + TaskId = p_MsgHead->DstId; + + func_handle = TASK_TXMSG_HANDLE(TaskId); + if (NULL == func_handle) + { + osp_debug_out_with_time(ERR_DEBUG_LEVEL, "task%d can not send msg to task%d\n", CURRENT_TASKID, TaskId); + osp_free_msg(p_MsgHead); + + return OSP_ERROR; + } + + + que = TASK_MSG_QUE(TaskId); + + + osp_atomic_inc((int32_t *)&TASK_MSG_TXCNT(CURRENT_TASKID)); + + ret = func_handle(p_MsgHead, que); +// ret = osp_msg_enque(MSG_TO_OFFSET(p_MsgHead), (Osp_MsgQ_Tcb *)TASK_MSGQ(TaskId)); + if (OSP_OK != ret) + { +// osp_free_msg(p_MsgHead); + osp_debug_out_with_time(ERR_DEBUG_LEVEL, "task%d send msg to task%d msgtype 0x%x failed!\n", CURRENT_TASKID, TaskId, p_MsgHead->MsgType); + osp_atomic_inc((int32_t *)&TASK_MSG_FULLCNT(TaskId)); + return ret; + } + return OSP_OK; + +} +OSP_STATUS osp_send_msgId(Osp_Msg_Head *p_MsgHead, int32_t id) +{ + OSP_STATUS ret; +// U8 *pComm; + uint32_t TaskId; +// Osp_Msg_Head *p_NMsgHead; +// OSP_FUNCPTR func_handle; + + osp_assert(NULL != p_MsgHead); + + + TaskId = p_MsgHead->DstId; + + osp_atomic_inc((int32_t *)&TASK_MSG_TXCNT(id)); + ret = osp_msg_enque(MSG_TO_OFFSET(p_MsgHead), (Osp_MsgQ_Tcb *)TASK_MSGQ(TaskId)); + if (OSP_OK != ret) + { +// osp_free_msgid(p_MsgHead,id); + osp_atomic_inc((int32_t *)&TASK_MSG_FULLCNT(TaskId)); + return ret; + } + return OSP_OK; +} + +Osp_Msg_Head *osp_rev_msg(void) +{ + uint32_t TaskId; + OSP_FUNCPTR func_handle; + uint64_t que; + + TaskId = CURRENT_TASKID; + + que = TASK_MSG_QUE(TaskId); + func_handle = TASK_RXMSG_HANDLE(TaskId); + + return (Osp_Msg_Head *)func_handle(que); + +} + +Osp_Msg_Head *osp_rev_msgid(int32_t id) +{ + + uint64_t RcvMsg; + (void)osp_msg_deque((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(id))); + osp_atomic_inc((int32_t*)&TASK_MSG_RXCNT(id)); + + return OFFSET_TO_MSG(RcvMsg); +} + + +Osp_Msg_Head *osp_rev_msgtry(void) +{ + + uint64_t RcvMsg; + int32_t ret; + ret = osp_msg_dequetry((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(CURRENT_TASKID))); + if (0 != ret) + { + return NULL; + } + osp_atomic_inc((int32_t *)&TASK_MSG_RXCNT(CURRENT_TASKID)); + return OFFSET_TO_MSG(RcvMsg); +} + +Osp_Msg_Head *osp_rev_msg_timeout(uint32_t timeout) +{ + + uint64_t RcvMsg; + int32_t ret; + ret = osp_msg_deque_timeout((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(CURRENT_TASKID)), timeout); + + if (0 != ret) + { + return NULL; + } + osp_atomic_inc((int32_t *)&TASK_MSG_RXCNT(CURRENT_TASKID)); + return OFFSET_TO_MSG(RcvMsg); +} + +Osp_Msg_Head *osp_rev_idmsg(uint32_t Id) +{ + + uint64_t RcvMsg; + (void)osp_msg_deque((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(Id))); + osp_atomic_inc((int32_t *)&TASK_MSG_RXCNT(Id)); + + return OFFSET_TO_MSG(RcvMsg); +} + +Osp_Msg_Head *osp_rev_idmsgtry(uint32_t Id) +{ + + uint64_t RcvMsg; + int32_t ret; + ret = osp_msg_dequetry((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(Id))); + + if (0 != ret) + { + return NULL; + } + osp_atomic_inc((int32_t *)&TASK_MSG_RXCNT(Id)); + return OFFSET_TO_MSG(RcvMsg); +} + +Osp_Msg_Head *osp_rev_id_msg_timeout(uint32_t timeout, uint32_t Id) +{ + + uint64_t RcvMsg; + int32_t ret; + ret = osp_msg_deque_timeout((uint64_t *)&RcvMsg, (Osp_MsgQ_Tcb *)(TASK_MSGQ(Id)), timeout); + + if (0 != ret) + { + return NULL; + } + osp_atomic_inc((int32_t *)&TASK_MSG_RXCNT(Id)); + return OFFSET_TO_MSG(RcvMsg); +} + + + + +void osp_show_msg_que_info(void) +{ + int32_t i; + Osp_MsgQ_Tcb *MsgQ; + char *pbuf; + int32_t len = 0; + char *p; + + pbuf = malloc(10*1024); + osp_assert(pbuf != NULL); + + len += osp_get_soft_que_desc(pbuf + len); + + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (gOspTask[i].Active) + { + + MsgQ = TASK_MSGQ(i); + len += osp_get_soft_que_info(&OSP_MSGQ_QUE(MsgQ), pbuf + len); + + } + } + + + for (p = pbuf; p < pbuf+len; p += (MAX_DBGINFO_LEN-1)) + { + osp_debug_out(CMD_DEBUG_LEVEL, "%s", p); + } + free(pbuf); +} + + +OSP_STATUS osp_send_por_msg(Osp_Msg_Head *p_MsgHead, Osp_MsgQ_Tcb *que) +{ + int32_t ret; + ret = osp_msg_enque(MSG_TO_OFFSET(p_MsgHead), que); + + return ret; + +} + +Osp_Msg_Head *osp_rev_promsg(Osp_MsgQ_Tcb *que) +{ + + uint64_t RcvMsg; + + (void)osp_msg_deque((uint64_t *)&RcvMsg, que); + + return OFFSET_TO_MSG(RcvMsg); +} + + diff --git a/osp/src/ospNetShell.c b/osp/src/ospNetShell.c new file mode 100644 index 0000000..8cefeaf --- /dev/null +++ b/osp/src/ospNetShell.c @@ -0,0 +1,277 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "osp.h" + + +#define MAX_CMD_LEN (150) /*the max length of a shell command */ + +typedef struct tag_Osp_Net_Shell_Head +{ + uint32_t ip; + uint32_t port; /*is just msgdata len, not include Osp_Msg_Head*/ + uint32_t res; + uint32_t res1; +}Osp_Net_Shell_Head; + +#define NET_SHELL_HEAD_SIZE sizeof(Osp_Net_Shell_Head) + + +extern struct termios saveterm; +extern char **arg; + +extern int32_t nCmdField; +extern int32_t maxCmdField; + +int32_t sockser; +struct sockaddr_in addrser, addrcli; +socklen_t addrlen; + +#define OSP_MAX_SHELL_NUM 32 + +int32_t net_shell_txudp_id = -1; +uint32_t net_shell_res = 0; + +OSP_UDP_TASK_DATA udp_shell_rx_task = {OSP_NETSHELL_RX_PORT, 1, }; + + + + +int32_t osp_local_shell_main(char *szCmdNow) +{ + struct termios nt; + int32_t ret; + char shellbuf[MAX_CMD_LEN] = {0}; + char buf[4096] = {0}; + + tcgetattr(STDIN_FILENO, &saveterm); + nt = saveterm; + nt.c_lflag &= (~ICANON); + nt.c_lflag &= (~ECHO); + nt.c_cc[VMIN] = 1; + nt.c_cc[VTIME] = 0; + tcsetattr(STDIN_FILENO, TCSANOW, &nt); + + arg = (char **)malloc(maxCmdField *sizeof(arg[0])); + + osp_set_prompt(); + { + + memcpy(shellbuf, szCmdNow, strlen(szCmdNow)); + shellbuf[strlen(szCmdNow)] = '\0'; + + osp_getcmdarg(szCmdNow); + ret = osp_execcmd(); + + if (OSP_ERROR == ret) + { + sprintf(shellbuf + strlen(shellbuf), "%s", " > remeotelocalfile"); + system(shellbuf); + { + /*just simple cmd is supported*/ + FILE *file; + file = fopen("./remeotelocalfile", "rb"); + fread(buf, 4096, 1, file); + //printf("osp_local_shell_main:buf = %s;\n" , buf); + osp_debug_out(CMD_DEBUG_LEVEL, "%s", buf); + fclose(file); + } + + } + } + free(arg); + return ret; +} + + + +int32_t osp_enable_net_shell(void) +{ + + osp_resume_task(ospnetshellrx); + return 0; +} + + + +int32_t osp_disable_net_shell(void) +{ + int32_t udpid; + + udpid= osp_get_rxudp("127.0.0.1", OSP_NETSHELL_RX_PORT); + osp_del_udp(udpid); + + udpid= osp_get_txudp("127.0.0.1", OSP_NETSHELL_RX_PORT); + osp_del_udp(udpid); + + return 0; +} + +int32_t osp_enable_net_shell_with_port(int32_t port) +{ + int32_t txudpid; + int32_t rxudpid; + + if (port < 0) + { + return -1; + } + + osp_disable_net_shell(); + + txudpid = osp_create_txucp(port, "127.0.0.1"); + rxudpid = osp_create_rxucp(port); + + osp_set_net_task_msg_que(ospnetshellrx, txudpid, rxudpid); + osp_resume_task(ospnetshellrx); + return 0; +} + + +int32_t osp_net_shell_init(void) +{ + osp_suspend_task(CURRENT_TASKID); + return 0; +} + +int32_t osp_net_msg_main(Osp_Msg_Head *pMsg) +{ + struct in_addr addr1; + uint32_t ip; + int32_t port; + Osp_Net_Shell_Head *pShell; + int32_t udpid; + + pShell = (Osp_Net_Shell_Head *)(pMsg + 1); + ip = pShell->ip; + port = pShell->port; + memcpy(&addr1, &ip, 4); + + if (!osp_check_udpid(net_shell_txudp_id)) + { + udpid = osp_get_txudp(inet_ntoa(addr1), port); + if (osp_check_udpid(udpid)) + { + net_shell_txudp_id = udpid; + } + else + { + net_shell_txudp_id = osp_create_txucp(port, inet_ntoa(addr1)); + } + } + else if (net_shell_txudp_id != osp_get_txudp(inet_ntoa(addr1), port)) + { + osp_del_udp(net_shell_txudp_id); + net_shell_txudp_id = osp_create_txucp(port, inet_ntoa(addr1)); + } + + int32_t len = pMsg->MsgSize + MSG_HEAD_SIZE + NET_SHELL_HEAD_SIZE; + + printf("ip:port:res:res1 %d:%d:%d:%d", pShell->ip, + pShell->port, pShell->res, pShell->res1); + + osp_udp_send((char *)(pMsg), len, net_shell_txudp_id); + osp_free_msg(pMsg); + return 0; + +} +int32_t osp_net_shell_main(Osp_Msg_Head *pMsg) +{ + struct in_addr addr1; + uint32_t ip; + int32_t port; + Osp_Net_Shell_Head *pShell; + int32_t udpid; + + pShell = (Osp_Net_Shell_Head *)(pMsg + 1); + ip = pShell->ip; + port = pShell->port; + memcpy(&addr1, &ip, 4); + + if (!osp_check_udpid(net_shell_txudp_id)) + { + udpid = osp_get_txudp(inet_ntoa(addr1), port); + if (osp_check_udpid(udpid)) + { + net_shell_txudp_id = udpid; + } + else + { + net_shell_txudp_id = osp_create_txucp(port, inet_ntoa(addr1)); + } + } + else if (net_shell_txudp_id != osp_get_txudp(inet_ntoa(addr1), port)) + { + osp_del_udp(net_shell_txudp_id); + + net_shell_txudp_id = osp_create_txucp(port, inet_ntoa(addr1)); + + } + +// memcpy(&addr1, &(pMsg->SrcId), 4); + + osp_local_shell_main((char *)(pMsg) + MSG_HEAD_SIZE + NET_SHELL_HEAD_SIZE); + osp_free_msg(pMsg); + return 0; + +} + +void osp_set_net_shell_rev(uint32_t data) +{ + net_shell_res = data; + +} + +uint32_t osp_get_net_shell_rev(void) +{ + return net_shell_res; + +} + + +int32_t osp_net_shell_out(Osp_Msg_Head *pMsg) +{ + Osp_Msg_Head *pMsgN; + int32_t len; + Osp_Net_Shell_Head *pShell; + + if ((NULL == pMsg) || (-1 == net_shell_txudp_id)) + { + return -1; + } + + len = pMsg->MsgSize + MSG_HEAD_SIZE + NET_SHELL_HEAD_SIZE; + + pMsgN = osp_alloc_msg(len); + if (NULL != pMsgN) + { + memcpy((char *)pMsgN, (char *)pMsg, MSG_HEAD_SIZE); + pMsgN->MsgType = OSP_SHELL_TYPE; + + pShell = (Osp_Net_Shell_Head *)(pMsgN+1); + pShell->ip = 0; + pShell->port =0; + pShell->res = osp_get_net_shell_rev(); + + memcpy((char *)pMsgN + MSG_HEAD_SIZE + NET_SHELL_HEAD_SIZE, (char *)pMsg + MSG_HEAD_SIZE, len); + + osp_udp_send((char *)(pMsgN), len, net_shell_txudp_id); + osp_free_msg(pMsgN); + + return 0; + } + return -1; +} + + + + + diff --git a/osp/src/ospOtherMsg.c b/osp/src/ospOtherMsg.c new file mode 100644 index 0000000..843478e --- /dev/null +++ b/osp/src/ospOtherMsg.c @@ -0,0 +1,56 @@ +#include +#include +#include +#include + +#include + +#include "osp.h" + + + + +int32_t osp_send_othermsg(Osp_Msg_Head *pMsg, uint64_t data) +{ + int32_t ret = OSP_OK; + OSP_FUNCPTR func; + + func = (OSP_FUNCPTR)data; + + ret = func((char *)pMsg, pMsg->MsgSize + MSG_HEAD_SIZE); + + osp_free_msg(pMsg); + return ret; +} + +Osp_Msg_Head *osp_rev_other_msg(uint64_t data) +{ + Osp_Msg_Head *pMsg; + int32_t ret; + int32_t len; + OSP_FUNCPTR func; + + + pMsg = osp_alloc_msg(OSP_MAX_OTHER_MSG_LEN); + if (NULL == pMsg) + { + return NULL; + } + + func = (OSP_FUNCPTR)data; + + ret = func((char *)pMsg, &len); + if (ret < 0) + { + osp_free_msg(pMsg); + return NULL; + } + + + return (Osp_Msg_Head *)pMsg; + +} + + + + diff --git a/osp/src/ospRtc.c b/osp/src/ospRtc.c new file mode 100644 index 0000000..fef8721 --- /dev/null +++ b/osp/src/ospRtc.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +#include "osp.h" + + + + /* + *osp_get_rtc_time - query RTC time + *input: + * pRtc pointer to RTC + *return + * OSP_OK + * OSP_ERROR(fail) + */ + +OSP_STATUS osp_get_rtc_time(OSP_RTCTIME *pRtc) +{ +#if 0 + + time_t sysTime; + struct tm *timeInfo = NULL; + + if (pRtc == NULL) + return (OSP_ERROR); + gettimeofday + time(&sysTime); + timeInfo = localtime(&sysTime); + pRtc->year = timeInfo->tm_year+1900; + pRtc->month = timeInfo->tm_mon+1; + pRtc->day = timeInfo->tm_mday; + pRtc->hour = timeInfo->tm_hour; + pRtc->minute = timeInfo->tm_min; + pRtc->second = timeInfo->tm_sec; +#endif + struct timeval tv; + struct timezone tz; + + struct tm *timeInfo = NULL; + + if (pRtc == NULL) + return (OSP_ERROR); + + gettimeofday(&tv, &tz); + timeInfo = localtime(&tv.tv_sec); + pRtc->year = timeInfo->tm_year + 1900; + pRtc->month = timeInfo->tm_mon + 1; + pRtc->day = timeInfo->tm_mday; + pRtc->hour = timeInfo->tm_hour; + pRtc->minute = timeInfo->tm_min; + pRtc->second = timeInfo->tm_sec; + pRtc->usecond = tv.tv_usec; + + return (OSP_OK); +} + + + + + + +void osp_show_rtc_time(void) +{ + OSP_RTCTIME Rtc; + osp_get_rtc_time(&Rtc); + + osp_debug_out(CMD_DEBUG_LEVEL, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d\n", + Rtc.year, Rtc.month, Rtc.day, + Rtc.hour, Rtc.minute, Rtc.second); + +} \ No newline at end of file diff --git a/osp/src/ospSem.c b/osp/src/ospSem.c new file mode 100644 index 0000000..3621776 --- /dev/null +++ b/osp/src/ospSem.c @@ -0,0 +1,351 @@ +#include +#include +#include +#include + +#include "osp.h" + +void *osp_semm_create(void) +{ + + lx_sem_t *sem = (lx_sem_t *)malloc(sizeof(lx_sem_t)); + if (sem != NULL) + { + if (pthread_mutex_init(&sem->u.sem_mutex, NULL) == 0) + { + sem->sem_type = SEM_TYPE_MUTEX; + } + else + { + free(sem); + sem = NULL; + } + } + + return (void *)sem; +} + +void*osp_semsm_create(void *semId) +{ + pthread_mutexattr_t mutexAttr; + int32_t Ret; + lx_sem_t *sem; + + sem = (lx_sem_t *)semId; + Ret = pthread_mutexattr_init(&mutexAttr); + if (0 != Ret) + { + return NULL; + } + + Ret = pthread_mutexattr_setpshared(&mutexAttr, PTHREAD_PROCESS_SHARED); + if (0 != Ret) + { + return NULL; + } + + Ret = pthread_mutexattr_setrobust(&mutexAttr, PTHREAD_MUTEX_ROBUST); + if (0 != Ret) + { + return NULL; + } + + Ret = pthread_mutex_init(&(sem->u.sem_mutex), &mutexAttr); + if (0 != Ret) + { + osp_debug_out(ERR_DEBUG_LEVEL, "pthread_mutex_init err\n"); + return NULL; + + } + sem->sem_type = SEM_TYPE_MUTEX; + + return (void *)sem; + +} + +void *osp_semss_create(void *semId) +{ + lx_sem_t *sem = (lx_sem_t *)semId; + + if (sem_init(&sem->u.sem_count, 1, 0) == 0) + { + sem->sem_type = SEM_TYPE_COUNT; + } + + return (void *)sem; +} + +void *osp_semb_create(SEM_B_STATE initalState) +{ + + int32_t initCount = (initalState == SEM_FULL) ? 1 : 0; + lx_sem_t*sem = (lx_sem_t *)malloc(sizeof(lx_sem_t)); + + if (sem != NULL) + { + if (sem_init(&sem->u.sem_count, 0, initCount) == 0) + { + sem->sem_type = SEM_TYPE_BINARY; + } + else + { + free(sem); + sem = NULL; + } + } + + return (void *)sem; +} + + + +void *osp_semc_create(int32_t initCount) +{ + + lx_sem_t *sem = (lx_sem_t *)malloc(sizeof(lx_sem_t)); + if (sem != NULL) + { + if (sem_init(&sem->u.sem_count, 1, initCount) == 0) + { + sem->sem_type = SEM_TYPE_COUNT; + } + else + { + free(sem); + sem = NULL; + } + } + + return (void *)sem; +} +int32_t osp_sem_timed_wait_millsecs(lx_sem_t *sem, long msecs) +{ + struct timespec ts; + int32_t ret = OSP_OK; + + clock_gettime(CLOCK_REALTIME, &ts); + long secs = msecs/1000; + msecs = msecs%1000; + + long add = 0; + msecs = msecs*1000*1000 + ts.tv_nsec; + add = msecs / (1000*1000*1000); + ts.tv_sec += (add + secs); + ts.tv_nsec = msecs%(1000*1000*1000); + + if (sem->sem_type == SEM_TYPE_MUTEX) + { + ret = pthread_mutex_timedlock(&sem->u.sem_mutex, &ts); + } + else + { + ret = sem_timedwait(&sem->u.sem_count, &ts); + } + return ret; +} + +int32_t osp_sem_timedwait_microsecond(lx_sem_t *sem, long msecs) +{ + struct timespec ts; + int32_t ret = OSP_OK; + + clock_gettime(CLOCK_REALTIME, &ts); + long secs = msecs / 1000000; + msecs = msecs % 1000000; + + long add = 0; + msecs = msecs * 1000 + ts.tv_nsec; + add = msecs / (1000 * 1000 * 1000); + ts.tv_sec += (add + secs); + ts.tv_nsec = msecs % (1000 * 1000 * 1000); + + if (sem->sem_type == SEM_TYPE_MUTEX) + { + ret = pthread_mutex_timedlock(&sem->u.sem_mutex, &ts); + } + else + { + ret = sem_timedwait(&sem->u.sem_count, &ts); + } + return ret; +} + +OSP_STATUS osp_sem_take(void *semId, int32_t timeout) +{ + int32_t ret = -1; + lx_sem_t *sem = (lx_sem_t *)semId; + int32_t err = EINTR; + /*errno ==EINTR means this is broken by singnal */ + while ((-1 == ret) && (err == EINTR)) + { + if (timeout > 0) + { +// ret = osp_sem_timed_wait_millsecs(sem, timeout); + ret = osp_sem_timedwait_microsecond(sem, timeout); + } + else + { + if (sem->sem_type == SEM_TYPE_MUTEX) + ret = pthread_mutex_lock(&sem->u.sem_mutex); + else + ret = sem_wait(&sem->u.sem_count); + } + if (0 != ret) + err = errno; + } + + return (OSP_OK); +} + +OSP_STATUS osp_sem_taketry(void *semId) +{ + + int32_t ret; + lx_sem_t *sem = (lx_sem_t *)semId; + + if (sem->sem_type == SEM_TYPE_MUTEX) + ret = pthread_mutex_trylock(&sem->u.sem_mutex); + else + ret = sem_trywait(&sem->u.sem_count); + if (ret != 0) + return (OSP_ERROR); + + return (OSP_OK); +} + + + +OSP_STATUS osp_sem_give(void *semId) +{ + + + int32_t ret; + lx_sem_t *sem = (lx_sem_t *)semId; + + if (sem->sem_type == SEM_TYPE_MUTEX) + ret = pthread_mutex_unlock(&sem->u.sem_mutex); + else if (sem->sem_type == SEM_TYPE_COUNT) + ret = sem_post(&sem->u.sem_count); + else + { + sem_getvalue(&sem->u.sem_count, &ret); + if (ret == 0) + ret = sem_post(&sem->u.sem_count); + } + + if (ret != 0) + return (OSP_ERROR); + + return (OSP_OK); +} + + +OSP_STATUS osp_sem_delete(void *semId) +{ + int32_t ret; + lx_sem_t *sem = (lx_sem_t *)semId; + + if (sem->sem_type == SEM_TYPE_MUTEX) + { + ret = pthread_mutex_destroy(&sem->u.sem_mutex); + } + else + { + ret = sem_destroy(&sem->u.sem_count); + } + free(sem); + + return ret; +} + + + +void *osp_semrwc_reate(int32_t readerNum) +{ + pthread_rwlock_t *sem = (pthread_rwlock_t *)malloc(sizeof(pthread_rwlock_t)); + if (sem != NULL) + { + if (0 != pthread_rwlock_init(sem, NULL)) + { + free(sem); + sem = NULL; + } + } + + return (void *)sem; +} + + + +OSP_STATUS osp_semr_take(void *semId, int32_t timeout) +{ + + int32_t ret; + struct timespec timeout1; + pthread_rwlock_t *sem = (pthread_rwlock_t *)semId; + + if (timeout > 0) + { + //timeout1.tv_sec = timeout/1000; + //timeout1.tv_nsec = (timeout%1000)*1000000; + clock_gettime(CLOCK_REALTIME, &timeout1); + timeout1.tv_sec += timeout/1000; + timeout1.tv_nsec += (timeout%1000)*1000000; + + ret = pthread_rwlock_timedrdlock(sem, &timeout1); + } + else + ret = pthread_rwlock_rdlock(sem); + + if (ret != 0) + { + return (OSP_ERROR); + } + + return (OSP_OK); +} + + + +OSP_STATUS osp_sem_wtake(void *semId, int32_t timeout) +{ + + int32_t ret; + struct timespec timeout1; + pthread_rwlock_t *sem = (pthread_rwlock_t *)semId; + + if (timeout > 0) + { + //timeout1.tv_sec = timeout/1000; + //timeout1.tv_nsec = (timeout%1000)*1000000; + clock_gettime(CLOCK_REALTIME, &timeout1); + timeout1.tv_sec += timeout/1000; + timeout1.tv_nsec += (timeout%1000)*1000000; + + ret = pthread_rwlock_timedwrlock(sem, &timeout1); + } + else + ret = pthread_rwlock_wrlock(sem); + + if (ret != 0) + { + return (OSP_ERROR); + } + + return (OSP_OK); +} + +OSP_STATUS osp_semrw_give(void *semId) +{ + + int32_t ret; + pthread_rwlock_t *sem = (pthread_rwlock_t *)semId; + + ret = pthread_rwlock_unlock(sem); + if (ret != 0) + { + return (OSP_ERROR); + } + + return (OSP_OK); +} diff --git a/osp/src/ospShell.c b/osp/src/ospShell.c new file mode 100644 index 0000000..b666804 --- /dev/null +++ b/osp/src/ospShell.c @@ -0,0 +1,1821 @@ + +#include +#include +#include +#include +#include +#include +#include + +#include "osp.h" +#include "ospShell.h" +#include "ospDbg.h" +#include "ospSoftQue.h" +#include "ospBuf.h" +#include "ospTimer.h" +#include "ospHeap.h" +#include "ospTypes.h" +#include "ucp_printf.h" +#include "ospHeap.h" +#include "ospDump.h" +#include "ospSwQueue.h" +#include "pet_sm_mgt.h" +#include "msg_transfer_layer.h" + + +#define MAX_CMD_LEN (150) /*the max length of a shell command */ +#define MAX_CMD_NUM 128 + +extern uint32_t g_ulApeLogMode; /*0: ape log日志写入文件 1: 网å£è¾“出ape log 2:ape log日志shell打å°è¾“出*/ +extern uint32_t g_ulArmLogMode; /*0: arm log日志写入文件 1: 网å£è¾“出arm log 2:arm log日志shell打å°è¾“出*/ +extern uint8_t g_ucPlatformMode; /*0: platform log日志写入文件 1: 网å£è¾“出platform log 2:platform log日志shell打å°è¾“出*/ + +extern OSP_CMD_RTN ospCmdRtnTbl[]; +extern int32_t SHELL_CMD_NUM; + +extern char *pShellBuf; + +/*function prototype */ +extern void osp_set_prompt(); + +uint8_t guc_oam = 0; +uint8_t guc_ape_id = 0; +uint8_t gac_cmd[32] = {0}; +uint8_t guc_print_level = 0x4; +uint32_t gul_arg[128] = {0}; + +Osp_Ape_Send_Count ga_ape_send_count[10]; +extern uint8_t g_ucIsEcho; +extern int32_t g_ProcessId; +extern uint8_t g_time_now[128]; +extern Osp_Server_Head gst_server_log; +extern int32_t osp_base_logid; +extern void *gpsw_que_share_mem; + +struct termios saveterm; + +OSP_CMD_RTN *ospCmdRtnTblExt = NULL; +lx_sem_t *ospCmdInsertSem = NULL; +void osp_mem_show(char *addr , uint32_t ulLen); + +void help(void); +OSP_CMD_RTN ospCmdRtnTbl[MAX_CMD_NUM] = +{ + {"help", (OSP_FUNCPTR)help, NULL, }, + {"?", (OSP_FUNCPTR)help, NULL, }, + {"i", (OSP_FUNCPTR)osp_show_task_info, NULL,"show alltask info", 0}, + {"oam", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_set_oam, "set arm oam level", 1}, + //{"x", (OSP_FUNCPTR)osp_shell_mem_wrapper, (OSP_FUNCPTR)osp_shell_dis_mem, "x num addr: show addr memory(length is num)", 2}, + //{"s", (OSP_FUNCPTR)osp_shell_mem_wrapper, (OSP_FUNCPTR)osp_shell_set_mem, "s addr val: set addr memory(length is 4)", 2}, + {"phym", (OSP_FUNCPTR)osp_shell_mem_wrapper, (OSP_FUNCPTR)osp_display_phy_mem, "show phy mempry info", 2}, + //{"c", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_tsk_diag_cnt, "show Task Diag Cnt", 1}, + {"net", (OSP_FUNCPTR)osp_show_udp, NULL, "show net info", 0}, + {"sw", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_swqueue_info, "show arm print level", 0}, + {"level", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_set_print_level, "set arm print level", 1}, + {"slevel", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_print_level, "show arm print level", 0}, + {"dump", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_dump_proc, "dump ddr mem", 4}, + {"dumpdm", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_dump_dm_by_apcid, "dump dm info to bin by apcid", 4}, + {"apcdm", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_dm_by_apcid, "show dm info by apcid", 3}, + {"dl", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_queue_dl_info, "show dl queue info", 0}, + {"ul", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_queue_ul_info, "show ul queue info", 0}, + {"apeid", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_get_ape_id, "get ape id", 1}, + {"apelog", (OSP_FUNCPTR)osp_shell_wrapper,(OSP_FUNCPTR)osp_set_ape_log_mode, "0: ape log write file 1: ape log out to net 2:ape log to shell", 1}, + {"armlog", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_set_arm_log_mode, "0: arm log write file 1: arm log out to net 2:arm log to shell", 1}, + {"plog", (OSP_FUNCPTR)osp_shell_wrapper,(OSP_FUNCPTR)osp_set_platform_log_mode, "0: platform log write file 1: platform log out to net 2:platform log to shell", 1}, + {"server", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_server_cfg, "server ip port", 2}, + {"ss", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_server_cfg_show, "show server cfg", 0}, + {"logpath", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_log_path_cfg, "cfg log path", 1}, + {"relog", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_log_mode_get,"reload log cfg", 0}, + //{"tfu", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_get_tfu_location_info, "get tfu location", 0}, + //{"clock_info", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_get_clock_tracking_state, "get clock tracking state", 0}, + //{"ret_clock", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_reset_clock_module, "reset clock module", 0}, + //{"set_clock", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_set_clk_mode, "set clock module", 1}, + {"recmd_ape", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_reget_ape_cmd, "get ape cmd again", 0}, + {"intr_ape", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_ape_csu_int_cnt, "show intr info", 0}, +// {"level_ape", (OSP_FUNCPTR)osp_shell_wrapper,(OSP_FUNCPTR)osp_ape_set_log_level, "set ape log level", 1}, +// {"csu_stop_ape", (OSP_FUNCPTR)osp_shell_wrapper,(OSP_FUNCPTR)osp_ape_csu_stop_cfg, "set csu start or stop", 2}, +// {"i_ape", (OSP_FUNCPTR)osp_shell_wrapper, (OSP_FUNCPTR)osp_show_ape_taskinfo, "show ape task info", 0}, +}; + +int32_t SHELL_CMD_NUM = OSP_NELEMENTS(ospCmdRtnTbl); +int32_t SHELL_CMD_NUM_EXT = 0; + + +#define KEY_BACKSPACE '\b' // back space +#define KEY_BACKSPACE1 127 // back space +#define KEY_ENTER '\x0A' // enter + +#define MAX_CMD_HISTORY 32 + +#define MAX_EXT_CMD_NUM MAX_CMD_NUM + +typedef enum +{ + WKS_WAIT, + WKS_RECV1B, + WKS_UDLR, + WKS_DEL, +}T_WaitKeyState; + +static char szPrompt[] = {"-> "}; + +static T_WaitKeyState waitKeyState = WKS_WAIT; +static char szCmdHistory[MAX_CMD_HISTORY][MAX_CMD_LEN]; +static char szCmdNow[MAX_CMD_LEN] = {0}; + +static uint32_t nCmdIndex = 0; +static uint32_t nCmdCursor = 0; +static uint32_t nCmdInputCount = 0; +static uint32_t nCmdInputCursor = 0; + +int32_t cmdMatched = 0; +char cmdMatchBuf[OSP_NELEMENTS(ospCmdRtnTbl)][MAX_CMD_LEN + 10] = {0}; +char cmdShowBuf[MAX_CMD_LEN*OSP_NELEMENTS(ospCmdRtnTbl)] = {0}; + +bool gEscOn = false; + + + +int32_t nCmdField; +int32_t maxCmdField = 10; +char **arg = NULL; + +void osp_mem_show(char *addr , uint32_t ulLen) +{ +#if 0 + int32_t i; + + if (NULL == addr) + { + return; + } + + if (ulLen > 65535) + { + return; + } + + for (i = 0; i < ulLen; i++) + { + if ((i & 0x3) == 0) + { + UCP_PRINT_SHELL("0x%08x: \t", addr+i); + } + + UCP_PRINT_SHELL("%08x\t", addr[i]); + + if ((i & 0x3) == 0x3) + { + UCP_PRINT_SHELL("\n"); + } + } +#endif + return; +} + +void help(void) +{ + int32_t i; + char buf[4096] = {0}; + int32_t len = 0; + + len += sprintf(buf+len, "%-16s%s\n", "cmd", "descption"); + for (i = 0; i < MAX_CMD_NUM; i++) + { + if (ospCmdRtnTbl[i].cmd[0] != 0) + { + len += sprintf(buf + len, "%-16s%s\n", ospCmdRtnTbl[i].cmd, ospCmdRtnTbl[i].descption); + + } + } + for (i = 0; i < MAX_CMD_NUM; i++) + { + if (ospCmdRtnTblExt[i].cmd[0] != 0) + { + len += sprintf(buf + len, "%-16s%s\n", ospCmdRtnTblExt[i].cmd, ospCmdRtnTblExt[i].descption); + + } + } + UCP_PRINT_SHELL("%s\n", buf); +} + + +/* + * osp_set_outstr - print string to console + * input: + * out : output string + * return + * none + */ + +void osp_set_outstr(char *out) +{ + UCP_PRINT_SHELL("%s", out); +} + +/* + * osp_set_prompt - set prompt string to console + * input: + * none + * return + * none + */ + +void osp_set_prompt() +{ + UCP_PRINT_SHELL("%s", szPrompt); +} +static int64_t argval[10] = {0}; +static char argchar[10][32] = {0}; +static char shellOut[64] = {0}; + +int32_t osp_str_is_digit(char *buf) +{ + int32_t i; + int32_t size = strlen(buf); + for (i = 0; i < size; i++) + { + if (0 == isdigit(buf[i])) + return 0; + } + + return 1; +} +int32_t osp_shell_symo(char **arg, int32_t len) +{ + int32_t i; + OSP_FUNCPTR func; + //INT32 size; + + uint64_t func_ret; + + for (i = 0; i < len; i++) + { + + if (((arg[i][0] == '0') && ((arg[i][1] == 'x') || (arg[i][1] == 'X'))) && osp_str_is_digit(arg[i])) + { + + argval[i] = strtoul(arg[i], (char **)NULL, 16); + } + else if (isdigit(arg[i][0]) && osp_str_is_digit(arg[i])) + { + argval[i] = strtoul(arg[i], (char **)NULL, 10); + } + else + { + strcpy(argchar[i], arg[i]); + argval[i] = (int64_t)argchar[i]; + } + } + + func = osp_find_sym(argchar[0]); + + if (func) + { + func_ret = func(argval[1], argval[2], argval[3], argval[4], + argval[5], argval[6], argval[7], argval[8], argval[9]); + sprintf(shellOut, "value = %p\r\n", (void *)func_ret); + osp_set_outstr(shellOut); + return 0; + } + + return -1; + +} + +int32_t osp_shell_mem_wrapper(char **arg, int32_t len, OSP_FUNCPTR func) +{ + int32_t i; + int32_t ret; + + for (i = 0; i < len; i++) + { + if ((arg[i][0] == '0') && ((arg[i][1] == 'x') || (arg[i][1] == 'X'))) + { + argval[i] = strtoul(arg[i], (char **)NULL, 16); + } + else if (isdigit(arg[i][0])) + { + argval[i] = strtoul(arg[i], (char **)NULL, 10); + } + + else + { + strcpy(argchar[i], arg[i]); + argval[i] = (uint64_t)osp_find_sym(&argchar[i][0]); + } + } + + + + ret = func(argval[0], argval[1], argval[2], argval[3], + argval[4], argval[5], argval[6], argval[7], argval[8]);; + return ret; + +} + +int32_t osp_shell_wrapper(char **arg, int32_t len, OSP_FUNCPTR func) +{ + int32_t i; + int32_t ret; + + memset(argchar, 0, sizeof(argchar)); + for (i = 0; i < len; i++) + { + if ((arg[i][0] == '"')) + { + strncpy(argchar[i], &arg[i][1],strlen(arg[i])-2); + argval[i] = (int64_t)argchar[i]; + } + else if ((arg[i][0] == '0') && ((arg[i][1] == 'x') || (arg[i][1] == 'X'))) + { + argval[i] = strtoul(arg[i], (char **)NULL, 16); + } + else if (isdigit(arg[i][0])) + { + argval[i] = strtoul(arg[i], (char **)NULL, 10); + } + else + { + strcpy(argchar[i], arg[i]); + argval[i] = (int64_t)argchar[i]; + } + } + + ret = func(argval[0], argval[1], argval[2], argval[3], argval[4], + argval[5], argval[6], argval[7], argval[8], argval[9]); + + return ret; +} + +uint32_t osp_ape_shell_wrapper(char **arg, uint32_t len, OSP_FUNCPTR func) +{ + uint32_t i = 0; + uint32_t ullen = 0; + char aCmd[128] = {0}; + + memset(argchar, 0, sizeof(argchar)); + for (i = 0; i < len; i++) + { + ullen = strlen(arg[i]); + if(ullen > 12) + { + UCP_PRINT_SHELL("len should less 12\n" ); + return OSP_ERROR; + } + + if ((arg[i][0] == '"')) + { + strncpy(argchar[i], &arg[i][1],ullen-2); + } + else + { + strcpy(argchar[i], arg[i]); + } + + } + + sprintf(aCmd, "%s %s %s %s %s %s %s %s %s %s %s %s", gac_cmd, argchar[0], argchar[1], \ + argchar[2], argchar[3], argchar[4], \ + argchar[5], argchar[6], argchar[7], \ + argchar[8], argchar[9], argchar[10]); + + UCP_PRINT_LOG("osp_ape_shell_wrapper gac_cmd:%s aCmd:%s\n", gac_cmd, aCmd); + osp_ape_msg_send((char *)aCmd); + + return 0; +} + + +int32_t osp_shell_str_wrapper(char **arg, int32_t len, OSP_FUNCPTR func) +{ + int32_t i; + int32_t ret; + + memset(argchar, 0, sizeof(argchar)); + for (i = 0; i < len; i++) + { + strcpy(argchar[i], arg[i]); + argval[i] = (int64_t)argchar[i]; + UCP_PRINT_SHELL("osp_shell_str_wrapper argval[%d] = %ld ; argchar[%d] = %s ", i, argval[i], i, argchar[i]); + } + + ret = func(argval[0], argval[1], argval[2], argval[3], argval[4], + argval[5], argval[6], argval[7], argval[8], argval[9]); + + return ret; +} + +/* + * getFullCmdMatch - get matched command name list + * input: + * pCmd : the prefix of a command + * return + * none + */ + +int32_t osp_get_full_cmd_match(char*pCmd) +{ + int32_t index; + char*pMatch; + + for (index = 0; index < OSP_NELEMENTS(ospCmdRtnTbl); index++) + { + pMatch = strstr(ospCmdRtnTbl[index].cmd, pCmd); + if ((pMatch != NULL) && (pMatch == ospCmdRtnTbl[index].cmd)) + { + strcpy(cmdMatchBuf[cmdMatched], ospCmdRtnTbl[index].cmd); + cmdMatched++; + } + } + return cmdMatched; +} + + +/* + * osp_getcmdarg - split command to params,then save to array arg + * input: + * cmd : pointer to command + * return + * params number + */ + +int32_t osp_getcmdarg(char *cmd) +{ + char seps[]=" ,\t\n"; + char *token; + char **p; + + nCmdField = 0; + + token = strtok(cmd, seps); + + while (token != NULL) + { + if (nCmdField >= maxCmdField) + { + maxCmdField *= 2; + p = (char **)realloc(arg, maxCmdField * sizeof(arg[0])); + if (p == NULL) + return -1; + else + arg = p; + } + arg[nCmdField] = token; + token = strtok(NULL, seps); + + nCmdField++; + } + + return nCmdField; +} + + +/* + * osp_execcmd - execute command + * input: + * none + * return + * OSP_OK,or + * OSP_ERROR(fail) + */ + +int32_t osp_execcmd(void) +{ + int32_t i; + int32_t ret = 0; + + if (nCmdField > 0) + { + /*±¾µØÃüÁî*/ + for (i = 0; i < SHELL_CMD_NUM; i++) + { + if (strcmp(ospCmdRtnTbl[i].cmd, arg[0]) == 0) + { + if (ospCmdRtnTbl[i].argnum != nCmdField-1) + { + UCP_PRINT_ERROR("input wrong argnum should be %d\n", ospCmdRtnTbl[i].argnum); + return OSP_ERROR; + } + if(osp_is_ape_cmd(ospCmdRtnTbl[i].cmd))/*ape²àÃüÁî*/ + { + memcpy(gac_cmd, ospCmdRtnTbl[i].cmd, strlen(ospCmdRtnTbl[i].cmd)); + UCP_PRINT_SHELL("i:%u gac_cmd:%s ospCmdRtnTbl[i].cmd:%s\n", i, gac_cmd, ospCmdRtnTbl[i].cmd); + ret = (*ospCmdRtnTbl[i].wrapper)(&arg[1], nCmdField-1, ospCmdRtnTbl[i].routine); + memset(gac_cmd, 0, sizeof(gac_cmd)); + + return (OSP_OK); + } + ret = (*ospCmdRtnTbl[i].wrapper)(&arg[1], nCmdField-1, ospCmdRtnTbl[i].routine); + sprintf(shellOut, "\r\nvalue = %d = 0x%X\r\n", ret, ret); + osp_set_outstr(shellOut); + + return (OSP_OK); + } + } + for (i = 0; i < SHELL_CMD_NUM_EXT; i++) + { + if (strcmp(ospCmdRtnTblExt[i].cmd, arg[0]) == 0) + { + if (ospCmdRtnTblExt[i].argnum != nCmdField-1) + { + UCP_PRINT_ERROR("input wrong argnum should be %d\n", ospCmdRtnTblExt[i].argnum); + return OSP_ERROR; + } + if(osp_is_ape_cmd(ospCmdRtnTblExt[i].cmd))/*ape²àÃüÁî*/ + { + memcpy(gac_cmd, ospCmdRtnTblExt[i].cmd, strlen(ospCmdRtnTblExt[i].cmd)); + UCP_PRINT_LOG("i:%u gac_cmd:%s ospCmdRtnTblExt[i].cmd:%s\n", i, gac_cmd, ospCmdRtnTblExt[i].cmd); + ret = (*ospCmdRtnTblExt[i].wrapper)(&arg[1], nCmdField-1, ospCmdRtnTblExt[i].routine); + memset(gac_cmd, 0, sizeof(gac_cmd)); + + return (OSP_OK); + } + + ret = (*ospCmdRtnTblExt[i].wrapper)(&arg[1], nCmdField - 1, ospCmdRtnTblExt[i].routine); + sprintf(shellOut, "\r\nvalue = %d = 0x%X\r\n", ret, ret); + osp_set_outstr(shellOut); + return (OSP_OK); + } + } + ret = osp_shell_symo(&arg[0], nCmdField); + return ret; + } + return (OSP_ERROR); +} + +/* + * osp_shell_writebs - delete a character of command line + * input: + * none + * return + * none + */ + +void osp_shell_writebs() +{ + char szTemp[3]; + szTemp[0] = '\b'; + szTemp[1] = ' '; + szTemp[2] = '\b'; + write(STDOUT_FILENO, szTemp, 3); +} + +/* + * osp_shell_deal_input - handle keypress + * input: + * input: input key code + * return + * none + */ + +void osp_shell_deal_input(char input) +{ + if (nCmdInputCount == MAX_CMD_LEN) + return; + + if (nCmdInputCursor < nCmdInputCount) + { + char szTemp[MAX_CMD_LEN] = {0}; + char *pCmd = szCmdNow; + int32_t nBackCount = nCmdInputCount - nCmdInputCursor; + szTemp[0] = input; + memcpy(&szTemp[1], &pCmd[nCmdInputCursor], nBackCount); + write(STDOUT_FILENO, szTemp, nBackCount + 1); + memcpy(&pCmd[nCmdInputCursor], &szTemp, nBackCount + 1); + + memset(szTemp, '\b', nBackCount); + write(STDOUT_FILENO, szTemp, nBackCount); + } + else + { + write(STDOUT_FILENO, &input, 1); + szCmdNow[nCmdInputCount] = input; + } + + nCmdInputCursor++; + nCmdInputCount++; +} + +/* + * osp_shell_deal_backspace - handle key 'Backspace' + * input: + * none + * return + * none + */ + +void osp_shell_deal_backspace() +{ + if (nCmdInputCursor > 0) + { + if (nCmdInputCursor == nCmdInputCount) //cursor at the end + osp_shell_writebs(); + else + { + char szTemp[MAX_CMD_LEN] = {0}; + char*pCmd = szCmdNow; + int32_t nBackCount = nCmdInputCount - nCmdInputCursor; + szTemp[0] = '\b'; + memcpy(&szTemp[1], &pCmd[nCmdInputCursor], nBackCount); + szTemp[nBackCount+1] = ' '; + write(STDOUT_FILENO, szTemp, nBackCount + 2); + memcpy(&pCmd[nCmdInputCursor - 1], &szTemp[1], nBackCount); + + memset(szTemp, '\b', nBackCount + 1); + write(STDOUT_FILENO, szTemp, nBackCount + 1); + } + nCmdInputCount--; + nCmdInputCursor--; + } +} + +/* + * osp_shell_deal_delete - handle key 'Delete' + * input: + * none + * return + * none + */ + +void osp_shell_deal_delete() +{ + if (nCmdInputCursor < nCmdInputCount) + { + char szTemp[MAX_CMD_LEN] = {0}; + char *pCmd = szCmdNow; + + int32_t nBackCount = nCmdInputCount - nCmdInputCursor - 1; + memcpy(szTemp, &pCmd[nCmdInputCursor + 1], nBackCount); + szTemp[nBackCount] = ' '; + write(STDOUT_FILENO, szTemp, nBackCount + 1); + memcpy(&pCmd[nCmdInputCursor], szTemp, nBackCount); + + memset(szTemp, '\b', nBackCount + 1); + write(STDOUT_FILENO, szTemp, nBackCount + 1); + nCmdInputCount--; + } +} + +/* + * osp_shell_deal_doubleesc - clear command line + * input: + * none + * return + * none + */ + +void osp_shell_deal_doubleesc() +{ + if (nCmdInputCount > 0) + { + char *pCmd = szCmdNow; + + //move to end + while (nCmdInputCursor < nCmdInputCount) + { + write(STDOUT_FILENO, &pCmd[nCmdInputCursor], 1); + nCmdInputCursor++; + } + + //clear all inputs + int32_t i = 0; + for (i = 0; i < nCmdInputCount; i++) + osp_shell_writebs(); + nCmdInputCount = 0; + nCmdInputCursor = 0; + } +} + +/* + * osp_shell_deal_upkey - handle key 'up' + * input: + * none + * return + * none + */ + +void osp_shell_deal_upkey() +{ + if (nCmdCursor == 0) + return; + + nCmdCursor --; + + //clear all inputs + osp_shell_deal_doubleesc(); + + char *pCmdHistory = &szCmdHistory[nCmdCursor][0]; + memcpy(szCmdNow, pCmdHistory, MAX_CMD_LEN); + nCmdInputCount = strlen(szCmdNow); + nCmdInputCursor = nCmdInputCount; + write(STDOUT_FILENO, szCmdNow, nCmdInputCount); +} + +/* + * osp_shell_deal_downkey - handle key 'down' + * input: + * none + * return + * none + */ + +void osp_shell_deal_downkey() +{ + if (nCmdCursor >= (nCmdIndex-1)) return; + nCmdCursor ++; + + //clear all inputs + osp_shell_deal_doubleesc(); + + char*pCmdHistory = &szCmdHistory[nCmdCursor][0]; + memcpy(szCmdNow, pCmdHistory, MAX_CMD_LEN); + nCmdInputCount = strlen(szCmdNow); + nCmdInputCursor = nCmdInputCount; + write(STDOUT_FILENO, szCmdNow, nCmdInputCount); + +} + +/* + * osp_shell_deal_leftkey - handle key 'left' + * input: + * none + * return + * none + */ + +void osp_shell_deal_leftkey() +{ + if (nCmdInputCursor > 0) + { + char c = '\b'; + write(STDOUT_FILENO, &c, 1); + nCmdInputCursor--; + } +} + +/* + * osp_shell_deal_rightkey - handle key 'right' + * input: + * none + * return + * none + */ + +void osp_shell_deal_rightkey() +{ + if (nCmdInputCursor < nCmdInputCount) + { + char *pCmd = szCmdNow; + char c = pCmd[nCmdInputCursor]; + write(STDOUT_FILENO, &c, 1); + nCmdInputCursor++; + } +} + +/* + * osp_shell_deal_enter - handle key 'Enter' + * input: + * none + * return + * none + */ + +void osp_shell_deal_enter() +{ + szCmdNow[nCmdInputCount] = '\0'; + char szTemp[] = {"\r\n"}; + write(STDOUT_FILENO, szTemp, strlen(szTemp)); + nCmdInputCount = 0; + nCmdInputCursor = 0; + + if (strlen(szCmdNow) == 0) + return; + + if (nCmdIndex == MAX_CMD_HISTORY) + { + char szTempCmd[MAX_CMD_HISTORY][MAX_CMD_LEN]; + memcpy(szTempCmd, &szCmdHistory[1][0], MAX_CMD_LEN * (MAX_CMD_HISTORY - 1)); + memcpy(szCmdHistory, szTempCmd, MAX_CMD_LEN * (MAX_CMD_HISTORY - 1)); + nCmdIndex = MAX_CMD_HISTORY - 1; + nCmdCursor = nCmdIndex; + } + + memcpy(szCmdHistory[nCmdIndex], szCmdNow, MAX_CMD_LEN); + + nCmdIndex++; + nCmdCursor = nCmdIndex; +} + + +/* + * osp_shell_deal_tab - handle key 'tab' + * input: + * none + * return + * none + */ + +void osp_shell_deal_tab() +{ + int32_t matchNum; + int32_t matchIndex; + int32_t lenDiff; + int32_t cmdBufLen = 0; + char cmdPre[MAX_CMD_LEN] = {0}; + + cmdBufLen = nCmdInputCursor; + szCmdNow[cmdBufLen] = '\0'; + + strcpy(cmdPre, szCmdNow); + matchNum = osp_get_full_cmd_match(cmdPre); + + memset(cmdShowBuf, 0, sizeof(cmdShowBuf)); + if (matchNum == 1) + { + strcpy(cmdShowBuf, cmdMatchBuf[0]); + + lenDiff = strlen(cmdShowBuf) - strlen(cmdPre); + write(STDOUT_FILENO, &cmdShowBuf[cmdBufLen], lenDiff); + + strcpy(szCmdNow, cmdShowBuf); + nCmdInputCursor += lenDiff; + nCmdInputCount += lenDiff; + } + else + { + strcat(cmdShowBuf, "\r\n"); + + for (matchIndex = 0; matchIndex < matchNum; matchIndex++) + { + strcat(cmdShowBuf, cmdMatchBuf[matchIndex]); + strcat(cmdShowBuf, " "); + if ((matchIndex + 1) % 4 == 0) + { + strcat(cmdShowBuf, "\r\n"); + } + } + strcat(cmdShowBuf, "\r\n"); + strcat(cmdShowBuf, szPrompt); + strcat(cmdShowBuf, szCmdNow); + osp_set_outstr(cmdShowBuf); + } + memset(cmdMatchBuf, 0, sizeof(cmdMatchBuf)); + cmdMatched = 0; +} + +/* + * osp_shell_get_line - read whole command line string + * input: + * none + * return + * none + */ + +void osp_shell_get_line() +{ + bool bGetEnter = false; + while (true) + { + char input; + input = getchar(); + + switch (waitKeyState) + { + case WKS_WAIT : + if (isprint(input)) + osp_shell_deal_input(input); + else + { + if (input == '\t') + { + osp_shell_deal_tab(); + } + else if (input == KEY_BACKSPACE) + { + osp_shell_deal_backspace(); + } + else if (input == KEY_ENTER) + { + osp_shell_deal_enter(); + bGetEnter = true; + } + else if (input == '\x1b') + waitKeyState = WKS_RECV1B; + else + waitKeyState = WKS_WAIT; + } + break; + + case WKS_RECV1B: + if (input == '\x1b') + { + osp_shell_deal_doubleesc(); + waitKeyState = WKS_RECV1B; + } + else if (input == '[') //maybe "up/down/left/right" + { + waitKeyState = WKS_UDLR; + } + else //after pressing 'ESC' + { + if (isprint(input)) + osp_shell_deal_input(input); + waitKeyState = WKS_WAIT; + } + break; + + case WKS_UDLR: + if (input == 'A') //up + osp_shell_deal_upkey(); + else if (input == 'B') //down + osp_shell_deal_downkey(); + else if (input == 'D') //left + osp_shell_deal_leftkey(); + else if (input == 'C') //right + osp_shell_deal_rightkey(); + else if (input == 51) //maybe key 'delete' + { + waitKeyState = WKS_DEL; + break; + } + else + { + if (isprint(input)) + osp_shell_deal_input(input); + } + waitKeyState = WKS_WAIT; + break; + + case WKS_DEL: + if (input == 126) + osp_shell_deal_delete(); + else + { + if (isprint(input)) + osp_shell_deal_input(input); + } + waitKeyState = WKS_WAIT; + break; + + default: + break; + } + + if (bGetEnter) + { + break; + } + } +} + +int32_t osp_insert_cmd(char *name, OSP_FUNCPTR pfunc) +{ + OSP_CMD_RTN *tlb; + int32_t num; + + if ((name == NULL) || pfunc == NULL) + { + return -1; + + } + osp_sem_take(ospCmdInsertSem, -1); + tlb = ospCmdRtnTblExt; + num = SHELL_CMD_NUM_EXT; + + memcpy(tlb[num].cmd, name, strlen(name) + 1); + tlb[num].wrapper = (OSP_FUNCPTR)osp_shell_wrapper; + tlb[num].routine = pfunc; + + SHELL_CMD_NUM_EXT++; + osp_sem_give(ospCmdInsertSem); + return 0; +} +int32_t osp_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, int32_t argnum) +{ + OSP_CMD_RTN *tlb; + int32_t num; + + if ((name == NULL) || pfunc == NULL) + { + return -1; + + } + tlb = ospCmdRtnTblExt; + num = SHELL_CMD_NUM_EXT; + + memcpy(tlb[num].cmd, name, strlen(name) + 1); + memcpy(tlb[num].descption, desc, strlen(desc) + 1); + + tlb[num].wrapper = (OSP_FUNCPTR)osp_ape_shell_wrapper; + //tlb[num].routine = pfunc; + tlb[num].argnum = argnum; + + UCP_PRINT_SHELL("osp_insert_cmd_ext cmd:%s num:%u descption:%s desc:%s argnum:%u", + tlb[num].cmd,num, tlb[num].descption, desc, tlb[num].argnum); + + SHELL_CMD_NUM_EXT++; + + return 0; +} + + +int32_t osp_shell_init(void) +{ + + ospCmdRtnTblExt = (OSP_CMD_RTN *)osp_get_init_mem(sizeof(OSP_CMD_RTN) * MAX_EXT_CMD_NUM); + ospCmdInsertSem = (lx_sem_t *)osp_get_init_mem(sizeof(lx_sem_t)); + + + if (0 == g_ProcessId) + { + memset(ospCmdRtnTblExt, 0, sizeof(OSP_CMD_RTN) *MAX_EXT_CMD_NUM); + osp_semsm_create(ospCmdInsertSem); + } + + /*é…置文件读å–server ip ,port*/ + osp_server_get(); + return 0; +} + +bool osp_is_ape_cmd(char *pCmd) +{ + if(NULL == pCmd) + { + return false; + } + + if (strstr(pCmd, "_ape")) + { + return true; + } + + return false; +} + +void osp_get_ape_id(uint8_t ucApeid) +{ + if (ucApeid > 7) + { + return; + } + + guc_ape_id = ucApeid; + + return; +} + +void osp_set_ape_log_mode(uint8_t ucIsEcho) +{ + if(ucIsEcho > 3) + { + UCP_PRINT_ERROR("osp_set_ape_log_mode error ucIsEcho:%u \n", ucIsEcho); + return; + } + + g_ulApeLogMode = ucIsEcho; + + osp_log_mode_cfg(); + + UCP_PRINT_LOG("osp_set_ape_log_mode g_ulApeLogMode:%u \n", g_ulApeLogMode); +} + +void osp_set_platform_log_mode(uint8_t ucIsEcho) +{ + if(ucIsEcho > 3) + { + UCP_PRINT_ERROR("osp_set_ape_log_mode error ucIsEcho:%u \n", ucIsEcho); + return; + } + + g_ucPlatformMode = ucIsEcho; + + UCP_PRINT_LOG("osp_set_ape_log_mode g_ucPlatformMode:%u \n", g_ucPlatformMode); +} + + +void osp_set_arm_log_mode(uint8_t ucIsNet) +{ + if(ucIsNet > 3) + { + UCP_PRINT_ERROR("osp_set_arm_log_mode error log_mode:%u \n", ucIsNet); + return; + } + + g_ulArmLogMode = ucIsNet; + + osp_log_mode_cfg(); + + UCP_PRINT_LOG("osp_set_arm_log_mode g_ulArmLogMode:%u \n", g_ulArmLogMode); +} + +void osp_reget_ape_cmd() +{ + UCP_PRINT_SHELL("osp_reget_ape_cmd cmd:%s\n", gac_cmd); + SHELL_CMD_NUM_EXT = 0; + + osp_ape_msg_send((char *)gac_cmd); + + return; +} + +void osp_ape_insert_msg_send() +{ + + UCP_PRINT_SHELL("osp_ape_insert_msg_send begin gac_cmd:%s\n", gac_cmd); + osp_ape_msg_send((char *)gac_cmd); + UCP_PRINT_SHELL("osp_ape_insert_msg_send END\n"); + + return; +} + + +void osp_show_ape_taskinfo() +{ + UCP_PRINT_SHELL("osp_show_ape_taskinfo cmd:%s\n", gac_cmd); + + osp_ape_msg_send((char *)gac_cmd); + + return; +} + +void osp_set_print_level(uint8_t ucLevel) +{ + if(ucLevel > 0x10) + { + UCP_PRINT_SHELL("osp_set_print_level leve:%u\n", ucLevel); + return; + } + + guc_print_level = ucLevel; + + return; +} + +void osp_show_print_level() +{ + UCP_PRINT_SHELL("arm print level:0x%x\n", guc_print_level); + + return; +} + +void osp_set_oam(uint8_t ucOam) +{ + if(ucOam > 5) + { + UCP_PRINT_SHELL("osp_set_oam ucOam:%u\n", ucOam); + return; + } + + guc_oam = ucOam; + + return; +} + + +void osp_ape_set_log_level(uint8_t ucLevel) +{ + if(ucLevel > 5) + { + UCP_PRINT_ERROR("osp_ape_set_log_level leve:%u\n", ucLevel); + return; + } + + UCP_PRINT_SHELL("osp_ape_set_log_level begin cmd:%s\n", gac_cmd); + osp_ape_msg_send((char *)gac_cmd); + + return; +} + +void osp_ape_csu_stop_cfg(uint8_t ucstop, uint8_t ucadvance) +{ + char aCmd[32] = {0}; + + if(ucstop > 2) + { + UCP_PRINT_ERROR("osp_csu_stop_cfg ucstop:%u\n", ucstop); + return; + } + + sprintf(aCmd, "%s %u\r\n", gac_cmd, ucstop); + + UCP_PRINT_SHELL("osp_csu_stop_cfg aCmd:%s\n", aCmd); + osp_ape_msg_send((char *)aCmd); + + return; +} + + +void osp_ape_csu_int_cnt() +{ + UCP_PRINT_LOG("osp_show_ape_taskinfo cmd:%s\n", gac_cmd); + + osp_ape_msg_send((char *)gac_cmd); + + return; +} + + +void osp_ape_msg_send(char *pcmd) +{ + uint8_t i = 0; + int8_t *pi8buf = NULL; + uint16_t u16offset = sizeof(osp_sw_msg_info_t); + osp_sw_msg_info_t stMsg; + + if(NULL == pcmd) + { + return; + } + + for(i = 12;i < 24; i++) + { + pi8buf = osp_sw_mem_malloc(i); + if (NULL == pi8buf) + { + UCP_PRINT_ERROR("osp_ape_msg_send call spu_sw_mem_malloc return null\n"); + return ; + } + + memset((char *)stMsg.i8Data, 0, strlen(pcmd)); + + stMsg.u8PktType = UCP4008_OSP_SHELL; + stMsg.u8CoreId = i-12; /*spu core id*/ + stMsg.u16DataLen = sizeof(osp_sw_msg_info_t)+strlen(pcmd); + memcpy((char *)stMsg.i8Data ,pcmd, strlen(pcmd)); + + memcpy((void *)(pi8buf-u16offset), (void *)&stMsg, stMsg.u16DataLen); + + //UCP_PRINT_LOG("u8PktType:%d cmd:%s u8CoreId:%u len:%d\n", stMsg.u8PktType, stMsg.i8Data, stMsg.u8CoreId, stMsg.u16DataLen); + + osp_sw_enque(i, pi8buf); + } + + return; +} +void osp_cmd_register(OSP_CMD_EXT *pCmdExt) +{ + uint32_t num = 0; + uint32_t i = 0; + + if (NULL == pCmdExt) + { + return; + } + + for(i =0; i cmd)) + { + return; + } + } + + num = SHELL_CMD_NUM_EXT; + + strcpy(ospCmdRtnTblExt[num].cmd, pCmdExt->cmd); + + ospCmdRtnTblExt[num].wrapper = (OSP_FUNCPTR)osp_ape_shell_wrapper; + ospCmdRtnTblExt[num].argnum = pCmdExt->argnum; + + SHELL_CMD_NUM_EXT++; + + return ; +} + +#if 0 +void osp_cmd_insert_proc(Osp_Ape_Msg_Head *pMsg) +{ + char *pbuf = NULL; + OSP_CMD_RTN *tlb = NULL; + uint32_t num = 0; + + if (NULL == pMsg) + { + return; + } + + osp_sem_take(ospCmdInsertSem, -1); + + pbuf = APE_MSG_HEAD_TO_COMM(pMsg); + + tlb = (OSP_CMD_RTN *)pbuf; + num = SHELL_CMD_NUM_EXT; + + strcpy(ospCmdRtnTblExt[num].cmd, tlb->cmd); + strcpy(ospCmdRtnTblExt[num].descption, tlb->descption); + ospCmdRtnTblExt[num].wrapper = (OSP_FUNCPTR)osp_ape_shell_wrapper; + ospCmdRtnTblExt[num].argnum = tlb->argnum; + + UCP_PRINT_SHELL("osp_cmd_insert_proc num:%u cmd:%s descption:%s argnum:%u", SHELL_CMD_NUM_EXT, ospCmdRtnTblExt[num].cmd, ospCmdRtnTblExt[num].descption, ospCmdRtnTblExt[num].argnum); + + SHELL_CMD_NUM_EXT++; + osp_sem_give(ospCmdInsertSem); + + return; +} +#endif + +void osp_cmd_insert_proc(osp_sw_msg_info_t *pMsg) +{ + char *pbuf = NULL; + uint32_t ulLen = 0; + OSP_CMD_EXT stCmdExt; + + if (NULL == pMsg) + { + return; + } + + osp_sem_take(ospCmdInsertSem, -1); + + pbuf = SPU_SHELL_MSG_HEAD_TO_COMM(pMsg); + ulLen = SPU_SHELL_MSG_DADA_LEN(pMsg); + + memcpy(&stCmdExt, pbuf, ulLen); + + switch(pMsg->u8CoreId) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + osp_cmd_register(&stCmdExt); + break; + } + + osp_sem_give(ospCmdInsertSem); + + return; +} + +void osp_ape_shell_out(Osp_Ape_Msg_Head *pMsg) +{ +#if 0 + bool bIsApeCmd = false; + + if (NULL == pMsg) + { + return; + } + + UCP_PRINT_LOG("osp_ape_shell_out pMsg:%p MsgType: 0x%x pMsg->msg_size:%u src_core_id: %u", (char *)pMsg,pMsg->msg_type, pMsg->msg_size ,pMsg->src_core_id); + + bIsApeCmd = osp_is_ape_cmd_insert(pMsg); + + switch(pMsg->msg_type) + { + case UCP4008_OSP_SHELL: + case UCP4008_OSP_SHELL_ECHO: + if(true == bIsApeCmd) + { + osp_cmd_insert_proc(pMsg); + break; + } + write(STDOUT_FILENO, APE_MSG_HEAD_TO_COMM(pMsg), APE_MSG_DADA_LEN(pMsg)); + break; + case OSP_STR_LOG: + case OSP_BIN_LOG: + osp_dbg_log_main(pMsg); + break; + default: + UCP_PRINT_ERROR("osp_ape_shell_out pMsg:%p MsgType: 0x%x pMsg->msg_size:%u src_core_id: %u", (char *)pMsg,pMsg->msg_type, pMsg->msg_size ,pMsg->src_core_id); + break; + } +#endif + return; + +} + +void osp_ape_shell_proc(osp_sw_msg_info_t *pMsg) +{ + if (NULL == pMsg) + { + return; + } + + UCP_PRINT_LOG("osp_ape_shell_proc u8PktType:%d cmd:%s u8CoreId:%u u16DataLen:%u\n", pMsg->u8PktType, pMsg->i8Data, pMsg->u8CoreId, pMsg->u16DataLen); + + switch(pMsg->u8PktType) + { + case UCP4008_OSP_SHELL: + case UCP4008_OSP_SHELL_ECHO: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case UCP4008_OSP_SHELL_REG: + osp_cmd_insert_proc(pMsg); + break; + default: + UCP_PRINT_ERROR("osp_ape_shell_proc u8PktType:%d cmd:%s u8CoreId:%u u16DataLen:%u\n", pMsg->u8PktType, pMsg->i8Data, pMsg->u8CoreId, pMsg->u16DataLen); + break; + } + + return; + +} + +void osp_show_info_by_coreid(osp_sw_msg_info_t *pMsg) +{ + if (NULL == pMsg) + { + return; + } + + switch(pMsg->u8CoreId) + { + case 0: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 1: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 2: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 3: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 4: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 5: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 6: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 7: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 8: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 9: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 10: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + case 11: + write(STDOUT_FILENO, pMsg->i8Data, SPU_SHELL_MSG_DADA_LEN(pMsg)); + break; + default: + UCP_PRINT_SHELL("osp_ape_shell_proc u8PktType:%d cmd:%s u8CoreId:%u u16DataLen:%u\n", pMsg->u8PktType, pMsg->i8Data, pMsg->u8CoreId, pMsg->u16DataLen); + break; + } + + return; +} + + +uint64_t osp_shell_task(void) +{ + uint8_t u8loop = 0; + osp_sw_msg_info_t *pstsw_msg = NULL; + static uint32_t su32LogCnt = 0; + + ++su32LogCnt; + //printf("LogTask Enter >>> %d\r\n", su32LogCnt); + + /* 从软队列里å–出 */ + for(u8loop = 24; u8loop < 36; u8loop++) + { + while(OSP_OK == osp_sw_deque(u8loop, &pstsw_msg)) + { + UCP_PRINT_LOG("u8loop = %d, addr = %p, len = %d, coreid = %d, type = %d\r\n", u8loop, pstsw_msg, pstsw_msg->u16DataLen, pstsw_msg->u8CoreId, pstsw_msg->u8PktType); + osp_ape_shell_proc(pstsw_msg); + } + } + + usleep(10); + + return OSP_OK; +} + +uint32_t rev_shell_log_data(uint32_t port_id,uint32_t queue_num,uint32_t el_ind,const char* buf,uint32_t remainedLength,uint32_t* handledLength) +{ +#if 0 + //osp_get_current_time(); + //UCP_PRINT_DEBUG("rev_shell_log_data begin %s\n", g_time_now); + Osp_Ape_Msg_Head *pMsg = NULL; + + if(NULL == buf) + { + return 1; + } + + pMsg = (Osp_Ape_Msg_Head*)buf; + *handledLength = pMsg->msg_size; + + /*队列UCP4008_TRAFFIC_LOG*/ + if(7 == queue_num) + { + UCP_PRINT_LOG("rev_shell_log_data queue_num[%u] el_ind[%u] buf[%p]!\n", queue_num, el_ind, buf); + osp_ape_shell_out(pMsg); + osp_msg_transfer_free(7, 0, (char *)pMsg); + } + else + { + UCP_PRINT_LOG("rev_shell_log_data free queue_num[%u] el_ind[%u] buf[%p]!\n", queue_num, el_ind, buf); + /*释放UCP4008_TRAFFIC_LOG*/ + osp_msg_transfer_free(7, 0, (char *)pMsg); + } + + //osp_get_current_time(); + //UCP_PRINT_SHELL("rev_shell_log_data end %s\n", g_time_now); +#endif + return 0; +} + + +void osp_show_queue_ul_info() +{ + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + uint8_t i,j; + + printf("inst_id\tque_id\t\ttype_id\t\talloc\t\tape_tx_num\t\tarm_rx_num\n\r"); + + for (i = 0; i < MAX_INSTANCE_NUM; i++) { + for (j = 0; j < UCP4008_TRAFFIC_MAX_NUM; j++) { + printf("%d %d\t\t%-4d\t\t%4d\t\t%4d\t\t\t%4d\n", i, j, pPetSmLocalMgt->pQueueCfg[i][j]->handler.type_id, pPetSmLocalMgt->pUlQueue[i][j]->alloc, pPetSmLocalMgt->pUlQueue[i][j]->in, pPetSmLocalMgt->pUlQueue[i][j]->out); + } + } + + return; +} + +void osp_show_queue_dl_info() +{ + PetSmLocalMgt_t* pPetSmLocalMgt = get_pet_sm_local_mgt(); + uint8_t i,j; + + printf("inst_id\tque_id\t\ttype_id\t\talloc\t\tarm_tx_num\t\tape_rx_num\n\r"); + + for (i = 0; i < MAX_INSTANCE_NUM; i++) { + for (j = 0; j < UCP4008_TRAFFIC_MAX_NUM; j++) { + printf("%d %d\t\t%-4d\t\t%4d\t\t%4d\t\t\t%4d\n", i, j, pPetSmLocalMgt->pQueueCfg[i][j]->handler.type_id, pPetSmLocalMgt->pDlQueue[i][j]->alloc, pPetSmLocalMgt->pDlQueue[i][j]->in, pPetSmLocalMgt->pDlQueue[i][j]->out); + } + } + + return; +} + +int8_t osp_server_cfg(uint8_t *ip, uint32_t ulport) +{ + int8_t ret = 0; + FILE *fp = NULL; + + if(NULL == ip) + { + UCP_PRINT_SHELL("ip is null"); + return ret; + } + + memcpy(gst_server_log.ip, ip, 15); + gst_server_log.ulport = ulport; + + if (access("./server", F_OK) != 0) + { + osp_mkdirs("./server", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + fp = fopen("./server/logmode", "w+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_server_cfg file open failure \n"); + return ret; + } + + ret = fprintf(fp,"ip:%s\r\nport:%u\napelog:%u\narmlog:%u\nlogpath:%s", \ + gst_server_log.ip, gst_server_log.ulport, g_ulApeLogMode, g_ulArmLogMode, \ + gst_server_log.path); + if(ret < 0) + { + UCP_PRINT_ERROR("fwrite error ret:%d\n", ret); + fclose(fp); + return ret; + } + + fflush(fp); + fclose(fp); + + return ret; +} + +void osp_server_cfg_show() +{ + UCP_PRINT_SHELL("ip:%s\nport:%u\napelog:%u\narmlog:%u\nlogpath:%s\n", \ + gst_server_log.ip, gst_server_log.ulport, g_ulApeLogMode, g_ulArmLogMode, gst_server_log.path); + + return; +} + + +void osp_log_path_cfg(char *path) +{ + int32_t ret = 0; + FILE *fp = NULL; + + if(NULL == path) + { + UCP_PRINT_SHELL("path is null"); + return; + } + + if (access(path, F_OK) != 0) + { + osp_mkdirs(path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + memset(gst_server_log.path, 0, 128); + sprintf((char *)gst_server_log.path, "%s", path); + + if (access(LOG_MODE_PATH, F_OK) != 0) + { + osp_mkdirs(LOG_MODE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + fp = fopen(LOG_MODE_PATH, "w+"); + if (fp < 0) + { + UCP_PRINT_ERROR("osp_server_cfg file open failure \n"); + return; + } + + ret = fprintf(fp,"ip:%s\r\nport:%u\napelog:%u\narmlog:%u\nlogpath:%s", \ + gst_server_log.ip, gst_server_log.ulport, g_ulApeLogMode, g_ulArmLogMode, gst_server_log.path); + if(ret < 0) + { + UCP_PRINT_ERROR("fwrite error ret:%d\n", ret); + fclose(fp); + return; + } + + fflush(fp); + fclose(fp); + + sleep(1); + osp_log_cfg_reload(); + + return; +} + + + +void osp_server_get() +{ + FILE *fp = NULL; + + if (access("./server", F_OK) != 0) + { + osp_mkdirs("./server", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + } + + fp = fopen("./server/logmode", "r+"); + if (NULL == fp) + { + UCP_PRINT_ERROR("osp_server_get file open failure \n"); + return; + } + + fscanf(fp,"%s %d\n", gst_server_log.ip, &gst_server_log.ulport); + + /*ret = fread((char *)&gst_server_log, sizeof(char), sizeof(Osp_Server_Head), fp); + if(ret < 0) + { + UCP_PRINT_ERROR("fwrite read ret:%d\n", ret); + fclose(fp); + return ret; + }*/ + + fclose(fp); + + return; +} + + +int32_t osp_shell_main() +{ + struct termios nt; + int32_t ret; + char shellbuf[MAX_CMD_LEN] = {0}; + tcgetattr(STDIN_FILENO, &saveterm); + nt = saveterm; + nt.c_lflag &= (~ICANON); + nt.c_lflag &= (~ECHO); + nt.c_cc[VMIN] = 1; + nt.c_cc[VTIME] = 0; + tcsetattr(STDIN_FILENO, TCSANOW, &nt); + + //arg = (char **)malloc(maxCmdField * sizeof(arg[0])); + arg = (char **)gul_arg; + + osp_set_prompt(); + { + osp_shell_get_line(); + memcpy(shellbuf, szCmdNow, strlen(szCmdNow)); + shellbuf[strlen(szCmdNow)] = '\0'; + + osp_getcmdarg(szCmdNow); + ret = osp_execcmd(); + + if (OSP_ERROR == ret) + { + system(shellbuf); + } + } + //free(arg); + + return ret; +} + +#if 0 +void osp_get_tfu_location_info( ) +{ + location_info_s stlocat_ptr; + + get_tfu_location_info(&stlocat_ptr); + + UCP_PRINT_SHELL("latitude:%d longitude:%d altitude:%d\n\r",stlocat_ptr.latitude, stlocat_ptr.longitude, stlocat_ptr.altitude); + + return; +} + +void osp_get_clock_tracking_state(void) +{ + int32_t u32ret = 0; + tracking_info_s sttrk_ptr; + + u32ret = get_clock_tracking_state(&sttrk_ptr); + if(OSP_OK != u32ret) + { + return; + } + + UCP_PRINT_SHELL("lock_flag:%d leap_valid:%d view_sats:%d\n\r",sttrk_ptr.lock_flag, sttrk_ptr.leap_valid, sttrk_ptr.view_sats); + UCP_PRINT_SHELL("track_sats:%d survey_in:%d alma_complete:%d\n\r",sttrk_ptr.track_sats, sttrk_ptr.survey_in, sttrk_ptr.alma_complete); + + return; +} + +void osp_reset_clock_module(void) +{ + int32_t i32ret = 0; + + i32ret = reset_clock_module(); + if(OSP_OK != i32ret) + { + UCP_PRINT_SHELL("i32ret:%d\n\r", i32ret); + return; + } + + return; +} + +void osp_set_clk_mode(clk_flag_e pseudo_flag) +{ + if(pseudo_flag > 1) + { + UCP_PRINT_SHELL("pseudo_flag :%d should be 0 or 1\n\r", pseudo_flag); + return; + } + + set_clk_mode(pseudo_flag); + + return; +} +#endif +void osp_show_swqueue_info() +{ + uint8_t i; + uint16_t u16Size = SPU_SW_QUEUE_SHARE_INFO_SIZE; + + spu_sw_queue_share_info_t *pstsw_queue_share_ture = NULL; + spu_sw_queue_share_info_t *pstsw_queue_share_base = (spu_sw_queue_share_info_t*)gpsw_que_share_mem; + + printf("queue\tdeque_id\tenque_id\talloc_id\tfree_id\n\r"); + + for (i = 12; i < 24; i++) + { + pstsw_queue_share_ture = (spu_sw_queue_share_info_t*)((int8_t*)pstsw_queue_share_base + i*u16Size); + printf("%d\t%4d\t\t%4d\t\t%4d\t\t%4d\n", + i, + pstsw_queue_share_ture->u16queue_deque_idx, + pstsw_queue_share_ture->u16queue_enque_idx, + pstsw_queue_share_ture->u16queue_alloc_idx, + pstsw_queue_share_ture->u16queue_free_idx); + } + + return; +} + + + diff --git a/osp/src/ospSoftQue.c b/osp/src/ospSoftQue.c new file mode 100644 index 0000000..4360a2c --- /dev/null +++ b/osp/src/ospSoftQue.c @@ -0,0 +1,209 @@ +#include +#include +#include +#include + + + + +#include "osp.h" + + +/* + Dep must be Power of 2 +*/ +int32_t osp_create_softque(Osp_SoftQue *que, int32_t Dep, char *name) +{ + static int32_t id = 0; + void *p; + + if (!OSP_IS_POWEOF2(Dep)) + { + return -1; + } + p = osp_semsm_create(&que->mutex); + if (NULL == p) + { + return -1; + } + que->Id = id++; + strcpy(que->Name, name); + que->EnIdx = 0; + que->DeIdx = 0; + que->Dep = Dep; + que->CurNum = 0; + que->EnCnt = 0; + que->DeCnt = 0; + que->FullCnt = 0; + que->EmptyCnt = 0; + que->Mask = que->Dep-1; + + p = osp_semss_create(&que->sem); + if (NULL == p) + { + return -1; + } + + return que->Id; +} + + +int32_t osp_soft_que_enque(uint64_t value, Osp_SoftQue *que, int32_t IsNeedWake) +{ + + int32_t CurNum; + + osp_sem_take(&que->mutex, -1); + CurNum = que->CurNum; + if (CurNum == que->Dep)/*full */ + { + que->FullCnt ++; + osp_sem_give(&que->mutex); + return -1; + } + que->Buf[que->EnIdx] = value; + que->EnIdx = (que->EnIdx + 1) & (que->Mask); + osp_atomic_inc((int32_t *)&que->CurNum); + que->EnCnt ++; + osp_sem_give(&que->mutex); + + if (IsNeedWake) + { + osp_sem_give(&que->sem); + } + return 0; + + +} + +int32_t osp_softque_deque(uint64_t *pvalue, Osp_SoftQue *que, int32_t IsBlock) +{ + int32_t CurNum; + + if (IsBlock) + { + osp_sem_take(&que->sem,-1); + } + + osp_sem_take(&que->mutex, -1); + + CurNum = que->CurNum; + if (CurNum == 0)/*empty*/ + { + que->EmptyCnt ++; + osp_sem_give(&que->mutex); + return -1; + } + *pvalue = que->Buf[que->DeIdx]; + que->DeIdx = (que->DeIdx + 1) & que->Mask; + osp_atomic_dec((int32_t *)&que->CurNum); + que->DeCnt ++; + osp_sem_give(&que->mutex); + + return 0; + +} + +int32_t osp_softque_dequetry(uint64_t *pvalue, Osp_SoftQue *que) +{ + int32_t ret; + int32_t CurNum; + + + ret = osp_sem_taketry(&que->sem); + if (0 != ret) + { + return ret; + } + + CurNum = que->CurNum; + if (CurNum == 0)/*empty*/ + { + que->EmptyCnt ++; + + return -1; + } + *pvalue=que->Buf[que->DeIdx]; + que->DeIdx = (que->DeIdx + 1) & que->Mask; + osp_atomic_dec((int32_t *)&que->CurNum); + que->DeCnt ++; + + return 0; + +} + +int32_t osp_softque_dequeTimeOut(uint64_t *pvalue, Osp_SoftQue *que, uint32_t timeout) +{ + int32_t ret; + int32_t CurNum; + + ret = osp_sem_take(&que->sem, timeout); + if (0 != ret) + { + return ret; + } + + CurNum = que->CurNum; + if (CurNum == 0)/*empty*/ + { + que->EmptyCnt ++; + + return -1; + } + *pvalue = que->Buf[que->DeIdx]; + que->DeIdx = (que->DeIdx + 1)&que->Mask; + osp_atomic_dec((int32_t*)&que->CurNum); + que->DeCnt ++; + + return 0; + +} + +int32_t osp_soft_que_is_vaild(Osp_SoftQue *que) +{ + return ((que->Dep) != 0); +} + +int32_t osp_get_soft_que_desc(char *pbuf) +{ + int32_t len = 0; + osp_assert(pbuf != NULL); + + len = sprintf(pbuf, "%-8s%-24s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s\n", "Id", "Name", "EnIdx", + "DeIdx", "Dep", "CurNum", "EnCnt", "DeCnt", "FullCnt", "EmptyCnt", "Mask"); + + return len; +} + +int32_t osp_get_soft_que_info(Osp_SoftQue *que, char *pbuf) +{ + int32_t len = 0; + + osp_assert(pbuf != NULL); + + if (osp_soft_que_is_vaild(que)) + { + + + len += sprintf(pbuf + len, "%-8d%-24s%-12d%-12d%-12d%-12d%-12lu%-12lu%-12lu%-12lu%-12d\n", + que->Id, que->Name, + que->EnIdx, + que->DeIdx, + que->Dep, + que->CurNum, + que->EnCnt, + que->DeCnt, + que->FullCnt, + que->EmptyCnt, + que->Mask); + }; + return len; + +} + + + + + + + diff --git a/osp/src/ospSwQueue.c b/osp/src/ospSwQueue.c new file mode 100644 index 0000000..53c3881 --- /dev/null +++ b/osp/src/ospSwQueue.c @@ -0,0 +1,170 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ospSwQueue.c +// Author : +// Created On : 2023-01-19 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include +#include +#include "ospTypes.h" +#include "ospSwQueue.h" +#include "ospHeap.h" +#include "ucp_printf.h" + +#define OSP_APE_RFM_LOG_OFFSET (0x0AE00000) /* APE_LOG起始地å€ä¸ºï¼š0xA800 0000 ,Log的实际地å€ä¸ºï¼š0xB2E00000 */ +#define OSP_APE_RFM_LOG_SIZE (0x00080000) /* Log软件队列一个队列的总内存(512K) */ + +#define OSP_APE_RFM_SHELL_OFFSET (0x0B600000)//(0x00800000) +#define OSP_APE_RFM_SHELL_SIZE (0x00001000) /* Shell软件队列一个队列的总内存(512*8) */ + +#define OSP_APE_RFM_QUE_NUM (36) /* 一共36个软列队 */ + +#define OSP_APE_SHARE_OFFSET (0x0B618000)//(0x00818000) + +#define SPU_APE_RFM_QUE_FLAG_USED (0x5a5a) +#define SPU_APE_FRM_QUE_FLAG_POS (2) + +void *gpsw_que_share_mem = NULL; +void *gpsw_que_static_mem = NULL; +uint64_t gsw_que_static_mem_size = 0; +spu_sw_queue_mem_t gstsw_queue_mem[OSP_APE_RFM_QUE_NUM]; +spu_sw_queue_share_info_t gstsw_queue_share_info[OSP_APE_RFM_QUE_NUM] = {0}; + +uint8_t osp_sw_queue_mem_init(void) +{ + gsw_que_static_mem_size = 0; + + gpsw_que_static_mem = get_static_mem(APE_LOG, &gsw_que_static_mem_size); + if (0 == gsw_que_static_mem_size) + { + UCP_PRINT_ERROR("[osp_sw_queue_mem_init]: get_static_mem(APE_LOG) return error."); + return OSP_ERROR; + } + gpsw_que_share_mem = gpsw_que_static_mem + OSP_APE_SHARE_OFFSET; + return OSP_OK; +} + +uint8_t osp_sw_queue_init() +{ + uint8_t u8ret = 0; + uint8_t u8loop = 0; + void* pvlog_addr = NULL; + + memset(&gstsw_queue_mem, 0, sizeof(gstsw_queue_mem)); + memset(&gstsw_queue_share_info, 0, sizeof(gstsw_queue_share_info)); + + u8ret = osp_sw_queue_mem_init(); + if (OSP_OK != u8ret) + { + UCP_PRINT_ERROR("[osp_sw_queue_init]: osp_sw_queue_mem_init return error."); + return OSP_ERROR; + } + + /* åˆå§‹åŒ– */ + /* APE_RFM_LOG */ + pvlog_addr = gpsw_que_static_mem + OSP_APE_RFM_LOG_OFFSET; + for (u8loop = 0; u8loop < OSP_APE_RFM_LOG_NUM; u8loop++) + { + gstsw_queue_mem[u8loop].pvaddr = pvlog_addr + (u8loop*OSP_APE_RFM_LOG_SIZE); + gstsw_queue_mem[u8loop].u16queue_id = u8loop; + gstsw_queue_mem[u8loop].u16queue_type = OSP_SW_QUEUE_LOG; + gstsw_queue_mem[u8loop].u8queue_offset = 8; + gstsw_queue_mem[u8loop].u16queue_dep = OSP_APE_RFM_MSG_QUE_DEP; + gstsw_queue_mem[u8loop].u16queue_mask = (OSP_APE_RFM_MSG_QUE_DEP - 1); + gstsw_queue_mem[u8loop].u16queue_mem_idx = 0; + gstsw_queue_mem[u8loop].u32queue_full_count = 0; + gstsw_queue_mem[u8loop].u32queue_empty_count = 0; + } + + /* APE_RFM_SHELL */ + pvlog_addr = gpsw_que_static_mem + OSP_APE_RFM_SHELL_OFFSET; + for (u8loop = 0; u8loop < OSP_APE_RFM_SHELL_NUM; u8loop++) + { + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].pvaddr = pvlog_addr + (u8loop*OSP_APE_RFM_SHELL_SIZE); + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u16queue_id = (OSP_APE_RFM_LOG_NUM + u8loop); + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u16queue_type = OSP_SW_QUEUE_SHELL; + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u8queue_offset = 8; + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u16queue_dep = OSP_APE_RFM_SHELL_QUE_DEP; + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u16queue_mask = (OSP_APE_RFM_SHELL_QUE_DEP - 1); + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u16queue_mem_idx = 0; + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u32queue_full_count = 0; + gstsw_queue_mem[u8loop+OSP_APE_RFM_LOG_NUM].u32queue_empty_count = 0; + } + return OSP_OK; +} + +int8_t *osp_sw_mem_malloc(osp_sw_queue_index_e emqueue_idx) +{ + uint64_t u64addr = 0; + u64addr = (uint64_t)((gstsw_queue_mem[emqueue_idx].u16queue_mem_idx << 9) + gstsw_queue_mem[emqueue_idx].pvaddr); + gstsw_queue_mem[emqueue_idx].u16queue_mem_idx = (gstsw_queue_mem[emqueue_idx].u16queue_mem_idx + 1)&(gstsw_queue_mem[emqueue_idx].u16queue_mask); + return ((int8_t*)(u64addr + (gstsw_queue_mem[emqueue_idx].u8queue_offset))); +} + +uint8_t osp_sw_enque(osp_sw_queue_index_e emqueue_idx, int8_t *pi8addr) +{ + uint16_t u16Size = SPU_SW_QUEUE_SHARE_INFO_SIZE; + uint16_t u16enque_idx = ((uint64_t)(pi8addr) - (uint64_t)(gstsw_queue_mem[emqueue_idx].pvaddr) - gstsw_queue_mem[emqueue_idx].u8queue_offset)/SPU_APE_RFM_QUE_SIG_SIZE; + uint16_t u16queue_enque_idx = 0; + + spu_sw_queue_share_info_t *pstsw_queue_share_ture = NULL; + spu_sw_queue_share_info_t *pstsw_queue_share_base = (spu_sw_queue_share_info_t*)gpsw_que_share_mem; + pstsw_queue_share_ture = (spu_sw_queue_share_info_t*)((int8_t*)pstsw_queue_share_base + emqueue_idx*u16Size); + + if ((pstsw_queue_share_ture->u16queue_enque_idx - pstsw_queue_share_ture->u16queue_deque_idx) >= gstsw_queue_mem[emqueue_idx].u16queue_dep) + { + gstsw_queue_mem[emqueue_idx].u32queue_full_count++; + UCP_PRINT_LOG("[osp_sw_enque]: queue[%d] is full.", emqueue_idx); + return 3; + } + + u16queue_enque_idx = (pstsw_queue_share_ture->u16queue_enque_idx)&(gstsw_queue_mem[emqueue_idx].u16queue_mask); + pstsw_queue_share_ture->u16queue_msg[u16queue_enque_idx] = u16enque_idx; + pstsw_queue_share_ture->u16queue_enque_idx = (pstsw_queue_share_ture->u16queue_enque_idx + 1); + //pstsw_queue_share_ture->u16queue_enque_idx = (pstsw_queue_share_ture->u16queue_enque_idx + 1)&(gstsw_queue_mem[emqueue_idx].u16queue_mask); + //pstsw_queue_share_ture->u16queue_enque_count++; + return 0; + +} + +uint8_t osp_sw_deque(osp_sw_queue_index_e emqueue_idx, osp_sw_msg_info_t **pstmsg_info) +{ + uint16_t u16Size = SPU_SW_QUEUE_SHARE_INFO_SIZE; + uint16_t u16queue_msg_idx = 0; + uint16_t u16queue_deque_idx = 0; + + spu_sw_queue_share_info_t *pstsw_queue_share_ture = NULL; + spu_sw_queue_share_info_t *pstsw_queue_share_base = (spu_sw_queue_share_info_t*)gpsw_que_share_mem; + pstsw_queue_share_ture = (spu_sw_queue_share_info_t*)((int8_t*)pstsw_queue_share_base + emqueue_idx*u16Size); + + u16queue_deque_idx = pstsw_queue_share_ture->u16queue_deque_idx&(gstsw_queue_mem[emqueue_idx].u16queue_mask); + if (pstsw_queue_share_ture->u16queue_deque_idx == pstsw_queue_share_ture->u16queue_enque_idx) + { + //UCP_PRINT_ERROR("[osp_sw_deque]: queue[%d] is empty.", emqueue_idx); + return 4; + } + + u16queue_msg_idx = pstsw_queue_share_ture->u16queue_msg[u16queue_deque_idx]; + + /*printf("[deque]: idx = %d, d_idx = %d, e_idx = %d, addr = %p\r\n", + u16queue_msg_idx, + //pstsw_queue_share_ture->u16queue_alloc_idx, + pstsw_queue_share_ture->u16queue_deque_idx, + //pstsw_queue_share_ture->u16queue_deque_count, + pstsw_queue_share_ture->u16queue_enque_idx, + //pstsw_queue_share_ture->u16queue_enque_count, + gstsw_queue_mem[emqueue_idx].pvaddr);*/ + + *pstmsg_info = (osp_sw_msg_info_t*)((gstsw_queue_mem[emqueue_idx].pvaddr) + (u16queue_msg_idx*SPU_APE_RFM_QUE_SIG_SIZE)); + pstsw_queue_share_ture->u16queue_deque_idx = (pstsw_queue_share_ture->u16queue_deque_idx + 1); + return 0; +} + + diff --git a/osp/src/ospSwTimer.c b/osp/src/ospSwTimer.c new file mode 100644 index 0000000..f21155f --- /dev/null +++ b/osp/src/ospSwTimer.c @@ -0,0 +1,189 @@ +#include "ospTypes.h" +#include "ospSwTimer.h" +#include "ospSem.h" +#include "ucp_printf.h" +#include + +#define OSP_TMR_TIME_SET (1000) + +OspSwTimer_t gOspSwTmrList[OSP_SW_TIMER_NUM]; +lx_sem_t * gOspSwTmrSem = NULL; + +static void OspCheckTimer(OspSwTimer_t *pOspSwTimer) +{ + if (NULL == pOspSwTimer) + { + UCP_PRINT_ERROR("OspCheckTimer input parameter is NULL.\r\n"); + return ; + } + + if (OSP_TMR_FREE == pOspSwTimer->u8Using) + { + return ; + } + + /* 判定定时时间 */ + if (OSP_TMR_TIME_SET <= pOspSwTimer->u32RealTime) + { + /* 时间未到 */ + pOspSwTimer->u32RealTime = pOspSwTimer->u32RealTime - OSP_TMR_TIME_SET; + } + else + { + /* æ ¹æ®å®šæ—¶å™¨ç±»åž‹ï¼Œä¿®æ”¹å®šæ—¶å™¨çŠ¶æ€ */ + if (OSP_TMR_ONESHOT == pOspSwTimer->emTmrType) + { + /* ä¸€æ¬¡æ€§å®šæ—¶å™¨ï¼Œåˆ™ä¿®æ”¹å®šæ—¶å™¨çŠ¶æ€ */ + pOspSwTimer->emTmrStatus = OSP_TMR_STOPED; + pOspSwTimer->u32RealTime = 0; + } + else + { + /* 周期性定时器,则修改定时器的时间 */ + pOspSwTimer->u32RealTime = pOspSwTimer->u32TimeOut; + } + + /* 定时到,调用注册时的定时器回调函数 */ + return pOspSwTimer->pfnTmrCallBack(pOspSwTimer->pArg); + } + return ; +} + +static void OspTmrProc(void) +{ + uint8_t u8Loop = 0; + for (u8Loop = 0; u8Loop < OSP_SW_TIMER_NUM; u8Loop++) + { + OspCheckTimer(&gOspSwTmrList[u8Loop]); + } +} + +uint64_t OspTimerTask(void) +{ + if (NULL == gOspSwTmrSem) + { + UCP_PRINT_ERROR("OspTimerTask gOspSwTmrSem is NULL.\r\n"); + return -OSP_ERROR; + } + osp_sem_take(gOspSwTmrSem, OSP_TMR_TIME_SET); + //UCP_PRINT_ERROR("OspTimerTask osp_sem_take return %d\r\n", ret); + OspTmrProc(); + return OSP_OK; +} + +/* 定时器åˆå§‹åŒ–函数:先åˆå§‹åŒ–定时模å—,åŽåˆ›å»ºä»»åŠ¡ */ +int8_t OspTmrInit() +{ + /* 创建定时点链表 */ + memset(gOspSwTmrList, 0, sizeof(gOspSwTmrList)); + + /* 创建定时点信å·é‡ */ + gOspSwTmrSem = osp_semc_create(0); + if (NULL == gOspSwTmrSem) + { + UCP_PRINT_ERROR("OspTmrInit call osp_semc_create return NULL.\r\n"); + return OSP_ERROR; + } + return OSP_OK; +} + +/* 创建定时器 */ +int8_t OspTmrCreate(const char* pu8Name, + uint32_t u32TimeOut, + OspTmrType emTmrType, + OSP_CALLBACK pfnTmrCallBack, + void* pArg) +{ + uint8_t u8Loop = 0; + uint32_t u32TimerLen = 0; + + /* æ‰¾æ˜¯å¦æœ‰ç©ºé—²å®šæ—¶å™¨ */ + for (u8Loop = 0; u8Loop < OSP_SW_TIMER_NUM; u8Loop++) + { + if (OSP_TMR_FREE == gOspSwTmrList[u8Loop].u8Using) + { + u32TimerLen = (uint32_t)strlen(pu8Name); + u32TimerLen = OSP_GET_MIN(u32TimerLen, (OSP_SW_TIMER_NAME_LEN-1)); + memcpy(gOspSwTmrList[u8Loop].u8TmrName, pu8Name, u32TimerLen); + + gOspSwTmrList[u8Loop].u32RealTime = u32TimeOut; /* 剩余时间=è¶…æ—¶æ—¶é—´ */ + gOspSwTmrList[u8Loop].u32TimeOut = u32TimeOut; /* è¶…æ—¶æ—¶é—´ */ + gOspSwTmrList[u8Loop].emTmrStatus = emTmrType; + gOspSwTmrList[u8Loop].pfnTmrCallBack = pfnTmrCallBack; + gOspSwTmrList[u8Loop].pArg = pArg; + gOspSwTmrList[u8Loop].emTmrStatus = OSP_TMR_STOPED; + gOspSwTmrList[u8Loop].u8Using = OSP_TMR_BUSY; + + return (u8Loop); + } + } + UCP_PRINT_DEBUG("OspTmrCreate no timer free.\r\n"); + return OSP_ERROR; +} + +/* 删除定时器 */ +int8_t OspTmrDelete(uint8_t u8TmrIndex) +{ + if (u8TmrIndex > OSP_SW_TIMER_NUM) + { + UCP_PRINT_ERROR("OspTmrDelete input parameter is error(%d).\r\n", u8TmrIndex); + return OSP_ERROR; + } + + if (OSP_TMR_FREE == gOspSwTmrList[u8TmrIndex].u8Using) + { + UCP_PRINT_ERROR("OspTmrDelete TmrIndex(%d) is free. Can't delete.\r\n", u8TmrIndex); + return OSP_ERROR; + } + + memset(&(gOspSwTmrList[u8TmrIndex]), 0, sizeof(OspSwTimer_t)); + return OSP_OK; +} + +/* å¯åŠ¨å®šæ—¶å™¨ */ +int8_t OspTmrStart(uint8_t u8TmrIndex) +{ + if (u8TmrIndex > OSP_SW_TIMER_NUM) + { + UCP_PRINT_ERROR("OspTmrStart input parameter is error(%d).\r\n", u8TmrIndex); + return OSP_ERROR; + } + + /* 如果定时器已ç»è¿è¡Œï¼Œç›´æŽ¥è¿”回 */ + if (OSP_TMR_RUNING == gOspSwTmrList[u8TmrIndex].emTmrStatus) + { + return OSP_OK; + } + + /* 更新定时器定时时间 */ + gOspSwTmrList[u8TmrIndex].u32RealTime = gOspSwTmrList[u8TmrIndex].u32TimeOut; + + /* æ›´æ–°å®šæ—¶å™¨çŠ¶æ€ */ + gOspSwTmrList[u8TmrIndex].emTmrStatus = OSP_TMR_RUNING; + return OSP_OK; +} + +/* åœæ­¢å®šæ—¶å™¨ */ +int8_t OspTmrStop(uint8_t u8TmrIndex) +{ + if (u8TmrIndex > OSP_SW_TIMER_NUM) + { + UCP_PRINT_ERROR("OspTmrStop input parameter is error(%d).\r\n", u8TmrIndex); + return OSP_ERROR; + } + + /* 如果定时器已ç»è¿è¡Œï¼Œç›´æŽ¥è¿”回 */ + if (OSP_TMR_STOPED == gOspSwTmrList[u8TmrIndex].emTmrStatus) + { + return OSP_OK; + } + + /* 更新定时器定时时间 */ + gOspSwTmrList[u8TmrIndex].u32RealTime = gOspSwTmrList[u8TmrIndex].u32TimeOut; + + /* æ›´æ–°å®šæ—¶å™¨çŠ¶æ€ */ + gOspSwTmrList[u8TmrIndex].emTmrStatus = OSP_TMR_STOPED; + return OSP_OK; +} + + diff --git a/osp/src/ospTask.c b/osp/src/ospTask.c new file mode 100644 index 0000000..f1a859a --- /dev/null +++ b/osp/src/ospTask.c @@ -0,0 +1,534 @@ +#define _GNU_SOURCE + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ucp_printf.h" +#include "ospLog.h" +#include "osp.h" + + +void *g_SemStartWork; +void *g_SemRegTask; + +OSP_TASKCB *gOspTask; + +extern OSP_UDP_TASK_DATA udp_shell_rx_task; +#ifdef HEARTBEAT_ENABLE +extern uint64_t OspTimerTask(void); +#endif +int32_t osp_task_is_shell(uint32_t taskid) +{ + return gOspTask[taskid].is_shell; +} +void osp_set_task_shell(uint32_t taskid) +{ + gOspTask[taskid].is_shell = 1; +} +int32_t osp_task_is_reged(uint32_t taskid) +{ + return gOspTask[taskid].Active; +} + +int32_t osp_local_shell_task_is_reged(void) +{ + return osp_task_is_reged(localshellin); +} + +int32_t osp_set_cpu(int32_t i) +{ + if (OSP_NO_AFFIINITY == i) + { + return 0; + } + else + { + cpu_set_t mask; + CPU_ZERO(&mask); + CPU_SET(i, &mask); + osp_assert(0 == pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask)); + return 0; + } +} + +OSP_TASKMSG_REG g_TaskRegTbl[] = +{ + //{DbgLogTask, "OspDbglog", NOMARL_MSG_PRI(7), NULL, (OSP_FUNCPTR)osp_dbg_log_main, 0, OSP_PROCESS_MSG}, + //{localshellout, "localshellout", RT_MSG_PRI(10), NULL, (OSP_FUNCPTR)osp_local_shell_out_main, 0, OSP_PROCESS_MSG}, + {localshellin, "localshellin", RT_NOMSG_PRI(98), NULL, (OSP_FUNCPTR)osp_shell_main, 0, OSP_PROCESS_MSG}, + {remoteshellout, "remoteshellout", RT_NOMSG_PRI(98), NULL, (OSP_FUNCPTR)osp_shell_task, 0, OSP_OTHER_MSG}, + {OspTickLess, "OspTickLess", RT_NOMSG_PRI(20), NULL, (OSP_FUNCPTR)osp_tick_less, 1, OSP_PROCESS_MSG}, +#ifdef HEARTBEAT_ENABLE + {OspTmrTask, "OspTmrTask", RT_NOMSG_PRI(99), NULL, (OSP_FUNCPTR)OspTimerTask, 2, OSP_OTHER_MSG}, +#endif + {OspDbgLog, "OspLogTask", RT_NOMSG_PRI(75), NULL, (OSP_FUNCPTR)osp_oam_msg_proc_task, 0, OSP_OTHER_MSG}, + //{ospnetshellrx, "ospnetshellrx", NOMARL_MSG_PRI(6), (OSP_FUNCPTR)osp_net_shell_init, (OSP_FUNCPTR)osp_net_shell_main, 0, OSP_UDP_MSG, (U64)&udp_shell_rx_task}, + +}; + +__thread __typeof__(uint32_t) thread_local_TaskId = 0; + +const char *g_OspSoPath = {"/usr/lib/libosp.so"}; +extern const char *g_UserSoPath; +uint32_t g_OspSoNum = 2; + +void *osp_find_sym(char *pName) +{ + void *handle = NULL; + void *pSym = NULL; + + + { + handle = dlopen(g_OspSoPath, RTLD_NOW); + if (NULL == handle) + { + UCP_PRINT_ERROR("%s %s \r\n", g_OspSoPath, strerror(errno)); + //osp_debug_out_with_time(ERR_DEBUG_LEVEL, "%s %s \r\n", g_OspSoPath, strerror(errno)); + } + else + { + pSym = dlsym(handle, pName); + if (pSym) + return pSym; + } + } + +#if 0 + { + handle = dlopen(g_UserSoPath, RTLD_NOW); +// handle = dlopen(USER_SO_PATH, RTLD_NOW); + if (NULL == handle) + { +// osp_debug_out_with_time(ERR_DEBUG_LEVEL, "%s %s \r\n", USER_SO_PATH, strerror(errno)); + osp_debug_out_with_time(ERR_DEBUG_LEVEL, "%s %s \r\n", g_UserSoPath, strerror(errno)); + } + else + { + pSym = dlsym(handle, pName); + if (pSym) + return pSym; + } + } +#endif + return pSym; +} + + + + + +const uint32_t g_RegTaskNum=OSP_NELEMENTS(g_TaskRegTbl); + + +void osp_task_entry(OSP_TASKCB *Osp_TaskCB) +{ + struct sched_param struSchedParam; + OSP_STATUS ret; + pthread_t PhreadId; + uint32_t MaxTaskPri; + uint32_t MinTaskPri; + Osp_Msg_Head *pHead; + OSP_FUNCPTR Init; + + + CURRENT_TASKID = Osp_TaskCB->Osp_TaskMsg_Reg.TaskId; + Osp_TaskCB->PhreadId = pthread_self(); + + Init = Osp_TaskCB->Osp_TaskMsg_Reg.Init; + + if (Init) + { + ret = Init(); + if (ret) + { + osp_debug_out_with_time(ERR_DEBUG_LEVEL, "task-%s int32_t err\n", Osp_TaskCB->Osp_TaskMsg_Reg.TaskName); + osp_suspend_task(CURRENT_TASKID); + } +// osp_assert(OSP_OK == ret); + } + Osp_TaskCB->TId = syscall(SYS_gettid); + osp_set_cpu(Osp_TaskCB->Osp_TaskMsg_Reg.Cpu); + + + if ((NORMALTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & POLICYMASK)) + && (MSGTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & MSGMASK))) + { + // sprintf(buf, "renice -n %d -p %d", ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & PRIMASK), + // Osp_TaskCB->TId); + // system(buf); + setpriority(PRIO_PROCESS, 0, Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri); + + + osp_sem_take(g_SemStartWork, -1); + while (1) + { + pHead = osp_rev_msg(); + Osp_TaskCB->Osp_TaskMsg_Reg.MainLoop(pHead); + TASK_RUNCNT(CURRENT_TASKID)++; + } + } + else if ((NORMALTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & POLICYMASK)) + && (NOMSGTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & MSGMASK))) + { + // sprintf(buf, "renice -n %d -p %d", ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & PRIMASK), + // Osp_TaskCB->TId); + // system(buf); + setpriority(PRIO_PROCESS, 0, Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri); + + osp_sem_take(g_SemStartWork, -1); + while (1) + { + Osp_TaskCB->Osp_TaskMsg_Reg.MainLoop(); + TASK_RUNCNT(CURRENT_TASKID)++; + + } + } + else if (RTTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & POLICYMASK)) + { + Osp_TaskCB->IsRt =1; + MaxTaskPri = sched_get_priority_max(SCHED_FIFO); + MinTaskPri = sched_get_priority_min(SCHED_FIFO); + osp_assert((((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & PRIMASK) <= MaxTaskPri) && + (((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri)&PRIMASK) >= MinTaskPri)); + + struSchedParam.sched_priority = ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & PRIMASK); + + PhreadId = pthread_self(); + + + ret = pthread_setschedparam(PhreadId, (int32_t)SCHED_FIFO, &struSchedParam); + osp_assert(OSP_OK == ret); + Osp_TaskCB->OsTaskPri = getpriority(PRIO_PROCESS, Osp_TaskCB->TId); + if (NOMSGTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & MSGMASK)) + { + osp_sem_take(g_SemStartWork, -1); + while (1) + { + Osp_TaskCB->Osp_TaskMsg_Reg.MainLoop(); + TASK_RUNCNT(CURRENT_TASKID)++; + } + } + else if (MSGTASK == ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & MSGMASK)) + { + if (XXTASK != ((Osp_TaskCB->Osp_TaskMsg_Reg.TaskPri) & XXMASK)) + { + osp_sem_take(g_SemStartWork, -1); + while (1) + { + pHead = osp_rev_msg(); + + Osp_TaskCB->Osp_TaskMsg_Reg.MainLoop(pHead); + TASK_RUNCNT(CURRENT_TASKID)++; + } + } + else + { + osp_sem_take(g_SemStartWork, -1); + while (1) + { + + osp_sem_take(Osp_TaskCB->sem, -1); + Osp_TaskCB->Osp_TaskMsg_Reg.MainLoop(NULL); + TASK_RUNCNT(CURRENT_TASKID)++; + } + } + } + } + else + { + osp_assert(0); + } + +} + +static uint32_t osp_get_free_task_id(void) +{ + int32_t i; + + for (i = 1; i < OSP_MAX_TASK; i++) + { + if (0 == gOspTask[i].Active) + { + return i; + } + } + + return OSP_INVALID_TASKID; +} + + +OSP_STATUS osp_regtask(OSP_TASKMSG_REG *TaskRegTbl) +{ + pthread_t Thread; + pthread_attr_t ThreadAttr; + OSP_STATUS ret =0; + uint32_t TaskId; + + osp_assert(NULL != TaskRegTbl); + + osp_sem_take(g_SemRegTask, -1); + + + TaskId = TaskRegTbl->TaskId; + + if (OSP_INVALID_TASKID == TaskId) + { + TaskId = osp_get_free_task_id(); + if (OSP_INVALID_TASKID == TaskId) + { + osp_sem_give(g_SemRegTask); + return OSP_ERROR; + } + TaskRegTbl->TaskId = TaskId; + } + + osp_assert(TaskId < OSP_MAX_TASK); + /*ospshell will retart,so this is not ok*/ + osp_assert(0 == gOspTask[TaskId].Active); + gOspTask[TaskId].sem = osp_semc_create(0); + + + if ((OSP_NO_AFFIINITY != TaskRegTbl->Cpu) && ((OSP_CPU_NUM - 1) < TaskRegTbl->Cpu)) + { + osp_sem_give(g_SemRegTask); + return OSP_ERROR; + } + + gOspTask[TaskId].Active = 1; + gOspTask[TaskId].State = TASK_RUNNING; + (void)memcpy(&(gOspTask[TaskId].Osp_TaskMsg_Reg), TaskRegTbl, sizeof(OSP_TASKMSG_REG)); + + if (OSP_PROCESS_MSG == TaskRegTbl->MsgType) + { + osp_create_msgq((Osp_MsgQ_Tcb *)(gOspMsgQue + OSP_ROUND_UP(OSP_MSG_QUE_SIZE,32) * TaskId), + (char *)(gOspTask[TaskId].Osp_TaskMsg_Reg.TaskName)); + + gOspTask[TaskId].send_msg_func = (OSP_FUNCPTR)osp_send_por_msg; + gOspTask[TaskId].rev_msg_func = (OSP_FUNCPTR)osp_rev_promsg; + gOspTask[TaskId].Msg_Que = (uint64_t)(gOspMsgQue + OSP_ROUND_UP(OSP_MSG_QUE_SIZE,32) * TaskId); +// gOspTask[TaskId].MsgQId = QueId; + + } + + if (OSP_UDP_MSG == TaskRegTbl->MsgType) + { + int32_t rxudpid = 0; + int32_t txudppid = 0; + OSP_UDP_TASK_DATA *pdata; + + pdata = (OSP_UDP_TASK_DATA *)TaskRegTbl->MsgTypeData; + + if (pdata->IsRx) + { + rxudpid = osp_create_rxucp(pdata->port); + txudppid = osp_create_txucp(pdata->port, "127.0.0.1"); + } + else + { + txudppid = osp_create_txucp(pdata->port, pdata->ip); + } + gOspTask[TaskId].send_msg_func = (OSP_FUNCPTR)osp_send_udpmsg; + gOspTask[TaskId].rev_msg_func = (OSP_FUNCPTR)osp_rev_udpmsg; + gOspTask[TaskId].Msg_Que = OSP_UDPID_TO_QUE(txudppid, rxudpid); + } + + if (OSP_OTHER_MSG == TaskRegTbl->MsgType) + { + + gOspTask[TaskId].send_msg_func = (OSP_FUNCPTR)osp_send_othermsg; + gOspTask[TaskId].rev_msg_func = (OSP_FUNCPTR)osp_rev_other_msg; + gOspTask[TaskId].Msg_Que = TaskRegTbl->MsgTypeData; + + + } + /*if task has no mainloop, then it is stub task*/ + if (NULL == TaskRegTbl->MainLoop) + { + osp_sem_give(g_SemRegTask); + return OSP_OK; + } + + + + + ret = pthread_attr_init(&ThreadAttr); + osp_assert(OSP_OK == ret); +// ret = pthread_attr_setstacksize(&ThreadAttr, OSP_TASK_STACK); +// osp_assert(OSP_OK == ret); + + if (IS_RT_PRI(TaskRegTbl->TaskPri)) + { + ret = pthread_attr_setschedpolicy(&ThreadAttr, + SCHED_FIFO); + osp_assert(OSP_OK == ret); + } + ret = pthread_create(&Thread, + &ThreadAttr, + (void *(*)(void *))osp_task_entry, + &gOspTask[TaskId]); + osp_assert(OSP_OK == ret); + + osp_sem_give(g_SemRegTask); + + return OSP_OK; +} + + + +OSP_STATUS osp_reg_task_tlb(OSP_TASKMSG_REG *TaskRegTbl, uint32_t TaskNum) +{ + int32_t i; + + osp_assert(NULL != TaskRegTbl); + osp_assert(TaskNum <= OSP_MAX_TASK); + + for (i = 0; i < TaskNum; i++) + { + osp_regtask(&TaskRegTbl[i]); + } + + return OSP_OK; +} + +int32_t osp_set_net_task_msg_que(int32_t taskid, int32_t txudpid, int32_t rxudpid) +{ + if ((taskid >= OSP_MAX_TASK) || (taskid <0)) + { + return -1; + } + + gOspTask[taskid].Msg_Que = OSP_UDPID_TO_QUE(txudpid, rxudpid); + + return 0; +} +void osp_start_task_all(void) +{ + uint32_t i; + for (i = 0; i < OSP_MAX_TASK; i++) + { + osp_sem_give(g_SemStartWork); + } + +} +OSP_STATUS osp_regtaskAll(void) +{ + //OSP_TASKMSG_REG *pTaskRegTbl = 0; + //U32 *pRegTaskNum = NULL; + OSP_STATUS ret; + g_SemStartWork = osp_semc_create(0); + g_SemRegTask = osp_semm_create(); + + + if (0 == g_ProcessId) + { + ret = osp_reg_task_tlb(g_TaskRegTbl, g_RegTaskNum); + osp_assert(OSP_OK == ret); + + } + + usleep(100); /*to keep setup order*/ + +#if 0 + pTaskRegTbl = osp_find_sym("TaskRegTbl"); + pRegTaskNum = osp_find_sym("TegTaskNum"); + if ((NULL !=pTaskRegTbl) && (NULL != pRegTaskNum)) + { + ret = osp_reg_task_tlb(pTaskRegTbl, *pRegTaskNum); + } + osp_reg_task_tlb(g_TestRegTbl, g_RegTestNum); +#endif + return OSP_OK; + +} + +void osp_show_task_info(void) +{ + int32_t i; + char *pbuf; + int32_t len = 0; + char *p; + char state[12] = {0}; + + pbuf = malloc(10 * 1024); + osp_assert(pbuf != NULL); + + len = sprintf(pbuf, "%-8s%-8s%-16s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s%-12s\n", + "Id", "OsId", "Name", "state", "Run", "MsgRx", "MsgTx", "Cpu-Pri", "Type", + "MsgAlloc", "LogMsgAlloc", "MsgFree", "MemAlloc", "MemFree"); + for (i = 0; i < OSP_MAX_TASK; i++) + { + if (0 == TASK_SYSID(i)) + { + continue; + } + + if (gOspTask[i].Active) + { + if (TASK_RUNNING == TASK_STATE(i)) + sprintf(state, "%s", "running"); + else if (TASK_SUSPEND == TASK_STATE(i)) + sprintf(state, "%s", "suspended"); + + len += sprintf(pbuf + len, "%-8d%-8d%-16s%-12s%-12lu%-12d%-12d%d-%-12d%-12s%-12d%-12d%-12d%-12d%-12d\n", + gOspTask[i].Osp_TaskMsg_Reg.TaskId, TASK_SYSID(i), gOspTask[i].Osp_TaskMsg_Reg.TaskName, state, + TASK_RUNCNT(i), + TASK_MSG_RXCNT(i), TASK_MSG_TXCNT(i), + gOspTask[i].Osp_TaskMsg_Reg.Cpu, ((gOspTask[i].Osp_TaskMsg_Reg.TaskPri) & PRIMASK), + gOspTask[i].IsRt ? "RT" : "*", + TASK_MSG_ALLOCCNT(i), TASK_LOGMSG_ALLOCCNT(i), TASK_MSG_FREECNT(i), + TASK_MEM_ALLOCCNT(i), TASK_MEM_FREECNT(i)); + } + } + for (p = pbuf; p < pbuf + len; p += (MAX_DBGINFO_LEN - 1)) + { + printf("%s", p); + } + free(pbuf); +} + +OSP_STATUS osp_task_init(void) +{ + osp_set_task_shell(localshellin); + osp_set_task_shell(localshellout); + osp_set_task_shell(ospnetshellrx); + + osp_regtaskAll(); + osp_task_dbg_out_enable_all(); + + return OSP_OK; + +} +int32_t osp_get_task_num(void) +{ + return OSP_MAX_TASK; +} +OSP_TASKCB *osp_get_taskcb_base(void) +{ + return gOspTask; +} + +int32_t osp_set_taskcpu(int32_t taskid, int32_t cpuid) +{ + cpu_set_t mask; + CPU_ZERO(&mask); + CPU_SET(cpuid, &mask); + + osp_assert(0 == pthread_setaffinity_np(gOspTask[taskid].PhreadId, sizeof(mask), &mask)); + return 0; +} + + + diff --git a/osp/src/ospTcp.c b/osp/src/ospTcp.c new file mode 100644 index 0000000..df40d67 --- /dev/null +++ b/osp/src/ospTcp.c @@ -0,0 +1,153 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "osp.h" +#include "ospTcp.h" + + +int32_t osp_tcp_send(int32_t socket_fd, char *pMsg, int32_t msgLen) +{ + return send(socket_fd, pMsg, msgLen, MSG_NOSIGNAL); + +} + +int32_t osp_tcp_rev(int32_t socket_fd, char *pMsg, int32_t msgLen) +{ + return recv(socket_fd, pMsg, msgLen, 0); +} +#if 0 +int tcpSerCreat(int port) +{ + int socket_fd; + struct sockaddr_in servaddr; + int opt; + int optLen = sizeof(int); + + if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + return -1; + } + + + + + + opt=(64*1024); + setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF,(char*)&opt, sizeof(opt)); + getsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(opt)); + + opt=(64*1024); + setsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF,(char*)&opt, sizeof(opt)); + getsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)); + opt = 1; + setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR,(char*)&opt, sizeof(opt)); + + + + memset(&servaddr, 0, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); + servaddr.sin_port = htons(port); + + + if (bind(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) + { + return -1; + } + if (listen(socket_fd, 10) == -1) + { + return -1; + } + return socket_fd; + +} + +int tcpCliCreat(int port) +{ + int socket_fd; + int reuse = 0; + int opt; + struct sockaddr_in servaddr; + + + if ((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + { + return -1; + } + + opt=(64*1024); + setsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF,(char*)&opt, sizeof(opt)); + getsockopt(socket_fd, SOL_SOCKET, SO_SNDBUF, &opt, sizeof(opt)); + + opt=(64*1024); + setsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF,(char*)&opt, sizeof(opt)); + getsockopt(socket_fd, SOL_SOCKET, SO_RCVBUF, &opt, sizeof(opt)); + opt = 1; + setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR,(char*)&opt, sizeof(opt)); + + memset(&servaddr, 0, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); + servaddr.sin_port = htons(port); +#if 0 + if (bind(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1) + { + return -1; + } +#endif + return socket_fd; + + +} + +int tcpAccept(int socket_fd) +{ + int connect_fd; + + if ((connect_fd = accept(socket_fd, (struct sockaddr*)NULL, NULL)) == -1) + { + return -1; + } + return connect_fd; +} + +int tcpConnet(int socket_fd, char *targetIp, int port) +{ + struct sockaddr_in servaddr; + + memset(&servaddr, 0, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(port); + servaddr.sin_addr.s_addr = inet_addr(targetIp); + + + if (connect(socket_fd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) + { + return -1; + } + return 0; +} +#endif + + diff --git a/osp/src/ospTest.c b/osp/src/ospTest.c new file mode 100644 index 0000000..9e636e6 --- /dev/null +++ b/osp/src/ospTest.c @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "osp.h" + + +static int32_t osp_tesk_init1(void) +{ + void *pTimer; + int32_t ret; + + pTimer = osp_timer_create_sim(OspTestTask, 1, 1, 0); + ret = osp_timer_start(pTimer); + + + return ret; +} + + + +static void osp_tesk_main1(Osp_Msg_Head *pMsg) +{ + char buf[] = "Osposp_tesk_main1***************************************************************************************************************************************************************************************"; + + osp_dbg_log(buf, strlen(buf)); + + +} + + +OSP_TASKMSG_REG g_TestRegTbl[] = +{ + + {OspTestTask, "OspTestTask", NOMARL_NOMSG_PRI(20), (OSP_FUNCPTR)osp_tesk_init1, (OSP_FUNCPTR)osp_tesk_main1, 0, OSP_PROCESS_MSG}, + +}; + +const uint32_t g_RegTestNum = OSP_NELEMENTS(g_TestRegTbl); + + diff --git a/osp/src/ospTimer.c b/osp/src/ospTimer.c new file mode 100644 index 0000000..bdf399b --- /dev/null +++ b/osp/src/ospTimer.c @@ -0,0 +1,529 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "osp.h" + +uint64_t ospTicks = 0; +#define ARTCH_TIMER_SIZE 4096 +#define ARTCH_TIMER_OFFSET 8 + + +Node **gp_TimerList = NULL; + + +void *gOspTimerSemId; +static int32_t timerfd; + + + +OSP_STATUS osp_timer_pool_init(void) +{ + gOspTimerSemId = osp_get_init_mem(sizeof(lx_sem_t)); + gp_TimerList = (Node **)osp_get_init_mem(sizeof(Node)); + + osp_semsm_create(gOspTimerSemId); + timerfd = timerfd_create(CLOCK_MONOTONIC, 0); + return (OSP_OK); +} + +OSP_STATUS osp_timer_start(void *Timer) +{ + OSP_timer_Tcb *timer = Timer; + timer->State = TIMER_RUNNING; + return 0; +} + + +void *osp_timer_create_sim(uint32_t DstTaskId, bool isRepeat, uint32_t Period, uint32_t Delay) +{ + OSP_timer_Tcb *timer; + Node *TmpNode; + + osp_sem_take(gOspTimerSemId, -1); + /*if first one*/ + if ((NULL == (*gp_TimerList)) || (BUFFER_BASE == (char *)(*gp_TimerList))) + { + (*gp_TimerList) = (Node *)osp_alloc_mem(sizeof(Node)); + (*gp_TimerList)->TimerOff = (uint64_t)osp_alloc_mem(sizeof(OSP_timer_Tcb)) - (uint64_t)BUFFER_BASE; + (*gp_TimerList)->NextNodeOff = 0; + + timer = (OSP_timer_Tcb *)((*gp_TimerList)->TimerOff + BUFFER_BASE); + timer->Delay = Delay; + timer->Repeat =isRepeat; + timer->Period = Period; + timer->TimeOut = Period + Delay; + timer->DstTaskId = DstTaskId; + timer->RunCnt = 0; + timer->State = TIMER_READY; + timer->Valid = 1; + } + /*if not first one*/ + else + { + TmpNode = (*gp_TimerList); + while (TmpNode->NextNodeOff) + { + TmpNode = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + } + + TmpNode->NextNodeOff = (uint64_t)osp_alloc_mem(sizeof(Node)) - (uint64_t)BUFFER_BASE; + TmpNode = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + TmpNode->TimerOff = (uint64_t)osp_alloc_mem(sizeof(OSP_timer_Tcb)) - (uint64_t)BUFFER_BASE; + TmpNode->NextNodeOff = 0; + + timer = (OSP_timer_Tcb *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE); + timer->Delay = Delay; + timer->Repeat = isRepeat; + timer->Period = Period; + timer->TimeOut = Period + Delay; + timer->DstTaskId = DstTaskId; + timer->RunCnt = 0; + timer->State = TIMER_READY; + timer->Valid = 1; + } + + osp_sem_give(gOspTimerSemId); + return timer; +} +void osp_timer_del_sim(void *timer) +{ + Node *TmpNode; + Node *Pre; + OSP_timer_Tcb *ptimer; + if ((NULL == (*gp_TimerList)) || (BUFFER_BASE == (char *)(*gp_TimerList))) + { + return; + } + if (NULL == timer) + { + return; + } + + ptimer = timer; + if (1 != ptimer->Valid) + { + return; + } + + osp_sem_take(gOspTimerSemId, -1); + TmpNode = (*gp_TimerList); + + /*if head is the one*/ + if (timer == (OSP_timer_Tcb *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)) + { + (*gp_TimerList) = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + osp_free_mem((char *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)); + osp_free_mem((char *)TmpNode); + osp_sem_give(gOspTimerSemId); + return; + } + + /*middle or tail*/ + while (timer != (OSP_timer_Tcb *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)) + { + Pre = TmpNode; + TmpNode = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + } + + Pre->NextNodeOff = TmpNode->NextNodeOff; + osp_free_mem((char *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)); + osp_free_mem((char *)TmpNode); + osp_sem_give(gOspTimerSemId); + +} + +void osp_timer_suspend_sim(void *timer) +{ + OSP_timer_Tcb *ptimer; + + ptimer = (OSP_timer_Tcb *)timer; + + osp_sem_take(gOspTimerSemId, -1); + printf("timer id %p\n", timer); + + ptimer->State = TIMER_SUSPEND; + osp_sem_give(gOspTimerSemId); + + + +} + + + + +void osp_wait_timeout(int32_t ms) +{ + + static int32_t lastms = 0; + struct itimerspec ts1; + uint64_t tmp; + + if (lastms != ms) + { + lastms = ms; + ts1.it_value.tv_sec = 0; + ts1.it_value.tv_nsec = ms * 1000000; //!1ms + + ts1.it_interval = ts1.it_value; + //-------------------create timer + timerfd_settime(timerfd, 0, &ts1, NULL); + } + read(timerfd, &tmp, sizeof(uint64_t)); + + + +} + + + + + + + +void osp_pridel_time(void) +{ + static uint32_t usecondold; + static uint32_t usecondcur; + static uint32_t useconddel; + + OSP_RTCTIME osptime; + osp_get_rtc_time(&osptime); + + usecondold = usecondcur; + usecondcur = osptime.usecond; + if (usecondcur < usecondold) + { + useconddel = usecondcur + 1000000 - usecondold; + } + else + { + useconddel = usecondcur - usecondold; + } + + printf("***************************************************%d\r\n", useconddel); + + +} + +void osp_tick_less(void) +{ + Node *TmpNode; + Node *Pre; + + OSP_timer_Tcb *timer; + static uint32_t next_time = 1; + uint32_t min_time = 0xffffffff; + /*if osp init not finish, we need keep 1S period Delay run. so that OSP_tick will not run always*/ + + + /*if has no timer, we need keep 1S period Delay run. so that OSP_tick will not run always*/ + if ((NULL == (*gp_TimerList)) || (BUFFER_BASE == (char *)(*gp_TimerList))) + { + osp_wait_timeout(999); + return; + } + + + ospTicks += next_time; + osp_wait_timeout(next_time); + + osp_sem_take(gOspTimerSemId, -1); + TmpNode = (*gp_TimerList); + Pre = TmpNode; + + while (TmpNode->TimerOff) + { + timer = (OSP_timer_Tcb *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE); + + if (timer->State == TIMER_RUNNING) + { + timer->TimeOut -= next_time; + + if (0 >= timer->TimeOut) + { + timer->RunCnt++; + osp_timer_callback(timer->DstTaskId, (uint64_t)timer); + if (timer->Repeat) + { + timer->TimeOut = timer->Period; + min_time = (min_time >= timer->TimeOut) ? timer->TimeOut: min_time; + } + /*rm if not Repeat*/ + else + { + /*if head is the one*/ + if (TmpNode == (*gp_TimerList)) + { + (*gp_TimerList) = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + osp_free_mem((char *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)); + osp_free_mem((char *)TmpNode); + } + + /*middle or tail*/ + else + { + + Pre->NextNodeOff = TmpNode->NextNodeOff; + osp_free_mem((char *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE)); + osp_free_mem((char *)TmpNode); + } + } + } + else + { + min_time = (min_time >= timer->TimeOut) ? timer->TimeOut: min_time; + } + } + /*tail*/ + if (0 == TmpNode->NextNodeOff) + { + osp_sem_give(gOspTimerSemId); + next_time = min_time; + + return; + } + + Pre = TmpNode; + TmpNode = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + } + osp_sem_give(gOspTimerSemId); +} + +uint64_t osp_get_osp_ticks(void) +{ + return (ospTicks); +} + +#ifdef X86 +unsigned long rdtsc(void) +{ + uint32_t low,high; + asm volatile("rdtsc" : "=a"(low), "=d"(high)); + return low | (unsigned long)high << 32; + +} + +#else +uint64_t osp_arch_counter_get_cntpct(void) +{ + static int32_t fd = -1; + static uint32_t *base = NULL; + + uint64_t cval = 0; + if (-1 == fd) + { + fd = open("/dev/archtimer", O_RDWR); + if (-1 == fd) + return 0; + base = (uint32_t *)mmap(NULL, ARTCH_TIMER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, + fd, 0); + } + if (base) + { + cval = *(base + 3); + cval = cval << 32; + cval |= *(base + 2); + } + return cval; +} +#endif +uint64_t osp_get_cycel(void) +{ +#ifdef X86 + + return rdtsc(); +#else + return osp_arch_counter_get_cntpct(); +#endif +} +/* + * osp_set_ticks - set ospTicks + * input: + * ticks + * return + * none + */ + +void osp_set_ticks(uint64_t ticks) +{ + ospTicks = ticks; +} + +/* + * osp_timer_callback - default OSP timer's callcack routine + * input: + * ospTaskId + * timerId timer ID + * param??¡ìoo user specified param + * return + * OSP_OK,or + * OSP_ERROR(execute fail) + */ + +OSP_STATUS osp_timer_callback(uint64_t DstTaskId, uint64_t timer) +{ + Osp_Msg_Head *phead = osp_alloc_msgTimer(); + + + if (NULL != phead) + { + phead->MsgType = OSP_TIMER_TYPE; + phead->DstId = DstTaskId; + phead->SrcId = CURRENT_TASKID; + *(uint64_t *)((uint64_t)phead + MSG_HEAD_SIZE) = timer; + + osp_send_msg(phead); + } + return (OSP_OK); + +} + +void *osp_get_timer_from_msg(Osp_Msg_Head *pmsg) +{ + Osp_Timer_Msg_Block *timerblock = (Osp_Timer_Msg_Block *)pmsg; + return (void *)(timerblock->data); +} + +/* +*osp_timer_callback - display timer count(started/stoped/deleted) +*input: +* none +*return +* none +*/ +/*lint -e826*/ +void osp_show_timer_count(void) +{} + + +/* + * osp_clk_rate_get - query system clock frequency + * input: + * none + * return + * ticks/per second + */ + +int32_t osp_clk_rate_get(void) +{ + return 100; +} + + + +/* + * OSP_getOneTimerInfo - get timer's information + * input: + * pNode : pointer to OSP timer + * return + * OSP_ERROR + */ + + + +/* + * showRunTimerInfo - print run timer's information + * input: + * none + * return + * none + */ + +void osp_show_timer_info(void) +{ + Node *TmpNode; + + OSP_timer_Tcb *timer; + char *pbuf; + int32_t len = 0; + + + /*if has no timer, we need keep 1S period Delay run. so that OSP_tick will not run always*/ + if ((NULL == (*gp_TimerList)) || (BUFFER_BASE == (char *)(*gp_TimerList))) + { + osp_debug_out(CMD_DEBUG_LEVEL, "%s\r\n", "no timer"); + return; + } + + pbuf = malloc(10 * 1024); + if (pbuf == NULL) + return; + len = sprintf(pbuf + len, "%-8s%-16s%-16s%-12s%-12s%-12s%-12s%-12s%-12s\n", "TaskId", "TskName", + "point", "Repeat", "RunCnt", "Period", "TimeOut", "Delay", "Suspend/Running"); + + + + + + osp_sem_take(gOspTimerSemId, -1); + TmpNode = (*gp_TimerList); + + while (TmpNode->TimerOff) + { + timer = (OSP_timer_Tcb *)(TmpNode->TimerOff + (uint64_t)BUFFER_BASE); + len += sprintf(pbuf + len, "%-8d%-16s%-16p%-12s%-12lu%-12d%-12d%-12d%s\n", + timer->DstTaskId, gOspTask[timer->DstTaskId].Osp_TaskMsg_Reg.TaskName, + timer, + (timer->Period) ? "ture" : "faulse", + timer->RunCnt, + timer->Period, + timer->TimeOut, + timer->Delay, + (timer->State == TIMER_RUNNING) ? "Running" : "Suspend"); + + /*tail*/ + if (0 == TmpNode->NextNodeOff) + { + osp_sem_give(gOspTimerSemId); + break; + } + + TmpNode = (Node *)(TmpNode->NextNodeOff + (uint64_t)BUFFER_BASE); + } + pbuf[len] = '\0'; + osp_debug_out(CMD_DEBUG_LEVEL, "%s", pbuf); + free(pbuf); +} + + + + + + + +/* + * osp_get_systick - get the value of the kernel's tick counter + * input: + * none + * return + * the current value of the tick counter(per 1ms) + */ + +uint32_t osp_get_systick() +{ + uint32_t currentTime; + + + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + currentTime = ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + + return currentTime; +} + + + + + + + + + + diff --git a/osp/src/ospUdp.c b/osp/src/ospUdp.c new file mode 100644 index 0000000..df3931d --- /dev/null +++ b/osp/src/ospUdp.c @@ -0,0 +1,365 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "osp.h" +#include "ucp_printf.h" + + +typedef struct tag_OSP_UDP_SOCKET +{ + lx_sem_t mutex; + char ip[64]; + int32_t port; + int32_t taskid; + int32_t direction;/**/ + int32_t pkgnum; + int64_t totalsize; + int32_t errcnt; + struct sockaddr_in servAddr; + int32_t socket; + int32_t valid; +}OSP_UDP_SOCKET; + + + +#define OSP_MAX_UDP_CONNECT_NUM 256 + +OSP_UDP_SOCKET osp_udp[OSP_MAX_UDP_CONNECT_NUM] = {0}; + +#define OSPUDP_MSG_LEN (1500 + MSG_HEAD_SIZE) + + + +void *udp_sem; + +int32_t osp_get_udp(char *ip, int32_t port, int32_t direction) +{ + int32_t i; + + for (i = 0; i < OSP_MAX_UDP_CONNECT_NUM; i++) + { + if ((osp_udp[i].valid) && (strcmp(osp_udp[i].ip, ip) == 0) && (osp_udp[i].port == port) && (osp_udp[i].direction == direction)) + { + return i; + } + } + + return -1; +} + +int32_t osp_get_rxudp(char *ip, int32_t port) +{ + return osp_get_udp(ip, port, OSP_UDP_RX); +} + +int32_t osp_get_txudp(char *ip, int32_t port) +{ + return osp_get_udp(ip, port, OSP_UDP_TX); +} + + +int32_t osp_get_ip_port(int32_t udpid, char *ip, int32_t *port) +{ + if ((udpid < 0) || (udpid > OSP_MAX_UDP_CONNECT_NUM) || NULL == ip || NULL == port) + { + return -1; + } + strcpy(ip, osp_udp[udpid].ip); + *port = osp_udp[udpid].port; + + return -1; +} + + + + +int32_t osp_check_udpid(int32_t udpid) +{ + if ((udpid < 0) || (udpid > OSP_MAX_UDP_CONNECT_NUM) || !(osp_udp[udpid].valid)) + { + return 0; + } + + return 1; +} +int32_t osp_set_udp_noblock(int32_t udpid) +{ + if (osp_check_udpid(udpid)) + return -1; + return fcntl(osp_udp[udpid].socket, F_SETFL, O_NONBLOCK); +} + + + + +int32_t osp_add_udp(char *ip, int32_t port, int32_t direction) +{ + int32_t i; + osp_sem_take(udp_sem, -1); + + for (i = 0; i < OSP_MAX_UDP_CONNECT_NUM; i++) + { + if (osp_udp[i].valid == 0) + { + strcpy(osp_udp[i].ip, ip); + osp_udp[i].port = port; + osp_udp[i].valid = 1; + osp_udp[i].direction = direction; + osp_sem_give(udp_sem); + return i; + } + } + osp_sem_give(udp_sem); + return -1; + +} + + + + + +int32_t osp_del_udp(int32_t udpid) +{ + if (!osp_check_udpid(udpid)) + { + return 0; + } + + osp_udp[udpid].valid = 0; + close(osp_udp[udpid].socket); + + return 0; + + +} + + +int32_t osp_create_rxucp(int32_t port) +{ + int32_t res; + int32_t sockset; + int32_t tmp = 1; + int32_t addrlen; + int32_t udp_id; + int32_t idx; + + if (osp_get_rxudp("127.0.0.1", port) >= 0) + { + return -1; + } + + + + idx = osp_add_udp("127.0.0.1", port, OSP_UDP_RX); + if (idx < 0) + { + return -1; + } + + osp_udp[idx].taskid = CURRENT_TASKID; + osp_udp[idx].direction = OSP_UDP_RX; + + sockset = socket(AF_INET, SOCK_DGRAM, 0); + if (sockset == -1) { + perror("socket"); + return -1; + } + + setsockopt(sockset, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(int32_t)); + + osp_udp[idx].socket = sockset; + osp_udp[idx].servAddr.sin_family = AF_INET; + osp_udp[idx].servAddr.sin_port = htons(port); + osp_udp[idx].servAddr.sin_addr.s_addr = htonl(INADDR_ANY); + + addrlen = sizeof(struct sockaddr); + res = bind(sockset, (struct sockaddr *)&osp_udp[idx].servAddr, addrlen); + if (res == -1) { + perror("bind"); + return -1; + } + + udp_id = idx; + return udp_id; +} + +int32_t osp_create_txucp(int32_t port, char *targetIp) +{ + int32_t sockset; + int32_t udp_id; + int32_t idx; + + if (osp_get_txudp(targetIp, port) >= 0) + { + return -1; + } + idx = osp_add_udp(targetIp, port, OSP_UDP_TX); + if (idx < 0) + { + return -1; + } + + osp_udp[idx].taskid = CURRENT_TASKID; + osp_udp[idx].direction = OSP_UDP_TX; + + sockset = socket(AF_INET, SOCK_DGRAM, 0); + if (sockset == -1) { + perror("socket"); + return -1; + } + + + + osp_udp[idx].socket = sockset; + osp_udp[idx].servAddr.sin_family = AF_INET; + osp_udp[idx].servAddr.sin_addr.s_addr = inet_addr(targetIp); + osp_udp[idx].servAddr.sin_port = htons(port); + + udp_id = idx; + + return udp_id; +} + + +int32_t osp_udp_receive(char *pMsg, int32_t len, int32_t udp_id) +{ +// struct sockaddr_in sin; + socklen_t sin_len; + + sin_len = sizeof(struct sockaddr); + len = recvfrom(osp_udp[udp_id].socket, pMsg, len, 0, (struct sockaddr *)&osp_udp[udp_id].servAddr, &sin_len); + if (len <= 0) + { + osp_atomic_inc(&osp_udp[udp_id].errcnt); + return len; + } + + osp_atomic_inc(&osp_udp[udp_id].pkgnum); + osp_sem_take(&osp_udp[udp_id].mutex, -1); + osp_udp[udp_id].totalsize += len; + osp_sem_give(&osp_udp[udp_id].mutex); + + return len; + +} + +int32_t osp_udp_send(char *pMsg, int32_t msgLen, int32_t udp_id) +{ + int32_t Len; + + if ((pMsg == NULL) || !osp_check_udpid(udp_id)) + { + return (-1); + } + + Len = sendto(osp_udp[udp_id].socket, pMsg, msgLen, 0, (struct sockaddr *)&osp_udp[udp_id].servAddr, sizeof(struct sockaddr_in)); + if (Len != msgLen) + { + //osp_atomic_inc(&osp_udp[udp_id].errcnt); + return (-1); + } + +#if 0 + osp_atomic_inc(&osp_udp[udp_id].pkgnum); + + osp_sem_take(&osp_udp[udp_id].mutex, -1); + osp_udp[udp_id].totalsize += Len; + osp_sem_give(&osp_udp[udp_id].mutex); +#endif + return (0); + +} + +int32_t osp_send_udpmsg(Osp_Msg_Head *pMsg, uint64_t udp_id) +{ + int32_t ret; + ret = osp_udp_send((char*)pMsg, pMsg->MsgSize + MSG_HEAD_SIZE, OSP_UDPID_TO_TX(udp_id)); + + osp_free_msg(pMsg); + return ret; +} + +Osp_Msg_Head *osp_rev_udpmsg(uint64_t udp_id) +{ + char *pbuf; + int32_t ret; + + pbuf = (char *) osp_alloc_msg(OSPUDP_MSG_LEN); + if (NULL == pbuf) + { + return NULL; + } + + ret = osp_udp_receive(pbuf, OSPUDP_MSG_LEN, OSP_UDPID_TO_RX(udp_id)); + if (ret <= 0) + { + return NULL; + } + + return (Osp_Msg_Head *)pbuf; + +} + + + +int32_t osp_udp_init(void) +{ + int32_t i; + + udp_sem = osp_semm_create(); + + for (i = 0; i < OSP_MAX_UDP_CONNECT_NUM; i++) + { + osp_semsm_create(&(osp_udp[i].mutex)); + } + return 0; +} + + + + + +void osp_show_udp(void) +{ + int32_t i; + char buf[4096]; + int32_t len = 0; + + len += sprintf(buf + len, "\n%-16s%-16s%-16s%-16s%-16s%-16s%-16s%-16s%-16s\n", "direction", "udpid", "taskid", "socket", "ip", "port", "pkgnum", "totalsize", "errcnt"); + for (i = 0; i < OSP_MAX_UDP_CONNECT_NUM; i++) + { + if ((osp_udp[i].valid) && (osp_udp[i].direction == OSP_UDP_RX)) + { + len += sprintf(buf + len, "%-16s%-16d%-16d%-16d%-16s%-16d%-16d%-16lu%-16d\n", + "rx", i, osp_udp[i].taskid, osp_udp[i].socket, osp_udp[i].ip, osp_udp[i].port, osp_udp[i].pkgnum, osp_udp[i].totalsize, osp_udp[i].errcnt); + } + } + + len += sprintf(buf + len, "\n"); + + for (i = 0; i < OSP_MAX_UDP_CONNECT_NUM; i++) + { + if ((osp_udp[i].valid) && (osp_udp[i].direction == OSP_UDP_TX)) + { + len += sprintf(buf + len, "%-16s%-16d%-16d%-16d%-16s%-16d%-16d%-16lu%-16d\n", + "tx", i, osp_udp[i].taskid, osp_udp[i].socket, osp_udp[i].ip, osp_udp[i].port, osp_udp[i].pkgnum, osp_udp[i].totalsize, osp_udp[i].errcnt); + + + } + } + + UCP_PRINT_SHELL("%s\n", buf); +} + + + diff --git a/test/case0/src/testcase.c b/test/case0/src/testcase.c new file mode 100644 index 0000000..5dd7f4e --- /dev/null +++ b/test/case0/src/testcase.c @@ -0,0 +1,369 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "pet_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "ospLog.h" +#include "ospCfgToBin.h" +#include "drv_init.h" + +uint32_t slot_ind_flag = 0; +uint32_t slot_ind_time_flag = 0; +uint32_t g_slot_time = 0; +uint32_t gu32_value = 0; +uint32_t gu32_tick_receive_ctrl = 0; +uint32_t gu32_tick_from_tx_ctrl = 0; + +uint32_t rx_callback_data(const char* buf,uint32_t payloadSize) +{ + uint32_t stc_cnt = read_stc_local_timer(); + + uint32_t value = *(uint32_t *)buf; + uint16_t sfn = value >> 16; + uint16_t slot = value & 0xffff; + + uint32_t tick_from_tx_ctrl = *(uint32_t *)(buf+4); + + slot_ind_flag = 1; + gu32_value = value; + gu32_tick_receive_ctrl = stc_cnt; + gu32_tick_from_tx_ctrl = tick_from_tx_ctrl; + uint32_t diff = stc_cnt - tick_from_tx_ctrl; + //UCP_PRINT_LOG("a72_rx[%d], ape_tx[%d],offset[%d]",stc_cnt,tick_from_tx_ctrl,diff); + //UCP_PRINT_LOG("qNO[%d],sfn[%d],slot[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot); + + if(0 == slot_ind_time_flag) + { + slot_ind_time_flag = 1; + diff = 500000; + } + else + { + diff = stc_cnt - g_slot_time; + } + g_slot_time = stc_cnt; + + if ((diff > 520000) || (diff < 480000)) + { + UCP_PRINT_ERROR("qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + } + + //EcsSmLocalMgt_t* pEcsSmLocalMgt = get_ecs_sm_local_mgt(); + ///MsgQueueCommonInfo_t* chCommon = pEcsSmLocalMgt->pUlQueue[0][UCP4008_TRAFFIC_NR_eMBB_DATA]; + //UCP_PRINT_DEBUG("rx_callback_data chCommon info alloc[%d],in[%d],out[%d]",chCommon->alloc,chCommon->in,chCommon->out); + + return payloadSize; +} + +uint32_t rx1_callback_data(const char* buf,uint32_t payloadSize) +{ + return payloadSize; +} + +uint32_t rx_callback_ctrl(const char* buf,uint32_t payloadSize) +{ +#if 0 + EcsSmLocalMgt_t* pEcsSmLocalMgt = get_ecs_sm_local_mgt(); + MsgQueueCommonInfo_t* chCommon = pEcsSmLocalMgt->pUlQueue[0][UCP4008_TRAFFIC_NR_eMBB_CTRL]; + UCP_PRINT_DEBUG("rx_callback_ctrl chCommon info alloc[%d],in[%d],out[%d]",chCommon->alloc,chCommon->in,chCommon->out); +#endif + return payloadSize; +} + +static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, uint16_t transfer_type, transfer_type_info_s* transfer_type_info_ptr) +{ + queue_info_s c_plane,u_plane; + + switch (transfer_type) { + case CU_SPLIT: + c_plane.rx_block_size = 0x25800; + c_plane.rx_block_num = 32; + c_plane.rx_callback = rx_callback_ctrl; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + u_plane.rx_block_size = 0x28000; + u_plane.rx_block_num = 8; + //u_plane.rx_callback = rx_callback_data; + if (0 == inst_id) + { + u_plane.rx_callback = rx_callback_data; + } + else + { + u_plane.rx_callback = rx1_callback_data; + } + u_plane.tx_block_size = 0x28000; + u_plane.tx_block_num = 8; + u_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + transfer_type_info_ptr->queue_uplane_info = u_plane; + break; + case OAM: + c_plane.rx_block_size = 0x100000; + c_plane.rx_block_num = 32; + c_plane.rx_callback = rx_callback_oam; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + break; + default: + UCP_PRINT_ERROR("get_msg_queue_cfg doesn't support transfer_type[%d] .",transfer_type); + break; + } + + return; +} + +static inline void msg_transfer_cfg(void) +{ + uint8_t port_id = 0; + uint16_t inst_id = 0; + uint16_t transfer_type = 0; + int32_t handle_id = 0; + transfer_type_info_s transfer_type_info; + + for (inst_id=0; inst_idpSyncInfo->queueCfgFlag = ++pMsgQueueLocalMgt->localSyncInfo.queueCfgFlag; + + return; +} + +static inline void msg_transfer_queue_polling(void) +{ + uint8_t port_id = 0; + HandleId_t handler; + uint16_t cu_flag; + uint32_t offset = 0; + uint32_t len = 0; + uint8_t* msg_ptr; + + for (uint32_t i = 0; i < MAX_INSTANCE_NUM; i++) { + handler.port_id = port_id; + handler.inst_id = i; + handler.type_id = CU_SPLIT; + cu_flag = C_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + cu_flag = U_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + handler.type_id = OAM; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + } + + return; +} + +#define CELL_SETUP_TYPE_SIMULATION (0x5a6b7c8d) + +void cell_setup_simulation() +{ + uint32_t size = 16; + char* buf; + uint32_t availableSize,offset; + + uint16_t cu_flag = C_PLANE; + HandleId_t handler; + handler.port_id = 0; + handler.inst_id = 0; + handler.type_id = CU_SPLIT; + + //usleep(10000); + sleep(1); + + int32_t ret = msg_transfer_send_start(handler.value,cu_flag); + + /************C_PLANE***************/ + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("cell_setup_simulation call msg_transfer_alloc_msg err."); + return ; + //continue; + } + + *(uint32_t*)(buf + 0) = CELL_SETUP_TYPE_SIMULATION; + *(uint32_t*)(buf + 4) = read_stc_local_timer(); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + ret = msg_transfer_send_end(handler.value,cu_flag); + + return; +} + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 0."); + + osp_read_spe_cfg_file("/ramfs/cfgDat"); + + msg_transfer_mem_init(); + msg_transfer_cfg(); + ucp_handshake(); + + UCP_PRINT_DEBUG("start transfering message."); + + uint32_t size = 100; + char* buf; + uint32_t availableSize,offset; + uint8_t* ptr; + + uint16_t cu_flag = C_PLANE; + HandleId_t handler; + handler.port_id = 0; + handler.inst_id = 0; + handler.type_id = CU_SPLIT; + + int32_t ret; + + cell_setup_simulation(); + + while(1) { + msg_transfer_queue_polling(); + + if(1 == slot_ind_flag) + { + slot_ind_flag = 0; + + handler.inst_id = 0; + + /************C_PLANE***************/ + cu_flag = C_PLANE; + ret = msg_transfer_send_start(handler.value,cu_flag); + + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("0,c_plane alloc error\r\n"); + continue; + } + + ptr = (uint8_t *)buf; + *(uint32_t*)(ptr + 0) = gu32_value; + *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("0,c_plane send error\r\n"); + } + + ret = msg_transfer_send_end(handler.value,cu_flag); + + /************U_PLANE***************/ + cu_flag = U_PLANE; + ret = msg_transfer_send_start(handler.value,cu_flag); + + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("0,u_plane alloc error\r\n"); + continue; + } + + ptr = (uint8_t *)buf; + *(uint32_t*)(ptr + 0) = gu32_value; + *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("0,u_plane send error\r\n"); + } + + ret = msg_transfer_send_end(handler.value,cu_flag); + + handler.inst_id = 1; + /************C_PLANE***************/ + cu_flag = C_PLANE; + ret = msg_transfer_send_start(handler.value,cu_flag); + + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("1,c_plane alloc error\r\n"); + continue; + } + + ptr = (uint8_t *)buf; + *(uint32_t*)(ptr + 0) = gu32_value; + *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("1,c_plane send error\r\n"); + } + + ret = msg_transfer_send_end(handler.value,cu_flag); + + /************U_PLANE***************/ + cu_flag = U_PLANE; + ret = msg_transfer_send_start(handler.value,cu_flag); + + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("1,u_plane alloc error\r\n"); + continue; + } + + ptr = (uint8_t *)buf; + *(uint32_t*)(ptr + 0) = gu32_value; + *(uint32_t*)(ptr + 4) = gu32_tick_from_tx_ctrl; + *(uint32_t*)(ptr + 8) = gu32_tick_receive_ctrl; + *(uint32_t*)(ptr + 12) = read_stc_local_timer(); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("1,u_plane send error\r\n"); + } + + ret = msg_transfer_send_end(handler.value,cu_flag); + } + } + return 0; +} + diff --git a/test/case1/src/testcase.c b/test/case1/src/testcase.c new file mode 100644 index 0000000..4a3140c --- /dev/null +++ b/test/case1/src/testcase.c @@ -0,0 +1,279 @@ +//test define start +#define _GNU_SOURCE +#include +#include +#include +//#include +#include +#include +#include +#include "typedef.h" +#include "ospHeap.h" +#include "ucp_printf.h" + +/*typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef long int int64_t; +typedef unsigned long int uint64_t;*/ + +extern int32_t g_dev_mem_fd; + +static uint64_t get_cycle() + { + uint64_t cycle; + + asm volatile("mrs %0, pmccntr_el0" : "=r" (cycle)); + + return cycle; + } + +int32_t test_case(uint32_t argc, int32_t* argvp) +//test_case(int argc, char *argv[]) +{ + uint64_t stack_len = 0; + uint32_t memset_len = 0; + uint32_t ctl = 0,cnt, i = 0, j = 0, temp_len = 0; + //uint8_t *memset_ptr; + char *memset_stack_heap_ptr; + char *memset_msg_heap_ptr; + char *memset_ape_phy_heap_ptr; + void *stack_heap_ptr; + void *stack_static_ptr; + void *msg_heap_ptr; + void *msg_static_ptr; + void *ape_phy_heap_ptr; + void *ape_phy_static_ptr; + struct timeval begin,end,medium; + uint64_t start_cnt = 0, end_cnt = 0, medium_cnt = 0; + + UCP_PRINT_DEBUG("start running testcase 1."); + + if(argc < 3) + { + printf("paramete need to be 3: len,ctl,cnt\n"); + return -1; + } + + memset_len = (uint32_t)argvp[0]; + ctl = (uint32_t)argvp[1]; + cnt = (uint32_t)argvp[2]; + + stack_static_ptr = get_static_mem(ARM_STACK, &stack_len); + if((void *)OSP_ERROR == stack_static_ptr) + { + printf("get_static_mem-ARM_STACK:error\n"); + } + else + { + printf("get_static_mem-ARM_STACK:ok! stack_static_ptr = %lx\n",(uint64_t)stack_static_ptr); + } + stack_heap_ptr = osp_heap_mem_init(stack_static_ptr, stack_len, stack_static_ptr, ARM_STACK); + memset_stack_heap_ptr = (char *)osp_alloc_heap_mem(stack_heap_ptr,memset_len); + + msg_static_ptr = get_static_mem(ARM_APE_MSG, &stack_len); + if((void *)OSP_ERROR == msg_static_ptr) + { + printf("get_static_mem-MSG:error\n"); + } + else + { + printf("get_static_mem-MSG:ok! msg_static_ptr = %lx\n",(uint64_t)msg_static_ptr); + } + msg_heap_ptr = osp_heap_mem_init(msg_static_ptr, stack_len, msg_static_ptr, ARM_APE_MSG); + memset_msg_heap_ptr = (char *)osp_alloc_heap_mem(msg_heap_ptr,memset_len); + + ape_phy_static_ptr = get_static_mem(APE_PHY, &stack_len); + if((void *)OSP_ERROR == ape_phy_static_ptr) + { + printf("get_static_mem-APE_PHY:error\n"); + } + else + { + printf("get_static_mem-APE_PHY:ok! ape_phy_static_ptr = %lx\n",(uint64_t)ape_phy_static_ptr); + } + ape_phy_heap_ptr = osp_heap_mem_init(ape_phy_static_ptr, stack_len, ape_phy_static_ptr, APE_PHY); + memset_ape_phy_heap_ptr = (char *)osp_alloc_heap_mem(ape_phy_heap_ptr,memset_len); + + + if(0 == ctl) + { + memset_msg_heap_ptr += 0x20; + while(1) + { + memset(memset_msg_heap_ptr, 0xa5 + i, 0x80); + i++; + osp_clean_dcache_area(memset_msg_heap_ptr, 0x54); + //usleep(300); + } + } + else if(1 == ctl) //ÉÏÐÐ + { + for(i = 0; i < cnt; i++) + { + memset(memset_msg_heap_ptr,0xa5 + i,memset_len); + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + //memset(memset_ptr,0x5A,memset_len); + //invalid + osp_invalid_dcache_area(ARM_APE_MSG,(uint64_t)memset_msg_heap_ptr,memset_len); + medium_cnt = get_cycle(); + gettimeofday(&medium, NULL); + memcpy(memset_stack_heap_ptr,memset_msg_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_msg2stack start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",begin.tv_usec,medium.tv_usec,end.tv_usec,medium.tv_usec - begin.tv_usec,end.tv_usec - begin.tv_usec); + //printf("gettimeofday_medium start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",medium.tv_usec,medium.tv_usec,medium.tv_usec - begin.tv_usec); + printf("TSC_msg2stack start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",start_cnt,medium_cnt,end_cnt,medium_cnt - start_cnt,end_cnt - start_cnt); + + memset(memset_ape_phy_heap_ptr,0x55,memset_len); + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + memcpy(memset_stack_heap_ptr,memset_ape_phy_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_phy2stack start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + printf("TSC_phy2stack start_cnt=%#lx,end_cnt=%#lx,diff=%ld\n\n",start_cnt,end_cnt,end_cnt - start_cnt); + } + } + else if(2 == ctl) //ÏÂÐÐ + { + for(i = 0; i < cnt; i++) + { + memset(memset_stack_heap_ptr,0x5a + i,memset_len); + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + memcpy(memset_msg_heap_ptr,memset_stack_heap_ptr,memset_len); + medium_cnt = get_cycle(); + gettimeofday(&medium, NULL); + osp_clean_dcache_area(memset_msg_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",begin.tv_usec,medium.tv_usec,end.tv_usec,medium.tv_usec - begin.tv_usec,end.tv_usec - begin.tv_usec); + //printf("gettimeofday_medium start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",medium.tv_usec,medium.tv_usec,medium.tv_usec - begin.tv_usec); + printf("TSC_stack2msg start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",start_cnt,medium_cnt,end_cnt,medium_cnt - start_cnt,end_cnt - start_cnt); + + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + memcpy(memset_ape_phy_heap_ptr,memset_stack_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2phy start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + printf("TSC_stack2phy start_cnt=%#lx,end_cnt=%#lx,diff=%ld\n\n",start_cnt,end_cnt,end_cnt - start_cnt); + } + } + else if(3 == ctl) //ÉÏÐУ¬ÏÈinvalidate stack¡¢msg£¬ÔÙmemcpy + { + for(i = 0; i < cnt; i++) + { + memset(memset_msg_heap_ptr,0xa5 + i,memset_len); + + //invalid + gettimeofday(&begin, NULL); + osp_invalid_dcache_area(ARM_STACK,(uint64_t)memset_stack_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg_invalidate stack buf start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + + //invalid + gettimeofday(&begin, NULL); + osp_invalid_dcache_area(ARM_APE_MSG,(uint64_t)memset_msg_heap_ptr,memset_len); + gettimeofday(&end, NULL); + + printf("gettimeofday_stack2msg_invalidate msg buf start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + gettimeofday(&begin, NULL); + memcpy(memset_stack_heap_ptr,memset_msg_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_msg2stack start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",begin.tv_usec,medium.tv_usec,end.tv_usec,medium.tv_usec - begin.tv_usec,end.tv_usec - begin.tv_usec); + + + memset(memset_ape_phy_heap_ptr,0x55,memset_len); + gettimeofday(&begin, NULL); + osp_invalid_dcache_area(ARM_STACK,(uint64_t)memset_stack_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg_invalidate stack buf start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + + gettimeofday(&begin, NULL); + memcpy(memset_stack_heap_ptr,memset_ape_phy_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_phy2stack start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + + } + } + else if(4 == ctl) //ÏÂÐУ¬ÏÈinvalidate stack£¬ÔÙmemcpy + { + memset(memset_stack_heap_ptr, 0x5a + i, memset_len); + + for(i = 0; i < cnt; i++) + { + //invalid + gettimeofday(&begin, NULL); + osp_invalid_dcache_area(ARM_STACK,(uint64_t)memset_stack_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg_invalidate stack buf start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + + temp_len = 0; + gettimeofday(&begin, NULL); + for(j = 0; j < 100; j++) + { + memcpy(memset_msg_heap_ptr + temp_len, memset_stack_heap_ptr + temp_len, 1400); + temp_len += 1400; + } + gettimeofday(&medium, NULL); + osp_clean_dcache_area(memset_msg_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg start_cnt=%#lx,medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",begin.tv_usec,medium.tv_usec,end.tv_usec,medium.tv_usec - begin.tv_usec,end.tv_usec - begin.tv_usec); + + + //invalid + gettimeofday(&begin, NULL); + osp_invalid_dcache_area(ARM_STACK,(uint64_t)memset_stack_heap_ptr,memset_len); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg_invalidate stack buf start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + + temp_len = 0; + gettimeofday(&begin, NULL); + for(j = 0; j < 100; j++) + { + memcpy(memset_ape_phy_heap_ptr + temp_len, memset_stack_heap_ptr + temp_len, memset_len); + temp_len += 1400; + } + gettimeofday(&end, NULL); + printf("gettimeofday_stack2phy start_cnt=%#lx,end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + } + + } + else if(5 == ctl) + { + for(i = 0; i < cnt; i++) + { + memset(memset_stack_heap_ptr,0x5a + i,memset_len); + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + memcpy(memset_msg_heap_ptr,memset_stack_heap_ptr,memset_len); + medium_cnt = get_cycle(); + gettimeofday(&medium, NULL); + osp_clean_dcache_area(memset_msg_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2msg start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",begin.tv_usec,medium.tv_usec,end.tv_usec,medium.tv_usec - begin.tv_usec,end.tv_usec - begin.tv_usec); + //printf("gettimeofday_medium start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",medium.tv_usec,medium.tv_usec,medium.tv_usec - begin.tv_usec); + printf("TSC_stack2msg start_cnt=%#lx, medium_cnt=%lx,end_cnt=%#lx,diff0 = %ld,diff1 = %ld\n\n",start_cnt,medium_cnt,end_cnt,medium_cnt - start_cnt,end_cnt - start_cnt); + + gettimeofday(&begin, NULL); + start_cnt = get_cycle(); + memcpy(memset_ape_phy_heap_ptr,memset_stack_heap_ptr,memset_len); + end_cnt = get_cycle(); + gettimeofday(&end, NULL); + printf("gettimeofday_stack2phy start_cnt=%#lx, end_cnt=%#lx,diff = %ld\n\n",begin.tv_usec,end.tv_usec,end.tv_usec - begin.tv_usec); + printf("TSC_stack2phy start_cnt=%#lx,end_cnt=%#lx,diff=%ld\n\n",start_cnt,end_cnt,end_cnt - start_cnt); + } + } + //free(memset_ptr); + osp_free_heap_mem(stack_heap_ptr,memset_stack_heap_ptr); + osp_free_heap_mem(msg_heap_ptr,memset_msg_heap_ptr); + osp_free_heap_mem(ape_phy_heap_ptr,memset_ape_phy_heap_ptr); + + return 0; +} + diff --git a/test/case2/src/testcase.c b/test/case2/src/testcase.c new file mode 100644 index 0000000..fe50b91 --- /dev/null +++ b/test/case2/src/testcase.c @@ -0,0 +1,592 @@ +//test define start +#define _GNU_SOURCE +#include +#include +#include +//#include +#include +#include +#include +#include "typedef.h" +#include "ospHeap.h" +#include "ucp_printf.h" +#include "arm_csu.h" +#include "memcpy_csu.h" + +extern int32_t g_dev_mem_fd; + +static uint64_t get_cycle() +{ + uint64_t cycle; + + asm volatile("mrs %0, pmccntr_el0" : "=r" (cycle)); + + return cycle; +} + +// mode=0, memcpy +// mode=1, csu +int32_t test_arm_csu_simple(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen) +{ + struct timeval begin,end; + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < (dataLen>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen); + + UCP_PRINT_DEBUG("src addr virt to phy. \r\n"); + uint64_t addrSrc = 0; + osp_virt_to_phy(APE_PHY, addrVirSrc, &addrSrc); + UCP_PRINT_DEBUG("src phy addr = 0x%lx .\r\n", addrSrc); + + UCP_PRINT_DEBUG("dst addr virt to phy. \r\n"); + uint64_t addrDst = 0; + osp_virt_to_phy(APE_PHY, addrVirDst, &addrDst); + UCP_PRINT_DEBUG("dst phy addr = 0x%lx .\r\n", addrDst); + + UCP_PRINT_DEBUG("start csu transfer. \r\n"); + gettimeofday(&begin, NULL); + int tag = arm_csu_dma_1D_transfer((uint64_t)addrSrc, (uint64_t)addrDst, dataLen); + arm_csu_wait_done(tag); +#if 0 + while (0 == (status&(1<>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + UCP_PRINT_DEBUG("src addr virt to phy. \r\n"); + uint64_t addrSrc = 0; + osp_virt_to_phy(APE_PHY, addrVirSrc, &addrSrc); + UCP_PRINT_DEBUG("src phy addr = 0x%lx .\r\n", addrSrc); + + UCP_PRINT_DEBUG("dst addr virt to phy. \r\n"); + uint64_t addrDst = 0; + osp_virt_to_phy(APE_PHY, addrVirDst, &addrDst); + UCP_PRINT_DEBUG("dst phy addr = 0x%lx .\r\n", addrDst); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("100 of nocache to nocache memcpy cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0004) = (end.tv_usec - begin.tv_usec); + } + else + { + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + inAddrSrc = addrSrc; + inAddrDst = addrDst; + int tag = 0; + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + tag = arm_csu_dma_1D_transfer(inAddrSrc, inAddrDst, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + arm_csu_wait_done(tag); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("last tag = %d. \r\n", tag); + UCP_PRINT_DEBUG("100 of nocache to nocache arm csu cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0008) = (end.tv_usec - begin.tv_usec); + } + + return 0; +} + + +int32_t test_cache_to_nocache(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen, int cycle, int mode) +{ + uint64_t inAddrSrc = addrVirSrc; + uint64_t inAddrDst = addrVirDst; + struct timeval begin,end; + + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < ((dataLen*cycle)>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + UCP_PRINT_DEBUG("src addr virt to phy. \r\n"); + uint64_t addrSrc = 0; + osp_virt_to_phy(ARM_STACK, addrVirSrc, &addrSrc); + UCP_PRINT_DEBUG("src phy addr = 0x%lx .\r\n", addrSrc); + + UCP_PRINT_DEBUG("dst addr virt to phy. \r\n"); + uint64_t addrDst = 0; + osp_virt_to_phy(APE_TEXT, addrVirDst, &addrDst); + UCP_PRINT_DEBUG("dst phy addr = 0x%lx .\r\n", addrDst); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("100 of cache to noncache memcpy cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0010) = (end.tv_usec - begin.tv_usec); + } + else + { + int tag = 0; + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + inAddrSrc = addrSrc; + inAddrDst = addrDst; + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { +// osp_clean_dcache_area((void*)inAddrSrc, dataLen); + osp_clean_dcache_area((void*)(addrVirSrc+i*dataLen), dataLen); + tag = arm_csu_dma_1D_transfer(inAddrSrc, inAddrDst, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + arm_csu_wait_all_done(); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("last tag = %d. \r\n", tag); + UCP_PRINT_DEBUG("100 of cache to noncache arm csu cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0014) = (end.tv_usec - begin.tv_usec); + } + + return 0; +} + +int32_t test_nocache_to_cache(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen, int cycle, int mode) +{ + uint64_t inAddrSrc = addrVirSrc; + uint64_t inAddrDst = addrVirDst; + struct timeval begin,end; + + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < ((dataLen*cycle)>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + UCP_PRINT_DEBUG("src addr virt to phy. \r\n"); + uint64_t addrSrc = 0; + osp_virt_to_phy(APE_TEXT, addrVirSrc, &addrSrc); + UCP_PRINT_DEBUG("src phy addr = 0x%lx .\r\n", addrSrc); + + UCP_PRINT_DEBUG("dst addr virt to phy. \r\n"); + uint64_t addrDst = 0; + osp_virt_to_phy(ARM_STACK, addrVirDst, &addrDst); + UCP_PRINT_DEBUG("dst phy addr = 0x%lx .\r\n", addrDst); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("100 of nocache to cache memcpy cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0020) = (end.tv_usec - begin.tv_usec); + } + else + { + int tag = 0; + int lenAlign = dataLen; + if (dataLen & (~0x3F)) + { + lenAlign = (((dataLen>>6)+1)<<6); + } + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + UCP_PRINT_DEBUG("lenAlign = %d. \r\n", lenAlign); + inAddrSrc = addrSrc; + inAddrDst = addrDst; + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + osp_flush_dcache_area((void*)(addrVirDst+i*lenAlign), dataLen); + tag = arm_csu_dma_1D_transfer(inAddrSrc, inAddrDst, dataLen); +// osp_invalid_dcache_area(ARM_STACK, (addrVirDst+i*lenAlign), lenAlign); + inAddrSrc += dataLen; + inAddrDst += lenAlign; + } + arm_csu_wait_all_done(); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("last tag = %d. \r\n", tag); + UCP_PRINT_DEBUG("100 of nocache to cache arm csu cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0024) = (end.tv_usec - begin.tv_usec); + } + + return 0; +} + +int32_t test_cache_to_cache(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen, int cycle, int mode) +{ + uint64_t inAddrSrc = addrVirSrc; + uint64_t inAddrDst = addrVirDst; + struct timeval begin,end; + + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < ((dataLen*cycle)>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + UCP_PRINT_DEBUG("src addr virt to phy. \r\n"); + uint64_t addrSrc = 0; + osp_virt_to_phy(ARM_STACK, addrVirSrc, &addrSrc); + UCP_PRINT_DEBUG("src phy addr = 0x%lx .\r\n", addrSrc); + + UCP_PRINT_DEBUG("dst addr virt to phy. \r\n"); + uint64_t addrDst = 0; + osp_virt_to_phy(ARM_STACK, addrVirDst, &addrDst); + UCP_PRINT_DEBUG("dst phy addr = 0x%lx .\r\n", addrDst); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("100 of cache to cache memcpy cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0030) = (end.tv_usec - begin.tv_usec); + } + else + { + int tag = 0; + int lenAlign = dataLen; + if (dataLen & (~0x3F)) + { + lenAlign = (((dataLen>>6)+1)<<6); + } + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + UCP_PRINT_DEBUG("lenAlign = %d. \r\n", lenAlign); + inAddrSrc = addrSrc; + inAddrDst = addrDst; + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + osp_clean_dcache_area((void*)(addrVirSrc+i*dataLen), dataLen); + osp_flush_dcache_area((void*)(addrVirDst+i*lenAlign), dataLen); + tag = arm_csu_dma_1D_transfer(inAddrSrc, inAddrDst, dataLen); + //osp_invalid_dcache_area(ARM_STACK, (addrVirDst+i*lenAlign), lenAlign); + inAddrSrc += dataLen; + inAddrDst += lenAlign; + } + arm_csu_wait_all_done(); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("last tag = %d. \r\n", tag); + UCP_PRINT_DEBUG("100 of cache to cache arm csu cost: %ld. \r\n", (end.tv_usec - begin.tv_usec)); + *((uint32_t*)addrVirSrc+0xF0034) = (end.tv_usec - begin.tv_usec); + } + + return 0; +} + +void test_arm_csu(void) +{ + uint64_t stack_len = 0; + void *stack_static_ptr; + void *ape_phy_static_ptr; + void *ape_txt_static_ptr; + + stack_static_ptr = get_static_mem(ARM_STACK, &stack_len); // cache, 4g + if((void *)OSP_ERROR == stack_static_ptr) + { + UCP_PRINT_ERROR("get_static_mem-ARM_STACK:error\n"); + } + else + { + UCP_PRINT_DEBUG("get_static_mem-ARM_STACK:ok! stack_static_ptr = %lx\n",(uint64_t)stack_static_ptr); + } + + ape_phy_static_ptr = get_static_mem(APE_PHY, &stack_len); // noncache, 2g + if((void *)OSP_ERROR == ape_phy_static_ptr) + { + UCP_PRINT_ERROR("get_static_mem-APE_PHY:error\n"); + } + else + { + UCP_PRINT_DEBUG("get_static_mem-APE_PHY:ok! ape_phy_static_ptr = %lx\n",(uint64_t)ape_phy_static_ptr); + } + + ape_txt_static_ptr = get_static_mem(APE_TEXT, &stack_len); // noncache, 2g + if((void *)OSP_ERROR == ape_txt_static_ptr) + { + UCP_PRINT_ERROR("get_static_mem-APE_TEXT:error\n"); + } + else + { + UCP_PRINT_DEBUG("get_static_mem-APE_TEXT:ok! ape_txt_static_ptr = %lx\n",(uint64_t)ape_txt_static_ptr); + } + + int dataLen = 0; + uint64_t addrVirSrc = 0; + uint64_t addrVirDst = 0; + + UCP_PRINT_DEBUG("arm csu simple test start ...... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)ape_phy_static_ptr; + addrVirDst = (uint64_t)(ape_phy_static_ptr+0x80000); + test_arm_csu_simple(addrVirSrc, addrVirDst, dataLen); + + UCP_PRINT_DEBUG("nocache to noncache memcpy cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(ape_phy_static_ptr + dataLen); + addrVirDst = (uint64_t)(ape_phy_static_ptr+0x80000+dataLen); + test_nocache_to_nocache(addrVirSrc, addrVirDst, dataLen, 100, 0); + + UCP_PRINT_DEBUG("nocache to noncache arm csu cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc += (dataLen*100); + addrVirDst += (dataLen*100); + test_nocache_to_nocache(addrVirSrc, addrVirDst, dataLen, 100, 1); + + UCP_PRINT_DEBUG("cache to noncache memcpy cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)stack_static_ptr; + addrVirDst = (uint64_t)ape_txt_static_ptr; + test_cache_to_nocache(addrVirSrc, addrVirDst, dataLen, 100, 0); + + UCP_PRINT_DEBUG("cache to noncache arm csu cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(stack_static_ptr+0x40000); + addrVirDst = (uint64_t)(ape_txt_static_ptr+0x40000); + test_cache_to_nocache(addrVirSrc, addrVirDst, dataLen, 100, 1); + + + UCP_PRINT_DEBUG("nocache to cache memcpy cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(ape_txt_static_ptr+0x80000); + addrVirDst = (uint64_t)(stack_static_ptr+0x80000); + test_nocache_to_cache(addrVirSrc, addrVirDst, dataLen, 100, 0); + + UCP_PRINT_DEBUG("nocache to cache arm csu cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(ape_txt_static_ptr+0xC0000); + addrVirDst = (uint64_t)(stack_static_ptr+0xC0000); + test_nocache_to_cache(addrVirSrc, addrVirDst, dataLen, 100, 1); + + + UCP_PRINT_DEBUG("cache to cache memcpy cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(stack_static_ptr+0x100000); + addrVirDst = (uint64_t)(stack_static_ptr+0x180000); + test_cache_to_cache(addrVirSrc, addrVirDst, dataLen, 100, 0); + + UCP_PRINT_DEBUG("cache to cache arm csu cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(stack_static_ptr+0x140000); + addrVirDst = (uint64_t)(stack_static_ptr+0x1C0000); + test_cache_to_cache(addrVirSrc, addrVirDst, dataLen, 100, 1); +} + +int32_t test_memcpy_csu_stack_to_msg(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen, int cycle, int mode) +{ + uint64_t inAddrSrc = addrVirSrc; + uint64_t inAddrDst = addrVirDst; + struct timeval begin,end; + + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < ((dataLen*cycle)>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("%d of stack to msg memcpy cost: %ld. \r\n", cycle, (end.tv_usec - begin.tv_usec)); + } + else + { + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy_csu(inAddrDst, inAddrSrc, dataLen, STACK2MSG, 0); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + arm_csu_wait_all_done(); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("%d of stack to msg arm csu cost: %ld. \r\n", cycle, (end.tv_usec - begin.tv_usec)); + } + + return 0; +} + +int32_t test_memcpy_csu_msg_to_stack(uint64_t addrVirSrc, uint64_t addrVirDst, int dataLen, int cycle, int mode) +{ + uint64_t inAddrSrc = addrVirSrc; + uint64_t inAddrDst = addrVirDst; + struct timeval begin,end; + + UCP_PRINT_DEBUG("init src data. \r\n"); + for (int i = 0; i < ((dataLen*cycle)>>2); i++) + { + *((uint32_t*)addrVirSrc+i) = i; + } + UCP_PRINT_DEBUG("init dst data. \r\n"); + memset((void*)addrVirDst, 0, dataLen*cycle); + + if (0 == mode) + { + UCP_PRINT_DEBUG("memcpy cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy((void*)inAddrDst, (void*)inAddrSrc, dataLen); + osp_clean_dcache_area((void *)inAddrDst, dataLen); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("%d of msg to stack memcpy cost: %ld. \r\n", cycle, (end.tv_usec - begin.tv_usec)); + } + else + { + UCP_PRINT_DEBUG("arm csu cost test start ..... \r\n"); + gettimeofday(&begin, NULL); + for (int i = 0; i < cycle; i++) + { + memcpy_csu(inAddrDst, inAddrSrc, dataLen, MSG2STACK, 1); + inAddrSrc += dataLen; + inAddrDst += dataLen; + } +// arm_csu_wait_all_done(); + gettimeofday(&end, NULL); + UCP_PRINT_DEBUG("%d of msg to stack arm csu cost: %ld. \r\n", cycle, (end.tv_usec - begin.tv_usec)); + } + + return 0; +} + + +void test_memcpy_csu(void) +{ + uint64_t stack_len = 0; + uint64_t msg_len = 0; + void *stack_static_ptr = NULL; + void *msg_static_ptr = NULL; + + stack_static_ptr = get_static_mem(ARM_STACK, &stack_len); // cache, 4g + if((void *)OSP_ERROR == stack_static_ptr) + { + UCP_PRINT_ERROR("get_static_mem-ARM_STACK:error\n"); + } + else + { + UCP_PRINT_DEBUG("get_static_mem-ARM_STACK:ok! stack_static_ptr = %lx, len = %lx.\n",(uint64_t)stack_static_ptr, stack_len); + } + + msg_static_ptr = get_static_mem(ARM_APE_MSG, &msg_len); // noncache, 128M + if((void *)OSP_ERROR == msg_static_ptr) + { + UCP_PRINT_ERROR("get_static_mem-ARM_APE_MSG:error\n"); + } + else + { + UCP_PRINT_DEBUG("get_static_mem-ARM_APE_MSG:ok! msg_static_ptr = %lx, len = %lx.\n",(uint64_t)msg_static_ptr, msg_len); + } + + int dataLen = 0; + uint64_t addrVirSrc = 0; + uint64_t addrVirDst = 0; + + UCP_PRINT_DEBUG("stack to msg memcpy cost test start ...... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(stack_static_ptr); + addrVirDst = (uint64_t)(msg_static_ptr); + test_memcpy_csu_stack_to_msg(addrVirSrc, addrVirDst, dataLen, 100, 0); + + UCP_PRINT_DEBUG("stack to msg arm csu cost test start ..... \r\n"); + dataLen = 1400; + addrVirSrc = (uint64_t)(stack_static_ptr+0x40000); + addrVirDst = (uint64_t)(msg_static_ptr+0x40000); + test_memcpy_csu_stack_to_msg(addrVirSrc, addrVirDst, dataLen, 100, 1); + + + UCP_PRINT_DEBUG("msg to stack memcpy cost test start ...... \r\n"); + dataLen = 140000; + addrVirSrc = (uint64_t)(msg_static_ptr+0x80000); + addrVirDst = (uint64_t)(stack_static_ptr+0x80000); + test_memcpy_csu_msg_to_stack(addrVirSrc, addrVirDst, dataLen, 1, 0); + + UCP_PRINT_DEBUG("msg to stack arm csu cost test start ..... \r\n"); + dataLen = 140000; + addrVirSrc = (uint64_t)(msg_static_ptr+0xC0000); + addrVirDst = (uint64_t)(stack_static_ptr+0xC0000); + test_memcpy_csu_msg_to_stack(addrVirSrc, addrVirDst, dataLen, 1, 1); +} + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 2."); + + UCP_PRINT_DEBUG("start arm csu init. \r\n"); +// arm_csu_init(); + + test_memcpy_csu(); + + return 0; +} + diff --git a/test/case3/src/testcase.c b/test/case3/src/testcase.c new file mode 100644 index 0000000..97c5b7e --- /dev/null +++ b/test/case3/src/testcase.c @@ -0,0 +1,169 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "msg_transfer_layer.h" +#include "ucp_handshake.h" +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "ecs_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "ospLog.h" +#include "ospDump.h" + +static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, uint16_t transfer_type, transfer_type_info_s* transfer_type_info_ptr) +{ + queue_info_s c_plane,u_plane; + + switch (transfer_type) { + case CU_SPLIT: + c_plane.rx_block_size = 0x25800; + c_plane.rx_block_num = 32; + c_plane.rx_callback = NULL; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + u_plane.rx_block_size = 0x28000; + u_plane.rx_block_num = 8; + //u_plane.rx_callback = rx_callback_data; + if (0 == inst_id) + { + u_plane.rx_callback = NULL; + } + else + { + u_plane.rx_callback = NULL; + } + u_plane.tx_block_size = 0x28000; + u_plane.tx_block_num = 8; + u_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + transfer_type_info_ptr->queue_uplane_info = u_plane; + break; + case OAM: + c_plane.rx_block_size = 0x100000; + c_plane.rx_block_num = 32; + c_plane.rx_callback = rx_callback_oam; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + break; + default: + UCP_PRINT_ERROR("get_msg_queue_cfg doesn't support transfer_type[%d] .",transfer_type); + break; + } + + return; +} + +static inline void msg_transfer_cfg(void) +{ + uint8_t port_id = 0; + uint16_t inst_id = 0; + uint16_t transfer_type = 0; + int32_t handle_id = 0; + transfer_type_info_s transfer_type_info; + + for (inst_id=0; inst_idpSyncInfo->queueCfgFlag = ++pMsgQueueLocalMgt->localSyncInfo.queueCfgFlag; + + return; +} + +static inline void msg_transfer_queue_polling(void) +{ + uint8_t port_id = 0; + HandleId_t handler; + uint16_t cu_flag; + uint32_t offset = 0; + uint32_t len = 0; + uint8_t* msg_ptr; + + for (uint32_t i = 0; i < MAX_INSTANCE_NUM; i++) { + handler.port_id = port_id; + handler.inst_id = i; + handler.type_id = CU_SPLIT; + cu_flag = C_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + cu_flag = U_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + handler.type_id = OAM; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + } + + return; +} + +OSP_FUNCPTR arm_log_test() +{ + char abuf1[128] = "test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test1234test567"; + char abuf2[10] = "abcdefg\n"; + + osp_write_diaglog(abuf1, strlen(abuf1), 13, 0x61); + osp_write_diaglog(abuf2, strlen(abuf2), 13, 0x60); + + return OSP_OK; + +} + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 3."); + + msg_transfer_mem_init(); + msg_transfer_cfg(); + ucp_handshake(); + + UCP_PRINT_DEBUG("start transfering message."); + + while(1) { + usleep(500); + msg_transfer_queue_polling(); + } + + return 0; +} + diff --git a/test/case30/src/testcase30.c b/test/case30/src/testcase30.c new file mode 100644 index 0000000..50de651 --- /dev/null +++ b/test/case30/src/testcase30.c @@ -0,0 +1,233 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include +#include +#include +#include +#include +#include + +#include "typedef.h" +#include "ucp_printf.h" +#include "ucp_common.h" +#include "msg_transfer_layer.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "stc_drv.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include "ospTask.h" + +#define port 9000 +#define FastCMDataLen (512)//(44*4*16)//pionter = 20 +struct sockaddr_in SrcAddr; +struct sockaddr_in DstAddr; + +char pBuffer[4096] = {0}; +char recvBuffer[4096] = {0}; +int32_t sockfd,rawsockfd; +int32_t Len0; +int32_t Len1; + +void Cpri_GmacTx_Data_Init(void) +{ + int32_t i=0; + + for(i=0;i<4096;i++) + { + //pBuffer[i] = (0x11223344+i); + pBuffer[i] = 0x5a; + } +} +//TX +int8_t Cpri_Gmac_Socket(void) +{ + sockfd = socket(AF_INET, SOCK_DGRAM, 0); + if (sockfd == -1) { + perror("socket"); + return -1; + } + printf("socket init pass!!!!!!!!\r\n"); + + memset(&DstAddr, 0, sizeof(DstAddr)); + + DstAddr.sin_family = AF_INET; + DstAddr.sin_port = htons(port); + DstAddr.sin_addr.s_addr = inet_addr("192.168.30.241"); +// DstAddr.sin_addr.s_addr = htonl(INADDR_ANY); + return 0; + +} +//RX +int8_t Cpri_Gmac_RawSocket(void) +{ + //rawsockfd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); + rawsockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); + + //rawsockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP)); + //rawsockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW); + if (rawsockfd < 0) { + perror("socket"); + return -1; + } + printf("RAWsocket init pass!!!!!!!!\r\n"); + + return 0; + +} + +int8_t Cpri_GmacTx(void) +{ + + //while(1) + for(uint32_t i = 0; i<10 ;i++) + { + Len0 = sendto(sockfd, pBuffer, FastCMDataLen, 0, (struct sockaddr *)&DstAddr, sizeof(struct sockaddr_in)); + printf("Start sendto:%d!!!!!!!!\r\n",Len0); + if (Len0 != FastCMDataLen) + { + return (-1); + printf("send error!!!!!!!!!!\r\n"); + } + usleep(1000); + printf("send cycle:%d!!!!!!!!\r\n",i); + } + while(1); + return 0; +} + +void Cpri_GmacRx(void) +{ + char *ethhead,*iphead;//*p; + void *stack_static_ptr; + uint64_t stack_len; + uint8_t iProtocol; + uint16_t iPlen; + // uint32_t iDstPort; +// uint32_t n=0xFF; + uint32_t cycle = 0; + stack_static_ptr = get_static_mem(APE_PHY, &stack_len); + if((void *)OSP_ERROR == stack_static_ptr) + { + printf("get_static_mem-ARM_STACK:error\n"); + } + else + { + printf("get_static_mem-ARM_STACK:ok! stack_static_ptr = %lx\n",(uint64_t)stack_static_ptr); + } + printf("stack_static_len = %lx\n",stack_len); + while(1) + { + Len1 = recvfrom(rawsockfd, recvBuffer, 1024, 0, NULL, NULL); + //printf("recv length:%d!!!!!!!!\r\n",Len1); + + ethhead = recvBuffer; + + iphead = ethhead + 14 ; + + iProtocol = (*(iphead +9)); + iPlen = ((iphead[2]<<8) | (iphead[3])); + // p = iphead + 20; + // iDstPort = ((p[2]<<8)&0xff00) | (p[3]&n); + // printf("recv DstPort:%d!!!!!!!!\r\n",iDstPort); + printf("recv iProtocol:%d!!!!!!!!\r\n",iProtocol); + printf("recv iPlen:%d!!!!!!!!\r\n",iPlen); + + + //if((Len1 >= 512) && (cycle < 100)) + //if(cycle < 100) + if(iProtocol == 17) + { + if(iPlen == 540) + { + memcpy((char *)stack_static_ptr + 0x70000000+1024*cycle , recvBuffer,Len1); + cycle++; + } + } + + + printf("recv cycle:%d!!!!!!!!\r\n",cycle); + // printf("recv end!!!!!!!!\r\n"); + } + +} + +int8_t start_CpriGmacTx_task(void) +{ + OSP_TASKMSG_REG Gmac_Tx_task; + + memset(&Gmac_Tx_task, 0, sizeof(Gmac_Tx_task)); + Gmac_Tx_task.TaskId = CpriGmacTx; + memcpy(Gmac_Tx_task.TaskName, "CpriGmacTx", 10); + Gmac_Tx_task.TaskPri = RT_NOMSG_PRI(96); + Gmac_Tx_task.Init = NULL; + Gmac_Tx_task.MainLoop = (OSP_FUNCPTR)Cpri_GmacTx; + Gmac_Tx_task.Cpu = 2; + Gmac_Tx_task.MsgType = OSP_OTHER_MSG; + + if (OSP_OK != osp_regtask(&Gmac_Tx_task)) + { + UCP_PRINT_ERROR("[start_log_task]: osp_regtask error!\n"); + return OSP_ERROR; + } + return OSP_OK; +} + +int8_t start_CpriGmacRx_task(void) +{ + OSP_TASKMSG_REG Gmac_Rx_task; + + memset(&Gmac_Rx_task, 0, sizeof(Gmac_Rx_task)); + Gmac_Rx_task.TaskId = CpriGmacRx; + memcpy(Gmac_Rx_task.TaskName, "CpriGmacRx", 10); + Gmac_Rx_task.TaskPri = RT_NOMSG_PRI(95); + Gmac_Rx_task.Init = NULL; + Gmac_Rx_task.MainLoop = (OSP_FUNCPTR)Cpri_GmacRx; + Gmac_Rx_task.Cpu = 3; + Gmac_Rx_task.MsgType = OSP_OTHER_MSG; + + if (OSP_OK != osp_regtask(&Gmac_Rx_task)) + { + UCP_PRINT_ERROR("[start_log_task]: osp_regtask error!\n"); + return OSP_ERROR; + } + return OSP_OK; +} + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + + UCP_PRINT_DEBUG("start running testcase 30."); + ucp_mem_init(); + + ucp_handshake(); + sleep(10); + Cpri_GmacTx_Data_Init(); + Cpri_Gmac_Socket(); + Cpri_Gmac_RawSocket(); + + start_CpriGmacTx_task(); + start_CpriGmacRx_task(); + + UCP_PRINT_DEBUG("start cpri gmac tx."); + return 0; +} + diff --git a/test/case4/src/testcase.c b/test/case4/src/testcase.c new file mode 100644 index 0000000..07a1ca7 --- /dev/null +++ b/test/case4/src/testcase.c @@ -0,0 +1,448 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "msg_transfer_layer.h" +#include "ucp_handshake.h" +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "pet_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "ospLog.h" +#include "ospDump.h" + +#define SPU_OAM_BASE_DELAY_SET_REQ 0x200 // 0x200 +#define SPU_OAM_BASE_DELAY_SET_RSP 0x201 +#define SPU_OAM_BASE_DELAY_QRY_REQ 0x202 +#define SPU_OAM_BASE_DELAY_QRY_RSP 0x203 +#define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204 +#define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205 +#define MSG_TRANSFER_OAM_MSG_TYPE 0x125 + +extern uint8_t guc_oam; + +typedef struct tOamMsgTransferHeader { + uint8_t numMsg; + uint8_t cellIndex; + uint16_t rsv; + uint32_t msgType; + uint32_t msgLen; + uint32_t msgData[0]; +} OamMsgTransferHeader_t; + +typedef struct tSpuOamBaseDelaySetReq { + uint8_t u8fiber_port; + uint8_t u8rsv[3]; + uint32_t u32dl_frame_offset; + uint32_t u32ul_frame_offset; +} SpuOamBaseDelaySetReq_t; + +typedef struct tSpuOamBaseDelaySetRsp { + uint8_t u8fiber_port; + uint8_t u8result; + uint8_t u8rsv[2]; +} SpuOamBaseDelaySetRsp_t; + +typedef struct tSpuOamBaseDelayQryReq { + uint8_t u8fiber_port; + uint8_t u8rsv[3]; +} SpuOamBaseDelayQryReq_t; + +typedef struct tSpuOamBaseDelayQryRsp { + uint8_t u8fiber_port; + uint8_t u8result; + uint8_t u8rsv[2]; + uint32_t u32dl_frame_offset; + uint32_t u32ul_frame_offset; +} SpuOamBaseDelayQryRsp_t; + +typedef struct tSpuOamFiberDelayQryReq { + uint8_t u8fiber_port; + uint8_t u8rsv[3]; +} SpuOamFiberDelayQryReq_t; + +typedef struct tSpuOamFiberDelayQryRsp { + uint8_t u8fiber_port; + uint8_t u8result; + uint8_t u8rsv[2]; + uint32_t u32t14_val; +} SpuOamFiberDelayQryRsp_t; + +uint32_t rx_callback_oam_spu(const char* buf,uint32_t payloadSize) +{ + OamMsgTransferHeader_t *header_ptr = NULL; + SpuOamBaseDelaySetRsp_t *oam_base_delay_set_rsp_ptr = NULL; + SpuOamBaseDelayQryRsp_t *oam_base_delay_qry_rsp_ptr = NULL; + SpuOamFiberDelayQryRsp_t *oam_fiber_delay_qry_rsp_ptr = NULL; + + header_ptr = (OamMsgTransferHeader_t *)buf; + header_ptr->msgLen = payloadSize; + + //UCP_PRINT_ERROR("rx_callback_oam_spu msgType: 0x%x payloadSize:%d buf:%p\n", header_ptr->msgType, payloadSize, buf); + + switch(header_ptr->msgType) + { + case MSG_TRANSFER_LOG_MSG_TYPE: + rx_callback_oam(buf, payloadSize); + break; + case SPU_OAM_BASE_DELAY_SET_RSP: + oam_base_delay_set_rsp_ptr = (SpuOamBaseDelaySetRsp_t *)(buf+sizeof(OamMsgTransferHeader_t)); + UCP_PRINT_SHELL("cellIndex:%d u8result:%u u8fiber_port:%u\n", \ + header_ptr->cellIndex,\ + oam_base_delay_set_rsp_ptr->u8result, \ + oam_base_delay_set_rsp_ptr->u8fiber_port); + //memset((void *)buf, 0, payloadSize); + break; + case SPU_OAM_BASE_DELAY_QRY_RSP: + oam_base_delay_qry_rsp_ptr = (SpuOamBaseDelayQryRsp_t *)(buf+sizeof(OamMsgTransferHeader_t)); + UCP_PRINT_SHELL("u8fiber_port:%u u8result:%u u32dl_frame_offset:0x%x u32ul_frame_offset:0x%x\n", \ + oam_base_delay_qry_rsp_ptr->u8fiber_port, oam_base_delay_qry_rsp_ptr->u8result, \ + oam_base_delay_qry_rsp_ptr->u32dl_frame_offset, oam_base_delay_qry_rsp_ptr->u32ul_frame_offset); + //memset((void *)buf, 0, payloadSize); + break; + case SPU_OAM_FIBER_DELAY_QRY_RSP: + oam_fiber_delay_qry_rsp_ptr = (SpuOamFiberDelayQryRsp_t *)(buf+sizeof(OamMsgTransferHeader_t)); + UCP_PRINT_SHELL("u8fiber_port:%u u8result:%u u8rsv[0]:%d u8rsv[1]:%d u32t14_val:0x%x\n", \ + oam_fiber_delay_qry_rsp_ptr->u8fiber_port, oam_fiber_delay_qry_rsp_ptr->u8result, \ + oam_fiber_delay_qry_rsp_ptr->u8rsv[0], oam_fiber_delay_qry_rsp_ptr->u8rsv[1], oam_fiber_delay_qry_rsp_ptr->u32t14_val); + //memset((void *)buf, 0, payloadSize); + break; + } + + return payloadSize; +} + +static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, uint16_t transfer_type, transfer_type_info_s* transfer_type_info_ptr) +{ + queue_info_s c_plane,u_plane; + + switch (transfer_type) { + case CU_SPLIT: + c_plane.rx_block_size = 0x25800; + c_plane.rx_block_num = 32; + c_plane.rx_callback = NULL; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + u_plane.rx_block_size = 0x28000; + u_plane.rx_block_num = 8; + //u_plane.rx_callback = rx_callback_data; + if (0 == inst_id) + { + u_plane.rx_callback = NULL; + } + else + { + u_plane.rx_callback = NULL; + } + u_plane.tx_block_size = 0x28000; + u_plane.tx_block_num = 8; + u_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + transfer_type_info_ptr->queue_uplane_info = u_plane; + break; + case OAM: + c_plane.rx_block_size = 0x100000; + c_plane.rx_block_num = 32; + c_plane.rx_callback = rx_callback_oam_spu; + //c_plane.rx_callback = rx_callback_oam; + c_plane.tx_block_size = 0x8000; + c_plane.tx_block_num = 8; + c_plane.tx_callback = NULL; + + transfer_type_info_ptr->queue_cplane_info = c_plane; + break; + default: + UCP_PRINT_ERROR("get_msg_queue_cfg doesn't support transfer_type[%d] .",transfer_type); + break; + } + + return; +} + +static inline void msg_transfer_cfg(void) +{ + uint8_t port_id = 0; + uint16_t inst_id = 0; + uint16_t transfer_type = 0; + int32_t handle_id = 0; + transfer_type_info_s transfer_type_info; + + for (inst_id=0; inst_idpSyncInfo->queueCfgFlag = ++pMsgQueueLocalMgt->localSyncInfo.queueCfgFlag; + + return; +} + +static inline void msg_transfer_queue_polling(void) +{ + uint8_t port_id = 0; + HandleId_t handler; + uint16_t cu_flag; + uint32_t offset = 0; + uint32_t len = 0; + uint8_t* msg_ptr; + + for (uint32_t i = 0; i < MAX_INSTANCE_NUM; i++) { + handler.port_id = port_id; + handler.inst_id = i; + handler.type_id = CU_SPLIT; + cu_flag = C_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + cu_flag = U_PLANE; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + + handler.type_id = OAM; + msg_transfer_receive(handler.value, cu_flag, offset, len, &msg_ptr); + } + + return; +} + +void oam_msg_base_delay_set_test() +{ + uint32_t size = 24; + char* buf; + uint32_t availableSize,offset; + OamMsgTransferHeader_t stOamMsg; + SpuOamBaseDelaySetReq_t stOamDelayReq; + + uint16_t cu_flag = C_PLANE; + HandleId_t handler; + handler.port_id = 0; + handler.inst_id = 0; + handler.type_id = OAM; + + int32_t ret = msg_transfer_send_start(handler.value, cu_flag); + + /************C_PLANE***************/ + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("oam_msg_test call msg_transfer_alloc_msg err."); + return ; + } + + + stOamMsg.cellIndex = 0; + stOamMsg.numMsg = 1; + stOamMsg.msgType = SPU_OAM_BASE_DELAY_SET_REQ; + stOamMsg.msgLen = size; + + stOamDelayReq.u8fiber_port = 2; + stOamDelayReq.u32dl_frame_offset = 0xab; + stOamDelayReq.u32ul_frame_offset = 0xcd; + + //memset(buf, 0, size); + //memcpy((uint8_t *)stOamMsg.msgData, (uint8_t *)&stOamDelayReq, sizeof(SpuOamBaseDelaySetReq_t)); + memcpy(buf, (uint8_t *)&stOamMsg, sizeof(OamMsgTransferHeader_t)); + memcpy((uint8_t *)(buf+sizeof(OamMsgTransferHeader_t)), (uint8_t *)&stOamDelayReq, sizeof(SpuOamBaseDelaySetReq_t)); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("msg_transfer_send_msg send error\r\n"); + } + msg_transfer_send_end(handler.value,cu_flag); + + printf("\n-----------------------------------------------------------\n"); + for (int i = 0; i < size;i++) + { + printf("%02x ", buf[i]); + + if ((i & 0x7) == 0x7) + { + printf("\n"); + } + } + + return; +} + +void oam_msg_base_delay_qry_test() +{ + uint32_t size = sizeof(OamMsgTransferHeader_t)+sizeof(SpuOamBaseDelayQryReq_t); + char* buf; + uint32_t availableSize,offset; + OamMsgTransferHeader_t stOamMsg; + SpuOamBaseDelayQryReq_t stOamBaseDelayReq; + + uint16_t cu_flag = C_PLANE; + HandleId_t handler; + handler.port_id = 0; + handler.inst_id = 0; + handler.type_id = OAM; + + int32_t ret = msg_transfer_send_start(handler.value, cu_flag); + + /************C_PLANE***************/ + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("oam_msg_test call msg_transfer_alloc_msg err."); + return ; + } + + stOamMsg.cellIndex = 0; + stOamMsg.numMsg = 1; + stOamMsg.msgType = SPU_OAM_BASE_DELAY_QRY_REQ; + stOamMsg.msgLen = size; + + stOamBaseDelayReq.u8fiber_port = 3; + stOamBaseDelayReq.u8rsv[0] = 0; + stOamBaseDelayReq.u8rsv[1] = 0; + stOamBaseDelayReq.u8rsv[2] = 0; + + //memcpy((uint8_t *)stOamMsg.msgData, (uint8_t *)&stOamBaseDelayReq, sizeof(SpuOamBaseDelayQryReq_t)); + memcpy(buf, (uint8_t *)&stOamMsg, size); + memcpy((uint8_t *)(buf+sizeof(OamMsgTransferHeader_t)), (uint8_t *)&stOamBaseDelayReq, sizeof(SpuOamBaseDelayQryReq_t)); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("msg_transfer_send_msg send error\r\n"); + } + + msg_transfer_send_end(handler.value, cu_flag); + + printf("\n-----------------------------------------------------------\n"); + for (int i = 0; i < size;i++) + { + printf("%02x ", buf[i]); + + if ((i & 0x7) == 0x7) + { + printf("\n"); + } + } + + return; +} + +void oam_msg_fiber_deley_qry_test() +{ + uint32_t size = sizeof(OamMsgTransferHeader_t) + sizeof(SpuOamFiberDelayQryReq_t); + char* buf; + uint32_t availableSize,offset; + OamMsgTransferHeader_t stOamMsg; + SpuOamFiberDelayQryReq_t stOamFiberDelayQryReq; + + uint16_t cu_flag = C_PLANE; + HandleId_t handler; + handler.port_id = 0; + handler.inst_id = 0; + handler.type_id = OAM; + + int32_t ret = msg_transfer_send_start(handler.value, cu_flag); + + /************C_PLANE***************/ + ret = msg_transfer_alloc_msg(handler.value, cu_flag, size, &buf, &availableSize, &offset); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("oam_msg_test call msg_transfer_alloc_msg err."); + return ; + } + + stOamMsg.cellIndex = 0; + stOamMsg.numMsg = 1; + stOamMsg.msgType = SPU_OAM_FIBER_DELAY_QRY_REQ; + stOamMsg.msgLen = size; + + stOamFiberDelayQryReq.u8fiber_port = 4; + stOamFiberDelayQryReq.u8rsv[0] = 0; + stOamFiberDelayQryReq.u8rsv[1] = 0; + stOamFiberDelayQryReq.u8rsv[2] = 0; + + //memcpy((uint8_t *)stOamMsg.msgData, (uint8_t *)&stOamFiberDelayQryReq, sizeof(SpuOamFiberDelayQryReq_t)); + memcpy(buf, (uint8_t *)&stOamMsg, size); + memcpy((uint8_t *)(buf+sizeof(OamMsgTransferHeader_t)), (uint8_t *)&stOamFiberDelayQryReq, sizeof(SpuOamFiberDelayQryReq_t)); + + ret = msg_transfer_send_msg(handler.value, cu_flag, (uint8_t *)buf, offset, size); + if ( SUCCESS != ret) { + UCP_PRINT_ERROR("msg_transfer_send_msg send error\r\n"); + } + msg_transfer_send_end(handler.value, cu_flag); + + printf("\n-----------------------------------------------------------\n"); + for (int i = 0; i < size;i++) + { + printf("%02x ", buf[i]); + + if ((i & 0x7) == 0x7) + { + printf("\n"); + } + } + + return; +} + + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 4."); + + msg_transfer_mem_init(); + msg_transfer_cfg(); + ucp_handshake(); + + UCP_PRINT_DEBUG("start transfering message."); + + while(1) + { + switch(guc_oam) + { + case 1: + oam_msg_base_delay_set_test(); + break; + case 2: + oam_msg_base_delay_qry_test(); + break; + case 3: + oam_msg_fiber_deley_qry_test(); + break; + } + guc_oam = 0; + usleep(500); + msg_transfer_queue_polling(); + } + + return 0; +} + diff --git a/test/case40/inc/ucp_api_clockGen.h b/test/case40/inc/ucp_api_clockGen.h new file mode 100644 index 0000000..578a326 --- /dev/null +++ b/test/case40/inc/ucp_api_clockGen.h @@ -0,0 +1,33 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_clockGen.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_CLOCKGEN_H_ +#define UCP_API_CLOCKGEN_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_CLOCKGEN_Reset(void); +extern void UCP_API_CLOCKGEN_Init(void); +extern void UCP_API_CLOCKGEN_LockStatus(void); +extern void UCP_API_CLOCKGEN_OnePluse(void); +extern uint8_t UCP_API_CLOCKGEN_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_CLOCKGEN_H_ */ diff --git a/test/case40/inc/ucp_api_jesd.h b/test/case40/inc/ucp_api_jesd.h new file mode 100644 index 0000000..357b9a3 --- /dev/null +++ b/test/case40/inc/ucp_api_jesd.h @@ -0,0 +1,47 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_jesd.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_JESD_H_ +#define UCP_API_JESD_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_JESD_PlatformSetup (void); +extern void UCP_API_JESD_Reset(void); +extern void UCP_API_JESD_CRG_Cfg(void); +extern void UCP_API_JESD_PMA_Cfg(void); +extern void UCP_API_JESD_JsSubCtrl_Cfg(void); +extern void UCP_API_JESD_SUB_Init(void); +extern void UCP_API_JESD_Gpio_Cfg(void); +extern void UCP_API_RF_PA_Pow(void); +extern void UCP_API_RF_PA_Set(void); +extern void UCP_API_RF_PA_Get(void); +extern void UCP_API_RF_LNA_Pow(void); +extern void UCP_API_RF_LNA_Set(void); +extern void UCP_API_RF_LNA_Get(void); +extern void UCP_API_RF_RFFE_Tx(void); +extern void UCP_API_RF_RFFE_Rx(void); +extern void UCP_API_RF_RFFE_Att_Set(void); +extern void UCP_API_RF_RFFE_Att_Get(void); +extern void UCP_API_RF_RFFE_Gain_Set(void); +extern void UCP_API_RF_RFFE_Gain_Get(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_JESD_H_ */ diff --git a/test/case40/inc/ucp_api_transceiver.h b/test/case40/inc/ucp_api_transceiver.h new file mode 100644 index 0000000..7376d23 --- /dev/null +++ b/test/case40/inc/ucp_api_transceiver.h @@ -0,0 +1,50 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_transceiver.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_TRANSCEIVER_H_ +#define UCP_API_TRANSCEIVER_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_TRANSCEIVER_Reset(void); +extern void UCP_API_TRANSCEIVER_Init(void); +extern void UCP_API_TRANSCEIVER_MGC_Cfg(void); +extern void UCP_API_TRANSCEIVER_Gain_Set(void); +extern void UCP_API_TRANSCEIVER_Gain_Get(void); +extern void UCP_API_TRANSCEIVER_Att_Set(void); +extern void UCP_API_TRANSCEIVER_Att_Get(void); +extern void UCP_API_TRANSCEIVER_TRX_Cfg(void); +extern void UCP_API_TRANSCEIVER_Tx(void); +extern void UCP_API_TRANSCEIVER_Rx(void); +extern void UCP_API_TRANSCEIVER_LO_Set(void); +extern void UCP_API_TRANSCEIVER_LO_Get(void); +extern void UCP_API_TRANSCEIVER_IQ_Cal(void); +extern void UCP_API_TRANSCEIVER_MCS(void); +extern void UCP_API_TRANSCEIVER_SampleRate_Get(void); +extern void UCP_API_TRANSCEIVER_Bandwidth_Get(void); +extern void UCP_API_TRANSCEIVER_LinkStatus(void); +extern void UCP_API_TRANSCEIVER_Tone(bool set); +extern int16_t UCP_API_TRANSCEIVER_getTemperature(void); +extern uint32_t UCP_API_TRANSCEIVER_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_TRANSCEIVER_H_ */ diff --git a/test/case40/src/testcase.c b/test/case40/src/testcase.c new file mode 100644 index 0000000..feb1768 --- /dev/null +++ b/test/case40/src/testcase.c @@ -0,0 +1,49 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "ecs_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "stc_drv.h" +#include "ospLog.h" +#include "osp_cfg_to_bin.h" + +#include "ucp_api_jesd.h" +#include "ucp_api_transceiver.h" + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 40."); + + UCP_PRINT_DEBUG("start monitor temperature and lock status."); + + while (1) + { + UCP_API_TRANSCEIVER_getTemperature(); + UCP_API_TRANSCEIVER_getLockStatus(); + + sleep(2); + } + + return 0; +} + diff --git a/test/case41/inc/ucp_api_clockGen.h b/test/case41/inc/ucp_api_clockGen.h new file mode 100644 index 0000000..578a326 --- /dev/null +++ b/test/case41/inc/ucp_api_clockGen.h @@ -0,0 +1,33 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_clockGen.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_CLOCKGEN_H_ +#define UCP_API_CLOCKGEN_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_CLOCKGEN_Reset(void); +extern void UCP_API_CLOCKGEN_Init(void); +extern void UCP_API_CLOCKGEN_LockStatus(void); +extern void UCP_API_CLOCKGEN_OnePluse(void); +extern uint8_t UCP_API_CLOCKGEN_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_CLOCKGEN_H_ */ diff --git a/test/case41/inc/ucp_api_jesd.h b/test/case41/inc/ucp_api_jesd.h new file mode 100644 index 0000000..357b9a3 --- /dev/null +++ b/test/case41/inc/ucp_api_jesd.h @@ -0,0 +1,47 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_jesd.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_JESD_H_ +#define UCP_API_JESD_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_JESD_PlatformSetup (void); +extern void UCP_API_JESD_Reset(void); +extern void UCP_API_JESD_CRG_Cfg(void); +extern void UCP_API_JESD_PMA_Cfg(void); +extern void UCP_API_JESD_JsSubCtrl_Cfg(void); +extern void UCP_API_JESD_SUB_Init(void); +extern void UCP_API_JESD_Gpio_Cfg(void); +extern void UCP_API_RF_PA_Pow(void); +extern void UCP_API_RF_PA_Set(void); +extern void UCP_API_RF_PA_Get(void); +extern void UCP_API_RF_LNA_Pow(void); +extern void UCP_API_RF_LNA_Set(void); +extern void UCP_API_RF_LNA_Get(void); +extern void UCP_API_RF_RFFE_Tx(void); +extern void UCP_API_RF_RFFE_Rx(void); +extern void UCP_API_RF_RFFE_Att_Set(void); +extern void UCP_API_RF_RFFE_Att_Get(void); +extern void UCP_API_RF_RFFE_Gain_Set(void); +extern void UCP_API_RF_RFFE_Gain_Get(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_JESD_H_ */ diff --git a/test/case41/inc/ucp_api_transceiver.h b/test/case41/inc/ucp_api_transceiver.h new file mode 100644 index 0000000..7376d23 --- /dev/null +++ b/test/case41/inc/ucp_api_transceiver.h @@ -0,0 +1,50 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_transceiver.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_TRANSCEIVER_H_ +#define UCP_API_TRANSCEIVER_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_TRANSCEIVER_Reset(void); +extern void UCP_API_TRANSCEIVER_Init(void); +extern void UCP_API_TRANSCEIVER_MGC_Cfg(void); +extern void UCP_API_TRANSCEIVER_Gain_Set(void); +extern void UCP_API_TRANSCEIVER_Gain_Get(void); +extern void UCP_API_TRANSCEIVER_Att_Set(void); +extern void UCP_API_TRANSCEIVER_Att_Get(void); +extern void UCP_API_TRANSCEIVER_TRX_Cfg(void); +extern void UCP_API_TRANSCEIVER_Tx(void); +extern void UCP_API_TRANSCEIVER_Rx(void); +extern void UCP_API_TRANSCEIVER_LO_Set(void); +extern void UCP_API_TRANSCEIVER_LO_Get(void); +extern void UCP_API_TRANSCEIVER_IQ_Cal(void); +extern void UCP_API_TRANSCEIVER_MCS(void); +extern void UCP_API_TRANSCEIVER_SampleRate_Get(void); +extern void UCP_API_TRANSCEIVER_Bandwidth_Get(void); +extern void UCP_API_TRANSCEIVER_LinkStatus(void); +extern void UCP_API_TRANSCEIVER_Tone(bool set); +extern int16_t UCP_API_TRANSCEIVER_getTemperature(void); +extern uint32_t UCP_API_TRANSCEIVER_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_TRANSCEIVER_H_ */ diff --git a/test/case41/src/testcase.c b/test/case41/src/testcase.c new file mode 100644 index 0000000..9559d97 --- /dev/null +++ b/test/case41/src/testcase.c @@ -0,0 +1,45 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "ecs_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "stc_drv.h" +#include "ospLog.h" +#include "osp_cfg_to_bin.h" + +#include "ucp_api_jesd.h" +#include "ucp_api_transceiver.h" + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 41."); + + UCP_PRINT_DEBUG("start transceiver tone."); + + UCP_API_JESD_PlatformSetup(); + UCP_API_TRANSCEIVER_Init(); + UCP_API_TRANSCEIVER_Tone(true); + + return 0; +} + diff --git a/test/case42/inc/ucp_api_clockGen.h b/test/case42/inc/ucp_api_clockGen.h new file mode 100644 index 0000000..578a326 --- /dev/null +++ b/test/case42/inc/ucp_api_clockGen.h @@ -0,0 +1,33 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_clockGen.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_CLOCKGEN_H_ +#define UCP_API_CLOCKGEN_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_CLOCKGEN_Reset(void); +extern void UCP_API_CLOCKGEN_Init(void); +extern void UCP_API_CLOCKGEN_LockStatus(void); +extern void UCP_API_CLOCKGEN_OnePluse(void); +extern uint8_t UCP_API_CLOCKGEN_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_CLOCKGEN_H_ */ diff --git a/test/case42/inc/ucp_api_jesd.h b/test/case42/inc/ucp_api_jesd.h new file mode 100644 index 0000000..357b9a3 --- /dev/null +++ b/test/case42/inc/ucp_api_jesd.h @@ -0,0 +1,47 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_jesd.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_JESD_H_ +#define UCP_API_JESD_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_JESD_PlatformSetup (void); +extern void UCP_API_JESD_Reset(void); +extern void UCP_API_JESD_CRG_Cfg(void); +extern void UCP_API_JESD_PMA_Cfg(void); +extern void UCP_API_JESD_JsSubCtrl_Cfg(void); +extern void UCP_API_JESD_SUB_Init(void); +extern void UCP_API_JESD_Gpio_Cfg(void); +extern void UCP_API_RF_PA_Pow(void); +extern void UCP_API_RF_PA_Set(void); +extern void UCP_API_RF_PA_Get(void); +extern void UCP_API_RF_LNA_Pow(void); +extern void UCP_API_RF_LNA_Set(void); +extern void UCP_API_RF_LNA_Get(void); +extern void UCP_API_RF_RFFE_Tx(void); +extern void UCP_API_RF_RFFE_Rx(void); +extern void UCP_API_RF_RFFE_Att_Set(void); +extern void UCP_API_RF_RFFE_Att_Get(void); +extern void UCP_API_RF_RFFE_Gain_Set(void); +extern void UCP_API_RF_RFFE_Gain_Get(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_JESD_H_ */ diff --git a/test/case42/inc/ucp_api_transceiver.h b/test/case42/inc/ucp_api_transceiver.h new file mode 100644 index 0000000..7376d23 --- /dev/null +++ b/test/case42/inc/ucp_api_transceiver.h @@ -0,0 +1,50 @@ +//******************** (C) COPYRIGHT 2022 SmartLogic******************************* +// FileName : ucp_api_transceiver.h +// Author : boheng.lin@smartlogictech.com +// Date First Issued : 2023-03-04 02:37:50 PM +// Last Modified : +// Description : +// ------------------------------------------------------------ +// Modification History: +// Version Date Author Modification Description +// +//********************************************************************************** + +#ifndef UCP_API_TRANSCEIVER_H_ +#define UCP_API_TRANSCEIVER_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern void UCP_API_TRANSCEIVER_Reset(void); +extern void UCP_API_TRANSCEIVER_Init(void); +extern void UCP_API_TRANSCEIVER_MGC_Cfg(void); +extern void UCP_API_TRANSCEIVER_Gain_Set(void); +extern void UCP_API_TRANSCEIVER_Gain_Get(void); +extern void UCP_API_TRANSCEIVER_Att_Set(void); +extern void UCP_API_TRANSCEIVER_Att_Get(void); +extern void UCP_API_TRANSCEIVER_TRX_Cfg(void); +extern void UCP_API_TRANSCEIVER_Tx(void); +extern void UCP_API_TRANSCEIVER_Rx(void); +extern void UCP_API_TRANSCEIVER_LO_Set(void); +extern void UCP_API_TRANSCEIVER_LO_Get(void); +extern void UCP_API_TRANSCEIVER_IQ_Cal(void); +extern void UCP_API_TRANSCEIVER_MCS(void); +extern void UCP_API_TRANSCEIVER_SampleRate_Get(void); +extern void UCP_API_TRANSCEIVER_Bandwidth_Get(void); +extern void UCP_API_TRANSCEIVER_LinkStatus(void); +extern void UCP_API_TRANSCEIVER_Tone(bool set); +extern int16_t UCP_API_TRANSCEIVER_getTemperature(void); +extern uint32_t UCP_API_TRANSCEIVER_getLockStatus(void); + +#ifdef __cplusplus +} +#endif + +#endif /* #ifndef UCP_API_TRANSCEIVER_H_ */ diff --git a/test/case42/src/testcase.c b/test/case42/src/testcase.c new file mode 100644 index 0000000..150c790 --- /dev/null +++ b/test/case42/src/testcase.c @@ -0,0 +1,46 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : test.c +// Author : xianfeng.du +// Created On : 2022-11-25 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include +#include +#include +#include + +#include "typedef.h" +#include "ucp_printf.h" +#include "msg_transfer_mem.h" +#include "ecs_sm_mgt.h" +#include "ucp_handshake.h" +#include "ospShell.h" +#include "stc_drv.h" +#include "ospLog.h" +#include "osp_cfg_to_bin.h" + +#include "ucp_api_jesd.h" +#include "ucp_api_transceiver.h" + +extern void ad9025_rssi(void); + +int32_t test_case(uint32_t argc, int32_t* argvp) +{ + UCP_PRINT_DEBUG("start running testcase 42s."); + UCP_PRINT_DEBUG("print rssi."); + + UCP_API_JESD_PlatformSetup(); + UCP_API_TRANSCEIVER_Init(); + ad9025_rssi(); + + return 0; +} + diff --git a/tool/libncurses.tar.gz b/tool/libncurses.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0af3f6190d40338121ae54ef6594725fc6c7cc37 GIT binary patch literal 462815 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¥=!~3 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πSxE# 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 VexFzv(+i@7Z27yaPouK6Ke*;LA&p1 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®J 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≠JZW+a zN>MWZ8ZfEJ?89E|BaDvRREEQd0hi0}KI+CN209kuuUS_|DNGR86v@sPS}(}q=i}jk zWJF)x#m~v~LrU}$-m5ic*NttXxrJ1N1Aew$har4-o3uo7=wPQ5{fcHvdS(P1g^=za`(FdhrVB}0Vl-=z3<*(t8iR+>_oPYJOK$m7!b8v|1A2XR8lsf9V8 zE^Tvx%Y+~M=RSgDw#4-ous#rlni^dV8og#+gTe5QKIEiAAzHe<5Zwf-#rb!%rM2qP* zavbiNd!5&{BPqbLdrB7+L>OB_r*20ZmC^9aKc3hOFnNmLrT3km^jT^42u-J<;XApy zH&gldZwp`Q9Fsx4uNDCW5ncqUQ%)P=J-!#(_?CC1zsavpI4Jf{T9P&h@+kmWr2`tj zkF0fV8%11*x_b5qx_b7WlQ5C`B>~TjT538*7UNvkPFI>p*${Bkd*C(evrQIN2UdiR z(s(Zq8Gw5oX|7~A`bimg*M~bZ66gvo*Us}*_jT<(!7Rv)Bkhz-TB%FLtt=Y<-Wi&B zhLl-ds@w)+SDb&%Dd<5xL!FE&v zT{Jb0?K)7d)S>NCx~a_>w?PIQaO7!Vc*nc{zEEryw8ymsTGmKbX(D%JxK54!sEMF9 zl`HBDd9#1qH!T2tr+zRn#m9$5PJd7q^muVKP0Pyzy%{fTK@A-caY~=Na4FosT<7vA zaB3kKE)Z;|g(S3;5g#fU;i3}y-p{^qA#rXF)L-Du7YC^AE}fU`!x^@$#a}FPjr~SR z4elnoxSI0pXq4vRY7)EKfKa;81P=C3En|z{`+^rJZ7I~-3(qdpVDEuih82?CK}DW? z+m`P;VKj?hC9I`fi}VPu_C;t!@yg$F)-o_O-z<(T7i1ZN)(YRSnrT9{phXH3S-CU_ z^@F3bzMjP)P`9CzjG@3pic$1RTkDd_@kY~FH{Pk|#lpkLNC!&b{?m3-XvLUzs9{a( zvt)$dWx(OgvBoOt_Qdm0SvSlAghvT<$;+)53G z3~{@8tQ4wDMZn@{YztU!Gj;jdHloSL2Un6-Z_MO8Zo{9PR?ufC+o2i4mFNJ8R)e;^ z;;2t$AB=w<)37K=!VGesORpXM;Hfdfg+rp$?4gQ47x0TMGIUF)U=q-7ELXIF z%YiDOUHZ`f;6&eD)%=*$Nh-gbS_2HIzIEA53WZk5I}1kOl7ZC%vRM7Cx~ScuihrQD zp8O%bQGKEAPup1A|AR~gGt0S)7(RW6y3d%DiDA4sx}>x@dLT4Wp9qZxwM|Hr6E#po zrJ_?$=FMm6${8Mnyulc^A@+Tl?(guW#^WWxT&+9n;PhNEX?--iN)$tJ8cMaE_2}O? zw^~49O_%q`^;rFd1(KI}Vl+c$$6Au-q zhG0EaVh@qrW#Aw4r_{?b0;kOIMDHx2O~~GNR7k%q12+yi^cox5fT;W_aD24 zwl5pxqBf1~GbB6Hs2?*Hf_DL-v!aPvF7*N^s<{2fuBJzZPO5+{lcbSA9n|zYr1+9{ zG?Htn=ho@8_HuVfBh4Vw$mk(k2{_(tQ+$<9^bw-Ic<^Gw5|{fPBC`FG-}o z^;*r98>GiyN7WM;Zm`xOu)h(-4roH|vr{=_`%Cy?<7C~>hw|El6xd^@*Yb9)D2PjS z=4DRogKH+sY|{@FLPOhR^EX*sTNN1;fEaFmKDBXll>bnIvSx@Xs`~7iy*e6gHoF4( zAeWhP$bjoj(ShMUtJ!AYu>642I`eW_plWp2J$v4byv9BVCPfs0cAAx`mi=3cdrP2NVYZl${28_5isP6Hjd9`@@Ch2+7d*JcA^hEz+GATpIW(0_ zr2lNrITd+esIpa}jM|wUnE%?#dqllIpoR+j{L8_+!r(UpabUl24&QlmQ>)WR#v3Lt z^oucI+njmB8=vl}mrgQ9)t|zT9NUco;#-b(n$3;CM}NNTD-TF~&nt>(q!aIJUVOW$ z^rx%yAhM0QJO;I5^2D11RtEVt!zRd!b7SBcJ(+iW%%gtFpM?l&ZGcbwD2xBxk|4Q+ z6-~PQbwQEm&PHz z6@glNi5Wfhd4dhwi0tMz&1BQHg_=U>m!$5}!blbLm0ILbK$2Tr;bI*}uPNL`4d1}3 zgavV&4Fr%EQwGe(p4*E#=rvkcI6PizS^9o*2hDhKp!UJIjxu0iT-*dLv^=KzD1s@g zKd7q^xX`dzh%bbZ!;*yTmu(UdPMJPiKL>uw94h^taiTZ6CL4wi7Dh!oi;!X9o;F~Di1-A@;IMl0pjRPd!-hm6X zLmUl&n53u=FtY^rsmb!)mUi06uz{~J-zvH`vOEvb#I-8(b=-N3Iy&iqK#Ue?hI(3t zzVI3x@b189HJx8R(2L89pg62RtQEPF7!tSdYosVU8Sw7~9|#|soTTU}Aj~PPr)B;O z3-g%0>OxSEA=IyOW=k#SDYKg|<#6JLxEq-wF~EU0LxxG6UBA~>=|L?KIs;}AE~R;8~p(_#B&T>UXMno4$0KQtKX z_Lru^6ZEB{GG!NQwmcG|c*9)-njfU0(4@*KZocYN2G_hrAlpxOifX1Q@+=g5x-ShP zc{xP>tL3LKzEXK*K@xsI_cRj=NtA@DcIgL?2{e()-O8gWc!<=EHAZ&`U0CYW98#T7 zxvWt^-l;x$e<&7-VJ2)y7A1T)D{`i(CZeeVvAxUkgJs4r*nCts6)T0t3wm`I#=B3%?7?Ujhp4X zx?LJxzJ4#RmX;-k(3=N~Ac*H1K{7BRG7zAXE6E%S`XXdno}RM7`LVvZueMiuEtw-@ z4!zQni~4#LYMLN<-&b>rPUFrtjuKty${Db<_Sk3wQU+}|@{%5&mN!XEVn@*W-&>VJ zN>1{po%@S7F&@VEu6?Dq+e{dWMv?6Yv|~MJ&lC~VVdBHO=Rdx2wjbGNqB~laY|6f_ zk->iIaedieeCPVrLIn~)gOeHFFEo%ESF%tew^f^lMW{eHiFEwF^{{*Pj?h%$TGMLE zQH@Re+EqtVkjo|8VwAS}!Cv_Bg5^LRH)wM#k-CU_f#%adU81U{p9kN>iewMI;tGpb@U4Kc-ufD4`{g&4O~H3qB7d+*%Jj! z9YPnf(D&%5ytinJnAa-uPvL2sfy0SU`%qYZ>QCxdyB2=GakA3*r0FB*7lz>?>1JN= zb^Gpqo}~Ry#H7JR2|9NWJTp|VMDQ>Qg_v7-Z67aVCmxjwyQ=%Hn(sVxHMx0g017Y} zK4Q?+K{!)Gr#yHsMR_VbZ{Z{+lA*b$eq~6J=<UbVWQpE~1__8cO&EC;kogra$t<^MqU;1V-Q}c8PqZM;hmh zQJ_$Uv#}Z}juJbDkg{Og98GZc*&N?>{@=#)_PZfD<4Onvu_Yo?(b2siDxM*;>|^R+ zN4nqMiVtc4r~03y!yT8Im!tAceDqWRT0R6`wU`w$IsPH~zCr!>Yej0=NuC;c;3P=B z6YqXwYT&gH7!CiqqO5wP*~}FjSqtR*p{_AJj2l}?XO9WLyIl7j=}8>kQgVxU`1i7@ z!PxHeSlQ7SEz4B%y?+V_C(Ht`9=}HcaxcqgohzlKOx-DY-$!UlZ$ImMzuoq#U3ckN z$3}VQIf{BV)uBg`I;2DWV!qVjIsoKc;X1<%+k9j9eGaPVDiawY&T)PCNL*n5KEetJ z6Vm(;)-~&(0!a>Qc6txuXtL#4^sBXKJS40#l33|heg_uvSQY^ea$TEFI|L4XI=>M# z>KfZ9h_6@5Nwjyw+TNFOB6A+rl$2szX>OVwR27k;#g>k8Bfj0OhQ}PKYWn77<6kPa z7YGt;LOG}$csC$c29MqYQ+hpTL0d#qB_UHvj0^4WH( zt1SxI8(z>y?4%FS@mxG=Y5KI=C>z%v-kb;gg=?oy1CBmJHUY|6e_f!N(K$Z_$9eLl z(KJUgZJrkM_&we-RR(Z74N*g4xLAWh=CGMF;(|4h`eK?^nj?j0&lIQE$A>XR>MPC` z7tt)dS+tC}aBS7+Pl;3|JHYo8emL{Badj!fUl@6~5d$qle)_C&1$X4&{=FaWAqcGr z)BQ%C8bEaO6u@jx?@xquB@$x&`AIUlt6SXupmoJebylQ|90KzPP-O~~`fA*@#Boj^ zbi51~5+7l_-Bp5!8DcW+0&5=fz*av>M%|}Afsdsj=QYk6&AJ-&AiDY97izgWm(ik7 znBd&ANyxtEvqGXSCnHY}u+es9`*Z_D0o+(njm@QkD|HIN_BVZapn5)^TMF>YRIxSQ^0t_xIX$v5}wEox0nH_T`tiDy40q+@0?( zdJS}dU##+(H#JbD%io3aHR%bE4oz?F`J?acVrko(n)i&xTBs+k7qJ!!B?%Zk9aKSB zOc1_yWL)ikNJW(IQA&IwsP~P~b_4cJ1j<>h9w9s@ew_QOM>%g4p7>aWkTN}!t7@)h zwLvFKTpU)LAhU5W^TuMucGKqqp04r&RkLyNtGK2ex((}J%=zU11AGsd5@$t?S~_g+ z@|5!34qb-nFTW(^PcD5TZ_*^(>+9geylA$~Z+mtce2TKW$Xnvd8Ae12I0w24?rHx? zEQ%v+huY?orAXq=r^mqj?~c}F+KxoDPZM@*ZEoaEZnaZA8Ltk^&sO{9IAl0psY_f+ z;(%`ZBsJm#I-`9#QdSFp1n7W*LmVPV1^b};tCKFLh_OksDLq{EqTt|YPsyu@r>!}J zpUcT2-|!lJnEXGsN^$t3M2E;-MSuzJ)(L#;;v5xNTm$j0Mph}S4ZS8Xv_igej_kN@ za}o}(dN#^Y7vg!-e7jfYjnQrX&Hu#teH}4_*wkI%67Qk#U<$Sjls6F2T52e(0DVjy zk$<@J%xD*A@99p33&vYJk=u+dt|D~{d{3m(JjeEEB`?0@or0fFXre~!PxbQ=Y`heC zDGE_6&m5}9QYFkJ1SkmbsQT|b6=T?>A7l6fuqEbm8mfn&e^@LXwME@;Yi!tA^z?4LVH9lTD;{E(h>7k-3znu+f}}@ zS{8K6+-Cebl8cgy*Ez2k1+x`^L*$peU85vI(dy8=P)E>SW<>}}I+S9fRI<%QEBm9T z72dVpVYijwRFBSOhX0GAoUWqfFt%n1`sr>K*v5B*e#@pd=y9V1EF$<(Nz0zWkD z$xlv7=&ISq+e8+(jJoa=JQE1GRKo@cW0r=M9-Gc0n~~GF zlFu!otRq7*wTV70*^e?kDP9i(R$yG4Y1Nw7ae0A0P224^7Dkpy!K&1Td1qxa;|b*0D6@s<4?>fdIr}IJui<{T(}DAVc>cLi zbAFI!<-GI)_Tl`_AhH8*?b)=pY}IZd>cn_d_}!bR;P$RVHNvtj5T?*|!y6KX92%p` z0`dDQ`0t@i16uQkLfcR~=RdDE-nj^sTpc#tS5uKtMKWN-miZ<(?UCQQ`)xr6O4vqU z%IwiQ7l+VJW0iP4-xUGw@({sTVu!UjL)!XbW8a@ zH!Tvji3eqy9T86cegGKOWFRH#H;@S-G0PchDQ~>m&^*(gUU*P4I{Sk^!K)=1EudV^ ztLcI-qH-u6MSrYuSho)MCYnl#tP5l<5YsMz9Rj20b%!_M@+q&z)<9`N`pBi>3tOKd zSda(^()JNaa@_rt1n>gF$}sC-bZy=empGSt~H+Oj3Ek(P<)#CM@D1* zzBpdHxS^$?4oE;(x9^N9?k|L_uO{Rz*3op2HdOp@l56l@l9h;zTr!Hx#c(ez(GiC@ zqJ%A5x}^krwc%7YfF@Kpc?Uuw5-YB360;^wzB= z2c$>qbhqJaaapRSw|1Dx)A>{OIoJ>v2y6o4fcaPmJa)!w_=#g>c+)b=H(Wwn1{){m zZ}Su$57~+}0qt2AYx4unOaf3(c6PT$=F~{Zg_Fz730@>oeMR=o0&cmZ$B+nNiyLiHSe`r7E= zV8Nj*<*Rx~xN{NQ*sxm|)V)DC;ShjxacAgKAa(38@}B%A_>;5ojxP>j zYw7KrM)e=F;EF!GLNyuv9df%=1Kvx28?r=QcOCzX%nj%6wouPR@SicdZ!Z_N4)l+e zrY>Rik$jY0N#PKRf{gLV$fxW7-psxy^3`Lz4}c$B3(_jEwvWGtr+ox6rBH z4J$sgqM=P#!zb3c*pX?6k?C0fefxAZziMdnQ~yLe=SN+axl40^kT-v> zzE+ODQG`E~rxMWYxAn-bsP80c@hyCI$@%+yk7M`D=lpC$^1aPjz>EVDe-d*Y}Z2)&wy0X*|Wt!K7i-0=BJb@t{ zvGvcgvAgrdR2)kFOjla#u;TlK#t84LRAgulS=;c}(gwtyxKd4np$bf)FM|6-4^nq; zp;fC@Ii-R9T-8lX%6@hDiV4Tl?wXpXH83%RFyjwGyi-88T#7)&Hol5dKxvuE#d&+n zF_lD5c>5J33%;ia{3-mI&ij+(ffFt-ca5n$HQ1kOK|OlWpuqP#ow%j=eog~TjzU)$ zRz5f)HX?rSYsbaX1}QmF)JjFSeWPBefa{JC@*W=xl$K>WLyIluY&qaDEVQ?rBnDoy2B*+ZXpn18k>_f9-y6AoYm* zt*1!bHKlG{$aBNc+O$4G?^lfnx~<*!oC)&A1w&NVI8lF1b8K4c09&Wc5n+$G)J=yU ztJ>2$%qc5%`{6hJJrle#MjGy|b4Vhoj-riO!Et2K2h%YMo`sLqZX~5$ zVH3uz+8j=5P6mfz8cyyJxyK{s_E%EXA~OsSI0MjKwIC^YUcL`mc>c(O)tf=HYjnzg zyzcRt%NEK3ea2qOdX0EIaLkFM8QD8?$#)S=+Em(?6P7#Zlxs14s!r-BnxAAhHW5_a zut6o`CQF4fwElIxOM%EBb{t&-wYc3woHZ}-b-6=Z111`Hetf^uBzZ+Xwl9$4I zryh(aI9)09p(gkDi@x{r#5C0h*Qx| zaaSs;Z5;Y+93*BIFrCvbmWtleB)edQ>NS*HUsXn_kP%Pc2b>oZ; z`sDrjX370;0)v>;YdhT+C^#q;9-1>GkiDR=74c=RsaiYI^*Emc84NuJA`{Qr+cNMV z!_wH=r3nRFQ-$Ceh53t5N3L!aw#_Lk_?iavsGY;UBA)StcQs&yj&VO-tmb1^#Jl#5 zjC~P$_k-ANgB;6?$-x$`<2ApsvD1pem&v*~bpvcdC^^A(vv$*>RO)K$OLbyU$s01s zz7DqsgfhRKTdGq)g&B#I31@ds2VQf6;QX+uU*Z7qVy!|h^BHF8ox-sS(_a$D&<8hI z#m#Jtm{Jt_L%KMxNL+Z5Ri1Uh+_2HV2&b&?&udyVHx*0pbKQ#AjY4-dfxkz5?G)L& z)b$htC()AaMZwj&178-mLz*w2KEs&K2`hU4l?HxcT)?D})iZ~6%kJHnBP+JGU{u-j zHduhP@c3^^zYppXnLm2{7z4JeE*gVPHsTN4m`N0w0apc*Dr)x+^Q|O#LU+RQ)H43+ss<78&;cFhXxa&$w4qr~HIf;Z?s$%0+1xRgIJYuS8YKkY~ zhIhWp?#v(Sh9%=T3@aO;wc9^siF^;K=RDpn@0VO5x*Fi>ssUE^b%T|=@{6FyOU7Zz zo_$y4S@pb5eLiB?x&#BRH+1~-bt`3Q4~?P#AUacY!Mq;-510Dx!J4H?41IE*&WHB6B5I ztO=l^I^honbHh|)oYWt(!cUBgN`pq1h<)UE1iOwi9@)$L zIm_D9F_I{L?5IYqiH;aaRIg(=EncBNG`J2)4kv6@4b5NcLPfAG;w}E=JU11Uk=ei2 zOULhpb{j96IvjrgZC`_>nm)flW;Dfi$O5E`&a?^^T1-(VVdm0pu2ORp%Y`Uq45sfW zrk<9`+lx0f4rToZBR`d<;We!ek3$5S?)?(S5kg`EBLsqYV-9LZ3cwzr!liP^0-Ag1 z5x!Y}C|wQjiv59I^d3$+45C!}z4CFNu@%<4B@PwJSsnCkp^^~q8JE_mJjMrWrfL{GxB{mPm}+U(MLqerD@=Pxdp5p z+;s1A5-jzV#-U-xJY_A5>gT^s=Z51!R0dSV9yS@EZM%X6`2c$$d{&sx)HW@6lnn5< z{_XFU=;}3>DXEDd#9z)#GlS%%&b6ZA&j3sIqV3?{Ny(LKBAaS~d)EdXn-7Mfl|SHh zBzzUPoxw9a9VbIXZ@ea%M$$#W(*-Wz*~Rq$O=WMZ)D(vkXJ0^36P6kFsMQ5Nc2BZM z+68hseiI`)(=OvY^G=7+xuw$}ByLm&us3UIP+t2`)yzeJKnm@U9Gejyp8ZN6GBuR> zm2p^Oa30;cUbfM~nT&qQlWaWZhvT18J9?)&;?uRuKYPNpj^*0lRHxf*45*t6SYNJi z69`ZMS3N!|$Y?aqEn-w7**VB}4Ik&SPX|upUuM%c)nR|%@d=~M9YK;OEjQ0ohV#XT zCO6)O1mMd-mYdW}aU{wQO|;%?lHMxWf=*Po1Tm~uF8p-9ru^sOC^sqB3dQj~$_{oJ z_-|96@GKes#}1)+GE0$>vl2V@{kzd2UN(m+h5XQ2V}2;}IY0`8D~tHuKkZM3z6!Q&;l7H5#rGKVX!s9{Is0th zn)8Ns(XlFebe}=eS$5H?g6uMfhc_1YyFC4(Pn<8FMu##LL!u#Nytn@(pouxGZh-eI zo$c*w2Mu4Boos{{lYLGBVrsy}R|xn0A=X$0#`z>)Gfo^DA-bHC834tbPCUxk%Cp`>JSw~X5xlOlA9d6{B<6cR-ud;-s6?{;v$ z`gQtI>>h6b)rfUDJT`1tPj#H7eaoSK1>D}W0Z5IzI3f(r-^oEhkm?T|$b4g*HrBqn z)HoW5t={`%8QrHkgin6k?tc2#beFssO4=dpes>Dxfcf!aAC;?HtPl7Z6np~pB91(V z-%I6Z1t+&Tj&_XZdy^|4{-JkKOY)B3a-LUP2H=`kC^ueT)JyNQW0H53WUEDrf2{@8 zO?`aIH}^Efy++zS*&`zSJ3a37Z=!`kq{&a|z+uqawaRY3WkZpWPt5|}az|`KhrY0N zvaxom`m6&1YZxf8rjJv=8HQ^4in%%uo|WWyeQH@lH&;}nxZk7r*yFw^j~nEHgX%>H z^Up^Bzehb&gRfFVvwTHn1}c{~>~nDr1j*c9Vs952B)=`rtmdA1#r$bLa}KFLhj8MV zybv(afBNc~YGgJ%_ z*6hdMF@&tupE+f0+%{q#4ozeuZRVz_7)k1E~ zNrb#S|9QVa;epw<;a_*YWk$lM#+n%1J$g^g^^f!+)-L6B0;JJK9hJU&7j5p;I|C&O z1gSHc-s@vw9C)#6A{7Q?dLm#Y-Xo}vi`Pv%~G`{S0= z8uQr}!f|cK^boYl2_zE#-pQ+p#$+@+jRhL6{j zEy{_i^*#3(=Xm1s8=Wo#2z*njKd4H1KWomkT@AAdw0rN7`7Wld3kCq9jR7?#_R`ZO zWzMaRFq?>z6kVd8{{8{>1jBSf7@6Q1epT^Kt&!^YvJl?QPg_SnrxX(mCV zri&(zC#m=j>iP@1$|Z7D`a|2Bx+hkc(NE(}U%OA2ezib05=3$jWzVqWKDjcVHB5z; zsu`oEZI0;1`C3jWCPw97DV{?F>KHD5)%R1eZ&)tw>YRE0px#)8p4T=Zd8?-%=!p)P-eLoIJopsJRU5=Kt%&MdJdQ(wUYtqBs}F$8mV~17aK(|W zPyCy0JxSSSWEX(HzXShPX$FmQfoHNc zA|FwiJxyrUe*Cgw*M(NL3X6%1n0#5CwCL!fv3L07 zfpbW-k)cyq^1q)En6K4NZ&`w9c~gp0Zek4tvXQEi`G{;`g_;y)oRU9i(lekfK?_j4 z$AEDPDd)&znEtAHv^A@g%9t^)sn3eyw!Xb)(%Q?k=k7Vx*w~%!3b@7Tdw?gSsK3y~#oObZYImyUh5xiPo z{(U`MWANRs${ttKjM?rqS3Gqsn-1z7)byD95XVBAz)+vL=~P`BEgL33JO*mkAnk}b zL$x@%w_oT9^=%Du;ga%e_g+8!O&>g9G{kJ|WYLkvYHw9{H#|5dC_!zAWwP_J51!;L zeG-!rb5K(}(B(4bs;vpqc-MZa5#ZAE_zNlZ`2E_BR#D))9OKY>1WkWq2ze=+;%I9i z``nrkJio0fR#@EXP0-uI!DKZwM}MQ{C#Qp)Q@V#s+)EJG#+Ek8k8&Rg)JJFXu=Fz> zTfd-q$MCShnaNDD^Aw+2XE&=E*~`B^B$22R0&qQ7wH379rE>ccSl4@Qlh1pH?((p+ z_wxEE_|+&@Tpb8$4YtomPi0Ay;WU^U&p)0}3j`jt{VMwsg&B^Ix|nLe_|lr5{$R38 zRE-nBl0;3&JMN)a%>GY>GF|^wg|eU;asPGu$TcHtpg$PDj14)YKj_@XYC|uZu*a8|EORILOL@Dw%RuDsO&9K_)@rYp_Qu*)g%|m_ zFFWx&tzk!<&9yxi9a9!o&#mmJBaK)RBxNp_0*8MLa}VEqFg%+z|Kc{n_<>Ke^xVA) z3vR`MX63rN>axqd*47;rhals}FRlJPaL|2h=WO*-dtjim|AO{o*zdh3JeM%8*+QAn zL%Dne-Mb7{*SoV%AKPkf4EB$(@H}BPdcY!CyYeYFlLqK~MvNNX8N6UQvVZZ+!s6Ah zA9ri2%SvjipZs_-`y%sYmf>SI@=Z3j^_QUyyne=T!m1MI1uODUf@lfG1M{-jq8 zDA&1eHuI0S4_F-qa7YeM%7n3x7iF-Tn0{fG=)AZ3^3Cr}XdwslYv1uz;WQ*z6g*DI zE8)hY?rfaP_E9!dMqEFP=ceb^C!H`G#ofN-tlsA7ZSk>p)}B`U%E88r$)8FH?qkcY zx+p(>bGsL89!6a96>P8E0mTN~?xhdxW0RAcIk|~S61`l0*11s`HeLDcgKyuG@5_Jm z&RN3$lIT}_`N#4jYJHl&#HUB8Y#(rN`PB0;^t{S>krQFptfW}Lci$l&!Kr9#<);sw z35(_7VX!zhUKzg`Q(5)!KIy{OHEy`6@rPljhHX0!!~5Gc?Qgw}wGZ6;&KG?LgxM%N zm>=~LrF-b9rzW4-P2YKXxAST84GYVqiD!197ry38zM}IngugZ*nD3DZ&0HYN*P?($ z!glzNFRdw!h1u`lD>J?cCNvz?#&4U2E8h3@o5OscgjxACH~bT`n9b399RT%}@cyLc z?BV}pr+(Xgn=(d!Kv-<)mu%4Rk4k&fy2)jHtf5dBF-1cxI z@KnYd?aaSeVT>i{?+zuI|S zGZXgDQ<+D8iDj&-+uOj{VnNjX1+ZZgdmHm4$w5Ki4ySHqM{iNSo#U=NEMIs?9@L;d z(jYLLwR_(p>P7X5_}uA33-%wjdBy(1RU6jH{u_)VS*h8cp~L1g#xH@NTBrXRn=9Jc zc|#A+cU-g*)56m3?~OWC-gyuyWUUKqn zBJ72m`h$9YHtUp|KMnq?=R48vdx%-XV5>Y#vaX)!>JEZhd)ehQjm(BM7a(=KFCTj6 zc>P4aw7%pXXyf*-;4aMes4tR_=a9FqRvAc8`3WqXZ8F)lsaV;qZ`ZHtxDLm*nD5a&H_Z3?mOS3F5BNnyxf^V(&8` z`S(>=##f)lRkQ5Yky{bj?y5Q8E_I9}N-ppXwh-|YhY{4A|M`_WK;5+(?QqajbGB@u zW;AomBHy8BENM3V|8fK5I{ts`uCe6fX``v*bh(cIr^{2boiukm=oz-QbnyUk_W}6H z%t79_v#jPPc3){f##?-xvr*KZHk~+Tl_NexcPU?hlOe^WNR%5XpkCwuvRj&)qL8sk zKNW-ROgskIG|@MK^VY_1mu}}E&DAO`{@dD~!$b2n^V`N-N8}4PtULc>+&(QlCUA9|Y3S^6 zojlQNVD0}jXBcUuo`0m?F2`L}V*1o(^N=RKX@u=^SPuCh$>AH(9&`9Oo+Chh(N-L3 zD~_`jN7)YawZwM?uw8EMgydF+Ts;=Q>g1d!V@=QTP0!$!hDVaqhZb&KFWfX|#Yq1| zJFA1wc?R?&DSuf1-`c5TUyXi1KKI#9ZC^#>JxZuzA*;uf`2k#7dzZ*n4L18+7!C_h0m zvb!F`OCR@TxoK1$cg&yxNftZ9;ujs3@Y4CLrg}&gcQwq|0p9iE;EJ~cUUvS{y{p`V z5NchcAFr5@SuOrN{Qi`G%SHS1CZa9jU$7hIuO{Be6;ZdSXp0CE#sB8>Yh}N zEL)>Qf4HZ&Te33Y;wDjli<<@=U9MgES$l%rjjI0I1Bd6(AEmS3q;}#xzQlgx-HCZn zqVVm;&b!spby2zDgfCw*MFoecLTO73fL;s!CokMDqSt>i0EVX6h6I>aNGu(`)m{DD-<8&NBTF zGS$tDy+u#P{X4+;BzxmLg8cX{?lvbB6_B!1P zhrgtrypd~dV7e=$s}ufy{YDA%;cY#A!;ef%LOePT-|O9Q zWbzl((=v=;A_yL7FGiP93o#z@>8ToC@%{;pXeUNrr(U7==h0Iz^kkY5EY((veoIwC zcgU$HZRp6Hq>Q$FG!(Hh+L;Ap+02L<12VrLGT92&Y1u}Wkqc2C z(&(`o3NslBCTP(`UMF9n@Tb;eFyvv96LivQfA^NGg#7Tj9*rS0lc1ogme;%fYmQ|8 zZ$G#tbVp0=-P>y=*AB1gkr|RPUF*h2qp61&T?E24EW>?qulIVUqYJ4;81L~D zR4swN=-2Z-mC?r3aSWTh;mVf&zH6`hd!nO>R4Dp#9)g0Ux9`I1Up+R_KdB7pUAV*L zEZuyeuM2u)qwT0F=_a6etgZ;!xJTb-Qb1`Q@Eg|mT$ysLibVR5=8~|Jw^hb zrK)ex>#gpQ$RrAC>P`A^9!mvZ&(|~ErIG3su2ki81Wrq7U&q(o-JnP``4FWGZ8*E- zLtl&6Ro&*1h2$cX_ihqcEk%5dU*~p(uZRqss6638*v6KO(Ne%)Et>wf?4@>?a! z%fix>oBlA7i!p=mjQQ8?KR4cU2k@7xjt0JdqQ$8FTl;5E>N^fH9&(23qts^%zj&7w zy4~IlT?3JglRu3aF%`9|p>~w~nO4qHc6n0Y!O#zWStyLPZTR?k|E1u;+4qO!d6EwX zq^f^ZRz6IB@GRlSYS?otCW6kh`KkCYmzURu;n%rsp1taN_371G2mglXkNckKH%Yf% z-YLi<{~?w2n%zyu10(k=(nVC14tm}52e+6$M`g>!=&7}MOp@5{99h@!k5~D~=hww0 z9`RKJ?mAK})adcQJd5I@mHXaWO>XMW1<^WA(CV1YWV`dik%IhIwtSVgQMZ*%w0l&B z!N+m_ps9BfwY#qS6n={TDjyC$eg6LMmv6NpH(gj#Nnd{d6FksQiZPdx%r$*<!raV6-1jU;6NwrzUAkr47Wbak z;lq0~Jeq8O>Y}_y)WlL5_4Cdy{{^ZcnN&E2nAzKq+cHHhgdS-&?i&yfj;saT*M(e-GIzr-bO!e zIF{x754OGos;Qu9R8&xdh$uw?K|p$yA{`W@NbdnD5oyv(2)!u=1f=)gq?bsOUJTMP zAT6S_&;p?Z>45<6^1c54cMjY$vpX|8JG(nOdrx*QV%gE2G^3-ono)jXXppx8T&Qx~ zkTLEd_D;uFbJpSfO8GT%Lkn>2J$c^uw_tC`2RCp8604TBjw=|PW86D7eN>h#-DfQ_ z;!u^Hf@fdg(LQ8Ka{06J}{#?j^Bl+ z5eE^&%5T8}9rS#Zq5Kvfa@kG5dpC4wjZ=3k*;Su7%0cWxlLt{<=uLLjZJsYCjkTZC z97dB%rQl6c@O~-yZz=ei6#Q5Uep8w~`+@Ul#?xZqUW4AW!3X*et$3_7Y(AHLewzF= z;UQc4(}bUHZ$4Z1s@nb^59(f3%g?~$Dch%~dJov(|Lc+bRPQ0%e;$*!rFvCuJ{$b^ zM_TWL@dsA)RvPMLy4TuYlX_Ko7?K9#o^ys+D$%Swcydf4``wjloh`@kP38-W$f2(9 zQyKGNxbk~t_LWz?@#K}oH=-6=5aIvw28h;QCUu`7oOjE#VOh_r0 zS1jyUevt~R6k*xW=xbIc(VQwVzAB?ux@kwA7>lnkIE3U5Mk;Ez6GldyF3| zKtHvk?Tz+K?SdGFDZ3QL4hsBqZYjV%>VSHkE5EzCi`nMF*kO}t&v6wzlC&(g1}TPB z*PjZOk;04(k$+M}snb@kMvw(As`0Ll7WjD@omqbpJkUQDNtPezDK^Vn<9orvA${*F zQdsW?QWyoxdK*vkr}^vci7!oYdK#g#3x=*GxW(EN`U17+bm(!E@2C3|+=jY}k2VYx z=9oK4_4Hmxh6$8??VRi_6X~Q_^@f#EU15=(04Et#IdCQSNWO`t#lDGwWL-Oa=dQ() z&$Flhk@@SZW0N0fP*4%`?;?OAZHFaMK7jP^$6NcS9u_OZ*_SkMm5^r7*Z9;Hw7NvgDcruj)%vWX@cG#O(|Wi zsyEe16^i+KS*=>!D}oq(whQGn-t6!z7y1DxY1FIxSel6U+AIrB1oAx2oiCDjsTa_8 zs*7r`x6^pNkMkD`Cb*;pab*q(akdGgX8D52oVdUpf3lGx)Q#izqk4XNLL*JSOX3aS zjSWd~C-j0FcI)D7;0Ga}(d|53XI|1->oj{_iZV!%{`?ce0fcBYBd1cn zncc&;c2aB_^m6vNWFxjY2)L6x>q_1#6L5|r!<{nP)kCwPg&J`TS&nxFZk=D#7$z%W z`l^z$MC7@H$)~ zRnqzR1o*XhPt%?syo~|h$U3oA+ZW*bZ2#=5{yOoy@38Me(xK05rt@B=t+ONPk|hQt zhzb0S?$|0q4V;C7WWq|iCVBZ#ZS^=(Gcli@|B}IMB25#)2Pm@C63{tds`Y;_alSW zKS~2vZ#pv-RvuK18u(IY1iZA)q};q$y{CI#`>h)#!=Ri^-=4HQuqVL!Z;=y(J5Nfs%*oSk~bYKLXu%JoB#ilJqcl@89X# zllpe={*RI)0e@W<0`u$7OP|_G7Ty-snhK;Ks|>kNLOmnSO%y%>FK(e}PqUvM`-Sas z+J%l+S+-G?nUi+fWn0_bAbvYgwTk!U{dl2p|NKsb_uMm688*ds#(1M#i=qHj+Yxjw zjw9L%$Qu^)%0@EE!VYVGzM37Ypp z7OwVKtoZ4obOXxosY_o_gI-uzeX74%HnxOxx9MAYvp(yAmrm(SVzP%n>TzC%k+7|G@*Z5Q!R8Ud~1`D=%f;5rIeN3axy~N(tqZ~YNBdl)ytgrc>!@))M zCRz5MDPB@_LXdsX{OzKzzqqH|Iz#4vqN3CK1c4MhE1bRZGTj^lqzU#!zukwf+z7Ym zld1RRzhpy>ItRm1+AA#0KL;p!e1!|lESU}pEsEH+ztNAZ+#9G!;644x-5{u&J0fOn zhq#MHc6J6()?Jx5t4^%zRV9RrO0`}|mK1z&5v$nT{zf732KSobw_GHiP73`#F)mkv z0_D_Zh?G}5-`b>vUxdD56DW|`=4+gscFOA!?*14w$RaLGvtzLooI?1SGVge-tCg*w z$fl;4g9*-`m`~xQka=xp(J(i5o#N?_TO&CbdFg9>U3gf+R@_p-ljYs=So-D?h21Z` zKN$1(BqZ;vT_0h9=mn-8m8QOC@xA~DUc~A6ph~r2{RZ1RgITq)#{L%rley3t)of^GsQ*DNo?}z6(x_{Ed7f`GuMD~8q7so z#4D5K5ihNHjQan%eyX{X|oxzh0W>Ptxkspgdyu~r|KP^te;Aj ziw z_dN}6W%K#iTE-`5Z&~5ZchOg=>g%QS9o~B=}SQ(U4?4j>))92Ag)LD|l#K z0JtN3dPA$3!ML8>hp10zChDn11o3JQitJ_)Us;d{UWn`96?dzNDsoBM%TSV%S6V&! zS@K;h4Gb<%;_I^h9n1Df&a=#C;B>Y-XYxC&s=IYnwt4@uluW^XMRPUO`=LOSxt3 zZj;Q1-nP`K5?n3A$U1z1`1nVJAwP%+08)eD*Um%P?Zi3^C;TxKR;lX)syIT zGdx7(>KuLzPRhDZ%>iD|X)VZEFoTcW-K9BV= zPwlar$|J-0l}S@lnqUdvgOQbiM1id((~Tf{}TF(t!-UdyqgC;u%Q zF_5m-IFK*cCC0-jxU96rOn83uRrl(fBStDonOTP?OFtPMFZypm)e~gV%0Yw3nDj@p zb&=oSBqBFk4?uPJXP^ANvhKCOr@c+7ZRckzg-*9yf#Qx5w_wFH{^5?l#XyM`Q0>h- z+|jCSc{qECv;wrUc|gqz0FgIL3p|1XK&L@kU?Ui#8^&8Bgk9-#cAQM^`HV>Tgs*X0;6HKrG~IB z3Io)BP$YE9ss*r_00jZSe=krdp#l^<0obqr(sbFN0f3Z&po~S_!|t9DNJf=Z-eLEo ze76D}gr%h#21-+G?FL6C-9Z?n5vT6K%Q}aR(oPO5XgHW#%rN91q2X{rYBfAIXmavK=AzDt{~rN<|JkbcJB z${ltEiZHk!&EN`chXxni^w^`Tky~SW`3{^r^WwSX?zA_zM*5BgoICkK6=M?em%7-~ zvl9uua`6(=tgt7?G&oMm;&D}`# zEAmx4dMvpPmJZeyIufS+fu<5FrFOMK2Zji4jToXJ2*Q?B#IJESHcwNmRiKVB%eUx9 zPFN95F&iOOcwUVG>@_&}ri~OimgL+R6VR2*tr4-GhBW(itY)cZz)4eVhWFtchJEIO zgVhrE4Si^cr@R{6Tesn5^Nf{3MFdNb{_3MLA+(b+uh}i1N~B@P5=}Lkj24Ezjh)Ag z{2~H`CXv&|_}M3t)40UV3M*Nv!MQ<*6tDDZp_T3^8kYp-AsZ0%pbH@+rYr(9C#_=X zu)oS1z_tJfxn5~Aw#2R1Qm=w$3_<#ejT)9Xs%k?Ykp&u%zNvnm(7~4;5H$NuGE)3n zhXuy;3YceDEQcQ6N#10EsR{w}2JkL4fPyJ^C_ur?Zgt2;lDRKCTOqD`5?3O9qLAKQ z!4=5AUCzM}OSNw#@Zb=p-_<+WX|KGvH28nYg7ibr72(|Y2A%-Q*Pe|?GxpOOCMz)e%XkkuSo-!Jw)$Ztn^y>)z@ZhU_ z{uY)F(&u?QOrO7|QoG#n>MY;Urdox;nXeMT@Zhjthbc(;J}06!ym`^f7!&@!`9kkF z^}$a(_i#fK8%X|YU$!+9lEH?5_;jwT4?_5rDVEe9~7 z3YLfH|2gdmJXdK1lD7lBDPm&jV3|Nu9OIIKG}F}rr)A`;)10#{JOn{kMD;PLS4NDE zZMycTgGhI-!Xcz>su=Wh$rK)<-7%I+!+A>#bV2G?jdZ4nicQNKlL}@B2v1sPJ;AP4NBbT7L?(X@9W;_rSax&(5(6q$$-wzm+o|4an(JZ zU*K>tIyQH^KW}&}3q19Y1KsX7@)DWd?*FBhyXvy21(&}f?%s%G{*c+Ejk)-c`MYfA zqDymA@0hD8;s*7(DseXt$sC$_T!zdI$vkdG=6(o0E<)zM5B*&s)X)|S%$c}8YB{pw zMiBI8nLb94M7~Vu;BgXfE&Y!K4ekSr2Ar zS(lJ6)PT<6BBvyqQNggpEd2lsw|NB~PQvsBkQv4$gN#VPfS{VzNk}v9&-!U619j9) z6u(P^#Dtb;R?8P8L9wuN_C)I9Z>It9k>V6(j1TSy%^``Fp~QPBMtC1d$4g6`uK?KR zs+bIj^J-4fj${ayN8=}+1_X5-P6lavbO@?bYZZ8@T2^OSRP7K@l-A8iIvwvXJMfS_ z>W-Uk`N+gF6TLLYup*E)sads~@B$B9{|cHX3#XAn1}~9>^wYyjq%V?Tpc2W8L651Q+y{OZ-cng9#Au=GrWoGQ-@)vNWq> zG>+#hb~LahyKHbf$%-$UnCY8Pzz=5W5h9S#>=$FzJ2D>$>Bv12`AVUN#aOOkF%$%_ zBjyggdHY`za^}eWx#jj19|cPXLXMFS_ktY_>MHRA((K~65Gfe~F-rS$hNfQS`3s?5 z%|K^@1fdoQoxB?6Z&Q(G1V2-ZBguuSW%Y|rgbNq7}T_$t@tD&_MSrjs&({y|14ZK-ESi`c~Bi118 zGzIX6>%&PkAgG{X8!&*(C2rBsba{;&n>HEXnBdwT@}=;9ksxMx>KkIZ$^Jn#^9yqy>K+E zOtq7Nl`fG|aSd&5uPTF!ku%l zQ0uuRPVt+g8P3p)Yd8RKgM@RPaST(G5!@9zCEY6a2&WfRDFoy87aiV0abQ{C*HBDY zI?z1E$up>E=b2p;kP37Q1;lai;DwoWqB2H0I~#?kUY$z_1lmK=D5)~c|**yPLhJ%ppGlz+5 zE#5i0loDD%#eJG$Cbt6Q#I>9fp@R@QZh(v_@R{Fp*%asfkkm^Q0#MCvkd)n+SSnMd zT$_8P43O-J`#lG9Y5_8Tu^xo@0?n-9I?8T%9?Sy5kDPQVOI0?anRH@J7y#l)F~2Tb zc-f7%SC%pF@jM#D^A4av7yYzjztoQh>+(ro<=PF+0{ujnkzeHkV=s#mzsj9i-r5*v zj{hn*JE>BKXG#T1LVzl5RpZ?AdH@(v2Y^}t2nJ}*To-ZUf=P<^rb;?_Edx)&0U(&w zGSIIPAmDrgVKz!8!#8*8)C{+stU1mUhg`6Cz6*S9s3Qms&F2in;gDHnP zN`ZJ#7a??7@Ct~o$l#JO-+<`M4ORx!rVe)81d!kPLZ^#zK-^UYh%%Gq2E-%+VrIDj zAiP%a5D3kVvw@a?@DW0^0Hj2LG8-rWNoLs`eZS_ZS0y|S(il}P^wK=%C(RSKTTj$* z<3K!mvM)%pN~AJKgN9T@Ei;a4TjIuV0N(h-4PK_rTqJa`ZbhBLXDPcx-CwXolfy&4 zVg^)b>q(Hxy2T?WN;r7|T2Y|L`ygVXWJE{89AuLMltTc=y{=AO42%V(UhX#T`Xxok zL`f=_Mxb9hK+xJEj~jQSxgR8I{#p1#r&;+IfNzDuE}DKv48Z zHb_4=C>P+w>j7Hl0<KWs9u;Fh9kOo3}qWSdReIkb4F6LeKzcha13h%H5)8 zIIGX2PWFcYMP(H+exE~{LE>E(YX51+bjHRz8IU0ed_v96JdpNaofP1*C;+-%eP@Gg z`f>6lS_q&A0MMZf$VLMr(^An`02s|wH#aB|;0{&+$^jR9uucL?-S0=0ZK~1a4i)gi|0yU?Uw+=P#|}f1_;jutm+BA@iNd4h@rHZ zOD~nL4nNtC2jR(JjDDiYZKywX?T(3sKOJ0Bg^92?mWBV_DOjd0scfN{7o<47t@VrfSr0Ug!UB9bb^c@f zl03OH2rwMy%$H+$KozXO4aAHm`!4@M?@W~V8+sMU$tq*e*7Zv`x^uqJ?0itCfK`?* zz$AA$hJm09n!=gMM?1?V2|%wQUoK4+vw&aV8>2bD@q1|KKPr&w|8El znFPzjQ;~EWQ4cf1K22yqLR8gMQ{*_xv`Ub(3x9Hrj@8q*n}qkk39H0cn5Bg6w&I;z z&A$m1NX}mc7djGLsZy@Id?*`~KS&z2f(i%uXFWvqf&3qJ?!l3|T47K#jGR{S(o0i` zKk4f)d1uh+E4OtddjCm;(rjag-Icj!=F>NRaLaV1V}J0I&*W+DS!a zbAu?oXr;!fS1o`O4lpmmE~n0=OW>tu!aNy#3k*c38er$t%Q*l7Fkst1*%t-?gi+dQ z5(Bl|P((Zol)Lp(`sd}kx?Hoam;9!ev#bJ;1{_&%=O1c1;Er%jWyGST0BX`T1L0hg0^_^fgq(C$nRpcuK- z!WSgyre|~Ms_l3KilFg)V4rv>Vi_=wU&Q6~yYw8uNg;O*IIFB{UJ5Eif+c^VfbCcN zA_kzCFWwQhORO`;te}Edn1IsxvYiH$Fg6H|fG*lxde93q3=N6`WdYyI%9AMu#N41> zjVLdn5%8>r<$%*TH!LpAi@sEg9}bp6_g^~TU@%}?`AZG|<9aU*DPIlnKKMpf?P-zt z4qlO^_At+_Av9edLyw&o)&t1<0GD;1T zW#Nt=)|_y;7141A6eg}D@eJ=ll0o9vs=-Y?zOScv+I|t5$14F5;+G?21hn6&2({CzR`3V8hoE<4`#39S7-m{%b={xDvTJDz$_8dnZe7 zga%KF0(J{W&O=dgjbZ`^EO>62S3%f-2SBh8%y{{r0v^n0&klSWM&gVwfMG0lD*ErL zQv-6M==PM54C1MRWzJ-b{_&mapIpQDx$aZ1`ewfZ?O6}QL3>}!YJm=wa0jH`=S<}e zXoQwo^901!8LjdJAnLkJN`a8>5lRnk9@x^V;&1l$OriyQ>f;O-wC-OEfat=Mj%o1K z{H*iM5eL{orRW0~ouL68je(hg62o=&1G>pn+KFT{>(HtR$4AlTg@mXX)A$#3bP!4D zF?rXifDCvX(w@8b>r4AriSG9|1Y3lJ%c>OU6(!^M;lix;s9&zBk`rR_;srSo0aP%JWs`o_L* zn;`xeqTbQ9XjE)<>QrpC)$bPj>@>zdV|r>LzRr17;+w$C{O|^}tP}g^=Npybhc~vd z=Mipq3Ib4szCZDn7BX*YyJ`;KmfB%MEYp3q)*J5F_@H!?<|XA#%sT$&-yV^S+?B?1 z;;s%{(+R^eDiN~x5*rx011CD~{)a48-wP|F)SL~aw(&w~PaV!Ugx5-8*$3CN5=((g z;6KDt8}6*Qqh2NTNHXi*!J55%n6-Cz#TE4;sa+Dd0kk@!n4YF0HeE;JSueHL~5f^({v1~C@>_Uy->9n3?@YRB4`Kp4>tx0nOg5}(QZ-hfK$ zm^yzGB=0C*0WEEK^*iC6GqvzFXv)o7Qle?Fn}o4IB$ePSzeNPS(|z1EG?%6m7{`y=rp3tn>2_qRX%ZQwCPSsw?b z4t$s%+7m7|=A4#D*RM)^3Vm^y@HxG1>+fds)X$9Unl9k;(dlGq_EsbHHFmaq8Iu0_ zAMziQ+u2!j*Gv2@mVo|C1_Q-KI|(ba&vzwHW}{^si(yU$b+nMW{wsA@(~Ieh-c6;n zTE2Rp{Fdn{^JnsXSD+kPIbXVx?%q8FooZ6N7+~RIzg`rUXV3D^@1`30i**5NH5Ui2 zy0ZM?;;_yz;Y|8Lr~irmPeg}xAb&VPF`YeJSp7~oxlIb=AfIHCi3eBRvW_iKrJ$>? zkY4mrSpAkw%Dq88c1E@&6E&{7BpqAs{9!$XbU5pmFky8Hn-uy%KCvVdK>UQ;jE*hP zq@H4WQJ63}X(sT6kJnsv_J9&_Ve%qcwP8)ij<;)V)8whfAu_ZiN*DqyB>I)&wckg) zBDI@3tsY)pUcF`vD}y~?o7T}uTH_xKWE5Y2P&D`qY$}14haqkKF`?}FBkHxb5LxD1 z>qA7PXF*e&CQ&qLBGQhBtdCB8hBC5cwK44EA`0jAbETuinK(NwWuyL6o~kmjK2(4@=^m;UUeJo^ibYUc?Fy`;0>HPEl zJ22I6hpJwsg0*Z6^3oHl)A`CHF;0t{O#GRTT>fnG!Dcv6F-`-UZu+(=^#(?zgxc<^ zlt9D71RXJR`t-m_R`JEM+i}h zuqLx2vX?B#Ge$@v`n@*}%I3@&KtOXrgoEg}1lYDBOXvBu8luz+$?nE-AC^0KSvSZw zf0wgp5MovsKmt&lKJL`&$N(f+?glMe4eZ5VFqRWp39#J{%jki`L7Zt8R5YG zBwB`@085D=O8MU0-QZ0Mx1JtAB!byGwJaimGG?F!lYqg!c*uN}uRG)_;Xvil5Q5p0 zuM;I=xcti3C6ag|&p3qW!~$AkGx`zC-h7=*TYz#Sk7_pEnT8PBJC`*d`Vl3*e6g9B z8sf>-*cEj1p;nOWh!p`=U6lyIPCwk;5chL3o!Pu({1yl4L|YLKZpfrSE}HvxH)J3R zL1(uBF3A3+Ect$fw=bZ8nB6!25xY1DR;m_*Zcl+={|KFavU}2xfVQU+Pn0Z%5KsyL z&_Jx9>HPQsdJ~|7Z7C4QN&`^}Z8(5H9J~%{?{Ng|wa%&KHZMmwcmyyt0<`CG=)+kA zAX9#!fp}7PDM~hhD0NhO|3=fCYS0-QAXEENX5i8?y4gZCNLFrecLS?r5)|l1eE{o? zX`Sgld1-PUXp#gZ!z|i(1VZq;1Y062zFfq>Z1coTVKw|rNm+_UhV!fOJrdl5qq%v?@{39 zgMfnAl_kig72#O?#8~cJhk2;4wUts($Dad?V9h_R5#ox8lvLq*z<9ZE? z9HjrEb+!~uK=f+JjG~jUmfnJ}-j)RN*{ZC?po$|JI#FtB+KJTTL0sStHxEylIKN$} z9yhE8QB&Sl?x$%ep){xGa<6V)@mw|ZK;fK*#xbx0xbcS@jC?Q}mWi+6;pRS^1Q(jB z+kawU7x*`cPNGh(+I(1DnunVqgV?_?e3}7D78EG2Hend-`=)?NJU*Qg^XWKva-l>F zB)5Mf2tubcTN*P0aC}wSiOLSjQlzZ{wwz-*oB8p7FYeao+z`}5m|WLJ%x$EbY3ydm5_lI8V=tH3ti(hhu9!5dlC7$_)Eu}OvK zxW2*_@%i1EZ(s1O*JVwqvKC@>4EFe`VrV3b*+y_ViAh<}NtM}>QRxP2RFEJyZ>1Ubz?0OKkxr=@7I;hb>BH=2TG6H@E(k9c;qe*K4f`4HYU$|~ z{R3H(S!$U6WOnhkCv1E|v!q=}+6%~p4hj(z%^zKAPyL09lfR+=G2RZ{SqUZz=Q--f z9_1(_%!8k;t&fRNOznjNZzP}Lqs8){i#bWW_HpaZyyMY)FObrm-$&&&1(nwqM;twl zl~CA{KtFtjDZZ-26Tv8S80dgFTDHJrNc6$&#WyUM&>zS?3OG4&l{MmDUTYD3s#|q9 zYBq6G|BC4o1KAJd>&K#DTu2{-yrshDeTw-pv8)GzYEyn-_*OC<^`wgN*_02}vHiNP zJ}g=NLNy$TsDJy*$|dhblqzK+Q3@J@@+>I-Ql@e;DaLLn zJI^p!J{gjkPx<)5W^(FnW8e(|<&Own_o}#7Jg+)Vtz5yA7T;Ak_6aXWlLBhR=W)R( z;_=bRR9i1ix8m2);vb-&-`Op^jwNnPTgKz59@))zKPtlK$JF96F~ayBCEV*43rY|D ziMv!CU+gX>pjX%aF>ULpYj;0#m}8Tg=m@{n>WlU*lKYUCdGsmf8^HApkm3x~O|_|b zR(6C-O^uzp_2K+Wmp1)<3cljoPxuP}uxZIjK1{m0`pYxdBB}+4&$kq$wY7A;%UcF; z#ig0$+oG_Nip*k{7F6AKK*hS|Z2O5ymfD%^tBDO=#8nirG-G z^eUhIyd6Lv9A|7$>tenvZA>J~cymkp&mt;!;U77#8gP9eJk9$6!TTJHenxAMBvu)H z6Eby$d3d;eh4gJN{mp~+75HFnK?`oY|Eb|ifgP`pY|vYQ;<(&?ZJyL5+ACCA$*wpC z@)t8h4)lHl;s?=UajvYLrHuOHb@kPZP&KIWg?0^YQaS3ENz< z&I8IbD8Uvzj%uf!e@eUQQ|j_AWa4*dSJq-~Uy@e7HjcMsl=~1WIGrSYgx#{6&}oo^&@FFYW72nL-R4Y$qI~MxG7=NY=Wo}>Lhj!U z*=v{HcBVBXOmv$F8wdTPvB!gqMxml zK0OsA!|EC&*i|xR?2>>r30x0;dvX*?;xOQfb*=RSxdybq2jZwLvPDQMEr|DaXL!rw z5j8Cr$?kJQc1PChU0;KBUznSxNBJ*&XI>+am$wO(XIkxW{0>@nYJY?vFE!?>u9%no~Cpeqw-!cv9Lya zuezmCPwcMi&#cI&o(^;N_hRP_MQb^RJHyI6YqVwZuHyZ z*PZh3p=zxa!x;)Rj<+X||9VC%8H5Sy`)Mpj0k=!*07SMZR-uK$s=pn|8YASJ?CLw{m7)6hD(qRFFd7i@K9c} z4tJFNtZgtJW|Lu|*d8SQ$mMfGM$lK6|8Yn9|9?R`{~!+r&Wwds)Sm%g5DKm?PgtcV zV9S}Jr@<{e;iCzKF#Z>1yihdDCI#yhV`b?J!1eLn4Q<}QyluTOM=n5bGlFPrk z*L~>~5u>)EwpN6apY}id77^cj6ep*D1ytJOuWnr^^n_n-Y+gh9R(}Ul`ixU-2)yN@ zS?sr`dMitlO=`Ssf40J+8%(IgBzPS>j4FSb+()&nl%GDGvWqs=b)Hp=5>zspwBq|U zMzPLTzCT;8@!9ZoOOcV7mD4zV<6N;ed4p$#sLa;HYjnr>>nhlmf3_j)L0v0pl7mmuUX*UA^8ce)HG$V!#JYD_gCbVRge|&+1(qXW>&T?Wdm2)BR0R zbg#YBDdbgv&r(h`Mg4qqCK~8ymeEx)~Ka+pm zD^_jd)p+P0-TGrSIGO(j#mb+cG~xe`=bg&Njq(5QP3QmKiv&%^)u;9o#M-Sj{|l%m z+D@%0s5GwrYyZE1hU4m!`+8#S2AYEZFIa5vH!j+4pD`zzXc2*uug4C_TaBYz$VR|8 zAMvR`rONk^Lue7{=VS<#*gkLX1madnM#gJWv!9 z$(B?{Aqfqld{a|jw>m#0<7z{Cm%pwfCcU!T=N4mY3>3U0Tl6P2jnKbYXd7PgIYb#x z(AOCI|6py`xEDpwp7Pb??V0|@4~HD%iRU$?5pQdhBY(D{{Cf>*N^9QgLVF6xqLegg zqa5pvt7xPC@Y6P!@lAQv49Ft`o}PauwOTSVG)C{f@8zg*=OwR{26vBW8UZbG<7~@X zb!ICjvWvE5U0bYR@+SJdg&2D|a zTVV5o$}qL(?nCZ|Rozb$vbTwa@-z+YXXzc2%?D%Ma3aEW`3h+LY!^2)mHctve?s#C zWxb;1mxAh+n*8FL?`xsaIV_8_^%g%`xl@ue{C|i{x}9ycz?up_k4^9tYWR+3QA`Ma zgt5N)FO) zB@~xs@@xU$KP4>k7&=##)qecbLrQm}JhIa4QxF0x8*=b&dlHwD5u_+S)-X%f;^bei zM^&$OP&x^FHjiro!PJK;TmLjEi3!YGIIT>Rwa$fmiHh)1{2fQ84PLy!g3@)wT0mXS$oFitBu{Nf0NQ{OFb z-ntoDE%T*hvoysFKBkY z-6>>iYgOAkhZlbed^}@kl1q0ecFK+$;xTCZbqK;6z(X|TFj(6*{+R7pmfub`;y$5+3D4rEL#Y>&j?7Mr{Pbk< z^~TK>$2A{w^ILcQo#!%eEgo9RZyp*Mime{>%AUgy;0LmzgSUq|j6(&Yvnb7X4K=Si z9g6;OpEGbhxTaZ@f^g=k*=sG2{h~*DlyCwHeXaTDhau?soyPqaq^IRAQi|Wp9X5|E zd8)-fYwN}b3Qn9oEK&>3NW$}#I|}btHRV<2Bs=K^)y+k&JGoZ4>e3Ozhhm$mciF%^ zfhJ#w@Z?N7tZ2I5lPO4&v8V1^)%i3Z%Y^sfV;iNg%Kju85t|-9lc%Oe!|^mwn;sdH zrw}7E7GB!^NOzZ$S;GU=>ql% z0(3*{9%W`6sYAE_sfSq)YNWH**~APd`wBy<<49|Ds*{vzjZ^yd1`?bG;wzRNnw3)q zJO+{-SEOFtdZN8s^c+;A8d>zxXpo0HS-9C^ut={c z8b9NUr%<<1OmXT@p^&V_@JzckI5jCh<4dF%vQeydYBG9e#>vpZ&S2CZCeyrol{x3S z%+k*1J`oaa)*R?gR+JrU&MTjUovd(dfDGM2^W708AC9H;4|Y5`z)e^my?+|rB9FA` zb3A3}mYT1R6!{2rLnU(_`Vf7DcdQrFBkX8%rhQfy(xdE{atJ=vU3FI|GtNKo{^LW| zJs7zsqyEntGtiqDisg|3FEx{m2+IupTV8CY9fA3D!0kwxrsSEmNpciqlzbxpB`ugl z*wN(Z$=LW*_vy!!T-9dJ;gOm2aoCwyEbG>fEg{in%bE0^=yc?`BewM_z?f@BSN)PvgwNdZeX*fOKQjr%U|nO;`8mKM;@s&{73!m z9=SxFcYXDSf2>nCQ%+Y%2sOl)Oi8k10`(3=5#U;Z0#gcP5V1@(&3n3x-Ywlsz2mD9 z#1=c`y5jBeTxumxhDCc&f45$StuxhbMbg*8B93l_a#w|r*!DzlhKriL^(KT9^;?$X7*iTo9uZQBrgOGjp)6YgPg4c-#%YX zpOJrB`y9R_M;2?@o7p(ce_DIRzJiAqxb~TiBU?W^U#t(-7qKI-FR&}{&(;^(2KG<& zg|?%8!9IKK@VU2mHP^BuKUa9;py^W8-ZLMte`ec8o4Aj-k7-+Gn`ztp;oRa`^^p<& zsJ+o2zvFT=x86SFAA2N+k8P`(GoL$cmp_zSb3T$=K5IU*#3S1L+dB`pkK|SZXHKPE zOO9^g_2=x`M*MP*I@Zn#kJ$0NbLcjN|NKtJdf?D0rEBWZ*P}=H&UU=-#nM^VDFm;J z@0-(Z&-IV>?c8TN+TFjmm3Wx=-lO=oA$gHqsF&uIp9Rhv19`erYU{U03#aoG$)5+O zeAqTtFCyd#_v8r`rG=5e&0){+{3BYogS{&mCX&D2&``BqnHYl!9% zN#g7GN=Mg1nXVtoTp#v*U|dJ{ppNHeYnoD{|#thTzIvwv1_)FzWD0ki@(60wU4d; zs( zM;xmg8OIQ+uz6Vf5onIQkHsNzdJjA@FB>j%vD=0xjPAu_MYJ2SAMM^+7*c5~zQ{>? zy<%!|I;Q*l;zbZ8kMfGZdQNncmo5pxY=g6 z=V=F#XYKs-rrTZU2;#%Fe>+p&CjviQm0yAlHghebaa>_+75?@h<&u&8ogM;^6|VUjW&Pu)-i zX1ruJt?BA^QrY;ekH??O5;qzi4SeFXs6LO#aQRLTdHXh-a?F70b@gBgU*rLTNPkhT zPmISeGu#*a5c>8>Gd?+Dd-f<|qXa4c?}JYBzM0wLN<^5pnvCGTdmH7QVHyV4>LdKz z<&ZSfc$`+l25`LwXJOaf%-MeLexTWy%G1F6_xr>(J)&e@P>fl8*>azyt{CZX8Qfn# zaoJa{LsXPIa+z_XIXF}=+Y|s#h zg@vxJiHV`1xw*c+sVVU7-1*Vb-%Wl88Dg56j_7LB#-K9_@fn{bvW$tzK<0Rl3dC0+ z9iict^w~hp_;DC(Rzgx{(1_J@S&=o^%Qep&S>d%u9Y;Z}Ic2%E_wfdJrm|qo<2h{g zj08si2FKyWqs`3jz*!c=MIB>_rWmWmae(p2gKE~jq@C^NnhV~hFhL#(vHBD49A&?Q z%58h3QWoXL!^4SCtCHg*u5NS~8tQgocR<~VJjtoZ)*7 z{Pg7Qal%ZodKQ;A;{Kl>(XZWZk$wP7w?RHR-(J z8r8^8CQ96UoX+~?McXmyKwn9AzM@y@Q8gEKUbgr-vg;%UQ%4x@*ua1QR870w zq2!^HpoB%|$d}bdOR)mA<<)^nMYKb7cfQSc|4A!kbw;!_cTW1h_$%$d z!dj{?h7z{gI*a@9>omJe$yQJ?vjt-7!8i?$_M?I6@_vL@9magq%5k zez{d3V?kW$Pp*uA5v21^&`C|Yg_LB6pNCMqX(~;=e}NdwUkhe*U#Rx%qD^_UCrU5g ze&*3$Vd%JYfuZ2;OZDS0#^~0P4Q8g8K4BTA>#U^iti(~-F)=dBQDPNU1LN`8lBvq> z_tqK1)}=nQFEb-)qL-q_jScazP_LP+rnpa{9B)YpbgFk)CSy;$_ag$F6?2b6f2z5l z$9i%$nHyUT#$8Uk2lA@k>VD&Ju37O4Mu@Y<>Pu>AF&ggh_G@kVzcKdRQB8K= znhF9cO$4Na*btB=y+%Mlq)U?;0j2lel8A_OP^usu=_Mi{E%YWJ1f{R2w}<8%$FF z7JF!?x7~JDF}cJamApSm+?;yWE*t81*LnMUym#ltj@s}<^@9WrSuL=!GIu}jX^S*2 zd3hG+Te$p1rbta?Uhp>nbFp7oxKXXSK()}SxM$tJx?!*g2I%RA3YZx36d=W+=8&Gz zcESz2PC7ca(8qLZ{t_#lQ8sZ@jD4|#EJvAPaYykm`vQIy?q;xKiqJCbC|Y$`MWR{L2^F@By3Gh4p>612Gl;O6nVjJlg*zYt@7T z)Q5`iXPDN-4&Fsc01}P?qHZV*Y4H0?NCf*_b$hJK`BFWJC%bxqx%uZvXKTXW*k5%S zC3^?0zgk+4vD76kK4&CQ((0SZA~S229!c%Ga=Li{j0d*A?fv#Q(enXOMmoKE@vsHa z9&)L<0OZ>D3p&5qfEjD+i(qj}H4kgqThp(-#OiYlbFssCe%8pG&lJ`KqRc{%LR|qDvAFAt4fEt`YIT|tV;>4G&! z>K83;vVN++L@w@+y^?|5ul}f0@vQE$&kA9i_oHTe;IxTDzPb?!d3NH)~q zh_And6RT#ZX^s6x_$vjdBP1t}-j%& zuIx0c!-3w<5sHj>%EMobZ=KV4VwyOpM(jgYKdk;T3&k1zidZjYFbj{=VUFEfN*%n2 zHRUT%%!2~;4EtkYk*khQf>y)rZ`$24VyNf_xy29enyRp zR$@$r!;}I0d`6i?@mQ?m*8MoKPW}E+mB+8WO~_(W%_AYzS@OpJ*nwpo+?#*c3u;1H8J*#QK+salCF6(Kk@1( zR-3pRx?Z37N5r}*HeMrdYgKwiNIKKM0`If;g~YT)PDcl$nnC z@ru5qYV;tQ{|yt-ezNq}wh@Ar1|d}I{r}BZ1IholMg1QC_tyKPZzGcF?SC6Fgx9{p z-Gxr!ZO6RmJ9C#Bw>lo}zoHr^+IOu)rke@%b(zfPi4jc1fal{s5Z9MSMwU|j?--Xp z%JuxuD09yVPk-=Cpb)O?x`! zzM%>M7Ajre`L{(m{};Hc|DNB(DhK8d7LIUqQ3&(QR-+&nX;bUTm8a6D^;?8Jkj0RE z%UbTbVHz4wc8*JzvOU30-EMgT^lXRbcZM>$`HuD9ivN7UtI#WqK{?C6M$!$r{o+`F zdvzW$JGZ|GcC=NNt!sb4wZZq1t4m2;rdO8T74RG-B15NnSr&5ur~)(6B&79NERTqM z@sJqp$~wN6Ws|rre8FmaX_sRE7`y&__y4qrn)Cd7X55#cUHV4XrLEh%XXyKi)UGN? zpx4d-{AXJqobSO2{x#@lhFi&%7Dmtov%ZNF|0CM}(B$=)YqSjah?g68Y()9W`}qC{|LX)U#~lJ&-M1NvCh;B`S;uy^3?sP z^CtllK|M#TC0}hnH3hpz7R?DeD0 ztc#T~YlX%z%kC5PpMPVG<$px8kL>=nX!+hjz&rK8giE4`s29-FmK}XY?dCgrIaHiz z=YM8~SBIpkR&J&lgJ~*D20a|@3H`QXemFNJ>++@1+C^XX#7ic`DISaVTr;#p-WGHP zzt=C0eRML~edWHkXfKV=<@j@`Ql5!16)Mo>&`jb_e)O0Zkt{g%9Bt^Wj>URdOJw>v z(_h=f%eU(g^26?&jP_o!(-!L{6Rh+?1#(Bl~Jo%v_#A_u{6L~qg%?EyA z&uHeUMoiGJa7yzTRTdD9SRa4!*ZfTHE{byS@WbWXg4!det77dYTSVdW|3wt~SeLnv zAWdvT|~_P@uZa(v-sq!B>;%lN@#h?x2R z(57ef!+#=dJs=DneNqkA^<1uZZRxw9h<=jSHaR?7NTXge_&lf4~v24ytCHs8aWwGExZKavcX zkK2R1Nm!kiXWkdUY_gGdEs@sazyI;`4L%vZm+jF@TXnJjs^!>Kj;HN%{Q(=h#vhDFuBhYEW+x8>2N-zWE=X3r3_ zEUDJM1G@u^#oDa|qB2S8U8WZnE8Pf|?wkCeSj58SG&$I^AceNCSMUGZ5<=pEX$^^S zW=OxC+f_Rup6plQ?DjN`EpC{T>O9ov4&ANd>(Y28E&tB3eBXl?)b}-23CI;0uKplM zRW&v?>IIu$UQ>SKeE(NsT%BQxd5oJWwOe=tJ~tPHE^{zc{h8WfPF>jdmgB`A83J`m zNdpRemLB@hXYFA|65ua4Vd*(utG%IT}z}IZ2MPGDNp{Ee-$h7!h5b zEh7YtaFv0AMto=z`Qeg_z+Y^O@kxyKFb!v(91Ls%{|OUXs4ySLQfC(Ak#WX-q%^X7AON>a#{%=W(B^c6W zT81_;e6@D*laS8g-7`xYjbA9s&FIKZ+3yQ$X}iGQpLHPytR&UR!(1wB-o{{e+zIE0HuX)Q)9`jlJx0R51O%}}6nnr=^*OZ( zP6))e`Q19yOGF#uT}iI2yVp2sgM+zCS0p~WZ){;icB|a7=dj7rjzb4ResR-D{x7ZL0r0!=l&%khnTh+1I- zeC?v19rS#Y!x#HBcBi3`aH~I8Ug{)#npzk8T4ek1d9VvWuD2DL?Ha?krRa2^a4;j1 z#S%V!A2?R3L-;Ln!EnyVeD3ys?~hj$Q97~PLn0WLYzawK=V7=IV+YlLomngx>;Fh} zk6$7%P3ukfqWCdH4hF1}hF!m8?tG9+p+}S_p;l^=E}GtsxW=X_*7n>N`!jPM!gvx5 zB}bIjtb)GHJ56k6yEGE1O!K=tTvUHTU4tT~;QrZL zP5JfsCf#_YwwxWD%W+OXBhfZqiT7Al@?x{a64I)UcycW5a-2}gDlIMwjXeS-2zc_z zfG8hc-(R|}_(zd?KL~i0CGZ-|HkmB`M>`$tZS9Iq>4wnp0zGp;#|R49miUIpzl~4+ zgCXuP_5>6ANNF-&L5WM=@hE4s!Tr_u+`dA`{a$2#_E!-b>ov*-w28v~Y#dMo-~Mtn z5p(6#p-vqL>8Q;0m)zw$_aU&$f8lA$9$*I@T%QKyjrB)>g;z|7wJQ~!BrTR)yM>W) z_Euh^)SsvEZNfs?htqy1Zk9Zgy;bDX9+R6cPn(G1@k{g3JEy!OJx($T*K#&11Ft9u zF=CU7WU8otb`&BN^Wfx(e#Q$oboWO2=WM)+GZPs~@S;~>*Tf|!g6G|~CRNe9Tp@SEJM>05fluF_vZ&Xi1A=*$0at)?_poZl2jOn9B+T=qR7498# zbnJ8tbvos6-omWGpH5z6p4}?;7yxhuwmy*X^33jEJz&K1>JstgHLH);{hR$J{z!i$ zK8aW2KPH#Fh*7q@{B%ehrJvs9hyZ7)1NZOj85Yu06Uf;?0}+-0jY9gH1VgSdVrNJ+ zh%eF6w7xmex@#|)3lY9B;?nFL^gL&Jlb}NSq7DpVn?^t9j2Z`TD8ETplF_BIr#s#p*?i*4lXW+1Juao?)lxKhV=<1bkM|wrS?NYNP4k4NS zkWcDBp<^G(OP#={HyKshjS4;PTo|*r;@B{-#jgXazjW>RZmsyU`+A*GPeTgErmust z=EwuD?=4duBt487m&-izTT=qa0!MTT4hwA9*jLUM4j&kFT!wrUhMkm7eB z2sQ$R!VM)8yZ+iP*pgkrQoqY?qlveCfb(%QORoYak+B3j#(8j*{snU2B8glwWiEZ6 z{SKLL8nk3VYmJrbbJ>&*ONZqL(!dvQxWl4@T4o$Rqr5_d1}l#D;Ms=$&$A$-lQ?tk z24Lw@rw1i`_XDgs4HZPy2+Cfmqeqe@e(<0Q2p`Ztq_A1ro zT0$dV*t}v^$;#cfTzT5ym3fA?CL~rZ2Jz9$hF1op7rtC47zN@tJ6RZX4HzmuD<0VQeOPU!peI zLFVV5l?;!-j|2;e6T2>=B0I<~Zii=LGamkDXGkn#dOFtt*mHV+PwA$+c4x?rEsvyB z_Pp8m!xDGt(-M=y)6h<=A3G>@w0)cz^U$-IDwQ3ISR;Cj&jg^CPXe5d6CPns?4(-( zpFL!b{@}{mV{qqH)k}%yYs;bTq|bf2GVyTw@fN2(k$iOV7{`_+Fs~L7w!^QaX#e)> zL0ag&!TAP`BW)!_i2y|awY#KVoA#tjY4E)W(n?xG!Qkp%yDPJf->`{;M zX?2%@TrI)ToI33`s(Z=PI~_~fH4+cS(**lH_oaZqQN)+L-1BDtr)hwIGIjLV9;}GV zv2K2Do*CL`sT1qrv}=kOz@qcpqHvu7Vf~#uo!>fC1Ne1OclkOPk#$RdM*8HA-Fp`| zuYi6^?lj{5;0o- zfd~NyquRY1?>(;Q{aHJWX$UhNc@=tR1;z*ql3Gc;AlzO6R-K`Kj6dHyuvy@_vtDKS zE)8X|VP~tLm{GOQ!T?Cz!o&+OKw4CLGXk9vG@)t8#m4vvKRN>=w7<{TG;fT{&jl>2mtSNXT6n5 z!D)<`-33nVgD16n15mO*5-6dR5W1`-trjYrxJbCXsW-vmGC}}a;GZ1=h4y2cKa#%r zd4a=mq#HR}Sr@DB2lfZv_&Fs{G~&GR88Kzr2SO)j#QkXL%NB+vw^w26F%qUqcM^0n zP|-eYo&tU~;5ztDqv3&1ht&sqG7$!R19G2C3DI%~uhQv3CL)L=^wRG$T(oqwQf%z~ zQt3G-at`C)ibGGgIkOnU#=(nZm&w6geC;=_&%^d4T0YfK!nRd=hnhVBg)U9G7CuHH zcXiKEj0cpRcF6b-=u1e5l7XD~hX?2mmnr^zyPeU{LiM_a2P=9DHV59l1u)C4rc6SC zM-ZN?sS$DAntX{v;i~RwAXS*gNdY21pXRFGz9Ihprp7Hm>6y(kq+5NTq|+1yIMXkN zOLyH{7Rwu+3aB$ z{l_+04-VE zwC-O0aU~chwghEK256kgV!aQXVWf2m$bGm%PGWvr(ht=WX^Txrb@@~DKwv|b2le-_E{vkva)&{21 zMT`FpB1j@r1q0g~3+M-pD`e^;$JX>dVh)jq4U;}v`e@Qs-Bp=Ii<}$WQ3t4zA!%s( zDoY_rc;!5ZUon6cm_8Xc9`vx4bXFZf$Ud*C8I)F!Iy|o&(_~YGKCXq3di;fXV2i= z*b{M$FdTI%*BlEMFz+a|fC`RT9V2dmnpt~mMJ|RImJ;!ANqIj3*T70wxPv24WA6qk zUQ9nbIA4Q2>*b}frnVMZvD7%!P`nMK-w&oa=UI@yg}F8c1w6ntifmILbcukzA>6}B z)3{R&#N9ZS+z>N-UOUnBvnxr1xLn#AW zqvo4v6ynZr?>Si0a>G9E^k06hnZgMac&U;ml41U7LAGIgHCaO2I|kK)+e!e<`! zoigdwNoSHc>mQqzsMICTzSP@UxaS!R|8RjjM>2?UTWMbi#W>^xf;+j!&y-GncTJs) z6H%8bc`*C?=g|sV447?PUdd&p3@yn(nJ%0ut<0hweYl9Q(cbLCjokWC+%jO%Ft}<| zA?I7H(WRwgiR7$QTeus?3#V@o*ju^j`+0#m$W_0rmDwK5yfo?=aHxNshuVTL;3Cb< z6~@K0(clZ{nPSAemTT{W`jOM4QF{wFxcftH`WT?eJGNR`+0m5Y(|{oq$@*Z!JSR6Y zJmem1ssDp?8U{_XFgJb=@R=Z?v^0DL8g+OG5)NFa#y9Ed2c`S8MXlJI`rkupb?$KY z$cn7g-du3#mc4s6k34Z{%7(m7ap5}_79$H!h zutVOKi{aKz@$S7$#L*ekoeV(0-8o*6DX%uC|E4_m@ti7~%wlX|P-gmZ%UP(?wZM1c z?a&Y(4i6Gn{`_x9s9yLAgud}G>91*i8<8<Z=Xj2JM<-Xp5)tNELj_5}Jdd2plklaVI;PhG_)mIDJ?O z`PdL?haAaK0M3q9-$Nhav#4`!VT!DgbUpd(FeVt7qFp1HEpYOlbv48B0`y1QmG-jq zARLT3_>`Pgj{%-NBO+kdv1;gK4r;6b?`KM=pB-Jx<P8*jC>b`THlU{L8h_!Vsdww($yAq#)wu!KKDq3r$O04{A3-|CP$|P#s_)R_T%m;L z*f%jDL6$0P{8ZSnRg_gB%I}`ysldUJN1!zqh4uY8lwXQz;(@$cv&y| z#_rG;!s+9jO|T#nLf+KC-nO$u9!vp3GWSA>Fk{ZgR7;h z0Y~I>D3z5pz=^S_mFT0tK8!HSfUxO_qfi;<1+JByFa4cbo>#16ecRVuF~m0Zi)L9^ z_VZ3bx_jtOxSK=6Mv>uZPg3B4@TT3)d9V#nstbQEn(Nm=e*(pi+* z9UiK?8W^>)OdZ(1^J-yRFUJPH;-$oKndHxMes0I#sI`lurMx_1I^?-&orslbZIHa3 zwG>%|-F<%W>GTZT7)Q{`;z`SZyvLW_fEwSr-}wzC75vV%>N9H=GoScz%alqwAO$cv;=0Qh@4`)XC>BzwE3ZT!~E zVHD_ng<~!%C`Vd7jAKX?sva@?L>0h{VpzQ>^;bd2YA*(C+gZ08+5nC@6T`W7Brg)K zRs|5RwGzzQlt4^bOZSVt-YWG5u_waCjjFR@;B*5{DU8CoGY{tQkms=oh$r=;_fC00 zFqCu8MkF;r;S_Z%u-AXd-82up3faKiBu7ynw=%`3-f1j+eHi}&0_gyU)R#h+K*Kxh zx2eIjyL`PcTc$?F^NhCXwL+hpUL+fZV`ke$kaVEqWyt0S8D~|f5i_V-54jTOlaVJ8 zq1=}no^!s*#5)CH!nKdl^P}UZ&rXn?9Q<^vO{Clp(lI`{@Qch`kNtjyae3z89yh@5 z15d+Dx zx(DZ3#w^SJ0M-IirQZhwUl0L3JEs&e^mi_HM$snSxp|H76XD~WRT#jXjGp^d);_(& z2Mwx2|F+nbTP(P3`{R7Wma6TONJWP$~80W?N-J(j9(I%S{n16VE(YxbAHX&>Zs zP=v#mbI`s3jAKry6GRgFgJ-W}1sTD`GSW*-Z>XS8Ds0?WwM9OjPq~iIf3x!Y22Z4t zZa~Sn(|Y;)&!1&_BYoA=U-Wpz+dJ3;LTklWGiK-IU%h+V!ueJ-`tG%BHPO%B7~P<_ z2scWZd6Npbd0SQa!&QpG5eCz^&-wZ*AAk3KKe9eW54)c(5;>SHbx0>}dZ#<5i;A^^ z&j2?<+aG$ggz3Ew3PU(pNAxrRCHF`|9f_f{l_gwEcwuq4;uFGx^Av5)m7IjHJ6NWJ ztGnMqDbB__PzRQ(@53iVq7i_%BQDBkc*EN2vtMTn3Mh+bz$L0S7L*TX)+*O$5ZkVY zdS3gjv-kB-FEP&`M0zEfxg(KVbW1}Rm`R%c07jT60}MM(m+a??P-~oI+aCA$LU6|j zb%4e}R?CF65+ahgq;yuesj<}X=y0I+_c;7n&O5|8N4kr=XWv}O*{?qpwuAG4tAM8Q zI1G>q{AW%iqyjDjZ&E=7bjY!s+RU^bYi99u_}nDLHM$JOZ~(}HgWR=7?psk>E@=g^ z;{hCAA$FZ9kp`n8wIlg%ZMIv7B<{_~<&vHe7_Xm}V9ud3gc7H}0=$O|PXlcpH=)ye zMHU>U9QG;O;B)OER~i*co}i40Hv`vQiXr$Ai~Y8Xx#mlORXpeZg7GMb25c|P+*D+WG5(yJI zC>HzHcO>LrZ*QK>5@PRKw+&K*Qd=J5mkXF~fKpAv+5NLsXJWcqJU?z4K@fSpOS*%6Z|{Mh1yLTaN7DVB83N^Z?Ru zqKCLfP?{0@F?sG`1{}(fpFwzmosZ5Hknjb!xuV1?K>rd=lG?-`z0lWV9`aTgi}|)f z#e2QZkyXi8BmJhrpla{=mtXXf>FGN>2GMlCVM<}3u!!yrnUYa>$Hy%PsQQxPfnRcN zh>5TeNqo}*k=I1;&3K?VG%Rq{lM$L~0~_J)Ca>9i7IScIK|M_UQ9DJoI#6-iB|I!fp9T3n|Hf zFBfpkBcl8!>T{9C^i`g|Cgm~!>8fWCI_v;Kd8Sk$oI(ybC=No1RQ}ybHOFSjD~q5b z0Ws%G^!NuSptVqB#c!VV*4Zw2A?WN}@%TR4IIVd$w!`%G`B??%BFJL%aH-uvbOcC- zAVry_6D3Y;Oc!j9Y{(Ar;-dli0DAAAkeQ>}3Q0t9hcp|?EJ;JbW^NCm0-&BcuQ9Gj z&zUyP)1%KIXkW?ws-}1i#pX{A@UJ>oa3WuY{VwnBQAzYU`m|ak^#Ib%vge7_F+6eOUI#jC;&ror{Evv z^K3z+{Fw}%mpP7m^F;Xr^3m~z_av0_E{_?u#`yR2+Ntl`R_EIuuW`NYpFwL4f0~ES zFDYl9AGHjz8d)VIngK#t50{BP26|V(MH74N@8%k?9jCATHw2K>fo-hI>9t&e&XbV= zP-P{T-o2}vTr=|&$PknF^l3cD4CuYumDVPu^EX-};ug3Ow>UlI((i2aj4;H6P)7A`29O>+MNzHP8qRMS#&!%Y4hTcC@k&h;%#fCMf-4Pp}j%Nu>0?-a@#(NpDWP@Isa_llx?lrO zNDG{BiYSQGvSsP+eIO-%lkZPs0Ml8IVR7~XC7yN4h4CP}L(e?8f$Gdlt6kW<;TRSg zBz)QUEQTkD6Hdxea-D=eYhU3PUutAN%R%WVDmMCW;go)v>CHUy7VYM(N zf$StGG0)wT!ZWCS!TC3w^+4k3DJ?VwQ6Ws1_ zwwnrKGAY3eay-mK=c*ODN0E5|kkT>JkqLR*E|3>~V914x?=DuHD|b^M-F-vHGW8O{nkIVI>(sbeq{*se}ywyJYwR|27wVlHd$- zeSN;m_}k^g+{^w0QSilgZZe{5C&cw=`A!YV#A=@o+3#hoJ4LwV83d2cq6*R86cIaR z$hoohsfOB{OMxXWVUMI6dYKNY3s0n>zb$kB)1Jjuv3%9R6!X?s! z-yin2LkZlQhL_mU^PMYjZt7cU?A*>uBLL$|)B>5xQ)#Arr2Ixu6~$LZ1$R94OkC)<}YZ zZCf9W;SgA&HD75!_K)qzhGRCpC_-VfOr&L}H&}B;y@Kd3(iikst^pF86&~DO*G(U8 z4F>A1ob-q3Ar;~#>f5e{j)&V@o?3P0N^AjBz@F8wb5@CCa%b;)_FlEiQ3MA;3wuxi zDkVQC8xK)nWO@(Mu^IZks07^nKkJTU8HELc-XDQ0HEX)KY2_iC36nX6}~<-1<{W9d&>NP}Y&IHiYoagz3S1NTE?5%2JO1K!gv zjJPBd_6Rjr8n;rKL=m0m-O=Bw)88$@+UgC5U?!WCdnPV9ZGXqTqkoFN;IO{422Oj< zKwG)I9-o%}*I1qwcF&jaKx7lAIaH-?tsp+}M?A6E5T2AU@7OQir1~VF_3i=3@k2{S zp0UzTHUjD5*k{7YvX-4A7jug>T<2=vPn{O?ihbNS72u(4wVa^Lnrc|Iqbsg{ z|Cl4%vQL>lCnzXt$NV|I*H1BSs6xdrBLXb%BX9P4s0+r+<7B_@Uc5Zw&->wbuH*}1 z(W-p~Gv&kf%o@aI^;M{hkSNqifsrqJW|GmeJ^uq79PGvF2KS;RCM(W9@FmYj}nMTh7mEe(b#QF9sHWD0htq_;zDr zH=abhz)?M2{uL~nZ>?hvhi}fC*Y5YdI`25xux&tlZFQa9x(km?#T7yK`O(2u z_k()63)?_p=uzC!JWSLs&s(D_zSe_C|T$qCoEV%3(_xZ%j1MD3B2xq6#n z7mbMV%KoW(&mkWeyiu78uCo&ZE@ZkXJ2 zNYubq=~&nBW#R3~ioZs#Z-}GpMb?J%P*{-Rbv4Wfc-?@Li&9eR!|-R^zu(;yE9|L` zOBr3q4h-G7;lBSPAyw)*e^#Z2210Ey0ll-aS56cSP(aXQEEltOHK%AMCCw-hLPl5C z<*P(1A_uW+uKxFuWYg0|4F@?#n9G%eZ+-N+c@I+fhWN=O@Z!(&-^PAdwZF0MMl$sK zhOuAk*Sl66@d{>dsbxv$o%KN!)T?MbuXEdjJth6L4*RBwDzQGi-A1Kcp4LwUTlvzq z#cVVxq|EpmnxEX;IEsw>O=CyY^LPVDnQNK6s2eF$Ip(b;tV3AXE1NPv*SsxGe)%7q+)rOZg&tDpJaqKTL(8 z3SUL!-y{f%Fwn9%wR~1)&OoIvGGmw)1O(F!MOj5hIV$gP=`|^HU+ra@vnwt0kuVx& z9PvtVQl2ZKN{EYd15dd&1u1f<*TIQ}W^T#X-IyxUBC_K?#+N;KIpmPZ|Lul{^^^Y;mIWY5}LyG{Rq zHH)!R-#5qL&5EAN(ak^JD$98UdZ7-g*3Sv6Z+UUI!zsy`cj{wIulFAOws>ot`EHe7NwiZs);2X@osRv)_+6Lb z*JG*D%K2vt^sCy0_(|Ynn7^&W>r8c_KY^JKo^IoU2V-8Ug;c_ZoBRizH+LpE_^0~| zgObSKLKU|^Gh$W$w$iv~SsG3JF=O@(*wr&5GgF=X$V{3ro_pldTinH$< zKarN=8D2pKli!DWPhQcf2kv*@V|6OHNwKTi;;)4%iVS67i;k-8T~rZ^Z3$u_WGtvd z9u;S2^km1%aJ>>_|LeT;e1l0)rnz&>*>+m}NIi);6IyA)RPiOpfDSqQQ8?r9iRR79 z4;O9TH=6mXKglSIk6&2MioWtH?YFNQ(4H6l`GwU$pV-s$wrFgn4Ar>NsKOEx`f`#w z0inUw3;wAizy@qjNMen-V)Pq2{3g6oyF)j7IG-r0pQN_%YWUH-HnDE-y#0}p(@olh zcTx2di~ik`(;j{e`;Ak6O^r#l?d$rpUeH#r{>!HbmCa+U#mANAf$VS44Br6v`Cl$O zb@HI$je)9aMw7m&_;}X^2?fitrf$4PcEcFgp?aT@D|~=Gayn@6<)GiKcU&_u{6q#6 zrwFPpvVZuhYz!Tfcs<@1JYKx>sKH}tC4nw}bgpa^5W{f0MpPi^;VWHh+PN;M+JjU| z_29WDG#^(_b>BQop$+8X7U`b^f4ZeZRaS0*f+bAU^=jT9`_g;YSo*?oxPT_VO<(__ z=;w6ZO*vqi zt`@e{8gtRA}84SQ)RU-v&mcIkPbVj9D)4DphFx zmF#_yUG04^V@v%_P?(+Zp^aUT`{?tR?~0dSMWwxDvAkhOA#3iDS@#q0pj%O3QV3jl zVW}Swo0j_eC8(L0)nCR*abG$^K?B^r8S+PRSnpxn+X=!w0k^1f8YZ?3%_6nIJZJ7R zD>?&~!N+H@a;S5M+WeQ_G1iKmwiVvcv`1;iO;xwO6lb#@$XQfI&RI5VcdDn{Rt)5- z!pmA*e}~~T(*M3gdB|Wmew0V^H;G&%_&M+TMQy_Qj8us6Nm)7khxV0$;B6e!%iNc$ z3spWz=6?q}DC{2sB*g3P$kcK%37FmWrF|A_kpHJ-$c}EVtV}P&_i3F+mrASjz_s($The=Zp>IwFVqKxT|zyBQjOHEr@ zM0S6b5o>jm9B>S>i8p?{`8anj&Tu*BXMHu|<_rA^-MI0?!paw24}LPK;y=yZzQr=0 zIr(&Ix#PWAfor0andC^>PLZvEea9^)pZ+iTJ1# z+U%c(4|Z1Hc{M3(?C7Xe8%Krrs1e&FphETTvCYO7Q(w(+j z&vjpRvA+%X#J%f*re;=wwR}>nJ|{TU(Q#-kEKmNm)y?OrFq3|5z-zoO-Mk#0K$kX? zYV^J48c^V^0d)zP8{6lY+z?ad`hZqUhqKjE>G6g{o;LscB;9e3Hyxp6WG^%#%dL_zgOX~*Ani|S^O>~>9%p9Nxp;5wEkcRQ%&5yxmOr5kzmrC zqNdON^yc8JyMsS7XYp1Ev)vb@FQ>w9+>Iwmrx{vWj?_9@BKdc9v^w?cKYCM_N^m{< z6w9jB8}(9Ly!Csw|D!z`3AH>Y<#;BEb-537`ueKMTnwUW5&8`G1!(eQKB!!Y_~Nqm z>goDZv^gp?;OEFT%>f35gXEBKbnxXY?0}NPUM+ks1lkJUvi{}M_fBO`vA)o~cKuh+ z;*!nJB6F7@@3*Y+C-)t8inQba0fjN%P7O1lus!dYfH61W=Ob;xyp3dQ$Y|ckaizn$ zj)FVR)6>h#^5PB~U*^zne>Zts+Q^G*u{1PVz~^RMWcmv>SZjb2>)wC?O-3-)H$ zg%?BYCAOw~O4)sLIYlc=BU>4xy|OyaS*UZjlFpGLm#Mb$ZgH?%k0W+M&g3I|mK>szktAFvE|6q^#>`eET2FyC11oVt57+P$}-{D!LXFB@XH_q`w9K^OPugZShXDPoI#_vCR%%u=Fb$-JY5gJL$=u zb{ksk)=zoxtstnsh&@lzWp2eiu{*;{%cP>H>8>Qxrsr7vSNFj9aTPwfmeMfG)&(aG z3;FC*F56dqhn}~GrWz}Hnub_7raS7wCetbkYr}(c)P_v_{Ehmb`LCl)4ZMwPLLx04 zoEcM&Uu4x-V*}!L53L8>1!mg2Lcl}k`<+2cvG*`~#gTMYZk3P5l&dn>*!2syuZZL9Sf0Mbe$1tc5MPsv5RG^XRHoA;EOH!l8O&hsN!b z0`Ngaite`jL7#I#%TKDb`b_)Xg?lcHi!_PvTv2&Lp}{t{=cL+FGWGYe=I-m2JaeP! z$}n==*%i$Rtddz)c>*Q6q8#37?Ifj|s3bI%`}DAG&kt5u)rm3LolgokNb$d)Wd#R~ zuPpfaRTmZ}Q;)gNrC0t1mGJwxYrj=@W9Ea{kNvO{5*JaCbPZy$s`DFQx9VR~P0Z$N zv7aq|vG|28T0lAmFN$NC4>Oyvm-fPYtJN1R#tuuw?upN+hnV`y2cpxmmM9$t3s z-p~m7ZYf=IdWN}2Vt(oHp65pJ8|YbJgyHH?lCwDMQwu_}Z`FTJ#J|Y}nsr{eDAzfs z-&{C#F#%Og5MgxR|E;{lM8jX9U$cf!{BP(dx141eOSsDM z*@T)ps9zn#S993`)yy^+v<7NDo zr1~3fV;_ibTo@eR-n}uy^j;S zMoZ!_9d;a_m0^qhf(3_}40p!RmvY((nV_|^MfA1$38x>XLR;>gDYtgKn}c1-7O(Cp z3GBXQ`Aa8^BX;QT5U5_%z-IMo!(g66@b!_B!*WP+W#)rl`rg^)Z&B60Vu=EIc z(zPj|EVB%=Fu`P46`XIi_C$!wzBxA%jn`2}-CO-r|I1gXX0L2+VcNNLoF;QDc3r#D zNskWmOqWkL!FO11EoaJpZO@`4JM<#j!P9spzk;yctH6BJr@6G)QeHm`PqMX`geV$!b(gJ3 zl5Lnaxl36>DvabV$!!l~8(B&zrd`6QD6*HGu_aWN31#eKiLuR$G0b4h%yYWG-+!Lx zc%I+y_#MaZ`Qy5pKRS;2T%YrOzRve~n(Ml1ryf2f8A_YH;q8)LJZ4dg;SRm)GfU#w zPH32Qb!d5|dm#rk18nCW$~Ta6UhEntAEHzzNp5}6^srqV@yn#*0j1)jYvhql)8CRV zeqnt7CO*3(@Wq2ixZNce-kc!%`keXdj?ebGJxKo1cI#F*hVXOfTmRD=KaUNYR1E%; zp50y2lYLIF2jTne%zR&9+DM7BlaKY)CMAm)AI6KIIc~BYwJ+`Nr3sl050Tm?h2G)~ z^uOD3{F^%2MqWrG1CoPY0sE}%zR4c-O55cm>J{hX`nN1-xAq;qDWZSqk;OAn&g*$s zg)Rl7<$yz&MM3eN163}I_bmegDTZY^t})wvsChZt3rTnO8FbA2)S^bskIA=$1==V3 z%jTc)RJxe+xn09_N043SfoxXF#KujI#V1xa1Zv!BSEs(o4aik=+8gown_cONvo|;C zu(K0d4u1W;U79QN@@CGP%e$9{5?*bmPH9bb=RY!j?LfRpN}QcQ>T5OK4L@+9O>HQr zqA%DWHY)i3;Dk%ZMT1k`WD^}~Q8#}STV|kNrN2Cp=bxBxMYdi3)-R>~qb8ryyXbL& ziq)S@eQV{O?(w?Syh5`od8+KyI)z<-I^<$Q@dSHIao@u5_%^+m_q=!#Qob z22c5(FKtTD^K~)r+|Ld^eKj$5Ff8*@c<>eGfa#*{orMFlfw4E&kKf{O9(_9Z`q|`7 zB|M?|rDOWdJvy0*J|UYt?5fzFIhgY84y=qfp{wpnI^5DWD&=a5iF{ke_SVuzoDs*I zD)y5v-L3-eqx{P`-V-rxTRu(@9oUX3{UsMWX-hhL+Ou+|RHj#7C1h$d3K{7h-V-?m zTIFxDN{H>%0k+hn@`}P-1E-k_*8QhKcX;%2%MIRsFZ#RvQ-c3QkFq=NpXI9_3C5y_ z+?bV8hAq8Mw;9C;Pwl&7x}X@rBuV-{yV&d5_EE>6nIGbpz(cyVzp~&C_NMIhrBZ(A zyQf5$jAdvyv&j*+)C?QjkG81$9ii?|mtHR*Rn+(&@OzVIFvq`lz}?twyHiYPq2`{x z_=n3Mo)e?}b-Dj}^=;1Gzw~N}j1n?sY+LaY{+%cv{q>Qh0Q3a<{oll`&%wMD$I{U>Y4$%0@B0Ar8 zU(}l@X0|UI1Vot#PER7#z2Gka-l=_vi&bUrtBG~X+ZzMIvHmfv0|owkm7jP+&l7`l z)QGE}L#dS2a|$D?3hfc2;q8JS64Y1~Tp>3xz@EQ2vPy_g2ov(8{$vc{=KV&#pPa2- zvTI+~Lyk;T4GJWv_$rElU=PEFFK}LVs34X!EZa{1a6wRS1+*L7Y|FJvTbn7> zb1P!SquD0dm}&$vaOrXEPTyNU3}^2(;PtQ4N6bX=yG;@WMXQxw{Mz{-Dg3Kd+zw38 z{s(DYogZ&W#-E8@Hu9zm?hmXg3mhUw-P5uQaxMi$FZ%a)$186UL-266y61W}SW{&7 zDSK3=ma<#u5o14;ldC_RZVEcc^UM>Naz&f78L}+_7~^&wo?{-xpZ%Vq6FSA2f6x1e z=1tlvrg$no_Zc4pk&MX4tShfOaQQhqSgi_v1# z+&9Kr5u|(#EoF{TM)h+xqKlA-9VuL=G>ucE)!v~5f4EE+7o6fsT~(SMcP*yw?a~h; zg{^FEnR6(Uw9I$}HqF>-<`gv6j-g|oeA0YlY_wXv*lzem=}CN| z+U0|-{^bcvGm8mn4H3js_YfRz=rd&jb3R<@ld*+jtZKMqO0&JvRcckSVEf0$VU$-@ zY(hl52lLZi?=d~PO^pWKUwEhUF^3)dPjlV&XL<+UVLQL0X&X-bI7mE8Ql1RLTu(Xi zurT6q68mD!kI_OkVg^>l6TN$RCZI&u3@d5Qb_(!&W)%)hv7cbL&wY=5QK+{M;! zV@3@#oG7$*bvH^*pzXarbMvFl65|GpwLG29^7~^IKDS?rNZ)L(?vU9TxXm+m&jGD# zUt7cpm#JU&OuQ40_)h!F$&=_@M;Mc;j&Wt1BHq&)p3zZ;RPkb_U$)v+e;-()K?4{VKVNS|7hKuLk+-+}&i}Gk?fesWUo}GgiWO&M&yzSDJWc)yOlpBhct0 zvv}t{3O@?P{M6!o|4_4^Z>e*O`O442)CqHPtJgW5M zj-VaH(e041* z-yqSYwea`eZOBuZTv8dB=wKc%bb>szQhpzQVvIQ-MH|3%9I-m|^UAz)+nSqQN&abO4kfxf$0;h$R`0lU?hi+VE8oiKz8ju7 zy0MW-Eks{>H==7@yDGdmM=9xHJu4){Zl^Pj`l7tP*j5RWbi)gp_zH_g1=ZN(s~UGJ z+I4#@WoF4e5w?Y~g^W4^xt)8&)96OkFTXHsLfShja*?9d$P6eBH~p&I#9vo$QI@jk zqHIs@^)g^Zt#VBJE_9W`H+D21D?X4(>*0Kp7x12zX2y;vInSQ#qsI*7;{+M{L)Q&h zi=>3t(XrUQ9vp++EROFi;#faBYWz#JK{UG{?iTz~6zR$7EEPRO+CFHR{OWujpE;AV zuhHU}$;O=#F>LXl62PNY1b;7;|EO<#HWuHMz3DF5K<({587Zn;_-Sz5Ln z^i?Nj2;CWY@Y@4-qZg%PbBg%w>G~6UT?@)meEo{P>j+AsnHM>V#RqmRBcES4^px*l zYp;0j@f>VQ`@*QY!PW6h+e${S=aLxtot1xOaCfrHx=QPoc1{fKN{cs+O{~3hB*wCo ztu%pKVwep?bg?U3aDtcmCL6foH;f$L^~-Zfox0fIucUh(%f16=xSz&b(Uy(gGyAFG zosWxCkJSnYr5g`WcQ)?s!+wBE_i%bMkGQH<4$+ zMrbjJrjD68?ZKI@{2DdfjQtAzy=VFz-P6w_e2%aMP5fPFSP}`rn<-iyO}qBKzvr<# z=GCHwJe(qAmgcQd|EsBzREC!5h`JEYP%zDimdyv&Oe%pE(? zC;AZw+%zM!u4>$f(5D%E*;F8cif(z*bEdCp>)4NYr3-FyOb2(tfj&!>z;(A+TWe9u zNA4s<9PJN#l6it-zMCYzhnIOHG`>`K7=vRkTC~>UJNf#338t50J{Iezj9%#5cFg2{ zXU&OzRNqic0_AGNKF`n}+O=^LOUiDa5NGGNJ~5b;KEC;q{V_q&pOmv)+H7qX^THgi zB{YFdVG1jWl`jM(SYMmp z6sM`@FB%)xM3+Y26F<4^J4r}BU30lG?MI+efQ5n4-`CN&Wa2WKuCh50Rprz|JyB4@^Mtrb~GD%IK2GaquwPjhx7U483< zTdp>_mYw|)(jYN;b%+`^n5&UH#)w1=jQhw~E|yf^b><|d-LJ+S8SQ;vr*)Da`qPlU z`5xuDLBqGqONf`vNexZ{x>^HE=e_=nOvJhwndG+!3ndfY7#Be*ShzBHBUi<9g<;lY zNG`Kg8ceq$h}_e13u}|j9}^V&I~xzzDvs2=f0H6YHrUXnf2HB?+$vOk9;YDGrP}99 zQCy@lYTJxU?erXDc(21cU+=dE&#=5Q^~GjXT~n`*HK28N1il?@Xl<$-u75f(bGWuz ze7<0G1*b?ZQ`tJHC0RsA*5jmNQI_Krn|6-hQ zlrC!Lo$T=xZjZcg#I%`1?XyrlmoETixtad)-_~Crt>6b{x-1euBNtDVN#*~Z| zL7Ed_5?wA_aV*FHe+u<(|GuEMkRF{5slV+8-puLeR@JsR6+}oGNiuHbyEa`z9R6cy zozlyLOAa!3wMf0?7NTTra)f8hirn$weYU6=-_Pv{ddoez@`lAqm z=Rbd`R0CJUYxwOZ{{6t6a^t3HaLn2$I7xl;!9OHGgk)ONk44Y~?G2 z)LGm(GoTo{B-feg=f&5b_I9sICoi~>>X91?WppB#I*uy&qaK4(JNXsFC_jm;^1T~5 zcZXyKX1cZN{PAzQbY_~SOQXqhIyQEHaOAcq>0@uFb7$c_yg&ibu?JB{P&T zM~%;92Vz@e?~+JKH=5sO8gQG-^-OIvx*uvVSRAmHJGbiXJoA$5h(v9L4^EFK^yQ=a77zuh|t; zoef8c(vnBYE%0$^tKqH!b^i3Fa-1^e<(DggvjzQA^5q3Ohl8<3%d+{(AwR=;mb=pA zzStdMZCbs!Y#{c-S<&ook!kZYjT&5?Y4>gX^SbR1<$0gtf)>O^m$8ZZArvu+M+}?Y zRY;w4r(+${L^&xFbmxl#AOF(k_#e*BBB88?q1LdGSSE2E8#ygrE5A&to@Aq&>n#x1$TtDV$lc7AX&-l1VY0JXjzhrP zh-6>VPY1fbg2NB|-~RNK0QJ?kOTJR1D3y_jmFI%sKjxKB@CCwrvh+%#Ir?x|${fqu zt2f^;aY*7jB_gt4t6G-*gOy)Z%O`x0S4R%sL~#g;gS`0-M(C$OGkCsKb=#b`#&Gj% zUK#qrFgk^;G<$@rRhH^~DqJi4^XZ6>NqX9B|EzvQm<&l<;8`Y!K+ZeYbPSq!AFGo7 zUXjMt$s&hO)_xxL+=EKQ4A@_46t9t@VTvh(wGoKr(_xgnpsn*Z=b3fQ4N|noH+x6- z)Z;?P1|gP5msfWzyL%l?IXkyKi%hT?BrkW?G*HNLU-8b%XqBkUv|D(s1mv6W{zzZv zON%Xe*aYi`@~vfmXuS;^y*Y5}7on*(Ad%GOdY2q}VEPW#fgYkQ%mxeWvq^E*;54^p zZr5FA7vU&+D>tX#`Q}LjmAQ_4+k--BGY@lcW?p>1fUoF%iszOi6iFSGy{FT@uvRqt zp4Q+v`ZJ6|)^U7jitfD`j?3F+^I??{+|#!9MVqhP8?%Ds>=>B4n2o$oAIuP=IMzL# z>ovVShmTkNyvP1?DW;!furWl$vLbCve<6rjP|=@cSZwbi*IbTR{H)hDh=E_dkJAIo zNVT_}HmgQVk-p;P#~-b$6(f^eiQauwiUN9BofDpVW98bH*u#t{|2;n+grE|KD<&Z;9Z&Ti7jL}z^>QYeIQSFj}M~!*eJ0Bd=x|Zf}uBx)jlZqe1ZOj?u{~mmw z8X@Z|#R*(m-bNtHTTxu@*|?;=c{<2(IAt7{j>)W}?ha>m(E}OE3YjYT0oPh z1#@~mC-f(~x!O8{`@shOJP~V3R~BQ!q4e}5hijWsS&$UmzHK3BxX6e1Gr%ii-<77p zIk(|c7g^d`&zes@`%sHMVesYG(x_`8X>>DvWohqkl`;wbF7?i^XO@3IG-_u(FKqa} zkv<=`dD-$xipRt_E^;-~!rO-#+lEq^?IMx}BB^rC#0>+YIgOJ$eJJFu1NNsHpAsd= zlI-&4J$aMP>y{Mgrw((-2|qNeM~yoO z9Km;E%#C9Pwlyx5&C zaw%@BEJiu2SE9Q5JE`~1yjl&No|vZO;^_ZXg0>oPz2;pzt=Z)2N~&0pk^jN(%@5?s z)CNLr4EMmZ0rtVaCsJQj_BY@gh7MU)^jA~Q8u?ULDP7o|Rv$DtwcOu4LiaFOX)b(4 zxpAE9Y9euj%`Rt>q~$w`pOW98zo(-Qjg8ax32uf}`>#hYs}`&D##Nh?$HM8`mN6b5UZ( zw{aE=>ZDu?Pw2GM%t8srLcLa)PECl~&rS@!N$-6MeLGc?>it@f_m79q^M=L=gY4ki zL~YyxuG@*P*c!U!Ve>iE$XG}Fvw}dpo8WF>L3x95+8kSgA${bt#S?YhJoAQqOI1qX zudp(dD9?MrgU((qF;4NzdKl1bO7%{=>q%`xp@+O*`C92Uor`?LtucAHqFCDpxI4lU zQYr6$w{OYGH|&a&kY)W)=LxT>%aYZENB!u5hhgl|hWS&^8v0eK!`1YVkD`Hg*t$W? zfmj|#&_OFOiC<_lA6yoo`hqE`bU*sB&|f(dsr(I98$JZzu1&)I4hgE#mf(JLp6qg# zK+JCLakyBGUlN(HcO4rfaehdzJZ8NvqlVJ`F8;In+h$-aHDYu*q=tq}!%2-j_`XQT z{SNrq{Mmp$?|w9V&6|dc$fvn6RkNO9tdR;Yi~-)VuIn=Rhj; zFP$`&O4%R=A7b10o2@Za&uaTzuRVScK`WFOs7_)IN60)>&LNNyr{)SYd)%-!=-Irt zt8og`4-hogp973{6UGl#_%5iXjn=w!+~)BgtRRkmuq!$<#U`6qA;f#O7*#dUt{3R{ zt{>lbhoSksz;JQ$jKU;q&$EVIH}qCn2Q6YpzZK?uPaIrED{+2h4si>AD^IL=HWf68 z$6%iIn|!6#k+c))(7RW+^*t4CMJv>Xk4Y@fTzk0Z$sj!#UNTg>l5Ql3IKsEYht^yb zSxH@*qO++!KaIS*2eq_fQ-A*o{iWwZGH6XsV%TlCp|>q3aLjjMY(&kgX5F|_a7%>+ z^4F|Ht9Xb?RhQ+*f}%t@r-?@>+>%26)1fJLY}%=1H+YNDwz&bB8yr9R@-#*;H;MW9 zDL*kQsOX3H`^-vKmss_ivVp~q4_A_LZ6g!hNUjxSV{9dDHN8;q*Ec6;`rU9b`+Cwb zTtbuo!^2f+V{hJLRy%pf&N)mgeqm!9@#Cj5crnU_u_(DcM0}18?`zNiO>n2lt9FE7Y5u0> zcm6HBf9->X=jH<}u`X+q`wasmkGy56^^9|xqJmAc>J{}Bl*T19T)&TVO)j^l#%rjE zI83l#txPJwejORi(h^Tkiyz@CZ4}(t8yChN=1rW@!N>ctvp73QpH220Lgn3B>GxkQgnQ6-fGf`gPJ+R#?PjlO>Wji*w9Yg?3)X5KFrb~S5n

J~G zm)E9TrTLM{R)b^sqf#i&SLea;gL31KSmpiO`9abRPSm}vu}W`NQzBmCMw}I>Z$^f~#*{F^L-#wd<1xgbA69UPL2s%4$I zNss|0cEjⓈ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 IQ=^O1f3EQ6x&QzG literal 0 HcmV?d00001 diff --git a/tool/readme.txt b/tool/readme.txt new file mode 100644 index 0000000..9f5b180 --- /dev/null +++ b/tool/readme.txt @@ -0,0 +1,11 @@ +1£º½«terminfo.tar.gz½âѹ£¬´«µ½evbµ¥°å²àÌæ»»/usr/share/terminfo£¬²¢ÉèÖÃTERMINFO£¬TERM»·¾³±äÁ¿£» + +export TERMINFO=/usr/share/terminfo + +export TERM=xterms + +2: tmux-3.2.tar.gz ΪtmuxÔ´Â룻 + +3: tmux ·Åµ½/usr/sbin ¡¢/usr/binĿ¼Ï + +4£ºÖ´ÐÐ./tmux diff --git a/tool/terminfo.tar.gz b/tool/terminfo.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..56d5546e067edf4d634dda92eb5ba2a5d3becca9 GIT binary patch literal 452729 zcmXV1byO5@xTX=1ZlpsxM7m2rkPt*#x}>FZX_W3xDV6Sa>5vxbSh`_p7TDdn{O-N; z$DH@foH^gy&+~rY8HU(rD8lWhBWroY;(buKY zr9$HP6?re6HH``K1`yC7=mcLp@6Z(UZ?Gp60li%BzB&s4fVCj8l!Mq?pJB(1@#L@_ zQH`U|9p44?Uu7K={fKhm>To%T!ixDtU5?h^hc%Y=J-K*OTOq@O=O1KNlH>@QaD7Ln z=JUa$M5t!AP8aC6J9{Hm{UEAW1yZ~^?n15=!5{S1kyv@iJ69@+T9Ez^ZA9fSa7&us zH0~|+Q0WcyD!U1ZuQ(eNqg8wZy}OtDsAl+e^nkV&P-}Q5!+AN2~S)HK~AiT*{-df(cXXLii|FyR~JlQE9F-)w}Ocl z0bi$ma0PE|x%eE(0*?!}Sjg96NRM#bIq=@>Kb^hzO32DzhhzO9Scls^6iqM1`RnRr z^i;q4w4|J)jDtASinD5i9QO!r9rLeY%eTX)bV;1tiE{%A*evzMOW-GL=;@@RzUj^boZ!kI`y7sctgZXACuRb$r(G5_z zbAMe4SsqjT&>oS?qj?q8nFRuuISaI*4&2%tH{mn3gteikM&|0yD@UnhI~qpQ2!x;Z z{N3I~KX{>(D)&0VmTKZz&U+!NT^{LX8r{L7B^@tY8!E5e_&rYvp=|hYZHKjA-fy_5 zmux0bLzD^J59~fk`?wk}ffs67!$Lb?%S)u0{?{=eaO<*g4Dg7&+y%?LegNLB1N&Iy zzd+sdlr(%6^lz@gd%E!^h}y$I_%Qh|)=KT+$!HE7e}(>jnW{%?`>f>?UR9A3qu=W5 zo$ZR{ufFJafjH=6QFIT*AMz52r$XOgdd<`Rn?ozl#%v6I`15M&OKVJ_6g@dAj5VL;QO+erlJqHcri%h-FB%AK>5pJBB97XDGY1F?I ztcG;Yq{_F}DU}bSjBit3jPUMY_+ig>Nxtm>2F|&qboWnqNzAy64u5)cRvf1IQ;fCF z&z=xV5*jd8=|bhzSGc@eiej~^Nb3zMg#S{m=h>n^Pn{8ZmSV7c^L11rm$O7Cfd=D! z{;B=HkDnca>~sI={2c7^`gd8u6K-^Ze6$yg^iL1jm56#km*~`9Q>{KFo2d`1##(u_!-ajsxH@O$={>KihA!i!?(dfahArHdV__4xC!o2fJ z9~%uA8h#DVzyElpeE!}LHTe0DE3EV4<{nHp#0^t(K$l&ezIYSh7IY#98A4WWU4(}A z?kQQ?+qXFkP&rdM(k>*@iu-$7GG|M9pTOM7zF4vc{lcD}j+sNChU>*m24h#s}Oq)DS9^qCo|YY)YZC7X9)#D$E)o#-jE>q#KvSvP0F5)99={R&%mAOFao5!`nYzV`#$$xb@LU@ebIv}qHguvT`<;bjCa z@}y0kICDeJ26>Fa*YXyTnDuqN6zbvFqAN7CH(ErXkH#-%j||iJf%xnhi@O0tj(aq#;>E?1yaA$d)r0e-^t-g?^{!tlYrVF~B*Y)y?cka-E6djF_+;}#PuVp6u=X-rFE~da<}Uf- zHw*f%`gdPZ1CrQ?9n|X8FZe4rOD@&B-np6ziZzGT?##P6{RGfdN9*W?og78s$;dAn z>hXGCvVW@c04Z*PrSU$A~M=joAK)>?4iq48NiL z>nGXG8uix?MWZj{uN9|*bZDONCm-y4p7!X~L?pK1N&n8PJsIbUpx>$tkXYRT5HHJ_ z^ALb_3P}Ojpvi<;pu&B*-uE@ZQ;qbM{d|=HeDab#Rht!g7C%o(PvuvBJy;e;R z;zS)#LBFnQL~5^U!n~LCN>#EBHr{owbJu*ZuQijK!L~6x`?xFg&H41Y+&eCVyixJw zUp|#Iw=MhL-T;;1D>?&B_M!2ZB{uJeJSww~<1TPi%{Wc{+lUANO&5H3MI6(ssi z%SGR+)TbOWRrgtaa_Zqs|5r%A`RfMj;bgNGuR9snHKa!N+A6~~sV5&*iINf`RO5OAfQ-!DH2hD zRu2e$4luYGbu-K24E$4~-W^ww;ndB(NcE$-c@CkS@M%i>hLziw;m?$YAxoG??=sGb zr2&>_Vinh(ad-=sXS$t#lPmgm-c3I5G_E8yc!8juMnN3*`^CYh5YMw8jek6>|4{T0 zQv^JBu{^6dY4V|P5MGVExI@WzeGrqv=5PF0yR;A}>UC-?awpOOjxg)(Yym`X)5d0X z7qdNhn$w~t^9{3|caLk+f-kwVA2`bjF4@nuUb)H&t3y71-jr7fT9O#c{xubSWlKSx z0d(k8Q?reg7(8kTU#@^~8J>6)*QmD$u&r>(WpNDHPq0rsZ*6bRZWw7kTYe`#f2~+6 zMR7_vJahDx8*?JbY6hu#hJ}*)6T>b)q){;G7DKORFwXcZP3RGNIG`l~CH-=EdRiExwU2#smiiLmA>M%e1VdBvcBDfs zt8lu@W|r8jqym@&(SPI1Mu=|ipA#I-6Pi;vPNdJ?1X;6fJ7!fEJEs_tFuuqFM#!oM zzkRR7aS@BW!D1+IVQwXMtd_r3L+_X@Y7*~O`0IF5UduL-mLcSSrN?Gvd6?m3hZ=df zigWdhpy->TKhvtWaq^zX`Q!jeTc1%&$?2|tu`g$VjDP$Z z^t01I`OpH;u3!RGc;PPq6>27c2V&|5U_jeF20`Mo0ITyWut~AP4OI7CcbXsBF(4Y) z4x2iEgu%evAKtbwZ;@;S!CplKJcUK~qgNaIXx~sOXKbVcOe=eD+D&zx_Arr^=s{T2 zv&p1c*Os4fl$vNH|8cuWI_8d|XPBv*LN%<+@ZfXysc`|WsYNa6uLec3X{X7New$#) zh{+ev1cIfVB3>?H7!wJ%^lBCbC>s5kSz@}BSec;H8Y!#c+-AYF3a}laE!8dIn4V20 z5kT7(KpozE*+#C}bLz$(NN^VVxPhuPOxRy?E+&Pk)$ehR)`h{}zp$wXd)Yz0KW5$LqPzUGAwTqa7>9P>Ctzhtsvd;$Aio(Tb_&j!#q)oL)o$G?xfvB{E zkxh;U&4H?vI7wNa2HkVQ^Cq>3$ngvR+?2cy&_$zSdWlN0wZ zQxZXVX;^7!X}EQWb=VI2D4`CosuyE5CMU|@T}EEaL)@f{(4CvGCfZVNc_Y-nYDphM zn;x8k%I)G_rUEd(OrFHqOrYH5%RLm={eEf}upZb2#JK_Wwg-^WrP;;Bz3hKui3w6m z*#ueGc?s}rgTki(&*=XU5G1&D3DBkkWzxt1qkRxJRwm#=^fdLon^if5yWS# zhK2S()G|m!r$Qi7|3Q8C3apt9gY(M(u~WcXXbqPY*?r9qQlowR|^I+(G<4qPW**RIB6OU+#rgG4F~W8KnmL z7$Vs>4Sk6Z{6MZfK+hvj8Y8nfVZ28Tq>D@;TZy~Je00^BJ!`kC;riKjbTchj@m^8q6M zIaz>u0YByH<}US=alxH5_%4rqoRp8mex$6A#G>7;gX-wt4+-dRBjvAV&z{{Vq}CZO zzHGvw>-$u!+opLy;vdnkU_wPQ6oIpewMnrV;TC;vxJkbmyeYqFvH5EA?WV(~-{zZ5 zn@#=*FbUGgR}mJRdIC*HMUu_}7gWMX+CIuzpH=(8lD@m@q*#MXIR_l0(f=Sp@6u>krndhH3Sy<%)3 z%r$=yzjS(?zR3(njZ+g;-4FA!W#q77`tn1CutrR2ehETQ%Ta<{NqYBQV?>}%vN(IV z>$s~wEztmV=#{Im(BG`0(hf;Tf+(jBr}2~kMyK%#f8+$^f?D-?=!B1@S zIfP1bc@IeWrwD331#){I)TV%WUReB6*Hw-NpgxN30da?J%O(I~$Zc5S{|UL`LTpHN zGBEPP4-Vv5A+Y&6h!$vl$ zNvH}cUtC}MBn8X_eKozo5Qlgq@9QK+_-a{Yx$-VkkgN{C2?OXkzhV~Nb)DYlM?dq3 zz}+N?vRAVBS$Fx|;sqP@x2^Jskwy44hZ9K)uDnG>or)Nv2{$cSN2H|2P`k95TWu>@+tES@ql=o<)<%V*JB z81$juoF^VL;Hs`D9OKx*U5s|eEvdgZQHnN?7D#^v@8#T()tER2X78U`kT%;=QY_$f zo~ayMCKq%ZQX-S^Aa=CjXrGW@AdYPkCP$Hsy*?2ah7RHNmPQ5tXRyk4PS{e zwxXEPsZ-=A#;rq%$b1I(uMBT)?w5^@KfZZfJ^JXU)2h?#(rjdQ9A%_m#T{drf0yqu zmH*E6ET6Z3!hG`XF+X5ZdVh5_d$oNZ2!h;GR8%MvQf`i{WxPuxfdDaZ13>ySqBSh8 z02Dc;Z`8`;bEirTOi(u>Nh!`@vV7^l3`xVbZ#~is-NMPac7Z-9v&u*jpQ-q?_^PkN zyg%lz4ew2}S9Lv20SA$}6thyZv=T93;!G4}C zsu3!7xh%<+OnIu+x)wM*=+YIgtRzw12N8`wy5AoJ`$F*DUeC4OepPCrZs{pG$2fo2 zHPwT6P6B7>!dls2I7bb9Uf8o=7q0v}%C#(*1FcH`f*WgNeZ)&$aT^(vIf?!uVdz^F z2!wmXH@HjHXXKpV=8|x2F}Ht9eKzLK?VK;-}5tT?&bnchU+! zn5fi;Bi94@q6q)WmKd-5MNknHQspb6vg>9m*l?vgd`Kw!LYsd0!B#t4JPm}8a8360 zl8RQL1VmVWVD{FhVQd~II9$gY(at5*C%7jN438#gZwf?v6!e38H%(5@U5FswWpTMm z5V|}&9@Dxnd%vjhXI~^b=FCY!$Cozmt38%A?Q74nI-^*74F%pEsK3O?_9PiCMP!W6 z0|~V2EH@9(STn#hcn~mF@TPqMM*4U<4AWPFRIv6dz@B`}x^1rG(-WNemCF0*!W_fcrt z5?({Pgzf*yFI5TLD!e>U)*ha&_03+1n%5>=NUw z+<`ak^^sPw>b?pXt?R6Y_DL`QI9Qrg)s^Gfb@4D0bCf^BNwO{#VPX&#D^H4ONqA`M z`M7N#*3janZm4*5X|8BEd)boV#$iHHgVz%A$0&TPuXw(}%`rZ$SJ_@CH#R0WCORfF zCNZW^EksQ`J*Id@tAmhI;q9K0mQLn(>6GUSz~yR9*Uwu3eLdm^a`^rhoRLI_Pyl?0 zBbsi&c^`whguDJ>zsPZ1QJ7I~Pr&t8VM6E#5R*OkC%Fr|jSe5^kR&nre*3kAu&GL# zTwumiPbR~S@fPmeZam;nVDI4HA6Uw^<>7v9L{Oje`};RkGd->dD%x10H>5$^l@WWD zsI-+mGtUw@m(^OO(Pzfa=iWp>^7!IY(un)rgscPkaVoQ#6a2U?DW2 zi&>&f*(2amU|N(fnFlA|JMuDO`bv5o+RyJ4{*9$-B)Poz96{)x-)@4cvjt{H1=?xk zx&ewLx?xqgYm~XJZk>&x2Oj9bbUCr;>HOu5UGZ(MDu|ql(i9VGz&f0(sMVb*pO-{> zwRS&^wmUu63aNQ1YC3jav41yv1*5h*Ii_>CM;;w6a?FQ^M-%QlhIQgbIkW(iH-k1G z?iVN%6TO8#*FjT|ST!*>gL;G2|J-UTlGTFfiZRWfA*=`^(NcyxR>C)vHXSy8YYss{ z0ymM=+A(*KQ{iaRI`G_#tOo6JS|z?)L9b=zM?P87A?2*yrH|=>?`})K};sN zMlI!)n>6nsINuQaoaZ1l$0BWFF&H@p7XuBM3D*8+Km0T9>uUl`2oaUOErSk7_@Z$L&c2v#TdLQ zY?6CP+*1nDvjA0C@@X$-D7x`vd*pnieq`$mMdYjvotfX&JuWFa;RVDw+pK+ZDKI)* zQm%@fG8;s!s6PMsH)wT0VJNdUhx*(6b45mn^_QE|^N5PWPkp;T{%)H%A3(}?T`yJG zzu}p@7EbK6k6}Lpgl69}byfS1?`gW$+$Rj`xdg9oWVJR~PZ)a8R=5{7egF0enXbu^ zqk6K$c)x3@qevX^QTol5$ghH&RhCiK0J623&!>j5lnmgeK>XSYo|~A5#j@b{TE<5d zHy@Cp_AV89E1dh@f7xwDA9^^Y|UYB=O~@zPVyU;e}Gm%ugrF1cJSFvWWUT9rfZ zAsn>v`9WvS1$%*%oaxKFHI_MK;_U9XVIV|(5Y!NH z^27NKNgIrN+5W;Z$RbFWDW1HgwIgq`Z)h(k>G!aeHNK_tWA>ypqt=br&%>h9!mgJV z*MF1>-6rUHU5JG~-CGy@?(fi74dP8B_}w3)h&h;^lr72c^Y&<);rn+Prp6m^ne-Dc zs0Q8|00=%dz)-=Phy3QARmEXy&GX(Br#afFkBJwl{<1Py6!k5heAwc~u@Ml=_nTB*b;YEJRHE$o)3?MthZzJ=;F~$i12B zum|542N|)vuvzUZI!8FlO+Ub~L`?mE6hBk628Oz-^^zAR;bu(mu@Z95< z&nP!mUC<(tNL+mK;+YMqNdCn4#-$TniBC2m_WB6eoPVC#{{*};=T?!P|QGmP4yg`pmZW=n6alzI0=NLVS1KoRpW}|DqUzji>8Z|eU{K*+kn0|7 zYP*{Qt`94Gg$xj`yDbj~*5l40mFH%g;O{Pi!+^{>pnoCDTMR>hE>=?;Q4FELlb?Se zfZyNYO8~T&w6q>zn4&CQ1@xNmU{H?Nld#0%Q69}3)SZklA{cuaQ+

q0H1+YvMpkFztFF#TA(zyB~{KV|D3se_j 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%0D>jftT%z6Dtz<$8NKJ(4u|Mo3?k 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

l&+5ah0J@*>`^VY+9>q|;ODeoD0(_{tY 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 Gy5QOOy%XrkTe7D@&PQ*pcv~N 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/Z)Phy2JG%lfmDV7VMq6 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%0D{ma{+E7-NxkbVJP|l0Cabnu)<4gE&+@Tu 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 z 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 ?w57 z+wJda4KbAQaO>_8|Eqs=zAa8(6#E76D8{F&SMy3TJJ3~r{V3`1=Pc83W9wk;Wa*U{GjxIK}%P9HlCI~cZ7$>`g`6?XUO^rxoQu7}6@Un4DHWlX96`}3X7Z2Nz5 z-JtJWF>*=%4mn_3kB{j-^e&yLwV&Vcr58WU-u}MUY2K3UXLuKH9OBKcI@255e5O4Q z^-xHcIlEWo)z61pB1h7w}8I`%oXewb1$wx!_!<(PN>7iSJK~yZqZg&oBP!P z&iJtOG}a%dvE=UdWkrcja9eXrWgRv)?MamS#Pp0=4ld-&qvylmO7TL%<<^lAc(Klm za(H}zZx0>EIcCJvs(*@EVsD~x2Xv+K&QAEFL4WSu#5zbn6#sO#?1;a=ps+@?CK@ZH z&*3_F+iK2aV-2Udt+SJp_`QTW@pje(@fc?mHb=bW?1Ob9=bTQgJ1>g;bC3(Y^wrrP z%l-fPA^l}eBjfLoUxC(Z8vko79hCSzKVt1f9Z&Mqc;wraLVteMJB51F?1SFJ`bBdM zIKYKu2mW-_m!dxHZ!2#Zd6UHE=zRb=E?BS|bqS9n_{Q1;xoMD#@|TrPG|tCP3te&+ z1mBe(yGpmt*f^}Mq-*PJ+WMt!i&&-~IGf`|@N<_}K2(R`I^Fh@{Y(0%b&KSJ^4UB= zeW#IUAK!#G$?!XVhzunzz~PL#0-T*pz9-2S-j@^FMKw+u)6nmtV?@Z0%l%U5*XjBA zn~|Pk{_cfdf7LX{Ta6ySA6>sidNMd!iydhV_D<;&!ris#B+LWuQQ;iwfFFJV*!sp3 z{{)Tw?RdGnKxhNLhhG>ptT}T3c}{oe*u{DQon%IUV{~B4+aI7^*;%zV5FBdzdD_m7 zWley+Np^xgoZ%xL5)amd=Ku$Lh87Ndd%M;wk&RSisu*bP8M6-)jA;zqOZS|_Q~cr| z!7g}JwvDw<4{cun&fH#Dsec~t!WnDmM$ybqfk`qZiw;?A=V`J3vmmVxnW26ZGnas) z+tFINulPIcEJbQ#Y#@t%5|l|pbCR=Z=1NIsm}g3Ab6M<4TNo?FPi_IGclnlN?>B?p zxrjDf;L(ER5$cd1at2u{{qd8~z3eYKqfPDU?ynFp2e7}{cD{A?{tWB$<-}YT7gS%- z!k&cS8cjc6rJv$o5i4)T`~A>4a(sH4J%PkuN6l2ep+UZ_I%kOV^ubXxLU?Wq;o4zK8}SV=fq+cjNuX1t0TH?X=VWJbW}lzGvw< zUErPb=Ydt)iwWsS_Qr5-bWk3BV|r#Ox(s#==J}(Nm2tcNz@AQ7;az-YNspt+ukr+z zBGva<>gqVh%^l5s&HKA3qjP?~66Bkk*WRtPm%-+8WSOrAWtu4S8u{DVk8pCM+%M;w z^y@*`tX^L3FCqOE(hYw)6IebyW3h(_PvKc@p+4^H42C@$&htc`Xb&nYza;pY&fSUk z4fRg?277bRW|aG_Qc?U1*gLud`?7eeev4;!MUC#S;jB%gJ6>wCd{5snb$`fLLfuY& zM)ko(_0!6LdG9wI(vAF@g_YA27r@qY9a{$@C5L-j6=2HB1to)bSSM zi?8EEi~B=0#e0+_#|Y$iu#!V83M; z%LwfhyzJIy(HOqb^-*u-N%$jBzw8vpa~7QNU>JukVipX3wND}+h$r0CgS?lGP5k6# z#!Txjog4WyXZ_5sFY`_kALEP%?L&2(5AUU(?c(M5;OVZjuhBozTf1E&!gp?CocX<` z+1?Mg3E1Yw{>YgT(0|2ooZF8L0QJ)7>Qot;%QFWoXjyY8F__`{zZt#_?Q zH>59|^Dw5{?%9+q{HE;O0q=kA5%S3gj4>_e?94vaT@_ulg}-aXPq?Fpr{?SXfK_y_ zGpc?CZHr%gm%39{J~1yTyYF1bPo(?EPOLm_NZ%9meB+TE$P> z{i?O|G*`#^-(hb_ytVcEru{SF=_&&+Vt?KAa}K5K?}zo}1 zy3cpWy3hxu#GmFz+Dg$OXQKbb@UKrzVyy?R;_!~tB-1m8^EEc$Z?^#01*^_86|CYh zEf=Nse+QUDo?`b#@jD20OUdQl4b@(DTh!yMiB%fU7n#$4FF$luQwYAKBiS`R_*NPD z$ksr=@{7C_T#M%{fX*I7PZl1XPBq>?pY>$M?4K!}H%p9Zl5rQVG#|KAxaVgUZ|;1q z5Lb#h60U?t?R(c88}gr0|A9B%*{qVs_ww%a?oxjx@8U_3fY01>MQ!KZthaIxyM2Hb z($QrWNk@4X9dI1H2Kz&o=E3FkZyfh0^G~&WlR^=|COb0p= z`ejY@1k)}5tY2Xx(YIG=hq+f1hn6JoW?va;i(6fSeKx+)PK|h?=7xCIK47Q~Yy&Uy zU1{{C#z3FFq_;)W`2M0_@vS8~;WT}pHo9&6KK#+zqT^4~x&$28U}r>s#LxX!)&S#7 z*V9W!au?Ak{zvmahX10@?(N6fn93)XjkNKqKl%!LEz3+UGa}OSY6bMYg5R{+0l!n5 zh4fS7iEOv=eVG+*&GVfYdC4<6_%1yU-cXbZ`q42V(z8*#Y9(=Tq;;JVLGE#WEqzem zGpE!d4=PT}kS^Tmo5!~VdRwN7yI2aM-oPK-dL&)Ky@;f%9_9NQ`3$}|S@4Y=$@)Kj z`G2sNK#QmGj95RbV*e(!h5n8Xh@TtlNc0iOi+_90(K!iJ9@SKpPeCgNxa1MZ=CI)Xk2GKtBvQb1>T(2XC?l> z|4!{-H(1-wRNq(H6oLB(v zp_6yy^VF`r;@D~4Yt#=--n#=l=uR@#|G9JAe6qYCXiMoYuyzuzN7EiLK*)x2f7Nx7 zwl%C_DlVTrOXrxu(>7_&yo9XDOf|rZj!%BsMJtDz?rG>KFT<ZjVxIc&b#pY&GbvSiNXs@g8FAK zH50Z{f6CV1ZtI>H)Sa`iTmPm<<9#DM6W~#Je))-L+pT=xims|Y$1}%yO5aD{(}$&x zu<7rRego;@*r;6G9B;q9#W#)5Gt{{#zs=Zj-uB?zKIZ68`2GdHhw?#uZZO`LJ<^@W zgtiFceBTItdazycE_trGqSzYYdNDk$p16WW{A};W*X$bpv)|A64=we_e+9n=?o4X2 z`a`+Dp6~diOk0V~Uw-_HSwF6h7WeCpBaL@>_WTpSb+p;VvxS({R`SQNSBcIm+2g7u z=2hvHhI>7U6Hf8Hg*f2|-zxdmOqzVXQsimb7Rj+#%^985Ma*oB`5eL5H%0!fMW(BY z{KdbEC*SMNFzMxcnt4}eO6(aXck{i1 zZ)tqATZW%C1y$~}VN@VOiKK{Im z7oThAc&UFj&+r_4rSJT5q^%E`t~TI@8M-L&r?1zqC50j-;hx{qR_3)oxcXcGuWn1hTxzzsyX{!IVpq=BX?@e%> z01oMj`u6+a+fcq~y)V9K`Ep;ecMEG?a8$I_j?Yp2DdD&94ZAKEzQ-^gl4mVe7M1ub znJ2O@>f2wr_gnU^Yd8l%^{ef8Uzzt`*zz-1Bxlt#7ShXhpvyIz)#GL3lzmmU;tP2fn&ytS6Pot>@3@7{iPr|fL=z^Qy!wC5ojzJ_*XcS~Z=ics$f*EkquGmMNy|F0z0 z2mQYVop~?cWIqvaQQoU73$1Ox51WFuCr=Qroo%v-7@>%1*}&Il`R1CPW^~KFia`qDm>0m&haIce>b)iY$-s);Y`T-jC4M!(v&W*#;`h85pI?hF zczU~)H=NJr^4ssC-@?(KJV1Mm$@>d)*W9b~D9ijO!7bmeGVl?}pzWjKM?8<;rFDL> z4=;V&^woIhw>f&CpPTO4fu6@R!+LKOXAb-DCzZMU74%YkuZ5>5b1Q!32}O~yre|Iu z_r&0rrExp>pu2M`#G7z6NS}H5(ppgCDxRwT#e@FEh!u4-0F9e+uU~c$=q#)+L;loN ztWjIByL^i{gh}XkqzPWZ_?iDQZ9nC=TT9>{*NLu$E|a{Um@($*&$pw$qa$C#@0a%E zwbfVdX?>R8)-BW{95#YO(&uL7zX#9IIb5+q(>R{Ba^h9Vr*Zwv+du}C_)pNL)+j0? z`|xPVF=Rz(kGLPbLGMoPjrZSMs4*GuH;_-X>h`=!{TOo;JuUEID)--hhBb=oYtiR; z{^l*;qK9;fw{#^P#z$Ao*NNNe&(S$+f{p!OxA$7= zw_CmcgLdz=jyhDg;B>r`c?a*{_gtlGe`eZy1Jms~Amne1&9uC7lHFl{CU??j_M^hz z=h8p%NA>NU#mqrsx842{@k6u|v_03S4#!K_ho+7vfKhO6+4ceatv-m(XclcLYPnZ? zJz>5PYEEXS5`s~=b4^Z(f*lNPcqoI@MGfJiTtnByv07AJkQZt zgt?oll%5~)tH$D+hOUGCr*RqlVZphHp4HG|8sD;J+K~JgJQ3m=Y+l+Zm}qiC&NV&t zjg19Qe4od+UGV$YiI>TOn^jTrQIFj}fi8@h z(k0(t6ry9&d8n+2>zOx^Pv?Gs17Zhd4{qUL|F>VmF`1GgT?P zWB&%PUDPA~Fd6)dKX2oGDKH7XYM#P{_L5V;y58n3uzBS(UJrcDjA1kI=eOSr{Q2!O zM{N7^s6#NQ?E=a!0Di$DIDSHXReaa^5xRq2@W^JX{^Zxyi|w?Md_U)#?yJ9&r+)u| zXG~=-9;*HGO?wy{(c5b3Pt%vn_`av0(AKM1`j^Oe8&A<&WEf|bvF6}u&umhxapXAc zumb~!;^)}|(A@6B-e;1NJk5naFJm1x9{I-JvgQGGbWdf`WoN^E@B5c141L;91YtO*&H%O=%#PM%oMxinhXzo4w4v$~|PQ~JmP#7Km6Q`-#s2JX=<(S zY(6j1Q^_4meXM`c6{tJXpXQut!SW8c(f1^63uf(4zd6FZeGE9(TrK>}**W#6mcDHz zc5}Yw5$iZY<*z4gJM&6&M09f*zt0|Hrk@C{X>A_?cFlK< zr=81uSJ|c1lYk$Db*w2i(<`Z?j`N}F$P>lS<7;EFbCFi4GCW1UnzwbdGoNRQdLs0# zmftb@q_$E#YvFNvS34DgUE@Lj?3{zP3dplz&w#DtVc?oWUBXd8P`B_C@|HEwg5EE) zbq(#$GWWz=i02sOFPZ~&d>0K152}x|VscTQA+L%G9_p=wx9a`upg!buV=eW?_>b^i z_kwg%&kk^Q6611!_gcYBevKJtjJ#cW(a_vY%ENmL?^p5u8t)yvD}Ey^E1vS7#Q#S> zGc?!1KB;UtQR@0K&la8wg5UN`ZGOw9_j!Cd3&}71Udr$95!)mDtNjrF7WecsLYX6R z-yZO~5cg@uco6r(v2d_^p!?(0eGKsvQO*x-Qr+}*DQ$|csU3}REqN=!Rg<3ZK)pAR zcMi1K2M?|%uV51|t0IqJR9y=wU%~%2{B&NT9r@}N(5F7$EiB|0zdMJsBSN}urk*u_ z9GG4&Is+EFxtf$^hJVUrX%XCj&)sySIg9J-VJBfzETdhsN_!)H=KOz$?<6lr*Y_-~7~^_Tkp zLmK*B;7eWVzs&DG#!>qE<=dP+uMfXr&dKXaj$~}q7V)T-&t~J^U9ISN!9BjOFOoiP ze0(=W7oPb2j2lg7+wKB? z=}#p(Pv6d(U??^{_L!ANd1cEB^Ik{Zm-r_A?2;fp>PXmxAJ(A(ZYFsj2M+Z`{YZ`E z4o${(9dr-OoZ(=m>0F;S;7$Yo1lmvEny~kyMu4>i7-GOEI4+`X)gj-p5Z5b0Tw`B7 zDz4ED#V>3>II~=`5g)2@i=$ZFI|+gxJnuzs$0SpTtP%=^UaZml7GL}R=anXLG<^Mdrp^V3btYY5WCyDO0QqW?bV zT>b>|xh#d=uR$kVhaLI}eEXt|sn+lr=qL+)&jdFr*9E;_jf_8?@7ia>=f!?s2QKFY zv;gh{THsDa-gQr`Xkp;dXxrV;Lh|B7=Xz)|70`n62p=8LLYQ|qdAC3d>lnW$8P|VS z_nUcjw;!!;@Eg|sKSAA3+i@r*X1K)9g70ap=hxwXCtpgf;X+-us}erIKBfAqyH@a@ zY1AH$;u+F>(;7m!$iVZ`;74n)1bV;LNhR=s9-gC*TfS+a`9seiTw<(WiS{uMjNlwB zYxg()XZ|yhdl$dUci}@XL$BS|PjQ_8$*Q5&Z-MhcY+UFpo{D{M0(Z`qi602<-p+o4 zVcjU&na#fRjZy8JE7nmyzZ3m_(hU9r1H`zwHBYg>C3+A0i4*;sR2DsH-M13^=W&M6ouqEmg>Jk}kL z;9!MxOZ@NdxR}0e*;eg6y(}_&&%iS4Payb@1=gtr`S2I}KPD|h8&R`-leGmc!w>AL z2PR4|ElgMCVdyYd+m~lr+%#Ax9tme{;40UFOSVq zpGMQ4{C@xU;Cy+iQ)|9(zG%JhP1*(L7i!K-gBMGOZ~J&`h2}}}*2MmL=xk}Uq`w_n z5M9Yu;OJ`OLuWkd&TTvL9;)4=?72ZT_AV;!zwX2@MYhBI`>5VTcY1i{+1yKLa{dR; z>3n!*0e4_?*6>E-={_pSvUcvI+FCHo|9kgRtywvmJFv%ees2|iFYI|}AN)(mWc*Do z#E~z@)7t}{x;swvbY`S*q<(F@Vex*}E;TMTl6@oc{VA<@sFHrxxQ*+uGj%g}GSE%| z{og$*f!~nm!0nfYcA0$tDeZg7hYJ3?sU4ed6o08WcFp*WiIok&X4f3>kgxKt@5!jq z99#5r>DS<2yuFTife7X6-o9zG;A|!av+(lN{y5_zU3>v{zZCHO{)f;Jb*!Wg#%_%0 zGK24xY^0&RM)mE@8+SYA%twv6=Bu-B;CBMd)MfpSN72vD~2&QMT^s*efsOMIlrPUYMx)JeH!Q&IIaCbv^meto09%z`0Fqh&i0ju z7t-={1$P(5!Qh-p7uOlB>7XCjKx*=1B}G40HbPeka3KFH;S#0Lk1*DcVPi~1OIN^~ z7R3q}+qWxbeTnt*OROVgBR@cYbe@)Yscc>s@49L8dgP>J)O6`2$d32mVYA>FW%NgdYRWE~h`5qq6gT z4BTj*3a^@{nwxDq9o=_av3S2?W+W3Hp-lD)?((4D;rx`YpgxEnxq0cvQRh$TTYg&j zTYg&M+(=-Leu^_>XAiOtKfAYQS5w@SPLZ46M?5Pul|?B)hcTXTUD} z!cu3`zro2t4;o)#^&;fS$H0T|HkCDqc)sHBz6hUp@3QNmhx1#!O!MHSABb;{?N4zw zg774KJt;pmaa`pg0FbriJo|mn_HX8&l|CXbJ^Wn)ob5Koy2P*VirRgf4E6+yJP$wVuVubCe{$&& z<-U9+GWgqOz?J5J#gF9?&pb4S{)^T%x8N1nTo36`%BM8x6Zz>O|JY@DM4@juFHL=t z3=`~(Z;kfLbU$YnUbP?EhHun7jJ_s5n;^z}Iq4h0mz%$(HO+mB#lfzP&9?)3tHUpC zGV?Hvp6U8hT657_x5t;&+5rDqZ2G6B(HFL|ZXm96;S0<$bh*DtA3=Hqdvc7vEMvdC z~(wf;oH zaaBA1$@EFzh>@|f*U|&A_-|^DJ}8r4R~VPBeDWRCc>$V3zazhF<9gS)sEqbjwhhX+ z{CgDHLnt8zANo(8hMZ-tr_g76!8Ply+$g1^cfOl(K0&(}Yn?%R><^+PAs>^h(zuB3 z@9J=CBId&EB)VIgK51Tj4VW^PZj1c`k3dhrwF~+Pd5rolJF)9CaW-r4<)mC^(Dy$b zrHuTeBT+XlnlqxO3FP0v8mBHc)ZSmun9Wt5`fObfV>Cr$*bJYo&qjMjlUM8N)X+m? zGN%w-o&ITVM(IzLiFov@CpOyjB=|iiW^%D=Y!}Al>d`NhFHU+Tuwql}D&YM@{ul7y zN*<**kpEKhs_tH3ivwFF@I(u--vCP`u&ADhvA&%bQg=@;`gr~srXhaGqgcVNslyu3 zEhGL^+H9I^a`9@NrDtT@#b;0c349}u>=es}imoDl6EMstPntYw((VDL(!Jd{Ym6_5#I+MH|Jyw2Sq(TaR?XL-iCK zR*&j9vM#}Qq@7GUiF{flYs8E9p~Fr4=-E?t;OibwH%xhkaaI70aoe*1f69Q~~Cw6ZyKQl2gotyv&^#uDq-a?i5xCS0}8G`aS| z^xTd$$E=UBUy~s2OZp&mY4v`!FTH;(v@RX;n_qNmE$LiO5dW|j8^({(OJ2Pje_U|g zP7Fuv8FQf_ro19%7KvWsS>0V%z7Rd55&I|ngL@c)dXkjggKl{D6;o$v99Lfvo27cM zMc+|A$~ez`^Php8LP~q?y|e?m93$h z_WygGU6-whn2G4CoNpGuk}62dhF+%2ficOuY*z{T`8(=KRU~Hh($~G%Zd#+oEAEX> zT%me<(bYPpVlUXv`P>%2w7oQW~bF}*0L#w_RDN+Aqhx!@c$D866d!ZZcmkHN#{_BKu;!wT`&MTgYEc!Wq zr6X=P7q0#Gx92YZcF$FoCX!RUIpkS*)7twM9=vq(<-b|D{&wc@aK=~r;q!y?^C|y+ z#_QiGzlQS5C~x@;<)_@V=DsPE{n~H7u)Y{v4Wrx${#EbKIpb^&WxvVZ@#Lelt@?j@ zt8@FXm9UW{wvI|g)wv94GDA34H?!l1tv0L!6)yU+YGO1_+^%e8h z#>|-WB9Zf3OyvAw5p#apnDgJ@ZocKZpYO)Vg!671KEV{43B#rgo3PvzPDo}7#=H?b zX2NQ7%));7ee(DbBYs*)wBgm0=9z>UWAtv0<$u^|;sei|z}<+%7D?B8i}BXpvGzIM zpT)Q0mL()fb;QcAl9ydY;BnXX4hGV@`w5)~GGb>%tpH7gs|! zksF5<*YZsAZ@-~OvxbK^I=!;bJU262keykvJhJF#j4d(z#AF@ojbyB}enn4vaq+g( zydktx$Q=;{mwaOLHvI9$Q|kIgdyztPH0FeUuM6}|wG-B(cPnGECwZ}Rle1FBjE;Rh zwt|>~E&2812T`QDRFCSfi;eLWz(}GJ?RAYJu}jiUD3X$M|#hP@3GO|bK!g6DDT5Jf5F=XN3_v{#}hs`BDiB2V+ zEts^9Gs!XD7TSe(&;8YgGws;`th2|o)nStue(a(&`)KK?Y}uv$3T(VFe5$sPZ}H7H zZr%)U6VDOfO|mW%?-ksk+&QKK-icn+&K)1Sl<>&Hs|XAk{PV0XRrPia)5pbKO2NU&OH|0eS!X^iC0m2htd-+y_s~@vD4Za zFXf9fX6KTI?PqQRK2QF)Z93yxM|zy}G%{QD#1kWJ-Di-F-cXZe&9-_2=O4oJlE^=B zF&97k>Czq0)oa3jdwmeZ)EfLu1Ek&Yiq3F*~y+F}v;(_z1YJO=!J< z4f6;%G*)YtyIqE9909R3~oT2y{_UV3Jvw}td}l_!1m7Ver4+vonl!SdOW-V5Z*1m`t5*vq{CB+X1< zJb%v_hC#Wl)RlQBuWa8)??Iro8g}9&9Hw z(pyA6&9}j{>`3p6q-8XBUV(;#c9Ch*d#UeK;2&%so}NmOP0-zPPzC+EYB4 zWQ*odSgz0U#sGJty?3!q690UtF6eQu?3L;tb12pCV2$+;Opnt)oprvI{`K(G_&mu| z{peOY&viU|c|OLoo#zjEw(xv}r}%z6FCJg_er(nnN;XUQHEXV#?&uh=8DD$#L2F*g zxO#K>jIGCV)}Ze9VErz8oYq<)U)Fm2$a)uJ?^V6M@HOqtYpulo>Dx2eo7mDi#uLBR zy&vt|!;`{4eOgv$v=HNm&7_@usCl1bAAq%B$4)0_^{tNICzAd;b;+ha1U_8Azx)zq zJ2AXZrau?WK6HMO){*MVW5BOEMsy-K)DPW37T7giU);J{a2*X##afph!js<}E%p?X zpt^;l4sf*W_t-*!y_t35T>-wJ$D`ousm@s5I21DuQvyyy&1%V z2rk{Vl8jtFqX~Q^z*m&Mw$R=%aH4jT{1z;N>6)PZ#XyMR zm3T95HHY~#yK3)iF(f&yx^%D!x9bvC-1~Ni>?^hmilQS*Ghj^1mv7qBF2(DSrv)5>nq;)Z5Op z)!GZAew_SUX`6kBX%Bo4zC6a+%NGEr`e5NdFwm`fb@#`K(o z^{qCM{scN~J$aYn{~5y;km5W0Ad3t-Qi^o&+f_|kb-kIs0GL(BE&M*Qj=P_L``VKY z=Ud5lK4QQ9{C)L2IVg(SeH^ygTCoWeZq~} zO6keG(ff%(eTgDs8K|#Gb@E-jCrdrcitzv9DY&c8c71>CEHmva;8)uxQuloRSMx7? z)l$Bewkq@5+WJw~R<&)bus{7V)405dy(_f`d}^GezfrW``%h^9 z)T7Y;`~OASZ>l^*`?1M~(|!dwK9cr_kUymTzUrgXeg}Qmyc0i(gWr(;Uwbgxw)rUZ zUzhXuu|2EFo22K*ju6t#`ujoIMNB`+O`cED~|2s}P zoc>>%e02J+VmuodXZfc8Kb;GIr0g7M;qT3bhVsMbLY8w-{@3)2pt3)yMR1;!$OF0B2tn+q2~Gb=S0Mshz2@2&WHHk||yWB)rs zY~Hf-hzn#dF%e_WmvqH==+3>q58`_`5ubNtL=|hDG&1}w%BPXB^*p6Z$c7R6mwn{H zXh}G3iXmrx?8m5!`QIJJ$w((}g0|JxE^%^M5<0b&MexAt82o{3Lsr>^;;Th2LG zf8|HV`f)I(1)uW6V_Iqs#RgnT9Ygr7Sb+SP7R7B#b~L>{(7l{7E(v~b`#Hbif1hA& zrG1{sr0cmrYcA63c~S9rFNt~didujBWTaXWq3#e~~>@X|cR z;i+ohKvxsLw_#g~@+>3SF^q8sV^vMw z^jP>ic{cRBSe;9NX%2OXMhke>1$0$FT~*{;Q{-ZGE~PEuGBzGrOx~l#>byu@RlunF z{#mTfSwVeIHNQ`UpLFnl7I~_-4s_qhc*KKtUc=V#f7%XhAJ$G1 zx|dANZ)f?l1Kk}5HU97gU{2A#^cBHe1so}8uthK*k38XBy1-K5o4TsWdp7-EMjzF8 z$)yG4eK5d5WdA_de^}c3$930&kNmm~^5&n_oucku>TV?#ZrOSG-oA`a0skG0kM5GI zg`N~6bO(8Kcj7I~5AiMg&YXFWca7zn(u;(HYWlDKRgXg7 z4NzJG|~RxcFyvKlAf}t}g<= zr6FL(uNI!8u`;<^^-h29wrM8!eV&R7YbAdR&xd&G_q{w*JY_RfzuSYS&hFd+?MuhI zANcJ%^?fdAPcq@NdZ#_T-$kBE*5wW7qRV3ED&(ng5I+@vn9qNTxfr3XeEyJPjMe>P}rz(xj^-@$rw6U+)pU^IdhwC%OYV z3cn@zrt-p{p0*um;;?oY!@+i_Ka0&MO4?vM2}5tAHn%p)z~kv zxfVrvt~Swy1<>i6;09mA9{dJ-o+gd^%Nx%nO)y5`gH?>VY?bOyep&RR#wdKWPI@GH z=G++R#7|K%!>3lBjKAU-bU1jb;$xH05_qw3$q{@P3gE$-e+wwT8e4#LmF3{-7V-)|%ai$CLA|nJoTDfCwdQT0F7fsTc!u87Tc6qnz4QTMd-G1$fnVAL9famOm4; zt3Jq|qnF>}x9USa{Mw&Mkw>~)ETD@y*%pgh0h zsrfuO-vdA282*N`6AfF#o?L5PCq7GEF?gfqbQAMfJfoKKvH=csL`%}qqkr4aH`U*Z z%#)4I^}WEizPz+ml5ug0Iu~Iv_BHX8d9>A31Wkc!HkotqE$*h2zpH%w(KE?c%zOxc z3ziPrm(5mXpi8^&qVW^$<@c|OIVql|J$=pBEaRqmx|BH?Wj>e~^hVvzCJk+X%gAx* zO@D2Qv^7PcVQiFz2E7~Iv7T~qaJt$QEUaTbtDSnv!=H<)=!52-zAK;dRKc63K)3bq zG2Xj1=PPb3?2MjlTUQlrVyDZs@QgFJ^j=9h@X+4} z9;(T^ECyZky@PL}mw$tgiD$3lUHua5%!^!vI+IcA13zxtAMeYk^X19@ck z)jc%Q5ntn}z6!Qm`Byu4kzP&RiqUPS9>I|UUbUlfTg$T$9pDqq0;(4p=C8AnX3d^7DmwN1qJEIYxQ-F%#PI`dce zf@th_Ge?uurMcA}#kMk3#2Pi#hK*C?Cgf7!gw8he~-Sp`F`j=AKCS#zuA35+LVml zveLy4F<0*tPs@BK!dd&oAaQr}R{9%HjI+8{oS2h7e(PMEPT&`O${ztA@#JydL zEYrOG?Rx{Onua!XiuN~PKZAF7caT@QS}f-BR;C*|tB|#Ckk$lmPr!dqg12YU`wPh< zT{^8ZcHrsZIY&#Q$8hG+S=e=lxHFGx&_l_83;Cbs+%L*DwvhkQqJ~b%q6X@1;hEv7 zw#7fVc~{*P=qIL(`?KkXbd+=qnM$4}Y_5{UJ-{-Dr|>U*s*bueM%amS(s{O{FX(-N zt*fv2QdDc^3k~~qt!xOzvYc8vQR512QbR^0B z82_%W0{>xPYKc0#X!FJRpwuL+UZDL>!Iq&8Hx`@$hdvo%p_;x|@Gl&vz)6I>`QwxVu3FZg`QwyE7t=UN7fbSAK%Q+o2f9B&8%@-? zl)5TO7d>g5YWZFXE}M8pt$yb4syQV+u%5hvM{sH^1()hsKzYGdr@JhuTYC4hC}Yig zKJ6~hnMS~_K2%YM+SPap_A1(~=edk^irz&ZYBwSKKJ5;nU5%?~b{YQ~`&)u`>)#sa zQlD&JsaO8pYF~D)dVX)_DLrmEX^lZX>4_KGcXz&96Tju-Ux;6W)_Dy>UYr@O$>Qh? zTC*%R#LJ2PScA+lW+C>1#>JKJHu!=;FOgo&+NUS<%lLxqF_YnY)SDd7`8wQfl#Q5~ zNo*MAc49_t3{liy>2co1d&j)9b(Os@t0zfZxpeh>Jv|PO4BKGb2is7Z+6>oO2H2~B z*8po4SfjjaZPf}aCgyY(i;HuIzpK^_svAeAKu|3K6!A-_XqEV>ljtkxqV2wXl;3M=eAMlq6gQQ+}dS@ z-UIbRya&pMc1kXM?|aO@Q_^R)e=vP!$JF$hYi6d;Tzh)@%m?PA&wQ{xedhPhNuL?| z$ES)6=!!oSW(cqw)`Ca-T58X_bz6< zSIDD%`BVpf@~zR%V#C@48|v+UFl`-Cc)ZRl7@EjQ|4a@C2kD6P&pS+Zl6UNt#_F0a zj78B8BlgTqYrBL0A6)X1wc8!p_Jb9}?D-*U%a85Uc_Tlf{WTwS?WjGq6Hf$fBqn)p ze}#LW`7RmrUG_P}=R^JW(~me^S32<4;l#M2|IQ841k<0eZ|Z!Ickd_O9GIL8a&T$C zPIM6g=ataL2F-U%8xczzby!}KX#2zd(!(2G=rVJXPFr`!@=cjl2(pk`%5ym&D>W}hrVBLCawR~ zyUvE&%3M=^wX1oh`U$`@+!4Wz|iOy(!G@hyU{)(+uKA2kj z*gj+{Jb3P^+Tn`bnCXT2cau-J_rW1^%f=}g~mU zE}o5ejr5s2XZ+;IiTg!6PtPGpI<`dG?uK{VJ>2O;;k^Kg{feUV zC=N7>orm>DH}`4Yv7{hw{lXMW`~3r)J2sPfNsMR3F#LS*9e55onvJmshwR6m(3mCe zb2mPPeHXbHV)TtJ-EUr8Rhyg2`^&A0OTbqS7}lX%CZT!G!RTiU@mDIwcePZ$wb*;g ztxe35az#Dxo z_S=Fs()a}kuZ7SKcQjkPUNhX;Xip9BDg4HG7aa><90GDw+>qwYhaX@yoRRpGf~hy4bawJA{s) z3kUxpx`+mJv7ffzd4EV3WBmvJ4(yYFMR^mWkxfU?#bekyGeseeL%Nt~aUJ6La&T-Y zx8b|dw(;P23;oI;(=UQ=`EeV3u|(rP0>|^-KyG6XnZ~#}T0AtaZEBM}^2@;28;t7% z7Jm~4$F(7##q$DMTuZxcw7Z!5IEs-$+z*J&LUYB9sbMUh0uSL_d6;)Mo)i5PIMMiM zu4H(IbLB7aI?a_B=K_c0xdH!Qr8Qf4jNidi^J*F6`D|`rm5p@NpX!v|^6hjvk zjjO+!uNn`>17ltRxXF_L-)V32NRtyBTV5IH9v8szY0}TM@5O#2@Af-;;bTY(`+F<> z6bf5h0sW9H(s z{%9$8hHdGX;dOUR_x_#xCL-h9d_9jo2;Y)_D~q(|LC#ZdX;gN|5`R8xN!{($gbt!T z$2pvty|fa0Cb|mi&==#e4|yMaD$wga3rAM!Wj^<&9mHr!LPD*~K;P1W2IyYBJeWj<-2~zZ>X`At0 zWL!myoA$f2Ph#Yij-27U`Y&DC`HXLT=(g`i4xO7qd-KpQR_J>95rZ(E}?A6Fal4)m2yP5jc%!qMku#dq4P0 zRT3*{ZN#Pim`fsUsk%eIkLS1AdX4`50X%E1^;_Outc_w!O8lF_MVfO>b!O3Zl->qo+pXN*Bo&E0mS9=UF!c$NVTq@88!EwQCEjVCmXXYbFj2ZGe9e zXFejuU4~g`?ogaS7khmXyAPOK$eEeE$2C9EWo4_^8P__GM0Wz#-Oe7(ilLpqVEodu z#S>?q`84ac(~$??WS>B1Ok&e|j=Mp-;QeV}NS1I19p8)1@=d=b&tlHTtJ6LNxLD5j zh}J!Zcq)ENFVZ<*kI|32kwq%MZCB*+rcd6rGg6q|lpLPD*W9?_KJ#AfX0>BtE%#>T zaUR-x_$)!E8T4zl)td*)$;^`kYoJU$aW9NZ=6v|%eGR!Rcx%VDIQ~-+d)IG5c1H9G zor#v<`#7GO3ti|D;XIEgxi9Y=^f`1E@SDqUrnfuqN_W?f_g|CzD>c(!;@j)U==PQ8 z+A)7p`d#)!?^)Vpyzl`i?-veMneyk?%>%!!tGO$#+<$}qFOH6Tei8jgFW{_n)4%x6 z^u4nSidXE$_bgip-ENO^_7>-tTp+!2fX8%<~NNDOqNq?}1Kaa3Blid!uty-5rE4*tNsB+k<;8sK2(jA=iX1 zSUbc#(Mz0;y|*?y*?S=qX}gDcxdAwu;F}rxTnvwBOxJcc(oa?z)}ATZRmc2l1Rq1d zgZivI_~~|MB`;ZLpmWggV*lX2Lpaz;-ri_kXNtOGC9L`2JrVM?(~lT@^i}4yDKr@I|2>G&< z(-@odN#1nPBQ#}VGbQ`p{;^HCyO(k5YJ6bEV{*={^qnQ~XO3 z8LYLe{4Czx>&}>yFM;~|&QAFka2G4zuV!s5c%mCcUuJrWdKD7~A?L1vhNhK>HcI_2 zaHRdoHp)2rJN{hIgX)vq(YVU~zW&~5iS(DZx#v~;wW@pHGm*AKe6ZWvtE_(+aAsJ? ziwBDLNiTVc_V;rxUXHUhbDTdEIc~y!Yz5rQSjZW$8aMoBShHuM5pN~^N<*Vc6O2Em zUy&y3Zpv(d14%7k?=7M`8wBKHv0Y?&!Uc ze6r`tw?RJB*phOUd|%8r-G`E)ZTVlWzB$_2ZE2v?Z`lA1aIORLf0OzmoK}+tOw-%z zogDwfrX%KXm2?ib_D=xcVen(a)?F#05&S{y{R#Fi5?~SRcHak>DuF4=vko5ElJVQc3xG$kHSiRUo+KUHto3ccuKxB8)&|Y#;nIzCE=Q4YbIkLRwr=uit|j3E zNyb8OXk43kZqs<@!J)kl!LgWn1&d&aQC5DOf=TeKr@jpD8+j(khmLN2In{5~nO|Ru z`%~nh2gabQm2Hd}jEY zczadqCFcA+%ss{Ek`qqHRzt7Wu^*`Ty9U`8*fEM}Q?8$E;@V{=X`Lj#)KO+PV{6fn z>eOQDDrfW}+7^r}fY-|Ts5z8*(Tkh6aPF^4U3PycHPZ|^IO+as?sXP%#eI_~|5swQ ze?j>k?FsUIls&Y2;=NU=1HhXD+&x@(v#(-hg7IHZ9r)iN+-76fs_hlv5wYLlm5sr- zijXh2FIjePaS`t|ei=&(7SWdKtm4@ToJCm-eHZh4E5Fa?Ox0zl8`gB;bPerDCd9iM zmEpbW?gS3=%>p0BV!nMU7_-@1+(ely_7-Pxox`(5z*@-vPX6~$w}!se&{iFN5`6V- z1>dUCyk2&4el{=`bLAXDyY9DI zc!LkdphX*HXMvAB7f2b!Z>{A0Z|R$G7rfcDHA`3EwNhr5aMBe$tNYa+ye{P328x;)P^!i~9EWp7K@v77psuV#*5#@kf1GOuMTD zA6n>si-&_jr)>g2Ko;*8F`kv_T&)ST@@Iu8DjX znulEdwA<>eWh3y5c=6f3zsdDAh4?0bW7p}jx#qL}kUdn+Gq;`mbe-3ZZzm)rx33?3Oivmd)m-`Ei$A2#HRGw3AF{nJ(Mnn z<_obC;^+g`(CszQyaD~t#T;J;?2Tb!8?aYG&|hU6fE|V>S@5Bn@(w%+!@FXxt&CgU zOK%mT!(zy06=kE)JH&g%$jMHSt=9!@bFm3z=M@6W($TZ`q^FB%FNlxByk8I9W!E;C zJa^s)mk6+hi^d6hhjy52xGEM=_az=KUG$+CTpa$x9xi`ICU%A0a}`a%t{cHSY@PYM z7kwHFuyGh4y7%dnL>H9-Lw2itezlZQ%%1q8`Ca>D8Y7}p30L)5^KKP*{+z4&ss78h zb$u&)tlaDd581X&(7X<~b@V5QM|&{bJfx`@aYN zGhEfDAe#;y{BKG?;#C4apMzRx0_SQppOgJQcBL24GGih0o zozT8~%j!Yo0q48y_{dsT@U0)_t=84bvps~|q4Cel$I!~2d>ec6o7j`z%%1#~bJ?5! z62HgfvDcoTdJG&KXeIw%eh%@-eDmZh^ttuUIjPo>S*hgevs1~z*{Rlu>^S8-&rN>- z5A6CInRavjK5Ka)|E$69wuJZ6cPjfd_ggm3Np&GRo7SJ5`om~qeu1^6FpE9@Z1Cq> zGx$mNQ%-yRS{IR5$ofGCYU2nyQ$8>F?Z>D3bmhFNzFlhjWbl`sK!4<8ZeX3}t}lOK z@fEI)`eJcq56R*{EUx|TC4NtE^>L7W`d#)U`per|<}vxF!|-2rxAdp%Omg&)^C*<= zXevt#=3U)rr*k!OCz^bYtJ;i%hd~2 zy@Gz!lUM0ti%*`-IoanU-m~q0*M;+fzcprEydH7a11my_cbQ++md_u~3$IVocOM^D z59Fl>d*iTkojVR6<|=x1aFs9hUB;jvv+U=`(cZnjouF@z;5%V|Wpd(+%kh6O7ig}{ zBB!$GVbJM2$d!99{TaKW%zjrvcxwC~OPO~V|H5$@W4XxkvQKAduGV@j&h?l-lT*u! zCEQ6rM9(C&4VH;e#*nv>c^ux3WluzF;DYpEOGCbA|7|Z9GI^r5Gbd8|#r8#mz>4IN`1Tt>aNeSarlMAdYq4%>G3vN7rAN*SRB>8^AMZk4+Rc`umug#UQlM+SoldM1EOT3SF zyY&TMWrd$|tO}pAd9S?hM{ECtf6?~zPigyf-q-$%wkPvmep1cDanF|U=T!L+=sGc~q~xOz}XPtMbzyQch*+c`x5^WR}^X za~N^<-epU)oWM8qDC^N;^sm0lUeP%57@51($&CA9$o|F`bhmz=cUP#H4dArO==V*l zH7^p&%pQc!!j|2&{=OFMX|6H?zu7Pi7xtM;-xm$scM3Mek+`w z4gQx+ax#N7|CBm@i~;8^-CVH-`gEC@&kBdTHiw!U@Cn7va5~qQxO?TXGnf~x&&FN< zNU!wDz10WoNin{Za~eI5J3YSls~x6Uek$#ox3CwLB*$q{Y-r*T^h?U`YvH+aDp}dh z^WZa`!7DDqPS#rZYInU7V*N6UXYvcIIt3pGG0t7s$g9wATPX7)Ynmu)n%VZ9d**A= z>DZuGo6aVl)t%1SDDJB%UsHzt4Xh@vS`X;nt>^k1XHj;=DXg7&FFf|c1B2~XNPW$D ztm`wk0Ox;bw=kP_$0_|%mFTQs+Ya;0ueu z7h-2^eytMP)_s&c>pFO|P<}9YQO9%DnZ>i0$jK$SSj6vJ_&teO{l&CbB0k$bxc;)~&VleY8<66zQ*8Ln0UW{>4 z1H4+nuoEJy&u; zDxY2EKCisS*?N2LjwOww;@fAZUP0#fqhmNT(=m~@i@;Aj=NwFX3H@v^_-Ex?0jHP9 zuh$(J?D^S=2jaba0Cib&QW_U81FO!HnZ>}Vg`Sfr^P>FS&{8m7-84IO#ind>{tZ6( z>ZUo|4@wo`XMdUUo1w`TTYm6C2RW8L{A=^<)E@Ae4cs=a`>dZmWY7E5Q%8RGMflkL z*!K^Z`-P+LGw}Pgf^V2=T&ZurgbtEN`9w4>q+9e`{u#-dovvdD-0#zyJ7va>n-g5x>2*Z{C(|ud}?aZ5>W) zp2l9ypu;-q_;yMOa#TB-eGKMqZ=SY$$?Rcu#kP z?b-=$o6O(X3o{n|n|4CAqjt-K?OOZgb|>?NRiS1Fe(3ji+Mo+|#Hyl*rHg2?NHigC z#IP4G{JZV9Mf&KntryS#mOb;JaZdh(Ju?bC7h`{AVPD6vx!SNTuw_Q?!uHzSkbTlO zR=YOWe|qgN4z#cJRj~aS{SeJ=)4D5QlZ2sv82xerbdkTThU-qwrhkDsKy;MO$)e2? zcqN$%mN^-p)=#Vs#y1Hq#J`yzXQzshJLZwkl`xi*I{$=h`!f4DYhn7ZS7&a0xwUmv zmwM9snhX8%I|eAPxx;_|-~jIhTRK_z8~SH7Z_qFO4spd-x8ydRH=%FLy&Wq1clu(` zL9CrRbY@uf9IsvkeEoXAqMqUhR5wOho2MaAU+YWFJ+f^D54!jH5vd~`qV}SU=PsS) zIwjJRTY=^R+XveD$&I|lD2W-c~r++)5huUB- zBG2X|xpg-Chh}MYa>ad3UY|r?@`&e)Kk&`Z3!FVe$nK=BpVXwj0mYcr*k69_L zch5t0;GpvoarBwuNea!4Z#RcG-X}bT zQ$ql!YdoB$csRwdS!3uz;UoD8;iohBZfcucJST!*E$^ewInoWIqR!Ax;VXZmzvl73 zNA2T#J^0%5P3V#kaWz$n$AgyZ@!Lrj_p|@b7~NYP{X8*jam8DW{@GLRIrBm2Tb21M zeF>k**_j;l>tsiU6d$*dzvx}sE~cOR&&%pO5E+E6o}Di2aK9h1iQM^{_~zXY zq?0HY6MwpfCT@hjvC$^e&RpF{yr;=oxffY`y$Ji3Ng`7TZm|N{uzU|4zv?-hSJS+7 z?f1jYd1d;x6Jzh6tM_hHd@A#KH|0B7Q^wBXESZ(xymZ`a)6M;zm%fE_0BZ9Z`m8o< zv!+igj9mBjZgg{X^5g{T{=15jXC{hrn(n*tBEEM_8_9@aA6zlh1*{9D)5fH$FV_BA z0c%>;!QlJtFB8u%d}*8cH!sRJJ#=r^jPOl77w;si;-A*L;-UQK;-do})o0=WM{Dn6 z|KU(GeCrep+23mC31VdBm)2Sx-(02@f2TR!B=%fpPI`VA`!*ZhHM<`htvO^LbI6}p z@r_aI^D9W-od`E~@m(RGPO`JU2=21?M#4&aH6`$Z1WkFR&Z zQ=g9VVH{vzU_W+{Xu&?Bl_j6AIX++EmH1i|nO>pT+t=?!RwlZ#G6s71^70zCo8(2Y zx1zB>w#2XC`1<3oLg)~_c~1W=UGPcy-#o{!guk{R@sA7L@2sLnI;Mf=#$nD|yMV86 zm`h&dJ4v!<@Fh>44@?)jQIDQ5s#Xhaq+ku0!(FJ6!IWI^9A6%7=}C%?>$%fiiZ6gj zRY!g>jUmAa;j?O*V|Hv@{Z9G!xST{GX@$*p-Fs)4B90> z>M4`Gg>8M8#i8bT0)5Y3IIN@%wO>X1i*GO7@%l>74~0&VoC*i&5kr~NXjAQce}HxzbZi8DU(Xne zpzHT!Uop+k4deTIbF*e=TwU*;QFw;3(lrhE3ci8;x9n6m&R%vBIC-&gdFc~bp9J-K z1X{O_a8er6$wB038i}ubaNl`Y(f*NpLd`ob#onin%t=3Ms|h7qP9}dBHn6X^9-yzj zF7o$HG(TaVELb+hadQjO&e7Uvp$*Ns|0!MJ*$F!KEV+1~dCMO|H*m&i=ZpZ|_m~7Zv5%np1xL``-OmZqUAe;q&z+a^)Ahg< zog+uk*{yeY`A^(^w2?XNmyUuaqf<%f)&kvHp<5et+XUSwO0O+N8%(F@ zr*XfKvGv6PpKl)t&{aQ!PapidM+5P00*m7tva3Z!5)=8YeI8%CaZUC z%JWaGt=9oJSjMpLXYFdwKYr*VU!QyDp7D<>PGLT4$-aGK^eMWbi}k@D(A(_8%CSGx z$0?oZ=Qu&{9dTaD*J&S~XfhuH(;4F2sQudo$1pcK=6Bn{zwi|ERtGk%<{Qm5-zAr< zSPaMqs}*L?_-@%su&((uS*YM*JiM9yA+>pKAR{8*Cy&Y5!u+R z117lZ&Z`)wT06#}$xF;l+DF~T*#h;klYWhLoKEeN+)J!E^U!GYU}q8IvXC{a!S0!c zUn;~pU?#fve}HwvXClo}-V+m1rm~CdZ>MuS^Wz=ZR$7C0BTK?%I<`b>{qU38>O%?n z6pENT)UNdECCK7-=-8W2i@8br(jT&S=<7z+m+!plqmcbJUC0n;JpIjI zAU4y}_2dqy?mjC)ANHQ~K&Uy2E@^}(ud**BTx8Fj2Ar|jvihy>Dy|qtUxzf#Ybq07 zxqOEsRGK%z?VtQsmbS@L5>uhAzb{h^A2msIaPQ^!FS>LoC9Z_V4%ZV)`h}TaxZ=lgy*~9(jQM_PD|Vp zz)@qUH6Cj2!q2I3|Uio)E^mr6MHSsI(ar^Dsd;fCW@qNPJxOPC@TYp+D`Rq6&QWiSXuBq5VH#YY` za80%97oogEAARjdjy~dg6hvG5*hTI=kSN;^q3+cWoY5FHF+8F4nTzhu)(6 zR@9TPCC1qHecPXafe%K{wAK?|T03anB|WOPWXlWJAg#`TR>D#En)vC7H^8yKo)L}8 zJl?gyJJBWX=|Z0_K^+qu_dZR0U1<15<~L|VGIRufjC~is-ACXz+QZK{pG*9Ldh&xs zok#*d&RZsD<9*_>@U_p)0MCa|p4=;+D6i+Sqde!FTmSOr80O>H=tOUOIn+-M`b0VT zwdB*vFz;*rm2JTIA*NUUz)18SD=~hO~~htLP{Dbmc|xKtA#~b7si)G3@56n7lzGON13ql)p51kl8?}8WMU6^YP z@M4tF9)R}!it&r-ezphCVNR+7UX*_qmYc6`?Wx!%KD4Q-Q{DRo9m8tucS^D_(s4< zcB1O2uF6YCgR|BOV|AV}i9EsN@^ee`HgfhF| z?CF?78+C%oIBEc1G4BLl{H~%*F+8c`TFpGG`&pE==N0iE)=*YB30KL4a1*RW)E9om z-kBELE@hZU#+1;1#an6*Pxp#b@W;g>V6A+ur@V$f2_N;ZgnGh9@}hoef4qk40r1iN zA`c&Q)q*y&7QZOp9V=CW1p1_jVlc{49I#eRF}| zf8)3GW|D8An%~dLTyvh6H&^^Sr9eSNc8g68s%iRtE~MVIDm{P)2wf+Ocq(oy<9bcfHT!(68U~q~PMuu=S`v zqu+b`oVLmX&*MYcBZ;1!Ih|*IyK%vZ>iZ2&rZiAi?``>&vojOD@`snZ@vYm4YfY_? ze=95X>LC1EC*$9`)bnpGlz(fM=ii#``nT|Hwcy)o#YfYIk7g4-n$7rVw&0`LijSsc z%?S44$n&%o-xhwZ%^Px3$pa>_^-hy1IuDzOIN-y}-567gH}kOiA39Xk*+m?t>B>&X z=h4eQ|2_1k4-Xn*wK?C=_x>1fUCn#He$n*mPQ~5$Fl;-Nv+WpcR>A4cPRO6_moa`j zya&!*#>q?Q?8_(Ke{At&e=0liz(DU!wd&jVTL*fd)%Sj5@ICnZ_}TVjl?lbJ^tSK6 zKc=t!JA?0$XInqk2Y>ZI?-%vGZy4zPWZQp>|MdgCC$Es-zi;(>Z_we)Kb@h|`^prV z@bDu16vRRF_Qmp}7vFeiO#C1p#ifBV#(y7xHGiP@@GB{~Nfsu~9q9cjeYi-k_tF#i zj^-Q(eDQ;YRyv(C$2xDfus%RO?kYNS?lY2+X@NRE-nO5>4Fzc7_p@|>@?DZ|@|pQ` zE6QPA`R|m=b2whj6% z&YY~cX#4^5RL9Oy$epDld@TZZ)QFWj%2;jo;JBAvlGAh0{R)d+s_m0 z%Y?-X_y$`@@b?WjZ~ARSz&Cn&wH-?;7h)b`47IDRBHqm;4o+>EA+s~c{1NT_*S~5H zenk8Chq*TiY>N;10IJzn>*@#d{-eMYeMAS*HRRFf4>h4?(R1M!0`@|noaiq)KIN7B zaB8J=yo_lP~BW^ZH}DvMf(GEi;NiNwm&qkEO;WzW*|Q zZF~zYWBPPf0si+OKZ5txzWF!cuJGaJ_Q5ru0@sg=5#4rjt_YuVyY^Oc;pvSxxqGEa z_6(O5lcy26kl&8;7I$68zs_1b+f<$y!kVCNkoNDi|H}8G!F3XQLCcC+14BDKyJ(QYW z8i*Ft;^hg^A_5)!KF6SkVQeUmNiFLl;Z{jMl6-Ttf1h9Yo=dA>pHJ=A=bV4h=eJf2 z+~;S`ar+#k`AyKg+oOYGCxdkOilu|=7qN6;?}YeRyT6lXuA>egn=ebZLBoUe$Cra24@8raP~v;gMC*T-Chj-k z%b|(I%^18ILZKlXd)8 zK$B;EIpG`e+Zh|8kJi_XRz~vE57M_T$w+VC^3(GrA1cq7aOstw-r~^<-2}bz)3=IV z+RyRmCBKUAPjP9IpT7JkG&u*FD7L7NCi&?%SBIMA%N9*U8_9`Jliz+t?ah(-`!C`7Ff+PpZte8weI6~1m+@i>oWCcfVoKh3hLLD_~)0c!Lr}m-E@1R}9&Dc-~oJ z$oE&4xRLwH73Ee=q}STfKV|5t+`+{37}GIAa~Skm3%xdma}Tyyy;P9CO>{#qwOYL- zy;+d{tWR6f3H`*GOq*Xov2=c{)3-gkb=mP&kp7zJCOyU6uCv0*7w_*kyF5A0!hZUe zP_y!Cy5q1QJ$)dW)`t?~psB{UV7WAX(#{hakFsN=!$lL(K{QBu^c7uW-Z+$9_vQ|x zyk3mUUBqEJnctu7+KP7U%D)7^d_NO?vEx_u_EQg;XuthYou%xx3m=qS$oWP)hWo=1 z-PL{&&eI;8rUBsG`6+ND8`2NZYP8iU%S~?_Q9EOBXCzelWThv+-nh|o#b`Xlnz}zBU1|siId+??&e+KV$X--U$|PZ`<)L} z9hH0E!!N_tk8`j(p7zi=R{yEJYiL((#>Z7o!^HRF>kE@an8Ww-0z3A_khuiE{!ukI=bEl zt?v#cq-RA}%?nA|KyOsiR+(h~8e;gZoy>j3EpFZi$)jtRxv>^1cRKIlbAUIAJp;bi zD_Fu!u)4f6L?@~YZ9hQ2^j`KWu~mEf!?S!kAAc2l7_u+IltCx#HGJPgGQZ^i$X5z% z`4^Jd2v*nOPrIHt4nw(t^i&9Vwb*QuOCO$KS^3m=L+Hbo1(*J_FFdbpJL}vw#oFek zUwNKf`RM(Y)B5=TRroJEz~774z1y~XW?J`>gMX*pilemqOTXQd``SJ0-)vX%(lto( z;@Y>C|M*rKiB)3Hwv(}Sa*{nW@m@BqY>?}Squ2b>!Ea*A_lghnzf}CWVWMe{CPOcvuccgY9g(3&fV_YG&o=lS!a;Do>0x?}b^cTaqOPa%>;T>T!d>{R}9NN50t_SsL>&;s?Y#x%m=C6_bQqCrn z?zwsSGsKRT_TufFk(dPD>X*&MV!xx|+T(uvgXw2B|5~pE`{V0_F#OvIZ?uo*(4RJR zNY&ix&g%23J3m{5j(EzcjGLTkNh^b{E@^$#sf2D%tE}}G)R;sTczocsVf8aU4Rl$b z9vM>A`P9>{ZU4*Jt`2eamp5P7_|#9&o0hlc$o#5F5%W-mj(2 z0rRE-OS;32L2<`^G3_-$;~Ebi_LdjaLksOS_vTFlmk6+hi}otnTc;hz=5uY-UM%+| z9xh$PQxt=X!@qKu3K#8z?h1Q((|}z!nswsHFe}Z^4!owgQ*xwcp_j?Uq z-Zc7J1Kos^Ufb37!kyKCY50#(bucF;;Z{tV|VGf4=la&jJ2b*Y^4DZM!@VwtGLYG%r5guU)^tf}=ib{?|ISopVuZ>!v0)eshq`({&g1 z^MtD|@F4d$oR;wU3`J>Ykbq zA9N1QB+tMfk((}ZOyao((1degF>J%w6s;S$G8X^7f*f^>gIG283I6dIde4DJOH-z~ zp*onu%+Iev9yjVJM#Mb}h5z|lcRg&fOyZ*&7pHZ`bZoq8+VqF8zqRKa^1kQLcC&xp zM>%jfSI0Rh>H4Gf|CyPlSv(VeRQ`AT&VvRK*324v{|zqoIle3Hjf>w^=;>w9BuW2@ z7*{P*Oy_pWZKt1Y0XpeB9$I%55z}U67kb?RoixXteIMtAfR}_W*i&Um^o9J&(1_SE zmqwGJ(ROs1bj*9`8sEO^sTuyemxjyMbJv82UeTFN`~^-mac>dwe-cjuUYh@vV@)~8 zTGz5>oMAFMYfNU*Ri@b?2Cn6DVx=heOgKC&n`cShx7OekD{F}JVJ+VQ zsGDHguZx~vaoh>is}CoVd~awwXKRk7A8q{JPb_Z8k^P#Rp2BynbUg>)p9+nRo1W zv<|&elcEpSXLQ|hrou3O;>1@e=2_>t{&Wxp*CYNv&Kf~ks z#s+w+7@^UI38ZowF-N)a;cL?oo3pblX4bMn!z5$FnNHQ@p2;1 z`6kX%_PiD-7liW6v`#eB_04YLV=Ie|snoN&3C{FZ;-ok7dyj{U;7=3JXRV zxhcBYy741n|4r}T8ldj1>dec$bBJBi`Hl|O;2ry?CLZ}mR;q(s*pK9Lh7Z|X8y>et z@qo+zS@lfqpxiZ&jtH%3xvBQhUv72nnsYf*aSdk@<6Jj}#~oaOO_(>IZ%@9})82^e zs_rvh*&h*$*iE@+#>ydgobGKqpt$EZ?{1&X_anz5lOAzFH0fhl_!TTebA>8lT#W+d(%P8=@vbk_aeNoG1@sxk`y zT8?+7H`?{wnDqYx$3~sAWjt$clP#e7!LodRtz7dwXH+V64zVV{|A)X+bAV*v{a3#= zt)Bh~*XN1Pt_+m>G38X|!h?m=e&dxnc0#!M^gx+5uS~(~W2VUt7T+Z&%E304@sNDQ z&9Nx?m%buz!sBy zqdfVdmi&tE67`mk&akmeaqKaJy|MxN_2>2W-yy@mY8>HYLiougBa)B!Ad|uW-w_=~ z3=iMRxt+RtCi#nJ-vxk2S)tTC6>aaOtM zYlrsj?O8AR1os8n*Ofit&tb1Ny7^?JgRL)zxm+=*8iOHh-(8GH*@98oZQvW`ndlt@ zmezv0rymQnUUBDSFTaNO&f%TvYo67WH4yQ3gA)s?z5N=>S-p8hb!Xf}E4uYQnUgq= z_wtST^;rLUx>@DM_Li%roc1Mq%N^sF!=GUAlX~!`Q*K|sa#46BJG3u%60ZD*NflRKZ#!!<$n?^ z&zu$u_u2D#tPSGy?@99M$q$;MZ`S|h(f{2leM4>6How1b@>@9e_fgq?Q$N`6mnr)_ zuiw5O$DT(*PddM?>5P((QhNcHOdXl%M88xXm|^p%%D*9hj&!EZ1mbhpdx$!s-~0G0 z%s;9!&Fn>*8?HO_Eczj2a@TMUFI_am;0Mc3r>a8D5z6cv=H?lYont6dPx;A=mu0)7 zYpVE$&rFlIKeeEA{e&JOa$mv2Y%czQ3tn<*!~)GHT~uVap+^BT&Od34s;H1tRQRrvY2 zAU_%@H&DEs_%HcZETK6azcR6*zW+K{e<}6H1#t2E*)3a%dXz2m<>WHTjtrC)UcL1A z(5}q=k%7FL%Dw(wcO<1a%WPG?{*yp-rU}D zQz&;tyxbA(_VH^n<&KD#^ZN~c=9s2=%qv$l2K2`S%0F?`_G7*6kEYzCM=jT<=Y~-3 zzm8h2PtX0+3FU1)YPmjr^DgCnaMW^r`s;Pdu}|AaN94)!k8{s)6YuRuH|3P~x|e@P zl)JdM+_RKxIBK~*dH6Nut__s){Q+7}<)Uj9_Y`BEWvyxVT%7sN}xi3vx?Yg7O)^0W1hp0?K*k8jL$;jHTiN9X;Eh9FP)3MFrkkB%t6dHJqvd}90# zuOi>M!6(kTPQU*&Q!?tt3ivkdbAe}mz6#g>)|)Sk^A0)klcYCq7?s+(o^{Qqw$49Qb9K1 zG5p*SP1xaWjL~|0by`Qjg9q!oXRwYt6PqSGy?ZB|nqqL`dU(s&eo#8`8t#MRS8`(O4XN(6FZ_B} z2I^flK)tBiJJUVS5X={n{G$2-5%yplXz#?8ke_;yZ!7G=Qn<_Y&1G&wEMj`8QOTY-gKPv)IZ z^Am#Qpj$WZO;?pIcYL7S_<_pdTN1pyK)F$Ya?+o1{D~$uRk^ND3+|4HkPF!QQ#i{TSsE!$B}-{q62B2P%&plbAv zNmuioIOgDvEtJ)IHp;qFWsBq0sS@_hdd~*4cQc7KufzAvvM6KE1{ZKPI1it0L3L_k zUO3ed9&~U~K@Im2dp39x`&KUje--6-;$Nojf=0?OCP!-v@a)-Ou1RR8w#DBft*dFj zB#gfvx&HV&;pP~Ay$`tx_jk}+A8`L{#*G1r7rXL$-hJpqXe#>1SN+C!!g+PTt)dS) z_uDwnUAyCBSfF+OOfUC!G4B^@y{B`(JXam<7qTZ2^Lr7$CzAWRoV~04;28o( zjX!(tmolQ0>NWtU+ducqvje#<414aE-(kf&a?PSnF|Z2xZ{WX?x@af&EGYC4{6?-t zoU7KoVC&qkf!?gB%4(d9+1dv=$)P4uIRHY31QoUrPsuKJ>VnI_=f$W=0@ zdtdH!cGs6Z$=xFSw`zMaWp(`p*D!Fe(r>N{z26sbt>yPluJ+6>{IO?txeAAg^u3UO z(YO|xgeY4@AEMwR-qdofVqZ1Lr?}4D&x7vtC&qt-GW+qFpGO;Yz-$0kG0!DW;!_px zi-A?gHOyYI?nPIPu`Zq0rEC`X2v6}+cnQuT>I=7O&g(u8Y@N+rF%MpIACz5aQCO%=I)UNm`+)HSyhU*IKbKOfm)UG2rrrm7X6<;N@EBF`hS9$H$aGv{o+OmBG?i1Xr zefg1U_^rKSoz-2*vjtwci98q0#XIc{*YW!mu7{UDoC5C$Wp7F6vOjQ__6MZbv`4v} zJ%U4wxeR_5=`H*$4=TrM$Nm|KT9cEgte=q>iVl;mFp-(hN*Db7+k6)VpI}2c|Dd5i zwb;vwGmV;=&&szM#lI)LBj4eE{N1u2LhL830EXRD!v0Ivgc5@BYhtQn_!d=8-)dDG zf?JE$!3%`R9E7c||-i;6W}6a>s?!$xr!4jn47v46n}b{)97VwqLYA z+O|V}k}x`~DV&(gcaLRHi681)9GGt-NZvl!Ju0C% z@`m?AOS_3BZ4R4rp+~9YIoTL)Rt`6`K;*OZSm)&VT00gO}GdAP=_h=su0N%#tkj z+4vnWyExIxZy^5k|CQSUy#NFqS8<2Oc#Bm()&U`+xhIjY! zE{yN^h$~X=B_77?KF%Erl1Zy4m&{6ibh31%yMF%!J-g0KoJAix-s|ZQz0`M0XJ=4i zI?tc)|GaxpVhYa(qT>gY6%B#$wCHGJgYACdB+5U^w^4RrOE?~_ME_aPDhaLr;L_Ie z;{nMVvKXaY1wQC@ej9#^Ch^fG^9a9pQC_rbgl-S=yBmF_cRroE-|y+rUSF(VTkQKE z(N;5M?tx}%OZ?Mb??$fcm^XgJz0Y%peMJoDm1 ze23?X+8c~Hel*{hziD4Sd)mO0?kb9(mG~LwZ#54kPc$9sXL2j?0rVB$PNt=>s6yzYvx~CPIuOpw;vvu+V<&r-ypWKysoX;yrSCT(3Nqn&M;%Bj^BnKaaXC}y5 zzIQzMN^#zTTvSz;0=_QDyzl$8JD2a-!R!YYchRRIc#N&{BgQD!dmxeItEi?y&cVfHTb1-^t6N zN6tO>C81TY?{g_5d^7Z~<08IaI3ZfGV`RMI-iqlJ7cX`y4$Yoh@%*h@;u{9j}FEMdu)7O0dl2z5@VIT^5(6o5%GEN+PSA7{X6g3etxSB zmmg!&wH2Xe*14s~-P6gEY|gS|Cw_khzV@xi$_A6UNb(?>K&PrV2d0U13+e2Z{Q%T{;nJKe~Tci;VD&w^dv zeG$(;QaO*GUErUDkD)B`Kw`u0<{J?AU{AHIMF&;mM;nGzvNkwR^o6!bc)624-Y|S} z#SJB=S0rC#?RyL{aa`9U1MS3sXzgQ&gQzSyHgO-e?FWphOTH9c)3I8%l*wybJ3sX@ z@tIn~Y@uz%@`#oTk(Fl3CpVB=kTzOqE7?YDCGEEIJGqhHToqRp#n;e?ZdSdbEMy5e zx`V#xnSLiXGM9MoR`dKLXc*@mbes3kMe|dv>pLH9Gntv_hhw$3BN)h|{Gn4lxrO!-i{RO9!IdSQEIru;(nFaR_zPRG~p|J|J-;Ms? zaXoqeut%}Q?AmqHLWfXE2R}mOsW^1q7!DmwK_l69RrD_bZYs;Xk*Owzu$8M{US(fJ zw+RoIZmb_oWKHR6Vw-43dSVmrq$k?z@o=J~XCr2h;$e?#ATcW-q zS4CVkha{JyPgs{}4LyNp2HN>+r(Sz$*=%g!KiajW`niREYMzpR%$_T0%S!yh(%8ui z2SyvTJVJ*hN7#9w4f=M1hx&8x`thO8@SWim_N%tgy)$YMMbi)9!q9c1@ZSi2W zh|ln=W3|gK!T-tItOIzaHulqo#%0T;*iXD`^lZh)Z^qv^$JjHuf2OTX;JpbP+o*RW z{>R!jZ=*f&U+^UZ$D$8qTd0j!UUl0Ljeq6A@?l8VR!2v8`y#n%wQ;?N`}8*!PLpl5 zAAMGXJa9f`9%rHU`nu@;NMy~e@Aj;Jl07Sx@!v~l`DLWb8YuJMUKzdf%lTyl=Q_%? zQ)UtJCOwDWq4P3q@49(T=O%2aMeC|kZSzB&TOL3bjhV7(OhIbVx@z`|#-uL$VGa97 zV^j5$q(hjmo#E8XvoOes#xQH8(OsM~ zmMxOlYV0>YyRhfu(se7c6QSgpTGx16(6b5Y5c*N;&#J*1Te&vB zY=kzxkH0()U6Rm&YbFUT!Xuqj@ko;jkF4U#x!~~*&#F_=@#M;ccGCZ{nTki^%Yu%Z zpv&j8-R~P~9vw|v(s$3J3pp1>%#Lf*{21E!`R_%eU!&Vp?hNEdIw}tu$&QYrA9u9r zn-gQ``#F3AJum$bGIZhp;%{KwOU~Rqw_Mp-X*=fell_IW3mWT_faj0(6IjoSCPh4B ztdCaSC&{#nQ{K6?$nk&h>^gYbC4UHefi3WHS20)k>RjjAFZR4%Bs-ybQ@Fl{En_Ol zx#`J46@3#=WWNf|xR>zj!)wW%_$Z!>uO{|+m)Dx-q9L9+8Sz{;t>8*7-XZ6?@~~F` zTRazkyLr~K=DgHq`qDKG@KdCgeeO z$gbO*lw#-i;4d2w-yPyuZGHlH&%Nb+9lUQEVN!MQzG*}#6@&M6@Luc6S@V$-_}(-k zoZ8{>eP@=-ciB75v?G3A0^dKdd{-XnG3iq+-z5WlzZN|H!{hs7*W<(d3;8ZQe!q)s zyZj!P*4*9Bd(GQF>K>X{1pL<+=N*@GmY?g`$haxF zT$7&N{hR65&dszO(`PfD!#+!LifJDk$(=I9FN@v(lO*#GbE51x$ut+7)cv)7y{kJxMBlpXeZ{FH~d3ZB7!)7mLHA6RkL z5%bCWV#`dJ@)LW_pYkKGtn7_r?->~1@R9hAOTJ(_e?YxfbU-WPT`{??TsQ;Hy8*yQ&5r=l{TNisPG+U3DKaknG7-4l=9z zXYpI()Q)-JN#85J=%JI`IiUNso+HQqbBup{R94qZ@5lPay>x)!zQcHt4p5Hwj~Nfr zlRJKdZwWnrBW*};NgqfTOvK04f-Qrt%VQ(a2FvGutkrX0!2VIW9oM<@z!d0b=Yc~#9q&>{G}%F%_G8bTllqYL$H%O3euErH zum6ZTZOCjbF-@)5Gexn2g!IBf+K{dIOO0*p8`fRtigqWAJkmC5d06`-dFk)q({ zDHF_fz-;wk%C_@ie!+t&o1*Yt*Y{bt693CQJMJs>tmWo`*Nmr1-Y;i8JjRu?iO6bO zU_Oz3j?GZoeTgaG1mBvOFCM0RGwUDWr@7$(_%qktRUM5aO5pn@_^#)Argzoxh%Gxo z_N}+pk7BcHeP1*mUkmV}^3m$|iL9fC;5VLR%B5qY6Y(wL-`!VY%4T-aw@c^~@M9(J z^CIuL^A(0Hj8Z*=2+d}lrA=b_DYn9_G zlHP?req}lH^0n**q4Qd23QjovD|8(?BypkYo@;pSWG)7`vDKywn`Pc(l+(Ca%=zyO zL%kJ&Ize)m1#vw4}*8D)R!5Wg?Qzw>ecj`DzM?N*C^-a%RENfQ}0Wo*v9V!Tl<1BC3^bn=QqP{-UE$WUw3Ss?5_X1jOiFne+2KF{xf{S zDl2)=TJveq&VG9)Fa6rJ(B9+A)uJ0b=~{`sgsh4;`*`1__r%6r!F!z<8XNh{lyksM zJUN@IkJqm}yo3|>>(jDd_ieKBnHFAu^JuWmduG^Y=+eALJ3j)aC^)@98S$Tar?T*4 z=7Qsq8|H%~F%!ozzl>uIy|W=NRT6!Te2k!(HqCf*RycAS;~IVf++S&Tbn!AY2I6gO`!3l@w?)5)1kiEF^4_Y%DB_G zxdEFselqfp47Z>&woNsM^CRKrAx`Xgt!spP>?GcAb>F8d%;95sKQ#Eh)RdPohD_*& zABM~gKm0!9R^zd<nSixyRZe$nPL|76q}{aWV0Z}y1Zu+&(Gvq3cdK9Q*`C=KVdAJoNpeV#~5v) zZRH6liVY{1UsmEX@VbpLX>I1{S+?I+hs1{`M$?Y^c8O#M8eFU^WhFb?PMq_NuK&kb zxMA=gAI=Nqu1qD66K|cz*&qCM-60FJhq>67ucy7TD=AxdmMNc!UfhKZCjC={&Z(O2 z>Kw^Sq07&u-}p0UOFa4PqQ0+JseUf?^m z$PdrU72howf7BJ;SJ{1yQQ%76L)Pc`MUJ?I0CnVZN3qIyl%-}-rIG1JoGG1(>5`2#wzXB_c2r^2t}83U}*%}G}tzmBm{ zAX(;G*v`H@K0e7k_Wr!st374C^o3v5$-x%pR$z)(|G38G)!(_Qje7-Sn_1fU85hPy zz;OQBQ>L>Pm~E#~s+9uK#lf?M0US__UX_1AL_v1971>JbCd-Ui(i=O}rxyzV;2 z;<6GLBcX@JcM&{O{vi2)MB81=`O?jXdG0>ogg6g&Nxl5ydFhMc>jB=$UUI)L^XAH{!v9cjmeGdS@@;I$xIf_-bq<-Nv6LUiZ(om|zIJM6U} zy@uh~2lp>x4OI=qo`{#Y6U9Yj~PuYRb!+E<&^#B-l=ls=tDpW;JI z`E{(92E?Dexz7lH@D;3!J^U5()GG_DKdZaMtK9Tx%1VY#Mizp4OZrK=%hyNJVZUb_ zMbK~k^-B!BmPLPF;e8wJ_O>J0jSjW#9KsK?ZK`uv@ia%g?;2v?zsY-j3!x49KJvX= z|5epTA32nfzDqyPIC{yP_Bd^-y!*{bmzS20u|XE@AE_tW7eo8Ek=KWj_ff#mJaj}m z&X5FpBf}o8rQ5HmcY^Sde52!fdBa)9CwQkb9)5lCu(~_a>yP+v-akiMN4$5~X8?|9 z-obmt3l%=b-aYzE<37%r(Cd-mS->qkgr4{b`z&u_gK@3R@T}RhHQPf=TaaPZ>HbSk z`FiS9s1EwIh`F z^vdIFxe5>I+#=$U5Q?`P7O@rg}_VAAn?%aCL zbnau%jkuH2qW|qHe-GugRy^g$JqxZ=TiD%=^d;ENF80^dPVz^6^;T0ap6)5Xk~(c` z&rA7yvHC0-wmdl>o?HdbM04f|cb)?G#u0t<)V07dPxVZz!k+3+pHm+1S@2a)HXq;9 zv*0V-BTtoGTYAdRrCr@ef7w%Z3U!-^|0b5LbOz7scwY!li?*<4fL^xFW^m{JVd$iN z2A*lXzVsW=L_UQo>`uw_ao|&govC%4e&@UNc`L&ndz5b_)$uP~Se+9eCm&SLThM{; zNlRDC@5g=``&4-gBDfjY+NDhlW!lw)_CE&m3ou0A=_`3`Lh(C`P zeb`6m&(glLv1i&y`Xx9Q0EhY9p8x#yRBSPHOab|g-jA%)o(Q@{Ynn0Xj!y9UK~I^^ zhl>8Ykpl-g*avTkr7UI6FR!34-w{q)Yw_Hd^G57=$$9+Ap7Q7D*EN($(hrS+eNVXW zl27!MkD>lIcvnrCKXb)qE>j+A^-<$V@Q~l~4|rd%cEDpFe5~Vn@y9)73xQY5Z?$z1 zu$&+Dl#QW&POdq2kLK$nJA*S;ld=|&q{S4-SSWcp)X-Xpf4!&8|*vx&?T3G8ye{8^y8HdMl z)&cAA8JI%ZF$L_0<>GH%Ne)uJTd|foiuqgTG9Nk7WNxi7&9O=NFnFgJ2Cc1k2@Y|{ zYTuq2kB+i!YHquocC|0QotP@)ongKd9v)s^o$~s;M)5w|hr784{C2L#*Zo1=)Wp5O z{GgikR!MF`abH@)9pKDWvSCOH-$mt~p~NncA3}QKCg$VoI0L$HJ9a$w>=5X)kTqJA z@7yhH!#3h~44W@Hgt&kDSp<)ix3qARJD)?xrPwM9V#FR04^dW_1TN>4McMS3LB;#r-I8C?7-9 zOQDBoTnJAz9^!@0bm9*Z`kjOpg;K?2BP9rhOdLj}YyOjt;adgm!8}G%mzn zB|6{pDRlN}EZ&ZT#y3FYU7jse6q}a#ENc|!P)~cVDR@eIoXD!BT`vuiqZ8e4_otuM zS#F-1G0@L>zo%S0e1`MGG2r*ozAMMl@@eY(a^3>Ioh9yfXGO;v%2%xpT`&_Klk9Xs z68anbEV<9u9@4i&eEG7nGsL_#*ORY{j@EC=NWT1j*Dis#@rEj)|xPIV*~Cv(3nT=10m>B>z(`a85Q-=yTkleu(tGS`mr zX8Idte<;S8`uou@6NU|$=J&srdXiPu6P>DA`>XzH>d1fh+oiI9$ER!2_igZf9QfK8 z1NM6tMu?At|5pb1pAS5h3yw4G4bL>=4$=p7`~>`%TSg{>_c7WdpDC^6E#kqTQ;!^NcyVngj35WKGnXtH3`{Vy} zN5iYY;w3uPF$T2%d>eQr!E3F4)8FxC{F+C>N%;Jl_T%`JllY{@N7+{?;7rB!_!@{Q zOwM#N8_?&W564j+STu&+`dPNdnt*mTfzo=?0L`#l-)ub8|=IwPU)K%W5)tuufz44Z)V zLc~TH#&VG<9Nj`p@*C{OD;Eaq#?D&G#0n`(o)hgeo(-Q=NAXnPJuQm9j@6jX+A+|G zwx`mjDto1IZkIPSFe~YVO59Z78DR#ZF>rm*D*+jdcW8*efViE5I z%i;))!_Z%}tc#dT?QqliQ`KzYoe$lG2y(CdwHU(NX?EjVW@BWwg!@;X{kl zANkufc6+YY_?eJiE!?mTMA!Q~dWwz?e*CYU!n#v*=bfQX!xA=*c_eC_Z759F(Do13Y>XkPR0f(G?q_EaF6AhOv6++ z=CO$P>celrQERDrTw}TTyeK!*n1keIUhrL>iI)vMS*dTIW-_sQ&h{L8sA2jx$4v`Nt%(DaZ+y921;n^zsxP>w=QYJ<$TJ}V>lYP*^#;u#oToyB( z4$oqfP3CglQ$BJEZ30W*xpSbk?p3dWdIo-lDO)qq*zdv#k8Wa~;_%n!ga|}7EVa#=q`k&#JIPgiR@-6QcKBcnoU>`WjsL~G z*IAnrfRRo8#ne?D(LmpP+l>!H_r0{hwyC0?&J0DlhAD%Lq07Q)O=aT`xVGm8#+U>j!YAypm7yRPe9gIP<8{h;5}S@J~nuK z+(0`TZ^HS1xxyct@34yB$^qBN@8`IlK%dpu{{3nq1~k~OF6mgxMX9g8sZWcktNy8P zTY>drpfBfezm#Wc?;Wqbx40f&-kB;vu5@mO7>mTthHz@(w?q8v8sVRFy^Nt`y-Bn& zPA3rWc6j+OY}}6Yt$*H8d0O8EkN1haFJet{h;g8E$=VZt5BdrR)8yS}0 z%C+UikGyp1bT>a9{7&4@kjSXx%*RtL_76iyz_~( zoPK?D(cZ6lFyy0j`|25-pa-X3zyy83kT8hdSIzd z_xy*ON8x4Q)aO*CHWP3Cnw6vAc@WO{p!-z+Jo=`X7}ftG_b+qro_mq~=$^N11CH`5 z36{=Y{sDL|fot_KRjHLcQ{JB5^SIzFxYK~8HJ{*CaBp?BM z4eP0J4zU*O@f7n-rx54T_M<OYA%PGHpwN z_Pg>+p;2j)H6V801uuiU_U-eLi!uB^&tCfk)^|oR1mt>7vPPubC?6Lex8>T$1)pek zPKA%t{os=%-+l}0N#**Kf8pBG+`ahZp!_whcg{|Ak1%UG7{lRXOsWN485$y;tC+Te z^v&SseB4vM3%jaov}~S`&GW9f?{0LOUv3U<8~VmR#5Bc)t8OlR5UqUtSpT{BeKcm; zJ&dIe+7~|WjmTfK^Ac0J>o0zO&@t%`zbTs_m-Byp<3_QFhnN44)n(Ixy#qRlb`No- zt-UJi%e{Zr!!J*~ROyc?7dqeR+{M`=oyYR*0Gsnca**rgBmdlPPgcRv`q2Y9$#?H! zoq#_j&iRv=bUdPxTYMeTqbtXJ~zQ#1={5mSHvaWt`^_<0<=aT6>uCBfcl}dKB=a7Tkyf?zI z-l(d?F7;#}k9dikig!+R^|vwkYqY*-y>nKo1OJJY19CRFa!`OA5LcT|o-JfgW1y`> zJawN>#=kg~@wtrLjq2yx5xHv`;N^ex@{)Cu$IByipgSl1JN)0@oRLBeQer|SI)KXh~q|o4|PUiXWap%U3>5v|fjL+vh zX$W1Hi+)s$a4qY`5Z{5E83`>ZMn9l8SySaN*^TW!GZJ2MCC`q_F`YAcmg3%RBfm61 zk2Bwq@NndINsRFviiCzovckx0Zkl+p0nV2`VaFeB*&GeE1*|=Ek3DoOe3osbHm*c2 zbY6bnAY!h$YVX9IcXp&+We$6t`Ria{UVAMv*q(XY9(6kZ$bU2czMd96W8rbbbw-Hp z4<`byblN3pYO;CC8*_zFIqmm?E6CvY5d@i1FFGxNUZ@|@>(p65BwIp^L&)!XbFHb*c?{#CD^n3Z&@^qSz4F5FE0 z_wct5_|Hm8&uNc4d6H%G*#{{c#C$pS__1>tf6g4v?kpQYUFl`n(&*{A+kJt$UA))x zljzbyKDY5scBW@@yyH)^`4>B=Y?J5${bVn0U=G-dPri{Hyl(JM{%2(md%4IVE2}m+ zb9ASH;(e>Yd-2L})(L1Po%9~GUYyaG)qpYCuyAh|J;OA9$yUFp0B7Ms?El+$;~r)RIpx6{4_wV}PK|3RCA z=c8Z|z0~(H;vzeIW3$xG!^AckY5!sPE46*ub+Rd+X6)zEhu&{0VeaKOdBa(Y`B$G$ z(WmBtfr@i~e;4*jl08CR%>Bx9LhN%)@3`t*_Jr4Eu(xhlhvHt!jXsGE3Z-*yFtmuA z%|7M%>^J?AXqJ{#{ATN}(edO>+;_C=toXx4h3G8SqeqQn?_Pc~F>E|MI6k@M{Bt@U zX8kaEQ>g!m1O9k;Sg1c)Ma=kY&PyIO65NkVj${6rls2n0kyB6_noCaJbEYS86u&hs zMBF9N5lSQWIxM#%g#KzH_aw0upJmms_ytdx)?^iNkqSR^%=qMX|JfbkYAa5x`!StO z^oPqir<%Tw(#Mm#II{s^@Z&D+?I+M7t2@?BY3@^QcPQQq_JHEU@r#9w?W&~r#*>AYis%PEMF85{1 zy$j#8f$PNE-`>MK{9JH^X=$U4Ew{5L;?>#Zy~}SWjnT?dKfTMRcJIIzQylQ|ud`MG z+_}K5y?vdlGU8n|R{Wt=>BQn3JFk&8b}e7gtsLW~H74sQtYq8TNkogFf4iO}9Tnn`Aj;?5t+4d9LtQSLGMi)h*|kFu`@y)20m!|-X}X^&6jj+ zzSQcOf$kE{eZ+vA<1yD(GYC zCFBjYEGT^g{qof0D|@^-VH1405g8F&e&Tj2lj$Ef=VAJN1O9u>pINqL8!;#|Y>rbl z*DiY;Km18wUY65lewo^Pjq-MxiW0lb-zc*MoE`Ix%eot#nE?KDD}T;0U&b8im(E{? zdR}Ah*!CQDIJ#eTGfc*ujTJe{aYSboGB@Ryv7Wb1G;QPkzAR#$z}p6GMdK@DBjQ(> z;qgh(`H@{k@#4`N3Jw2#e$9iqWt8vHT&;GzHowg{i~Qs31oN=94;8B4bpJ5=EkH({ za+-_O|Ig`LdP(_3Q;6-H!9VR8_PHIgJmQ1+bCTO8zQ2Qh31dT?tn;Md_GtGIC((_qQYJ%TNMwrq`0n6sUnFUtI4(f~7&mTt2<}&uKQ5SjXQv2$s z{hRoOZa@3!=NRugcTKYSS@zCibj4qnBNv<{+z1bdRyLg(cbmcK zHz}?%{<)2Fgp2XXO2#Vrmk*xUm>ECbX;|yXWgP?^$@58^jkj@5sDC9fcl6CvJ^K}B z;kI3;n4;sW+p}p_>)#Q3Pj4s!oRXy|x+|Y&d=D-# zl^2kk*tfuut1xpkISM^}_@OKCxut*B&}Jeh(j#4i?(Rv|A>3*9slF;?9=vTwhiZ-u zB5!TzsFDRsj$_N0OwAi0PvT4h+0xS8!9CFK<=N#A`OR}bq@LFPcHC$xgN(~( z+u_*H^xaf3wWV>+?K3n7M5#Lyy0>x8IkLnVG~_{MnlangnjYF|5idl^;UGt*Y$NNe zU6ONPsCnz#d#cfS5!PikG9PrUH$62Yd@aiV-SY>Vj%DuxFMi#;t=JA*XKF8q>5=~n zuarqgif_cnWAQ0u*J&J`cZ7PjVneiHpS7>Yj#ysZ{YCU(Vr{7BrRBxl=GOyLt2w`3 zF!az5aey(3v#YIPw4=4FmzD>+uVnnT-W|c5M*eBhXz~I2*cXDHeF8nT1^w5DetQyK zX-uZAbDu&FOV{osXY=py&OTpe)?V~&FZVmyI+*9I2Tc7tI&<16Gez&zhTh3$4fyls z96}ciNu%aY-P{L5nN7kaVdI{yEwPVpKtpc@AwPKGHJH}x>^~IuJ0;y)~+P)ZOFUi z)sy*RWWG8_HrMDl^LR@X9iKo~L|Nxa6h(TLFn_U@)AJDHz8zizzPZfL`Rm7{vxb?u zk`vhiAMpNvV;k_(caCQl$QIE2FT0?YzEkZ2@uTblwUvSWkdFP}*#_T&7eCrIuydNq zJlkL!{Yx%9`e?1@Ph(D}&jy}7$+(`99fxj_?N;p{pY;T|OQ0JZ8!ms)hWlccL+hdM zWW&7+?LFLk^hl*qC%S44FlGA3gY)raPch%iev>WdlymSdTaNvMwq18O# zGG(J>e9^VT#+Mz-xGGC_!)v~AbDqRj!yhVJNHE;^Tga63v*4(KDD@Gj%$90%acFUzCM-@(PZ{Hx4UbZaC zy~+tschX;KJ1>ttvz@ak6YyuwiTZP~`N!M*qFC6wj6*O>KP0?)i07;UPF0_|%&~f> zdfq%Fy{~y!IaV5Xk$;@6!!$R@4k(Zu*}j5f*DH3E%4hNijx&J7+#SaiNEi{-#W$L@(~m-E=)c_AKD+zM9GWU7aN7vIrQMHrpyMW< zx6cmsOP&>{k$ex0-yEg9#@B`~V3t;QrwccXTXw(nRgAva3#I(v7c62G#l%?jU9lZQ zj`+fIe3v@>w6z1BQ!*nRIzM0v>j_Q7m5YfhPr;7AgYk$@?01xzLTo|49Qf$Jm3Kb` z2E|ci&&jUeNz5dIUA~ieN!nichS-W?EUEF8FF=3o+mSC*MH})vl#i=8z8Ck@x}{>! z*Ajc$+nyGe4zRQ@3;WL^Pjm?}B-#8S^he@=iC;%w(KIt9N}gmjIh@*~Z@jqAN~^x_ z{0)U&#P7o7)ncdFaZAN2bq9z1N7Ye##pHvCFQi+@(r}-Gw_+?!g zA+5(vkKkj-CR^Y+I&*$vX4oE^o;mkZ`pU4=kmWp`S=f^PS8{am6LauU zS)(Xd9))m6oEiLf58_vAI>N8sIcp{saqhH^1>jq;{_nHyU%>t~i*|rv_s7`t*H0a- z-F}MS8doFmYCP@P*Dc=<9oD)uNyum2XvN=V%)PAlshnb&sd2aqhNLwqwv%dF&O<|_O?z6mPYi_1 zku&1z`E}o=O|_@7;pgSIzZV9FvZ1J%{k6J%A9pGNB6NQ#-lX{@srjeu7{75|M?#4QspUpwEleO z3@WWfh>up_|BBvi$h5~lz2ct(R=ftBCq9CI6vy4}%d4wpocq9?_GW2Z;wig5?%&qF zIIZs~e?@n@d212MlYECfL*3`9H4E?D))+J|LI z%TFGI?+(#M-0o+5nK?c%Mf%d2E7(VYT&av`@@LA~xyjg69}Qf`+;PY%QvE%XgZX3?UzQNHRlC`^PTjU;J42F_%G@Y z=EGo{YhJNNgou-HE(>e(QF76b!XMt9C!)K>+~yl$m3r&_{>)I%L}R#%2fKq$@A*F3 zQai;w&lzdBSHPXW+MMTsZ|IkO{I=-;{;I)&@L`R>P6O6z^u$m+r+)=FxGmJ#q%f%PUhq;*%ZFM0?&-X|jVk-NuF6_P0~ojw(+Fcn$E{d}Zg4xb_8b zG_ubJ`)aD{YfOFYpETs{#EhA)x-n!`av(hH01x_{%cpSX*(t)yP<|GU#M9`UslsC_ zKMT(`Kf!0k^zZe(!|mG)44Xc*&fs~;E+0F*aXB)BtP^$l~AhsQR`s@=)hjj6Ka;MYAb+0IXMWL&vD zx?fjt%WkUo;2dVA32w=la3H)WW||9L#5bDv(Z_SuuJ99)?9qn$R<1@A`$70W!a9$h ztF0TnwtY_9YR79|Z4g@{_scnFka@$Nk7X<7F&|8$Zuk(=dbcyyk?<$ zv^KDXTx!X#WYCsTY~o|A*?ak&UK@XM+Yo%e9K`?sjHmP6v5=>H2A-w@Yo3cI>=-*f z{o#1ZtBbjK;{LHgJdO6+{s-`MyN##ZI@#L^pP82nf6CqwP7bEvsx1Xqe;$IXdt6+} zzW?uVwK@e?&ro(yo?L!%b#sz+P}@IP0t}VdIf|o;FT_VnpvhIh93(cP_qronx@ZUQ zrlG?{hZi{8#zKFnP9r$z1UGu_$y*S8;I%oGw%`%FEyZ}h1+Q@y$DpqA%3VmgKJ?I% z8>~{@xqV7+pORbk7e<%dPk;K3Ex%4M;u}th0iR^uYftu~#$x&hrf3ZNYAN>jPr6q&d7-iGJF}?`&)p)&*Ym z<Ih?K0P9ENV=Fa^$uqSs#xV#FVz8YDIj1R4mJS8Ys#D0-pY)73t zzIC1jOsti{r>F4nOWR-6dbq<&A=W(uW&Z>%q|5urD}{bz^qw5qO69u<7V?Gj)uwci z*Op^@y6xF|-Ng$!O!_A0#&9Wi?I)v*UFWrHe8Qn@ah(D7uB%t(!w)g~;Qd@DKajO# ze@@w6u%`8#Bh004F3@L z#UmkG52(DCQyC}|e!nZ6!5i|;qu|MF^Igu}aOY~9zUsf}BzN929*s+R@u_1n{E=_b z6ESI7OVUh0@Oi)g?Ed!K@BLXN>CXEM`*+6RZ%=Qefd^+^gYJw~KG`hJj1W)A-%`$o z+OH-@*wF=6)~^JwvFD^Q3z1FvtzEv>!VT#BXBn63SBOZ@G9H#0%r|@ba|upR=!`O#Hz9fimUHoy|BpvEwx78Emd1 z&AFO`=}Wm5>Ra?H!3S2q#U_v?xYYMkeiKNCCI@Lp@7Pm0N6*{H2`XX!B(@Ro@TEFx zN99!J>Xf>w*G`=Mon%96Zj+}cAT{ipq@#pDCt3mu*&5AijBei^X?;?LZ% zfL$qkZv^*tT*aOD$EWl!SUumuix~;GreC^`F}J`^bhjZjDo85uP+&;bDo5FYHZxNA)Y7tuc97Yr%`gypQr4 z^Ytm?6(0V(@%Fj$_!{-ou;UK7eSQaiAtxYf0DtXGc)uCiuy>3xWHLU^gJ7+FJGhzz z4%sJC_FK0d!LPPFyd9-Ik7jwaFFGpbHr?c8Rl;w_Df=`yQ>?!kS}DHY0sOU$afeN_ z0{9{y{x~%b_36dJWUKufeP_}xd+yM8P7W>k^SdL!_(X;YNFT{w_F(d8d6e~Xhi9xL z`93{C6Dt4WBI1V2$7bVaPs2CtRy+wERoOIw`1oY)x8O_w?eCmmdglDrwC>Cfbw@c% zVO1o2eDmi+Jqs@hEsLy7tgkk{7R8Ofx~QakYJn-AlxddLoX7hgRFv9tplfSRy47?~ ze9Uy0yk)vQ`#eTl~Z=%(De>QRLh;=;SJLi&KVjkVh&o5`2ZrQIf z_GzoU35|^BPEjtRRpuv8yExNoS!k@5+C|kfc3B0}x<3k-+ zjyD}?fpEvH0O!mScMq|jMSfy*$%O3CB2(UALT}r9o;iErt`VW~?+{~s)?{ANI674R zjJc<96W<$5!`qupbK&eym}OVC`b(=OnV#?qCh%2olon!K;JkL_=Jhf5@}?Jr%CDf^ z%*@cTVYi05Gad_dr@s~IjxDO~zKZ&@@AsEpLH#4YLnoMXZo|i`Ecrxenda%Llm2?e z4ofZyEvrgPtB>(ruOe}vy5;AY*Ve=*NuJk$NzqT$Stb=-@cczW517g}Y`T!kNvo!do> zFqiWsHD7B^*1V&+S8}O&_dl@{H!v?(Gv91QhbmsT3!U9~=ZZb>S5NOq!Qs!+ybwX( zDGnq(8zCo&yy2Gctv>XIv#-k08i^t`?%JWun&=3%69sI zm$aXiGt&L=tUvjm#4ROXYkkafw*T$SbAnrV(;9&-ORm3ZF*Xx4ar~=w3-dzokm+cm z%)-1d->r^@J52|EUVp=If2lJ^ID5mK_MYsBfcJ)=saKn_iF1)1={s+KR4Y8XEratH zn=<2zhv&2$_vN%SmJu^p6Y1V}%j9m8W4e2xe}(nz^jgz9EtDCX*LTb08U9hG+?F-) z>FnWg;t>htOLC=HZ4da>oGD#f%sme$z|9fh@l_lG%PgYnh*u;Zk6w=!Pw$u@N3 zy(@k5xBGl`-$gz}!(PU&JqOtTW$oxS{EM;@VBA9+z3g+?4)0uzY^c8&ydvH@K%R?q zsrZXMp6gUb_RLn`+(r)nOBvkd2mInG&)>b5HCpw%2-{Au-5YEw>_fMxU2M~y8mo7D zN!qj1tDsdMcEn%lGvYr!J+jn{nFw4Z#0SMclCPccS}o7oP4C-0mv5tULk8c67I9X` zcvF8BZ49m3M?RXK1ykDd^V@6N<8{aW;oMl=d9dBY!}Qhuq=^$J>u=j;$3=Qhbg^E& zJygC?uxumN{$!}UCc`R?LSMD#*(`!Nb(|4*oCX?boHZI};>>aS$RVoz2gbQbxVqrX z`oWC<-B>O9`>3&Q|6h!icy52Ot?#TBPapcgqvnlMvW;G(+;@uEA3u`#v2EWuvg=2` zO2;<9CoyEthrBa4l&P&Wbgq6+&IR-xk093phK5 z|0>{UWIavyP|N4l7;FE@Ip5)+4F@)h?#gxfV35b``N48+7}?dP%z&qCaH2RV`+Vv( zr*KAVseJv0o#y!MdE`f8cVqMS%U-Z`kiFjO=uwOMibLePc$Kd8%1N&~^l5G@xH}_HV%4~Gh(0N63$&RS6)mcl(v)2;T=TlLiZFkE)V11W3 z^UnwEC5_iO+Mt$7;?^?u6gR?cn>lwC&O z(YwQ?_!M)hku}jf0$mmJ6h6Fp)5EvyT-hXwzk4>Y;|sF}NB?2`S$CY-iiPAe=im#@ z@j0=NxlPQMS_7%U7UxWptW5fU6`i*Vd|B?isu+aq@>Rg|j_v0>ZR6U(w=-Ui-_a{3 znME6-r{ZLijVQQ#I(VimNN-#jG;?Ji`;eD&k*innp(7@}rD~^ly696fn~R^V zxlwav+nu4c20hmd9LPYjnRaETHp45*rfTCB;$|A4M(qx?eXwG)3wx)-0SMeiG9 zipQrV?*<2VPcZCdXFq$M)$ts4ynH9=hnt|cXf1sqdMoClu~au%wol>Bl-E?7!FD1_pm4mdzZKq8sq} zY~3kc@jN*)YOk8Q@>z-#7H2<=jNb-~Is+MBr>BH}%|}tj8iXGuXTpQl`K14=;prx1 z!CT{>1U{OnBbw&({Qx}O0I#*7gSu@0TX&F}q--mdoM68+;>wK>GU_`3mgKY7xBnD!^>&g2d;w-V43vd2I?W`Yk*t<}wU^Ag2^MWz@A3 zS3RBQojFdjt@8+klRM~NGOTks#D{*)+xsm0Y?@s-GE7>FwP<1YfX}MC8l2}Zn$*p? zYGu3dpA-Xc&P+q*(^{g77S32r?kBkoQxms@%G>X*C^bvRWT_qB{p^u6Q~vO1*RBU|4$d4sUd_G^@o`k2eGY&8KcPp90tW{OL(&zRh6o>eE}uleX>KTI$qNw>IdDD{ly&wC61Fm1&&?zB224!-cQZ z7=m+lgZ5cFK9_Tb!vntbEaB`Z{b;YV?jA&6B!#>8!ND`&&fve*M5eUlnGEpvHT0Wx zSoj;e=)CS6&Mnj#3}cbIpPdh1!fSotY`=@M&9^L@A)LKo}j;= z_1Ut!O0;3^M=@T-8kO%uv&uHqGoAPc5poB z^~on^O!Au?-}{u^;PH)kPP$Y&soMDCpJi++t8t6Z2KkbADl?1sf)ClPZzd-$X7iVm z%OHM|&wiYEj`r=JyqLZ0w0)AXwV}UaS;Pj|hot?P*q?Pf$*0+dysjg@xZlQ;scRxH zXMp^eo57du=fZc|6TRFNWc{hc%#}{F`{!KuMd*SUu(CgiHpjLE&?&-i>zc+wt>r9& zSE~3dr7iKXVsY|8wQuYy@TxKq@O>1YQ|&nZr}pyY+WzM-$~3s~^e%Kt`6?3^Y{gnb zKqlowYj3sqW*c&dizCm+-C|IxmHmKGyrBn>ka==J6uVRPcCQ zG!$=(hU}RxBTiw*_{YKP^8E+I$MAPk)BNR{XJl_G$Mj0%w#c7TCmVPp{QU}i9-^OU zz_e)nv=|<@;Bn0@p$6hjd{!H)g*mk4N9?uJT2F^fTkbl9U#nR*;^CsRV)+jcA8+=LYdHar zZ<=o4ah=VPTlRJ6>BykYjmQP>dC8l2rt=9EL-%xCZKl5^=Ei>`nZ6dq33YzrG-w*D zThXmO2ARq$@Qtl&lCE^=>hVtpG?T5Nb44XbdGvvvuiF7_g(I6*IGS@e9p2U0jK2dDz2K1|J+NI{HY+~P+>Xz~2ke0=|EejqbA0K46?VPu!wSJu6~ya($n=-U+iV(c zrmuRJdw4hc;)*G6x^Q&qmKM{~F~{`V_dpIr%D1$HddmGKE3rPr^HBdxc<~VTK_|Z> zAHFb|WS`|m>hJRpw|Q?adPR6`yOi@D*gtv}<4zzG++W=NS^UCHtBCF6Z=VI-V%G3E zI(z7QJnxuo`X9|1UE1%@DtnYRrJp+3SCDK7^*l;D#n4>kH_`7Q;yN?2qh-(QJNb=e z8bcpvoFuo7D&4ekbg9OW2zd&luVhompV&Wza|6*$QRv*nnKqh-g2wzvdP+K~DJQaA zbCLFtB<6E=w(fPCFMkx<0ebF7wj}pjTQb44_|M3L*14=X^c|891n+FGV!s$LZ1nr% z#Adk@Sp<%YAwgdg(Bb_dVGZ(x542L{EreW{|n2;JLP7(Su(poG6dcXjM8 zy45+4e;Iw29~c?GPS3zoqKbXQ$S(H}wTP#?d<8AreL06qrSo{Nv%15SU3{Wp&*#8N zgD>}REpw&tqPj8aO)D{7jx9VkiLu`Q=FQ~TvImAeA7eCD`PSapl@qjTdUJwvrZQqUKd)g9Ee*hd>~ z3C_?M-d_>2^{#9a_`p5`AOT*Q8 z*0s*q=ipifng?0C@maT21J`zaP69W^ceofl;EU|uw2mCyiqYg5#&(D6qTMRnN7)Ga z7JL1cM!tukd-c*8-Q+CUYe7W`>qr~AXnRFQ`L>FTcma33h=%&!S7@ecj_|jez)0Qslmd&zZ66g8jyBv7_d-L>s*Yl6w zrgraIIdT2wlQnBMuWV**I=yUjW_nh0TKb%Y^qbn}2j`sXvk`l?kv&Fszp)GLezgbw zUCOjojEE-|`{O@Be`qgBf_>g?70AY|?04W9I`D9edn1G+&iI=$h##XnXY-Q>X=5yB zVG1|V+EMmdE5eb3n{k}6W7v~s0+#`w`WK9GWFjA>;Ty&$xqG zzEAeIGG|N+k}D`W1lc1D9b9@kbZDZi^oDS|iuGW{OC)>kqdtqtgbZ?)Vf(1h5!bRh z+7`1`%o@7xKVm;@vJKvUMSJ9sYtB?^iTUzc{@}}Rd6V~p{kZb5h<=*U^(re}@Q><& z!FF8yUQ0V=w4>*;dD*q~nCYDypG5pk>$D}r-vnzh@i)QR##qqv{dWLUANv|?Jh0zz zu-!ff4F5I8u`S*A(-Yz+I=bi+7ch*hZ*YVcCRPLVXOytb!NpQ#YO3LWH z%BhT@Oz_aa)cgO-DHHmyfvJ~MCgB^K&6$h46X>h$IcYur30#^hyzwx{yr7t+e6w#} zNZyv_6ma(6>dOCvejOZVuQPtbI2%&OpKzX^fM=KSTr?9bsdRgV=Uxm+wk>C2*=Nsb zKM)shm-(54iG$ic1977=?Ms+M4xM5f_#1T*y*JhzD<{;G8@snqvFadxMLTDERq@_3 zW9Llec_+5otN3jt%yB1JAL49!+b@vbmv6X(bNJ3Ul(oc<*dJD#PBnb zy+-Vi2G*7viP<#}Grxhku8Onb68H@Ju*E9z6&1(Y!})jt6KI(n$Z3gXggT-brX!XS z=F{qEBtFSKFjKUq*bWUfe=I4qTAO%IxqjaF%QwkICe$Bi=1i&1=KK-X8&pT-7g0V+ z|24c942{I}BP)B>XHrM-=saxC2RWvg6SlG!bCR6Oukc|vDYmWkB+cuxQ54(P+M30? zbo7+uxDgwyiGGNeU)YPz^48Tnn@2vI?9gS{-i5?TZp4m$=Dztd z>Y6yCq_>2#uCNPbar&|464S~zxb}}CPhq55=)t2n}O>ST6N4DoC;FNtIA=c=_ zXBRB$v(D{vmF7M6ZjC1oR`)~p(&qK_H5MEN7l9y_y<_HOR&Gn?=O{qq&(-1*ck2X)nd$Z$HDXK@o_YUzI7W4@ttnz!`_rF zt~D2(b;7xPb}pRYycwI)qpkQ~GGpgXA93<+24xg~b|*9<9$UAHm|6r`Q~yoyq~we7 zS2oeFc;MFSeXSa2Y^2tB^O9fZw{j_*bw$TddlJ7gA6P`kar}!PC4=OVl(qYP@pYn2 zRiu0c^teOo#qjg7wf7f>@L92=*rQNTcaLl+_zF9;aw2g9@!VzPdn(V*8?XA;-v5K_ zwdZbAd!4}>uQ%4K{xVR>x%Bx{*#j&%oIBg{k|W?dl@(sZ`(F8H4-HiIP`(Y?zRPEc z@y!um?|`3Q18&t3u2}2H7hgx{U++{#{4Jgqf4`zJ!q>vV9h4RBc2K4b*-&}OQ5*6h z8PeGPB}mHhgwoqlphE7ezjxVh6(U8wJVrvQ08%H)G=znPG=F zn~W@ju4N6g=Subz>ABV`RbKDI=vn1BoomvwN-bZDVh!^5H^(;I@KthL?%`kY5It8N zl~aEoRwkV}fVrUF&UXaXOpCJVW^UTp&~kEeE0zCf_)n)lWM#~2CcR}daBU}d@0q~e z$Vz72)1R2NT=Bp(${aLlEqC$0fpZ2nt?pR(U&M17Utk=&f%B`Z@D%wshd(b~DDVVkAM6uLKv@3nB zwRElPkw@O5HTn5`Z}9o+7Oz=VxCa_3=UFjPtx;=^JWG1=Qua0w3n1^Vvi$&gANW_* zeAhY5?=Y?<#4~g@iT3kpEnRl-bKH~I&Yr%K5Aw;Q4tKEDN**<98Cj=d&|Z$S*8lWA z^&R@mT!mewHS~<{U)lc*_p0{!Gm^8g2PaY4DHBCkvgXpydWwB#!bJKjqU|Wpg0y`;-=Slt?7<*yMfv31 zqfUKSJ$$~y2L0%#Y&Eg0iM$W-u8(^jes#8)YJmgjxtlw-Y`$Jd`=|8}pQiKdAo$vj zpBZAz>i=BYQr}n5cbnUHjL$yCsJ^j}=-Ypo_;qC(eK+zy$?ba|yfce7(`e%$YiOz` zJXGkD-}>(1BSwEU)YV-WAwK<-5$%)@_V2XwI-jNBR_77y=lcd=5`16fU*puiCO`e` zu*;^|Wy#^pp9Oq^YoTH-DgEyP{?z_O5A`3S4Z)zkCsCK2S{oL@p>tL>7RBdu9>3su zk?;0+QpU1_SVIlvwD&ql8Q=Fa`c>Y(n*kU?z${uU;k}P?xACd+!q@Bmbh};2T?X~m z@G1M$lr-6SDKKw;Id=}1b0(G-kNp<*_RIL`9FQMB*8Z{h3}OJXL#Oyd{qxn2No<>n z9O`#)7&)6K=B&B6z~a17-NTumob(l6Yt2qG#v+fcop=T??|v!YYTdDX@p0y$_!JXJ z1}aU*MZ_K(&f}a==7I8Eik*%B+b9J#f6&F!%f#yy5$<-II7kVUoPMfl|>{tx+fWBR7Uw0$u z39s!zt!Xl`HT&Ox_3awtYpJ@*cchfN*&N+xB^Qs0ZBss!>{pY6jqU4w zy8)SxaYjMF>|FEC2Lo?&Hp4$}_`o`Hh;=1!^Vl8yZ?&RNEar3Z&g?k0L~;jsD*;dP zrTQY-@$uk<-`L?f;3+qG_gAgft=KF>%Pko>eunCgro76kj><2mJbY*GXR&oBxmVtK z6+0uu8nevm=!t9A6hq4@^X<2D%-RR5%$;vXPke5TzV8EPS_gb^&6*{*< zlRJEsYmS~BePYkq_iw8`F@KFU)+sAJXqRXFC5+!IUrU>NMy#gnHEZ^qea|+Pi;k>Z z(-c@b-7-(_W}ZE~Pxo|!>!N4Pk=QuycP>OHois;6+~r&JmUV=+s>-52m?NyclgDNK zzG^9VhZUi#o2}o^T;hE9#%a%c?%2ICH~M_PC+?cvXZ5~46Zj4t}k#={!+MHba8S}*z@Aj@JH0EnGjl|a_ix_PUwfeeyrG>qIHztYoVbD zi4OwFf2EFWXpfGW^rg8@V-r2S@#xI$R%9k{bfD`Y+K!pnTw_9!{_{W0 z*|{gJBl||dm#Z5e%rQC1FHv@D*6JrjlYK`AY#MuXD?+z_mpRg-+tIgwNV#j)=zWkm zRPWzJzKW5xM)=@|wB=KI;CP4cO?ro%5qIpmhu`9#CgfdX6mObXj&#FgUuBHze5Ols zu$K4Ats0G95)S1bYJJK zUQ|Z1bp`FE%GSRvv|6QuE%WSd$-DS5h^!vM7W4R1bGBukv3b?7W^9?A_IEuW9A7Xe z{&CudPT3wWR?+U(L+iG!J>=kW$GZbvVY{#A?fOCJXqn&I-!(5<=GXT3YV>Y1xyj5G zk45^j`nnD>2T!{eg2{e1YH zkL%n3`+H&NajlPR0`A>>rg4Ai3w%D!@89ydkk9A&Jjmy-`JBb)vwRNak^el;wElqS zYI8n3`$zY?iCMoF55L6k3xecRg=|~Ae>?HAd&~vXOlH%(K4Wf4U>lhc&i4@Cy_k>Y zNzSyl*EY2W+B%nahP47e zcO)LL%cQr|@VC^m2xHC>LG`V9a;C&EW6fnm7eWt&=2>Ivp!}<_D z@zZR4A_tYhi|lwpw$3XJ^II?sd-ta4+OzvV;jqT-|6F8ZA$Szdgp+3QISD+rlXF!( zf><@VS;E0y+MGn$ij^7jYZn$?5(${>iIfXP$6ita&SI2rr%W2-iBe`2V>Fag&aBEt zC^w68QShp^JKVA%$~L=Y@1|^xTlNaIN!gv0y_d45^B_5E`OV`G@3+V)~DQ=oj%n+YaupH#Kd_Kw8 zeYC#=xR_Jzbtw65D)T4dhtG{ixnJghvrZ%%@U2H2SbFWV&;rS6*~Ayw^WQ#dcIoDc zR(un>%F{)|u=QfZF9nlyTH74>r8f|7hn_D2S1V)e;!JLDPE{G*1tI^^&QC=L{+e=% z{X1<2l2dA}R>8Ox_zZtm6uWQ)b_RGZ(Ya;d-H)A@_Cln`7iEl$VbWW^@&^7TL)IT6 zJ;lV&tUvf<*W0?!;KzU3>C zo(8o?PD1n*ANlvv3r?HbhhZ_FDIOsGsre@G0=F+7kG%qd5vr;4`s?&KU| ze0<@>;YBA8T<@mw4%>T*&KYk6M-9Jq@RwRHNWJKXJl8&pgS4SK9&T>OzgWe&0>vTL z3cnI6hxX+E`O8f7?D*%vk!)buQN!t1w2wwi{F^nLbB&w~g-`TL-EU%#F{r(!fn;^| zHKn!7$t&L(S_Y5T*N$#3)R<>2EyyM&P#-a4FOe)q*mGI4(<~E=x6{|b9gZC*IOfu? z_InJXMcg4$Wim z1EO(B3|<)ePJPNB^WapjUBHC;m&nILHX1pDLb+QW|0sqpe8%t{pdER^XU7{kuR38& z*H-u}wQLPM>d{y9EKX=Gdu05Nlkg9D_n**Gx}sX+!)}C+x;S&bf8Q{*drADK(|P~? zK&RUEp?}r3&AagOEH=kf(?)E#)vCIB@6}TquK<&t|9u(uJoWY6gU!EO`@-FO^B7MK zGL@iy0=mm~-Ht9Cjf}OeGVl!cN{eH&dwYo-{yJT*i;d-;7le$uvdvm}YqUKp{{FYE zR>7*ahRQ5FXv=K1E3?WUtcFg^nd=O4D&9I>euwmnZ!%P;G`ju1`hV#6Xa8uwi8K4H zb^G1%f9MyV=N}ty-x1yhNfVY*H7;&*92K^dizXU#$eb<9@ zEzf@+yJhhV`x*2i?&!qBc)k{W=;a$li8-mf`nVy-iN!tY;zaYqzt7_g9Bi|xJj3>q zA8+%H7blB_Mzb%7^{R=Q*HUdb=WLwBg`xKgg3$@A2Uc36zcFESuzEr!-`g(^y}y9x zKO#o?1)eD{YUAY4`%8J2#rIoz_AGI>?7U(K@%_?$Fj;e?4ZYA2M;sF@I) z5uISnf9&o%`_S9z=B9tG&0IJk%)jBkCiANkiupJEN6fMb#rzxo-+9=v^W^6ZrTH23 zj5<8`ZjQrqjc*Ou^i1TyL!6z{J~>?8=eG9*?b-B8P*j}QL*eTtXFNyAKmeA(HQ=(AeUqm z_lsZI(T;9U6vZxYn;5&i{ruSF8!wDqzUkuF<(ntRE`NA>?D9u0ja?o{BNjQ);{Gfj zb^IOwg>Ad_d`FM}f%Qr8fD`8qB-cdo<9YXKXz$4HZacSBy2CQf_IkNzZ<)8O_!4Xi z)?+$qevrmGZJ5t=J|lc)bl^AiM3?4ExNAS)4IY^r-1c zYrT@QD|{VA3s`rTziHc5PuX%=92;%hvp)3XMAo0kUF|6jhPss#(6-Uv9jKh!!CKd} zcLw8JPuuwLWI=X>VnD_0U6DQE>CxRKU zdDwqZXKsH3p3of6d^u13rS9AF_Puzx4`5#^_D*bjbz9S))hA5-^XS2<3ru|(v4bl1+H0NVH^d{fe?Ng9Q7;R|+fwo>se z`>^kZp@XVs&=-APs6H;kw?>~e+{Qjla$;l;X)l(>F8kf#JqOpq+m-NzS4QPkMrBjW zy^M|3r}6WAZ^ghm#o}si3H7Kxb?05N0Dl&rFn02eX?m7({r}u%$$JA+gkRxScr|^a z<6i=og4Kij!(h?7AbqNw;EpoR4;x#_2-E5L;K#`QA>VCv!Kz8N9uR#MtNc6n#!tuh z+v~eHUO-Nr^4{@fcaMb!l>bhR;$Gh-y5La3KgK)R%Sj-nTe}~4zo4|qE z72OZB{t~6GzJJg8jt`f2xEDGrwsZ%0rr&;Shfb~02hGgA3C?A#9v?rB9kr{i6@#al_j7hRIG)*y{7}~-civiL$enQfalOYUwciW>GY@gLIymJ#qDy>V zH$Bif-~PVvR2{pGl;8IIls2W8Js50XSbhNgMS-IM*z|oN@ZtYfZs2z_-(!65#6J=| zvc+`PLeztcdXuRm*b;U*d!BIDwH-f9`>J%Nl*$D+6ASs8;oMVv6yW#X73%pnoab+) zJXf6@y}QME_a^V8M`WjhvuWUUp78qqiYM%OQ8G~=KL1-DyA!i3H-jx>D z9^Q1vrW&&ty}ZGfX77Cwe=9CPTwMHZpR1+!cYMKT*H^g%=r+M0{SI-At-hWhYr37Q zeDPdzX4Q6AnOmq12)s_DBJ9a&BJnNd?e8QxpGGcCT@pVJaV?|Lzz zKeG0qy?xP<*lgUlSd5PuCU)(=mb}TcOlOF8p)>kzeDXg=6HCb;2OWGek@cToPdfYg zcW?C-w!8>FT5HncEB8ct7Jm@l6XkAX!@W}vDA)9sC?VDH_TAYUM~r(%qrT(Ql<)o~ zyucl;Nwx7&^%@y}F|<(LYc6oTPCQS(0%s&t_EP_LWOBQ&@Ng6Iz+JFOwWs~ZqLFlo z&X^Z%q*v3Si(;aZTk(M>yC?oOtHas%_iKCZEg{dbYBguXpkHWXwFwr*&4QYx@XzSr zmLU6?iuNuCFX-Lf8xOGGdPV4Q;pk=To;LE(qQg0hlQpK-fg=hn%zb8x>=7UT)L~6{ zT=FDq4H`%AUgpM5{1Rd+i6{Al9~$}Hc9Z6ng5+(?OM)4Av!gGcnv*^XcJZC)lXjHz zL>WKpLNBa5kQQ&<&-z$XHhE96d0MYl&Wif#MF!P(2wW=9@u3RhCjPWKA318VRaM=6 z#4E|!Dod1P$Gd_KUrP>~{L1yvy|J7h?LL33XmGq|mten;+TO$c6M~_X-$TpZ<(3V-%^DMH2fDZSMR1@`tq+MOg2W3a0<-u*@jJmy z?z7!T3_lpzU{!S+3auf9ebiDl$K;ln-*4>5a-zMt&- zuYt-BlZg;`UF5bIUBg+^^r?OYkKmd|d&>D#8@-3|tz5pWywAwup^Rc~=T$`4n>uB*>0ldD(RDP@;c(4(XiOS!s;`>6*{%>LZ)b6t&`K@^l&j@d# zMG5(UL-G4D;VChyzVDw+<>#PhQRk@o#1Bm6kH1cPH;%54e%Dm~*WGG+bbavqe14&* zzW5u=mobg2Ao*pt56#VjUoaj#I56cUcoCU-tZRP&c^Mr)TX5gQoV$=VG=6l9!*afE0`cgbEBBz^ z#ze_=k=-DhA-IJ6C(5Ss`jDhtTKxG*ztEJ!;iwF2b%+ zJY{q-I_+zx@xLvfz|#C5DRkWL$fV%YS;(Se-%`$|qCId@-@A-Yc+K1~6i1HiZW)53 z_CKD9qaNUAZPp&!*)Bap^zr>_+7vw(o6586_zpdz;veX#oE(pyf1B&j!K0_<+l6}v zrtEQa%VUe1oH2OxjDB$_tWK`Uw_RAV^TufIjl7r&t8(_nC4V4ThtTtPZvUdEWIOs* zN46!Sk|$5T8>lOp6fZ@8j~;qC;@q>u_x9=JjG-4JL2_d8hpMr$Ip1>*^LgFk-LXPG z>wojRfy!slV}j%1^&?8hkOwVY^eTEtHpI8IcY=2xQ!Xyw1xpM)7=$SFKEZ%zjXXF3l)OnS8Q+LIMe#!Y>=*dR@ zCD*^GG_B+rJL9f%;Pl3>aTle)8T|!&<>>PpUpB3rrS0hCTh1I?c1oSzU8lx&BQjj* z){D+R6US-p*n&H;?dEZ}JG_W3aT;FtO)#xzxoz~#J+lq&nzHd@dRZg>!iTr<0&Q^D zvJHP?;hFI7rwxxbz5h--;HeaTJxm>&E}uV>E-z6>G!ZS{ywg4>Z*V@4UH%*1Z-8#1 zLGVduu4;1UEADfLP6f#fXtCSvL-Xo)W}P{{CsXr|aTQ|Do? z&R5RFiO!KB{$kIAv8@gs$1xu}Hb+77Me5(@){lM&ug6mB|J13Ul~Vr|>fcR$@uci` zzhnSiun=9)3~o2z`!=tR6^6rS!lr!&MUvm23{*aiyh|ozTV8~1C!auVHWEki&tiRt z7)te3)iZ(@^cKc0GSg|hUVgXAqy@<}b;l5bAEhrQx^$2Z`#k-4ycGSBGloZjdx2Z0 zuky?~k(4^U9ZsD;QD=@HlDKAeAsH9 z3|xW!8>9M1t+<8#`?U?TIx;wG>}wmY;M3ysNeA!1?dn~pxo z-WPA2pE(oezj7{uM+>vz6wK|&_B)(eWzR!bpIPtEDfL4Ca;o0j;OKSg$p&ctkU8T8 z>M_=O^CeUH_0Ku;MQA;IbG@1B`6^!mU+50IZ*#?&eQ!_cJNm$>zGnjSFR3?Zf8U=v z?>aWU&H<8+h|b2gl^rzOfg!jK9e^!<6ut8vZHQM6*yjo4mlcO{h}Vp>{fAG(HyWGT zIFiy=$-QUxb+6Z#_7c$74r~qiFJ3=_^RgS!7qqoxuIbcocb)15ty6veB4>T7?KbE0 zr+j*S@22mg>=)W_o?$;lPTir$1}g92*)s_H(_ zc1DbInDpK(&CiZqVwUL)u2atn?PrHhdp6E~cHp#U}UVNvsu{1&Fobb4w_hVXd20$u(UAy3ayT2 z@~WG&$+3rr)=>7D3r^8XIeV(Z8G1ds%k5O#IdZ~OU| zATQW_ZN%blA8xn<5c~GhGt2L#JZm-BTbjqmCHweoMi9pu$r*x-eLir?e~T(Vc_H($ z@{@`2S0|WD*~6*1Kg)&753EIxj;imyz*JszKIOKIs^7<)WGP3Hau($*otez{^T(^STo)!&wb4Kiy6+nN8u%()@v++yZja$)NtOVAC>n-S(si+MB1TsZ5h z+8HLeqcCQI!$Vh1obiBtr{?(NKhN>C?jhdS#+e*5u`SGG;-lQ%5hSi+$7S)yCb|BY zKC8h);yd(%ej#(nrp*rQAI__;kMY^wqWI6aWDNWZX5pTkdRxCab74;WEcTBsqyNGA zF_9BbiosFm*fGhX zBH~M|6&zT;xEmXIHNHK0yE;cGFKNiNgMYB23X_WEA16k#)m}3+$q;wo6?0CgMO;#G zHu~GGSljz&J8?Go1%1mWch5BDNLtqH<;>OCx8sxNLksDN62>OIEdDyg8i8>56^#{s zZ6hAy@$2>OSPw8Z;mfP@C%4XA>c|e#JI6*TNL~Xj8cUoQT@LfS+MZ20tzoLa&(P-3 zI$`Rl+~t&Oq%D;TxqZ)2T~{tHb)QYvv!GLMn){4>mNu>0-Z(|8Qup0f;4gODEpwlh zs0~+#oa;V2M{VG5H@3TPd@$W^ISd!C%NVJXP5ig=YBT3pa0J1&^Be)S2NFxRu8ywo9hLKi_>4buvPL* zHiE%^3*J&S-P1igdH?b&tQ$tK<$=wZahLQ(xMxajxb)sm8Ou02@d>xRklS9W&GDX# z8`&MbC%ChgxT$xC!q+x9>*J|sn%+hk=@;edOP7Ypr`~{W{V+dk0eYkNv%06ZAi05Y z)~YUgH~87Xn851Pn7}3Di2qS$a4sQ_+dpLPsi4g_kkM-94)*TZXY+Vvq{A-dz0N$U z&UW6nvo?|XelqXnhaTW;sQvz7gLBfCcpiOuV9Me=XHNPFbd!EV53c6i=eQp`TJ6^| zmqz&C&R*k-fmQEq-PxBD{~6E9c;@N0Jm`F0%I^u_phUlEH^{tDqB($hVJ7%%t{_hY ze%iItpVP~{pqNZ7*jxB2bH?mvYiIOnZg_Sg=M4{35~ImC;N?PevFJaK-)=16G<^P< zJz^Ot{Xc`Q@VRw$-Ua(|v!CE|7@x9pG*5(y2YGWyf_eR)Snrl!8)e;sWL|qtDgG^S zeAl*P{Za0qZIjdiPmnQ;L^jn{AF-c?JnAy{e3$Q0-lbtz`x%=r?an>ITXW`}dusXL ze@jjG!CMw~AGoEq`#5`87tq$}edO7F5IY|7JlB5yS)TXdW58ea#lIQ~pJU5aoKe@Y zCodoJT(*<$Lm$jjbaT#F*T#PFmFdj-cFyK+<6QpSe}!+#!aZMu4>of)|1;!NZ{l2j z!LgAu`um1yt>*&frT}Ls#vXL|B_~Llhu|HDqpu4z+#sgMrRy7H2a8UvVNYuDxOpeS+LW zbR;%LWi_#KtuyYrhO@i1E=sPA@PDUh78~MJKbv*5tjPeefl{-axA6)#c3G=nqv6yqtwU$Admd}O zz#CB+_|C7{hrO)l0P2Bkw^C|622Uo&pFKglkJ2A$&7w;k?!k5;? zweHmLf&a)==)wut`C9LIcVL}tMkgL`@2e|oV2%sHM>qPNytJr~d~Vt*#+HvTo;KD) ze!R!VeX{+0C(ljzsUW|6Bd|m$TZPQ@DlY|kXs@y9%Z=XxUkHxoA-EnuSKZ4v?)?j6 zaQVC%zpW1*3Jw#W=h}S!t*!7m^St;x_$GGRo4=dp#2N$1U$CZ>O25C*rtmQzy!O7q z-P3NnQEWsH$4^~%IzDxtkz`{2>kb@!X@tBsuP;^4XQ zEkoM-73E^I*L%R>iN*s1Q$2pLdE+wEv%;l+E_6WWelo`1tv2i;@l0x;iBBs(#aEWV zPTESl+CQrCJ(=m`kj8#6{d|f%=OFjuJBW6+?uzEePp~g&stfO%@3?V3=GAH!Ug4m8BJwUrd}ybFj6SGf#j)IeI!5_#FB-@L2*rdz$Zq z@CEbYyMZqiXE)pZdhqAPe?8=VHSfibOFmC-$H|D!=x9lhClJ~@(E0u_t5x%m_7|y) zaJJ;9Hm;p@U*yNrzxWHgCw@k8S?A0f<$YekTChIbu%T4W#-YiNf1k0dt#)*qq22@2 zPluViI`U)SCRL9qr{t__t=8Y#@CK5dvrpGm7xP@@OQh47zd!h*)%u*^s) zev%KsQIx$UN1?Hoo38fH%qw#8(3MxD^R?8kaQhx-IGwcEdyx@7&Y3*BwHIZve|(E_ z@N&sFQqJAA=&pm{w5FG>jZq#u_FE*O&tKN#`ax7_s#Ray_fbv3YgT1j(}r*?BhO4u2Q{}iLv{BY^#$VW!^W3yJG z4=YzN_Z`KrZt#ykybC$m0em_axHx9wA+05oTk~ z_p^4LK=NC} zWuI5qeBTxJonp=RUCF1fqlvvyO+PsmvtKnluQc{Ea;cHiMmr}oKY0f*YtP^Y`rXfG z)U|o{VUJkoCXMS;$ddL9dcQB@x6TpQyXW|>yb<{}A#xjEwlseSk}oq(y+4Qenf4WL z_?GEWzIprPGhcJ)=J7?g-Jy%W2d5U03>A+a71Fn{tQXDe0{Q z`+Y3rFoBFc$@>KIxN)XqpE!2%t}R_x`qexrT2N~Y02zRdX0{YLPA zIlTRtVK0mJ3flVwWBz#bHmkp{A@sQR8U;gV58lJax!<-9(fK!jy2`XF&Yp@#M-Q;? z69K&?ek2B^v(S|m%dpzozEw%euG`Yxzgmdo7J^_Bjf1d zc^U)qk$w9e!kcsVYbX13gg^aubd|dok-cIjSQvjaAG^-gi($rB9Qu?k!(MKu&i;tp z8s?nxjJOFE#F-=er&Gsnk1)JUY3wJXP3bw#N=n|o zmwQC;NxpE>v~Gh=QRdU?cJ9CUS(qHRv6pBbooLezI~+VFZVUI%2F@CI>kVLio%!iC z{4?=__D1gO%W!m1tRQ|ia60EDIJqY~TscvWv~VF=SI+yfYq> zlwJY$o`~1lH`-@5C4Z4_wYKNWKGuAZliUTao!^QvvOk~qsW?}AR}A9i)IEuL_zmKR zcl~Ke-PfV{LGx}MaA@zc<}mSU+=f5TrlSM-a97Ki%Q+^2gZtY1~wXG+S4?OIRX zGxwbdCe3v^k3e%`KfJ+N^PD4_kv!=i20l!(i@hj1i|9xH=A4h1sPM)A^*O6`n{PsP zdqrBjjo;GUb9pv3YxFcjzism?mbK+r%Qj8qUFU4&1nzFDs8}X@r7hoD*2Ws__8*#_ zhsa|^_R7`{H=Qq%_lgX>C4A@%65+l$aSnVRj4uZt+qnn4k3Ci|jW$#98($C(%tev@ zFR^E`4LH;Vbe? zZNB6_Gww6q*I$kO(Zllu>j~TV#P57dG9TvO^p1_+x0}1v7>C+2_~?4R%WbE(fH)ua zWRy05tLzb;M|uA)I%RFH>13VgE$so7j~T(PC^m)hG{$1bKg_xDu}gfdy|%t6h%W&T zf^j1@xcWy&mHmI--UK|Z;>!E3d%GoX1dJqGMkc6RG6X3Jo8^rqYArU46B66XMiSIo z?3gGs!Lb1Y9@LU-_BWxiK!7u!T8qKmlVM0K0ZK?LFC;L@%ov-HW%9-Lq~4wGlz_xYYr&!gwwzEySV)H$b4ojP@@svJ3Bte!P*rJX02?&fTdYG}9? z+Hp>Ds&^*yB7SooWU4ZD4z~NW((w;*R{-NvUk-7_q40Jxt7Zwizj5OzN3ncKUp6V6KwM*I>G? z7HoqK*0nP0`boMj;>UI^r#|u2*BgF}zh@)-*2W2EmVGi^_PR8l=cn=1nSjy_o!O@3 zKE4S@&RBWip*!3Xr+2|f%Xwy`j(*(AzV4#)85=^g;(5KA>r^?gzD$~+XG z7VwMWOC*2%_Ubz)zK8m3f8e|1TW$IU`d9DoBiBkh&ht^eiNE6WYUD?H*P!=bLhdZA zXkq-9!0LwI`dtaHb#IVl>R!Iv{!1+FL!9aR60mHUp>w?UTKO)Bzd=6xofz){-pA$( zX*)yXgH2C_;`PvM6?y8;!)BnJ(Nb&xcvjCdN?L{CJeF#=z3v=uFG{q?v)e+3{U)4o zslKW{xfk1SG4zryjR2<~zDUO^o!>P-rtO*I?aFG;4k8B5!(}LB_movlj zPx<^QKlP}do!}0Tk8*S8?82u~Ftu3wh?&`b6+`6UQ z3@rI|S|`$WD}&Zgy2JJ{OZ&lad@<#PkN8tW|MBgWCG?>s_zdesU-r>-0b>F>K)-8= znHuExO8B*2XR4*`7vUe0uaxs+Dxg#N@~d`-Ys{i@=q4YicvZn#wx9niFFJV*8RI6S zueCGPUdhK>d5oP?iN_Z0v3*0pl#OYy&7?cAn+KwtXUoZeKO4X9cxyPc6^@S z{jEiIKg?3-DcM-|U}cHyod)`k^t@tkSCCgYyCU6Wxfwrv-q}^W2a=VO+a5cQ{I8v1`hHIS zQR>EJhzc_`r?WN^W8@3QkivpJNI-mYbo~NQhq$FJ)Puh> zrFm(U@{q2wTYzJjBl|Fx=6EpX<0J1SPmneDYMu)y(+Di~Rt{|8e>-KXXj>I^)zc=y zSKHe1pgZq^U2B5FQD`5e9m~kOZ89_CeP4GqQHu5ymzFs{!r&RBElDFAp4@aTRI`Rr9 z;VOOzH^F+G^1^QhvaB|)BVGG}Ud4vbqTNHh`?C1B+Q!(sj&=wKwP`8&g@gE`wk)OI zb%GBq^!|7n2ZJrx3l3KTLwu4PKF_~+`SUam8;3{xzCwMr?ZDm2yKvZL@yXV`6qf#0 z4oR0z70-rw_VQbM*@!K+HpLLSWCk=W22a=aKi8g{>w*t+iJT(jhxJ5zZmyqRjE*d! zkGkMhL|-nVZ21~D83M;<#>^t{jIh?_fWOYnjlwsV_SDk%9Qs~>_Ns5H&vbG&;}C6L z3tiTcNBuK|jT$74wR3w`t@^L>76MoO=1M)uFWIaHmX&kP%hh{~e2jm?*zum6)7~ob zg-9FXyxgs{k@0C)IWVLX8-bl!cLe`h7T;KZ=d4_3cu@W}@~VHSUcY}uR2Og~)T{S^ ztv4`is5c0Xt^8M~>y-~|1~7xbSc}Z5oM=$Yb36TA?>;R;(6x@T`_b7Uo&oZB^X@?E zr@+|`A7wMj-y*pZZcF)B`(EIC8+9;0&z}K4!lMy7W!6`GN`3Ig))%6j>Qr6Tl$GqN zZp}vrfwv=FuiEe;zZvUnUsoG4@egwjMICu`4qzxP7vFF z|EnIY|KkUETWz&#@S7Hl{0bg##@`^jggFvx;M|##W82lg8GBXpiQ< zx$s}@R2$AXr40`i8Rp!%sk?yvCV6F}+I^JlNwISP&XxbB@W8%WPrC#|Yo(cVcqmN= z<-h3^I9(ZVSUa|GV$kMl8m?f$5p%KqpL{EWYyZrWHn_D@T~#btL%K>w4k@ovoe}(?LC#x#!g#+ zomObFhO@EL7GS4^C$~P9MgEPGiPyIEWm~&W<7IYUWpbO~0arGI^Zsa`>K5LWltFLx zuf;~2fP4{$vsh!7~2)Jr4V80lGlCM|OwidK#bP=To~?wli(BjlszCU~s3iXFFoEE$5D_V)CC$ zxhmjEzeqoJQ@)6{R#IODZB!j<>$a)TpLfA82j>KLfE3fV`Q+_F51mV%9`-Uf14BHi zEnhkMw^rxKseEh&&qa8c3J@qxK8l4AP2uRs*kv zJjKF?XBA_v-oKuPH-ueM54;NgJy=0&vmJm|=fe}l%?D|_molQ=5BUAYX=c{B;3quh^R1kJrL{tbBFbd) zrWL#^(O;Ro8N|*LZ#4F|@ION|;v8hHQ*#dLEd1vEZNNSkT66-piae@Ee5zMo=+ee> zKYY^rQu1x5jdBQG}EtVY@=oYdB8$_OX%T5YTbk48PQ|Mb2tjg#!ZHgGx*7~;9)xtD** z#p7w58s8l4yP7&JO@RAj-i3#7eQOKZlm7jC)3B#8+ai59T`gSpjV#t^OfwNS@y zA3l6j{8S6@@%NBNYfxUEe@*9^$avh6Lpt@#7twr&n_N|ZoL*{(6FN3${Z#eITx@0C z{}Ef6?@A1K+jKNIw2f#+d}RrErrCC)^~9vJIs-q%XqYrg!xL zi<|l#xG|@-wxDp++03%X+o-b#+jkY^M5hX#Tj^hV_vs}YT)I~}ox}0TCz|KUUzX|z zj@HFAreJ$AJt1u3KxS(ou?WIC*}; zT!OX}yVVf`_5|8nM|=Hv*B5~ka>Oq)ybrue&Ww!QL%TEmpW^KeN}GZn0RCQV));oJ zYjK;9dJf!T*xgZV*ckYQcuJ2h!#0hneaMRJ@8}1LX~!PL_bd2XzxMd$+0#0Q&GHMq zE1d5HXZ#N2m_A=#Slv6uhbagxY zZKs{q7SAXv+dyU8DXZ}`O1ri_z+G2rA8jjQPEiM6E16RiF`xJrys&Ks&m({FUoblN7_^W&pLclJAWXm4U>{fE7$?e4q1x(rr@v!cpR= z6T$c^H+r!D2(1Of_BksHJ2vG5OZRKl$sZB9(E201bt{wl9DB7A%=eTg9*3hB#uxG} zs(ZGO6Zk!^e9){2v3I3>wXvm+0duQ4lbfY+;>FST>e zMARj&5j-;MD?bhV7@Nz>oE3ZV9ia|>Sa(5WZp-n}GQXXMvrF4ulPbdgR=njc|76oQ-5LIvFrAVd4(oCyqB1-a_q7s&y~dPNgigwM~zo?QzLU#wx4yDGbpbz<=o$X z75%x8GWa)YBo|M^M`ITMQ2O7PB|rS%JS`qW&=~tkG_67BW?Ba0f!Z`PpyiFYF;v@7+e7JeS^%eXPTi$V3 z3}H)cMF*(OTd#53L!+a!j;jB1R?fTbl>3C2d^?<%G7N2MYE1N*mB&B*;Lvv?Ka}0n zPoGno?tN#hRV?Y--2o>aj$IgMJdHp27sukc_0OXWM*9Dj$;S>Ci8pL`+k`3(qp1w zf_aQ&KxLnOy(+11;mAdChx5*am*BiXe&O{ycubtoQ*GyP2guL_Ym2Vjho_bH{&$}ij$`E_Ub%lEt^K{u zr)9sMNTdH#m+0~Y>7v1-ndwn4J&{h+831EtV;~xaOjfw!~XZ!C2?PW=?;Jg_|AEirNj~M zs;B-$l@qT-PXyta=+eb+weQ9>{`KVF>$)f14fZ0sf0X?)vHvX^3;Z zpQXIuYAm~l^!=`LW+nG|t3K@+eU5le?w3vZJpO{}VgA9mlHb+fK-U2FMSkgOaG0Lt zd|UFW+~*i42Yy^Jj}09u^*7}`>YjBU@#U$1zS?ac{l?t6f-}J01o^o}xlhgkPahxE zUpX`ro^wGeIB2{Qo|@}d#=tKv*W2DFeh{9{ApMytXP(M$xzd@po8S9ePj1US!1*`6 zkMTD&GhRe{iumT+k-iOUunQyDFB;og(B-mW*JHt)8(UELsO}2(Gzrh`_ zsV=1#VoM08A!0pcNBHxQv3%6`xAK8sj^+z`zH8~7Y5#ih(;8>4`4?|5P!wCBi+|?- z^TMm^S67_=rP<=!M(*F~CDy2CH~T-g8{*+U8Q*{m6tX`y%sqxG*Udk%7W3-PZr)w7 zyl!>a`O<90dAt5omtN<=mo&GL^y=k}s~bma=QLyggz@VspYjkBHP26!RO z8RerH<+XN;FK%uz=~c@cRyR<-obvL~$v*GO=Byy{Fs_eu2d*sXJ!3)1+SA>VRyR-* zf-Z&MbnLpt1jdcRKhkb=L8oi%`J24k_6v@kLm(r8AusN}72lU&7Tz65MvNJ0!zX0n zQFjD+ZY55tl6b~i`i%N=;VQ@8o9n}L(dV)^1Y7G#8WVj#M&V&+MMSnLWsIGJa&ISj z@1QNpn>p{$JTL~H;zdgaoeXr2WzZ>;Ms1=IJa#x+RP>b{JjfZ{h2Y*re~^z`{VoO_ zw(xH8!Cu#Tt@!TyL45r{yKOw)J@k7!f5bkM-Pi(sehtnsp62%zc3siy%U;a2`tnTt zR`NZFzG@e~tPb^6^!{JXcm4gx@;}M03rwyokzXTgT2+bsVeg`kV(6oB;L{)Qbh&h6 zW%L3&UVi#L>;&#+V;}3mtB?=PLtV4h@?gJo`)HfJpKm$3pT097n=SzlrT6wC7qZ!p z7G1#nc`bXKLZ)rGDb~q5nDfoD<*l!q zeU5%vWJK-8pVTisBG}tlYh*5T-(KxagdZ*M6wZ}?xAv3OJ1UZtm<9p7j z-)%c8FNn*>c@mw_ADTD2X*x+R(y(*h;(c;(?XJ;=i+=IJ?Z%!ftvhkHw3&I2Nq2G< zIp@O6!$)7%!*|I^Q7|&8?(E21W6oS+3@cKXb1oZm8J)c&{iS^2#0Bw0gNgt1apGmI z-j5{H_1tHDpUC}tV{-SSq}C3te+Sv=zKr`{kORdnbTO8Dw!{VT>)!L`Hx=+W!Tv@3 z^YI?i-8_$u_^HZ-Uj_Kpr|}CJytLql%`mI0Gjc2btfmU=)vo>6!Qjw=A1Co~%R}Qmxz##`;5)2e zh)xq|hhcrDZhU14@$fmSgSD;F`EO&VzQcMM@DgoKyx}$UCGhLtLI2-hcuanD7d|Wh zaq{Tth&Q|!%%lu?HCM1aAU=Bq-_@sC7uab+q4>q@6$VEeZ>ss3k870vukm^iy5Ctv68}7`>N`o-xk+x8pKC{?Nj~i}cNwFFhj0)s zVertneJ!|%2diq_66rJ5DW5Gm)%pvZniKW5yI#GTkMAR|@(l45j(V4mz@O7g9~JRU z@^}-|cC_D_7J zU^6%~*P68i__O$z4}Co{1KoG+3E~GKPJj0uxzqPi2Hr1jfHnt!&ze@#5PWXA!1c~o8dg#03B>lZ*ShppzC~0Hp4;-sK?~o0%-+-e@H4?a`et;N z?kE+kGl8Qg?cSB6cjQsBYWpYhc@OQZnB?gI^?&89eoJl4AM3N#?041oA8{tYX6zH$ z=9)VmrQJH?<2%=zJijf{b7SpoKGEJc@Xy@|o_-nW^a{$ehPP1o2)^i`w$BDn#UXSd z7m_Q<5qh~)w7QA!@~`^+?GXB3y5GDV899b-=gyC}owf_(;i!o(rft$sHSc)+ZWDS# zI`SBL+t)h-?9VEIC(#1-R8m&4-I{ye1iy5r5tD;<&JkH8`t>$A?D@%O9Wg&O?n138 z2>r?jpeuSz871ydmm%K6SbKmq8#qJ2DI>0-oxUyK`peipsvCW6v-4LCH@P(WZ)(0-8=E* zG4B39tIiW+(*5Z@pTFmPWXXr`HymJ}bf&C8qf&z&5^t~O&H!I#!qH3O7a}L{V{|CvbI z$^GXnTmE6b`~Ao3vr|+5$hZHS{&Udv`j5^c@cWS3@ejf)-GA=j{eRkjj;8I(dnn`g zpL=;fssA7Yj^Lltf1dl(SpRuSHr;dVGZc)|{_pw^>xDDpwaCe-{pZO~{?Gc)YqS4$ z|Cy^c{(stko*Nr~yft-`lHJFAYUfbvg>kJ3I3Xt+ zD%IRjX`euDSKe00+$gr|7V^i?{gNlvmKNPK&Xl#%ms*hdTF%g|46SFl^6U}m#Sh4@ zaY66dwDTc!E)z=|*Q9UwU6gM38Xw`kKdoO|f!6}u`fRtP8J&`gPFab5*^OTLJabP^ z&*r86&dNz1_dt2=5RVM?sBL>`tJSl#Rd{br%ZX=4a2|n`lRViGR!%Olasn;Tv4^q! zHNW-jfgPLv;j1Q3ZB$#!X=j*r{tSJke10C;429Sil6(1&!DaD3^304!(LFF)pJ@j- z-xhy|btuuZy&k_X>AAE4J3hzYGxhF`=I$fK8DI-)ALYA&+*0{2p?|!2syRrEL{0S1 zYj*p2&GJ>p+R1O2Bl`Ih_<97Bv9?tB+POA%(wHv?yyY*!Uu*Y`%XhIJ{MAi^vtAqyanir3u;*7a(*}4X z{LfTdbPm}Yv;q5Or|#L%`XBZb_iQjnq7KQR>JjepE2%!OF3t3g?g~2@mxnUiES!Ab>R#649}+In zkUhItxcpVU%%$a*rp{Trncrz1{17n%v2!8=H{tJ#;?uGIDQI-6Pgrr{{nVG){>|(S z5R4XJJOm7tulquv#Lm|x8~B4W{mQw-C@XJfz9Hm8I`UV{orSaB*}Ky*#JhZ-wdjTr z_@Dz8*D_C!Fpf*!8{U@f5E$;_w_@MrXT`oBX5MPo-|z+7JvJ5i4cuuF;%4~AhF1KJ zWK!@1CzO5$GT_OdB6x+sN0$E@9`j?t5$=NXXYyyto%)$M~8>z z#mz?5ID0`0;aRmcI+}~lavkn3)Q~z+rMXBQ86ay#vC=O2J0daAqhXdKnT?4@5d_wg7 zlfYYw%{Lc0eHC0{%!P>KZ(6%%>h!G8x`NpFUlpu#vleavzXbOo6f%!Bc{*3(#9e&8 zet8v~{PM5d5wzt8C;qBHYl)gK$v1I~`O#eYnI>_D8#cXs5c0eBTRsL#<>!>11ozUF zle{xnMC-NqVl)pW&bz-bkl!SKT1?{=eOYTDcjGe;v3IvHU{(xp&epuik%4)ESizx* zrte4GHFp%f@)%>;bYK-A!~5Ce{#qcvRA-yWcjKJ{a+V##{u!Dy2MU_#6Qx7c6NSdC zE!+7lHp`-;ZeXEzp0ao{HT5F-BdkfO|J}|UUcR5*tOv;lp|k9@PAGU<4>HuR-^{5> zrLV--{kHymTQ`2r4(TYtLMbT@&dTmqEmdv4n{Pwd^+%BzbVa@oU+aEaBa{zH{jnIHHq*xx zH}t{nKeoJ9Uo3;Sl0nI1AN*AOtMs_+2knEJ51-bWtVxydw}`%|@q*ZivSxIV{E+kE zsnV3Eh_Enz=_6#h}vVq^Z z@LFpqqW84aCD6ME8Y6S1*z5~?k>Q7P@Hr9Zvv#U?&%hD-jPkP9+|dpXz;RJK^GucV z>r%a1uSlSCRnJ;r2$o_Zr>1c*=*v^<&jIFZ)IFQJ?@ZUHx>N@|u=TzC{%F5weR7|B z-ul~ty;yZ`W&LC}w0aJHNZ0-r8tvmfpSnfw?W`yE@!MZ78S`08i0%6FVSBd3gVmNV zv^`qTYD;VQ(p(CI=8ZEBr`yK$AsH zd&iz+zYgma;H3Jmrmyueik`vg}p zqE*OGz_4HWe)pI=jWtO4?@Y!=Kpu_15pYmGhdjM9`MjQWq;(VtQpq*$`hg~8Y;MBEA>EvAG zMq`5d6n2o6IoTQ-6I8~|X{gultI+T%&GWd1H7-A$SATka-_HNA3((DqZPh$QXNbtx zw+~w&ge({nm=v0fk6(R&F*b_aiH6!_Bb@N zV^0fsGLITg;Pb94(z=o7N8Sp*TA?3)`mzSbg9c=dd1FUiYgN)=ohgL=i;~|#|B0`g zSQCo@%b}lkQP%4GjJbz&WeYly{yEZuZUe^1R^(Ovstp=c-5)sChP>AUw?%MyhRBP2 zWUTFP-}D`w;Rzg#5jsCdG-zPV6n^Z9?)Z(`OXmrq=4;?f!QlogJ4kD%uK?`Z!g_XaZGR=e2?I#3yPWQqyLpQZASKG8*;ydg`EjY@Uba7kn`Ehn-*&B{=euGhp_J>jPV*{ z#=fgfd>=&4<;O@I8!gjb{TMOMI!mI^>Lbrq^JE#{J#s3aspe8z7nI$n^+3*-OO5b; zJP<6E&Cc1UD?Wp)=VC{$H>Mx{<=HWiyU{tc*PMGp%*!8qVk8tno}dzX>b@p6l6*?9iqPp7@3>PMztwpz0Fd;5+F_>N^$Z zB;VSh?VO{dvouy-%Dcf1@asf(_v`%7OgwT&PR8S!G#;|m#Gi58h430UFGIII&zMop z+-xg+9Z!3n;P)tF_Yl8d3uL99Cm+7{evP*W0@%*WUAeJyS79mjdI`Mz>^6G*D8Gt+kZB{DM)B{&yKSTG^W(VZ5lPpGYSc z@m^sJ``EFavx!+DPd(=}DbLJ2jVYWBP{e-ByRwu2h1`lpU6(~h%1$?B=Tat%{5^Bn ziwxWZWr`?s09&Docfr?K@I3pd*MQS4;Kbbe%vasBCr#&fkl$*%ndI%ac#id}3h0J? zG;oyo)I!>(GlZjzVY?Y4bXLsGIq9(ppXYnbf&IH54sbtqE&hf#@i&Mc;>CX+8lAH* zFuhc?@0(!C_6060MHWB4m3<1TS3G)+^a$r87Sa#J=l#qBHxiE^`{41Fnj7Y({uRD& zWWD=w*7*mCa}l5RzBAe%Wz3h&#Cy%V#7Ib9OfEJj<<)kT*S(mcnezHDut^tfG}#LW zIp1JDbkJBB88Y#9VBqr^sW_W)oii0eX&SoFLHr1T@5ShZ-KR%J7SU%^Ukm#Awi`X# zPQxz|44gfw;G1qqK6bm>$bC;`zWjEVn~^iXr@P$F#qxBz#ek5Nn|16%L|N5#KBLwlJMv z^H!g}%W@1nHpqz?=+BTD`k+0hU$(krQ?`1igU_;n`O(?{YdqM8$ao0a3;<7a(U!MH zYp%=lWaC!8Dg7TZ>zaC^uE#R#;(Jv2sY~^&qn@$(2zp&}r(ATa+F#!~E?$Lh(OMk5 zxBBBsXz%G*?goL5YP&zT_s84coxyqF^cUaXC*7fWj*DHOxrlrbE^>N^aa4YtRrL98 z#t6;HZor4vZ|5VPKUZ^l*&fovqK$O1*2&*z9@k5s3F4#q5%ybcAh&5hvM%4@7X!Hq zk4}8K;1<@bm>*J{e{yM?jdu{IYkjDRj zgCEo!oMSo)c3@Xs##!pfui^#Z_teyT?sROH>80Gkg|8657iHSrM+y{6t$A2KGAaL? z{AH3?)qP@K=k0M*{qhO<`DNcI@4IOjhj=2V*2kba^P&Hbur>X0<~r;@<}@eO=flt* zVIS@@iszSKkoX+=?R2k{-wqd;#rYo0_p&<*_635aw+8~)$zD6v#+9^D`z$=ZdiK4O zmY12x%Vy>unycmU&ip@bCH?jg{ln`Uc`0PG1Gy_}$*_U@xKm29qj`zuV6yEcTNAk- z$)7v=^H{^5FHe$De7bMf|NDZGR_efhNonj$1e|zvUL;w0T1B!q-%WP2hq4=A(UC0g ztjiY0S=HzJJG-#U>RIF0ezOmb*>%y24Rdedkic(K#2M*P>cE%uRL@t~3vcGcd+)1G zUh}q%=d|aFD!uWr)1H8D%PwU97BCxmX4W$Vt|mI0eG$N5>_?UdWS`mZiO<;gOuG8* z6YL26Zt@|gz4_m>(F@EIEdJXzJ$k3Zc~j~0i9CAjtgD|L4^s#2oaN>7)+xjn&7a?Z z2N&16?Ezwr<^QBz4Tq z&0Kj`5pwP6guGPkQKubNJzzpv@f+`S+E2~zwew$+Z%p*oAG_}RNYeSY1tUG{Pfu># za7OZpyO?k0$FAs_9=oEuFm^>xaqNoTkHxOo`0>~kk6#$O;)$8DEB3%KFRUE2fkglq!gK9lwnQ93naL+Q(5o9n^T@zYXSwYf!^Bs6{<4`Hmu#P%mRIQ+$*JO`d-La~`^W;@ zPfEaD-V#`Bifk1Ss3PLF5RX`aouJPV}pdJ(+LVD*S$ zjo)h7-~2t5 zl-WuhdswTM9k^|BXF&iR<$&Wy(5rix`z7Gx&%j}DP4R}%a{SxJjn>@gp6nmd-fYtM z;4>Co1*Z-iL$rx?kj2g99mMao4Szsa4)o-kWI1fU{==@EApR`rNADcqdSpKwGVvK9 z>_qmq@55l|3`XA3{6=Lm^L`AUaiuvYr{TXe9}P4$;3u3g1z*x+)^f~*N&5Bzy0ziY zz{Ds0b@1oBs-|MTZN$f@IqeJJ>rP?KC1`RwxjQj}A0K_WC~N`?>%hC*WH$|A9|&(B zU+n>DA%8jfTiMGnNWE&a#&qRlyw0hote^i>yhmr4gTyb_+`yXE=r?%>htad0gHg&e zb3a&zO`(1vm{DR!B`eaWIxAt2wVux4^l!KD6kO%Yq>1vq76_I$Qon(RgKI(?${cfF z=!WRA2=<82uOVpA*vkC;Blroe4Lv^9aHr;!*`+a4&Yg80?B-T8f}NB<`hDl1XfwKl zCv}f*at_AWBP|@vDL6#op~@GUJKjVuRIWyqamBax@|)9j{SLR-n)Qt(wj*g~6! zfU9q9$XC>tFTN?yF<^-?0 zHSs$p+gs&be5>e?D6}cO-aD5<_F=RVUBqwcV(I%B=ZW;97nw6!U*8+o;U~cE8$_?j z&i)d4RloRD3S8|G`G=?nPyVJ}()I1yPjdeN>7#+bOT_OyP#K#Wmk#^jb|?8k6)|#; zR1?qS#X{tv17*X6ze#LULonIFS@$DNSxM}Jkw?&jkACB8C1Ly0j{UU$n`N+g(QI|gL#hnJ68v}R3dV3qcO!kZ9J^|2x5DUOxT@xFTLWXx~UT`JrH^+g)`sKh`$n|a6%snVq#~kgfH3J(yA2{p2Eu0gEzh&fM z;I~lEe%eGV0CR%;RQXRvJG5UQ8i>q`F#nJ~7N29(@30TtJ@%CcYZ*uC7=N~6f8c*e zg|R^rJx=@q>h8ilN4&yp_u{dEFwEkI|!AtTIN zYhPQ|eh^VQAJK=@{^S$Xwv?ho{o zO(K7z?C22fefW>wxfPo49N<0b8hD+TdVf1G;fr*EN3U(xM)mFc!)f~+pB}MX+y{jn zsX4UpRgCgYcRam8@})jxmfv)&8oAMLV>p|G{vOe9cvMKgVr^+`uBklplm=hs@DwhG z?L2JzrkS7c?mw_?P<`l=DET7D;TvBY?PzR`jO@^ufG%-4>pCn}J7Zv*yJnV&d0c zKHAZmU0I^`BF~E}!66LJ*`K2Aj4gw%ncW7y(R(8UtFQlPiCJBk6TR0Ath$Z;xy&g< zf62Cs92)G&R$y16uWHd5VfwE6V>9?U8DrQ4##g};t$mn+$LC7~TXs@nW@O}bWa(yi zauOfM1Jbkj%pVByAK?FIoOQ4IVhCkoGB->m%+C-iBBm<4`qdod@=GaA% zkq$j`xTBM2ro6;I?&dkrXD|J93{JXF&AfX7emW<$g!!QQUHzr_hvstbBmCNr+hKvMrz@&WCt_HLdMwjgP%6XUfNxPkqy9-=*+AM!gynTEGdKoY^vrJ-~Yxbyo3v zDRqL|z>9>O=3BYTi;oRbFZyO!Hs@^Pl+-g8Y{8dyU7)jI2KOzr z%_jbZc&$3%#ne7<*Z8Qm4I=wd{Q2xT9FFnsfKSDrM>`$?2ga0<#3jheRN};evHSRF zKR&yWSCNkx_>H3t*^EQtmqAyy(vAxH*7Lz9Hfa4%z9Qxt!?GL0eAisB*#w6x=wsJS zHt;cPSb4(yURwrS_WJnyaJ1J5U0=plyk^`R>` zZz{Iy0ONJT1Dyr0vi>W6tInILFUnaxf^!A$vI7q-spPC4_Wb#_;C9a+5ar&ZFVh~w zeMIxB=EXl^+v1%~I;J;#{e!HSY2G|eb|ZavIHG=wOly4~8(ZfQ_DjB4*Y1lJNS5>L z8SJvrGxd{nhxqbg-xKJiQ|ne8&DWZN5$dq;(Mz5@d1Jodx!>pfUE+enT9<&|Zf|4& zJ8V(l`;t$$sR6zco4?T6KGJI$FY1xqu>Izx2LuC{4ScI*45V!}&iyqd z;)BZ68E2C6tLzQHCf}KXG;H)qSz(PAljQ(Iz6kd!?4~t68zO0aB%CGxADWJT-%rm1 z58@nC0m>hcPmR7OK8XH?d0hkj5x(1)(8jeD$JW}kpk1#Pu3Kok`YGeg;yr1cwnCe2 zv>^ok8vpl!e~5I)I17u6J84_G9eb2V<6r&<{p<=K{{<`mw2QAj)oeVuiPGHAF+V;|4BY`wFntLwH~k4ZnD#(uvDKJ&BY80~G3 zH@jz9z7Ej7iqpNi@1qWLnHku6n)mxIeup@3p>Q*P=W^+UX{mih6(fP|ZoFVzR#I!= z&P>vn&z=3PVA7dmMtYZ^M@}1etm5uSiJ^`7EGQRHyxHPgv6tURw;~pL=NQPH1Mp=db+Pc7CICDLC7ovlLfNjEsCy_@`}9 zGp%yKn2+W}C(=jwmN^HZFWB#y-$b*k_nP)W*2H3r-+tN!pY_-My!b+gKBf7O^rL*S zUBrHKPMe)qnl;_lcd7oLK>nkb(q43J-2%qRPe~TMZ_Zp|5f*6uf;+B}*Ty3Dr0?P! zpC3wB6PJ1VxMSV;R#tt=jKr`Z1gB83n#e-kH`uRaOux!O<6SDNyeg->H@U7oUu3z~ zIO%WAUl^Z!_k6d#`5MNm$5>0Cozh3r_y0s5owHFMG(TWHpe9Ox()?KCs^1oew&>gs z<=1`j(Ph|%iz^1)Ao{!;*+Hk9@yrJvN9U?M`bPTv9_e%R8*N?~O?h+XOg~~hei4Uq zE;%3n_2739rEZ)%Kq4OwiYAGF$Wz_ojg8crD_*4ebI z;RH0Sgob<4V}#(ffXi0)#)ZM71=#Z036E39Wbp)lY*}=h6X%?LD+?<#0D#HORaCZP6k#V$jR#CqGc%AVzf+ zeY52n+N$w~aj5QE+6;Z8*LZ%5x^5?4cz@Qh=q1F~VE4#B*xZ_(lpN<;J(rtmAx*kM zx=e8&{@7vApQq+^(2pOMw|tzrcpiQGR_fgc{d_t!V*jnh_VZ~WI`}kr_1Fm-%=!=- zw5DmWJCx>n{ z?LVGa!`*+xZtQ2xlruZ7EcJc9f%s4H|Mt-T8}hhI5WTh({e&NDaW-?p2>nj$8Jat4 z-pKg5c%$jspn0R>GGr$i@>D<@`P^ol=EWKgO1BaJF+;u)V&Xc9iJO;rw1Bzba0@!f zwlOh1{#DwaAT~!a60!Z4#}ifD697!%(~kYq%y~N#Sf}Yu5$nPGa_p`I=b}Um(P7s1 z%WDd74@?kz9|v~_IBMhCJ9;-j-^H!2yYTlWc;D{jjmMt*B;zD)s$*P`?HT3#(|VV? zaweHYHzP-qp$2s0j-qqp;RLv}x$zQYBu4zlR=#yz$=HN0mn|P6u8lFk-tT;!`dsMp z_;pp6$AP;d5{NyPAaBQ{$iT0OVdHGqk=I}M?3%i3BLlAhYbi0{$}4+e+(hCG82?{S zoD=_<+wxc;R0wgvM^;gx7`S+Bn$o&`RM&*H!9Fzw9&)11j*j;gJ7`w2m&AHX^Ozd`UO)&l(C9Z>cO_RaD=K1{t@i#wV+IxZ9 zLtWiHZoC2Cw6{JGi2t(8v^Ow@Zb#-dH>?j#UD!n)(fQ~Ab3@9VOWm?ziqkllceq;^ z9K=H(5AjrZ2p{1h-d@Ey7Meq4#`!7^Cc*e=7zgCj(m6N=xstwSpU8^P-PN~k;+!1S zzX#cs-j%-b;>mVfA1db*Gp@#V9liOSC2Gg4H2q`nq>!->L#qZou~R+|GYGG-(;8gK za6b0Zv{V;*a6j#pU&fcMhH1SU8cvH0R1x=mD>j#4T}NzPp((KI7O^wfL&IJ`__b4T z!sZI>jA^OACog9PkHP*1zZG*U8}aMBYhNq!w{sA=_!@X7mVk@W4*`!hwr29CDsU2S zmZo{LpL>JGctakQdjQ@%3Y;-~LLNTXP^WA~j2q2Wz0!pi)|k)Ylmjt@JD^k?|b{ecP}zVEJCU9`18fIe=6e&<5$mv z3ra-yR(yaadU?E)K7bD2S-iU8SXz(oTx(*Fg=1I5CG%H9kEfBZTj--2s|qjRoKnux z?S_B)eb;%&UAq1XaKN@YQ*~|yhZbzqM)tQR=i7SbI6V_d*7n{ zemlazQTi*$&%Xethx&ba@1}oL(l=h$S!37(6`YCM{SBRsU{<_B-=**MsXx4OiHRR( z-R>36%^P*64sXLgL)Y&VoJ#hbS@^(E+y0%pMUTClQD*yjv?xA_c5mam@{N@nx+4Cf z>ZQH}eZzjQB0c26+eX^9u{tiXb^IhTe}KuDP#tspIoCF(zpchjz3Zv@Nc=VI7+`461a_uqi0|bmNy+UA ze=Y4{{(&81_w7iAXCcG#kLP{@Ut-#iyv5BOj^cN0E5-K2=A)mVHzvo;iv3dduIfbL;+i5&kpwH%93*vXNI7Fh{4Hi;b!> zgOpL5o`e>D{M-+S;ncT-@Sp|SXVOG=k~d%QVzNXN*)1XX5M>PT=`_X<=;N(RdHi_x z+!MSQ#4c%m68jIl{CS;EZ5KQ5*ZP@BwKDgR4ZDx{ zob9w#K9MMKIh?(CUm-C$J06J~--`b3WjxpjPhORtr~T6L&GHEm2h)X3AzWk&6yX!9 zv}vxr^T^Q03r*1agruWnt27e};jHP}@Pu*h>ta4KR7@NS_W@ zX%k4R9@3~0TFaq41DhF09sqE6E5iPMn%G7b2HuJ|#HJ$zpLvu{%;kddC5PF!o7 z-NjB^>zbSiV9&kMUXK#)duDD?nqdD^_rl0P4ee@W9 zx{Em`I&h#IA0qZaO&7M9cqjiMzObflbny=K;C$8%g3ub?3}^9N`v@@uljk1~POd&4 zCXd>yGy}a0P1bM=Ix$FFG(M{@RuYf88JYe$@>KyW$HMZ?e~`Q>jXt8e?cxNm64WU= zh#sPY=%G1=PmAX76W2p*RtffD^X0_K5PwyI+%-SKdm%jM9K`0&IR`7iV+JzV0-Y0@ zXChBw*1QwQ-4@m*#P=@jPSx{aG|$8}MqRR9672sGzAB?Rb~mv%z8o6t*%zV5zKm}% z?gDH>Hlta@iOIW5PXc{nKo5G2g8&XZdT+Q=R?faj6M)KAohfbQe_fU_cbbJQ^(zUiJxt{?n zUq&BgUVS&;w@y4kXWa`Io+duAK1Ym{+OD>4rLPG8EnmQAsWwdG?g?nrOng%e{x=if zRQD&&TZLvte;O@wjk_?49$rS?p()t#^fT#=Vhhh{s)Rm0mOids8&-TnGqGzG++#79 zdfsRMpkyTa)@Wat-%f^{XfH-Hv5Lg**EA=bgI&Z*?ZdV$;{I~^ZuXsK%0m2>FGh6# z2Kl?(1tsEBVzzkVH1!a_wS{+Un_kL1BP|!`t`+jTbzN!(M(M-90}sKjr!8}VeT+Rp zK23%WaHj|Q&%&ji3UmlE0KJe&(xm@HGwHw=fYU`^QaxjJEOrK7qYm}4*nZ|1&`x7O zk%i$ly}6IMWf}(O`Ye=OKP|dsbC=@i=*}K&wjgWawtjpzvWdnK`}7)hY#h8IzBZN< zuN?eT+`;w}9*QUVT_fj#0;4&CtnC3l@jaAZB>sq2!o7&^YKO{5h9AwSQ}s1q<9=wJ zQR+-gi#OoIsEnOl?{n097jVLoUGAQYvL{mT_vjmEZA;!l$XnRz2xpjmGgjVyO}g@J z0gqdFZzf(a{5wxZuvhY>H?1y3cYaIhedb_-*fy0B&0A=PbVgcVH(m9c(HiuQ)fJ*= zJ$cIMAFMmzTV$+5X2hcyeEACBwxs)QKkw>)vJ+m#{wX4FrcEY)hwf0)nzYUv&f(r< z*`D-)KBM?8F>)Eb&P7%KvqBjd%Z2FJqp{cyT*}<$G7tzoF@$J(`$uZ+oON*Vh>D&aeBhs**Y`S!i^Dsc-Y&glh|(JZ_jhv z8}7Y2*%e?7!32JR{WZJ}9b$G?#gU(vjF}*R#X)CA`>wqv@y<>4vbidb|1b1bH}_A~ ze`f+?>Xg*7h3s=+uijGXRom-{dl2mn|GnT)Y1~WJuAY|D%Uoc4uYV5~``k7&U!aU& zY~)?%RaVe`)-dC3v`g!7N-HHzYczV_L;0JqVMI^)ArIkit)o8qX?>pBwnp9f9}me+ z_Rci#`K>osDZJWyUTB}38&|~s1=g)R->gSJ*|ipiF>&?+repWLG<}zU)eO1umr2vS zqRg147?w4+r7kT*M6Qt+rLii z2hsZ5r}ukjHL4F;dPf8C!n;`;ochpXlKIO^SnK#kXl}Q~pM87cNh}Z_WqrSXDrcsn z&zG3>k9B3m7Dti!!WiclPp-IaE3%{dn9t1hzaG`eEP0PCL3Wuk%RZTzwk^ek>vZIrGME$)QJ`eyw=*n$38ZTfcL$LYN&T~9N_9-*}@#@V>E%)oSdc&KWM!6eDu?SpVnD@c$&y1ai z;KiwWcU5X`WamkDRvr`WWA=`oK-@&8##diok(>?x;qzj}XngAuZ~k`+&zRMRd8t<3 zL)_Ks=ed3+;~~DJ5OL%tW_82J0nSZC=cNqsKZ0ZvgM}py;JG5BV^ZkdkuWx^`E4*e{s`ZOGQXK|@%4O* zU>m9qTQ)K-{vEz0_{Ny!eH$u`-@`Zj$tUu~#>Ln2Ey_2^mWRtHK68 z6yIOww-^66-_AMt+aHw=I<5+PdgR+Y8QZKMMEvvhNt8ZO$oyF}7kx!rwc#4!|L*84 z)%D4Ay5$LUR(d7rgNMEJFK4DhbERKOdQ|Dz70DYi)1kl8FCpEe)9=bmhZjmOB|UM- zgTFDIF5ZOUi_(iok0>2lZO<$ZkCa|O`p`RG`k&J2;#oMPdpPn^Ii$yw4t+;Yq(2pg zcS@f~dMKTK#;qAL2_Kd2l0JCQEC12Vba<-tGXWkHNR57mR%%!$cv-l9!?v- z7)%|r@rwc0L=E@+a()s14cQ`dvFXI?ZP_gSen z-lL06^5!o%$)lXdHH5y37MTGU-xsUATJx?mW0eyIUg5XpWdfN>81S8%szF|U^;h4g zq;CE-FuN6JFfBFzVq_CJOPrE#K4rB>&tXm=J0Tp)kDKWD_+IqWVa9yvE5+ETJ;#VU z+>EbPHfeaVcNVSE^xd~p$(JL%b>_&);;=6%l$S^0suIy&*FR?^6e_rZJd;%wI zXHUmzzpm`_6Sls$M-&vrEyTWd=I>}7vCEL6#MMKmYw!@z&?TJ&nNVB45LUk)(%zo~=XhKYt4Dp8O7+@T=pG^Vj&r1I2@B&*WRc;|xmXE6{}B zK1~EO@*y~Ta8Jh1vn@RQvY>(XEo9PHv=zKhoPy)u;?u>z;e5<7I6jXAr{EMgGftbI ze3kP=wi7#9bWvpF{N<4Wt%KL+n!YM*Ce2d~YpvCvFeB$d^YO&MX^mWVxXuBoCl6~K z{f+JOlglZ)kN(_9zgY*2rNHav+>r(3*<%935qwh?&e`*m%g)Y9ZUOdrXD{GAJ6Soo z?Xh#oe}MZC9=G|O;TZnh9@U#SKe-)v^MTvLbK85P#8S9+-)945u(SJx+f|&qq`KR{ zBS5@z0GpzddSmDkuPwo0?2ej7(mR{l5JMV&BYw)*1`(@+{(w1%X@de}w9v25{em~2v}!$p*G-;k;iM<_q2BLG z!yClrYoqRZwZ+29O6d&JfFWj(r{qa;)%K^+KAkNj+-~4|8}R1?Lw0?Ty!xgx>(ak( zN&o&e&ua44@$BKL^D^{XYkvAIoM#YYbtm<_#++pVPr()6YWWwPdT3J>c{6D(IqD%s zCX?1f_#&64Y27V)l4l3DU^R900#h=!1$d353BG9EMxI96*UNJTXHn?=PVzRJ?BOW1 zSw~*sBwWQ0;U-v*Q(pMZK$g|Ub)@Ueq%3GK#M76<$0?ir=h0c~XoKokdzO+{_51xn z{Y?E0A4Z?vA5YhxK-PPy|4LwpN0Pzk`4=C5p05A-;nBXYsy<-Sk8S-g^JEW-UB_O= zchO!v(pq;fzyHWnF~J6z971;xTSIuJ=G62ne8EMu+XV-7R}SxeI%g#_y_k7n33BLy zOA&pyh_dBtvXUY2YG&P}2;4&W&mD077->=Xt;-Fr)(;ft^{m{M=c5dlmXfzYX$R_09*5>h=3mM0Ei-LcMwq*m^ljn|g!b z*vfx(y54=zdj>Frz*vinshns~%yT>aTkk$CLbSJzvis4|A)W#9c=M=0>Zicj4j+HP zQ$9P%l5ktfzuNZ#-`l8TyXpfU;n4`4GV2SRQeOmqsJ;;8RHy2yrmW;ubt_hO5O_P% z^{Ndo@_Q@4CHHDWCjMdW2&^N|PSQeYxhN-(OkkjrVoHQn`zOjc;Ye$LSkUd?hQdW6u+^@B2jL z|M2Ts`3251Vt&hh1NdZ823k_4AKj2Ao$o;3t(2AgiEq%iPyMYHd5hAw)UWjJ=$&+r z|8A-qUixVf(o|mb)YI1UrBmvu$*AY6>3aA!RuB2d>LLB4deUj9)-y)0bd0fdh-@I* z*JoIF7{pH!bLnH}Ft6YlOMfq%=AG%_*_fWcM)_j2-Tzj8qsMpg+`xwb@L0E55z_dK zU%Zp}qZgrlfH;Q`^{)7X&QbDUHFFk$Vg#e)dX7U>JN;CV{_o7El9yqOTJl04V ztqHRJvm(rQ&wdT2viFX5e2p~eM*K(*$dB~p4EU-~dFS4!JuzOLt*l$_<$ep!?n!As zPolxZ*H9*b%xOOo{`Jzi-yZF_l5el@8(nv>h5fW)b9$VyYNr`=;vwQ~%1KuoisWs~ z4l#f|{b{F}PJzQ7n@pWp1`{$W!tDJ1trPzjbMZS$bHT4j`eH;7cbR5Yc z?A=E{>b5_Ge9F%$AG{~KUL1qZUuV1*uONFlkG9vr$M7^_D5sb?b@-~Il_sw9h3fCT zCb>Z5L+ z*|yH&ku@A)Oll$j(g&|eb^%XgNDEKaZqOgxg#aDH>Ic*>T(=(|ou#@f zz{9~FZ9!huUu2J}ZLHB-d$fpjjcppYiukTFRealzJz7jZYT)-$erNG}#vn1Y)a6i* zbb;(qhdgSl$})c1`x1N@#kn4gD(umE^0?TeF3%ukihxzfe>49rlyzuZ1$BjJli;gu z@T*Vng3UVba0p(s(vBJAjj^96NS;>W*Tj=r;N+abm($@(Ip0O+0MAO`ix&Z47V|7- zJk$G93qNZ(q4A5nF8GCj?~q6FH9Wn~-->+~ ztY7hT$@@k9=K23J_wMmgS9kvZnM*<-h>#l)(99(9lCiCpt5~<0nMAauwJT6<)ym|e z)uy{$L|YZNnIxdLxGf(+*^1jt5%}3edK4=4;0qmdRJ}~$#>VpPwO7I_`j2}DoEZS&So$y{a_0{uE^^4{) z%G5)bc79pMw@ufrl+`$po!UZK!6aDKFM>^Vb@IL7t1sB8ExebVD*LMsyhph9c(jx6 z8~!>4)vG#vyXrE>FNRu`(GX1 zhObUPfIIb~1E&fG#ZM$dS8;tw;e8|TKVz?r&Esn4{uS;epM3tpI)7xO>Tx{2Z;SBZlGAv z&e0(M_}8PQ{Ey?mjQ{ccPvF0t|B3t`m)`jm>@4KEbgT>C&unZ(xZKNg)t91P!T$*N z#bw6yjMd|Ayj!uIUovi@)b~|z_f1dk6>ZOfwxXTty`4T<$Ng6N5IJbi40!|j-)8Nk zn#_yDZ)GQS!IPFw*u!lXyZIl&S1~-5eWp-u0(MLreGrCLVR)|p&lA$?E;IR_-Q+?{ zJ~aQDiw(X)Rpun#tzaA_c1LXvF?3(rc9|z<=L>jQT2alhm!^0faet{V$5$fqcl6@o#wvc_r0g{)~q9<1Oy z(Idw1E^K^VdvpnbyJU&v@DhI8E)z{%9)Ey(2Iy1y4q9s|xg*##=GD%_JeN$#sXgH7 zpg%f*x46CM=$E6~Ll&sLC48qg)mDISJAqeiiw{)a5bge$U¶ocH$rw|Us^~tBG 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 ?|)vWhW?549FLX8V!($=$DI z)8Y?kU;ARs*wii1TA){?qmJ2DY(cX2_3XCpqpe)MmSdalMQ4ooZlqV2v#yf<^=*{B zLI1X#wU0;7brwv9zrdc99XZt$Cbxu^JP7>D&y|gi?$bID|U+ZFWB8xdMXL>jG>$z77Q__(S4V2cbFXZ+X^WI zo>Ru#ORk1?Vw|O{@dtD0%~!(ag$fUgXg41{pmn<1yKlD5A>X06^ayjYmfsEVeKWt2 z*Vx^8-3>e|MOQ3CS0pG?O3Y)LzVzJie+ap*XVMkoMQC=Luj93*T)#C^nQTMH?YSrA6;@CwsBn>`Zz(^bcpl4DO-xHLH^YxC>zP2u|VbGjIj-vWM7R5 zN1D5L*JO`tx8N8H53!4qgEv3y&{6 zIuKnf!p^buK%R3JJ@9)>dVt@Lpan#7c_}gd1!fOB>-;*|=K?th%#G z_Kf7IJ6Y$$hZ|d%8@EK?^Bbe&_qj9ly`V9U?UFe*`N{*D3i~uAzght_^^8wbnJ{I- zvQ_XUE>8Z=li{9!#DhKXk6^E84CHJ!Wy5``=0x-q9;H3Ur@dIgjLM%|+B@O86gf

I_Aha*|;=@^F*_8 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≪?E1330ep?6hocX|x+&TdJ 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≫@E;~=?5?5$$qcr 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�(alN`m{r&-ONMOJgPCAYM``-O z&aJC7M}7`(*-4$ci%iq?e6Oo1K3u}*L3ohtvf04#Iqocy?;87|Q}0Ri;1;{svHx)o z?xZuv)85Tr=X|x<(_u0j>#?bv#Xk62aQ!U)!vSdL%pAM_N`+&)nwQzkYV;XO16FdkWQU zryV!{A2}+&3>;%k&yCRiGHiOXH(rNal)m{i-|Ox&O*6rhH^gWa_J|GskWRE!RLF(#J#o!MURGHs~$ZV48KFy0^qX*!xw}-1Zvqkc&oVe}%6V zszZ6r&)&PEi?V)l2clp0&}VIZmcd8m+VRx4Ul-E)Y(PGgOX2OqKtSef{&$j9p&V-K;Wjy#D>4zO;Dw7&SRIE*^{ zgg$5k*^=M;G1GL{8Fx)JtRt3+H8K@_hztuGdUytYV#) zveq)EU{kR&8+E5Ec@vs@S!ey|o4q!A3hTKcZ1$FhO{8VKIdU0#%M9DC^Ad0*F0$9O za38Gf`R810H@CcpT*|EBp8($s%dN*DLZ@Dx<#%%1os;R-i;~}d6R>ZZr}dw?r_{=9 zS0D3%OF1q^8`mOaX^usnr#FVX|KuBgj`+hV^I5C;{04NBR}iiZfZw%W+j@7s@3i(9 zI^ee@yRT-S9*}J