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.

[参考译文] LAUNCHXL-F28379D:F28379D

Guru**** 2466550 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1479498/launchxl-f28379d-f28379d

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:C2000WARESysConfig

工具与软件:

  你(们)好  

 

在我的项目中、我将使用两个 CPU、其中 CPU1通过处理器间通信(IPC)向 CPU2发送命令。 接收到来自 CPU1的命令后、CPU2发送存储在其缓冲器中的 CAN 数据。 CPU2从外部源接收 CAN 数据。 但我遇到了一个问题:启动或运行代码时、CPU2在 CAN 初始化期间会卡住。 调试时、代码在can_initialization_RAM该段中暂停。

我已按照 C2000 多核开发用户指南中提供的指导原则配置 CPU1和 CPU2之间的 IPC 通信。 具体而言、我已确保 CPU1将数据写入 CPU1_TO_CPU2 MSGRAM、而 CPU2从该位置读取数据。   

CPU1的以下代码

..........................................................................

/
//包含的文件
//
#include "driverlib.h"
#include "device.h"
#include "board.h"
#include "ipc.h"
#include "memcfg.h"

//
//定义
//
#define IPC_CMD_READ_CAN 0x1002

#define CPU1_TO_CPU2_FLAG IPC_FLAG0
#define CPU2_TO_CPU1_FLAG IPC_FLAG1
#define SYNC_FLAG IPC_FLAG31

#define CAN_DATA_SIZE 8.

#pragma DATA_SECTION (canData、"MSGRAM_CPU2_TO_CPU1")

易失性 uint32_t canData[CAN_DATA_SIZE];

//
//使 LED 闪烁
//
void blinkLED()

GPIO_togglePin (DEVICE_GPIO_PIN_LED1);
DEVICE_DELAY_US (500000);
GPIO_togglePin (DEVICE_GPIO_PIN_LED1);
}

//
// Main 函数
//
void main (void)

//初始化设备和外设
device_init();
// MemCfg_initSections (MEMCFG_SEC_MSGRAM_CPU2_TO_CPU1);
//MemCfg_initSections (MEMCFG_SEC_MSGRAM_CPU2_TO_CPU1);
Interrupt_initModule();
interrupt_initVectorTable();
board_init();

//配置 LED 引脚
GPIO_setPinConfig (DEVICE_GPIO_PIN_LED1);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_LED1、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (DEVICE_GPIO_PIN_LED1、GPIO_PIN_TYPE_STD);
GPIO_setMasterCore (DEVICE_GPIO_PIN_LED1、GPIO_CORE_CPU1);

//初始化 IPC 并与 CPU2同步
IPC_clearFlagLtoR (IPC_CPU1_L_CPU2_R、IPC_FLAG_ALL);
IPC_SYNC (IPC_CPU1_L_CPU2_R、SYNC_FLAG);

eint;//启用全局中断
ERTM;

// while (1)
//{
//向 CPU2请求 CAN 数据
// ipc_sendCommand (IPC_CPU1_L_CPU2_R、CPU1_TO_CPU2_FLAG、IPC_ADDR_CORRECTION_ENABLE、
// IPC_CMD_READ_CAN、0、0);
//
////访问数据之前等待 CPU2响应
// ipc_waitForAck (ipc_CPU1_L_CPU2_R、CPU2_TO_CPU1_FLAG);
//
////接收到数据后立即闪烁 LED
// blinkLED ();
//
// device_delay_US (1000000);
//}

while (1)

//从 CPU2请求 CAN 数据
IPC_sendCommand (IPC_CPU1_L_CPU2_R、CPU1_TO_CPU2_FLAG、IPC_ADDR_CORRECTION_ENABLE、
IPC_CMD_READ_CAN、0、0);

//访问数据之前等待 CPU2响应
IPC_waitForAck (IPC_CPU1_L_CPU2_R、CPU2_TO_CPU1_FLAG);

//检查接收到的数据
uint8_t i;
bool 有效= true;
for (I = 0;I < CAN_DATA_SIZE;I++)

if (canData[i]== 0)

有效= false;
休息;
}
}

if (有效)

blinkLED();
}

DEVICE_DELAY_US (1000000);
}
}   

CPU2的以下代码

..........................................................................

//
//包含的文件
//
#include "device.h"
#include "can.h"
#include "interrupt.h"
#include "sysctl.h"
#include "board.h"
#include "ipc.h"

//
//定义
//
#define IPC_CMD_READ_CAN 0x1002
#define IPC_CMD_RESP 0x2002

