增加代码,调试延迟释放;对比波形,延迟释放功能正确

This commit is contained in:
2025-02-12 01:17:54 +08:00
parent 82919d861a
commit 0aa00781e5
2 changed files with 27 additions and 13 deletions

View File

@@ -77,7 +77,7 @@ uint32_t HLM_poll(uint32_t mode)
{ {
if (mode == WORKMODE_MASTER) if (mode == WORKMODE_MASTER)
{ {
uint32_t tx_pkt_len = 128; uint32_t tx_pkt_len = 256;
uint32_t rx_pkt_len = 0; uint32_t rx_pkt_len = 0;
uint32_t rx_start = 0; uint32_t rx_start = 0;
uint32_t status; uint32_t status;
@@ -94,7 +94,7 @@ uint32_t HLM_poll(uint32_t mode)
//开始发送工作 //开始发送工作
*tx0_txLen = tx_pkt_len + 4; *tx0_txLen = tx_pkt_len + 4;
*tx0_txFifo = (tx_pkt_len << 20) | (0 << 16) | 0; *tx0_txFifo = (tx_pkt_len << 20) | 0;
uint32_t tx_index = 0; uint32_t tx_index = 0;
uint32_t rx_index = 0; uint32_t rx_index = 0;
@@ -120,6 +120,14 @@ uint32_t HLM_poll(uint32_t mode)
tx_index++; tx_index++;
} }
status = *HLM_status;
if (((tx_index * 4) < tx_pkt_len) && (!(status & HLM_TX0_FIFO_FULL)))
{
*tx0_txFifo = tx_data_ptr[tx_index];
tx_index++;
}
if ((rx_start) && (status & HLM_RX1_VALID)) if ((rx_start) && (status & HLM_RX1_VALID))
{ {
rx_data_ptr[rx_index] = *rx1_rxFifo; rx_data_ptr[rx_index] = *rx1_rxFifo;
@@ -130,6 +138,8 @@ uint32_t HLM_poll(uint32_t mode)
if (rx_pkt_len <= (rx_index * 4)) if (rx_pkt_len <= (rx_index * 4))
{ {
rx_start = 0; rx_start = 0;
rx_index = 0;
break;
} }
} }
@@ -139,15 +149,6 @@ uint32_t HLM_poll(uint32_t mode)
rx_start = 1; rx_start = 1;
rx_index = 0; rx_index = 0;
} }
#if 0
if (isr_flag[CDR_INT_RX1_FIFO_ENQ])
{
isr_flag[CDR_INT_RX1_FIFO_ENQ] = 0;
MST_RX_BUF[rx_index] = *rx1_rxFifo;
rx_index++;
}
#endif
} }
} }
else if (mode == WORKMODE_SLAVE) else if (mode == WORKMODE_SLAVE)
@@ -158,6 +159,12 @@ uint32_t HLM_poll(uint32_t mode)
uint32_t rx_start = 0; uint32_t rx_start = 0;
uint32_t status; uint32_t status;
*rx0_rxTxPair = 1;
*rx0_rxTimerAim = 0; //240;
*rx1_rxTxPair = 0;
*rx1_rxTimerAim = 0;
*plic_enable_0_31 = 0;
while (1) while (1)
{ {
@@ -180,13 +187,20 @@ uint32_t HLM_poll(uint32_t mode)
rx_start = 0; rx_start = 0;
} }
} }
else
{
if (status & HLM_RX0_VALID)
rx_start = 1;
}
#if 0
//rx0 下行 //rx0 下行
if (isr_flag[CDR_INT_RX0START]) if (isr_flag[CDR_INT_RX0START])
{ {
isr_flag[CDR_INT_RX0START] = 0; isr_flag[CDR_INT_RX0START] = 0;
rx_start = 1; rx_start = 1;
} }
#endif
} }
} }
else else

View File

@@ -140,7 +140,7 @@ int main(int argc, char **argv, char **env) {
#endif #endif
if ( flag_limitEnable ) { if ( flag_limitEnable ) {
if ( main_cycle > 30000 ){ if ( main_cycle > 45000 ){
std::cout << "Timeout!!!!!" << std::endl; std::cout << "Timeout!!!!!" << std::endl;
sim_exit(); sim_exit();
return -1; return -1;