Merge branch 'dev_ck_v2.1_bug#1061_bug#1081_bug#1079#' into 'dev_ck_v2.1'

1. fix Bug#1061

See merge request ucp/driver/ucp4008_platform_spu!34
This commit is contained in:
Xianfeng Du 2023-09-25 01:59:54 +00:00
commit 0c9d8ff4e9
22 changed files with 1148 additions and 812 deletions

View File

@ -49,7 +49,7 @@ void phy_para_init(int protocol, int option);
// stc timer初始化该接口只需八个核中的一个核调用即可
void ape_stc_init();
// scs sm初始化该接口只需八个核中的一个核调用即可放在main函数的最前面
// pet sm初始化该接口只需八个核中的一个核调用即可放在main函数的最前面
void pet_sm_init();
/***************************************************************/
// 以下接口为帕拉丁临时验证带OSP的版本使用最好按声明的顺序依次调用。

View File

@ -94,7 +94,7 @@ extern void osp_del_task(int prio, int scsId);
*/
void osp_var_init(void);
extern void osp_var_init(void);
/*
smart_int_disable
@ -191,7 +191,6 @@ extern int osp_get_cfgfile(char* name, uint32_t *pbuf, int* psize);
/* 定时点相关接口 */
/************************************************************************************/
/*
osp_timer_sync
使
int scsId:ID号
@ -209,7 +208,6 @@ extern int osp_get_cfgfile(char* name, uint32_t *pbuf, int* psize);
extern void osp_timer_sync(int scsId); /* 使能任务定时点 */
/*
osp_timer_unsync
int scsId:ID号

View File

@ -264,31 +264,17 @@ start_hook_func osp_init_start_hook[] =
void osp_start()
{
int ret = 0;
int apeId = get_core_id();
int32_t core_id = get_core_id();
int32_t ret = 0;
g_ape_id = get_core_id();
g_que_id = g_ape_id;
#if 1
ret = smart_os_debug_init((DBG_DDR_OS_ADDR_BASE+apeId*DBG_DDR_OS_LEN), DBG_DDR_OS_LEN); // 推荐768, 实际1024
ret = smart_os_debug_init((DBG_DDR_OS_ADDR_BASE + core_id*DBG_DDR_OS_LEN), DBG_DDR_OS_LEN); // 推荐768, 实际1024
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 31), ret); // ape0: 0xb7e2407c
debug_write(DBG_DDR_ERR_IDX(core_id, 31), ret); // ape0: 0xb7e2407c
}
ret = smart_hq_debug_init((DBG_DDR_HW_ADDR_BASE+apeId*DBG_DDR_HW_LEN), DBG_DDR_HW_LEN); // 推荐384实际512
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 32), ret); // ape0: 0xb7e24080
}
#if 0
ret = smart_spin_debug_init((DBG_DDR_SPIN_ADDR_BASE+apeId*DBG_DDR_SPIN_LEN), DBG_DDR_SPIN_LEN); // 推荐36, 实际64
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 39), ret); // ape0: 0xb7e2407c
}
#endif
#endif
smart_kernel_init(osp_init_start_hook, g_ape_id);
}

View File

@ -494,7 +494,7 @@ void osp_hw_que_irq(void)
#ifdef UCP_OSP_DBG_HW_CNT_ENABLE
uint8_t src_core_id = do_read_byte((char*)(&pmsg_head->src_core_id));
__ucps2_synch(0);
//__ucps2_synch(0);
switch (src_core_id)
{
@ -566,7 +566,7 @@ void osp_hw_que_irq(void)
#endif
dst_task_id = do_read_byte((char*)(&pmsg_head->dst_task_id));
__ucps2_synch(0);
//__ucps2_synch(0);
if (OSP_OK != osp_task_id_is_true(dst_task_id))
{

View File

@ -20,7 +20,7 @@ int osp_sw_queue_int(osp_sw_queue *p_sw_queue_head)
p_sw_queue_head->full_count = 0;
p_sw_queue_head->empty_count = 0;
p_sw_queue_head->mask = OSP_QUE_DEP-1;
p_sw_queue_head->msg_sem = osp_create_sem(1);
//p_sw_queue_head->msg_sem = osp_create_sem(1);
/*if (NULL == p_sw_queue_head->msg_sem)
{
return -OSP_PAR_ILL;

View File

@ -558,11 +558,25 @@ int osp_task_create(osp_task_info_ex *t_info_val)
if ((t_info_val->task_type == OSP_TIMER_TYPE) || (t_info_val->task_type == OSP_DRIVER_TYPE) || (t_info_val->task_type == OSP_OSP_TYPE))
{
tcb_handle->sem = osp_create_sem(0);
if (NULL == tcb_handle->sem)
{
UCP_PRINT_ERROR("task=%d, create sem error.\n\r", t_info_val->task_id);
FREE((stack_down-4));
FREE((char*)tcb_handle);
return -1;
}
}
//else if((t_attr_val->sem_value != 0) && (t_attr_val->task_type == OSP_EVENT_TYPE))
if (t_info_val->task_type == OSP_EVENT_TYPE)
{
tcb_handle->event_sem = osp_create_sem(0);
if (NULL == tcb_handle->event_sem)
{
UCP_PRINT_ERROR("task=%d, create sem error.\n\r", t_info_val->task_id);
FREE((stack_down-4));
FREE((char*)tcb_handle);
return -1;
}
tcb_handle->que_head = (osp_sw_queue*)osp_malloc(sizeof(osp_sw_queue));
if (NULL == tcb_handle->que_head)
{
@ -606,6 +620,9 @@ int osp_task_create(osp_task_info_ex *t_info_val)
debug_write(OSP_DEBUG_POT(g_ape_id, 29), t_info_val->task_id);
UCP_PRINT_ERROR("timer point is overflow\n\r");
UCP_PRINT_ERROR("timer cfg failed\n\r");
osp_delete_sem(tcb_handle->sem);
FREE((stack_down-4));
FREE((char*)tcb_handle);
return -1;
}
g_osp_timer_desc[g_osp_timer_desc_idx].task_id = t_info_val->task_id;
@ -667,7 +684,7 @@ int osp_task_create(osp_task_info_ex *t_info_val)
FREE((char*)tcb_handle);
return -1;
}
UCP_PRINT_LOG("smart_task_create return: 0x%08x, task_id = 0x%08x, task_pro = 0x%08x\r\n", ret, tcb_handle->task_id, tcb_handle->priority);
UCP_PRINT_LOG("smart_task_create return:%d, task_id=%d, num=%d", ret, tcb_handle->task_id, g_taskid_num);
debug_write(OSP_DEBUG_POT(g_ape_id, 30), ret);
debug_write(OSP_DEBUG_POT(g_ape_id, 31), t_info_val->task_id);
@ -718,6 +735,7 @@ void osp_del_timer_task(int task_id)
if(NULL == tcb_handle)
{
debug_write(OSP_DEBUG_POT(g_ape_id, 13), task_id);
UCP_PRINT_ERROR("osp_del_timer_task: no tcb_handle(task_id=%d)", task_id);
return ;
}
@ -725,9 +743,11 @@ void osp_del_timer_task(int task_id)
if (task_prio <= 0)
{
debug_write(OSP_DEBUG_POT(g_ape_id, 14), task_id);
UCP_PRINT_ERROR("osp_del_timer_task: no task_prio(task_id=%d)", task_id);
return ;
}
smart_task_del(task_prio); /* 删除任务 */
g_task_id_array[task_prio] = 0; /* 通过优先级清任务列表 */
g_prio_array[task_id] = 0; /* 通过任务ID清优先级列表 */
FREE((char*)((tcb_handle->stack_down)-4)); /* 释放栈空间 */
@ -745,7 +765,7 @@ void osp_del_timer_task(int task_id)
break;
}
}
smart_task_del(task_prio); /* 删除任务 */
//smart_task_del(task_prio); /* 删除任务 */
return ;
}
@ -783,7 +803,7 @@ void osp_del_task(int prio, int scsId)
tcb_handle = (osp_tcb*)g_tcb_handler_tbl[task_id];
/* 根据消息类型分别处理 */
#if 0
#if 0 /* osp_timer_unsync接口直接由物理层调用 */
if (OSP_TIMER_TYPE == tcb_handle->task_type)
{
/* 只要删除定时点任务,那就清空所有定时点任务相关信息 */
@ -795,16 +815,23 @@ void osp_del_task(int prio, int scsId)
#endif
if (OSP_EVENT_TYPE == tcb_handle->task_type)
{
/* 删除任务 */
smart_task_del(prio);
/* 事件任务,删除事件信号量和软件队列 */
osp_delete_sem(tcb_handle->event_sem);
osp_free((char*)tcb_handle->que_head);
}
else if (OSP_NORMAL_TYPE == tcb_handle->task_type)
{
/* 无操作 */
/* 删除任务 */
smart_task_del(prio);
}
else
{
/* 删除任务 */
smart_task_del(prio);
/* 其他任务,删除信号量 */
osp_delete_sem(tcb_handle->sem);
}
@ -822,14 +849,14 @@ void osp_del_task(int prio, int scsId)
if (task_id == g_task_id_table[u8_loop])
{
g_task_id_table[u8_loop] = 0;
memcpy(&(g_task_id_table[u8_loop]), &(g_task_id_table[u8_loop+1]), (g_taskid_num-u8_loop-1));
memcpy(&(g_task_id_table[u8_loop]), &(g_task_id_table[u8_loop+1]), sizeof(int)*(g_taskid_num-u8_loop-1));
g_taskid_num--;
break;
}
}
/* 删除任务 */
smart_task_del(prio);
//smart_task_del(prio);
debug_write(OSP_DEBUG_POT(g_ape_id, 33), task_id);
#ifdef UCP_TICK_ENABLE