#define CPU1_TO_CPU2_FLAG IPC_FLAG0
#define CPU2_TO_CPU1_FLAG IPC_FLAG1
#define SYNC_FLAG IPC_FLAG31

#define TX_MSG_OBJ_ID 1.
#define RX_MSG_OBJ_ID 1.
#define MSG_DATA_LENGTH 8.


//#pragma DATA_SECTION (rxMsgData、"MSGRAM_CPU1_TO_CPU2")
//volatile uint16_t rxMsgData[MSG_DATA_LENGTH]={0};

#pragma DATA_SECTION (rxMsgData、"GSRAM");
volatile uint16_t rxMsgData[MSG_DATA_LENGTH]={0};

//
//函数原型
//
_interrupt void IPC_ISR0 (void);
_interrupt void canbISR (void);

//
// Main 函数
//
void main (void)

//初始化设备和 GPIO
device_init();
// MemCfg_initSections (MSGRAM_CPU1_TO_CPU2);
device_initGPIO();

//为 RX 配置 CANB
GPIO_setPinConfig (DEVICE_GPIO_CFG_CANRXB);
GPIO_setPinConfig (DEVICE_GPIO_CFG_CANTXB);


//初始化 CANB 模块
CAN_initModule (CANB_BASE);
CAN_setBitRate (CANB_BASE、DEVICE_SYSCLK_FREQ、500000、20);

//启用 CANB 中断
CAN_enableInterrupt (CANB_BASE、CAN_INT_IE0 | CAN_INT_ERROR | CAN_INT_STATUS);

//初始化中断系统
Interrupt_initModule();
INTERRUPT_REGISTER (INT_CANB0、&C);
INTERRUPT_ENABLE (INT_CANB0);

//设置 RX 消息对象
CAN_setupMessageObject (CANB_BASE、RX_MSG_OBJ_ID、0x1、CAN_MSG_FRAME_STD、
CAN_MSG_OBJ_TYPE_RX、0、CAN_MSG_OBJ_RX_INT_ENABLE、MSG_DATA_LENGTH);

can_startModule (cNB_BASE);

// IPC 初始化
IPC_clearFlagLtoR (IPC_CPU2_L_CPU1_R、IPC_FLAG_ALL);
IPC_SYNC (IPC_CPU2_L_CPU1_R、SYNC_FLAG);

//寄存器 IPC 中断
interrupt_register (INT_IPC_0、IPC_ISR0);
INTERRUPT_ENABLE (INT_IPC_0);

//启用全局中断
EINT;
ERTM;

while (1);
}

//
// CANB 中断服务例程(ISR)
//
_interrupt void canbISR (void)

uint32_t status = can_getInterruptCAse (CANB_BASE);

if (STATUS == RX_MSG_OBJ_ID)

//读取接收到的 CAN 数据
can_readMessage (CANB_BASE、RX_MSG_OBJ_ID、(uint16_t*) rxMsgData);
}

CAN_clearGlobalInterruptStatus (CANB_BASE、CAN_GLOBAL_INT_CANINT0);
interrupt_clearACKGroup (interrupt_ACK_group9);
}

//
// IPC 中断服务例程(处理 CPU1 -> CPU2命令)
//
__interrupt void IPC_ISR0 (void)

uint32_t 命令;

//从 CPU1读取 IPC 命令
IPC_readCommand (IPC_CPU2_L_CPU1_R、CPU1_TO_CPU2_FLAG、IPC_ADDR_CORRECTION_ENABLE、
COMMAND、NULL、NULL);

如果(命令== IPC_CMD_READ_CAN)

uint8_t i;
//通过 IPC 将存储的 CAN 数据发送到 CPU1
对于(I = 0;I < MSG_DATA_LENGTH;I++)

IPC_sendCommand (IPC_CPU2_L_CPU1_R、CPU2_TO_CPU1_FLAG、IPC_ADDR_CORRECTION_ENABLE、
IPC_CMD_RESP、rxMsgData[i]、i);
}

//等待 CPU1确认接收
IPC_waitForAck (IPC_CPU2_L_CPU1_R、CPU2_TO_CPU1_FLAG);
}

