From 8ef0c57f2b7e0d0a95d3a7b6c6b6d506fd422222 Mon Sep 17 00:00:00 2001 From: "lishuang.xie" Date: Sat, 18 May 2024 15:25:31 +0800 Subject: [PATCH] fix bug#1953 from dev_ck_v2.1_bug#1953# to dev_ck_v2.1 1. add new shell command: reg_ape to print the timer task info; 2. update the function of osp_timer_sync; 3. add new testcase of case1 to test the timer(t_offset < 10) 4. Test: 4.1 spu_case0_arm_case0: Pass; 4.2 spu_case1_arm_case20: Pass; 4.3 spu_case14_arm_case20:Pass; 4.4 spu_case20_arm_case20:Pass; 4.5 spu_case24_arm_case24:Pass; 4.6 spu_case34_arm_case5: Pass; 4.7 spu_case44_arm_case5: Pass; --- public/ape_spu/osp/inc/osp_timer.h | 2 +- public/ape_spu/osp/src/osp_init.s.c | 1 + public/ape_spu/osp/src/osp_timer.s.c | 67 +++++++++++--- .../case1/fronthaul/src/ecs_rfm_spu1_test.s.c | 61 +++++++++++++ .../case1/osp/4ape_case(test_timer).txt | 3 + .../case1/osp/src/ape_test_case1.s.c | 87 ++++++++++++++++++ .../case1/osp/src/case1_ape0_task.s.c | 89 +++++++++++++++++++ .../case1/osp/src/case1_ape1_task.s.c | 88 ++++++++++++++++++ .../case1/osp/src/case1_ape2_task.s.c | 89 +++++++++++++++++++ .../case1/osp/src/case1_ape3_task.s.c | 88 ++++++++++++++++++ 10 files changed, 561 insertions(+), 14 deletions(-) create mode 100644 public/test/testcases/case1/fronthaul/src/ecs_rfm_spu1_test.s.c create mode 100644 public/test/testcases/case1/osp/4ape_case(test_timer).txt create mode 100644 public/test/testcases/case1/osp/src/ape_test_case1.s.c create mode 100644 public/test/testcases/case1/osp/src/case1_ape0_task.s.c create mode 100644 public/test/testcases/case1/osp/src/case1_ape1_task.s.c create mode 100644 public/test/testcases/case1/osp/src/case1_ape2_task.s.c create mode 100644 public/test/testcases/case1/osp/src/case1_ape3_task.s.c diff --git a/public/ape_spu/osp/inc/osp_timer.h b/public/ape_spu/osp/inc/osp_timer.h index c09c9fd..4579718 100644 --- a/public/ape_spu/osp/inc/osp_timer.h +++ b/public/ape_spu/osp/inc/osp_timer.h @@ -43,6 +43,6 @@ extern void osp_timer_unsync(int scsId); /* 删除定时点任务配置信息 extern void osp_timer_unsync_notask(int scs_id); /* 只清空定时点配置信息和设备,未删除任务 */ extern void osp_timer_call_task(); /* 顺序触发定时点任务 */ extern void osp_timer_call_task_spe(uint8_t u8slot, uint8_t u8taskidx); /* 指定触发某定时点任务 */ - +extern void osp_register_task_group_show(void); #endif /* __OSP_TIMER_H__ */ diff --git a/public/ape_spu/osp/src/osp_init.s.c b/public/ape_spu/osp/src/osp_init.s.c index 3601cca..174d880 100644 --- a/public/ape_spu/osp/src/osp_init.s.c +++ b/public/ape_spu/osp/src/osp_init.s.c @@ -233,6 +233,7 @@ void osp_init() #ifdef OSP_DEBUG_TEST debug_write(OSP_DEBUG_POT(g_ape_id, 0), ++flag); //0x4 #endif + spu_insert_cmd_ext("reg_ape", (OSP_FUNCPTR)osp_register_task_group_show, "gu8_register_task_group", 0); #if 0 /* DDR二次管理 */ diff --git a/public/ape_spu/osp/src/osp_timer.s.c b/public/ape_spu/osp/src/osp_timer.s.c index 4309132..adef96b 100644 --- a/public/ape_spu/osp/src/osp_timer.s.c +++ b/public/ape_spu/osp/src/osp_timer.s.c @@ -94,19 +94,28 @@ void osp_timer_sync(int scsId) #endif int i = 0; + int j = 0; int stc_timer_index = 0; ape_mtimer_sync(scsId); // scs id - int tmp_bitmap; - int tbl_index = 0; - int slot_id = 0; - int j,tmp_cnt = 0; + int tmp_bitmap = 0; + int tbl_index = 0; + int slot_id = 0; + int tmp_cnt = 0; osp_timer_desc *ptr = g_osp_timer_desc; + for(i = 0; i < g_osp_timer_desc_idx; i++) { tmp_bitmap = ptr->slot_bitmap; tbl_index = ptr->t_offset/10; + + if (tbl_index > 99) /* g_task_off_tbl[10][100] */ + { + UCP_PRINT_ERROR("t_offset[%d] overflow", ptr->t_offset); + return ; + } + while(tmp_bitmap != 0) { slot_id = find_lsb(tmp_bitmap); @@ -121,10 +130,10 @@ void osp_timer_sync(int scsId) if (tmp_cnt > 0) { - for(i = 0; i < 10;i++) + for(i = 0; i < 10; i++) { stc_timer_index = 0; - for(j = 0; j < 100;j++) + for(j = 0; j < 100; j++) { if (OSP_TIMER_TASK_MAX <= stc_timer_index) { @@ -138,17 +147,35 @@ void osp_timer_sync(int scsId) stc_timer_index++; lastOffset = 0; - if ((0 == g_task_off_tbl[i][j].t_offset) && (0 != g_task_off_tbl[i][j].task_id)) - { - gu8_register_task_group[i][stc_timer_index-1] = (uint8_t)(g_task_off_tbl[i][j].task_id); - g_reg_task_index++; - } - else + if (0 == g_task_off_tbl[i][j].task_id) { /* 第一个点:无task id 或偏移非0,需要加一个假的 */ gu8_register_task_group[i][stc_timer_index-1] = 0; g_reg_task_index++; } + else + { + if (0 == g_task_off_tbl[i][j].t_offset) + { + /* 第一个点有真实数据,用真实数据 */ + gu8_register_task_group[i][stc_timer_index-1] = (uint8_t)(g_task_off_tbl[i][j].task_id); + g_reg_task_index++; + } + else + { + /* 第一个点:无task id 或偏移非0,需要加一个假的 */ + gu8_register_task_group[i][stc_timer_index-1] = 0; + g_reg_task_index++; + + g_stcTimerPoint[i*OSP_TIMER_TASK_MAX + stc_timer_index].pointVal = g_task_off_tbl[i][j].t_offset - lastOffset; //g_stcTimerPoint[i*50 + stc_timer_index-1].pointVal; + g_stcTimerPoint[i*OSP_TIMER_TASK_MAX + stc_timer_index].lastFlag = 0; + lastOffset = g_task_off_tbl[i][j].t_offset; + stc_timer_index++; + + gu8_register_task_group[i][stc_timer_index-1] = (uint8_t)(g_task_off_tbl[i][j].task_id); + g_reg_task_index++; + } + } } else { @@ -181,6 +208,18 @@ void osp_timer_sync(int scsId) return ; } +void osp_register_task_group_show(void) +{ + for(int i=0;i<10 ;i++) + { + for(int j=0;j<20;j++) + { + UCP_PRINT_ERROR("taskid:%d[%d,%d]",gu8_register_task_group[i][j],i,j); + } + } +} + + void osp_timer_unsync(int scsId) { ape_mtimer_unsync(scsId); // scs id @@ -280,7 +319,7 @@ void osp_timer_call_task_spe(uint8_t u8slot, uint8_t u8taskidx) #ifdef UCP_OSP_DBG_ENABLE g_timer_task++; debug_write(OSP_DEBUG_POT(g_ape_id, 95), g_timer_task); - debug_write(OSP_DEBUG_POT(g_ape_id, 92), task_id); + debug_write(OSP_DEBUG_POT(g_ape_id, 92), task_id);//ape1 0xb7e02530 #endif osp_post_timer_event_sem(task_id); } @@ -288,6 +327,8 @@ void osp_timer_call_task_spe(uint8_t u8slot, uint8_t u8taskidx) { #ifdef UCP_OSP_DBG_ENABLE g_timer_notask++; + debug_write(OSP_DEBUG_POT(g_ape_id, 97), task_id); + debug_write(OSP_DEBUG_POT(g_ape_id, 98), u8taskidx); debug_write(OSP_DEBUG_POT(g_ape_id, 96), g_timer_notask); #endif } diff --git a/public/test/testcases/case1/fronthaul/src/ecs_rfm_spu1_test.s.c b/public/test/testcases/case1/fronthaul/src/ecs_rfm_spu1_test.s.c new file mode 100644 index 0000000..2a696ea --- /dev/null +++ b/public/test/testcases/case1/fronthaul/src/ecs_rfm_spu1_test.s.c @@ -0,0 +1,61 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ape_test_case1.s.c +// Author : +// Created On : 2022-10-26 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include "typedef.h" +#include "ucp_printf.h" +#include "phy_para.h" +#include "rfm1_drv.h" + + +/************************************************************************/ +extern void cpri_init(uint32_t option,uint32_t MappingMode); +extern void jesd_init(); +extern void ecpri_init(uint8_t nOption); + +int32_t fh_data_init(void) +{ + return 0; +} + +int32_t fh_drv_init() +{ + stFrontHaulDrvPara fhDrvPara; + memset_ucp(&fhDrvPara, 0, sizeof(stFrontHaulDrvPara)); + + fhDrvPara.protocolSel = PROTOCOL_CPRI; + fhDrvPara.rateOption = CPRI_OPTION_8; + fhDrvPara.mapOption = OTIC_MAP_FIGURE12; + + fronthaul_drv_cfg(&fhDrvPara); + + return 0; +} + +int32_t fh_csu_test_init(void) +{ + + return 0; +} + +void fh_test_case() +{ + return; +} + +void fh_data_check(uint32_t times) +{ + return; +} + + diff --git a/public/test/testcases/case1/osp/4ape_case(test_timer).txt b/public/test/testcases/case1/osp/4ape_case(test_timer).txt new file mode 100644 index 0000000..7d3ee57 --- /dev/null +++ b/public/test/testcases/case1/osp/4ape_case(test_timer).txt @@ -0,0 +1,3 @@ +spu_case1_arm_case20 + +test timer diff --git a/public/test/testcases/case1/osp/src/ape_test_case1.s.c b/public/test/testcases/case1/osp/src/ape_test_case1.s.c new file mode 100644 index 0000000..c80aad9 --- /dev/null +++ b/public/test/testcases/case1/osp/src/ape_test_case1.s.c @@ -0,0 +1,87 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : ape_test_case1.s.c +// Author : +// Created On : 2022-10-26 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#include "typedef.h" +#include "osp_task.h" +#include "osp_timer.h" +#include "ucp_printf.h" + +/************************************************************************/ +void ape0_event_task(uint32_t addr, uint32_t size); +void ape0_event_task1(uint32_t addr, uint32_t size); +void ape0_test_task_reg(void) +{ + osp_task_info_ex ape0_event_task_info = {50, (int8_t*)"ape0_event_task", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape0_event_task}; + osp_task_info_ex ape0_event_task_del = {51, (int8_t*)"ape0_event_del", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape0_event_task1}; + osp_task_create(&ape0_event_task_info); + osp_task_create(&ape0_event_task_del); + return ; +} + +/************************************************************************/ +void ape1_event_task(uint32_t addr, uint32_t size); +void ape1_event_task1(uint32_t addr, uint32_t size); +void ape1_test_task_reg(void) +{ + osp_task_info_ex ape1_event_task_info = {50, (int8_t*)"ape1_event_task", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape1_event_task}; + osp_task_info_ex ape1_event_task_del = {51, (int8_t*)"ape1_event_del", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape1_event_task1}; + osp_task_create(&ape1_event_task_info); + osp_task_create(&ape1_event_task_del); + return ; +} + +/************************************************************************/ +void ape2_event_task(uint32_t addr, uint32_t size); +void ape2_event_task1(uint32_t addr, uint32_t size); +void ape2_test_task_reg(void) +{ + osp_task_info_ex ape2_event_task_info = {50, (int8_t*)"ape2_event_task", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape2_event_task}; + osp_task_info_ex ape2_event_task_del = {51, (int8_t*)"ape2_event_del", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape2_event_task1}; + osp_task_create(&ape2_event_task_info); + osp_task_create(&ape2_event_task_del); + return ; +} + +/************************************************************************/ +void ape3_event_task(uint32_t addr, uint32_t size); +void ape3_event_task1(uint32_t addr, uint32_t size); +void ape3_test_task_reg(void) +{ + osp_task_info_ex ape3_event_task_info = {50, (int8_t*)"ape3_event_task", 50, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape3_event_task}; + osp_task_info_ex ape3_event_task_del = {51, (int8_t*)"ape3_event_del", 51, 2048, OSP_EVENT_TYPE, 0, 0, 0, NULL, (OSP_TASKENTRY_FUNC)ape3_event_task1}; + osp_task_create(&ape3_event_task_info); + osp_task_create(&ape3_event_task_del); + return ; +} + +void ape4_test_task_reg(void) +{ + return ; +} + +void ape5_test_task_reg(void) +{ + return ; +} + +void ape6_test_task_reg(void) +{ + return ; +} + +void ape7_test_task_reg(void) +{ + return ; +} + diff --git a/public/test/testcases/case1/osp/src/case1_ape0_task.s.c b/public/test/testcases/case1/osp/src/case1_ape0_task.s.c new file mode 100644 index 0000000..2f64899 --- /dev/null +++ b/public/test/testcases/case1/osp/src/case1_ape0_task.s.c @@ -0,0 +1,89 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : case20_ape0_task.s.c +// Author : +// Created On : 2023-01-05 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "ucp_utility.h" +#include "ucp_tick.h" +#include "ucp_printf.h" +#include "phy_para.h" +#include "osp_msg.h" +#include "ucp_testcase.h" +#include "msg_transfer_layer.h" +#include "ucp_port.h" +#include "ape_mtimer.h" +#include "osp_task.h" +#include "osp_timer.h" + +/***************************************************************/ +/* 定时时任务相关打点 */ +static uint32_t g_u32_case1_ape0_timer1_cnt = 0; // 32 0xB7E00080 +static uint32_t g_u32_case1_ape0_timer2_cnt = 0; // 33 0xB7E00084 +static uint32_t g_u32_case1_ape0_timer3_cnt = 0; // 34 0xB7E00088 + +/* 定时点任务 */ +void ape0_timer1_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 32), ++g_u32_case1_ape0_timer1_cnt); + + return; +} + +void ape0_timer2_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 33), ++g_u32_case1_ape0_timer2_cnt); + + return ; +} + +void ape0_timer3_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 34), ++g_u32_case1_ape0_timer3_cnt); + + return ; +} + + +/*************************************************************************/ +/* 收到消息后创建任务 */ +void ape0_event_task(uint32_t addr, uint32_t size) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x01010101); + + osp_task_info_ex ape0_task_timer1 = {43, (int8_t*)"ape0_task_timer1", 43, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 5, NULL, (OSP_TASKENTRY_FUNC)ape0_timer1_task}; + osp_task_info_ex ape0_task_timer2 = {44, (int8_t*)"ape0_task_timer2", 44, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 120, NULL, (OSP_TASKENTRY_FUNC)ape0_timer2_task}; + osp_task_info_ex ape0_task_timer3 = {45, (int8_t*)"ape0_task_timer3", 45, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 400, NULL, (OSP_TASKENTRY_FUNC)ape0_timer3_task}; + + osp_task_create(&ape0_task_timer1); + osp_task_create(&ape0_task_timer2); + osp_task_create(&ape0_task_timer3); + + osp_timer_sync(NR_SCS_30K); + + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x03030303); + return; +} + +/* 收到消息后删除任务 */ +uint32_t gu32_ape0_del_task_cnt = 0; +void ape0_event_task1(uint32_t addr, uint32_t size) +{ + osp_del_task(43, 1); + osp_del_task(44, 1); + osp_del_task(45, 1); + osp_timer_unsync(NR_SCS_30K); + + return ; +} diff --git a/public/test/testcases/case1/osp/src/case1_ape1_task.s.c b/public/test/testcases/case1/osp/src/case1_ape1_task.s.c new file mode 100644 index 0000000..8c97a4f --- /dev/null +++ b/public/test/testcases/case1/osp/src/case1_ape1_task.s.c @@ -0,0 +1,88 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : case20_ape1_task.s.c +// Author : +// Created On : 2023-01-05 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "ucp_utility.h" +#include "ucp_tick.h" +#include "ucp_printf.h" +#include "phy_para.h" +#include "osp_msg.h" +#include "ucp_testcase.h" +#include "msg_transfer_layer.h" +#include "ucp_port.h" +#include "ape_mtimer.h" +#include "osp_task.h" +#include "osp_timer.h" + +/***************************************************************/ +/* 定时时任务相关打点 */ +static uint32_t g_u32_case1_ape1_timer1_cnt = 0; // 32 0xB7E00280 +static uint32_t g_u32_case1_ape1_timer2_cnt = 0; // 33 0xB7E00284 +static uint32_t g_u32_case1_ape1_timer3_cnt = 0; // 34 0xB7E00288 + +/* 定时点任务 */ +void ape1_timer1_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 32), ++g_u32_case1_ape1_timer1_cnt); + + return; +} + +void ape1_timer2_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 33), ++g_u32_case1_ape1_timer2_cnt); + + return ; +} + +void ape1_timer3_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 34), ++g_u32_case1_ape1_timer3_cnt); + + return ; +} + +/*************************************************************************/ +/* 收到消息后创建任务 */ +void ape1_event_task(uint32_t addr, uint32_t size) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x01010101); + + osp_task_info_ex ape1_task_timer1 = {43, (int8_t*)"ape1_task_timer1", 43, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 6, NULL, (OSP_TASKENTRY_FUNC)ape1_timer1_task}; + osp_task_info_ex ape1_task_timer2 = {44, (int8_t*)"ape1_task_timer2", 44, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 220, NULL, (OSP_TASKENTRY_FUNC)ape1_timer2_task}; + osp_task_info_ex ape1_task_timer3 = {45, (int8_t*)"ape1_task_timer3", 45, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 410, NULL, (OSP_TASKENTRY_FUNC)ape1_timer3_task}; + + osp_task_create(&ape1_task_timer1); + osp_task_create(&ape1_task_timer2); + osp_task_create(&ape1_task_timer3); + + osp_timer_sync(NR_SCS_30K); + + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x03030303); + return; +} + +/* 收到消息后删除任务 */ +void ape1_event_task1(uint32_t addr, uint32_t size) +{ + osp_del_task(43, 1); + osp_del_task(44, 1); + osp_del_task(45, 1); + osp_timer_unsync(NR_SCS_30K); + + return ; +} + diff --git a/public/test/testcases/case1/osp/src/case1_ape2_task.s.c b/public/test/testcases/case1/osp/src/case1_ape2_task.s.c new file mode 100644 index 0000000..9f54db2 --- /dev/null +++ b/public/test/testcases/case1/osp/src/case1_ape2_task.s.c @@ -0,0 +1,89 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : case20_ape2_task.s.c +// Author : +// Created On : 2023-01-05 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "ucp_utility.h" +#include "ucp_tick.h" +#include "ucp_printf.h" +#include "phy_para.h" +#include "osp_msg.h" +#include "ucp_testcase.h" +#include "msg_transfer_layer.h" +#include "ucp_port.h" +#include "ape_mtimer.h" +#include "osp_task.h" +#include "osp_timer.h" + +/***************************************************************/ +/* 定时时任务相关打点 */ +static uint32_t g_u32_case1_ape2_timer1_cnt = 0; // 32 0xB7E00480 +static uint32_t g_u32_case1_ape2_timer2_cnt = 0; // 33 0xB7E00484 +static uint32_t g_u32_case1_ape2_timer3_cnt = 0; // 34 0xB7E00488 + +/* 定时点任务 */ +void ape2_timer1_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 32), ++g_u32_case1_ape2_timer1_cnt); + + return; +} + +void ape2_timer2_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 33), ++g_u32_case1_ape2_timer2_cnt); + + return ; +} + +void ape2_timer3_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 34), ++g_u32_case1_ape2_timer3_cnt); + + return ; +} + + +/*************************************************************************/ +/* 收到消息后创建任务 */ +void ape2_event_task(uint32_t addr, uint32_t size) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x01010101); + + osp_task_info_ex ape2_task_timer1 = {43, (int8_t*)"ape2_task_timer1", 43, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 7, NULL, (OSP_TASKENTRY_FUNC)ape2_timer1_task}; + osp_task_info_ex ape2_task_timer2 = {44, (int8_t*)"ape2_task_timer2", 44, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 180, NULL, (OSP_TASKENTRY_FUNC)ape2_timer2_task}; + osp_task_info_ex ape2_task_timer3 = {45, (int8_t*)"ape2_task_timer3", 45, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 430, NULL, (OSP_TASKENTRY_FUNC)ape2_timer3_task}; + + osp_task_create(&ape2_task_timer1); + osp_task_create(&ape2_task_timer2); + osp_task_create(&ape2_task_timer3); + + osp_timer_sync(NR_SCS_30K); + + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x03030303); + return; +} + +/* 收到消息后删除任务 */ +void ape2_event_task1(uint32_t addr, uint32_t size) +{ + osp_del_task(43, 1); + osp_del_task(44, 1); + osp_del_task(45, 1); + osp_timer_unsync(NR_SCS_30K); + + return ; +} + diff --git a/public/test/testcases/case1/osp/src/case1_ape3_task.s.c b/public/test/testcases/case1/osp/src/case1_ape3_task.s.c new file mode 100644 index 0000000..b0022e2 --- /dev/null +++ b/public/test/testcases/case1/osp/src/case1_ape3_task.s.c @@ -0,0 +1,88 @@ +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : case20_ape3_task.s.c +// Author : +// Created On : 2023-01-05 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ +#include "ucp_utility.h" +#include "ucp_tick.h" +#include "ucp_printf.h" +#include "phy_para.h" +#include "osp_msg.h" +#include "ucp_testcase.h" +#include "msg_transfer_layer.h" +#include "ucp_port.h" +#include "ape_mtimer.h" +#include "osp_task.h" +#include "osp_timer.h" + +/***************************************************************/ +/* 定时时任务相关打点 */ +static uint32_t g_u32_case1_ape3_timer1_cnt = 0; // 32 0xB7E00680 +static uint32_t g_u32_case1_ape3_timer2_cnt = 0; // 33 0xB7E00684 +static uint32_t g_u32_case1_ape3_timer3_cnt = 0; // 34 0xB7E00688 + +/* 定时点任务 */ +void ape3_timer1_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 32), ++g_u32_case1_ape3_timer1_cnt); + + return; +} + +void ape3_timer2_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 33), ++g_u32_case1_ape3_timer2_cnt); + + return ; +} + +void ape3_timer3_task(void) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 34), ++g_u32_case1_ape3_timer3_cnt); + + return ; +} + +/*************************************************************************/ +/* 收到消息后创建任务 */ +void ape3_event_task(uint32_t addr, uint32_t size) +{ + uint32_t ape_id = get_core_id(); + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x01010101); + + osp_task_info_ex ape3_task_timer1 = {43, (int8_t*)"ape3_task_timer1", 43, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 3, NULL, (OSP_TASKENTRY_FUNC)ape3_timer1_task}; + osp_task_info_ex ape3_task_timer2 = {44, (int8_t*)"ape3_task_timer2", 44, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 190, NULL, (OSP_TASKENTRY_FUNC)ape3_timer2_task}; + osp_task_info_ex ape3_task_timer3 = {45, (int8_t*)"ape3_task_timer3", 45, 2048, OSP_TIMER_TYPE, 0, 0x3ff, 300, NULL, (OSP_TASKENTRY_FUNC)ape3_timer3_task}; + + osp_task_create(&ape3_task_timer1); + osp_task_create(&ape3_task_timer2); + osp_task_create(&ape3_task_timer3); + + osp_timer_sync(NR_SCS_30K); + + debug_write(DBG_DDR_COMMON_IDX(ape_id, 29), 0x03030303); + return; +} + +/* 收到消息后删除任务 */ +void ape3_event_task1(uint32_t addr, uint32_t size) +{ + osp_del_task(43, 1); + osp_del_task(44, 1); + osp_del_task(45, 1); + osp_timer_unsync(NR_SCS_30K); + + return ; +} +