View File

@ -7,7 +7,7 @@
#include "ucp_printf.h"
#include "ucp_tick.h"
osp_id_timer_t g_task_off_tbl[10][50] = {0}; /* 根据定时点任务分解成时隙偏移任务ID */
osp_id_timer_t g_task_off_tbl[10][100] = {0}; /* 根据定时点任务分解成时隙偏移任务ID */
osp_timer_desc g_osp_timer_desc[OSP_TIMER_TASK_MAX] ={0}; /* 定时点任务与定时点信息汇总 */
int g_osp_timer_desc_idx = 0;
@ -21,7 +21,7 @@ extern void stc_timer_set_tmrpoint(stStcTimerPoint *pTmrPoint);
//uint32_t g_task_timer_offset_forsoc[120] = {0};
char g_register_task_buf[OSP_TMR_POINT_MAX] = {0};
uint8_t gu8_register_task_group[10][50] = {0};
uint8_t gu8_register_task_group[10][100] = {0};
//char g_t_off_larger[50] = {0};
uint16_t g_reg_task_index = 0;
@ -43,13 +43,25 @@ void osp_timer_clear_stctimer()
void osp_timer_clear_task()
{
uint16_t u16_loop = 0;
for (u16_loop = 0; u16_loop < g_osp_timer_desc_idx; u16_loop++)
{
if ((g_osp_timer_desc[u16_loop].task_id) > 0)
{
osp_del_timer_task(g_osp_timer_desc[u16_loop].task_id);
}
}
#if 0
for (u16_loop = 0; u16_loop < g_reg_task_index; u16_loop++)
{
if (g_register_task_buf[g_reg_task_index] > 0)
//UCP_PRINT_ERROR("loop=%d, taskid=%d", u16_loop, g_register_task_buf[u16_loop]);
if (g_register_task_buf[u16_loop] > 0)
{
osp_del_timer_task(g_register_task_buf[g_reg_task_index]);
osp_del_timer_task(g_register_task_buf[u16_loop]);
}
}
#endif
}
/* OSP侧定时点任务初始化 */
@ -125,6 +137,7 @@ void osp_timer_sync(int scsId)
tmp_bitmap &= ~(1 << slot_id);
g_task_off_tbl[slot_id][tbl_index].task_id = ptr->task_id;
g_task_off_tbl[slot_id][tbl_index].t_offset = ptr->t_offset;
//UCP_PRINT_ERROR("i=%d,j=%d,taskid=%d,offset=%d", slot_id,tbl_index, ptr->task_id, ptr->t_offset);
}
tmp_cnt++;
ptr++;
@ -135,8 +148,13 @@ void osp_timer_sync(int scsId)
for(i = 0; i < 10;i++)
{
stc_timer_index = 0;
for(j = 0; j < 50;j++)
for(j = 0; j < 100;j++)
{
if (50 <= stc_timer_index)
{
UCP_PRINT_ERROR("one slot timer tasks overflow\n\r");
return ;
}
if (0 == j)
{
g_stcTimerPoint[i*50 + stc_timer_index].pointVal = 0;

View File

@ -64,15 +64,8 @@ void spu_drv_init(void)
{
pet_sm_alloc();
int32_t core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
UCP_PRINT_EMPTY("Hello world from APE[0x%08x]\r\n", core_id);
ape_drv_init();
UCP_PRINT_EMPTY("core_id[0x%08x] ape_drv_init OK\r\n", core_id);
return;
}

View File

@ -13,24 +13,24 @@
// -FHDR------------------------------------------------------------
#include "ape_top.h"
#include "osp_init.h"
#include "smartos.h"
#include "lib_debug_init.h"
#include "log_client.h"
#include "osp_init.h"
int32_t main(int32_t argc, char* argv[])
{
int32_t core_id = 0;
int32_t ret = 0;
set_core_id();
soc_drv_init();
#if 1
int32_t apeId = get_core_id();
core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
int32_t ret = smart_irq_debug_init(DBG_DDR_IRQ_ADDR_BASE+apeId*DBG_DDR_IRQ_LEN, DBG_DDR_IRQ_LEN);
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 10), ret);
}
#endif
soc_drv_init();
ret = spu_lib_debug_init(core_id);
debug_write(DBG_DDR_COMMON_IDX(core_id, 1), ret);
spu_log_client_init();

View File

@ -61,6 +61,19 @@ static uint32_t gu32_app_sendto_que8_ng = 0;
static uint32_t gu32_app_sendto_que9_ng = 0;
static uint32_t gu32_app_sendto_que10_ng = 0;
static uint32_t gu32_app_sendto_que11_ng = 0;
static uint32_t gu32_app_recv_que0 = 0; // #24
static uint32_t gu32_app_recv_que1 = 0;
static uint32_t gu32_app_recv_que2 = 0;
static uint32_t gu32_app_recv_que3 = 0;
static uint32_t gu32_app_recv_que4 = 0;
static uint32_t gu32_app_recv_que5 = 0;
static uint32_t gu32_app_recv_que6 = 0;
static uint32_t gu32_app_recv_que7 = 0;
static uint32_t gu32_app_recv_que8 = 0;
static uint32_t gu32_app_recv_que9 = 0;
static uint32_t gu32_app_recv_que10 = 0;
static uint32_t gu32_app_recv_que11 = 0;
#endif
#define APP_PALLADIUM_TEST
@ -210,62 +223,62 @@ int32_t osp_send_msg(uint32_t msg_addr,
{
case 0:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 12), ++gu32_app_sendto_que0_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 12), ++gu32_app_sendto_que0_ng);
break;
}
case 1:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 13), ++gu32_app_sendto_que1_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 13), ++gu32_app_sendto_que1_ng);
break;
}
case 2:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 14), ++gu32_app_sendto_que2_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 14), ++gu32_app_sendto_que2_ng);
break;
}
case 3:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 15), ++gu32_app_sendto_que3_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 15), ++gu32_app_sendto_que3_ng);
break;
}
case 4:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 16), ++gu32_app_sendto_que4_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 16), ++gu32_app_sendto_que4_ng);
break;
}
case 5:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 17), ++gu32_app_sendto_que5_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 17), ++gu32_app_sendto_que5_ng);
break;
}
case 6:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 18), ++gu32_app_sendto_que6_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 18), ++gu32_app_sendto_que6_ng);
break;
}
case 7:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 19), ++gu32_app_sendto_que7_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 19), ++gu32_app_sendto_que7_ng);
break;
}
case 8:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 20), ++gu32_app_sendto_que8_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 20), ++gu32_app_sendto_que8_ng);
break;
}
case 9:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 21), ++gu32_app_sendto_que9_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 21), ++gu32_app_sendto_que9_ng);
break;
}
case 10:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 22), ++gu32_app_sendto_que10_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 22), ++gu32_app_sendto_que10_ng);
break;
}
case 11:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 23), ++gu32_app_sendto_que11_ng);
debug_write(OSP_DEBUG_HW_POT(core_id, 23), ++gu32_app_sendto_que11_ng);
break;
}
default:
@ -284,62 +297,62 @@ int32_t osp_send_msg(uint32_t msg_addr,
{
case 0:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 0), ++gu32_app_sendto_que0_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 0), ++gu32_app_sendto_que0_ok);
break;
}
case 1:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 1), ++gu32_app_sendto_que1_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 1), ++gu32_app_sendto_que1_ok);
break;
}
case 2:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 2), ++gu32_app_sendto_que2_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 2), ++gu32_app_sendto_que2_ok);
break;
}
case 3:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 3), ++gu32_app_sendto_que3_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 3), ++gu32_app_sendto_que3_ok);
break;
}
case 4:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 4), ++gu32_app_sendto_que4_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 4), ++gu32_app_sendto_que4_ok);
break;
}
case 5:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 5), ++gu32_app_sendto_que5_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 5), ++gu32_app_sendto_que5_ok);
break;
}
case 6:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 6), ++gu32_app_sendto_que6_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 6), ++gu32_app_sendto_que6_ok);
break;
}
case 7:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 7), ++gu32_app_sendto_que7_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 7), ++gu32_app_sendto_que7_ok);
break;
}
case 8:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 8), ++gu32_app_sendto_que8_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 8), ++gu32_app_sendto_que8_ok);
break;
}
case 9:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 9), ++gu32_app_sendto_que9_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 9), ++gu32_app_sendto_que9_ok);
break;
}
case 10:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 10), ++gu32_app_sendto_que10_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 10), ++gu32_app_sendto_que10_ok);
break;
}
case 11:
{
debug_write(OSP_DEBUG_HW_POT(src_core_id, 11), ++gu32_app_sendto_que11_ok);
debug_write(OSP_DEBUG_HW_POT(core_id, 11), ++gu32_app_sendto_que11_ok);
break;
}
default:
@ -387,15 +400,154 @@ int32_t osp_send_msg_oam(uint32_t msg_addr,
debug_write(DBG_DDR_COMMON_IDX(core_id, 13), g_ecs_app_debug_info.ecs_msg_InQue_err);
debug_write(DBG_DDR_ERR_IDX(core_id, 19), ret_queue);
#endif
#ifdef UCP_OSP_DBG_HW_CNT_ENABLE
switch (dst_core_id)
{
case 0:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 12), ++gu32_app_sendto_que0_ng);
break;
}
#ifdef APP_PALLADIUM_TEST
case 1:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 13), ++gu32_app_sendto_que1_ng);
break;
}
case 2:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 14), ++gu32_app_sendto_que2_ng);
break;
}
case 3:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 15), ++gu32_app_sendto_que3_ng);
break;
}
case 4:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 16), ++gu32_app_sendto_que4_ng);
break;
}
case 5:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 17), ++gu32_app_sendto_que5_ng);
break;
}
case 6:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 18), ++gu32_app_sendto_que6_ng);
break;
}
case 7:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 19), ++gu32_app_sendto_que7_ng);
break;
}
case 8:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 20), ++gu32_app_sendto_que8_ng);
break;
}
case 9:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 21), ++gu32_app_sendto_que9_ng);
break;
}
case 10:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 22), ++gu32_app_sendto_que10_ng);
break;
}
case 11:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 23), ++gu32_app_sendto_que11_ng);
break;
}
default:
{
break;
}
}
#endif
}
#ifdef APP_PALLADIUM_TEST
debug_write(DBG_DDR_COMMON_IDX(core_id, 14), g_ecs_app_debug_info.ecs_msg_send_num);
#endif
#endif
#ifdef UCP_OSP_DBG_HW_CNT_ENABLE
switch (dst_core_id)
{
case 0:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 0), ++gu32_app_sendto_que0_ok);
break;
}
case 1:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 1), ++gu32_app_sendto_que1_ok);
break;
}
case 2:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 2), ++gu32_app_sendto_que2_ok);
break;
}
case 3:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 3), ++gu32_app_sendto_que3_ok);
break;
}
case 4:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 4), ++gu32_app_sendto_que4_ok);
break;
}
case 5:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 5), ++gu32_app_sendto_que5_ok);
break;
}
case 6:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 6), ++gu32_app_sendto_que6_ok);
break;
}
case 7:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 7), ++gu32_app_sendto_que7_ok);
break;
}
case 8:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 8), ++gu32_app_sendto_que8_ok);
break;
}
case 9:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 9), ++gu32_app_sendto_que9_ok);
break;
}
case 10:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 10), ++gu32_app_sendto_que10_ok);
break;
}
case 11:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 11), ++gu32_app_sendto_que11_ok);
break;
}
default:
{
break;
}
}
#endif
return ret_queue;
}
uint8_t ecs_hw_que_get_info(uint8_t que_id, uint32_t* pmsg_addr, uint32_t* pmsg_size)
{
int ret = -1;
@ -432,6 +584,80 @@ uint8_t ecs_hw_que_get_info(uint8_t que_id, uint32_t* pmsg_addr, uint32_t* pmsg_
*pmsg_addr = u32addr;
*pmsg_size = u32msg_size;
#ifdef UCP_OSP_DBG_HW_CNT_ENABLE
uint8_t src_core_id = do_read_byte((char*)(&pmsg_head->src_core_id));
//__ucps2_synch(0);
switch (src_core_id)
{
case 0:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 24), ++gu32_app_recv_que0);
break;
}
case 1:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 25), ++gu32_app_recv_que1);
break;
}
case 2:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 26), ++gu32_app_recv_que2);
break;
}
case 3:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 27), ++gu32_app_recv_que3);
break;
}
case 4:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 28), ++gu32_app_recv_que4);
break;
}
case 5:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 29), ++gu32_app_recv_que5);
break;
}
case 6:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 30), ++gu32_app_recv_que6);
break;
}
case 7:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 31), ++gu32_app_recv_que7);
break;
}
case 8:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 32), ++gu32_app_recv_que8);
break;
}
case 9:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 33), ++gu32_app_recv_que9);
break;
}
case 10:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 34), ++gu32_app_recv_que10);
break;
}
case 11:
{
debug_write(OSP_DEBUG_HW_POT(core_id, 35), ++gu32_app_recv_que11);
break;
}
default:
{
break;
}
}
#endif
#ifdef APP_PALLADIUM_TEST
g_ecs_app_debug_info.ecs_msg_get_info_num++;
debug_write(DBG_DDR_COMMON_IDX(core_id, 17), g_ecs_app_debug_info.ecs_msg_get_info_num);