IPC_ackFlagRtoL (IPC_CPU2_L_CPU1_R、CPU1_TO_CPU2_FLAG);
interrupt_clearACKGroup (INTERRUPT_ACK_GROUP1);
}    

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

    尊敬的 Keshav:

    听起来您的问题可能出在 CAN 设置方面。 您能否参考 C2000Ware 中的示例并进行比较、以确保 CAN 的设置正确完成。 我怀疑内存配置不正确。

    此致、

    Ozino

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

    感谢您发送编修。

    在设置 CPU2之前、我使用 CANB 在 CPU1上测试了 CAN 示例、它运行良好。 我对 CPU2使用了相同的配置、但我遇到了问题。 我还比较了示例代码配置、并确保以相同的方式配置 CPU2、但问题仍然存在。 CPU2是否需要任何其他配置?"**

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

    您好!

    我会使用 C2000Ware 中提供的 IPC 示例并将其与 CAN 示例相结合、看看它是否起作用。 这是 您已经完成的测试吗?

    此致、

    Ozino

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

    您好!

    感谢您的答复、我 采用了 库中的示例代码  ipc_ex4_msgqueue_sysconfig_c28x2 and combine the can here still i facing the same issue

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

    您是否比较了两个应用程序之间的链接器命令文件(.cmd)设置、以确保您已按预期对存储器进行了分区。

    此致、
    Ozino

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

    您好!

    在示例项目中、我找不到 .cmd 从而我在中对其进行了配置 SysConfig . 请提供一个工作状态 CAN 的工程 CPU1和 CPU2 处于双核设置中。

    运行位置
    RAMLS0

       

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

    如果您在"Generated Sources"下、应该会看到一个名为 device_cmd.cmd 的文件、该文件是链接器命令文件。 您可以在 SysConfig 部分中看到 CMD 文件的设置。

    此致、

    Ozino

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


    //
    //由选择的有效链接器 CMD 配置
    // CMD 工具全局设置
    //
    #define CMD0
    #ifdef CMD0

    小程序

    RAMM0:origin = 0x000123、length = 0x0002DD
    RAMM1:origin = 0x000400、length = 0x0003F8
    CLATOCPU_MSGRAM:origin = 0x001480、length = 0x000080
    CPUTOCLA_MSGRAM:origin = 0x001500、length = 0x000080
    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800、length = 0x000800
    RAMLS2:origin = 0x009000、length = 0x000800
    RAMLS3:origin = 0x009800、length = 0x000800
    RAMLS4:origin = 0x00A000、length = 0x000800
    RAMLS5:origin = 0x00A800、length = 0x000800
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMD1:origin = 0x00B800、length = 0x000800
    RAMGS0:origin = 0x00C000、length = 0x001000
    RAMGS1:origin = 0x00D000、length = 0x001000
    RAMGS2 : origin = 0x00E000 , length = 0x001000
    RAMGS3 : origin = 0x00F000, length = 0x001000
    RAMGS4:origin = 0x010000、length = 0x001000
    RAMGS5:origin = 0x011000、length = 0x001000
    RAMGS6:origin = 0x012000、length = 0x001000
    RAMGS7:origin = 0x013000、length = 0x001000
    RAMGS8:origin = 0x014000、length = 0x001000
    RAMGS9:origin = 0x015000、length = 0x001000
    RAMGS10:origin = 0x016000、length = 0x001000
    RAMGS11:origin = 0x017000、length = 0x001000
    RAMGS12:origin = 0x018000、length = 0x001000
    RAMGS13:origin = 0x019000、length = 0x001000
    RAMGS14:origin = 0x01A000、length = 0x001000
    RAMGS15:origin = 0x01B000、length = 0x000FF8
    CPU2TOCPU1RAM:origin = 0x03F800、length = 0x000400
    CPU1TOCPU2RAM:origin = 0x03FC00、length = 0x000400
    FLASHA:origin = 0x080000、length = 0x002000
    FLASHB:origin = 0x082000、length = 0x002000
    FLASHC:origin = 0x084000, length = 0x002000
    FLASHD:origin = 0x086000、length = 0x002000
    FLASHE:origin = 0x088000、length = 0x008000
    FLASHF:origin = 0x090000、length = 0x008000
    FLASHG:origin = 0x098000、length = 0x008000
    FLASHH:origin = 0x0A0000、length = 0x008000
    FLASHI:origin = 0x0A8000、length = 0x008000
    FLASHJ:origin = 0x0B0000、length = 0x008000
    FLASHK:origin = 0x0B8000、length = 0x002000
    FLASHL:origin = 0x0BA000、length = 0x002000
    FLASHM:origin = 0x0BC000、length = 0x002000
    FLASHN : origin = 0x0BE000、length = 0x001FF0
    复位:origin = 0x3FFFC0、length = 0x000002
    }


    部分中)

    //
    // C28x 段
    //
    .reset :> RESET , TYPE = DSECT /* NOT USED ,*/
    codestart :> 0x080000
    .text :>> FLASHB | FLASHC | FLASHD | FLASHE
    对齐(8)
    .TI.ramfunc:加载> FLASHD、
    Run (运行)> RAMLS0:
    table (copyTable_ramfunc)、
    对齐(8)
    .binit :> FLASHA,
    对齐(8)
    .ovly :> FLASHA,
    对齐(8)
    cinit :> FLASHA,
    对齐(8)
    .stack :> RAMM1.
    .init_array :> FLASHB,
    对齐(8)
    .bss :> RAMLS5.
    .const :> FLASHF,
    对齐(8)
    .data :> RAMLS5.
    .switch :> FLASHA,
    对齐(8)
    .sysmem :> RAMLS5.
    MSGRAM_CPU1_TO_CPU2:> CPU1TOCPU2RAM、type=NOINIT
    MSGRAM_CPU2_TO_CPU1:>CPU2TOCPU1RAM、type=NOINIT

    }

    #endif

    /*
    //________________________________________________====
    //文件结尾。
    //________________________________________________====
    */

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CPU2///////////////////////////////////////////////////////////////////////


    //
    //由选择的有效链接器 CMD 配置
    // CMD 工具全局设置
    //
    #define CMD0
    #ifdef CMD0

    小程序

    RAMM0_BEGIN:origin = 0x000000、length = 0x000002
    RAMM0:origin = 0x0000A2、length = 0x00035E
    RAMM1:origin = 0x000400、length = 0x0003F8
    CLATOCPU_MSGRAM:origin = 0x001480、length = 0x000080
    CPUTOCLA_MSGRAM:origin = 0x001500、length = 0x000080
    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800、length = 0x000800
    RAMLS2:origin = 0x009000、length = 0x000800
    RAMLS3:origin = 0x009800、length = 0x000800
    RAMLS4:origin = 0x00A000、length = 0x000800
    RAMLS5:origin = 0x00A800、length = 0x000800
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMD1:origin = 0x00B800、length = 0x000800
    RAMGS0:origin = 0x00C000、length = 0x001000
    RAMGS1:origin = 0x00D000、length = 0x001000
    RAMGS2 : origin = 0x00E000 , length = 0x001000
    RAMGS3 : origin = 0x00F000, length = 0x001000
    RAMGS4:origin = 0x010000、length = 0x001000
    RAMGS5:origin = 0x011000、length = 0x001000
    RAMGS6:origin = 0x012000、length = 0x001000
    RAMGS7:origin = 0x013000、length = 0x001000
    RAMGS8:origin = 0x014000、length = 0x001000
    RAMGS9:origin = 0x015000、length = 0x001000
    RAMGS10:origin = 0x016000、length = 0x001000
    RAMGS11:origin = 0x017000、length = 0x001000
    RAMGS12:origin = 0x018000、length = 0x001000
    RAMGS13:origin = 0x019000、length = 0x001000
    RAMGS14:origin = 0x01A000、length = 0x001000
    RAMGS15:origin = 0x01B000、length = 0x000FF8
    CPU2TOCPU1RAM:origin = 0x03F800、length = 0x000400
    CPU1TOCPU2RAM:origin = 0x03FC00、length = 0x000400
    FLASHA:origin = 0x080000、length = 0x002000
    FLASHB:origin = 0x082000、length = 0x002000
    FLASHC:origin = 0x084000, length = 0x002000
    FLASHD:origin = 0x086000、length = 0x002000
    FLASHE:origin = 0x088000、length = 0x008000
    FLASHF:origin = 0x090000、length = 0x008000
    FLASHG:origin = 0x098000、length = 0x008000
    FLASHH:origin = 0x0A0000、length = 0x008000
    FLASHI:origin = 0x0A8000、length = 0x008000
    FLASHJ:origin = 0x0B0000、length = 0x008000
    FLASHK:origin = 0x0B8000、length = 0x002000
    FLASHL:origin = 0x0BA000、length = 0x002000
    FLASHM:origin = 0x0BC000、length = 0x002000
    FLASHN : origin = 0x0BE000、length = 0x001FF0
    复位:origin = 0x3FFFC0、length = 0x000002
    }


    部分中)

    //
    // C28x 段
    //
    .reset :> RESET , TYPE = DSECT /* NOT USED ,*/
    codestart :> 0x000000
    .text :>> FLASHB | FLASHC | FLASHD | FLASHE
    对齐(8)
    .TI.ramfunc:加载> FLASHD、
    Run (运行)> RAMLS0:
    表(BINIT)、
    对齐(8)
    .binit :> FLASHA,
    对齐(8)
    .ovly :> FLASHA,
    对齐(8)
    cinit :> FLASHA,
    对齐(8)
    .stack :> RAMM1.
    .init_array :> FLASHB,
    对齐(8)
    .bss :> RAMLS5.
    .const :> FLASHF,
    对齐(8)
    .data :> RAMLS5.
    .switch :> FLASHA,
    对齐(8)
    .sysmem :> RAMLS5.
    MSGRAM_CPU1_TO_CPU2:> CPU1TOCPU2RAM、type=NOINIT
    MSGRAM_CPU2_TO_CPU1:>CPU2TOCPU1RAM、type=NOINIT

    }

    #endif

    /*
    //________________________________________________====
    //文件结尾。
    //________________________________________________====
    */

    这是我的 cmd 生成的 文件、但仍然有相同的问题。 在更改配置   

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

    您好!

    请允许我与 CAN 专家联系、以提供进一步的帮助。

    此致、

    Ozino

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

    嗨、Keshav、

    只是为了确认,代码在执行  CAN_initModule(CANB_BASE );函数 CPU2 Main()时失败?

    您是否仅在没有添加 IPC 的 CPU2上测试了 MCAN 示例?

    在设置 IPC 之前、是否可以将您的 CAN 初始化/配置代码移至 CPU1上运行? 然后、CPU2仍可以访问 CANB 外设以发送必要的消息、但外设的配置在 CPU1初始化之前进行。

    此致、

    Zackary Fleenor

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

    尊敬的 Keshav:

    您可能还需要首先通过   在 CPU1中运行 API SYSCTL_selectCPUForPeripheralInstance (SYSCTL_CPUSEL_CANB、2、SYSCTL_CPUSEL_CPU2)将 CANB 的控制分配给 CPU2。  必须在 CPU1中初始化 F2837x 中共享模块的所有权。  建立模块所有权后、可在所选 CPU 上完成模块配置(初始化、设置等)。

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

    在我的项目中、

    CPU1通过 IPC 向 CPU2发送命令 (IPC_CMD_READ_CAN)。
    CPU2接收命令并开始接收 CAN 数据 不需要的。
    CPU2通过 IPC 将接收到的 CAN 数据发送回 CPU1 .
    CPU1在接收到 CAN 数据时使 LED (GPIO31)闪烁 .
    5.CPU2负责 CANB 初始化和消息接收 .

    问题:CPU2长时间等待 IPC 标志

    CPU2为 卡在这个环路中

    C.
    CopyEdit
    while ((HWREG(IPC_CPU2_L_CPU1_R + IPC_O_FLG) & CPU1_TO_CPU2_FLAG) == 0);

    但 CPU1正在调用 IPC_setFlagLtoR(IPC_CPU1_L_CPU2_R, CPU1_TO_CPU2_FLAG);
     如何确认 CPU1是否正确设置了 IPC 标志?

    已尝试调试步骤

    1.已检查 CPU1是否正在调用IPC_setFlagLtoR()
    2.已在while() CPU2上的环路内部切换 LED 检查它是否连续循环。
    3.已验证 CPU1是否执行、但未完成。
    4.已检查canbISR() CPU2上的 CAN ISR ()、但未触发。

    我这边的问题。

    1.为什么 CPU2没有检测到 CPU1设置的 IPC 标志?
    2. 如何确认 CPU1已成功设置 IPC 标志(IPC_setFlagLtoR())?
    3.如果 CAN ISR (canbISR()未触发、我可以通过哪些检查来确保 CANB 配置正确?

    4. CPU1和 CPU2之间的 IPC 同步是否存在可导致这种情况的已知问题?

    e2e.ti.com/.../IPC_5F00_CAN_5F00_CPU1.zipthis是我尝试的项目

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

    嗨、Keshav、

    非常感谢您努力提供更多信息来帮助我们继续调试您的问题。

    由于该主题现已从 CAN 相关问题转变为 IPC 问题、因此我们请求您使用这些新信息创建新主题、以便我们可以联系合适的专家以获得最佳反馈。 如有可能、请在新主题中包含该原始问题的链接、以便进行追溯/参考。

    此致、

    Zackary Fleenor

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

    我还尝试使用 CPU2独立运行 CANB、但现在无法正常工作。 也请解决该问题。  

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

    尊敬的 Keshav:

    如需更多反馈、请为每个问题创建新的 E2E 主题。

    此致、

    Zackary Fleenor