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-F28P65X:使用 dcan_flash_programr.exe 和 CAN 工具在 F28P65x 上进行 DCAN 刷写后应用程序无法运行:PEAK CAN

Guru**** 2298570 points
Other Parts Discussed in Thread: C2000WARE, LAUNCHXL-F28P65X
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515045/launchxl-f28p65x-application-not-running-after-dcan-flashing-on-f28p65x-using-dcan_flash_programmer-exe-with-can-tool-peak-can

器件型号:LAUNCHXL-F28P65X
主题:C2000WARE 中讨论的其他器件

工具/软件:

TI 团队大家好、

我目前正在研究 DCAN 闪存编程 对于 F28P65x 器件、我在这里使用 PEAK CAN、目标是在其上刷写并运行应用 CPU1 使用了 CAN 外设 以及提供的 DCAN 闪存内核和闪存编程器实用程序。

刷写命令:C:\ti\C2000Ware_5_04_00_00\utilities\flash_programmers\dcan_flash_programmer>dcan_flash_programr.exe -d f28p65x -k dcan_flash_kernel_c28x_dual_ex5.txt -a

应用程序似乎已成功加载、如以下控制台输出所示:led_ex1_c28x_dual_blinky_cpu1.txt -v

步骤:

1.设置  CAN 的引导模式 : S3与  GPIO72高电平   GPIO84为低电平

已加载 -d f28p65x -k dcan_flash_kernel_c28x_dual_ex5.txt -a led_ex1_c28x_dual_blinky_cpu1.txt -v

3.加载应用程序后  GPIO72低电平   GPIO84高,然后重置 boad ,但我的应用程序没有运行。

我们非常感谢任何指导、示例项目或最佳实践。

注意:复位电路板后、 应用程序不会运行 led_ex1_c28x_dual_blinky_cpu1未观察到中的预期闪烁行为。

提前感谢您的支持。

此致、

