fix(UML-1780): Вернул из прерывания часть кода. Накинул памяти. Относительно стабильный

This commit is contained in:
algin 2023-09-28 14:13:26 +03:00
parent 83a4c71af0
commit b2af36ccca
4 changed files with 8 additions and 9 deletions

View File

@ -51,10 +51,10 @@ void free_rtos::rxIsrHandler(void *appData)
// Reload DMA with a new rx free queue as fast as possible // Reload DMA with a new rx free queue as fast as possible
rx_flow->submitFreeRxPkts(readyQCount); rx_flow->submitFreeRxPkts(readyQCount);
//EnetQueue_append(&rx_flow->rx_ready_pktq_, &rxReadyQ); EnetQueue_append(&rx_flow->rx_ready_pktq_, &rxReadyQ);
//rx_flow->sem_[EthRxFlow::e_signalRxPkt].post();
rx_flow->sem_[EthRxFlow::e_signalRxPkt].post();
/*
rxPktInfo = (EnetDma_Pkt *)EnetQueue_deq(&rxReadyQ); rxPktInfo = (EnetDma_Pkt *)EnetQueue_deq(&rxReadyQ);
while(rxPktInfo != nullptr) while(rxPktInfo != nullptr)
@ -84,7 +84,7 @@ void free_rtos::rxIsrHandler(void *appData)
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
++rx_flow->rx_pkt_counter_; ++rx_flow->rx_pkt_counter_;
} }
*/
} }
void free_rtos::rxTaskHandler(void *appData) void free_rtos::rxTaskHandler(void *appData)
@ -181,7 +181,7 @@ void free_rtos::EthRxFlow::rxProcessPktTask()
while(1) while(1)
{ {
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
status = sem_[e_signalRxPkt].pend(e_signalRxPkt_timeout_ticks_); status = sem_[e_signalRxPkt].pend();
if(status != SystemP_SUCCESS) { if(status != SystemP_SUCCESS) {
//EnetAppUtils_print("rx_flow %u: Warning ! No rx packets timeout.\r\n", id_); //EnetAppUtils_print("rx_flow %u: Warning ! No rx packets timeout.\r\n", id_);

View File

@ -50,8 +50,6 @@ private:
e_signalTotal e_signalTotal
}; };
static constexpr uint32_t e_signalRxPkt_timeout_ticks_ = SystemP_WAIT_FOREVER;
uint32_t id_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> uint32_t id_; /// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool open_; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bool open_; /// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@ -32,6 +32,7 @@ int32_t EcatTelegram::Process(uint8_t *p_data, uint32_t len) {
uint8_t *p_datagram_last = unpack(p_data - sizeof(TEthFrameHeader)); uint8_t *p_datagram_last = unpack(p_data - sizeof(TEthFrameHeader));
if(p_datagram_last == nullptr) { if(p_datagram_last == nullptr) {
//DebugP_log((char*)"Warning ! Repeated packet skipped\r\n");
return 0; return 0;
} }

View File

@ -76,8 +76,8 @@ public:
bool transfer(queue::Queue<datagram::IEcatDatagram>& next); bool transfer(queue::Queue<datagram::IEcatDatagram>& next);
private: private:
static constexpr uint32_t connection_timeout_ticks_ = 60; static constexpr uint32_t connection_timeout_ticks_ = 70;
static constexpr uint32_t max_transfer_attempts_ = 10; static constexpr uint32_t max_transfer_attempts_ = 8;
Eth& eth_; Eth& eth_;
Timer& ecat_timer_; Timer& ecat_timer_;