尊敬的 TI 支持:
SDK MCU_PLUS_SDK_am243x_08_06_00_43
电路板:AM243x-EVM
我们正在尝试根据您在链接的线程中发送给我的同事的双 MAC 示例来运行 POSIX 线程示例、但我们在努力让多个额外的线程运行。
以下是我们到目前为止所做的工作:
1.我们从移植了 dual mac 示例
从 SDK 08_05更改为新的 SDK MCU_PLUS_SDK_am243x_08_06_00_43
我们可以对这两个接口执行 ping 操作!
2.我们运行了 POSIX pthread 示例:
mcu_plus_sdk_am243x_08_06_00_43\examples\kernel\freertos\xix_demo\am243x-evm_r5fs0-0_freertos
成功了!
但是:我们无法将工作线程的数量增加到6个以上、即使它显示限制为10。 这可能会导致问题、我要继续下去...
3.我们将 posix_demo.c 编译到双核 mac 示例"环境"(见1.) 并试图在函数 freertos_main ()中调用 posix_demo_main (NULL)而不是 enet_lwip_example(NULL),即完全替换应用程序。
可行、但如2中所述。 我们无法超过6个工作线程。
4.然后我们在函数中调用了 POSIX_DEMO_MAIN()
print_cpu_load()在 test_enet.c 中,在双 Mac 演示完成初始化并打印其第一次使用的位置之后。
因此、我们的想法是在双 Mac 示例的基础上创建额外的线程、因为这是我们要在自己的应用程序中执行的操作。
现在的问题是,它只会成功地使用 pthread_create()创建一个额外的工作线程,而对于第二个工作线程,我们会收到一个错误(malloc 不会起作用),它会崩溃。
我们很难确定问题在于线程数量还是可用内存。
我们是第一次接触 TI、实际上我们被困在了这里。
什么地方出错了?
我们已查看"Stack Usage"视图、但无法正确地"读取和理解"该信息。
在纯双核 mac 示例中、udpecho_thread 堆栈使用情况以黄色显示、这是什么意思? 它已经太大了吗? 有问题吗?
在它运行后试图创建更多线程...
我们试图调整 linker.cmd 中的存储器、我们增加了存储器、减少了存储器、将段从 MSRAM 移动到 DDR 并返回、但这没有任何改变。
问题可能是什么? 分配更多内存? 更多线程?
我们需要做什么?
为了能够正确调试、我们将优化减少到-o2。 但是、更高级别的优化没有任何变化。
如果您需要更多信息、请告诉我。
非常感谢。
Ralf G