View File

@ -0,0 +1,21 @@
// +FHDR------------------------------------------------------------
// Copyright (c) 2022 SmartLogic.
// ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename : lib_debug_init.h
// Author : xianfeng.du
// Created On : 2023-09-23
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------
#ifndef __SPU_LIB_DEBUG_INIT_H__
#define __SPU_LIB_DEBUG_INIT_H__
extern int32_t spu_lib_debug_init(uint8_t core_id);
#endif /* __SPU_LIB_DEBUG_INIT_H__ */

View File

@ -0,0 +1,51 @@
// +FHDR------------------------------------------------------------
// Copyright (c) 2022 SmartLogic.
// ALL RIGHTS RESERVED
// -----------------------------------------------------------------
// Filename : lib_debug_init.c
// Author : xianfeng.du
// Created On : 2023-09-23
// Last Modified :
// -----------------------------------------------------------------
// Description:
//
//
// -FHDR------------------------------------------------------------
#include "typedef.h"
#include "lib_debug_init.h"
#include "ucp_utility.h"
#define SPU_APE_NUM (8)
extern int smart_irq_debug_init(uint32_t debug_base_addr, uint32_t len_bytes);
extern int smart_hq_debug_init( uint32_t debug_base_addr, uint32_t len_bytes);
/*
return : 0 -- OK
0x001 -- interrupt error
0x010 -- hw queue error
*/
int32_t spu_lib_debug_init(uint8_t core_id)
{
int32_t ret = 0;
int32_t ret_val = 0;
/* interrupt */
ret = smart_irq_debug_init((DBG_DDR_IRQ_ADDR_BASE + core_id*DBG_DDR_IRQ_LEN), DBG_DDR_IRQ_LEN);
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(core_id, 10), ret);
ret_val += 1;
}
/* hw queue */
ret = smart_hq_debug_init((DBG_DDR_HW_ADDR_BASE + core_id*DBG_DDR_HW_LEN), DBG_DDR_HW_LEN); // 推荐384实际512
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(core_id, 32), ret); // ape0: 0xb7e24080
ret_val += 1 << 1;
}
return ret_val;
}

