疑问:
freeRTOS调用pvPortMalloc存储分配没有问题,协议栈调用pvPortMalloc存储分配也没有问题,而在UDP应用为Socket分配内存时进入prefetchEntry,
汇编下看是执行BL指令,就跳入了prefetchEntry,没有涉及分配内存,想问下什么原因,有人碰到过类似问题么。
另外按FreeRTOS-TCP要求, freeRTOS使用的存储管理文件时heap_4.c
查了Arm Cortex-R4/5的异常处理,上面原文是:
The processor takes the prefetch abort if it tries to execute an instruction form a protected or faulty
memory location. This is usually the case if the memory location is not implemented in the system, if the
memory region is protected by the MPU, or if an error is detected in the data by the ECC checking logic.
All prefetch aborts are precise
这里说内存受保护或故障,但在执行UDP或TCP应用之前也调用了同样的函数分配内存,为什么没有问题呢
Annie Liu:
为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上https://e2e.ti.com/support/microcontrollers/hercules/f/312,将由资深的工程师为您提供帮助。我们的E2E英文社区有TI专家进行回复,并得到全球各地工程师的支持,分享他们的知识和经验。