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.

[参考译文] TDA4VM:适用于 mcu1_0的 FreeRTOS 和 CAN 驱动程序

Guru**** 2538960 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1300088/tda4vm-freertos-and-can-driver-for-mcu1_0

器件型号:TDA4VM

大家好!

我有 tda4vm : https://www.ti.com/tool/J721EXSOMXEVM + big board for it ( https://www.ti.com/tool/J721EXCPXEVM )

我有以下问题:我需要开发一个应用程序与 FreeRTOS + CAN + IPC (数据将从 CAN 路由-> IPC->Linux )

我正在使用的 SDK ( 8.6 )包含几个演示应用程序: IPC_RTOS_ECHO_TEST (FreeRTOS)和 CSL_mcan_testapp (裸机)。

这两个目标 MCU1_0内核,我想使用任何其他内核(打开建议),而不是这个,但这个有 MCAN0连接到物理对引脚(在大板上),我实际上可以使用,我可以加载 CSL_mcan_testapp 并在我的 PC 上查看独木舟( CAN 查看器)中的 CAN 帧。

到目前为止、我已经尝试将 CSL_mcan_testapp 代码移植到 IPC_RTOS_ECHO_TEST ,我为 CAN 创建了一个新的任务,给它最低的优先级(20 )到目前为止,我可以告诉,但启动过程不稳定,因为,这里出现了显示挡块: IPC_RTOS_ECHO_TEST 除了 IPC 和回声之外、它还处理一些电路板引导所必需的 DM/RM 东西、由于 TI 的引导过程、这对于所有面向 MCU1_0的应用来说都是强制性的。 启动过程会报告错误而不是启动、或者有时会报告启动、但会出现大量故障。

现在,如果有人遇到我的情况,我愿意接受建议和支持。

