我使用的是自定义板AM243x和最后一个SDK MCU_plus_SDK_am243x_08_02_00_31
我正在按照您的文档中的建议测试PRP演示应用程序。
我刚刚发现,当发送PRP TX数据包时,FW HAL为数据包自身分配了一块动态内存:我希望使用内存池而不是malloc!
以下是 source/industrial_comms/hsr_prp/icss_fwhal/hsrPrp_red.c中的代码
int32_t RedTxPacket(void *icssEmachandle, ICSS_EMAC_TxArgument *txArg, void *userArg)
{
...
redFrame = RedFrameAllocate(packetData, packetLength);
if(!redFrame)
{
RED_DEBUG_MSG("%s: RedFrameAllocate failed!\n", __FUNCTION__);
return (RED_ERR);
}
ret = RedFrameSend(hsrPrphandle, icssEmacHandle, redFrame, packetData,
packetLength,
queuePriority, portNum);
RedFrameFree(redFrame);
redFrame = NULL;
if(ret)
{
RED_DEBUG_MSG("%s: RedFrameSend failed!\n", __FUNCTION__);
return (RED_ERR);
}
和
static RED_FRAME *RedFrameAllocate(const uint8_t *pFrame, int32_t frameSize)
{
RED_FRAME *pRedFrame = NULL;
uint16_t vlanTag;
uint16_t redFrameMinSize;
if(pFrame == NULL)
{
return (NULL);
}
/* Allocate the RED frame structure */
pRedFrame = malloc(sizeof(RED_FRAME));
if(!pRedFrame)
{
RED_DEBUG_MSG("%s: pRedFrame == NULL\n", __FUNCTION__);
return (NULL);
}
我想将PRP集成到已经处理池的应用程序中:
- 如何避免使用malloc?
- 我是否应该编写 RedTxPacket的自定义实现以customTxCallBack的身份进行传递?
提前感谢您的参与
Andrea