Suresh k

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

    您好 Suresh、

    DCAN 闪存内核将您的应用程序编程到闪存、因此若要在复位后运行它、您必须从闪存引导。 若要从闪存引导、GPIO72和 GPIO84都应为高电平。 将72设置 为低电平和84设置为高电平可将器件配置为 SCI 引导。

    此致、

    Alex

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

    您好 Alex、

    我正在尝试通过 DCAN_Programmer 将"led_ex1_c28x_dual_blinky_cpu1"程序刷写到我的 LaunchPad F28P65x 中。 我已按照给定文档中的步骤操作、但程序未被刷新。 我已遵循以下步骤:

    1.设置正确 引导模式 S3、通过设置 GPIO72 (向下)->0和 GPIO84 (向上) ->1(加载应用程序后,将 S3的两个引脚设置为高电平)
    2.将 S4设为 Xcvr (CAN 路由)。
    3.将 LaunchPad J14处收发器的高电平和低电平引脚连接到 PCAN-USB 的通道1。
    4.导入"flash_kernel_ex5_dcan_flash_kernel.c"工程并完成编译
    5. 将"${CG_TOOL_HEX}""${BuildArtifactFileName}"-boot -sci8 -a -o "${BuildArtifactFileBaseName}.txt"添加到 "flash_kernel_ex5_dcan_flash_kernel.c"工程中。
    6.启用 C2000十六进制实用程序并 在"flash_kernel_ex5_dcan_flash_kernel.c" 工程中添加以下标志:--diag_swrap=off --boot --sci8 --ascii。
    7. 。 将生成的两个 txt 文件复制到 "dcan_flash_programmer"目录并运行命令: dcan_flash_programr.exe -d      f28P65x -k dcan_flash_kernel.txt -a led_ex1_c28x_dual_blinky_cpu1 -v
    8. cmd 窗口显示"Kernel loaded"和"Application Load complete"->请参阅图像、但 led 应用程序未在电路板上运行。
      

    10.Obeserved 还有一件事,如果我移除了从 CAN USB 到板载 J14 (CAN-H/CAN-L)的连接,那么它也显示"应用程序加载完成" 这意味着 nal 和应用程序未加载到板中。

    注意:我正在使用 PEAK CAN USB、是否可以使用此 dcan_flash_programmer{Flashing Command:C:\ti\C2000Ware_5_04_00_00\utilities\flash_programmers\dcan_flash_programmer>dcan_flash_programr.exe -d f28p65x -k dcan_flash_kernel_c28x_dual_ex5.txt -a}更新固件?

    -> 将  输出(dcan_flash_kernel_c28x_dual_ex5 .txt)文件中的字节3和字节4修改如下:aa 08 C0 7A 00 00 00 00 00     00 00 00  00 00 00 00 00 00      00 00 00 00 00     02

     观察结果:

    控制台显示:**"内核已加载"**和**"应用程序加载已完成"**
    -然而、**应用程序未运行**—LED 不闪烁
    -即使我从主板上断开峰值 CAN USB,它**仍然显示相同的消息**,表明它实际上没有通过 CAN 发送任何内容

    我的问题:

    1. 不`dcan_flash_programmer.exe` 官方支持 PEAK CAN USB (PCAN-USB) 适配器?
    2.  是否有办法将 PCAN-USB 与该编程器配合使用 还是有任何权变措施?
    3. 如果没有、TI 建议将什么 CAN 适配器与此实用程序一同用于 F28P65x Launchpad?
    4. 如何确认闪存内核是否真正加载到 RAM 中、以及应用程序是否写入闪存?

    如有任何建议、将不胜感激。

    此致、

    Suresh K.

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

    器件型号:LAUNCHXL-F28P65X

    工具/软件:

    TI 团队大家好、

    我尝试led_ex1_c28x_dual_blinky_cpu1使用dcan_flash_programmer C2000Ware 中的实用程序(v5.04.00.00)将应用程序刷写到 F28P65x LaunchPad 中。 我将 CAN USB 峰值器件用于 CAN 接口。

    以下是我目前为止尝试过的方法:

    启动模式配置:

    GPIO72 = 0 (下)、GPIO84 = 1 (上)、用于 DCAN 引导。

    S4开关设置为通过 XCVR 路由 CAN。

    硬件设置:

    将 PEAK CAN USB 通道1 (CAN-H 和 CAN-L)连接至 LaunchPad 上的 J14。

    内核和应用程序生成:

    dcan_flash_kernel_c28x_dual_ex5从 C2000Ware 示例构建的。

    添加了编译后处理步骤:
    "${CG_TOOL_HEX}" "${BuildArtifactFileName}" -boot -sci8 -a -o "${BuildArtifactFileBaseName}.txt"

    十六进制实用程序标志: --diag_wrap=off --boot --sci8 --ascii

    .txt内核和应用程序(blicky)生成。

    刷写命令:

    dcan_flash_programmer.exe -d f28p65x -k dcan_flash_kernel_c28x_dual_ex5.txt -a led_ex1_c28x_dual_blinky_cpu1.txt -v

    输出显示:

    "已加载内核"

    "应用程序加载已完成"

    但是 Blinky 应用程序无法运行

    观察结果:

    即使物理断开 CAN 连接、编程器仍会打印"Application Load completed"、这表明该工具实际上可能不会通过 PEAK CAN 与目标通信。

    注意:

    我在内核十六进制文件中手动将字节3和4编辑为:
    AA 08 C0 7A ...基于较旧的文档。

     我的问题:

    1.IS 峰值 CAN USB 正式支持用于dcan_flash_programmer.exe?

    如果不使用、应使用什么 CAN 适配器(TI 推荐使用的适配器)?

    3.如何验证内核是否正在实际运行并刷写应用程序?

    是否有支持 PEAK CAN USB 的 DCAN 编程器修改版本?

    5..txt文件的格式或校验和是否导致了该问题?

    如有任何建议、将不胜感激。

    此致、

    Suresh

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

    您好 Suresh、

    1.IS  峰值 CAN USB  正式支持用于 dcan_flash_programmer.exe?

    -是的

    如果不使用、应使用什么 CAN 适配器(TI 推荐使用的适配器)?

    -建议使用峰值 USB 适配器

    3.如何验证内核是否正在实际运行并刷写应用程序?

    -当内核运行时,连接到设备,停止,并加载内核的符号

    -在"应用程序加载完成"后,您可以使用内存浏览器连接到器件并检查闪存的内容。

    -您也可以使用 CCS 中的片上闪存工具根据.txt/.out 验证闪存的内容

    是否有支持 PEAK CAN USB 的 DCAN 编程器修改版本?

    -不适用

    5. .txt 文件的格式或校验和是否导致了该问题?

    - 您能否确认文本文件的字节3和4已替换为根据位时序寄存器值(CAN_CALC_BTRREG)的最终结果计算出的十六进制值、顺序依次为最低有效字节和最高有效字节?

    [引述 userid="652033" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515045/launchxl-f28p65x-application-not-running-after-dcan-flashing-on-f28p65x-using-dcan_flash_programr-exe-with-can-tool-peak-can/5833641 #5833641"]

    "${CG_TOOL_HEX}" "${BuildArtifactFileName}" -boot -sci8 -a -o "${BuildArtifactFileBaseName}.txt"

    十六进制实用程序标志: --diag_wrap=off --boot --sci8 --ascii

    [/报价]

    使用编译后处理步骤时、您可以禁用十六进制实用程序

    GPIO72 = 0 (向下)、GPIO84 = 1 (向上)(对于 DCAN 引导)。

    现在是选择 SCI 引导? 您最初已经完成了 CAN 引导(72=1、84=0)、应用程序在下电上电后引导所需的更改是在运行内核并将应用程序写入闪存之后切换到闪存引导(72=1、84=1)。

    此致、

    Alex

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

    1.应将什么值传递给 uint16_t XTAL_frequency?

    - 20和25会工作,你可以尝试使用25吗?

    2. Application_Flash_Banks [5]={0、1、2、3、4};-->是否可以使用单个闪存存储体?

    -这些是指每个闪存存储体的保护掩码。 有关   更多信息、请参阅 C2000微控制器的 CAN 闪存编程(修订版 A)部分的4.1.1。

    3. uint16_t switchToXTAL -->参数值需要在此处填充0或1?

    -如果使用 XTAL、它应该是0x1

    4.in 链接器.cmd 文件是否可以修改?

    -你能澄清这一点吗? 可以修改链接器命令文件以将内核放置在不同的存储器区域中。


    [引述 userid="618001" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515045/launchxl-f28p65x-application-not-running-after-dcan-flashing-on-f28p65x-using-dcan_flash_programr-exe-with-can-tool-peak-can/5834053 #5834053"]

    3.如何验证内核是否正在实际运行并刷写应用程序?

    -当内核运行时,连接到设备,停止,并加载内核的符号

    -在"应用程序加载完成"后,您可以使用内存浏览器连接到器件并检查闪存的内容。

    -您也可以使用 CCS 中的片上闪存工具根据.txt/.out 验证闪存的内容

    [/报价]

    这是什么结果? 您是否能够确认应用程序已写入闪存? 您能提供屏幕截图或内存转储吗?

    您是否对内核进行了任何修改?

    此致、

    Alex

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

    您好 Alex、

    我尝试了该调试过程、但我通过 PEAK CAN USB 闪烁。

    我有几个问题:

    1.引导模式 GPIO 开关(S3/S4配置)
    我将对 DCAN 使用以下引导模式引脚配置:

    S3:
    GPIO72 = 1 (上)

    GPIO84 = 1 (向下)

    这将选择默认的 DCAN 引导模式(0x02)、该模式使用 GPIO58 (CANTX)和 GPIO59 (CANRX)。

    但是、我想切换到使用引导模式0x22、它改用 GPIO4 (CANTX)和 GPIO5 (CANRX)。

    您能否确认设置 BOOTDEF = 0x22需要将 S4开关位置设置为多少?

    2.将 BOOTDEF 值更改为0x22
    如果我要通过引导模式0x22使用备用 CAN 引脚(GPIO4和 GPIO5)、我是否需要:

    手动在 OTP 中设置 BOOTDEF 值?

    -->或者是否有办法通过软件或其他配置来覆盖它?

    -->将 BOOTDEF = 0x22编程到 OTP 以使用备用 CAN 引脚的最佳实践是什么?

    3. OTP 编程时闪烁
    如果 OTP 已经编程了 BOOTDEF 值、我是否仍可以通过 can_flash_programr.exe 更新固件(使用 PEAK CAN USB)?

    具体而言、我在内核中使用以下 CAN 配置:

    #define CAN_CALC_bitrate 1000000UL // 1Mbps
    #define CAN_CALC_CANCLK 20000000UL // 20 MHz
    #define CAN_CALC_BITTIME 20UL
    此配置是否对具有20 MHz CAN 时钟的1Mbps 有效?

    4.内核引导代码片段验证
    以下是我在内核中使用的代码、用于通过引导模式启动 DCAN 引导0x22:

    EntryAddr = DCAN_Boot (0x22、0、0、20、NUM_FLASH_BANKS、 Application_Flash_Banks、
    WE_Protection_A_Masks、WE_Protection_B_Masks、WE_Protection_OTP_Masks);

    //分支到应用程序入口点
    asm (" MOVL XAR7、ACC ");
    asm (" LB *XAR7 ");
    5.您能否确认上述代码是否使用 BOOTDEF = 0x22正确启动 DCAN 引导?

    我是否需要调用 ExitBoot ()或在分支之前插入任何延迟?

    #define CAN_CALC_bitrate  1000000UL//1mbps
    #define CAN_CALC_CANCLK   20000000UL//20MHz
    #define CAN_CALC_BITTIME  20UL
    6.can 可以研究这个代码 snipet 是正确的 bcz 我正在使用0x22
     EntryAddr = DCAN_Boot (0x220、0、20、NUM_FLASH_BANKS、 Application_Flash_Banks、
               WE_Protection_A_Masks、WE_Protection_B_Masks、WE_Protection_OTP_Masks);

      //分支到应用程序入口点
      asm (" MOVL XAR7、ACC ");
      asm (" LB *XAR7 ");
      // ExitBoot();

      // while (1); //不应到达此处。

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

    您好:

    [报价 userid="652033" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1515045/launchxl-f28p65x-application-not-running-after-dcan-flashing-on-f28p65x-using-dcan_flash_programr-exe-with-can-tool-peak-can/5854140 #5854140"]

    S3:
    GPIO72 = 1 (上)

    GPIO84 = 1 (向下)

    [/报价]

    GPIO84是1还是0? 这不清楚。 CAN 启动为72=1、84=0。

    在 OTP 中手动设置 BOOTDEF 值?

    是的、您必须使用闪存 API 对正确的 BOOTDEF 值进行编程。   有关更多信息、请参阅 C2000微控制器上的引导加载入门。 在写入 OTP 之前、您可以使用仿真引导和 EMU_BOOTDEF 来测试您的配置。

    此致、

    Alex