优化shellIM空间,命令字长度最大12字节

This commit is contained in:
huanfeng.wang 2023-12-04 19:46:37 +08:00
parent f1401c2ae6
commit 8dfcdfebc9
3 changed files with 31 additions and 26 deletions

View File

@ -167,7 +167,7 @@ int osp_mem_init(void)
debug_write(OSP_DEBUG_POT(g_ape_id, 9), g_st_osp_mem_im_head.root->len);
debug_write(OSP_DEBUG_POT(g_ape_id, 10), g_st_osp_mem_im_head.root);
spu_insert_cmd_ext("im_ape_id", (OSP_FUNCPTR)osp_show_im_mem_by_coreid, "osp im info by id", 1);
spu_insert_cmd_ext("im_ape", (OSP_FUNCPTR)osp_show_im_mem_by_coreid, "osp im info by id", 1);
UCP_PRINT_LOG("g_osp_mem_im_head OK\r\n");
return 0;

View File

@ -23,7 +23,7 @@ typedef unsigned long (*OSP_FUNCPTR)();
typedef struct tagOspCmdRtn
{
char cmd[32];
char cmd[12];
OSP_FUNCPTR wrapper;
OSP_FUNCPTR routine;
/*char descption[128];*/
@ -32,7 +32,7 @@ typedef struct tagOspCmdRtn
typedef struct tagOspCmdExt
{
char cmd[32];
char cmd[12];
uint32_t argnum;
uint32_t num;
}OSP_CMD_EXT;

View File

@ -9,7 +9,6 @@
#include "phy_para.h"
OSP_CMD_RTN gastCmdRtnTblExt[MAX_EXT_CMD_NUM];
OSP_CMD_EXT gastCmdExt[MAX_EXT_CMD_NUM];
int ospCmdRtnExtNum =0;
uint32_t gu32_osp_shell_task_cnt = 0;
@ -50,16 +49,15 @@ int spu_isdigit( int ch )
void spu_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, uint32_t argnum)
{
uint32_t num = 0;
uint32_t i = 0;
OSP_CMD_RTN *tlb = NULL;
//int32_t core_id = get_core_id();
//debug_write(DBG_DDR_COMMON_IDX(core_id, 130), argnum);/*0xb7e00208 参数个数地址*/
uint8_t u8str_len = 0;
uint32_t num = 0;
uint32_t i = 0;
OSP_CMD_RTN *tlb = NULL;
OSP_CMD_EXT stCmdExt;
if ((name == NULL) || pfunc == NULL)
{
UCP_PRINT_EMPTY("osp_insert_cmd_ext name:%p pfunc:%p\r\n", name, pfunc);
UCP_PRINT_ERROR("osp_insert_cmd_ext name:%p pfunc:%p\r\n", name, pfunc);
return;
}
@ -67,7 +65,7 @@ void spu_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, uint32_t argn
{
if (strcmp(gastCmdRtnTblExt[i].cmd, name) == 0)
{
UCP_PRINT_EMPTY("osp_insert_cmd_ext i:%u cmd:%s has exist name:%s\r\n", i, gastCmdRtnTblExt[i].cmd, name);
UCP_PRINT_ERROR("osp_insert_cmd_ext i:%u cmd:%s has exist name:%s\r\n", i, gastCmdRtnTblExt[i].cmd, name);
return;
}
}
@ -76,29 +74,31 @@ void spu_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, uint32_t argn
num = SHELL_CMD_NUM_EXT;
if(num >= MAX_EXT_CMD_NUM)
{
UCP_PRINT_EMPTY("osp_insert_cmd_ext num:%u beyond MAX_EXT_CMD_NUM:%d\r\n", num, MAX_EXT_CMD_NUM);
UCP_PRINT_ERROR("osp_insert_cmd_ext num:%u beyond MAX_EXT_CMD_NUM:%d\r\n", num, MAX_EXT_CMD_NUM);
return;
}
memcpy_ucp(tlb[num].cmd, name, strlen(name) + 1);
/*memcpy_ucp(tlb[num].descption, desc, strlen(desc) + 1);*/
tlb[num].wrapper = (OSP_FUNCPTR)spu_shell_wrapper;
//memcpy_ucp(tlb[num].wrapper, (OSP_FUNCPTR)spu_shell_wrapper, sizeof(OSP_FUNCPTR));
//memcpy_ucp(tlb[num].routine, pfunc, sizeof(OSP_FUNCPTR));
u8str_len = strlen(name);
if(u8str_len > 12)
{
UCP_PRINT_ERROR("osp_insert_cmd_ext u8str_len:%u beyond 12\r\n", u8str_len);
return;
}
memcpy_ucp(tlb[num].cmd, name, u8str_len + 1);
tlb[num].wrapper = (OSP_FUNCPTR)spu_shell_wrapper;
tlb[num].routine = pfunc;
tlb[num].argnum = argnum;
memcpy_ucp(gastCmdExt[num].cmd, name, strlen(name) + 1);
gastCmdExt[num].argnum = argnum;
memcpy_ucp(stCmdExt.cmd, name, u8str_len + 1);
stCmdExt.argnum = argnum;
SHELL_CMD_NUM_EXT++;
gastCmdExt[num].num = SHELL_CMD_NUM_EXT;
stCmdExt.num = SHELL_CMD_NUM_EXT;
UCP_PRINT_EMPTY("osp_insert_cmd_ext name:%s num:%u argnum:%u\r\n", gastCmdExt[num].cmd, gastCmdExt[num].num, tlb[num].argnum);
UCP_PRINT_LOG("osp_insert_cmd_ext name:%s num:%u argnum:%u\r\n", stCmdExt.cmd, stCmdExt.num, stCmdExt.argnum);
//debug_write(DBG_DDR_COMMON_IDX(core_id, 131), SHELL_CMD_NUM_EXT);
spu_shellinfo_to_arm((char *)&gastCmdExt[num], sizeof(OSP_CMD_EXT), UCP4008_OSP_SHELL_REG);
spu_shellinfo_to_arm((char *)&stCmdExt, sizeof(OSP_CMD_EXT), UCP4008_OSP_SHELL_REG);
return;
@ -107,11 +107,16 @@ void spu_insert_cmd_ext(char *name, OSP_FUNCPTR pfunc, char *desc, uint32_t argn
void spu_reget_cmd()
{
uint32_t i = 0;
OSP_CMD_EXT stCmdExt;
for (i = 0; i < SHELL_CMD_NUM_EXT; i++)
{
UCP_PRINT_LOG("spu_reget_cmd i:%u cmd:%s\r\n", i, gastCmdRtnTblExt[i].cmd);
spu_shellinfo_to_arm((char *)&gastCmdExt[i], sizeof(OSP_CMD_EXT), UCP4008_OSP_SHELL_REG);
memcpy_ucp(stCmdExt.cmd, gastCmdRtnTblExt[i].cmd, strlen(gastCmdRtnTblExt[i].cmd) + 1);
stCmdExt.argnum = gastCmdRtnTblExt[i].argnum;
stCmdExt.num = SHELL_CMD_NUM_EXT;
spu_shellinfo_to_arm((char *)&stCmdExt, sizeof(OSP_CMD_EXT), UCP4008_OSP_SHELL_REG);
}
return;