合并bacon_dev分支的修改:1.增加寻找超出指定执行周期的指令;2.删除汇编中不需要的代码;3.增加协议的细节内容
This commit is contained in:
@@ -66,17 +66,6 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
tx_data_ptr[1] = MAGIC_NUM;
|
||||
}
|
||||
else if (seq == 1)
|
||||
{
|
||||
is_tx_crc = 1;
|
||||
is_rx_crc = 1;
|
||||
tx_pkt_len = 320 + 4;
|
||||
|
||||
tx_data_ptr[0] = ((tx_pkt_len - 4) << 20) | 2;
|
||||
|
||||
for (i = 4; i < (tx_pkt_len - 4 * is_tx_crc); i++)
|
||||
MST_TX_BUF[i] = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
is_tx_crc = 1;
|
||||
is_rx_crc = 1;
|
||||
@@ -89,7 +78,17 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
tx_data_ptr[3] = 0; //delta time
|
||||
tx_data_ptr[4] = 0; //ctr | dev_num
|
||||
//tx_data_ptr[5] = 0; //crc
|
||||
}
|
||||
else
|
||||
{
|
||||
is_tx_crc = 1;
|
||||
is_rx_crc = 1;
|
||||
tx_pkt_len = 320 + 4;
|
||||
|
||||
tx_data_ptr[0] = ((tx_pkt_len - 4) << 20) | 0;
|
||||
|
||||
for (i = 4; i < (tx_pkt_len - 4 * is_tx_crc); i++)
|
||||
MST_TX_BUF[i] = i;
|
||||
}
|
||||
|
||||
//开始发送工作
|
||||
@@ -100,12 +99,13 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
uint32_t tx_len;
|
||||
|
||||
tx_len = is_tx_crc? (tx_pkt_len - 4):tx_pkt_len;
|
||||
tx_len = tx_len >> 2;
|
||||
|
||||
//i_tx0_clear_timer(0);
|
||||
|
||||
for (i = 0; i < HLM_TX_FIFO_LEN; i++)
|
||||
{
|
||||
if ((tx_index * 4) < tx_len)
|
||||
if (tx_index < tx_len)
|
||||
{
|
||||
i_tx0_txFifo(tx_data_ptr[tx_index]);
|
||||
tx_index++;
|
||||
@@ -130,20 +130,19 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
//i_tx1_softReset(1);
|
||||
i_hlm_status(status);
|
||||
i_hlm_read_intflag(intflag);
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
|
||||
tx_times = HLM_TX_FIFO_LEN - HLM_TX0_FIFO_LEFT(status);
|
||||
|
||||
for (i = 0; i < tx_times; i++)
|
||||
{
|
||||
if ((tx_index * 4) < tx_len)
|
||||
if (tx_index < tx_len)
|
||||
{
|
||||
i_tx0_txFifo(tx_data_ptr[tx_index]);
|
||||
tx_index++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_tx_crc && ((tx_index * 4) == tx_len))
|
||||
if (is_tx_crc && (tx_index == tx_len))
|
||||
{
|
||||
uint32_t crc;
|
||||
i_tx0_txCrc(crc);
|
||||
@@ -154,12 +153,13 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
}
|
||||
}
|
||||
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
for (i = 0; i < HLM_RX1_FIFO_LEFT(status); i++)
|
||||
{
|
||||
if (rx_start)
|
||||
{
|
||||
if ((rx_pkt_len - 4) == (rx_index * 4))
|
||||
if ((rx_pkt_len - 1) == rx_index)
|
||||
{
|
||||
uint32_t crc;
|
||||
i_rx1_rxCrc(crc);
|
||||
@@ -176,11 +176,12 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
if (rx_index == 0)
|
||||
{
|
||||
rx_pkt_len = (rx_data_ptr[rx_index] >> 20) + 4;
|
||||
rx_pkt_len = rx_pkt_len >> 2;
|
||||
}
|
||||
|
||||
rx_index++;
|
||||
|
||||
if (rx_pkt_len < (rx_index * 4))
|
||||
if (rx_pkt_len < rx_index)
|
||||
{
|
||||
rx_start = 0;
|
||||
rx_index = 0;
|
||||
@@ -207,7 +208,7 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
|
||||
if (seq == 0)
|
||||
{
|
||||
if ((rx_pkt_len == 8) && ((rx_data_ptr[0] & 0xff) == 0x1) && (rx_data_ptr[1] == MAGIC_NUM))
|
||||
if ((rx_pkt_len == 2) && ((rx_data_ptr[0] & 0xff) == 0x1) && (rx_data_ptr[1] == MAGIC_NUM))
|
||||
{
|
||||
seq = 1;
|
||||
}
|
||||
@@ -266,10 +267,6 @@ uint32_t HLM_slave_poll(void)
|
||||
|
||||
stamp_time = 0; //read_mtimer();
|
||||
|
||||
#ifdef __riscv_e
|
||||
sys_call(SYS_SLAVE_WORK);
|
||||
#else
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (is_terminal)
|
||||
@@ -382,8 +379,6 @@ uint32_t HLM_slave_poll(void)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -410,7 +405,7 @@ uint32_t HLM_slave_1stream_poll(uint32_t protocol, uint32_t data, uint32_t is_cr
|
||||
{
|
||||
i_hlm_status(hlm_status);
|
||||
i_hlm_read_intflag(intflag);
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
|
||||
for (i = 0; i < HLM_RX0_FIFO_LEFT(hlm_status); i++)
|
||||
{
|
||||
@@ -423,10 +418,21 @@ uint32_t HLM_slave_1stream_poll(uint32_t protocol, uint32_t data, uint32_t is_cr
|
||||
|
||||
if (d_rx_pkt_len > (d_rx_index * 4))
|
||||
{
|
||||
if ((d_rx_pkt_len - 4) == (d_rx_index * 4))
|
||||
{
|
||||
if (protocol == 2)
|
||||
{
|
||||
uint32_t ctr = (data >> 16) & 0xffff;
|
||||
ctr++;
|
||||
data = (ctr << 16) | (data & 0xffff);
|
||||
}
|
||||
}
|
||||
i_tx1_txFifo(data);
|
||||
}
|
||||
else if (d_rx_pkt_len == (d_rx_index * 4))
|
||||
{
|
||||
if (protocol == 2)
|
||||
i_tx1_txCrc(data);
|
||||
i_tx1_txFifo(data);
|
||||
}
|
||||
else
|
||||
@@ -439,7 +445,9 @@ uint32_t HLM_slave_1stream_poll(uint32_t protocol, uint32_t data, uint32_t is_cr
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
if (intflag & HLM_INT_TX1_END)
|
||||
{
|
||||
i_rx0_softReset(1);
|
||||
@@ -461,10 +469,17 @@ uint32_t HLM_slave_1stream_poll(uint32_t protocol, uint32_t data, uint32_t is_cr
|
||||
index++;\
|
||||
if (pkt_len > (index))\
|
||||
{\
|
||||
if ((pkt_len - 1) == index)\
|
||||
{\
|
||||
uint32_t ctr = (data >> 16) & 0xffff;\
|
||||
ctr++;\
|
||||
data = (ctr << 16) | (data & 0xffff);\
|
||||
}\
|
||||
i_tx0_txFifo(data);\
|
||||
}\
|
||||
else if (pkt_len == (index))\
|
||||
{\
|
||||
i_tx0_txCrc(data);\
|
||||
i_tx0_txFifo(data);\
|
||||
}\
|
||||
else\
|
||||
@@ -535,7 +550,6 @@ uint32_t HLM_slave_2streams_poll(uint32_t protocol, uint32_t data, uint32_t is_c
|
||||
{
|
||||
i_hlm_status(hlm_status);
|
||||
i_hlm_read_intflag(intflag);
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
HLM_Slave_2streams_down_poll(downstream_work,
|
||||
d_rx_index,
|
||||
@@ -543,6 +557,8 @@ uint32_t HLM_slave_2streams_poll(uint32_t protocol, uint32_t data, uint32_t is_c
|
||||
intflag,
|
||||
hlm_status);
|
||||
|
||||
i_hlm_clear_intflag(intflag);
|
||||
|
||||
if (intflag & HLM_INT_RX1_START)
|
||||
{
|
||||
upstream_work = 1;
|
||||
|
||||
Reference in New Issue
Block a user