View File

@ -28,7 +28,7 @@ typedef struct ECS_DEBUG_INFO_STRUCT
uint32_t ecs_msg_QutQue_ok;
uint32_t ecs_msg_QueIsEmpty_num;
}ecs_debug_info;
ecs_debug_info g_ecs_debug_info; /* ECS硬件队列调试信息 */
ecs_debug_info g_ecs_debug_info; /* ECS¿¿¿¿¿¿¿¿ */
#endif
#ifdef UCP_OSP_DBG_HW_CNT_ENABLE
@ -46,8 +46,8 @@ static uint32_t gu32_app_recv_que10 = 0;
static uint32_t gu32_app_recv_que11 = 0;
#endif
ecs_hw_que_info_withirq_t g_ecs_hw_que_info; /* ECS带中断的硬件队列相关信息 */
ecs_hw_que_info_noirq_t gst_ecs_hw_que_info_noirq; /* ECS不带中断的硬件队列相关信息 */
ecs_hw_que_info_withirq_t g_ecs_hw_que_info; /* ECS¿¿¿¿¿¿¿¿¿¿¿¿ */
ecs_hw_que_info_noirq_t gst_ecs_hw_que_info_noirq; /* ECS¿¿¿¿¿¿¿¿¿¿¿¿¿ */
extern void ecs_hw_que_irq(void);
@ -201,6 +201,17 @@ ALWAYS_INLINE int32_t ecs_hw_que_recv(uint8_t u8dst_que_id, uint32_t *pu32value)
int32_t i32ret = 0;
int32_t apeId = get_core_id();
/* is empty */
i32ret = smart_que_is_empty(u8dst_que_id);
if (0 != i32ret)
{
/* no message return */
#ifdef APP_PALLADIUM_TEST
debug_write(DBG_DDR_COMMON_IDX(core_id, 47), i32ret);
#endif
return 1;
}
i32ret = smart_out_que(u8dst_que_id, pu32value);
if (0 != i32ret)
{

View File

@ -27,9 +27,9 @@
#define PRINT_TICK 0x00000010
//#define UCP_PRINT_LEVEL (PRINT_OFF)
//#define UCP_PRINT_LEVEL (PRINT_ERROR | PRINT_WARN |PRINT_LOG | PRINT_DEBUG | PRINT_TICK)
#define UCP_PRINT_LEVEL (PRINT_ERROR | PRINT_WARN |PRINT_LOG | PRINT_DEBUG | PRINT_TICK)
//#define UCP_PRINT_LEVEL (PRINT_ERROR | PRINT_DEBUG)
#define UCP_PRINT_LEVEL (PRINT_ERROR)
//#define UCP_PRINT_LEVEL (PRINT_ERROR)
#if (UCP_PRINT_LEVEL & PRINT_ERROR)

View File

@ -28,13 +28,6 @@ void ecs_rfm0_drv_init(void)
#endif
int32_t ret = 0;
#if 1
ret = smart_irq_debug_init(DBG_DDR_IRQ_ADDR_BASE+apeId*DBG_DDR_IRQ_LEN, DBG_DDR_IRQ_LEN);
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 11), ret);
}
#endif
ret = smart_irq_init(apeId);
if (0 != ret)
{

View File

@ -22,20 +22,21 @@
#include "phy_para.h"
#include "ecpri_queue_proc.h"
#include "ecpri_csu.h"
#include "lib_debug_init.h"
int32_t main(int32_t argc, char* argv[])
{
UCP_PRINT_EMPTY("Hello world from ECS RFM SPU0,coreId[0x%x]", get_core_id());
debug_write(DBG_DDR_COMMON_IDX(get_core_id(), 0), PLATFORM_BUILD_DATA);
int32_t core_id = 0;
int32_t ret = 0;
/* hw_debug_init */
int32_t core_id = get_core_id();
int ret = 0;
ret = smart_hq_debug_init((DBG_DDR_HW_ADDR_BASE+DBG_DDR_HW_LEN*core_id), DBG_DDR_HW_LEN); // 推è<C2A8><C3A8>384,实é™?512
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(core_id, 46), ret);
}
UCP_PRINT_EMPTY("Hello world from ECS RFM SPU0,coreId[0x%x]", get_core_id());
core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
ret = spu_lib_debug_init(core_id);
debug_write(DBG_DDR_COMMON_IDX(core_id, 1), ret);
spu_log_client_init();

