分别采用中断、查询方式优化转发时间,上传备份代码,通过控制Makefile脚本里的APP_MARCH、MABI的rv32i和rv32e来控制C语言和asm优化
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user