BR、Mircea

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

    合并 CSL_mcan 和 FreeRTOS IPC_echo、删除中断、printfs (上面有一个宏、我们在 CSL_mcan 中设置为0)、模式固定为1、仅传输就会收到这些错误、请参阅 paste bine bellow

    https://pastebin.com/ZMJR5qdc

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

    您好!

    我知道您想要使用 MCAN0 (我认为这是 MCU_MCAN0)、以便获取 MCU1_0上的数据、然后通过 IPC 将其发送到 A72。

    在深入您的询问之前、我在这里提出了三种不同的方法、并澄清了客户通常有的一些问题。

    1) 1)您可以使用 A72 Linux CAN 驱动程序并直接获取 MCU_MCAN0的数据、不存在 A72无法访问 MCU_MCAN0的限制。

    这很简单、不需要 IPC。

    2) 2)您可以使用主域 R5F 内核、如 MCU2_0、MCU2_1等。 获取 MCU_MCAN0的数据并使用 IPC 通信发送到 A72。

    此主域内核只需要2个任务,一个任务用于接收 CAN 数据,另一个任务用于 IPC 发送至 IPC。

    3) 3)您可以使用 MCU1_0等 MCU 域 R5F 内核来获取 MCU_MCAN0的数据、并使用 IPC 通信发送到 A72。

    此 MCU R5F 内核需要 SCI 服务器任务,一个任务用于接收 CAN 数据,另一个任务用于 IPC 发送到 IPC。

    我可以知道你在这里的明确期望吗?

    此致

    M·塔伦

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

    您好、Tarun、

    (报价单框由于某种原因不起作用)

    "

    1) 1)您可以使用 A72 Linux CAN 驱动程序并直接获取 MCU_MCAN0的数据、不存在 A72无法访问 MCU_MCAN0的限制。

    这很简单、不需要 IPC。

    "

    这已经摆在桌面上、我和软件架构师将讨论它。

    "

    2) 2)您可以使用主域 R5F 内核、如 MCU2_0、MCU2_1等。 获取 MCU_MCAN0的数据并使用 IPC 通信发送到 A72。

    此主域内核只需要2个任务,一个任务用于接收 CAN 数据,另一个任务用于 IPC 发送至 IPC。

    "

    我不知道如何、我将使用的 CSL_mcan 作为基准仅将 MCU_MCAN0引脚映射到外部、我需要 TI 提供的代码来使其正常工作。

    (我想使用除 MCU1_0之外的任何其他内核、TI 启动过程使该内核的使用变得困难)

    "

    3) 3)您可以使用 MCU1_0等 MCU 域 R5F 内核来获取 MCU_MCAN0的数据、并使用 IPC 通信发送到 A72。

    此 MCU R5F 内核需要 SCI 服务器任务,一个任务用于接收 CAN 数据,另一个任务用于 IPC 发送到 IPC。

    "

    同样、我不知道如何定义、因为 CSL_mcan 应用程序是 BareMetal、并且寄存器及其用例未正确定义。 我做了一个新的任务,只为 RX,一切工作后不久启动,然后一旦 Linux 启动,你可以看到日志,邮箱错误,任务是简单的,所有中断被禁用,以不影响 FreeRTOS 调度程序(现在),仍然错误。 有什么方法解决它吗?

    BTW、我曾尝试调试过、CCS12.5的 GEL 文件在 launch.js 中引用了一些 DMSC cortex M3、但找不到 cand、因此调试器无法启动。 我从 SDK CCS 安装程序描述的位置加载了 GEL 文件、但运气不好。

    BR、Mircea

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

    您好!

    这是在桌子上,我和软件架构师将讨论它。

    当然可以。

    我不知道如何使用、我将 CSL_mcan 用作参考时仅将 MCU_MCAN0引脚映射到外部、我需要来自 TI 的代码才能使其正常工作。

    PDK 中有 CSL 示例仅为了了解 MCAN 引脚在器件中的用法、这既不是 MCAN 驱动器。 如果您希望它用于 MCU_MCAN0、则连接到客户要使用的端口。

    正如我之前在其他线程中所说的那样,我们有 MCAL 示例,它可以为 CAN 运行裸机,这个示例在 MCU2_1内核(即主域内核)中使用了 MCU_MCAN0。

    我又不知道如何,因为 CSL_mcan 应用程序是 BareMetal 和寄存器及其用例未正确定义。 我做了一个新的任务,只为 RX,一切工作后不久启动,然后一旦 Linux 启动,你可以看到日志,邮箱错误,任务是简单的,所有中断被禁用,以不影响 FreeRTOS 调度程序(现在),仍然错误。 如何修复?

    您不能只在裸机示例中添加任务并期望它运行。 您需要理解在 IPC 示例和 CAN CSL 示例中编写的整个源代码,我可以帮助您解决过程中可能遇到的一些错误。

    在此过程中、有某些重要的东西、

    您计划使用什么操作系统? 如果没有 OS,则无法在运行时获取 CAN 数据,并通过 IPC 将其传输到 A72。

    如果是 FreeRTOS、您应该有多个任务、正如我之前建议的那样。

    您将接收数据的预期 CAN 帧速率是多少?

    预计将收到多少数据?

    现有的 IPC 是否支持数据速率传输?

    BTW、我当时尝试过调试、CCS12.5的 GEL 文件在 launch.js 中引用了一些 DMSC cortex M3、但找不到 cand、因此调试器无法启动。 我从 SDK CCS 安装程序描述的位置加载了 GEL 文件、但运气不好。

     您可以访问 URL https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/09_00_00_02/exports/docs/psdk_rtos/docs/user_guide/ccs_setup_j721e.html

    这与 CCS 问题有关、请提出一个问题、我可以在该问题上为您提供支持。

    此致

    M·塔伦

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

    您好、Tarun、

    我已经修改了 IPC_RTOS echo 示例、我在该示例中添加了一个任务。

    修改了 MAIN_RTOS: https://pastebin.com/8T40U1qR

    新文件 mcan_setup (基于 CSL 操作): https://pastebin.com/JWb00PUr

    请理解这一点、我有请求支持、 我需要实际的技术帮助、因为时间不允许我研究 SDK 提供的所有寄存器和东西、请将我的 Linux 日志文件转发给可能能够为我翻译的人、告诉我问题出在哪里。 我非常精通自己做的事情、但有时就像这次一样、mcu1_0应用程序运行顺畅、然后 Linux 会因为各种原因而崩溃。

    BR、Mircea

    PS:关于调试:启动,凝胶的东西是令人困惑的,让它的下一个版本直接在 CCS 内,自动化它,编辑 javascript 文件加载东西在嵌入式环境对我来说是喜欢喝茶叉。  

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

    您好!

    修改了 MAIN_RTOS: https://pastebin.com/8T40U1qR

    新文件 mcan_setup (基于 CSL 操作): https://pastebin.com/JWb00PUr

    [/报价]

    首先、很抱歉、我无法从 TI 内部网络访问这些网站链接。 请将详细信息作为附件添加到 E2E 中。

    请理解这一点,我请求支持, 我需要实际的技术帮助、因为时间不允许我研究 SDK 提供的所有寄存器和东西、请将我的 Linux 日志文件转发给可能能够为我翻译的人、告诉我问题出在哪里。 我非常精通自己做的事情,但有时像这次一样,mcu1_0应用程序运行流畅,然后由于原因而导致 Linux 崩溃。

    我可以理解您的担忧、但如果不分析 MCU1_0中发生的寄存器和处理流程、我们就很难了解 A72 Linux 为什么会从日志本身崩溃。 基本上、CSL 示例是默认的独立示例。

    mcu1_0应用程序正在流畅运行

    流畅运行意味着 IPC 是否能正常工作?

    当 MCU1_0固件未正确响应来自 Linux 端的 TI-SCI 消息请求时、通常会发生这些错误。

    在之前的主题中、提到了固件没有响应 TI SCI 请求。  我可以知道这个问题已经解决了吗?

    此致

    M·塔伦

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

    e2e.ti.com/.../3480.main_5F00_rtos.ce2e.ti.com/.../mcan_5F00_setup.c

    这里是文件、

    没有 CAN、Linux 就不会崩溃。  

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

    您好、Mircea:

    浏览完随附的源代码后、我可以观察到以下几点:

    1)关于 FreeRTOS 中的多个任务,SCIServer 在 MCU1_0中的所有任务中具有最高优先级。 但在源代码中、您已经进行了更改、这样可以任务阻止现有的 SCIServer 任务、这就是 Linux 故障问题的原因。

            /* Initialize SCI Client Server */
            TaskP_Params_init(&canTask);
            canTask.priority     = 3;
            canTask.stack        = canTaskStack;
            canTask.stacksize    = sizeof (canTaskStack);
    
            App_printf("Starting mcan task..... \n");
            //init can hw
            //mcan_setup();
            //create cyclic task
            can = TaskP_create(&mcan_main, &canTask);
            if(NULL == can)
            {
                OS_stop();
            }

    由于您愿意为 CAN 再添加一个任务、您可以在主 API 或任务 Fxn 中提及 CAN 任务、在 SCIServer 任务创建后、但不会阻止 SCIServer 任务。

    注:优先级编号越高、任务的优先级越高。

    2) CAN , IPC 启动和 初始化,板初始化必须在任务开始之前发生。

    3)  

    Unknown 说:
    我有以下问题:我需要开发一个带有 FreeRTOS + CAN + IPC 的应用程序(数据将从 CAN -> IPC->Linux 进行路由)

    默认的 IPC 回显测试只是回显发送的消息,你的期望是传输 CAN 的数据到 Linux ,但我看不到它在源代码满足这一要求。 我看到的只有与任务相关的更改很少。

    此致

    M·塔伦

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1)关于 FreeRTOS 中的多个任务,SCIServer 在 MCU1_0中的所有任务中具有最高优先级。 但在源代码中,你已经做了这样的更改,可以任务阻止现有的 SCIServer 任务,这是你的 Linux 故障问题的原因。[/报价]

    我循环了比"3"更多的优先级值,我尝试了0,1,2,4,5 (我想),我尝试了11,12,20,所有失败的方式都相同。

    "

    #define IPC_INIT_SCISERVER_task_PRI (6)
    #endif

    /* SCI 服务器的高优先级-必须高于低优先级任务*/
    #define IPC_SETUP_SCISERVER_task_PRI_HIGH (5)
    /*
    * SCI 服务器的低优先级-必须高于 IPC 回显测试任务
    *防止在执行测试时延迟处理 Sciserver 请求
    *多核 pong/ pong。
    */
    #define IPC_SETUP_SCISERVER_task_PRI_LOW (4)

    "

    我为这个代码迭代选择3、因为它小于4。 请提出一个更好的数字,我将尝试它。

    我在这里停留在 CAN TX 任务上、也就是说、 我不知道如何生成 RX 任务、因为我不知道必须写入什么寄存器才能 使 CAN Rx 位于同一 MCU_MCAN0上并且没有中断(目前)、只需要轮询即可。 请告诉我、那很好。

    在使用 Linux 使 CAN 保持稳定后、我将转到通过 IPC 传递数据。

    BR、Mircea

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

    您好、Mircea:

    问题不是您可以为 CAN 使用2的优先级编号、这与 IPC 类似、但您为 CAN 任务编写代码的位置是错误的。

    您可以在主 API 或在 SCIServer 任务创建后的 taskFxn 中提及 CAN 任务

    请在主 API 中执行此操作后创建一个 CAN 任务

     

        /* Initialize the task params */
        TaskP_Params_init(&taskParams);
        /* Set the task priority higher than the default priority (1) */
        taskParams.priority = 2;
        taskParams.stack        = gAppTskStackMain;
        taskParams.stacksize    = sizeof (gAppTskStackMain);
    
        task = TaskP_create(&taskFxn, &taskParams);
        if(NULL == task)
        {
            OS_stop();
        }

    或者、在 taskFxn API 中创建一个 CAN 任务

        /* Initialize SCI Client Server */
        TaskP_Params_init(&sciserverInitTaskParams);
        sciserverInitTaskParams.priority     = IPC_INIT_SCISERVER_TASK_PRI;
        sciserverInitTaskParams.stack        = gSciserverInitTskStack;
        sciserverInitTaskParams.stacksize    = sizeof (gSciserverInitTskStack);
    
        sciserverInitTask = TaskP_create(&Ipc_setupSciServer, &sciserverInitTaskParams);
        if(NULL == sciserverInitTask)
        {
            OS_stop();
        }

    此致

    M·塔伦

    此致

    M·塔伦

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

    我一开始就这样做了, style 崩溃了,同样的方式。

    [9.858026]   ti-sci 440830.dmsc:mbox 发送失败-110
            安装/run/media/mmcblk1p1...
    [ 确定 ]已安装的/run/media/mmcblk1p1.
    [   9.943532] ti-sci 440830.dmsc:resp 中的 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [   9.955619] ti-sci 440830.dmsc:mbox 发送失败-110
    [   9.975076] ti-sci 440830.dmsc:在 resp 中执行 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [   9.985004] ti-sci 440830.dmsc:resp 中的 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [   9.995713] ti-sci 440830.dmsc:mbox 发送失败-110
    [9.999822]   ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.008989] ti-sci 440830.dmsc:resp 中的 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [  10.018735] ti-sci 440830.dmsc:在 resp 中输入 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [  10.029158] ti-sci 440830.dmsc:在 resp 中执行 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [  10.031057] ti-sci 440830.dmsc:在 resp 中执行 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [  10.038851] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.048439] ti-sci 440830.dmsc:在 resp 中的 mbox 优化(调用方:sci_clk_determine_rate+0x64/0xe0)
    [  10.048444] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.048450] ti-sci-clk 440830.dmsc:clocks:dev=0、clk=3、ret=-110时确定速率失败
    [  10.055056] ti-sci 440830.dmsc:在 resp 中执行 mbox 优化(调用方:ti_sci_cmd_get_device_exclus+0x18/0x28)
    [  10.062364] ti-sci 440830.dmsc:resp 中的 mbox 优化(调用方:k3_dsp_rproc_prob+0x1a0/0x850 [ti_k3_dsp_remoteproc])
    [  10.062369] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.068002] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.076997] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.085711] ti-sci 440830.dmsc:mbox 发送失败-110
    [  10.117597] pvrsrvkm 4e200000.gpu:添加 GPU_0设备链接失败!
    [  10.12606060] CPU0上的 SError 中断、代码0xbf000000 -- SError
    [10.126063]  CPU: 0 PID: 217 Comm : systemd-udevd Doyed: G          O     5.10.162-g76b3e88d56 #1
    [  10.126064]硬件名称:德州仪器(TI) K3 J721E SoC (DT)
    [10.126065]  pstate:80000005 (Nzcv daif -pan -uao -TCO BTYPE=-)
    [10.126066]  PC : RGXBvncInitializeConfiguration+0x550/0x8d8 [pvrsrvkm]
    [  10.126067] LR : RGXBvncInitializeConfiguration+0x7d0/0x8d8 [pvrsrvkm]
    [10.126069]  sp : ff800011bdb780
    [10.126070]  x29: ff800011bdb780 x28: ff800008df6820  
    [10.126073]  x27:000000000000 x26:ff000800c5a170  
    [10.126075]  x25:ff800008e83000 x24:ff800008df5f60  
    [10.126078]  x23:ff000800d35580 x22:000000000000  
    [10.126080]  x21:000000000000 x20:ff000800c5a000  
    [10.126082]  x19:ff0008062d7000 x18:ff800008dadaa0  
    [10.126084]  x17:ff800008dadc98 x16:ff800008dad998  
    [  10.126086] x15:ff800008dada68 x14:000000ffc0000000  
    [10.126089]  x13:ff000800c5b000 x12:000000000000  
    [10.126091]  x11:01010101010101 x10:7f7f7f7f7f7f7f7f7f7f7f7f7f  
    [10.126093]  x9 : 6b6860651f397224 x8 : 7f7f7f7f7f7f7f7f7f  
    [10.126096]  x7 : fefefefefefefefefefeff x6 : ff800011bdb657  
    [10.126098]  x5 : 8080808080808080 x4 : 000000000000  
    [10.126100]  x3:ff800008e74ad8 x2:000000000000  
    [10.126102]  x1 : 0000000000000000 x0 : ff800013480000  
    [10.126105]  内核严重-未同步:异步错误中断
    [10.126106]  CPU: 0 PID: 217 Comm : systemd-udevd dicted: g          O     5.10.162-g76b3e88d56 #1
    [  10.126107]硬件名称:德州仪器(TI) K3 J721E SoC (DT)
    [10.126108]  呼叫追踪:
    [  10.126109] dump_backtrace+0x0/0x1a0
    [  10.126110] show_stack+0x18/0x68
    [  10.126111] dump_stack+0xd0/0x12c
    [10.126112]   恐慌+0x16c/0x334
    [  10.126113] NMI_PANE+0x8c/0x90
    [10.126114]   arm64_serror_pania+0x78/0x84
    [10.126115]   do_serror+0x38/0x98
    [  10.126116] el1_error+0x90/0x110
    [10.126117]   RGXBvncInitializeConfiguration+0x550/0x8d8 [pvrsrvkm]
    [10.126118]   RGXRegisterDevice+0x414/0xb28 [pvrsrvkm]
    [10.126119]   PVRSRVCommonDeviceCreate+0x13c/0x628 [pvrsrvkm]
    [  10.126120] PVR_DRM_LOAD+0xa8/0x1b0 [pvrsrvkm]
    [  10.126121] pvr_prob+0x5c/0xa8 [pvrsrvkm]
    [  10.126122]platform_drv_prob+0x54/0xa8  
    [  10.126123] reallet_prob+0xec/0x3e0
    [  10.126124] driver_prob_device+0x58/0xb8
    [  10.126125] DEVICE_DRIVER_ATH+0x74/0x80
    [  10.126126] _DRIVER_ATATH+0x64/0xF8
    [  10.126127] bus_for_each_dev+0x70/0xc0
    [  10.126128] driver_attach+0x24/0x30
    [  10.126129] BUS_add_driver+0x150/0x200
    [10.126130]   DRIVER_REGISTER+0x64/0x120
    [10.126131]   __platform_driver_register+0x48/0x58
    [10.126132]   pvr_init+0x50/0x1000 [pvrsrvkm]
    [10.126133]   DO_ONE_INITCALL+0x54/0x1b8
    [  10.126134] DO_INIT_MODULE+0x44/0x1f0
    [  10.126135] LOAD_MODULE+0x1f08/0x24a8
    [  10.126136] __do_sys_finit_module+0xb8/0xf8
    [  10.126137] __ARM64_sys_finit_module+0x20/0x30
    [  10.126138] el0_Svc_common.constprop.0+0x78/0x1c8
    [  10.126139] DO_el0_Svc+0x24/0x90
    [10.126140  ] el0_Svc+0x14/0x20
    [  10.126141] el0_SYNC_handler+0xb0/0xb8
    [  10.126142] el0_SYNC+0x180/0x1c0
    [10.126155]  SMP:停止辅助 CPU
    [  10.126156]内核偏移:已禁用
    [  10.126157] CPU 特性: 0x28040,022,20006008
    [10.126158]  内存限制:无

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

    您好!

    好的。 您是否可以在更新后与我分享代码更改?

    此致

    M·塔伦

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

    明天、我会分享一下。

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

    您好!  

    当然可以。  

    此致  

    M·塔伦  

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

    e2e.ti.com/.../6445.main_5F00_rtos.ce2e.ti.com/.../0160.mcan_5F00_setup.c

    这个操作带有一个定时器、接近、以偏移 cantask 的开始时间为1秒、看看这是否有用、但没有、同样的问题。 你可以绕着代码玩,我尝试了你的建议,同样的问题。

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

    您好、Mircea:

    我对延误感到非常抱歉,上周我要休紧急假。

    我的目的是写下以下内容

    static void taskFxn(void* a0, void* a1)
    {
    
    
        /* Initialize SCI Client - It must be called before board init */
        ipc_initSciclient();
    
        TaskP_Handle sciserverInitTask;
        TaskP_Params sciserverInitTaskParams;
    
        /* Initialize SCI Client Server */
        TaskP_Params_init(&sciserverInitTaskParams);
        sciserverInitTaskParams.priority     = IPC_INIT_SCISERVER_TASK_PRI;
        sciserverInitTaskParams.stack        = gSciserverInitTskStack;
        sciserverInitTaskParams.stacksize    = sizeof (gSciserverInitTskStack);
    
        sciserverInitTask = TaskP_create(Ipc_setupSciServer, &sciserverInitTaskParams);
        if(NULL == sciserverInitTask)
        {
            OS_stop();
        }
    
    /* DO all the startups of CAN and IPC*/
    
    
        TaskP_Handle task;
        TaskP_Params taskParams;
    
            /* Initialize the task params */
            TaskP_Params_init(&taskParams);
            //taskParams.instance->name = CAN_PROFILE_DEMO_TASK_NAME;
            /* Set the task priority higher than the default priority (1) */
            taskParams.priority     = 2;
            taskParams.stack        = CanApp_TaskStack;
            taskParams.stacksize    = sizeof (CanApp_TaskStack);
    
            task = TaskP_create(CanApp_TaskFxn, &taskParams);
            if(NULL == task)
            {
                OS_stop();
            }
       
    }
    

    在 App_Task 中,您可以呼叫所需的 CAN 相关任务

    注意:请不要复制上面的代码,我已经给出了这个作为参考。

    此致

    M·塔伦

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

    很遗憾听到紧急情况

    你试过上面的代码吗? 因为我已经对它进行了测试并得到相同的结果。  

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

    感谢您的关注。

    xTimerCreate() API 是 FreeRTOS 内核 API,而我们有 OSAL -OS 抽象层,我们使用 taskP_Create()等调用,而不是直接内核 API。

    ,因为我已经测试过它并获得相同的结果

    我请求您按照建议与 taskP_create() API 创建的2个任务共享源代码,当然我们需要连接调试器并查看它在哪里被停止。 您的 CCS 设置完成了吗?

    此致

    M·塔伦

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

    就像我说的,我需要一个真正的应用程序来尝试,说"尝试一下,尝试一下"到目前为止没有任何效果。

    是的、我使用了 TaskP_Create、是的、相同的错误。  

    请,我再次问,给我分享一个示例代码让我们说 MCU2_1,它有一个 CAN 驱动程序(TX/Rx)和 FreeRTOS ,你已经测试了(强制性)。 我还剩一点时间进行实验。

    BR、Mircea

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

    您好、Mircea:

    正如我所说,我需要一个真正的应用程序来尝试,说"尝试一下,尝试一下'到目前为止没有效果。

    我理解您的担忧、 但是、没有这样的与您的用例相匹配的现成示例、我需要提交一个内部 Ticket、开发团队将根据其他客户的任何其他请求进行验证和分析、然后他们才会像您在未来 SDK 中发布的那样开发此示例。  

    是的,我使用了 TaskP_Create,是的,相同的错误。  [/报价]

    请您分享源码和错误,我们需要设置调试器和测试。

    请再次询问,给我分享一个示例代码,比如说 MCU2_1,它有一个 CAN 驱动程序(TX/Rx)和 FreeRTOS,并且您已经对它进行了测试(强制)。 我还有很长的时间进行实验[/报价]

    我们 也可以按照我在另一个 E2E 中的建议来配置应用、但如果您有需要、它无法在 A72上引导 Linux。

    此致

    M·塔伦

    [/quote]