View File

@ -37,13 +37,7 @@ void ecs_rfm1_drv_init(void)
SET_CLK_CFG_EMU();
//APC0_CSU_ELEVELMASK = 0xFFFFFFFF;
int32_t ret = 0;
#if 1
ret = smart_irq_debug_init(DBG_DDR_IRQ_ADDR_BASE+apeId*DBG_DDR_IRQ_LEN, DBG_DDR_IRQ_LEN);
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(apeId, 12), ret);
}
#endif
ret = smart_irq_init(apeId);
if (0 != ret)
{
@ -73,7 +67,7 @@ void ecs_rfm1_drv_init(void)
UCP_PRINT_EMPTY("ctc cal intr init.\r\n");
#ifdef PALLADIUM_TEST
flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag);
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif
#if 1
@ -88,7 +82,7 @@ void ecs_rfm1_drv_init(void)
hw_gpio_init();
#ifdef PALLADIUM_TEST
flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag);
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif
ecs_hw_que_init(apeId);
@ -109,13 +103,13 @@ void ecs_rfm1_drv_init(void)
#endif
#ifdef PALLADIUM_TEST
flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag);
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif
rfm_stc_init();
#ifdef PALLADIUM_TEST
flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag);
debug_write((DBG_DDR_IDX_DRV_BASE+1+(apeId<<2)), flag); // 0xB4
#endif
}
@ -138,7 +132,7 @@ void check_phy_cell(void)
//debug_write(DBG_DDR_COMMON_IDX(get_core_id(),5), 5);
//rdmcycle(&clockBegin);
// cpri_timer_reconfig(&cellPara);
//cpri_timer_reconfig(&cellPara);
int32_t ret = mtimer_reconfig(&cellPara);
//rdmcycle(&clockEnd);
//clockCnt = clockEnd - clockBegin;

