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.

[参考译文] SK-AM62P-LP:有关 FreeRTOS 和 IPC 的查询

Guru**** 2457950 points
Other Parts Discussed in Thread: SEGGER

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1471292/sk-am62p-lp-query-regarding-freertos-and-ipc

器件型号:SK-AM62P-LP
主题中讨论的其他器件:SEGGER

工具与软件:

尊敬的专家:

我想知道是否支持"RPMessage_recv"分块函数、以便将任务切换到分块状态、并使 CPU 在滴答过程中变得更理想。 因此、如果另一个任务在就绪队列(具有相同的优先级)中或取消阻止任务  、则可以进入就绪队列并运行、直到我们没有收到来自 A53的 IPC 消息。

在我们的应用中、我们将仅使用 一个端点(14) IPC 的软件。 但是、我们注意到正在创建两个任务、其中一个是为创建的 乒乓(端点13) 通过 BLE 或 Wi-Fi 进行蓝牙通信。

请确认是否可以删除 乒乓任务 ? 此外、在进行此更改之前、我们是否需要考虑对 Linux 方面的任何依赖关系?



此致、
去巴希

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

    大家好、 Debashis、来自 MCU+ PLUS SDK AM62px "examples\drivers\ipc\ipc_rpmsg_echo_linux\ipc_rpmsg_echo.c"、我看到下面的内容。

    /*
     * Remote core service end point
     *
     * pick any unique value on that core between 0..RPMESSAGE_MAX_LOCAL_ENDPT-1
     * the value need not be unique across cores
     *
     * The service names MUST match what linux is expecting
     */
    /* This is used to run the echo test with linux kernel */
    #define IPC_RPMESSAGE_SERVICE_PING        "ti.ipc4.ping-pong"
    #define IPC_RPMESSAGE_ENDPT_PING          (13U)
    
    /* This is used to run the echo test with user space kernel */
    #define IPC_RPMESSAGE_SERVICE_CHRDEV      "rpmsg_chrdev"
    #define IPC_RPMESSAGE_ENDPT_CHRDEV_PING   (14U)

    只要您没有运行 Linux 内核示例驱动程序、就可以使用"echo test with user space kernel"而不使用"echo test with Linux kernel"。  

    请告诉我们这是否是您已经在做的事情、如果是、请向我们展示正在创建的任务。

    接下来、您要使用哪些 SDK 版本?  为了确认这是演示、您正在运行/修改 AM62Px MCU+ SDK:IPC RP Message Linux Echo 对吗?

    谢谢!

    Paula.

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

    尊敬的 Paula:

    按照您使用哪个 SDK 版本?

    我们使用的是 MCU+SDK 10_00_00_14。


    并且、为了确认这是演示、您正在运行/修改 

    有。


    请向我们显示正在创建哪个任务。

    TaskP_Params_init(&taskParams);
        taskParams.name = "RPMESSAGE_CHAR_PING";
        taskParams.stackSize = IPC_RPMESSAGE_TASK_STACK_SIZE;
        taskParams.stack = gIpcTaskStack[1];
        taskParams.priority = IPC_RPMESSAGE_TASK_PRI;
        /* we use the same task function for echo but pass the appropiate rpmsg handle to it, to echo messages */
        taskParams.args = &gIpcRecvMsgObject[1];
        taskParams.taskMain = ipc_recv_task_main;
    
        status = TaskP_construct(&gIpcTask[1], &taskParams);
        DebugP_assert(status == SystemP_SUCCESS);
    
        /* Create the tasks which will handle the only recieve from svaya service */
            TaskP_Params_init(&taskParams);
            taskParams.name = "RPMESSAGE_REC_CHAR_PING";
            taskParams.stackSize = IPC_RPMESSAGE_TASK_STACK_SIZE;
            taskParams.stack = gIpcTaskStack[2];
            taskParams.priority = IPC_RPMESSAGE_TASK_PRI;
            /* we use the same task function for echo but pass the appropiate rpmsg handle to it, to echo messages */
            taskParams.args = NULL;
            taskParams.taskMain = io_operation;
    
            status = TaskP_construct(&gIpcTask[2], &taskParams);
            DebugP_assert(status == SystemP_SUCCESS);


    您可以看到使用相应的端点创建的任务很少。

    此致、
    去巴希

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

    debashis、谢谢、如果您在删除乒乓任务时遇到任何问题、请告诉我们

    Paula.

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

    尊敬的 Paula:

    [quote userid="571982" url="~/support/processors-group/processors/f/processors-forum/1471292/sk-am62p-lp-query-regarding-freertos-and-ipc 我想知道是否支持 RPMessage_recv"分块函数来将任务切换至分块状态并通过记号使 CPU 成为理想的选择。 因此、如果另一个任务在就绪队列中(具有相同的优先级)或取消阻止任务  、则该任务可以进入就绪队列并运行、直到我们没有收到来自 A53的 IPC 消息。


    您能给我讲一讲这个任务处理部分吗?

    是否可以使用 Segger-tool 进行调试(或某些类似工具)、或者我们是否必须购买一些跟踪工具 进行调试?

    此致、
    去巴希

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

    Debashis、Lauterbach Trace32是一个很好的示踪剂选择。 老实说,我个人没有 SEGGER 的经验。  

    但是、你也可以尝试在 CCS 中启用 ROV、以便检查与任务相关的变量和状态。
    示例步骤: AM64x MCU+ SDK:使用具有实时对象视图(ROV)的 SDK

    另一个跟踪选项(但不确定是否有用)是使用 CCS 的内核异常跟踪

    希望这对您有所帮助、

    Paula.

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

    尊敬的 Paula:

    只有通过 CCS 项目加载并运行应用程序时、ROV 才起作用。 但在本例中、我们使用的 IPC 具有 A53内核、因此还需要 Linux。 那么、我们可以在运行时执行什么操作、还是可以为我提供函数"RPMessage_recv"行为、以便我能够以这种方式将它可视化?

    让我们以 FreeRTOS 为例 :
    xQueueReceive 如何阻塞 NO 个节拍或 portMAX_DELAY、在这种情况下、任务将进入阻塞状态、直至队列中有数据。 RPMessage_recv 的行为是否类似?

    此致、
    去巴希

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

    Debashis、您好!来自 AM62Px MCU+SDK 用户指南。  

    AM62Px MCU+ SDK:IPC 预分频

    AM62Px MCU+ SDK:IPC RPMessage 的 API

    • 阻断以及具有基于超时的阻断功能的非阻断 API。  

    谢谢!

    Paula.

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

    尊敬的 Paula:

    如果我错了、请改正我:

    假设有两个任务- 任务1. 锁定 rpmessage 无限超时调用、而 任务2. 就绪队列中。 在此场景中、任务切换应在时间分片之前发生、因为任务1被阻止、从而允许任务2运行。

    此致、
    去巴希

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

    你说的对我来说是正确的。 如果您遇到任何问题、请告知我们

    谢谢!

    Paula.