分别采用中断、查询方式优化转发时间,上传备份代码,通过控制Makefile脚本里的APP_MARCH、MABI的rv32i和rv32e来控制C语言和asm优化

This commit is contained in:
2025-02-12 15:58:50 +08:00
parent 0aa00781e5
commit d87c2dacf0
10 changed files with 181 additions and 323 deletions

View File

@@ -13,51 +13,6 @@ uint8_t MST_RX_BUF[RX_BUF_NUM * RX_BUF_MAX_LEN] __attribute__((aligned(32)));
extern const uint8_t int_svr_code[];
uint32_t (*sys_call)(uint32_t no, ...);
uint32_t HLM_work_with_isr(uint32_t mode)
{
int i;
sys_call = (void *)int_svr_code;
//复位脉冲
*tx0_softReset = 1;
*tx1_softReset = 1;
*rx0_softReset = 1;
*rx1_softReset = 1;
//tx0 下行
//tx1 上行
//rx0 下行
//rx1 上行
if (mode == WORKMODE_MASTER)
{
uint32_t tx_len;
tx_len = 32;
for (i = 0; i < tx_len - 1; i++)
{
MST_TX_BUF[i] = i;
}
sys_call(SYS_SET_RECV_INFO, MST_RX_BUF);
sys_call(SYS_SEND_DATA, MST_TX_BUF, tx_len);
}
else if (mode == WORKMODE_SLAVE)
{
}
else
{
}
return 0;
}
/*
#define CDR_INT_TX0END 14U
#define CDR_INT_TX1END 15U
@@ -75,6 +30,14 @@ uint32_t HLM_work_with_isr(uint32_t mode)
volatile uint32_t isr_flag[32] = {0};
uint32_t HLM_poll(uint32_t mode)
{
sys_call = (void *)int_svr_code;
//复位脉冲
*tx0_softReset = 1;
*tx1_softReset = 1;
*rx0_softReset = 1;
*rx1_softReset = 1;
if (mode == WORKMODE_MASTER)
{
uint32_t tx_pkt_len = 256;
@@ -164,7 +127,20 @@ uint32_t HLM_poll(uint32_t mode)
*rx1_rxTxPair = 0;
*rx1_rxTimerAim = 0;
*plic_enable_0_31 = 0;
#ifdef __riscv_e
sys_call(SYS_SLAVE_WORK);
#else
while(1)
{
status = *HLM_status;
if (status & HLM_RX0_VALID)
{
rx_start = 1;
break;
}
}
while (1)
{
@@ -185,23 +161,11 @@ uint32_t HLM_poll(uint32_t mode)
if (rx_pkt_len <= (rx_index * 4))
{
rx_start = 0;
break;
}
}
else
{
if (status & HLM_RX0_VALID)
rx_start = 1;
}
#if 0
//rx0 下行
if (isr_flag[CDR_INT_RX0START])
{
isr_flag[CDR_INT_RX0START] = 0;
rx_start = 1;
}
#endif
}
#endif
}
else
{