View File

@ -28,6 +28,8 @@
#define RFM_TEST_OAM_MSG_SIZE (8)
#define RFM_MSG_TYPE (0)
extern void phy_oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size);
OamMsgTransferHeader_t *g_oam_msg_ptr = NULL;
SpuOamBaseDelaySetRsp_t *g_oam_base_delay_set_rsp_ptr = NULL;
SpuOamBaseDelayQryRsp_t *g_oam_base_delay_qry_rsp_ptr = NULL;
@ -95,6 +97,9 @@ void oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
oam_fiber_delay_qry_ptr = (SpuOamFiberDelayQryReq_t *)((uint8_t *)g_oam_msg_ptr + sizeof(OamMsgTransferHeader_t));
oam_fiber_delay_proc(oam_fiber_delay_qry_ptr, g_oam_msg_ptr);
break;
default:
phy_oam_msg_proc(u32msg_addr, u32msg_size);
break;
}
}

View File

@ -28,6 +28,7 @@
#include "phy_para.h"
#include "hw_cpri.h"
#include "hwque.h"
#include "lib_debug_init.h"
#ifdef TEST_ENABLE
#include "fh_test.h"
@ -57,23 +58,22 @@ extern uint32_t gCpriCsuDummyFlag;
int32_t main(int32_t argc, char* argv[])
{
UCP_PRINT_EMPTY("Hello world from ECS RFM SPU1,coreId[0x%x]", get_core_id());
debug_write(DBG_DDR_COMMON_IDX(get_core_id(), 0), PLATFORM_BUILD_DATA);
int32_t core_id = 0;
int32_t ret = 0;
UCP_PRINT_EMPTY("Hello world from ECS RFM SPU1,coreId[0x%x]", get_core_id());
core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
ret = spu_lib_debug_init(core_id);
debug_write(DBG_DDR_COMMON_IDX(core_id, 1), ret);
/* hw_debug_init */
int32_t core_id = get_core_id();
#ifdef PALLADIUM_TEST
int flag = 1;
debug_write((DBG_DDR_IDX_DRV_BASE+(core_id<<2)), flag); // 0xB0
#endif
int ret = 0;
ret = smart_hq_debug_init((DBG_DDR_HW_ADDR_BASE+DBG_DDR_HW_LEN*core_id), DBG_DDR_HW_LEN); // ÍÆ¼ö384£¬Êµ¼Ê512
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(core_id, 46), ret);
}
spu_log_client_init();
spu_log_server_init();

