This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2434:CPSW 双 MAC 模式和其他线程

Guru**** 2427730 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1241227/am2434-cpsw-dual-mac-mode-and-additional-pthreads

器件型号:AM2434

尊敬的 TI 支持:

SDK MCU_PLUS_SDK_am243x_08_06_00_43

电路板:AM243x-EVM

我们正在尝试根据您在链接的线程中发送给我的同事的双 MAC 示例来运行 POSIX 线程示例、但我们在努力让多个额外的线程运行。

以下是我们到目前为止所做的工作:

1.我们从移植了 dual mac 示例

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1222677/am2434-cpsw-dual-mac-mode

从 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好!

    我们解决了无法创建任何其他线程的问题。
    这可能会帮助其他新手:

    我们在 linker.cmd 文件存储器分配中增加了 DDR 的长度。

    板上有2GB 的 DDR RAM、因此我们决定目前使用所有内存:

    初始设置:
    DDR  : origin = 0x8000000 , length = 0x120000

    新设置:
    DDR  : origin = 0x80000000 , length = 0x80000000

    此致、
    Ralf G