feat(UML-1462): Добавлена настройка потоков
This commit is contained in:
parent
49ff1af977
commit
3027a88a4f
@ -291,7 +291,7 @@ bool free_rtos::Eth::Open()
|
||||
|
||||
EnetAppUtils_print("%s: Create link tracking tasks\r\n", name_.c_str());
|
||||
|
||||
if (!task_[e_taskLink].Create("LinkTask", e_linkTaskPriority, eth_taskLinkTracking, (void*)this, (10U * 1024U)))
|
||||
if (!task_[e_taskLink].Create("LinkTask", LINK_TASK_PRIORITY, eth_taskLinkTracking, (void*)this, LINK_TASK_STACK_SIZE))
|
||||
{
|
||||
EnetAppUtils_print("%s: Failed to create link task\r\n", name_.c_str());
|
||||
return false;
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
/*
|
||||
* eth.hpp
|
||||
*
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Created on: 6 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_ETHERNET_ETH_HPP_
|
||||
#define FREE_RTOS_ETHERNET_ETH_HPP_
|
||||
|
||||
#include "ethernet/eth_task_settings.hpp"
|
||||
#include "ethernet/eth_rx_flow.hpp"
|
||||
#include "ethernet/eth_tx_flow.hpp"
|
||||
|
||||
@ -30,13 +31,13 @@ namespace free_rtos {
|
||||
class Eth {
|
||||
public:
|
||||
typedef enum {
|
||||
e_ethInstSwitch = 1, /// Поддерживается
|
||||
e_ethInstDualMac_1, /// Не поддерживается
|
||||
e_ethInstDualMac_2 /// Не поддерживается
|
||||
e_ethInstSwitch = 1, /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_ethInstDualMac_1, /// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_ethInstDualMac_2 /// <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}TEthInstId;
|
||||
|
||||
struct Settings {
|
||||
uint32_t id; /// Идентификатор порта
|
||||
uint32_t id; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/* Peripheral type */
|
||||
Enet_Type enetType;
|
||||
@ -84,7 +85,7 @@ private:
|
||||
|
||||
private:
|
||||
enum SignalsId {
|
||||
e_signalIoctl, /// Завершение передачи по ioctl
|
||||
e_signalIoctl, /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ioctl
|
||||
e_signalTotal
|
||||
};
|
||||
|
||||
@ -93,30 +94,30 @@ private:
|
||||
e_taskTotal
|
||||
};
|
||||
|
||||
uint32_t id_; /// Идентификатор порта
|
||||
std::string name_; /// Имя порта
|
||||
uint32_t id_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
std::string name_; /// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t core_id_; /// Идентификатор ядра
|
||||
uint32_t core_id_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
Enet_Type enetType_; /// Тип порта
|
||||
Enet_Type enetType_; /// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
/// Идентификатор периферии mac: 1 - для режима SWITCH, 2 и 3 для режима DUAL MAC ( для mac1 и mac2 соответственно)
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac: 1 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SWITCH, 2 <20> 3 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DUAL MAC ( <20><><EFBFBD> mac1 <20> mac2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
uint32_t instId_;
|
||||
|
||||
/// Идентификаторы mac портов
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mac <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Enet_MacPort macPort_[e_ethMacTotal];
|
||||
|
||||
/// Количество MAC портов
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MAC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint32_t macPortNum_;
|
||||
|
||||
/// Основная информация о подключении для периферийного устройства ????
|
||||
/// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ????
|
||||
EnetPer_AttachCoreOutArgs attachInfo_;
|
||||
|
||||
/// Enet и Udma обработчик информации для периферийного устройства.
|
||||
/// Enet <EFBFBD> Udma <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
EnetApp_HandleInfo handleInfo_;
|
||||
|
||||
EthTxFlow tx_flow_; ///
|
||||
EthRxFlow rx_flow_[e_ethMacTotal]; /// Два потока приема в режиме SWITCH
|
||||
EthRxFlow rx_flow_[e_ethMacTotal]; /// <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SWITCH
|
||||
|
||||
Semaphore sem_[e_signalTotal];
|
||||
|
||||
@ -126,11 +127,11 @@ private:
|
||||
|
||||
bool host_ready_;
|
||||
|
||||
TEthFrameMacAddr hostMacAddr_; /// собственный мак адрес
|
||||
TEthFrameMacAddr hostMacAddr_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t vlan_id_;
|
||||
|
||||
EthStack eth_stack_; /// Стек логических протоколов
|
||||
EthStack eth_stack_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -23,8 +23,6 @@
|
||||
|
||||
using namespace free_rtos;
|
||||
|
||||
#define RX_TASK_STACK_SIZE (10U * 1024U) /// 10<31><30>
|
||||
|
||||
/**
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
@ -172,7 +170,7 @@ bool free_rtos::EthRxFlow::open(uint32_t id, int32_t enetDmaRxChId)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!rx_task.Create("rx_task", Task::TaskPriorityHiest - 2, rxTaskHandler, this, RX_TASK_STACK_SIZE))
|
||||
if (!rx_task.Create("rx_task", RX_TASK_PRIORITY, rxTaskHandler, this, RX_TASK_STACK_SIZE))
|
||||
{
|
||||
EnetAppUtils_print("rx_flow %u: failed to create rx task.\r\n", id_);
|
||||
return false;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* eth_rx_dma.hpp
|
||||
*
|
||||
* Created on: 6 мар. 2023 г.
|
||||
* Created on: 6 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
||||
* Author: sychev
|
||||
*/
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
#include "semaphore/semaphore.hpp"
|
||||
#include "task/task.hpp"
|
||||
|
||||
#include "ethernet/eth_task_settings.hpp"
|
||||
#include "ethernet/eth_frame.h"
|
||||
#include "ethernet_ip/eth_stack_iface.hpp"
|
||||
|
||||
@ -32,26 +33,26 @@ public:
|
||||
|
||||
private:
|
||||
|
||||
friend void rxIsrHandler(void *appData); /// Обработчик прерывания по приему
|
||||
friend void rxIsrHandler(void *appData); /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
friend void rxTaskHandler(void *appData); ///Задача обработки принятых пакетов
|
||||
friend void rxTaskHandler(void *appData); ///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void rxProcessPktTask(); ///Функция обработки принятых пакетов
|
||||
void rxProcessPktTask(); ///<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
private:
|
||||
enum SignalsId {
|
||||
e_signalRxPkt, /// Прием пакета
|
||||
e_signalRxPkt, /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
e_signalTotal
|
||||
};
|
||||
|
||||
uint32_t id_; /// Идентификатор канала
|
||||
bool open_; /// Флаг того, что dma канал уже открыт
|
||||
uint32_t id_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool open_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Semaphore sem_[e_signalTotal]; /// Семафоры событий
|
||||
Semaphore sem_[e_signalTotal]; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
Task rx_task; /// Задача приема
|
||||
Task rx_task; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
TEthFrameMacAddr& mac_addr_; /// mac адрес
|
||||
TEthFrameMacAddr& mac_addr_; /// mac <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
uint32_t rx_pkt_counter_;
|
||||
|
||||
@ -62,7 +63,7 @@ private:
|
||||
uint32_t rx_flow_idx_;
|
||||
EnetDma_RxChHandle dma_handle_;
|
||||
|
||||
bool passive_mode_; /// Пассивный режим, пакеты принимаются, но не передаются в стек обработки
|
||||
bool passive_mode_; /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
};
|
||||
|
||||
|
||||
|
||||
23
components/free_rtos/ethernet/eth_task_settings.hpp
Normal file
23
components/free_rtos/ethernet/eth_task_settings.hpp
Normal file
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* eth_task_settings.hpp
|
||||
*
|
||||
* Created on: Jun 26, 2023
|
||||
* Author: algin
|
||||
*/
|
||||
|
||||
#ifndef FREE_RTOS_ETHERNET_ETH_TASK_SETTINGS_HPP_
|
||||
#define FREE_RTOS_ETHERNET_ETH_TASK_SETTINGS_HPP_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "task/task.hpp"
|
||||
|
||||
namespace free_rtos {
|
||||
static constexpr uint32_t RX_TASK_PRIORITY = Task::TaskPriorityHiest - 2;
|
||||
static constexpr uint32_t RX_TASK_STACK_SIZE = (10U * 1024U);
|
||||
|
||||
static constexpr uint32_t LINK_TASK_PRIORITY = 2;
|
||||
static constexpr uint32_t LINK_TASK_STACK_SIZE = (10U * 1024U);
|
||||
}
|
||||
|
||||
#endif /* FREE_RTOS_ETHERNET_ETH_TASK_SETTINGS_HPP_ */
|
||||
Loading…
Reference in New Issue
Block a user