View File

@ -222,13 +222,18 @@ void ecs_rfm1_delete_cell(uint32_t scsId, uint32_t cellId, uint32_t coreId)
flag++;
debug_write((DBG_DDR_IDX_DRV_BASE+52), flag); // 0xb7e060d0
#endif
}
}
volatile uint32_t gCellFlag = 0;
void phy_init(void)
{
volatile uint32_t gCellFlag = 0;
void phy_init(void)
{
gCellFlag = 0;
return;
}
void phy_oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
{
return ;
}
void phy_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
@ -279,7 +284,7 @@ void ddr_wr_callback()
uint32_t gFapiCallCnt = 0;
void rfm1_fapi_callback()
{
{
gFapiCallCnt++;
debug_write((DBG_DDR_IDX_DRV_BASE+123), gFapiCallCnt); // 0x1ec
}

View File

@ -20,15 +20,22 @@
#include "ucp_printf.h"
#include "testcase.h"
#include "phy_para.h"
#include "lib_debug_init.h"
//#include "stc_timer.h"
int32_t main(int32_t argc, char* argv[])
{
//SET_CLK_CFG_EMU();
int32_t core_id = 0;
int ret = FAILURE;
UCP_PRINT_LOG("Hello world from PET RFM SPU0,coreId[0x%x]", get_core_id());
debug_write(DBG_DDR_COMMON_IDX(get_core_id(), 0), PLATFORM_BUILD_DATA);
core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
ret = spu_lib_debug_init(core_id);
debug_write(DBG_DDR_COMMON_IDX(core_id, 1), ret);
pet_rfm_spu0_drv_init();

View File

@ -20,20 +20,20 @@
#include "spu_shell.h"
#include "pet_rfm_spu1_oam.h"
#include "hwque.h"
#include "lib_debug_init.h"
int32_t main(int32_t argc, char* argv[])
{
UCP_PRINT_EMPTY("Hello world from PET RFM SPU1,coreId[0x%x]", get_core_id());
debug_write(DBG_DDR_COMMON_IDX(get_core_id(), 0), PLATFORM_BUILD_DATA);
int32_t core_id = 0;
int32_t ret = 0;
/* hw_debug_init */
int32_t core_id = get_core_id();
int ret = 0;
ret = smart_hq_debug_init((DBG_DDR_HW_ADDR_BASE+DBG_DDR_HW_LEN*core_id), DBG_DDR_HW_LEN); // ÍÆ¼ö384£¬Êµ¼Ê512
if (0 != ret)
{
debug_write(DBG_DDR_ERR_IDX(core_id, 46), ret);
}
UCP_PRINT_EMPTY("Hello world from PET RFM SPU1,coreId[0x%x]", get_core_id());
core_id = get_core_id();
debug_write(DBG_DDR_COMMON_IDX(core_id, 0), PLATFORM_BUILD_DATA);
ret = spu_lib_debug_init(core_id);
debug_write(DBG_DDR_COMMON_IDX(core_id, 1), ret);
spu_log_client_init();